diff options
Diffstat (limited to 'uClinux-2.4.20-uc1/include/asm-armnommu/arch-W90N745/hardware.h')
-rw-r--r-- | uClinux-2.4.20-uc1/include/asm-armnommu/arch-W90N745/hardware.h | 444 |
1 files changed, 444 insertions, 0 deletions
diff --git a/uClinux-2.4.20-uc1/include/asm-armnommu/arch-W90N745/hardware.h b/uClinux-2.4.20-uc1/include/asm-armnommu/arch-W90N745/hardware.h new file mode 100644 index 0000000..9921514 --- /dev/null +++ b/uClinux-2.4.20-uc1/include/asm-armnommu/arch-W90N745/hardware.h @@ -0,0 +1,444 @@ +/********************************************************/ +/* */ +/* Winbond W90N745 */ +/* PC34 Lsshi */ +/* */ +/********************************************************/ +#ifndef __ASM_ARCH_HARDWARE_H +#define __ASM_ARCH_HARDWARE_H + +/* + * define W90N745 CPU master clock + */ +#define MHz 1000000 +#define fMCLK_MHz (15 * MHz) +#define fMCLK (fMCLK_MHz / MHz) +#define MCLK2 (fMCLK_MHz / 2) + +#define pcibios_assign_all_busses() 1 + +/* + * ASIC Address Definition + */ + +#define Base_Addr 0xFFF00000 +#define AHB_IO_BASE Base_Addr +#define APB_IO_BASE 0xFFF80000 + +#define VPint *(volatile unsigned int *) +#define VPshort *(volatile unsigned short *) +#define VPchar *(volatile unsigned char *) + +#ifndef CSR_WRITE +# define CSR_WRITE(addr,data) (VPint(addr) = (data)) +#endif + +#ifndef CSR_READ +# define CSR_READ(addr) (VPint(addr)) +#endif + +#ifndef CAM_Reg +# define CAM_Reg(x) (VPint(CAMBASE+(x*0x4))) +#endif + +/* ************************ */ +/* System Manager Registers */ +/* ************************ */ +#define PDID (Base_Addr+0x00000) +#define ARBCON (Base_Addr+0x00004) +#define PLLCON (Base_Addr+0x00008) +#define CLKSEL (Base_Addr+0x0000c) + +/*****************************/ +/* Cache Control Register Map*/ +/*****************************/ +#define CAHCNF (Base_Addr+0x02000) +#define CAHCON (Base_Addr+0x02004) +#define CAHADR (Base_Addr+0x02008) + +#define NON_CANCHABLE 0x80000000 +//#define NONCACHE +/*****************************/ +/* EBI Control Registers Map */ +/*****************************/ +#define EBICON (Base_Addr+0x01000) +#define ROMCON0 (Base_Addr+0x01004) +#define DRAMCON0 (Base_Addr+0x01008) +#define DRAMCON1 (Base_Addr+0x0100c) +#define SDTIME0 (Base_Addr+0x01010) +#define SDTIME1 (Base_Addr+0x01014) + +/********************************/ +/* GPIO Controller Registers Map*/ +/********************************/ +#define GPIO_CFG (Base_Addr+0x83000) /* GPIO Configuration Register */ +#define GPIO_DIR (Base_Addr+0x83004) /* GPIO Direction Register */ +#define GPIO_DATAOUT (Base_Addr+0x83008) /* GPIO Data Output Register */ +#define GPIO_DATAIN (Base_Addr+0x8300c) /* GPIO Data Input Register */ +#define GPIO_DEBNCE (Base_Addr+0x83010) /* GPIO De-bounce Control Register */ +#define GPIO_INV (Base_Addr+0x83014) /* GPIO Data Input Inverse Register */ + + +/* *********************** */ +/* Ethernet BDMA Registers */ +/* *********************** */ +#define BDMATXCON (Base_Addr+0x9000) +#define BDMARXCON (Base_Addr+0x9004) +#define BDMATXPTR (Base_Addr+0x9008) +#define BDMARXPTR (Base_Addr+0x900C) +#define BDMARXLSZ (Base_Addr+0x9010) +#define BDMASTAT (Base_Addr+0x9014) +#define CAMBASE (Base_Addr+0x9100) +/* + * CAM 0x9100 ~ 0x917C + * BDMATXBUF 0x9200 ~ 0x92FC + * BDMARXBUF 0x9800 ~ 0x99FC + */ + +/* ********************** */ +/* Ethernet MAC Registers */ +/* ********************** */ + +#define MAC_BASE (Base_Addr+0x3000) + +#if 0 +#define MACON (Base_Addr+0xA000) +#define CAMCON (Base_Addr+0xA004) +#define MACTXCON (Base_Addr+0xA008) +#define MACTXSTAT (Base_Addr+0xA00C) +#define MACRXCON (Base_Addr+0xA010) +#define MACRXSTAT (Base_Addr+0xA014) +#define STADATA (Base_Addr+0xA018) +#define STACON (Base_Addr+0xA01C) +#define CAMEN (Base_Addr+0xA028) +#define EMISSCNT (Base_Addr+0xA03C) +#define EPZCNT (Base_Addr+0xA040) +#define ERMPZCNT (Base_Addr+0xA044) +#define EXTSTAT (Base_Addr+0x9040) +#endif +/* ************************ */ +/* HDLC Channel A Registers */ +/* ************************ */ + +/* ************************ */ +/* HDLC Channel B Registers */ +/* ************************ */ + +/* ******************* */ +/* I/O Ports Registers */ +/* ******************* */ +#define IOPMOD (Base_Addr+0x5000) +#define IOPCON (Base_Addr+0x5004) +#define IOPDATA (Base_Addr+0x5008) + + +/* ****************************** */ +/* AIC Registers Map */ +/* ****************************** */ +#define AIC_SCR1 (Base_Addr+0x82004) +#define AIC_SCR2 (Base_Addr+0x82008) +#define AIC_SCR3 (Base_Addr+0x8200c) +#define AIC_SCR4 (Base_Addr+0x82010) +#define AIC_SCR5 (Base_Addr+0x82014) +#define AIC_SCR6 (Base_Addr+0x82018) +#define AIC_SCR7 (Base_Addr+0x8201c) +#define AIC_SCR8 (Base_Addr+0x82010) +#define AIC_SCR9 (Base_Addr+0x82024) +#define AIC_SCR10 (Base_Addr+0x82028) +#define AIC_SCR11 (Base_Addr+0x8202c) +#define AIC_SCR12 (Base_Addr+0x82030) +#define AIC_SCR13 (Base_Addr+0x82034) +#define AIC_SCR14 (Base_Addr+0x82038) +#define AIC_SCR15 (Base_Addr+0x8203c) +#define AIC_SCR16 (Base_Addr+0x82040) + +#define AIC_SCR17 (Base_Addr+0x82044) +#define AIC_SCR18 (Base_Addr+0x82048) + +#define AIC_SCR19 (Base_Addr+0x8204c) +#define AIC_SCR20 (Base_Addr+0x82050) +#define AIC_SCR21 (Base_Addr+0x82054) +#define AIC_SCR22 (Base_Addr+0x82058) +#define AIC_SCR23 (Base_Addr+0x8205c) +#define AIC_SCR24 (Base_Addr+0x82060) +#define AIC_SCR25 (Base_Addr+0x82064) +#define AIC_SCR26 (Base_Addr+0x82068) +#define AIC_SCR27 (Base_Addr+0x8206c) +#define AIC_SCR28 (Base_Addr+0x82070) +#define AIC_SCR29 (Base_Addr+0x82074) +#define AIC_SCR30 (Base_Addr+0x82078) + +#define AIC_IRSR (Base_Addr+0x82100) +#define AIC_IASR (Base_Addr+0x82104) +#define AIC_ISR (Base_Addr+0x82108) +#define AIC_IPER (Base_Addr+0x8210c) +#define AIC_ISNR (Base_Addr+0x82110) +#define AIC_IMR (Base_Addr+0x82114) +#define AIC_OISR (Base_Addr+0x82118) +#define AIC_MECR (Base_Addr+0x82120) +#define AIC_MDCR (Base_Addr+0x82124) +#define AIC_SSCR (Base_Addr+0x82128) +#define AIC_SCCR (Base_Addr+0x8212c) +#define AIC_EOSCR (Base_Addr+0x82130) +#define AIC_TEST (Base_Addr+0x82200) + + +#define IntScr(index,value) (VPint(Base_Addr+0x82000+4*index)=value) +#define IntPend (VPint(AIC_EOSCR)) +#define IntMask (VPint(AIC_MDCR)) +#define IntUnMask (VPint(AIC_MECR)) + +#define INT_ENABLE(n) IntUnMask = (1<<(n)) +#define INT_DISABLE(n) IntMask = (1<<(n)) +//#define CLEAR_PEND_INT(n) IntPend = (0) +//#define SET_PEND_INT(n) IntPndTst |= (1<<(n)) + +/* ***************** */ +/* I2C Bus Registers */ +/* ***************** */ + +/* ************** */ +/* GDMA Registers */ +/* ************** */ + +/* ************** */ +/* UART Registers */ +/* ************** */ + +#define DEBUG_CONSOLE (0) + +#define COM_TX (Base_Addr+0x80000) +#define COM_RX (Base_Addr+0x80000) +#define COM_DLL (Base_Addr+0x80000) +#define COM_DLM (Base_Addr+0x80004) +#define COM_IER (Base_Addr+0x80004) +#define COM_IIR (Base_Addr+0x80008) +#define COM_FCR (Base_Addr+0x80008) +#define COM_LCR (Base_Addr+0x8000c) +#define COM_MCR (Base_Addr+0x80010) +#define COM_LSR (Base_Addr+0x80014) +#define COM_MSR (Base_Addr+0x80018) +#define COM_TOR (Base_Addr+0x8001c) + +#define UART_BASE0 COM_TX + +#define UART_BASE1 (Base_Addr+0x80100) +#define UART_BASE2 (Base_Addr+0x80200) +#define UART_BASE3 (Base_Addr+0x80300) + +#if DEBUG_CONSOLE == 0 + #define DEBUG_TX_BUFF_BASE COM_TX + #define DEBUG_RX_BUFF_BASE COM_RX + #define DEBUG_UARTLCON_BASE COM_LCR + #define DEBUG_UARTCONT_BASE COM_LCR + #define DEBUG_UARTBRD_BASE COM_DLL + #define DEBUG_CHK_STAT_BASE COM_IIR +#endif + +#define DEBUG_ULCR_REG_VAL (0x3) +#define DEBUG_ULCR_REG_VAL (0x3) +#define DEBUG_UDLL_REG_VAL (0x6) +#define DEBUG_RX_CHECK_BIT (0X20) +#define DEBUG_TX_CAN_CHECK_BIT (0X40) +#define DEBUG_TX_DONE_CHECK_BIT (0X80) + + +/* **************** */ +/* Timers Registers */ +/* **************** */ +#define TCR0 (Base_Addr+0x81000) +#define TCR1 (Base_Addr+0x81004) +#define TICR0 (Base_Addr+0x81008) +#define TICR1 (Base_Addr+0x8100c) +#define TDR0 (Base_Addr+0x81010) +#define TDR1 (Base_Addr+0x81014) +#define TISR (Base_Addr+0x81018) +#define WTCR (Base_Addr+0x8101c) + +/*******************/ +/* SYSCFG Register */ +/*******************/ + +#define SYS_INIT_BASE EXTDBWTH +#define rSYSCFG (0x87FFFF90) /* disable Cache/Write buffer */ + +/**********************************/ +/* System Memory Control Register */ +/**********************************/ +#define DSR0 (2<<0) /* ROM Bank0 */ +#define DSR1 (0<<2) /* 0: Disable, 1: Byte, 2: Half-Word, 3: Word */ +#define DSR2 (0<<4) +#define DSR3 (0<<6) +#define DSR4 (0<<8) +#define DSR5 (0<<10) +#define DSD0 (2<<12) /* RAM Bank0 */ +#define DSD1 (0<<14) +#define DSD2 (0<<16) +#define DSD3 (0<<18) +#define DSX0 (0<<20) /* EXTIO0 */ +#define DSX1 (0<<22) +#define DSX2 (0<<24) +#define DSX3 (0<<26) + +#define rEXTDBWTH (DSR0|DSR1|DSR2|DSR3|DSR4|DSR5 | DSD0|DSD1|DSD2|DSD3 | DSX0|DSX1|DSX2|DSX3) + +/****************************************/ +/* ROMCON0: ROM Bank 0 Control Register */ +/****************************************/ +#define PMC0 (0x0<<0) /*00: Normal ROM 01: 4 word page*/ + /*10: 8 word page 11:16 word page*/ +#define tPA0 (0x0<<2) /*00: 5 cycles 01: 2 cycles*/ + /*10: 3 cycles 11: 4 cycles*/ +#define tACC0 (0x6<<4) /*000: Disable bank 001: 2 cycles*/ + /*010: 3 cycles 011: 4 cycles*/ + /*110: 7 cycles 111: Reserved*/ +#define ROM_BASE0_R ((0x00000000>>16)<<10) +#define ROM_NEXT0_R ((0x00200000>>16)<<20) +#define ROM_BASE0_B ((0x01000000>>16)<<10) +#define ROM_NEXT0_B ((0x01200000>>16)<<20) +#define rROMCON0_R (ROM_NEXT0_R|ROM_BASE0_R|tACC0|tPA0|PMC0) +#define rROMCON0_B (ROM_NEXT0_B|ROM_BASE0_B|tACC0|tPA0|PMC0) + +#define rROMCON1 0x0 +#define rROMCON2 0x0 +#define rROMCON3 0x0 +#define rROMCON4 0x0 +#define rROMCON5 0x0 + + +/********************************************/ +/* SDRAMCON0: SDRAM Bank 0 Control Register */ +/********************************************/ +#define StRC0 (0x1<<7) +#define StRP0 (0x3<<8) +#define SDRAM_BASE0_R ((0x01000000>>16)<<10) +#define SDRAM_NEXT0_R ((0x01800000>>16)<<20) +#define SDRAM_BASE0_B ((0x00000000>>16)<<10) +#define SDRAM_NEXT0_B ((0x00800000>>16)<<20) +#define SCAN0 (0x0<<30) +#define rSDRAMCON0_R (SCAN0|SDRAM_NEXT0_R|SDRAM_BASE0_R|StRP0|StRC0) +#define rSDRAMCON0_B (SCAN0|SDRAM_NEXT0_B|SDRAM_BASE0_B|StRP0|StRC0) + +#define rSDRAMCON1 0x0 +#define rSDRAMCON2 0x0 +#define rSDRAMCON3 0x0 + +/************************************************/ +/* DRAM Refresh & External I/O Control Register */ +/************************************************/ +#define ExtIOBase (0x360<<0) +#define VSF (0x1<<15) +#define REN (0x1<<16) +#define tCHR (0x0<<17) +#define tCSR (0x0<<20) +#define RefCountValue ((2048+1-(16*fMCLK))<<21) +#define rREFEXTCON (RefCountValue|tCSR|tCHR|REN|VSF|ExtIOBase) + +/********/ +/* Misc */ +/********/ + +#define TMOD_TIMER0_VAL 0x3 /* Timer0 TOGGLE, and Run */ +#define TAG_BASE 0x11000000 + +#define HARD_RESET_NOW() + +/*PCI*/ +#define PCIBIOS_MIN_IO 0x6000 +#define PCIBIOS_MIN_MEM 0x01000000 + +//************************************************************************* + +//lsshi add 2004-1-2 12:28 +#ifndef DWORD_WRITE // 32-bit +# define DWORD_WRITE(addr,data) (*((unsigned int volatile *)(addr))=data) +#endif + +#ifndef DWORD_READ +# define DWORD_READ(addr) (*((unsigned int volatile *)(addr))) +#endif + +#ifndef WORD_WRITE //16-bit +# define WORD_WRITE(addr,data) (*((unsigned short volatile *)(addr))=data) +#endif + +#ifndef WORD_READ +# define WORD_READ(addr) (*((unsigned short volatile *)(addr))) +#endif + +#ifndef BYTE_WRITE //8-bit +# define BYTE_WRITE(addr,data) (*((unsigned char volatile *)(addr))=data) +#endif + +#ifndef BYTE_READ +# define BYTE_READ(addr) (*((unsigned char volatile *)(addr))) +#endif + + + +/* EBI 0-3 control Registers Map */ +/*****************************/ +#define EXT0CON (Base_Addr+0x01018) +#define EXT1CON (Base_Addr+0x0101c) +#define EXT2CON (Base_Addr+0x01020) +#define EXT3CON (Base_Addr+0x01024) + +//EBI Config bits +#define SIZE_256k (0<<16) +#define SIZE_512k (1<<16) +#define SIZE_1M (2<<16) +#define SIZE_16M (6<<16) +#define SIZE_32M (7<<16) + +#define ADRS (1<<15) +#define tACC (15<<11) +#define tCOH (7<<8) +#define tACS (7<<5) +#define tCOS (7<<2) + +#define DBWD0 (2)//16-bit bus width for DoC +#define DBWD1 (1)//8-bit bus width +#define DBWD2 (1) +#define DBWD3 (1) + +#define EXT0_BASS 0x70000000 +#define EXT1_BASS 0x73000000 +#define EXT2_BASS 0x74000000 +#define EXT3_BASS 0x78000000 + + +#define EXT0CON_DATA ((EXT0_BASS<<1)|SIZE_32M|ADRS|tACC|tCOH|tACS|tCOS|DBWD0) +#define EXT1CON_DATA ((EXT1_BASS<<1)|SIZE_256k|ADRS|tACC|tCOH|tACS|tCOS|DBWD1) +#define EXT2CON_DATA ((EXT2_BASS<<1)|SIZE_256k|ADRS|tACC|tCOH|tACS|tCOS|DBWD2) +#define EXT3CON_DATA ((EXT3_BASS<<1)|SIZE_32M|ADRS|tACC|tCOH|tACS|tCOS|DBWD3) + + +//EBI Device Base address +//define for DOC +#define DOC_BASE_ADDR EXT0_BASS +//define for LCM +#define LCM_BASE_ADDR (EXT3_BASS|0x1000000) +#define PLD_BASE_ADDR (EXT3_BASS|0x80000000) +//define for W83977 +#define W83977AF_BASE_ADDR EXT1_BASS +#define W83977EF_BASE_ADDR EXT2_BASS + +//USB Host/Device Base addr +#define USB_HOST (AHB_IO_BASE+0x5000) // USB Host +#define USB_DEVICE (AHB_IO_BASE+0x6000) /* USB Device */ + + +#ifndef CSR_READ_OFFSET + #define CSR_READ_OFFSET(addr,offset) *((volatile unsigned char *)((addr)+offset)) +#endif + + + // Routines to Enable/Disable Interrupts +#define Enable_Int(n) (VPint(AIC_MECR)) = (1<<(n)) +#define Disable_Int(n) (VPint(AIC_MDCR)) = (1<<(n)) +#define Enable_Int_All() (VPint(AIC_MECR)) = 0xffff +#define Disable_Int_All() (VPint(AIC_MDCR)) = 0xffff + +//*************************************************************************** + +#endif /* __ASM_ARCH_HARDWARE_H */ |