www.pudn.com > ST16C554-linux2.6.14.rar > ST16C554.h


 
  
#ifndef _ST16C554_H 
#define _ST16C554_H 
/** ************************************************************************* **  
 ** includes 
 ** ************************************************************************* **/ 
 
/** ************************************************************************* **  
 ** defines 
 ** ************************************************************************* **/ 
struct st16c554_uart_port{ 
		struct uart_port	port; 
		struct timer_list	timer;		/* "no irq" timer */ 
		struct list_head	list;		/* ports on this IRQ */ 
		unsigned short		capabilities;	/* port capabilities */ 
		unsigned short		bugs;		/* port bugs */ 
		unsigned int		tx_loadsz;	/* transmit fifo load size */ 
		unsigned char		acr; 
		unsigned char		ier; 
		unsigned char		lcr; 
		unsigned char		mcr; 
		unsigned char		mcr_mask;	/* mask of user bits */ 
		unsigned char		mcr_force;	/* mask of forced bits */ 
		unsigned char		lsr_break_flag; 
		 
		/* 
		* We provide a per-port pm hook. 
		*/ 
		void			(*pm)(struct uart_port *port, 
			unsigned int state, unsigned int old); 
}; 
 
 
#define UART_16C554_NR		4 
#define UART_16C554_NUM	4 
#define ST16C554_MAJOR	4 
#define ST16C554_MINOR	70 
#define ST16C554_CONSOLE	NULL 
 
//#define ST16C554_CONSOLE	&st16c554_cons 
#define ST16C554_DRIVER_NAME	"ST16C554-Serial" 
#define ST16C554_DEVFS_NAME	"tttb/" 
#define ST16C554_DEV_NAME	"ttyB" 
 
#define ST16C554_PHY_ADDRESS 0xf0000000 
#define ST16C554_REMAP_SIZE 0x100000 
#define ST16C554_IRQ  26	 
 
/*-------- PPC405EP Registers-----------*/ 
#define CFG_EBC_PB1AP 0x7f8ffe40	// 
#define CFG_EBC_PB1CR 0xF0018000  //BAS:0xf00 BS:000 BU:11  BW:00  
 
/*-------- ST16C554 Registers-----------*/ 
//port = 0--3 
#define UART_URXH(port)			(*((volatile unsigned char *)((port)->membase + 0x00))) 
#define UART_UTXH(port)			(*((volatile unsigned char *)((port)->membase + 0x00))) 
#define UART_UIER(port)			(*((volatile unsigned char *)((port)->membase + 0x01))) 
#define UART_UISTAT(port)		(*((volatile unsigned char *)((port)->membase + 0x02))) 
#define UART_UFCON(port)		(*((volatile unsigned char *)((port)->membase + 0x02))) 
#define UART_ULCON(port)		(*((volatile unsigned char *)((port)->membase + 0x03))) 
#define UART_UMCON(port)		(*((volatile unsigned char *)((port)->membase + 0x04))) 
#define UART_ULSTAT(port)		(*((volatile unsigned char *)((port)->membase + 0x05))) 
#define UART_UMSTAT(port)		(*((volatile unsigned char *)((port)->membase + 0x06))) 
#define UART_URSCRR(port)		(*((volatile unsigned char *)((port)->membase + 0x07))) 
#define UART_UWSCRR(port)		(*((volatile unsigned char *)((port)->membase + 0x07))) 
#define UART_UBRDIVL(port)		(*((volatile unsigned char *)((port)->membase + 0x00))) 
#define UART_UBRDIVM(port)		(*((volatile unsigned char *)((port)->membase + 0x01))) 
 
 
#define UART_CAP_FIFO	(1 << 8)	/* UART has FIFO */ 
#define UART_CAP_EFR	(1 << 9)	/* UART has EFR */ 
#define UART_CAP_SLEEP	(1 << 10)	/* UART has IER sleep */ 
#define UART_CAP_AFE	(1 << 11)	/* MCR-based hw flow control */ 
#define UART_CAP_UUE	(1 << 12)	/* UART needs IER bit 6 set (Xscale) */ 
 
#define UART_BUG_QUOT	(1 << 0)	/* UART has buggy quot LSB */ 
#define UART_BUG_TXEN	(1 << 1)	/* UART has buggy TX IIR status */ 
 
#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE) 
/** ************************************************************************* **  
 ** function prototypes 
 ** ************************************************************************* **/ 
 
unsigned int st16c554_tx_empty(struct uart_port *port); 
void st16c554_set_mctrl(struct uart_port *port, unsigned int mctrl); 
unsigned int st16c554_get_mctrl(struct uart_port *port); 
void st16c554_stop_tx(struct uart_port *port); 
void st16c554_start_tx(struct uart_port *port); 
void st16c554_stop_rx(struct uart_port *port); 
void st16c554_enable_ms(struct uart_port *port); 
void st16c554_break_ctl(struct uart_port *port, int break_state); 
int st16c554_startup(struct uart_port *port); 
void st16c554_shutdown(struct uart_port *port); 
void st16c554_set_termios(struct uart_port *port, struct termios *termios, struct termios *old); 
void st16c554_pm(struct uart_port *port, unsigned int state,	unsigned int oldstate); 
const char * st16c554_type(struct uart_port *port); 
void st16c554_release_port(struct uart_port *port); 
int st16c554_request_port(struct uart_port *port); 
void st16c554_config_port(struct uart_port *port, int flags); 
int st16c554_verify_port(struct uart_port *port, struct serial_struct *ser); 
static void tx_interrupt(struct uart_info *info, struct uart_port *port) ; 
static void err_interrupt( struct uart_port *port, struct pt_regs *regs); 
//static void err_interrupt( struct uart_info *info,struct tty_struct *tty,struct uart_port *port); 
//static void rx_interrupt(struct uart_info *info, struct tty_struct *tty, struct uart_port *port); 
static void rx_interrupt(struct uart_port *port, struct pt_regs *regs); 
 
static unsigned int st16c554_get_divisor(struct uart_port *port, unsigned int baud); 
static void serial16c554_timeout(unsigned long data); 
 
int st16c554_AddressMap(void); 
int st16c554_InitUARTPort( struct st16c554_uart_port * pPort); 
int st16c554_InitReg( void); 
static int  serial16c554_register_ports(struct uart_driver *drv, struct device *dev); 
 
//static void check_modem_status(struct uart_info *info, struct uart_port *port); 
static void check_modem_status(struct uart_port *port, struct pt_regs *regs); 
 
#endif /* _ST16C554_H*/