cregit-Linux how code gets into the kernel

Release 4.9 arch/arm/mach-sa1100/include/mach/SA-1101.h

/*
 * 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

Overall Contributors

PersonTokensPropCommitsCommitProp
pre-gitpre-git245799.23%120.00%
russell kingrussell king160.65%240.00%
mariusz kozlowskimariusz kozlowski20.08%120.00%
linus torvaldslinus torvalds10.04%120.00%
Total2476100.00%5100.00%