⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xt2000-uart.h

📁 linux-2.6.15.6
💻 H
字号:
#ifndef _uart_h_included_#define _uart_h_included_/* * THIS FILE IS GENERATED -- DO NOT MODIFY BY HAND * * include/asm-xtensa/xtensa/xt2000-uart.h -- NatSemi PC16552D DUART * definitions * * This file is subject to the terms and conditions of the GNU General Public * License.  See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 2002 Tensilica Inc. */#include <xtensa/xt2000.h>/* 16550 UART DEVICE REGISTERS   The XT2000 board aligns each register to a 32-bit word but the UART device only uses   one byte of the word, which is the least-significant byte regardless of the   endianness of the core (ie. byte offset 0 for little-endian and 3 for big-endian).   So if using word accesses then endianness doesn't matter.   The macros provided here do that.*/struct uart_dev_s {  union {    unsigned int rxb;	/* DLAB=0: receive buffer, read-only */    unsigned int txb;	/* DLAB=0: transmit buffer, write-only */    unsigned int dll;	/* DLAB=1: divisor, least-significant byte latch (was write-only?) */  } w0;  union {    unsigned int ier;	/* DLAB=0: interrupt-enable register (was write-only?) */    unsigned int dlm;	/* DLAB=1: divisor, most-significant byte latch (was write-only?) */  } w1;  union {    unsigned int isr;	/* DLAB=0: interrupt status register, read-only */    unsigned int fcr;	/* DLAB=0: FIFO control register, write-only */    unsigned int afr;	/* DLAB=1: alternate function register */  } w2;  unsigned int lcr;	/* line control-register, write-only */  unsigned int mcr;	/* modem control-regsiter, write-only */  unsigned int lsr;	/* line status register, read-only */  unsigned int msr;	/* modem status register, read-only */  unsigned int scr;	/* scratch regsiter, read/write */};#define _RXB(u) ((u)->w0.rxb)#define _TXB(u) ((u)->w0.txb)#define _DLL(u) ((u)->w0.dll)#define _IER(u) ((u)->w1.ier)#define _DLM(u) ((u)->w1.dlm)#define _ISR(u) ((u)->w2.isr)#define _FCR(u) ((u)->w2.fcr)#define _AFR(u) ((u)->w2.afr)#define _LCR(u) ((u)->lcr)#define _MCR(u) ((u)->mcr)#define _LSR(u) ((u)->lsr)#define _MSR(u) ((u)->msr)#define _SCR(u) ((u)->scr)typedef volatile struct uart_dev_s uart_dev_t;/* IER bits */#define RCVR_DATA_REG_INTENABLE 0x01#define XMIT_HOLD_REG_INTENABLE    0x02#define RCVR_STATUS_INTENABLE   0x04#define MODEM_STATUS_INTENABLE     0x08/* FCR bits */#define _FIFO_ENABLE      0x01#define RCVR_FIFO_RESET  0x02#define XMIT_FIFO_RESET  0x04#define DMA_MODE_SELECT  0x08#define RCVR_TRIGGER_LSB 0x40#define RCVR_TRIGGER_MSB 0x80/* AFR bits */#define AFR_CONC_WRITE	0x01#define AFR_BAUDOUT_SEL	0x02#define AFR_RXRDY_SEL	0x04/* ISR bits */#define INT_STATUS(r)   ((r)&1)#define INT_PRIORITY(r) (((r)>>1)&0x7)/* LCR bits */#define WORD_LENGTH(n)  (((n)-5)&0x3)#define STOP_BIT_ENABLE 0x04#define PARITY_ENABLE   0x08#define EVEN_PARITY     0x10#define FORCE_PARITY    0x20#define XMIT_BREAK      0x40#define DLAB_ENABLE     0x80/* MCR bits */#define _DTR 0x01#define _RTS 0x02#define _OP1 0x04#define _OP2 0x08#define LOOP_BACK 0x10/* LSR Bits */#define RCVR_DATA_READY 0x01#define OVERRUN_ERROR   0x02#define PARITY_ERROR    0x04#define FRAMING_ERROR   0x08#define BREAK_INTERRUPT 0x10#define XMIT_HOLD_EMPTY 0x20#define XMIT_EMPTY      0x40#define FIFO_ERROR      0x80#define RCVR_READY(u)   (_LSR(u)&RCVR_DATA_READY)#define XMIT_READY(u)   (_LSR(u)&XMIT_HOLD_EMPTY)/* MSR bits */#define _RDR       0x01#define DELTA_DSR 0x02#define DELTA_RI  0x04#define DELTA_CD  0x08#define _CTS       0x10#define _DSR       0x20#define _RI        0x40#define _CD        0x80/* prototypes */void uart_init( uart_dev_t *u, int bitrate );void uart_out( uart_dev_t *u, char c );void uart_puts( uart_dev_t *u, char *s );char uart_in( uart_dev_t *u );void uart_enable_rcvr_int( uart_dev_t *u );void uart_disable_rcvr_int( uart_dev_t *u );#ifdef DUART16552_1_VADDR/*  DUART present.  */#define DUART_1_BASE	(*(uart_dev_t*)DUART16552_1_VADDR)#define DUART_2_BASE	(*(uart_dev_t*)DUART16552_2_VADDR)#define UART1_PUTS(s)	uart_puts( &DUART_1_BASE, s )#define UART2_PUTS(s)	uart_puts( &DUART_2_BASE, s )#else/*  DUART not configured, use dummy placeholders to allow compiles to work.  */#define DUART_1_BASE	(*(uart_dev_t*)0)#define DUART_2_BASE	(*(uart_dev_t*)0)#define UART1_PUTS(s)#define UART2_PUTS(s)#endif/*  Compute 16-bit divisor for baudrate generator, with rounding:  */#define DUART_DIVISOR(crystal,speed)	(((crystal)/16 + (speed)/2)/(speed))#endif /*_uart_h_included_*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -