cchal.h

来自「WinCE 3.0 BSP, 包含Inter SA1110, Intel_815」· C头文件 代码 · 共 587 行 · 第 1/2 页

H
587
字号
/*****************************************************************************
*	HEADER_NAME :	cchal.h
*	MODULE :		Companion Chip Specific Definitions (OAL)
*	DESCRIPTION :	This file is created to contain the companion chip ASIC 
*					register defines that are needed by the OAL
*
*	AUTHOR :		Dennis Hunt
*					Tom Newman (tjn), Mission Peak Designs
*	HISTORY :		
*			18-Jul-1997		Created Dennis Hunt
*			5/4/1999	tjn	Modified for HD64465
*
*   DEPENDENCIES: project.h
*
*
*****************************************************************************/

#ifndef CCHAL_H
#define CCHAL_H

/* typedefs and #defines */

/*----------------------------------------------------------------------------/
/* power and system control module */

#define CC_SYS_STBCR		(CC_SYS_REGBASE+CC_SYS_STBCR_OFFSET)	/* standby control register */
#define CC_SYS_SYSCR		(CC_SYS_REGBASE+CC_SYS_SYSCR_OFFSET)	/* system control register */

/* STBCR definitions - 'and' these with CC_SYS_STBCR to enable
 * these operate by enabling the clock to the module
 */
#define CC_STBCR_MIAST_ON		0xFEFF			/* turn on min. card i/f */
#define CC_STBCR_LCDST_ON		0xFF7F			/* turn on LCD  */
#define CC_STBCR_PC0ST_ON		0xFFBF			/* turn on PCMCIA channel 0  */
#define CC_STBCR_PC1ST_ON		0xFFDF			/* turn on PCMCIA channel 1  */
#define CC_STBCR_AFEST_ON		0xFFEF			/* turn on AFE I/F  */
#define CC_STBCR_TM0ST_ON		0xFFF7			/* turn on Timer 0  */
#define CC_STBCR_TM1ST_ON		0xFFFB			/* turn on Timer 1  */
#define CC_STBCR_IRST_ON		0xFFFD			/* turn on IrDA controller  */
#define CC_STBCR_URTST_ON		0xFFFE			/* turn on UART  */

/* 'or' these to disable the module */
#define CC_STBCR_MIAST_OFF		0x0100			/* turn off clock to min. card i/f */
#define CC_STBCR_LCDST_OFF		0x0080			/* turn off LCD  */
#define CC_STBCR_PC0ST_OFF		0x0040			/* turn off PCMCIA channel 0  */
#define CC_STBCR_PC1ST_OFF		0x0020			/* turn off PCMCIA channel 1  */
#define CC_STBCR_AFEST_OFF		0x0010			/* turn off AFE I/F  */
#define CC_STBCR_TM0ST_OFF		0x0008			/* turn off Timer 0  */
#define CC_STBCR_TM1ST_OFF		0x0004			/* turn off Timer 1  */
#define CC_STBCR_IRST_OFF		0x0002			/* turn off IrDA cOFFtroller  */
#define CC_STBCR_URTST_OFF		0x0001			/* turn off UART  */

/* SYSCR definitions
 * these enable different modules/pins in the c.c.
 * MODES: specifies which sets of modules are enabled
 *        00 = PCMCIA0, PCMCIA1, A/IrDA, A/Timer, A1:0, B/UART, AFE. LCD, CRT
 *        01 = PCMCIA0, MIN.CARD, A/IrDA, A/IIC, A1:0, B/UART, AFE, LCD, CRT
 *        10 = PCMCIA0, A/IrDA, A/Timer, A1:0, B/UART, C, D, AFE, LCD, CRT
 *        11 = PCMCIA0, MIN.CARD, A/IrDA, A/IIC, A1:0, B/UART, AFE
 */
#define CC_SYSCR_SPTA_IR_MASK	0xFF7F			/* mask for IR/GPIO */
#define CC_SYSCR_SPTA_IR_IR		0x0080			/* select IR */
#define CC_SYSCR_SPTA_IR_GPIO	0x0000			/* select GPIO (port A7:4) */

#define CC_SYSCR_SPTA_IIC_MASK	0xFFBF			/* mask for IR/GPIO */
#define CC_SYSCR_SPTA_IIC_IIC	0x0040			/* select IR - MODES 11 and 01 only */
#define CC_SYSCR_SPTA_IIC_TIMER	0x0040			/* select TIMER - MODES 10 and 00 only */
#define CC_SYSCR_SPTA_IIC_GPIO	0x0000			/* select GPIO (port A3:0) */

#define CC_SYSCR_SPTB_UR_MASK	0xFFDF			/* mask for UART/GPIO */
#define CC_SYSCR_SPTB_UR_UART	0x0020			/* select UART */
#define CC_SYSCR_SPTB_UR_GPIO	0x0000			/* select GPIO (port B) */

#define CC_SYSCR_MODE_MASK		0xFFFC			/* mask for MODE */
#define CC_SYSCR_MODE_00		0x0000			/* MODE 00 */
#define CC_SYSCR_MODE_01		0x0001			/* MODE 01 */
#define CC_SYSCR_MODE_10		0x0002			/* MODE 10 */
#define CC_SYSCR_MODE_11		0x0003			/* MODE 11 */

/*----------------------------------------------------------------------------/
/* interrupt controller module */

#define CC_INTC_IRR			(CC_INTC_REGBASE+CC_INTC_REQ_OFFSET)	/* main interrupt request register */
#define CC_INTC_IMR			(CC_INTC_REGBASE+CC_INTC_MASK_OFFSET)	/* main interrupt mask register */

/* INTC IRR bit definitions (** cea 6/3/99) */

#define INTC_IRR_PS2KBR			0x8000			/* PS/2 Keyboard interrupt */
#define INTC_IRR_PCC0R			0x4000			/* PCC0R interrupt */
#define INTC_IRR_PCC1R			0x2000			/* PCC1R interrupt */
#define INTC_IRR_AFER			0x1000			/* AFER interrupt */
#define INTC_IRR_GPIOR			0x0800			/* GPIOR interrupt */
#define INTC_IRR_TMU0R			0x0400			/* TMU0R interrupt */
#define INTC_IRR_TMU1R			0x0200			/* TMU1R interrupt */
#define INTC_IRR_KBCR			0x0100			/* H8 (keyboar/mouse controller) interrupt */
#define INTC_IRR_PS2MSR			0x0080			/* PS/2 mouse interrupt */
#define INTC_IRR_IRDAR			0x0040			/* IRDAR interrupt */
#define INTC_IRR_UARTR			0x0020			/* UARTR interrupt */
#define INTC_IRR_USB			0x0002			/* USB interrupt */

/* INTC IMR bit definitions (** cea 6/3/99) */
#define INTC_IMR_ALL_MASK		0xFFFF			/* mask all interrupts from CC */

#define INTC_IMR_PS2KBM_MASK	0x8000			/* PS/2 Keyboard mask */
#define INTC_IMR_PCC0M_MASK		0x4000			/* PCC0R interrupt mask */
#define INTC_IMR_PCC1M_MASK		0x2000			/* PCC1R interrupt mask */
#define INTC_IMR_AFEM_MASK		0x1000			/* AFER interrupt mask */
#define INTC_IMR_GPIOM_MASK		0x0800			/* GPIOR interrupt mask */
#define INTC_IMR_TMU0M_MASK		0x0400			/* TMU0R interrupt mask */
#define INTC_IMR_TMU1M_MASK		0x0200			/* TMU1R interrupt mask */
#define INTC_IMR_KBCM_MASK		0x0100			/* H8 (keyboar/mouse controller) mask */
#define INTC_IMR_PS2MSM_MASK	0x0080			/* PS/2 mouse mask */
#define INTC_IMR_IRDAM_MASK		0x0040			/* IRDAR interrupt mask */
#define INTC_IMR_UARTM_MASK		0x0020			/* UARTR interrupt mask */
#define INTC_IMR_USB_MASK		0x0002			/* USB interrupt mask */

#define INTC_IMR_PS2KBM_UNMASK	0x7FFF			/* PS/2 Keyboard UNmask */
#define INTC_IMR_PCC0M_UNMASK	0xBFFF			/* PCC0R interrupt UNmask */
#define INTC_IMR_PCC1M_UNMASK	0xDFFF			/* PCC1R interrupt UNmask */
#define INTC_IMR_AFEM_UNMASK	0xEFFF			/* AFER interrupt UNmask */
#define INTC_IMR_GPIOM_UNMASK	0xF7FF			/* GPIOR interrupt UNmask */
#define INTC_IMR_TMU0M_UNMASK	0xFBFF			/* TMU0R interrupt UNmask */
#define INTC_IMR_TMU1M_UNMASK	0xFDFF			/* TMU1R interrupt UNmask */
#define INTC_IMR_KBCM_UNMASK	0xFEFF			/* H8 (keyboar/mouse controller) UNmask */
#define INTC_IMR_PS2MSM_UNMASK	0xFF7F			/* PS/2 mouse UNmask */
#define INTC_IMR_IRDAM_UNMASK	0xFFBF			/* IRDAR interrupt UNmask */
#define INTC_IMR_UARTM_UNMASK	0xFFDF			/* UARTR interrupt UNmask */
#define INTC_IMR_USB_UNMASK		0xFFFD			/* USB interrupt UNmask */


/*
 * Keyboard and Mouse(AUX) port interface.
 *
 * Supports the PS/2 port in the HD64465 companion chip
 *
 * (** cea 6/3/99)
 */

 /*
 * Keyboard (HD64465) defines 
 */
#define KB_BASE 			(SYSTEM_ASIC_REGS_BASE + ASIC_KBC_OFFSET)
#define KB_ISR				0x0C04		/* offset from keyboard base reg */
#define KB_CSR				0x0C00		/* offset from keyboard base reg */
#define KB_INTR_MASK		0x0001
#define KB_RDRF 			0x0001
#define KB_PARITY			0x0100			
#define KB_DATA_RD			0x0200
#define KB_CLK_RD			0x0400
#define KB_DATA_DR			0x0800
#define KB_CLK_DR			0x1000
#define KB_DATA_DR_EN		0x2000
#define KB_CLK_DR_EN		0x4000
#define KB_CLK_EN			0x8000

/* 
 * Mouse (HD64465) defines
 *
 * This version has the mouse base address equal 
 * to the keyboard base address.
 */
#define MOUSE_BASE			(SYSTEM_ASIC_REGS_BASE + ASIC_KBC_OFFSET)
#define MOUSE_ISR			0x0C14		/* offset from keyboard base reg */
#define MOUSE_CSR			0x0C10		/* offset from keyboard base reg */
#define MOUSE_INTR_MASK 	0x0001
#define MOUSE_RDRF			0x0001
#define MOUSE_PARITY		0x0100			
#define MOUSE_DATA_RD		0x0200
#define MOUSE_CLK_RD		0x0400
#define MOUSE_DATA_DR		0x0800
#define MOUSE_CLK_DR		0x1000
#define MOUSE_DATA_DR_EN	0x2000
#define MOUSE_CLK_DR_EN 	0x4000
#define MOUSE_CLK_EN		0x8000

/*----------------------------------------------------------------------------/
/* Timer module */

/* absolute address, use when available (in kernel mode) */
#define CC_TMR_TCVR1	(TMR_REGBASE+TMR_TCVR1_OFFSET)			/* Constant 1 */
#define CC_TMR_TCVR0	(TMR_REGBASE+TMR_TCVR0_OFFSET)			/* Constant 0 */
#define CC_TMR_TRVR1	(TMR_REGBASE+TMR_TRVR1_OFFSET)			/* Read Count 1 */
#define CC_TMR_TRVR0	(TMR_REGBASE+TMR_TRVR0_OFFSET)			/* Read Count 0 */
#define CC_TMR_TCR1		(TMR_REGBASE+TMR_TCR1_OFFSET)			/* Control 1 */
#define CC_TMR_TCR0		(TMR_REGBASE+TMR_TCR0_OFFSET)			/* Control 0 */
#define CC_TMR_TIRR		(TMR_REGBASE+TMR_TIRR_OFFSET)			/* Interrupt Request */
#define CC_TMR_TIMR		(TMR_REGBASE+TMR_TIMR_OFFSET)			/* Interrupt Mask */

/* timer control register bit definitions */
/* these are identical for both control registers */
#define TMR_TCR_EMTO_MASK		0xFFF7			/* isloate EMTO */
#define TMR_TCR_EMTO_ENABLE		0x0008			/* set EMTO */
#define TMR_TCR_EMTO_DISABLE	0x0000			/* clear EMTO */
#define TMR_TCR_PST_MASK		0xFFF9			/* isolate PST */
#define TMR_TCR_PST_CLK_DIV_16	0x0000			/* ckio/16 */
#define TMR_TCR_PST_CLK_DIV_8	0x0002			/* ckio/8 */
#define TMR_TCR_PST_CLK_DIV_4	0x0004			/* ckio/4 */
#define TMR_TCR_PST_CLK_DIV_1	0x0006			/* ckio/1 */
#define TMR_TCR_TSTP_BITS		0x0001			/* bit(s) user for the timer start/stop */
#define TMR_TCR_TSTP_MASK		0xFFFE			/* isolate TSTP */
#define TMR_TCR_TSTP_START		0x0001			/* start timer */
#define TMR_TCR_TSTP_STOP		0x0000			/* stop timer */

/* Interrupt request register bit definitions */
#define TMR_TIRR_TMU0R_MASK		0xFFFE			/* timer 0 interrupt request mask */
#define TMR_TIRR_TMU0R_ENABLE	0x0001			/* timer 0 interrupt request occurred */
#define TMR_TIRR_TMU0R_DISABLE	0x0000			/* timer 0 interrupt request clear*/
#define TMR_TIRR_TMU1R_MASK		0xFFFD			/* timer 1 interrupt request mask */
#define TMR_TIRR_TMU1R_ENABLE	0x0002			/* timer 1 interrupt request occurred */
#define TMR_TIRR_TMU1R_DISABLE	0x0000			/* timer 1 interrupt request clear */

/* Interrupt mask register bit definitions */
#define TMR_TIMR_TMU0M_MASK		0xFFFE			/* timer 0 interrupt mask */
#define TMR_TIMR_TMU0M_ENABLE	0x0001			/* timer 0 interrupt enable */
#define TMR_TIMR_TMU0M_DISABLE	0x0000			/* timer 0 interrupt disable */
#define TMR_TIMR_TMU1M_MASK		0xFFFD			/* timer 1 interrupt mask */
#define TMR_TIMR_TMU1M_ENABLE	0x0002			/* timer 1 interrupt enable */
#define TMR_TIMR_TMU1M_DISABLE	0x0000			/* timer 1 interrupt disable */

/*----------------------------------------------------------------------------/
/* AFE module */

/* absolute addresses when in kernel mode */
#define CC_AFE_ARXDBR0		(CC_AFE_REGBASE+CC_AFE_ARXDBR0_OFFSET)			/* Receive buffer 0 */
#define CC_AFE_ARXDBR1		(CC_AFE_REGBASE+CC_AFE_ARXDBR1_OFFSET)			/* Receive buffer 1 (same offset!) */
#define CC_AFE_ATXDBR0		(CC_AFE_REGBASE+CC_AFE_ATXDBR0_OFFSET)			/* Transmit buffer 0 */
#define CC_AFE_ATXDBR1		(CC_AFE_REGBASE+CC_AFE_ATXDBR1_OFFSET)			/* Transmit buffer 1 (same offset!) */
#define CC_AFE_ACTR			(CC_AFE_REGBASE+CC_AFE_ACTR_OFFSET)				/* Control register */
#define CC_AFE_ASTR			(CC_AFE_REGBASE+CC_AFE_ASTR_OFFSET)				/* Status register */
#define CC_AFE_ARXDR		(CC_AFE_REGBASE+CC_AFE_ARXDR_OFFSET)			/* Receive data register */
#define CC_AFE_ATXDR		(CC_AFE_REGBASE+CC_AFE_ATXDR_OFFSET)			/* Transmit data register */

/* ACTR control register bit definitions */
#define CC_AFE_ACTR_HC		0x8000				/* program AFE control register (auto clears) */
#define CC_AFE_ACTR_DIV2	0x4000
#define CC_AFE_ACTR_DIV1	0x2000
#define CC_AFE_ACTR_RLY		0x1000
#define CC_AFE_ACTR_CNT2	0x0800				/* Power: on(1) off(0) */
#define CC_AFE_ACTR_CNT1	0x0400				/* Reset: OPERATE(1) RESET(0) */
#define CC_AFE_ACTR_TSW		0x0200
#define CC_AFE_ACTR_RSW		0x0100
#define CC_AFE_ACTR_RDETM	0x0080				/* Ring Detect interrupt disable!?!? */
#define CC_AFE_ACTR_TEIE	0x0040				/* Transmit error interrupt enable */
#define CC_AFE_ACTR_REIR	0x0020				/* Receive error interrupt enable */
#define CC_AFE_ACTR_TXIE	0x0010				/* Transmit data empty interrupt enable */
#define CC_AFE_ACTR_RXIR	0x0008				/* Receive data full interrupt enable */
#define CC_AFE_ACTR_BUFD	0x0004				/* Buffer disable: use register(1) buffer(0) */
#define CC_AFE_ACTR_TE		0x0002				/* Transmit enable */
#define CC_AFE_ACTR_RE		0x0001				/* Receive enable */

/* ASTR status register bit definitions */
#define CC_AFE_ASTR_TAB		0x8000				/* accessible transmit buffer */
#define CC_AFE_ASTR_RAB		0x4000				/* accessible receive buffer */
#define CC_AFE_ASTR_TERR	0x0008				/* transmit underrun error */
#define CC_AFE_ASTR_RERR	0x0004				/* receive overrun error */
#define CC_AFE_ASTR_TDE		0x0002				/* transmit buffer empty */
#define CC_AFE_ASTR_RDF		0x0001				/* receive buffer full */

/*----------------------------------------------------------------------------/
/* FIR (IrDA) and 16550 module
 * There is 1 UART on the companion chip, shared between the UART and FIR module.
 * The FIR is IrDA 1.1 capable, and so has more definitions
 * to implement when IrDA 1.1 is available in Windows CE
 * The UART is a straight 16550 UART 
 */
#define UART_REGBASE			(SYSTEM_ASIC_REGS_BASE+ASIC_FIR_OFFSET)
#define UART_OFFSET				(ASIC_UART_OFFSET-ASIC_FIR_OFFSET)

/* Additions -- Naresh Gupta
 * Added the following from S1a004 to support FIR
 */

#define FIR_REGBASE			(SYSTEM_ASIC_REGS_BASE+ASIC_FIR_OFFSET)
#define FIR_OFFSET				(ASIC_UART_OFFSET-ASIC_FIR_OFFSET)
#define FIR_REGSIZE            0x10


/* Settings */
#define BANKSELECT0			   0xE0         /* #S1_FIR Select Bank 0 */
#define BANKSELECT1			   0xE1         /* #S1_FIR Select Bank 0 */
#define BANKSELECT2			   0xE2         /* #S1_FIR Select Bank 0 */
#define TXEN_ON				   0x40         /* #S1_FIR TXEN bit On */
#define TXEN_OFF			   0x5F         /* #S1_FIR TXEN bit Off */
#define RXEN_ON				   0x20         /* #S1_FIR RXEN bit On */
#define RXEN_OFF			   0xDF         /* #S1_FIR RXEN bit Off */
#define RSTC_RFP			   0x20         /* #S1_FIR Rx FIFO Pointer Reset */
#define RSTC_TFP			   0x60         /* #S1_FIR Tx FIFO Pointer Reset */
#define EEIL_ON				   0x00         /* #S1_FIR EEIL bit On */
#define EEIL_OFF			   0xF8         /* #S1_FIR EEIL bit Off */
#define ISIRR_4M_MODE		   0x00			/* #S1_FIR Set ISIRR to 4M Mode */
#define RFRIEN_ON              0x02			/* #S1_FIR RFRIEN bit in IRCR On */
#define RFRIEN_OFF             0xFD			/* #S1_FIR RFRIEN bit in IRCR Off */
#define TFRIEN_ON              0x40			/* #S1_FIR TFRIEN bit in ITC1R On */
#define TFRIEN_OFF			   0xBF			/* #S1_FIR TFRIEN bit in ITC1R Off */

⌨️ 快捷键说明

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