| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925 | /* * SA-1101.h * * Copyright (c) Peter Danielsson 1999 * * Definition of constants related to the sa1101 * support chip for the sa1100 * *//* Be sure that virtual mapping is defined right */#ifndef __ASM_ARCH_HARDWARE_H#error You must include hardware.h not SA-1101.h#endif#ifndef SA1101_BASE#error You must define SA-1101 physical base address#endif#ifndef LANGUAGE# ifdef __ASSEMBLY__#  define LANGUAGE Assembly# else#  define LANGUAGE C# endif#endif/* * We have mapped the sa1101 depending on the value of SA1101_BASE. * It then appears from 0xf4000000. */#define SA1101_p2v( x )         ((x) - SA1101_BASE + 0xf4000000)#define SA1101_v2p( x )         ((x) - 0xf4000000  + SA1101_BASE)#ifndef SA1101_p2v#define SA1101_p2v(PhAdd)  (PhAdd)#endif#include <mach/bitfield.h>#define C               0#define Assembly        1/* * Memory map */#define __SHMEM_CONTROL0	0x00000000#define __SYSTEM_CONTROL1	0x00000400#define __ARBITER		0x00020000#define __SYSTEM_CONTROL2	0x00040000#define __SYSTEM_CONTROL3	0x00060000#define __PARALLEL_PORT		0x00080000#define __VIDMEM_CONTROL	0x00100000#define __UPDATE_FIFO		0x00120000#define __SHMEM_CONTROL1	0x00140000#define __INTERRUPT_CONTROL	0x00160000#define __USB_CONTROL		0x00180000#define __TRACK_INTERFACE	0x001a0000#define __MOUSE_INTERFACE	0x001b0000#define __KEYPAD_INTERFACE	0x001c0000#define __PCMCIA_INTERFACE	0x001e0000#define	__VGA_CONTROL		0x00200000#define __GPIO_INTERFACE	0x00300000/* * Macro that calculates real address for registers in the SA-1101 */#define _SA1101( x )    ((x) + SA1101_BASE)/* * Interface and shared memory controller registers * * Registers *	SKCR		SA-1101 control register (read/write) *	SMCR		Shared Memory Controller Register *	SNPR		Snoop Register */#define _SKCR		_SA1101( 0x00000000 ) /* SA-1101 Control Reg. */#define _SMCR		_SA1101( 0x00140000 ) /* Shared Mem. Control Reg. */#define _SNPR		_SA1101( 0x00140400 ) /* Snoop Reg. */#if LANGUAGE == C#define SKCR		(*((volatile Word *) SA1101_p2v (_SKCR)))#define SMCR		(*((volatile Word *) SA1101_p2v (_SMCR)))#define SNPR		(*((volatile Word *) SA1101_p2v (_SNPR)))#define SKCR_PLLEn	  0x0001	  /* Enable On-Chip PLL */#define SKCR_BCLKEn	  0x0002	  /* Enables BCLK */#define SKCR_Sleep	  0x0004	  /* Sleep Mode */#define SKCR_IRefEn	  0x0008	  /* DAC Iref input enable */#define SKCR_VCOON	  0x0010	  /* VCO bias */#define SKCR_ScanTestEn	  0x0020	  /* Enables scan test */#define SKCR_ClockTestEn  0x0040	  /* Enables clock test */#define SMCR_DCAC	  Fld(2,0)	  /* Number of column address bits */#define SMCR_DRAC	  Fld(2,2)	  /* Number of row address bits */#define SMCR_ArbiterBias  0x0008	  /* favor video or USB */#define SMCR_TopVidMem	  Fld(4,5)	  /* Top 4 bits of vidmem addr. */#define SMCR_ColAdrBits( x )		  /* col. addr bits 8..11 */ \	(( (x) - 8 ) << FShft (SMCR_DCAC))#define SMCR_RowAdrBits( x )		  /* row addr bits 9..12 */\	(( (x) - 9 ) << FShft (SMCR_DRAC))#define SNPR_VFBstart	  Fld(12,0)	/* Video frame buffer addr */#define SNPR_VFBsize	  Fld(11,12)	/* Video frame buffer size */#define SNPR_WholeBank	  (1 << 23)	/* Whole bank bit */#define SNPR_BankSelect	  Fld(2,27)	/* Bank select */#define SNPR_SnoopEn	  (1 << 31)	/* Enable snoop operation */#define SNPR_Set_VFBsize( x )   /* set frame buffer size (in kb) */ \	( (x) << FShft (SNPR_VFBsize))#define SNPR_Select_Bank(x)     /* select bank 0 or 1 */  \	(( (x) + 1 ) << FShft (SNPR_BankSelect ))#endif /* LANGUAGE == C *//* * Video Memory Controller * * Registers *    VMCCR	Configuration register *    VMCAR	VMC address register *    VMCDR	VMC data register * */#define _VMCCR		_SA1101( 0x00100000 )	/* Configuration register */#define _VMCAR		_SA1101( 0x00101000 )	/* VMC address register */#define _VMCDR		_SA1101( 0x00101400 )	/* VMC data register */#if LANGUAGE == C#define VMCCR		(*((volatile Word *) SA1101_p2v (_VMCCR)))#define VMCAR		(*((volatile Word *) SA1101_p2v (_VMCAR)))#define VMCDR		(*((volatile Word *) SA1101_p2v (_VMCDR)))#define VMCCR_RefreshEn	    0x0000	  /* Enable memory refresh */#define VMCCR_Config	    0x0001	  /* DRAM size */#define VMCCR_RefPeriod	    Fld(2,3)	  /* Refresh period */#define VMCCR_StaleDataWait Fld(4,5)	  /* Stale FIFO data timeout counter */#define VMCCR_SleepState    (1<<9)	  /* State of interface pins in sleep*/#define VMCCR_RefTest	    (1<<10)	  /* refresh test */#define VMCCR_RefLow	    Fld(6,11)	  /* refresh low counter */#define VMCCR_RefHigh	    Fld(7,17)	  /* refresh high counter */#define VMCCR_SDTCTest	    Fld(7,24)	  /* stale data timeout counter */#define VMCCR_ForceSelfRef  (1<<31)	  /* Force self refresh */#endif LANGUAGE == C/* Update FIFO * * Registers *    UFCR	Update FIFO Control Register *    UFSR	Update FIFO Status Register *    UFLVLR	update FIFO level register *    UFDR	update FIFO data register */#define _UFCR	_SA1101(0x00120000)   /* Update FIFO Control Reg. */#define _UFSR	_SA1101(0x00120400)   /* Update FIFO Status Reg. */	#define _UFLVLR	_SA1101(0x00120800)   /* Update FIFO level reg. */#define _UFDR	_SA1101(0x00120c00)   /* Update FIFO data reg. */#if LANGUAGE == C#define UFCR 	(*((volatile Word *) SA1101_p2v (_UFCR)))#define UFSR	(*((volatile Word *) SA1101_p2v (_UFSR)))#define UFLVLR	(*((volatile Word *) SA1101_p2v (_UFLVLR))) #define UFDR	(*((volatile Word *) SA1101_p2v (_UFDR)))#define UFCR_FifoThreshhold	Fld(7,0)	/* Level for FifoGTn flag */#define UFSR_FifoGTnFlag	0x01		/* FifoGTn flag */#define UFSR_FifoEmpty		0x80		/* FIFO is empty */#endif /* LANGUAGE == C *//* System Controller * * Registers *    SKPCR	Power Control Register *    SKCDR	Clock Divider Register *    DACDR1	DAC1 Data register *    DACDR2	DAC2 Data register */#define _SKPCR		_SA1101(0x00000400)#define _SKCDR		_SA1101(0x00040000)#define _DACDR1		_SA1101(0x00060000)#define _DACDR2		_SA1101(0x00060400)#if LANGUAGE == C#define SKPCR 	(*((volatile Word *) SA1101_p2v (_SKPCR)))#define SKCDR	(*((volatile Word *) SA1101_p2v (_SKCDR)))#define DACDR1	(*((volatile Word *) SA1101_p2v (_DACDR1)))#define DACDR2	(*((volatile Word *) SA1101_p2v (_DACDR2)))#define SKPCR_UCLKEn	     0x01    /* USB Enable */#define SKPCR_PCLKEn	     0x02    /* PS/2 Enable */#define SKPCR_ICLKEn	     0x04    /* Interrupt Controller Enable */#define SKPCR_VCLKEn	     0x08    /* Video Controller Enable */#define SKPCR_PICLKEn	     0x10    /* parallel port Enable */#define SKPCR_DCLKEn	     0x20    /* DACs Enable */#define SKPCR_nKPADEn	     0x40    /* Multiplexer */#define SKCDR_PLLMul	     Fld(7,0)	/* PLL Multiplier */#define SKCDR_VCLKEn	     Fld(2,7)	/* Video controller clock divider */#define SKDCR_BCLKEn	     (1<<9)	/* BCLK Divider */#define SKDCR_UTESTCLKEn     (1<<10)	/* Route USB clock during test mode */#define SKDCR_DivRValue	     Fld(6,11)	/* Input clock divider for PLL */#define SKDCR_DivNValue	     Fld(5,17)	/* Output clock divider for PLL */#define SKDCR_PLLRSH	     Fld(3,22)	/* PLL bandwidth control */#define SKDCR_ChargePump     (1<<25)	/* Charge pump control */#define SKDCR_ClkTestMode    (1<<26)	/* Clock output test mode */#define SKDCR_ClkTestEn	     (1<<27)	/* Test clock generator */#define SKDCR_ClkJitterCntl  Fld(3,28)	/* video clock jitter compensation */#define DACDR_DACCount	     Fld(8,0)	/* Count value */#define DACDR1_DACCount	     DACDR_DACCount#define DACDR2_DACCount	     DACDR_DACCount#endif /* LANGUAGE == C *//* * Parallel Port Interface * * Registers *    IEEE_Config	IEEE mode selection and programmable attributes *    IEEE_Control	Controls the states of IEEE port control outputs *    IEEE_Data		Forward transfer data register *    IEEE_Addr		Forward transfer address register *    IEEE_Status	Port IO signal status register *    IEEE_IntStatus	Port interrupts status register *    IEEE_FifoLevels   Rx and Tx FIFO interrupt generation levels *    IEEE_InitTime	Forward timeout counter initial value *    IEEE_TimerStatus	Forward timeout counter current value *    IEEE_FifoReset	Reset forward transfer FIFO *    IEEE_ReloadValue	Counter reload value *    IEEE_TestControl	Control testmode *    IEEE_TestDataIn	Test data register *    IEEE_TestDataInEn	Enable test data *    IEEE_TestCtrlIn	Test control signals *    IEEE_TestCtrlInEn	Enable test control signals *    IEEE_TestDataStat	Current data bus value * *//* * The control registers are defined as offsets from a base address  */ #define _IEEE( x ) _SA1101( (x) + __PARALLEL_PORT )#define _IEEE_Config	    _IEEE( 0x0000 )#define _IEEE_Control	    _IEEE( 0x0400 )#define _IEEE_Data	    _IEEE( 0x4000 )#define _IEEE_Addr	    _IEEE( 0x0800 )#define _IEEE_Status	    _IEEE( 0x0c00 )#define _IEEE_IntStatus	    _IEEE( 0x1000 )#define _IEEE_FifoLevels    _IEEE( 0x1400 )#define _IEEE_InitTime	    _IEEE( 0x1800 )#define _IEEE_TimerStatus   _IEEE( 0x1c00 )#define _IEEE_FifoReset	    _IEEE( 0x2000 )#define _IEEE_ReloadValue   _IEEE( 0x3c00 )#define _IEEE_TestControl   _IEEE( 0x2400 )#define _IEEE_TestDataIn    _IEEE( 0x2800 )#define _IEEE_TestDataInEn  _IEEE( 0x2c00 )#define _IEEE_TestCtrlIn    _IEEE( 0x3000 )#define _IEEE_TestCtrlInEn  _IEEE( 0x3400 )#define _IEEE_TestDataStat  _IEEE( 0x3800 ) #if LANGUAGE == C#define IEEE_Config	    (*((volatile Word *) SA1101_p2v (_IEEE_Config)))#define IEEE_Control	    (*((volatile Word *) SA1101_p2v (_IEEE_Control)))#define IEEE_Data	    (*((volatile Word *) SA1101_p2v (_IEEE_Data)))#define IEEE_Addr	    (*((volatile Word *) SA1101_p2v (_IEEE_Addr)))#define IEEE_Status	    (*((volatile Word *) SA1101_p2v (_IEEE_Status)))#define IEEE_IntStatus	    (*((volatile Word *) SA1101_p2v (_IEEE_IntStatus)))#define IEEE_FifoLevels	    (*((volatile Word *) SA1101_p2v (_IEEE_FifoLevels)))#define IEEE_InitTime	    (*((volatile Word *) SA1101_p2v (_IEEE_InitTime)))#define IEEE_TimerStatus    (*((volatile Word *) SA1101_p2v (_IEEE_TimerStatus)))#define IEEE_FifoReset	    (*((volatile Word *) SA1101_p2v (_IEEE_FifoReset)))#define IEEE_ReloadValue    (*((volatile Word *) SA1101_p2v (_IEEE_ReloadValue)))#define IEEE_TestControl    (*((volatile Word *) SA1101_p2v (_IEEE_TestControl)))#define IEEE_TestDataIn     (*((volatile Word *) SA1101_p2v (_IEEE_TestDataIn)))#define IEEE_TestDataInEn   (*((volatile Word *) SA1101_p2v (_IEEE_TestDataInEn)))#define IEEE_TestCtrlIn     (*((volatile Word *) SA1101_p2v (_IEEE_TestCtrlIn)))#define IEEE_TestCtrlInEn   (*((volatile Word *) SA1101_p2v (_IEEE_TestCtrlInEn)))#define IEEE_TestDataStat   (*((volatile Word *) SA1101_p2v (_IEEE_TestDataStat)))#define IEEE_Config_M	    Fld(3,0)	 /* Mode select */#define IEEE_Config_D	    0x04	 /* FIFO access enable */#define IEEE_Config_B	    0x08	 /* 9-bit word enable */#define IEEE_Config_T	    0x10	 /* Data transfer enable */#define IEEE_Config_A	    0x20	 /* Data transfer direction */#define IEEE_Config_E	    0x40	 /* Timer enable */#define IEEE_Control_A	    0x08	 /* AutoFd output */#define IEEE_Control_E	    0x04	 /* Selectin output */#define IEEE_Control_T	    0x02	 /* Strobe output */#define IEEE_Control_I	    0x01	 /* Port init output */#define IEEE_Data_C	    (1<<31)	 /* Byte count */#define IEEE_Data_Db	    Fld(9,16)	 /* Data byte 2 */#define IEEE_Data_Da	    Fld(9,0)	 /* Data byte 1 */#define IEEE_Addr_A	    Fld(8,0)	 /* forward address transfer byte */#define IEEE_Status_A	    0x0100	 /* nAutoFd port output status */#define IEEE_Status_E	    0x0080	 /* nSelectIn port output status */#define IEEE_Status_T	    0x0040	 /* nStrobe port output status */#define IEEE_Status_I	    0x0020	 /* nInit port output status */#define IEEE_Status_B	    0x0010	 /* Busy port inout status */#define IEEE_Status_S	    0x0008	 /* Select port input status */#define IEEE_Status_K	    0x0004	 /* nAck port input status */#define IEEE_Status_F	    0x0002	 /* nFault port input status */#define IEEE_Status_R	    0x0001	 /* pError port input status */#define IEEE_IntStatus_IntReqDat	 0x0100#define IEEE_IntStatus_IntReqEmp	 0x0080#define IEEE_IntStatus_IntReqInt	 0x0040#define IEEE_IntStatus_IntReqRav	 0x0020#define IEEE_IntStatus_IntReqTim	 0x0010#define IEEE_IntStatus_RevAddrComp	 0x0008#define IEEE_IntStatus_RevDataComp	 0x0004#define IEEE_IntStatus_FwdAddrComp	 0x0002#define IEEE_IntStatus_FwdDataComp	 0x0001#define IEEE_FifoLevels_RevFifoLevel	 2#define IEEE_FifoLevels_FwdFifoLevel	 1#define IEEE_InitTime_TimValInit	 Fld(22,0)#define IEEE_TimerStatus_TimValStat	 Fld(22,0)#define IEEE_ReloadValue_Reload		 Fld(4,0)#define IEEE_TestControl_RegClk		 0x04#define IEEE_TestControl_ClockSelect	 Fld(2,1)#define IEEE_TestControl_TimerTestModeEn 0x01#define IEEE_TestCtrlIn_PError		 0x10#define IEEE_TestCtrlIn_nFault		 0x08#define IEEE_TestCtrlIn_nAck		 0x04#define IEEE_TestCtrlIn_PSel		 0x02#define IEEE_TestCtrlIn_Busy		 0x01#endif /* LANGUAGE == C *//* * VGA Controller * * Registers *    VideoControl	Video Control Register *    VgaTiming0	VGA Timing Register 0 *    VgaTiming1	VGA Timing Register 1 *    VgaTiming2	VGA Timing Register 2 *    VgaTiming3	VGA Timing Register 3 *    VgaBorder		VGA Border Color Register *    VgaDBAR		VGADMA Base Address Register *    VgaDCAR		VGADMA Channel Current Address Register *    VgaStatus		VGA Status Register *    VgaInterruptMask	VGA Interrupt Mask Register *    VgaPalette	VGA Palette Registers *    DacControl	DAC Control Register *    VgaTest		VGA Controller Test Register */#define _VGA( x )	_SA1101( ( x ) + __VGA_CONTROL )#define _VideoControl	    _VGA( 0x0000 )#define _VgaTiming0	    _VGA( 0x0400 )#define _VgaTiming1	    _VGA( 0x0800 )#define _VgaTiming2	    _VGA( 0x0c00 )#define _VgaTiming3	    _VGA( 0x1000 )#define _VgaBorder	    _VGA( 0x1400 )#define _VgaDBAR	    _VGA( 0x1800 )#define _VgaDCAR	    _VGA( 0x1c00 )#define _VgaStatus	    _VGA( 0x2000 )#define _VgaInterruptMask   _VGA( 0x2400 )#define _VgaPalette	    _VGA( 0x40000 )#define _DacControl	    _VGA( 0x3000 )#define _VgaTest	    _VGA( 0x2c00 )#if (LANGUAGE == C)#define VideoControl   (*((volatile Word *) SA1101_p2v (_VideoControl)))#define VgaTiming0     (*((volatile Word *) SA1101_p2v (_VgaTiming0)))#define VgaTiming1     (*((volatile Word *) SA1101_p2v (_VgaTiming1)))#define VgaTiming2     (*((volatile Word *) SA1101_p2v (_VgaTiming2)))#define VgaTiming3     (*((volatile Word *) SA1101_p2v (_VgaTiming3)))#define VgaBorder      (*((volatile Word *) SA1101_p2v (_VgaBorder)))#define VgaDBAR	       (*((volatile Word *) SA1101_p2v (_VgaDBAR)))#define VgaDCAR	       (*((volatile Word *) SA1101_p2v (_VgaDCAR)))#define VgaStatus      (*((volatile Word *) SA1101_p2v (_VgaStatus)))#define VgaInterruptMask (*((volatile Word *) SA1101_p2v (_VgaInterruptMask)))#define VgaPalette     (*((volatile Word *) SA1101_p2v (_VgaPalette)))#define DacControl     (*((volatile Word *) SA1101_p2v (_DacControl)))#define VgaTest        (*((volatile Word *) SA1101_p2v (_VgaTest)))#define VideoControl_VgaEn    0x00000000#define VideoControl_BGR      0x00000001#define VideoControl_VCompVal Fld(2,2)#define VideoControl_VgaReq   Fld(4,4)#define VideoControl_VBurstL  Fld(4,8)#define VideoControl_VMode    (1<<12)#define VideoControl_PalRead  (1<<13)#define VgaTiming0_PPL	      Fld(6,2)#define VgaTiming0_HSW	      Fld(8,8)#define VgaTiming0_HFP	      Fld(8,16)#define VgaTiming0_HBP	      Fld(8,24)#define VgaTiming1_LPS	      Fld(10,0)#define VgaTiming1_VSW	      Fld(6,10)#define VgaTiming1_VFP	      Fld(8,16)#define VgaTiming1_VBP	      Fld(8,24)#define VgaTiming2_IVS	      0x01#define VgaTiming2_IHS	      0x02#define VgaTiming2_CVS	      0x04#define VgaTiming2_CHS	      0x08#define VgaTiming3_HBS	      Fld(8,0)#define VgaTiming3_HBE	      Fld(8,8)#define VgaTiming3_VBS	      Fld(8,16)#define VgaTiming3_VBE	      Fld(8,24)#define VgaBorder_BCOL	      Fld(24,0)#define VgaStatus_VFUF	      0x01#define VgaStatus_VNext	      0x02#define VgaStatus_VComp	      0x04#define VgaInterruptMask_VFUFMask   0x00#define VgaInterruptMask_VNextMask  0x01#define VgaInterruptMask_VCompMask  0x02#define VgaPalette_R	      Fld(8,0)#define VgaPalette_G	      Fld(8,8)#define VgaPalette_B	      Fld(8,16)#define DacControl_DACON      0x0001#define DacControl_COMPON     0x0002#define DacControl_PEDON      0x0004#define DacControl_RTrim      Fld(5,4)#define DacControl_GTrim      Fld(5,9)#define DacControl_BTrim      Fld(5,14)#define VgaTest_TDAC	      0x00#define VgaTest_Datatest      Fld(4,1)#define VgaTest_DACTESTDAC    0x10#define VgaTest_DACTESTOUT    Fld(3,5)#endif /* LANGUAGE == C *//* * USB Host Interface Controller * * Registers *    Revision *    Control *    CommandStatus *    InterruptStatus *    InterruptEnable *    HCCA *    PeriodCurrentED *    ControlHeadED *    BulkHeadED *    BulkCurrentED *    DoneHead *    FmInterval *    FmRemaining *    FmNumber *    PeriodicStart *    LSThreshold *    RhDescriptorA *    RhDescriptorB *    RhStatus *    RhPortStatus *    USBStatus *    USBReset *    USTAR *    USWER *    USRFR *    USNFR *    USTCSR *    USSR *     */#define _USB( x )	_SA1101( ( x ) + __USB_CONTROL )#define _Revision	  _USB( 0x0000 )#define _Control	  _USB( 0x0888 )#define _CommandStatus	  _USB( 0x0c00 )#define _InterruptStatus  _USB( 0x1000 )#define _InterruptEnable  _USB( 0x1400 )#define _HCCA		  _USB( 0x1800 )#define _PeriodCurrentED  _USB( 0x1c00 )#define _ControlHeadED	  _USB( 0x2000 )#define _BulkHeadED	  _USB( 0x2800 )#define _BulkCurrentED	  _USB( 0x2c00 )#define _DoneHead	  _USB( 0x3000 )#define _FmInterval	  _USB( 0x3400 )#define _FmRemaining	  _USB( 0x3800 )#define _FmNumber	  _USB( 0x3c00 )#define _PeriodicStart	  _USB( 0x4000 )#define _LSThreshold	  _USB( 0x4400 )#define _RhDescriptorA	  _USB( 0x4800 )#define _RhDescriptorB	  _USB( 0x4c00 )#define _RhStatus	  _USB( 0x5000 )#define _RhPortStatus	  _USB( 0x5400 )#define _USBStatus	  _USB( 0x11800 )#define _USBReset	  _USB( 0x11c00 )#define _USTAR		  _USB( 0x10400 )#define _USWER		  _USB( 0x10800 )#define _USRFR		  _USB( 0x10c00 )#define _USNFR		  _USB( 0x11000 )#define _USTCSR		  _USB( 0x11400 )#define _USSR		  _USB( 0x11800 )#if (LANGUAGE == C)#define Revision	(*((volatile Word *) SA1101_p2v (_Revision)))#define Control		(*((volatile Word *) SA1101_p2v (_Control)))#define CommandStatus	(*((volatile Word *) SA1101_p2v (_CommandStatus)))#define InterruptStatus	(*((volatile Word *) SA1101_p2v (_InterruptStatus)))#define InterruptEnable	(*((volatile Word *) SA1101_p2v (_InterruptEnable)))#define HCCA		(*((volatile Word *) SA1101_p2v (_HCCA)))#define PeriodCurrentED	(*((volatile Word *) SA1101_p2v (_PeriodCurrentED)))#define ControlHeadED	(*((volatile Word *) SA1101_p2v (_ControlHeadED)))#define BulkHeadED	(*((volatile Word *) SA1101_p2v (_BulkHeadED)))#define BulkCurrentED	(*((volatile Word *) SA1101_p2v (_BulkCurrentED)))#define DoneHead	(*((volatile Word *) SA1101_p2v (_DoneHead)))#define FmInterval	(*((volatile Word *) SA1101_p2v (_FmInterval)))#define FmRemaining	(*((volatile Word *) SA1101_p2v (_FmRemaining)))#define FmNumber	(*((volatile Word *) SA1101_p2v (_FmNumber)))#define PeriodicStart	(*((volatile Word *) SA1101_p2v (_PeriodicStart)))#define LSThreshold	(*((volatile Word *) SA1101_p2v (_LSThreshold)))#define RhDescriptorA	(*((volatile Word *) SA1101_p2v (_RhDescriptorA)))#define RhDescriptorB	(*((volatile Word *) SA1101_p2v (_RhDescriptorB)))#define RhStatus	(*((volatile Word *) SA1101_p2v (_RhStatus)))#define RhPortStatus	(*((volatile Word *) SA1101_p2v (_RhPortStatus)))#define USBStatus	(*((volatile Word *) SA1101_p2v (_USBStatus)))#define USBReset	(*((volatile Word *) SA1101_p2v (_USBReset)))#define USTAR		(*((volatile Word *) SA1101_p2v (_USTAR)))#define USWER		(*((volatile Word *) SA1101_p2v (_USWER)))#define USRFR		(*((volatile Word *) SA1101_p2v (_USRFR)))#define USNFR		(*((volatile Word *) SA1101_p2v (_USNFR)))#define USTCSR		(*((volatile Word *) SA1101_p2v (_USTCSR)))#define USSR		(*((volatile Word *) SA1101_p2v (_USSR)))#define USBStatus_IrqHciRmtWkp	     (1<<7)#define USBStatus_IrqHciBuffAcc	     (1<<8)#define USBStatus_nIrqHciM	     (1<<9)#define USBStatus_nHciMFClr	     (1<<10)#define USBReset_ForceIfReset	     0x01#define USBReset_ForceHcReset	     0x02#define USBReset_ClkGenReset	     0x04#define USTCR_RdBstCntrl	     Fld(3,0)#define USTCR_ByteEnable	     Fld(4,3)#define USTCR_WriteEn		     (1<<7)#define USTCR_FifoCir		     (1<<8)#define USTCR_TestXferSel	     (1<<9)#define USTCR_FifoCirAtEnd	     (1<<10)#define USTCR_nSimScaleDownClk	     (1<<11)#define USSR_nAppMDEmpty	     0x01#define USSR_nAppMDFirst	     0x02#define USSR_nAppMDLast		     0x04#define USSR_nAppMDFull		     0x08#define USSR_nAppMAFull		     0x10#define USSR_XferReq		     0x20#define USSR_XferEnd		     0x40#endif /* LANGUAGE == C *//* * Interrupt Controller * * Registers *    INTTEST0		Test register 0 *    INTTEST1		Test register 1 *    INTENABLE0	Interrupt Enable register 0 *    INTENABLE1	Interrupt Enable register 1 *    INTPOL0		Interrupt Polarity selection 0 *    INTPOL1		Interrupt Polarity selection 1 *    INTTSTSEL		Interrupt source selection *    INTSTATCLR0	Interrupt Status 0 *    INTSTATCLR1	Interrupt Status 1 *    INTSET0		Interrupt Set 0 *    INTSET1		Interrupt Set 1 */#define _INT( x )	_SA1101( ( x ) + __INTERRUPT_CONTROL)#define _INTTEST0	_INT( 0x1000 )#define _INTTEST1	_INT( 0x1400 )#define _INTENABLE0	_INT( 0x2000 )#define _INTENABLE1	_INT( 0x2400 )#define _INTPOL0	_INT( 0x3000 )#define _INTPOL1	_INT( 0x3400 )#define _INTTSTSEL     	_INT( 0x5000 )#define _INTSTATCLR0	_INT( 0x6000 )#define _INTSTATCLR1	_INT( 0x6400 )#define _INTSET0	_INT( 0x7000 )#define _INTSET1	_INT( 0x7400 )#if ( LANGUAGE == C )#define INTTEST0	(*((volatile Word *) SA1101_p2v (_INTTEST0)))#define INTTEST1	(*((volatile Word *) SA1101_p2v (_INTTEST1)))#define INTENABLE0	(*((volatile Word *) SA1101_p2v (_INTENABLE0)))#define INTENABLE1	(*((volatile Word *) SA1101_p2v (_INTENABLE1)))#define INTPOL0		(*((volatile Word *) SA1101_p2v (_INTPOL0)))#define INTPOL1		(*((volatile Word *) SA1101_p2v (_INTPOL1)))#define INTTSTSEL	(*((volatile Word *) SA1101_p2v (_INTTSTSEL)))#define INTSTATCLR0	(*((volatile Word *) SA1101_p2v (_INTSTATCLR0)))#define INTSTATCLR1	(*((volatile Word *) SA1101_p2v (_INTSTATCLR1)))#define INTSET0		(*((volatile Word *) SA1101_p2v (_INTSET0)))#define INTSET1		(*((volatile Word *) SA1101_p2v (_INTSET1)))#endif /* LANGUAGE == C *//* * PS/2 Trackpad and Mouse Interfaces * * Registers   (prefix kbd applies to trackpad interface, mse to mouse) *    KBDCR		Control Register *    KBDSTAT		Status Register *    KBDDATA		Transmit/Receive Data register *    KBDCLKDIV		Clock Division Register *    KBDPRECNT		Clock Precount Register *    KBDTEST1		Test register 1 *    KBDTEST2		Test register 2 *    KBDTEST3		Test register 3 *    KBDTEST4		Test register 4 *    MSECR	 *    MSESTAT *    MSEDATA *    MSECLKDIV *    MSEPRECNT *    MSETEST1 *    MSETEST2 *    MSETEST3 *    MSETEST4 *      */#define _KBD( x )	_SA1101( ( x ) + __TRACK_INTERFACE )#define _MSE( x )	_SA1101( ( x ) + __MOUSE_INTERFACE )#define _KBDCR		_KBD( 0x0000 )#define _KBDSTAT	_KBD( 0x0400 )#define _KBDDATA	_KBD( 0x0800 )#define _KBDCLKDIV	_KBD( 0x0c00 )#define _KBDPRECNT	_KBD( 0x1000 )#define	_KBDTEST1	_KBD( 0x2000 )#define _KBDTEST2	_KBD( 0x2400 )#define _KBDTEST3	_KBD( 0x2800 )#define _KBDTEST4	_KBD( 0x2c00 )#define _MSECR		_MSE( 0x0000 )#define _MSESTAT	_MSE( 0x0400 )#define _MSEDATA	_MSE( 0x0800 )#define _MSECLKDIV	_MSE( 0x0c00 )#define _MSEPRECNT	_MSE( 0x1000 )#define	_MSETEST1	_MSE( 0x2000 )#define _MSETEST2	_MSE( 0x2400 )#define _MSETEST3	_MSE( 0x2800 )#define _MSETEST4	_MSE( 0x2c00 )#if ( LANGUAGE == C )#define KBDCR	    (*((volatile Word *) SA1101_p2v (_KBDCR)))#define KBDSTAT	    (*((volatile Word *) SA1101_p2v (_KBDSTAT)))#define KBDDATA	    (*((volatile Word *) SA1101_p2v (_KBDDATA)))#define KBDCLKDIV   (*((volatile Word *) SA1101_p2v (_KBDCLKDIV)))#define KBDPRECNT   (*((volatile Word *) SA1101_p2v (_KBDPRECNT)))#define KBDTEST1    (*((volatile Word *) SA1101_p2v (_KBDTEST1)))#define KBDTEST2    (*((volatile Word *) SA1101_p2v (_KBDTEST2)))#define KBDTEST3    (*((volatile Word *) SA1101_p2v (_KBDTEST3)))#define KBDTEST4    (*((volatile Word *) SA1101_p2v (_KBDTEST4)))#define MSECR	    (*((volatile Word *) SA1101_p2v (_MSECR)))#define MSESTAT	    (*((volatile Word *) SA1101_p2v (_MSESTAT)))#define MSEDATA	    (*((volatile Word *) SA1101_p2v (_MSEDATA)))#define MSECLKDIV   (*((volatile Word *) SA1101_p2v (_MSECLKDIV)))#define MSEPRECNT   (*((volatile Word *) SA1101_p2v (_MSEPRECNT)))#define MSETEST1    (*((volatile Word *) SA1101_p2v (_MSETEST1)))#define MSETEST2    (*((volatile Word *) SA1101_p2v (_MSETEST2)))#define MSETEST3    (*((volatile Word *) SA1101_p2v (_MSETEST3)))#define MSETEST4    (*((volatile Word *) SA1101_p2v (_MSETEST4)))#define KBDCR_ENA		 0x08#define KBDCR_FKD		 0x02#define KBDCR_FKC		 0x01#define KBDSTAT_TXE		 0x80#define KBDSTAT_TXB		 0x40#define KBDSTAT_RXF		 0x20#define KBDSTAT_RXB		 0x10#define KBDSTAT_ENA		 0x08#define KBDSTAT_RXP		 0x04#define KBDSTAT_KBD		 0x02#define KBDSTAT_KBC		 0x01#define KBDCLKDIV_DivVal	 Fld(4,0)#define MSECR_ENA		 0x08#define MSECR_FKD		 0x02#define MSECR_FKC		 0x01#define MSESTAT_TXE		 0x80#define MSESTAT_TXB		 0x40#define MSESTAT_RXF		 0x20#define MSESTAT_RXB		 0x10#define MSESTAT_ENA		 0x08#define MSESTAT_RXP		 0x04	#define MSESTAT_MSD		 0x02#define MSESTAT_MSC		 0x01#define MSECLKDIV_DivVal	 Fld(4,0)#define KBDTEST1_CD		 0x80#define KBDTEST1_RC1		 0x40#define KBDTEST1_MC		 0x20#define KBDTEST1_C		 Fld(2,3)#define KBDTEST1_T2		 0x40#define KBDTEST1_T1		 0x20#define KBDTEST1_T0		 0x10#define KBDTEST2_TICBnRES	 0x08#define KBDTEST2_RKC		 0x04#define KBDTEST2_RKD		 0x02#define KBDTEST2_SEL		 0x01#define KBDTEST3_ms_16		 0x80#define KBDTEST3_us_64		 0x40#define KBDTEST3_us_16		 0x20#define KBDTEST3_DIV8		 0x10#define KBDTEST3_DIn		 0x08#define KBDTEST3_CIn		 0x04#define KBDTEST3_KD		 0x02#define KBDTEST3_KC		 0x01#define KBDTEST4_BC12		 0x80#define KBDTEST4_BC11		 0x40#define KBDTEST4_TRES		 0x20#define KBDTEST4_CLKOE		 0x10#define KBDTEST4_CRES		 0x08#define KBDTEST4_RXB		 0x04#define KBDTEST4_TXB		 0x02#define KBDTEST4_SRX		 0x01#define MSETEST1_CD		 0x80#define MSETEST1_RC1		 0x40#define MSETEST1_MC		 0x20#define MSETEST1_C		 Fld(2,3)#define MSETEST1_T2		 0x40#define MSETEST1_T1		 0x20#define MSETEST1_T0		 0x10#define MSETEST2_TICBnRES	 0x08#define MSETEST2_RKC		 0x04#define MSETEST2_RKD		 0x02#define MSETEST2_SEL		 0x01#define MSETEST3_ms_16		 0x80#define MSETEST3_us_64		 0x40#define MSETEST3_us_16		 0x20#define MSETEST3_DIV8		 0x10#define MSETEST3_DIn		 0x08#define MSETEST3_CIn		 0x04#define MSETEST3_KD		 0x02#define MSETEST3_KC		 0x01#define MSETEST4_BC12		 0x80#define MSETEST4_BC11		 0x40#define MSETEST4_TRES		 0x20#define MSETEST4_CLKOE		 0x10#define MSETEST4_CRES		 0x08#define MSETEST4_RXB		 0x04#define MSETEST4_TXB		 0x02#define MSETEST4_SRX		 0x01#endif  /* LANGUAGE == C *//* * General-Purpose I/O Interface * * Registers *    PADWR	Port A Data Write Register *    PBDWR	Port B Data Write Register *    PADRR	Port A Data Read Register *    PBDRR	Port B Data Read Register *    PADDR	Port A Data Direction Register *    PBDDR	Port B Data Direction Register *    PASSR	Port A Sleep State Register *    PBSSR	Port B Sleep State Register * */#define _PIO( x )      _SA1101( ( x ) + __GPIO_INTERFACE )#define _PADWR	       _PIO( 0x0000 )#define _PBDWR	       _PIO( 0x0400 )#define _PADRR	       _PIO( 0x0000 )#define _PBDRR	       _PIO( 0x0400 )#define _PADDR	       _PIO( 0x0800 )#define _PBDDR	       _PIO( 0x0c00 )#define _PASSR	       _PIO( 0x1000 )#define _PBSSR	       _PIO( 0x1400 )#if ( LANGUAGE == C )#define PADWR	    (*((volatile Word *) SA1101_p2v (_PADWR)))#define PBDWR	    (*((volatile Word *) SA1101_p2v (_PBDWR)))#define PADRR	    (*((volatile Word *) SA1101_p2v (_PADRR)))#define PBDRR	    (*((volatile Word *) SA1101_p2v (_PBDRR)))#define PADDR	    (*((volatile Word *) SA1101_p2v (_PADDR)))#define PBDDR	    (*((volatile Word *) SA1101_p2v (_PBDDR)))#define PASSR	    (*((volatile Word *) SA1101_p2v (_PASSR)))#define PBSSR	    (*((volatile Word *) SA1101_p2v (_PBSSR)))#endif/* * Keypad Interface * * Registers *    PXDWR *    PXDRR *    PYDWR *    PYDRR * */#define _KEYPAD( x )	_SA1101( ( x ) + __KEYPAD_INTERFACE ) #define _PXDWR	   _KEYPAD( 0x0000 )#define _PXDRR	   _KEYPAD( 0x0000 )#define _PYDWR	   _KEYPAD( 0x0400 )#define _PYDRR	   _KEYPAD( 0x0400 )#if ( LANGUAGE == C )#define PXDWR	    (*((volatile Word *) SA1101_p2v (_PXDWR)))#define PXDRR	    (*((volatile Word *) SA1101_p2v (_PXDRR)))#define PYDWR	    (*((volatile Word *) SA1101_p2v (_PYDWR)))#define PYDRR	    (*((volatile Word *) SA1101_p2v (_PYDRR)))#endif/* * PCMCIA Interface * * Registers *    PCSR	Status Register *    PCCR	Control Register *    PCSSR	Sleep State Register * */#define _CARD( x )	_SA1101( ( x ) + __PCMCIA_INTERFACE )#define _PCSR	   _CARD( 0x0000 )#define _PCCR	   _CARD( 0x0400 )#define _PCSSR	   _CARD( 0x0800 )#if ( LANGUAGE == C )#define PCSR    (*((volatile Word *) SA1101_p2v (_PCSR)))#define PCCR	(*((volatile Word *) SA1101_p2v (_PCCR)))#define PCSSR	(*((volatile Word *) SA1101_p2v (_PCSSR)))#define PCSR_S0_ready		0x0001#define PCSR_S1_ready		0x0002#define PCSR_S0_detected	0x0004#define PCSR_S1_detected	0x0008#define PCSR_S0_VS1		0x0010#define PCSR_S0_VS2		0x0020#define PCSR_S1_VS1		0x0040#define PCSR_S1_VS2		0x0080#define PCSR_S0_WP		0x0100#define PCSR_S1_WP		0x0200#define PCSR_S0_BVD1_nSTSCHG	0x0400#define PCSR_S0_BVD2_nSPKR	0x0800#define PCSR_S1_BVD1_nSTSCHG	0x1000#define PCSR_S1_BVD2_nSPKR	0x2000#define PCCR_S0_VPP0		0x0001#define PCCR_S0_VPP1		0x0002#define PCCR_S0_VCC0		0x0004#define PCCR_S0_VCC1		0x0008#define PCCR_S1_VPP0		0x0010#define PCCR_S1_VPP1		0x0020#define PCCR_S1_VCC0		0x0040#define PCCR_S1_VCC1		0x0080#define PCCR_S0_reset		0x0100#define PCCR_S1_reset		0x0200#define PCCR_S0_float		0x0400#define PCCR_S1_float		0x0800#define PCSSR_S0_VCC0		0x0001#define PCSSR_S0_VCC1		0x0002#define PCSSR_S0_VPP0		0x0004#define PCSSR_S0_VPP1		0x0008#define PCSSR_S0_control	0x0010#define PCSSR_S1_VCC0		0x0020#define PCSSR_S1_VCC1		0x0040#define PCSSR_S1_VPP0		0x0080#define PCSSR_S1_VPP1		0x0100#define PCSSR_S1_control	0x0200#endif#undef C#undef Assembly
 |