📄 s3c4510b.h
字号:
/********************************************************//* *//* Samsung KS32C4510b *//* Mac Wang <mac@os.nctu.edu.tw> *//* *//********************************************************/#ifndef __ASM_ARCH_HARDWARE_H#define __ASM_ARCH_HARDWARE_H/* * define S3C4510b CPU master clock */#define MHz 1000000#define fMCLK_MHz (50 * MHz)#define fMCLK (fMCLK_MHz / MHz)#define MCLK2 (fMCLK_MHz / 2)/* * ASIC Address Definition */#define Base_Addr 0x3FF0000#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 SYSCFG (Base_Addr+0x0000)#define CLKCON (Base_Addr+0x3000)#define EXTACON0 (Base_Addr+0x3008)#define EXTACON1 (Base_Addr+0x300C)#define EXTDBWTH (Base_Addr+0x3010)#define ROMCON0 (Base_Addr+0x3014)#define ROMCON1 (Base_Addr+0x3018)#define ROMCON2 (Base_Addr+0x301C)#define ROMCON3 (Base_Addr+0x3020)#define ROMCON4 (Base_Addr+0x3024)#define ROMCON5 (Base_Addr+0x3028)#define DRAMCON0 (Base_Addr+0x302C)#define DRAMCON1 (Base_Addr+0x3030)#define DRAMCON2 (Base_Addr+0x3034)#define DRAMCON3 (Base_Addr+0x3038)#define REFEXTCON (Base_Addr+0x303C)/* *********************** *//* 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 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)/* ************************ *//* 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)/* ****************************** *//* Interrupt Controller Registers *//* ****************************** */#define INTMOD (Base_Addr+0x4000)#define INTPND (Base_Addr+0x4004)#define INTMSK (Base_Addr+0x4008)#define INTPRI0 (Base_Addr+0x400C)#define INTPRI1 (Base_Addr+0x4010)#define INTPRI2 (Base_Addr+0x4014)#define INTPRI3 (Base_Addr+0x4018)#define INTPRI4 (Base_Addr+0x401C)#define INTPRI5 (Base_Addr+0x4020)#define INTOFFSET (Base_Addr+0x4024)#define INTPNDTST (Base_Addr+0x402C)#define INTOSET_FIQ (Base_Addr+0x4030)#define INTOSET_IRQ (Base_Addr+0x4034)#define IntMode (VPint(INTMOD))#define IntPend (VPint(INTPND))#define IntMask (VPint(INTMSK))#define IntOffset (VPint(INTOFFSET))#define IntPndTst (VPint(INTPNDTST))#define IntOffset_FIQ (VPint(INTOSET_FIQ))#define IntOffset_IRQ (VPint(INTOSET_IRQ))#define INT_MODE_IRQ 0x000000#define INT_MODE_FIQ 0x1FFFFF#define INT_MASK_DIS 0x1FFFFF#define INT_MASK_ENA 0x000000#define INT_ENABLE(n) IntMask &= ~(1<<(n))#define INT_DISABLE(n) IntMask |= (1<<(n))#define CLEAR_PEND_INT(n) IntPend = (1<<(n))#define SET_PEND_INT(n) IntPndTst |= (1<<(n))/* ***************** *//* I2C Bus Registers *//* ***************** *//* ************** *//* GDMA Registers *//* ************** *//* ************** *//* UART Registers *//* ************** */#define DEBUG_CONSOLE (0)#define ULCON0 (Base_Addr+0xD000)#define ULCON1 (Base_Addr+0xE000)#define UCON0 (Base_Addr+0xD004)#define UCON1 (Base_Addr+0xE004)#define USTAT0 (Base_Addr+0xD008)#define USTAT1 (Base_Addr+0xE008)#define UTXBUF0 (Base_Addr+0xD00C)#define UTXBUF1 (Base_Addr+0xE00C)#define URXBUF0 (Base_Addr+0xD010)#define URXBUF1 (Base_Addr+0xE010)#define UBRDIV0 (Base_Addr+0xD014)#define UBRDIV1 (Base_Addr+0xE014)#define UART_BASE0 ULCON0#define UART_BASE1 ULCON1#if DEBUG_CONSOLE == 0#define DEBUG_TX_BUFF_BASE UTXBUF0#define DEBUG_RX_BUFF_BASE URXBUF0#define DEBUG_UARTLCON_BASE ULCON0#define DEBUG_UARTCONT_BASE UCON0#define DEBUG_UARTBRD_BASE UBRDIV0#define DEBUG_CHK_STAT_BASE USTAT0#elif DEBUG_CONSOLE == 1#define DEBUG_TX_BUFF_BASE UTXBUF1#define DEBUG_RX_BUFF_BASE URXBUF1#define DEBUG_UARTLCON_BASE ULCON1#define DEBUG_UARTCONT_BASE UCON1#define DEBUG_UARTBRD_BASE UBRDIV1#define DEBUG_CHK_STAT_BASE USTAT1#endif#define DEBUG_ULCON_REG_VAL (0x3)#define DEBUG_UCON_REG_VAL (0x9)#define DEBUG_UBRDIV_REG_VAL (0x500)#define DEBUG_RX_CHECK_BIT (0X20)#define DEBUG_TX_CAN_CHECK_BIT (0X40)#define DEBUG_TX_DONE_CHECK_BIT (0X80)/* **************** *//* Timers Registers *//* **************** */#define TMOD (Base_Addr+0x6000)#define TDATA0 (Base_Addr+0x6004)#define TDATA1 (Base_Addr+0x6008)#define TCNT0 (Base_Addr+0x600C)#define TCNT1 (Base_Addr+0x6010)/*******************//* 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 HARD_RESET_NOW()#define TMOD_TIMER0_VAL 0x3 /* Timer0 TOGGLE, and Run */#define TAG_BASE 0x11000000/********//* IRQs *//********//* taken from uclinux * linux-2.4.x/include/asm/arch-snds100/irqs.h*/#define NR_IRQS 21#define VALID_IRQ(i) (i<=8 ||(i>=16 && i<NR_IRQS))/*#define INT_EXTINT0 0x00000001#define INT_EXTINT1 0x00000002#define INT_EXTINT2 0x00000004#define INT_EXTINT3 0x00000008#define INT_UARTTX0 0x00000010#define INT_UARTRX0 0x00000020#define INT_UARTTX1 0x00000040#define INT_UARTRX1 0x00000080#define INT_GDMA0 0x00000100#define INT_GDMA1 0x00000200#define INT_TIMER0 0x00000400#define INT_TIMER1 0x00000800#define INT_HDLCTXA 0x00001000#define INT_HDLCRXA 0x00002000#define INT_HDLCTXB 0x00004000#define INT_HDLCRXB 0x00008000#define INT_BDMATX 0x00010000#define INT_BDMARX 0x00020000#define INT_MACTX 0x00040000#define INT_MACRX 0x00080000#define INT_IIC 0x00100000#define INT_GLOBAL 0x00200000*/#define INT_EXTINT0 0#define INT_EXTINT1 1#define INT_EXTINT2 2#define INT_EXTINT3 3#define INT_UARTTX0 4#define INT_UARTRX0 5#define INT_UARTTX1 6#define INT_UARTRX1 7#define INT_GDMA0 8#define INT_GDMA1 9#define INT_TIMER0 10#define INT_TIMER1 11#define INT_HDLCTXA 12#define INT_HDLCRXA 13#define INT_HDLCTXB 14#define INT_HDLCRXB 15#define INT_BDMATX 16#define INT_BDMARX 17#define INT_MACTX 18#define INT_MACRX 19#define INT_IIC 20#define INT_GLOBAL 21#define IRQ_TIMER INT_TIMER0/*add by walimis.*/#define INT_MASK_INIT 0x003FFFFF/* UART USTAT Register * taken from linux-2.4.x/include/asm/arch-snds100/serial.h */#define UART_LSR_OE 0x01 // Overrun error#define UART_LSR_PE 0x02 // Parity error#define UART_LSR_FE 0x04 // Frame error#define UART_LSR_BI 0x08 // Break detect#define UART_LSR_DTR 0x10 // Data terminal ready#define UART_LSR_DR 0x20 // Receive data ready#define UART_LSR_THRE 0x40 // Transmit buffer register empty#define UART_LSR_TEMT 0x80 // Transmit complete#endif /* __ASM_ARCH_HARDWARE_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -