OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rc203soc/] [sw/] [uClinux/] [include/] [asm-armnommu/] [arch-trio/] [hardware.h] - Rev 1777

Go to most recent revision | Compare with Previous | Blame | View Log

/*
 * linux/include/asm-arm/arch-trio/hardware.h
 *
 * Copyright (C) 1996 Russell King.
 *
 * This file contains the hardware definitions of the APLIO TRIO series machines.
 */
 
#ifndef __ASM_ARCH_HARDWARE_H
#define __ASM_ARCH_HARDWARE_H
 
/*
 * What hardware must be present
 */
#ifndef __ASSEMBLER__
 
typedef unsigned long u_32;
/* ARM asynchronous clock */
#define ARM_CLK		((u_32)(24000000))
/* ARM synchronous with OAK clock */
#define A_O_CLK		((u_32)(20000000))
 
#else
 
#define ARM_CLK 24000000
#define A_O_CLK 20000000
 
#endif
 
#ifndef __ASSEMBLER__
/*
 * RAM definitions
 */
#define MAPTOPHYS(a)		((unsigned long)a)
#define KERNTOPHYS(a)		((unsigned long)(&a))
#define GET_MEMORY_END(p)	((p->u1.s.page_size) * (p->u1.s.nr_pages))
#define PARAMS_BASE			0x1000
//#define KERNEL_BASE		(PAGE_OFFSET + 0x80000)
#endif
 
#define IO_BASE		0
#define PERIPH_BASE 0xff000000
#define OAKA_PRAM	0xfd000000
#define OAKB_PRAM	0xfe000000
 
#define SRAM_BASE	0xfc000000
#define SRAM_SIZE	0x1000
 
#define DPMBA_BASE  0xfa000000
#define DPMBB_BASE  0xfb000000
#define DPMB_SIZE	0x800
 
#define BOOTROM_BASE 0xfb000000
#define BOOTROM_SIZE 0x400
 
/*
	Peripherials
*/	
#define SIAP_BASE	(PERIPH_BASE+0)
#define SMC_BASE	(PERIPH_BASE+0x4000)
#define DMC_BASE	(PERIPH_BASE+0x8000)
#define PIOA_BASE	(PERIPH_BASE+0xc000)
#define PIOB_BASE	(PERIPH_BASE+0x10000)
#define KB_BASE		(PERIPH_BASE+0x10000)
#define TMC_BASE	(PERIPH_BASE+0x14000)
#define USARTA_BASE	(PERIPH_BASE+0x18000)
#define USARTB_BASE	(PERIPH_BASE+0x1c000)
#define SPI_BASE	(PERIPH_BASE+0x20000)
#define WDG_BASE	(PERIPH_BASE+0x28000)
#define AIC_BASE	(PERIPH_BASE+0x30000)
/*
	SIAP registers
*/	
#define SIAP_MD   (SIAP_BASE)
#define SIAP_ID   (SIAP_BASE+4)
#define SIAP_RST   (SIAP_BASE+8)
 
/* SIAP mode register */
#define SIAP_SW2	(1<<11)
#define SIAP_SW1	(1<<10)
#define SIAP_LPCS(x)(x<<8 & 0x300)
#define SIAP_LP		(1<<6)
#define SIAP_CS		(1<<5)
#define SIAP_IB		(1<<4)
#define SIAP_IA		(1<<3)
#define SIAP_RB		(1<<2)
#define SIAP_RA		(1<<1)
#define SIAP_RM		(1)
 
/* SIAP ID register */
#define SIAP_PKG	(1<<31)
#define SIAP_VERS	(1)	
 
/* SIAP reset register */
#define	SIAP_RESET	(7)	
 
/*
	DRAM Memory controller registers
*/	
#define DMR0	(DMC_BASE + 0)		
#define DMR1	(DMC_BASE + 4)
#define DMC_CR	(DMC_BASE + 8)
 
/* DMRx registers */
#define DMR_EMR		1
#define DMR_PS(x)	(x<<1 & 6)
#define DMR_SZ(x)	(x<<3 & 0x18)
 
/* DMR memory control register */
#define DMR_ROR		(1<<2)
#define DMR_BBR		(1<<1)
#define DMR_DBW		1
 
/*
	Static Memory controller registers
*/	
#define SMC_CSR0	(SMC_BASE + 0)		
#define SMC_CSR1	(SMC_BASE + 4)		
#define SMC_CSR2	(SMC_BASE + 8)		
#define SMC_CSR3	(SMC_BASE + 0xc)		
#define SMC_MCR		(SMC_BASE + 0x24)		
 
/* SMC chip select registers */
#define SMC_CSEN	(1<<13)
#define SMC_BAT		(1<<12)
#define SMC_TDF(x)	(x<<9 & 0xe000)
#define SMC_PGS(x)	(x<<7 & 0x1800)
#define SMC_WSE		(1<<5)
#define SMC_NWS(x)	(x<<2 & 0x1c)
#define SMC_DBW(x)	(x & 3)
 
/* SMC memory control register */
#define SMC_DRP		(1<<4)
 
/*
	Dual Port Memory A
*/
#define DPMBA_S0	(DPMBA_BASE + 0x200)
#define DPMBA_S1	(DPMBA_BASE + 0x204)
#define DPMBA_S2	(DPMBA_BASE + 0x208)
#define DPMBA_S3	(DPMBA_BASE + 0x20c)
#define DPMBA_S4	(DPMBA_BASE + 0x210)
#define DPMBA_S5	(DPMBA_BASE + 0x214)
#define DPMBA_S6	(DPMBA_BASE + 0x218)
#define DPMBA_S7	(DPMBA_BASE + 0x21c)
#define DPMBA_CC	(DPMBA_BASE + 0x220)
/*
	Dual Port Memory B
*/	
#define DPMBB_S0	(DPMBB_BASE + 0x200)
#define DPMBB_S1	(DPMBB_BASE + 0x204)
#define DPMBB_S2	(DPMBB_BASE + 0x208)
#define DPMBB_S3	(DPMBB_BASE + 0x20c)
#define DPMBB_S4	(DPMBB_BASE + 0x210)
#define DPMBB_S5	(DPMBB_BASE + 0x214)
#define DPMBB_S6	(DPMBB_BASE + 0x218)
#define DPMBB_S7	(DPMBB_BASE + 0x21c)
#define DPMBB_CC	(DPMBB_BASE + 0x220)
/*
	Timer  registers
*/
#define TC0_BASE	(TMC_BASE + 0)
#define TC1_BASE	(TMC_BASE + 0x40)
#define TC2_BASE	(TMC_BASE + 0x80)
 
#define TC_OFFSET 0x14000
#define TC_BASE(i) (PERIPH_BASE+TC_OFFSET+(i)*0x40)
 
#define TC_BCR		(TMC_BASE + 0xC0)
#define TC_BMR		(TMC_BASE + 0xC4)
 
#ifndef __ASSEMBLER__
struct trio_timer_channel
{
	unsigned long ccr;				// channel control register		(WO)
	unsigned long cmr;				// channel mode register		(RW)
	unsigned long reserved[2];		
	unsigned long cv;				// counter value				(RW)
	unsigned long ra;				// register A					(RW)
	unsigned long rb;				// register B					(RW)
	unsigned long rc;				// register C					(RW)
	unsigned long sr;				// status register				(RO)
	unsigned long ier;				// interrupt enable register	(WO)
	unsigned long idr;				// interrupt disable register	(WO)
	unsigned long imr;				// interrupt mask register		(RO)
};
 
struct trio_timers
{
	struct {
		struct trio_timer_channel ch;
		unsigned char padding[0x40-sizeof(struct trio_timer_channel)];
	} chans[3];
	unsigned  long bcr;				// block control register		(WO)
	unsigned  long bmr;				// block mode	 register		(RW)
};
 
#endif
 
/*  TC control register */
#define TC_SYNC	(1)
 
/*  TC mode register */
#define TC2XC2S(x)	(x & 0x3)
#define TC1XC1S(x)	(x<<2 & 0xc)
#define TC0XC0S(x)	(x<<4 & 0x30)
 
/* TC channel control */
#define TC_CLKEN	(1)			
#define TC_CLKDIS	(1<<1)			
#define TC_SWTRG	(1<<2)			
 
/* TC interrupts enable/disable/mask and status registers */
#define TC_MTIOB	(1<<18)
#define TC_MTIOA	(1<<17)
#define TC_CLKSTA	(1<<16)
 
#define TC_ETRGS	(1<<7)
#define TC_LDRBS	(1<<6)
#define TC_LDRAS	(1<<5)
#define TC_CPCS		(1<<4)
#define TC_CPBS		(1<<3)
#define TC_CPAS		(1<<2)
#define TC_LOVRS	(1<<1)
#define TC_COVFS	(1)
 
#ifndef __ASSEMBLER__
/*
	UART registers
*/
struct uart_regs{
	u_32 cr;		// control 
	u_32 mr;		// mode
	u_32 ier;		// interrupt enable
	u_32 idr;		// interrupt disable
	u_32 imr;		// interrupt mask
	u_32 csr;		// channel status
	u_32 rhr;		// receive holding 
	u_32 thr;		// tramsmit holding		
	u_32 brgr;		// baud rate generator		
	u_32 rtor;		// rx time-out
	u_32 ttgr;		// tx time-guard
	u_32 res1;
	u_32 rpr;		// rx pointer
	u_32 rcr;		// rx counter
	u_32 tpr;		// tx pointer
	u_32 tcr;		// tx counter
	u_32 mc;		// modem control
	u_32 ms;		// modem status
};
#endif
 
/*  US control register */
#define US_SENDA	(1<<12)
#define US_STTO		(1<<11)
#define US_STPBRK	(1<<10)
#define US_STTBRK	(1<<9)
#define US_RSTSTA	(1<<8)
#define US_TXDIS	(1<<7)
#define US_TXEN		(1<<6)
#define US_RXDIS	(1<<5)
#define US_RXEN		(1<<4)
#define US_RSTTX	(1<<3)
#define US_RSTRX	(1<<2)
 
/* US mode register */
#define US_CLK0		(1<<18)
#define US_MODE9	(1<<17)
#define US_CHMODE(x)(x<<14 & 0xc000)
#define US_NBSTOP(x)(x<<12 & 0x3000)
#define US_PAR(x)	(x<<9 & 0xe00)
#define US_SYNC		(1<<8)
#define US_CHRL(x)	(x<<6 & 0xc0)
#define US_USCLKS(x)(x<<4 & 0x30)
 
/* US interrupts enable/disable/mask and status register */
#define US_DMSI		(1<<10)
#define US_TXEMPTY	(1<<9)
#define US_TIMEOUT	(1<<8)
#define US_PARE		(1<<7)
#define US_FRAME	(1<<6)
#define US_OVRE		(1<<5)
#define US_ENDTX	(1<<4)
#define US_ENDRX	(1<<3)
#define US_RXBRK	(1<<2)
#define US_TXRDY	(1<<1)
#define US_RXRDY	(1)
 
#define US_ALL_INTS (US_DMSI|US_TXEMPTY|US_TIMEOUT|US_PARE|US_FRAME|US_OVRE|US_ENDTX|US_ENDRX|US_RXBRK|US_TXRDY|US_RXRDY)
 
 
/* US modem control register */
#define US_FCM	(1<<5)
#define US_RTS	(1<<1)
#define US_DTR	(1)
 
/* US modem status register */
#define US_FCMS	(1<<8)
#define US_DCD	(1<<7)
#define US_RI	(1<<6)
#define US_DSR	(1<<5)
#define US_CTS	(1<<4)
#define US_DDCD	(1<<3)
#define US_TERI	(1<<2)
#define US_DDSR	(1<<1)
#define US_DCTS	(1)
 
/*
	Advanced Interrupt Controller registers
*/
#define AIC_SMR(i)  (AIC_BASE+i*4)
#define AIC_IVR	    (AIC_BASE+0x100)
#define AIC_FVR	    (AIC_BASE+0x104)
#define AIC_ISR	    (AIC_BASE+0x108)
#define AIC_IPR	    (AIC_BASE+0x10C)
#define AIC_IMR	    (AIC_BASE+0x110)
#define AIC_CISR	(AIC_BASE+0x114)
#define AIC_IECR	(AIC_BASE+0x120)
#define AIC_IDCR	(AIC_BASE+0x124)
#define AIC_ICCR	(AIC_BASE+0x128)
#define AIC_ISCR	(AIC_BASE+0x12C)
#define AIC_EOICR   (AIC_BASE+0x130)
 
/* AIC enable/disable/mask/pending registers */
 
#define AIC_PIOB	(1<<15)
#define AIC_UB		(1<<14)
#define AIC_OAKB	(1<<13)
#define AIC_OAKA	(1<<12)
#define AIC_IRQ1	(1<<11)
#define AIC_IRQ0	(1<<10)
#define AIC_SPI		(1<<9)
#define AIC_LCD		(1<<8)
#define AIC_PIOA	(1<<7)
#define AIC_TC2		(1<<6)
#define AIC_TC1		(1<<5)
#define AIC_TC0		(1<<4)
#define AIC_UA		(1<<3)
#define AIC_SWI		(1<<2)
#define AIC_WD		(1<<1)
#define AIC_FIQ		(1)
/*
	PIOA registers
*/	
#define PIOA_PER	(PIOA_BASE+0)			
#define PIOA_PDR	(PIOA_BASE+0x4)			
#define PIOA_PSR	(PIOA_BASE+0x8)			
 
#define PIOA_OER	(PIOA_BASE+0x10)		
#define PIOA_ODR	(PIOA_BASE+0x14)		
#define PIOA_OSR	(PIOA_BASE+0x18)		
 
#define PIOA_IFER	(PIOA_BASE+0x20)		
#define PIOA_IFDR	(PIOA_BASE+0x24)		
#define PIOA_IFSR	(PIOA_BASE+0x28)		
 
#define PIOA_SODR	(PIOA_BASE+0x30)		
#define PIOA_CODR	(PIOA_BASE+0x34)		
#define PIOA_ODSR	(PIOA_BASE+0x38)		
 
#define PIOA_PDSR	(PIOA_BASE+0x3C)		
 
#define PIOA_IER	(PIOA_BASE+0x40)		
#define PIOA_IDR	(PIOA_BASE+0x44)		
#define PIOA_IMR	(PIOA_BASE+0x48)		
#define PIOA_ISR	(PIOA_BASE+0x4C)		
 
/* PIOA bit allocation */
#define PIOA_TCLK0	(1<<8)					
#define PIOA_TI0A0	(1<<9)					
#define PIOA_TI0B0	(1<<10)					
#define PIOA_SCLKA	(1<<11)					
#define PIOA_NPCS1	(1<<12)					
#define PIOA_SCLKB	(1<<13)					
#define PIOA_NPCS2	(1<<14)					
#define PIOA_NPCS3	(1<<15)					
#define PIOA_TCLK2	(1<<16)					
#define PIOA_TIOA2	(1<<17)					
#define PIOA_TIOB2	(1<<18)					
#define PIOA_ACLK	(1<<19)					
 
/*
	PIOB registers
*/	
#define PIOB_PER	(PIOB_BASE+0)			
#define PIOB_PDR	(PIOB_BASE+0x4)			
#define PIOB_PSR	(PIOB_BASE+0x8)			
 
#define PIOB_OER	(PIOB_BASE+0x10)		
#define PIOB_ODR	(PIOB_BASE+0x14)		
#define PIOB_OSR	(PIOB_BASE+0x18)		
 
#define PIOB_IFER	(PIOB_BASE+0x20)		
#define PIOB_IFDR	(PIOB_BASE+0x24)		
#define PIOB_IFSR	(PIOB_BASE+0x28)		
 
#define PIOB_SODR	(PIOB_BASE+0x30)		
#define PIOB_CODR	(PIOB_BASE+0x34)		
#define PIOB_ODSR	(PIOB_BASE+0x38)		
 
#define PIOB_PDSR	(PIOB_BASE+0x3C)		
 
#define PIOB_IER	(PIOB_BASE+0x40)		
#define PIOB_IDR	(PIOB_BASE+0x44)		
#define PIOB_IMR	(PIOB_BASE+0x48)		
#define PIOB_ISR	(PIOB_BASE+0x4C)		
 
/* PIOB bit allocation */
#define PIOB_TCLK1	(1)					
#define PIOB_TIOA1	(1<<1)				
#define PIOB_TIOB1	(1<<2)				
#define PIOB_NCTSA	(1<<3)				
 
#define PIOB_NRIA	(1<<5)				
#define PIOB_NWDOVF	(1<<6)				
#define PIOB_NCE1	(1<<7)				
#define PIOB_NCE2	(1<<8)				
 
#ifndef __ASSEMBLER__
struct pio_regs{
	u_32 per;
	u_32 pdr;
	u_32 psr;
	u_32 res1;
	u_32 oer;
	u_32 odr;
	u_32 osr;
	u_32 res2;
	u_32 ifer;
	u_32 ifdr;
	u_32 ifsr;
	u_32 res3;
	u_32 sodr;
	u_32 codr;
	u_32 odsr;
	u_32 pdsr;
	u_32 ier;
	u_32 idr;
	u_32 imr;
	u_32 isr;
};
#endif
 
/*
	Serial Peripheral Interface
*/
#define	SP_CR		(SPI_BASE + 0)
#define	SP_MR		(SPI_BASE + 4)
#define	SP_RDR		(SPI_BASE + 8)
#define	SP_TDR		(SPI_BASE + 0xC)
#define	SP_SR		(SPI_BASE + 0x10)
#define	SP_IER		(SPI_BASE + 0x14)
#define	SP_IDR		(SPI_BASE + 0x18)
#define	SP_IMR		(SPI_BASE + 0x1C)
#define	SP_CSR0		(SPI_BASE + 0x30)
#define	SP_CSR1		(SPI_BASE + 0x34)
#define	SP_CSR2		(SPI_BASE + 0x38)
#define	SP_CSR3		(SPI_BASE + 0x3C)
 
#ifndef __ASSEMBLER__
struct spi_regs{
	u_32 cr;
	u_32 mr;
	u_32 rdr;
	u_32 tdr;
	u_32 sr;
	u_32 ier;
	u_32 idr;
	u_32 imr;
	u_32 res1;
	u_32 res2;
	u_32 res3;
	u_32 res4;
	u_32 csr0;
	u_32 csr1;
	u_32 csr2;
	u_32 csr3;
};
#endif
 
/* SPI control register */
#define SPI_SWRST		(1<<7)
#define SPI_SPIDIS		(1<<1)
#define SPI_SPIEN		(1)
 
/* SPI mode register */
#define SPI_MSTR		(1)
#define SPI_PS			(1<<1)
#define SPI_PCSDEC		(1<<2)
#define SPI_MCSK32		(1<<3)
#define SPI_LLB			(1<<7)
#define SPI_PCS(x)		(x<<16 & 0xF0000)
#define SPI_DLYBCS(x)	(x<<24 & 0xFF000000)
 
/* SPI Receive/Transmit Data Register */
#define SPI_PCS_MASK	(0xF0000)
 
/* SPI Interrupt enable/disable and Status registers */
#define SPI_OVRES		(1<<3)
#define SPI_MODF		(1<<2)
#define SPI_TDRE		(1<<1)
#define SPI_RDRF		(1)
 
/* SPI chip selects registers */
#define SPI_CPOL		(1)
#define SPI_NCPHA		(1<<1)
 
#define SPI_BITS_MASK	0xF0
#define SPI_SCBR_MASK	0xF00
#define SPI_DLYBS_MASK	0xF0000
#define SPI_DLYBCT_MASK	0xF000000
 
#define SPI_BITS(x)		(x<<4 & SPI_BITS_MASK)
#define SPI_SCBR(x)		(x<<8 & SPI_SCBR_MASK)
#define SPI_DLYBS(x)	(x<<16 & SPI_DLYBS_MASK)
#define SPI_DLYBCT(x)	(x<<24 & SPI_DLYBCT_MASK)
 
/*
	Watchdog registers
*/
#define WDG_OMR		(WD_BASE + 0)
#define WDG_CMR		(WD_BASE + 4)
#define WDG_CR		(WD_BASE + 8)
#define WDG_SR		(WD_BASE + 0xC)
 
/* Overflow Mode Register */
#define WDG_OKEY_MASK	0xFFF0
#define WDG_OKEY(x)		(x<<4 & WDG_OKEY_MASK)
#define WDG_EXTEN		(1<<3)
#define WDG_IRQEN		(1<<2)
#define WDG_RSTEN		(1<<1)
#define WDG_WDEN		(1)
 
/* Clock Mode Register */
#define WDG_CKEY_MASK	0xFF80
#define WDG_HPCV_MASK	0x3C
#define WDG_WDCLKS_MASK	0x3
#define WDG_CKEY(x)		(x<<7 & WDG_CKEY_MASK)
#define WDG_HPCV(x)		(x<<2 & WDG_HPCV_MASK)
#define WDG_WDCLKS(x)	(x & WDG_WDCLKS_MASK)
 
/* Control Register */
#define	WDG_RESTART_KEY		0xC071
 
/* Status Register */
#define WDG_WDOVF		(1)
 
 
#endif
 
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.