initial revision
[ucgine.git] / arch / avr / uart / include / ucg_avr_uart.h
1 /*
2  * Copyright (c) 2015, Olivier MATZ <zer0@droids-corp.org>
3  * All rights reserved.
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *
7  *     * Redistributions of source code must retain the above copyright
8  *       notice, this list of conditions and the following disclaimer.
9  *     * Redistributions in binary form must reproduce the above copyright
10  *       notice, this list of conditions and the following disclaimer in the
11  *       documentation and/or other materials provided with the distribution.
12  *     * Neither the name of the University of California, Berkeley nor the
13  *       names of its contributors may be used to endorse or promote products
14  *       derived from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
17  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19  * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
20  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27
28 #ifndef UGC_AVR_UART_H_
29 #define UGC_AVR_UART_H_
30
31 #include <ucg_uart.h>
32
33 typedef volatile uint8_t *uart_reg_t;
34
35 struct ucg_avr_uart {
36                                         /* Example: */
37         uart_reg_t reg_udr;             /* &UDR0 */
38         uart_reg_t reg_ucsra;           /* &UCSR0A */
39         uart_reg_t reg_ucsrb;           /* &UCSR0B */
40         uart_reg_t reg_ucsrc;           /* &UCSR0C */
41         uart_reg_t reg_ubrrl;           /* &UBRR0L */
42         uart_reg_t reg_ubrrh;           /* &UBRR0H */
43
44         uint32_t bit_udre:3;            /* UDRE0 */
45         uint32_t bit_rxc:3;             /* RXC0 */
46         uint32_t bit_udrie:3;           /* UDRIE0 */
47         uint32_t bit_txen:3;            /* RXEN0 */
48         uint32_t bit_rxen:3;            /* TXEN0 */
49         uint32_t bit_rxcie:3;           /* RXCIE0 */
50         uint32_t bit_u2x:3;             /* U2X0 */
51 };
52
53 const struct ucg_uart_driver_ops avr_uart_ops;
54
55 #endif /* UGC_AVR_UART_H_ */