/* * Copyright 2013 Tilera Corporation. All Rights Reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, version 2. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or * NON INFRINGEMENT. See the GNU General Public License for * more details. */ /* Machine-generated file; do not edit. */ #ifndef __ARCH_UART_H__ #define __ARCH_UART_H__ #include #include #ifndef __ASSEMBLER__ /* Divisor. */ __extension__ typedef union { struct { #ifndef __BIG_ENDIAN__ /* * Baud Rate Divisor. Desired_baud_rate = REF_CLK frequency / (baud * * 16). * Note: REF_CLK is always 125 MHz, the default * divisor = 68, baud rate = 125M/(68*16) = 115200 baud. */ uint_reg_t divisor : 12; /* Reserved. */ uint_reg_t __reserved : 52; #else /* __BIG_ENDIAN__ */ uint_reg_t __reserved : 52; uint_reg_t divisor : 12; #endif }; uint_reg_t word; } UART_DIVISOR_t; /* FIFO Count. */ __extension__ typedef union { struct { #ifndef __BIG_ENDIAN__ /* * n: n active entries in the receive FIFO (max is 2**8). Each entry has * 8 bits. * 0: no active entry in the receive FIFO (that is empty). */ uint_reg_t rfifo_count : 9; /* Reserved. */ uint_reg_t __reserved_0 : 7; /* * n: n active entries in the transmit FIFO (max is 2**8). Each entry has * 8 bits. * 0: no active entry in the transmit FIFO (that is empty). */ uint_reg_t tfifo_count : 9; /* Reserved. */ uint_reg_t __reserved_1 : 7; /* * n: n active entries in the write FIFO (max is 2**2). Each entry has 8 * bits. * 0: no active entry in the write FIFO (that is empty). */ uint_reg_t wfifo_count : 3; /* Reserved. */ uint_reg_t __reserved_2 : 29; #else /* __BIG_ENDIAN__ */ uint_reg_t __reserved_2 : 29; uint_reg_t wfifo_count : 3; uint_reg_t __reserved_1 : 7; uint_reg_t tfifo_count : 9; uint_reg_t __reserved_0 : 7; uint_reg_t rfifo_count : 9; #endif }; uint_reg_t word; } UART_FIFO_COUNT_t; /* FLAG. */ __extension__ typedef union { struct { #ifndef __BIG_ENDIAN__ /* Reserved. */ uint_reg_t __reserved_0 : 1; /* 1: receive FIFO is empty */ uint_reg_t rfifo_empty : 1; /* 1: write FIFO is empty. */ uint_reg_t wfifo_empty : 1; /* 1: transmit FIFO is empty. */ uint_reg_t tfifo_empty : 1; /* 1: receive FIFO is full. */ uint_reg_t rfifo_full : 1; /* 1: write FIFO is full. */ uint_reg_t wfifo_full : 1; /* 1: transmit FIFO is full. */ uint_reg_t tfifo_full : 1; /* Reserved. */ uint_reg_t __reserved_1 : 57; #else /* __BIG_ENDIAN__ */ uint_reg_t __reserved_1 : 57; uint_reg_t tfifo_full : 1; uint_reg_t wfifo_full : 1; uint_reg_t rfifo_full : 1; uint_reg_t tfifo_empty : 1; uint_reg_t wfifo_empty : 1; uint_reg_t rfifo_empty : 1; uint_reg_t __reserved_0 : 1; #endif }; uint_reg_t word; } UART_FLAG_t; /* * Interrupt Vector Mask. * Each bit in this register corresponds to a specific interrupt. When set, * the associated interrupt will not be dispatched. */ __extension__ typedef union { struct { #ifndef __BIG_ENDIAN__ /* Read data FIFO read and no data available */ uint_reg_t rdat_err : 1; /* Write FIFO was written but it was full */ uint_reg_t wdat_err : 1; /* Stop bit not found when current data was received */ uint_reg_t frame_err : 1; /* Parity error was detected when current data was received */ uint_reg_t parity_err : 1; /* Data was received but the receive FIFO was full */ uint_reg_t rfifo_overflow : 1; /* * An almost full event is reached when data is to be written to the * receive FIFO, and the receive FIFO has more than or equal to * BUFFER_THRESHOLD.RFIFO_AFULL bytes. */ uint_reg_t rfifo_afull : 1; /* Reserved. */ uint_reg_t __reserved_0 : 1; /* An entry in the transmit FIFO was popped */ uint_reg_t tfifo_re : 1; /* An entry has been pushed into the receive FIFO */ uint_reg_t rfifo_we : 1; /* An entry of the write FIFO has been popped */ uint_reg_t wfifo_re : 1; /* Rshim read receive FIFO in protocol mode */ uint_reg_t rfifo_err : 1; /* * An almost empty event is reached when data is to be read from the * transmit FIFO, and the transmit FIFO has less than or equal to * BUFFER_THRESHOLD.TFIFO_AEMPTY bytes. */ uint_reg_t tfifo_aempty : 1; /* Reserved. */ uint_reg_t __reserved_1 : 52; #else /* __BIG_ENDIAN__ */ uint_reg_t __reserved_1 : 52; uint_reg_t tfifo_aempty : 1; uint_reg_t rfifo_err : 1; uint_reg_t wfifo_re : 1; uint_reg_t rfifo_we : 1; uint_reg_t tfifo_re : 1; uint_reg_t __reserved_0 : 1; uint_reg_t rfifo_afull : 1; uint_reg_t rfifo_overflow : 1; uint_reg_t parity_err : 1; uint_reg_t frame_err : 1; uint_reg_t wdat_err : 1; uint_reg_t rdat_err : 1; #endif }; uint_reg_t word; } UART_INTERRUPT_MASK_t; /* * Interrupt vector, write-one-to-clear. * Each bit in this register corresponds to a specific interrupt. Hardware * sets the bit when the associated condition has occurred. Writing a 1 * clears the status bit. */ __extension__ typedef union { struct { #ifndef __BIG_ENDIAN__ /* Read data FIFO read and no data available */ uint_reg_t rdat_err : 1; /* Write FIFO was written but it was full */ uint_reg_t wdat_err : 1; /* Stop bit not found when current data was received */ uint_reg_t frame_err : 1; /* Parity error was detected when current data was received */ uint_reg_t parity_err : 1; /* Data was received but the receive FIFO was full */ uint_reg_t rfifo_overflow : 1; /* * Data was received and the receive FIFO is now almost full (more than * BUFFER_THRESHOLD.RFIFO_AFULL bytes in it) */ uint_reg_t rfifo_afull : 1; /* Reserved. */ uint_reg_t __reserved_0 : 1; /* An entry in the transmit FIFO was popped */ uint_reg_t tfifo_re : 1; /* An entry has been pushed into the receive FIFO */ uint_reg_t rfifo_we : 1; /* An entry of the write FIFO has been popped */ uint_reg_t wfifo_re : 1; /* Rshim read receive FIFO in protocol mode */ uint_reg_t rfifo_err : 1; /* * Data was read from the transmit FIFO and now it is almost empty (less * than or equal to BUFFER_THRESHOLD.TFIFO_AEMPTY bytes in it). */ uint_reg_t tfifo_aempty : 1; /* Reserved. */ uint_reg_t __reserved_1 : 52; #else /* __BIG_ENDIAN__ */ uint_reg_t __reserved_1 : 52; uint_reg_t tfifo_aempty : 1; uint_reg_t rfifo_err : 1; uint_reg_t wfifo_re : 1; uint_reg_t rfifo_we : 1; uint_reg_t tfifo_re : 1; uint_reg_t __reserved_0 : 1; uint_reg_t rfifo_afull : 1; uint_reg_t rfifo_overflow : 1; uint_reg_t parity_err : 1; uint_reg_t frame_err : 1; uint_reg_t wdat_err : 1; uint_reg_t rdat_err : 1; #endif }; uint_reg_t word; } UART_INTERRUPT_STATUS_t; /* Type. */ __extension__ typedef union { struct { #ifndef __BIG_ENDIAN__ /* Number of stop bits, rx and tx */ uint_reg_t sbits : 1; /* Reserved. */ uint_reg_t __reserved_0 : 1; /* Data word size, rx and tx */ uint_reg_t dbits : 1; /* Reserved. */ uint_reg_t __reserved_1 : 1; /* Parity selection, rx and tx */ uint_reg_t ptype : 3; /* Reserved. */ uint_reg_t __reserved_2 : 57; #else /* __BIG_ENDIAN__ */ uint_reg_t __reserved_2 : 57; uint_reg_t ptype : 3; uint_reg_t __reserved_1 : 1; uint_reg_t dbits : 1; uint_reg_t __reserved_0 : 1; uint_reg_t sbits : 1; #endif }; uint_reg_t word; } UART_TYPE_t; #endif /* !defined(__ASSEMBLER__) */ #endif /* !defined(__ARCH_UART_H__) */