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