forked from Miroirs/x49gp
348 lines
12 KiB
C
348 lines
12 KiB
C
/* $Id: s3c2410.h,v 1.18 2008/12/11 12:18:17 ecd Exp $
|
|
*/
|
|
|
|
#ifndef _X49GP_S3C2410_H
|
|
#define _X49GP_S3C2410_H 1
|
|
|
|
#include <x49gp_types.h>
|
|
|
|
typedef struct {
|
|
const char *name;
|
|
uint32_t reset;
|
|
uint32_t *datap;
|
|
} s3c2410_offset_t;
|
|
|
|
#define S3C2410_OFFSET(module, name, reset, data) \
|
|
[S3C2410_ ## module ## _ ## name >> 2] = { #name, reset, &(data) }
|
|
|
|
#define S3C2410_OFFSET_OK(p, offset) \
|
|
((((offset) >> 2) < (p)->nr_regs) && (p)->regs[(offset) >> 2].name)
|
|
|
|
#define S3C2410_OFFSET_ENTRY(p, offset) &((p)->regs[(offset) >> 2])
|
|
|
|
|
|
#define S3C2410_MAP_SIZE 0x00010000
|
|
|
|
|
|
#define S3C2410_SRAM_BASE 0x40000000
|
|
#define S3C2410_SRAM_SIZE 0x00001000
|
|
|
|
#define S3C2410_MEMC_BASE 0x48000000
|
|
|
|
#define S3C2410_MEMC_BWSCON 0x0000
|
|
#define S3C2410_MEMC_BANKCON0 0x0004
|
|
#define S3C2410_MEMC_BANKCON1 0x0008
|
|
#define S3C2410_MEMC_BANKCON2 0x000c
|
|
#define S3C2410_MEMC_BANKCON3 0x0010
|
|
#define S3C2410_MEMC_BANKCON4 0x0014
|
|
#define S3C2410_MEMC_BANKCON5 0x0018
|
|
#define S3C2410_MEMC_BANKCON6 0x001c
|
|
#define S3C2410_MEMC_BANKCON7 0x0020
|
|
#define S3C2410_MEMC_REFRESH 0x0024
|
|
#define S3C2410_MEMC_BANKSIZE 0x0028
|
|
#define S3C2410_MEMC_MRSRB6 0x002c
|
|
#define S3C2410_MEMC_MRSRB7 0x0030
|
|
|
|
#define S3C2410_USBHOST_BASE 0x49000000
|
|
|
|
#define S3C2410_INTC_BASE 0x4a000000
|
|
|
|
#define S3C2410_INTC_SRCPND 0x0000
|
|
#define S3C2410_INTC_INTMOD 0x0004
|
|
#define S3C2410_INTC_INTMSK 0x0008
|
|
#define S3C2410_INTC_PRIORITY 0x000c
|
|
#define S3C2410_INTC_INTPND 0x0010
|
|
#define S3C2410_INTC_INTOFFSET 0x0014
|
|
#define S3C2410_INTC_SUBSRCPND 0x0018
|
|
#define S3C2410_INTC_INTSUBMSK 0x001c
|
|
|
|
#define S3C2410_POWER_BASE 0x4c000000
|
|
|
|
#define S3C2410_POWER_LOCKTIME 0x0000
|
|
#define S3C2410_POWER_MPLLCON 0x0004
|
|
#define S3C2410_POWER_UPLLCON 0x0008
|
|
#define S3C2410_POWER_CLKCON 0x000c
|
|
#define S3C2410_POWER_CLKSLOW 0x0010
|
|
#define S3C2410_POWER_CLKDIVN 0x0014
|
|
|
|
#define S3C2410_LCD_BASE 0x4d000000
|
|
|
|
#define S3C2410_LCD_LCDCON1 0x0000
|
|
#define S3C2410_LCD_LCDCON2 0x0004
|
|
#define S3C2410_LCD_LCDCON3 0x0008
|
|
#define S3C2410_LCD_LCDCON4 0x000c
|
|
#define S3C2410_LCD_LCDCON5 0x0010
|
|
#define S3C2410_LCD_LCDSADDR1 0x0014
|
|
#define S3C2410_LCD_LCDSADDR2 0x0018
|
|
#define S3C2410_LCD_LCDSADDR3 0x001c
|
|
#define S3C2410_LCD_REDLUT 0x0020
|
|
#define S3C2410_LCD_GREENLUT 0x0024
|
|
#define S3C2410_LCD_BLUELUT 0x0028
|
|
#define S3C2410_LCD_DITHMODE 0x004c
|
|
#define S3C2410_LCD_TPAL 0x0050
|
|
#define S3C2410_LCD_LCDINTPND 0x0054
|
|
#define S3C2410_LCD_LCDSRCPND 0x0058
|
|
#define S3C2410_LCD_LCDINTMSK 0x005c
|
|
#define S3C2410_LCD_LPCSEL 0x0060
|
|
#define S3C2410_LCD_UNKNOWN_68 0x0068
|
|
|
|
#define S3C2410_LCD_PALETTE_START 0x0400
|
|
#define S3C2410_LCD_PALETTE_SIZE 0x0400
|
|
|
|
#define S3C2410_NAND_BASE 0x4e000000
|
|
|
|
#define S3C2410_NAND_NFCONF 0x0000
|
|
#define S3C2410_NAND_NFCMD 0x0004
|
|
#define S3C2410_NAND_NFADDR 0x0008
|
|
#define S3C2410_NAND_NFDATA 0x000c
|
|
#define S3C2410_NAND_NFSTAT 0x0010
|
|
#define S3C2410_NAND_NFECC 0x0014
|
|
|
|
#define S3C2410_UART0_BASE 0x50000000
|
|
#define S3C2410_UART1_BASE 0x50004000
|
|
#define S3C2410_UART2_BASE 0x50008000
|
|
|
|
#define S3C2410_UART0_ULCON 0x0000
|
|
#define S3C2410_UART0_UCON 0x0004
|
|
#define S3C2410_UART0_UFCON 0x0008
|
|
#define S3C2410_UART0_UMCON 0x000c
|
|
#define S3C2410_UART0_UTRSTAT 0x0010
|
|
#define S3C2410_UART0_UERSTAT 0x0014
|
|
#define S3C2410_UART0_UFSTAT 0x0018
|
|
#define S3C2410_UART0_UMSTAT 0x001c
|
|
#define S3C2410_UART0_UTXH 0x0020
|
|
#define S3C2410_UART0_URXH 0x0024
|
|
#define S3C2410_UART0_UBRDIV 0x0028
|
|
|
|
#define S3C2410_UART1_ULCON 0x0000
|
|
#define S3C2410_UART1_UCON 0x0004
|
|
#define S3C2410_UART1_UFCON 0x0008
|
|
#define S3C2410_UART1_UMCON 0x000c
|
|
#define S3C2410_UART1_UTRSTAT 0x0010
|
|
#define S3C2410_UART1_UERSTAT 0x0014
|
|
#define S3C2410_UART1_UFSTAT 0x0018
|
|
#define S3C2410_UART1_UMSTAT 0x001c
|
|
#define S3C2410_UART1_UTXH 0x0020
|
|
#define S3C2410_UART1_URXH 0x0024
|
|
#define S3C2410_UART1_UBRDIV 0x0028
|
|
|
|
#define S3C2410_UART2_ULCON 0x0000
|
|
#define S3C2410_UART2_UCON 0x0004
|
|
#define S3C2410_UART2_UFCON 0x0008
|
|
#define S3C2410_UART2_UTRSTAT 0x0010
|
|
#define S3C2410_UART2_UERSTAT 0x0014
|
|
#define S3C2410_UART2_UFSTAT 0x0018
|
|
#define S3C2410_UART2_UTXH 0x0020
|
|
#define S3C2410_UART2_URXH 0x0024
|
|
#define S3C2410_UART2_UBRDIV 0x0028
|
|
|
|
#define S3C2410_TIMER_BASE 0x51000000
|
|
|
|
#define S3C2410_TIMER_TCFG0 0x0000
|
|
#define S3C2410_TIMER_TCFG1 0x0004
|
|
#define S3C2410_TIMER_TCON 0x0008
|
|
#define S3C2410_TIMER_TCNTB0 0x000c
|
|
#define S3C2410_TIMER_TCMPB0 0x0010
|
|
#define S3C2410_TIMER_TCNTO0 0x0014
|
|
#define S3C2410_TIMER_TCNTB1 0x0018
|
|
#define S3C2410_TIMER_TCMPB1 0x001c
|
|
#define S3C2410_TIMER_TCNTO1 0x0020
|
|
#define S3C2410_TIMER_TCNTB2 0x0024
|
|
#define S3C2410_TIMER_TCMPB2 0x0028
|
|
#define S3C2410_TIMER_TCNTO2 0x002c
|
|
#define S3C2410_TIMER_TCNTB3 0x0030
|
|
#define S3C2410_TIMER_TCMPB3 0x0034
|
|
#define S3C2410_TIMER_TCNTO3 0x0038
|
|
#define S3C2410_TIMER_TCNTB4 0x003c
|
|
#define S3C2410_TIMER_TCNTO4 0x0040
|
|
|
|
#define S3C2410_USBDEV_BASE 0x52000000
|
|
|
|
#define S3C2410_USBDEV_FUNC_ADDR_REG 0x0140
|
|
#define S3C2410_USBDEV_PWR_REG 0x0144
|
|
#define S3C2410_USBDEV_EP_INT_REG 0x0148
|
|
#define S3C2410_USBDEV_USB_INT_REG 0x0158
|
|
#define S3C2410_USBDEV_EP_INT_EN_REG 0x015c
|
|
#define S3C2410_USBDEV_USB_INT_EN_REG 0x016c
|
|
#define S3C2410_USBDEV_FRAME_NUM1_REG 0x0170
|
|
#define S3C2410_USBDEV_FRAME_NUM2_REG 0x0174
|
|
#define S3C2410_USBDEV_INDEX_REG 0x0178
|
|
#define S3C2410_USBDEV_EP0_FIFO_REG 0x01C0
|
|
#define S3C2410_USBDEV_EP1_FIFO_REG 0x01C4
|
|
#define S3C2410_USBDEV_EP2_FIFO_REG 0x01C8
|
|
#define S3C2410_USBDEV_EP3_FIFO_REG 0x01CC
|
|
#define S3C2410_USBDEV_EP4_FIFO_REG 0x01D0
|
|
#define S3C2410_USBDEV_EP1_DMA_CON 0x0200
|
|
#define S3C2410_USBDEV_EP1_DMA_UNIT 0x0204
|
|
#define S3C2410_USBDEV_EP1_DMA_FIFO 0x0208
|
|
#define S3C2410_USBDEV_EP1_DMA_TTC_L 0x020C
|
|
#define S3C2410_USBDEV_EP1_DMA_TTC_M 0x0210
|
|
#define S3C2410_USBDEV_EP1_DMA_TTC_H 0x0214
|
|
#define S3C2410_USBDEV_EP2_DMA_CON 0x0218
|
|
#define S3C2410_USBDEV_EP2_DMA_UNIT 0x021C
|
|
#define S3C2410_USBDEV_EP2_DMA_FIFO 0x0220
|
|
#define S3C2410_USBDEV_EP2_DMA_TTC_L 0x0224
|
|
#define S3C2410_USBDEV_EP2_DMA_TTC_M 0x0228
|
|
#define S3C2410_USBDEV_EP2_DMA_TTC_H 0x022C
|
|
#define S3C2410_USBDEV_EP3_DMA_CON 0x0240
|
|
#define S3C2410_USBDEV_EP3_DMA_UNIT 0x0244
|
|
#define S3C2410_USBDEV_EP3_DMA_FIFO 0x0248
|
|
#define S3C2410_USBDEV_EP3_DMA_TTC_L 0x024C
|
|
#define S3C2410_USBDEV_EP3_DMA_TTC_M 0x0250
|
|
#define S3C2410_USBDEV_EP3_DMA_TTC_H 0x0254
|
|
#define S3C2410_USBDEV_EP4_DMA_CON 0x0258
|
|
#define S3C2410_USBDEV_EP4_DMA_UNIT 0x025C
|
|
#define S3C2410_USBDEV_EP4_DMA_FIFO 0x0260
|
|
#define S3C2410_USBDEV_EP4_DMA_TTC_L 0x0264
|
|
#define S3C2410_USBDEV_EP4_DMA_TTC_M 0x0268
|
|
#define S3C2410_USBDEV_EP4_DMA_TTC_H 0x026C
|
|
#define S3C2410_USBDEV_MAXP_REG_WRONG 0x0180
|
|
#define S3C2410_USBDEV_IN_CSR1_REG_EP0_CSR 0x0184
|
|
#define S3C2410_USBDEV_IN_CSR2_REG 0x0188
|
|
#define S3C2410_USBDEV_MAXP_REG 0x018c
|
|
#define S3C2410_USBDEV_OUT_CSR1_REG 0x0190
|
|
#define S3C2410_USBDEV_OUT_CSR2_REG 0x0194
|
|
#define S3C2410_USBDEV_OUT_FIFO_CNT1_REG 0x0198
|
|
#define S3C2410_USBDEV_OUT_FIFO_CNT2_REG 0x019C
|
|
|
|
#define S3C2410_WATCHDOG_BASE 0x53000000
|
|
|
|
#define S3C2410_WATCHDOG_WTCON 0x0000
|
|
#define S3C2410_WATCHDOG_WTDAT 0x0004
|
|
#define S3C2410_WATCHDOG_WTCNT 0x0008
|
|
|
|
#define S3C2410_IO_PORT_BASE 0x56000000
|
|
|
|
#define S3C2410_IO_PORT_GPACON 0x0000
|
|
#define S3C2410_IO_PORT_GPADAT 0x0004
|
|
#define S3C2410_IO_PORT_GPBCON 0x0010
|
|
#define S3C2410_IO_PORT_GPBDAT 0x0014
|
|
#define S3C2410_IO_PORT_GPBUP 0x0018
|
|
#define S3C2410_IO_PORT_GPCCON 0x0020
|
|
#define S3C2410_IO_PORT_GPCDAT 0x0024
|
|
#define S3C2410_IO_PORT_GPCUP 0x0028
|
|
#define S3C2410_IO_PORT_GPDCON 0x0030
|
|
#define S3C2410_IO_PORT_GPDDAT 0x0034
|
|
#define S3C2410_IO_PORT_GPDUP 0x0038
|
|
#define S3C2410_IO_PORT_GPECON 0x0040
|
|
#define S3C2410_IO_PORT_GPEDAT 0x0044
|
|
#define S3C2410_IO_PORT_GPEUP 0x0048
|
|
#define S3C2410_IO_PORT_GPFCON 0x0050
|
|
#define S3C2410_IO_PORT_GPFDAT 0x0054
|
|
#define S3C2410_IO_PORT_GPFUP 0x0058
|
|
#define S3C2410_IO_PORT_GPGCON 0x0060
|
|
#define S3C2410_IO_PORT_GPGDAT 0x0064
|
|
#define S3C2410_IO_PORT_GPGUP 0x0068
|
|
#define S3C2410_IO_PORT_GPHCON 0x0070
|
|
#define S3C2410_IO_PORT_GPHDAT 0x0074
|
|
#define S3C2410_IO_PORT_GPHUP 0x0078
|
|
#define S3C2410_IO_PORT_MISCCR 0x0080
|
|
#define S3C2410_IO_PORT_DCLKCON 0x0084
|
|
#define S3C2410_IO_PORT_EXTINT0 0x0088
|
|
#define S3C2410_IO_PORT_EXTINT1 0x008c
|
|
#define S3C2410_IO_PORT_EXTINT2 0x0090
|
|
#define S3C2410_IO_PORT_EINTFLT0 0x0094
|
|
#define S3C2410_IO_PORT_EINTFLT1 0x0098
|
|
#define S3C2410_IO_PORT_EINTFLT2 0x009c
|
|
#define S3C2410_IO_PORT_EINTFLT3 0x00a0
|
|
#define S3C2410_IO_PORT_EINTMASK 0x00a4
|
|
#define S3C2410_IO_PORT_EINTPEND 0x00a8
|
|
#define S3C2410_IO_PORT_GSTATUS0 0x00ac
|
|
#define S3C2410_IO_PORT_GSTATUS1 0x00b0
|
|
#define S3C2410_IO_PORT_GSTATUS2 0x00b4
|
|
#define S3C2410_IO_PORT_GSTATUS3 0x00b8
|
|
#define S3C2410_IO_PORT_GSTATUS4 0x00bc
|
|
|
|
#define S3C2410_RTC_BASE 0x57000000
|
|
|
|
#define S3C2410_RTC_RTCCON 0x0040
|
|
#define S3C2410_RTC_TICNT 0x0044
|
|
#define S3C2410_RTC_RTCALM 0x0050
|
|
#define S3C2410_RTC_ALMSEC 0x0054
|
|
#define S3C2410_RTC_ALMMIN 0x0058
|
|
#define S3C2410_RTC_ALMHOUR 0x005c
|
|
#define S3C2410_RTC_ALMDATE 0x0060
|
|
#define S3C2410_RTC_ALMMON 0x0064
|
|
#define S3C2410_RTC_ALMYEAR 0x0068
|
|
#define S3C2410_RTC_RTCRST 0x006c
|
|
#define S3C2410_RTC_BCDSEC 0x0070
|
|
#define S3C2410_RTC_BCDMIN 0x0074
|
|
#define S3C2410_RTC_BCDHOUR 0x0078
|
|
#define S3C2410_RTC_BCDDATE 0x007c
|
|
#define S3C2410_RTC_BCDDAY 0x0080
|
|
#define S3C2410_RTC_BCDMON 0x0084
|
|
#define S3C2410_RTC_BCDYEAR 0x0088
|
|
|
|
#define S3C2410_ADC_BASE 0x58000000
|
|
|
|
#define S3C2410_ADC_ADCCON 0x0000
|
|
#define S3C2410_ADC_ADCTSC 0x0004
|
|
#define S3C2410_ADC_ADCDLY 0x0008
|
|
#define S3C2410_ADC_ADCDAT0 0x000c
|
|
#define S3C2410_ADC_ADCDAT1 0x0010
|
|
|
|
#define S3C2410_SPI_BASE 0x59000000
|
|
|
|
#define S3C2410_SPI_SPICON0 0x0000
|
|
#define S3C2410_SPI_SPISTA0 0x0004
|
|
#define S3C2410_SPI_SPPIN0 0x0008
|
|
#define S3C2410_SPI_SPPRE0 0x000c
|
|
#define S3C2410_SPI_SPTDAT0 0x0010
|
|
#define S3C2410_SPI_SPRDAT0 0x0014
|
|
#define S3C2410_SPI_SPICON1 0x0020
|
|
#define S3C2410_SPI_SPISTA1 0x0024
|
|
#define S3C2410_SPI_SPPIN1 0x0028
|
|
#define S3C2410_SPI_SPPRE1 0x002c
|
|
#define S3C2410_SPI_SPTDAT1 0x0030
|
|
#define S3C2410_SPI_SPRDAT1 0x0034
|
|
|
|
#define S3C2410_SDI_BASE 0x5a000000
|
|
|
|
#define S3C2410_SDI_SDICON 0x0000
|
|
#define S3C2410_SDI_SDIPRE 0x0004
|
|
#define S3C2410_SDI_SDICARG 0x0008
|
|
#define S3C2410_SDI_SDICCON 0x000c
|
|
#define S3C2410_SDI_SDICSTA 0x0010
|
|
#define S3C2410_SDI_SDIRSP0 0x0014
|
|
#define S3C2410_SDI_SDIRSP1 0x0018
|
|
#define S3C2410_SDI_SDIRSP2 0x001c
|
|
#define S3C2410_SDI_SDIRSP3 0x0020
|
|
#define S3C2410_SDI_SDIDTIMER 0x0024
|
|
#define S3C2410_SDI_SDIBSIZE 0x0028
|
|
#define S3C2410_SDI_SDIDCON 0x002c
|
|
#define S3C2410_SDI_SDIDCNT 0x0030
|
|
#define S3C2410_SDI_SDIDSTA 0x0034
|
|
#define S3C2410_SDI_SDIFSTA 0x0038
|
|
#define S3C2410_SDI_SDIDAT 0x003c
|
|
#define S3C2410_SDI_SDIIMSK 0x0040
|
|
|
|
|
|
extern int x49gp_s3c2410_init(x49gp_t *x49gp);
|
|
extern int x49gp_s3c2410_arm_init(x49gp_t *x49gp);
|
|
extern int x49gp_s3c2410_mmu_init(x49gp_t *x49gp);
|
|
extern int x49gp_s3c2410_sram_init(x49gp_t *x49gp);
|
|
extern int x49gp_s3c2410_memc_init(x49gp_t *x49gp);
|
|
extern int x49gp_s3c2410_intc_init(x49gp_t *x49gp);
|
|
extern int x49gp_s3c2410_power_init(x49gp_t *x49gp);
|
|
extern int x49gp_s3c2410_lcd_init(x49gp_t *x49gp);
|
|
extern int x49gp_s3c2410_nand_init(x49gp_t *x49gp);
|
|
extern int x49gp_s3c2410_uart_init(x49gp_t *x49gp);
|
|
extern int x49gp_s3c2410_timer_init(x49gp_t *x49gp);
|
|
extern int x49gp_s3c2410_usbdev_init(x49gp_t *x49gp);
|
|
extern int x49gp_s3c2410_watchdog_init(x49gp_t *x49gp);
|
|
extern int x49gp_s3c2410_io_port_init(x49gp_t *x49gp);
|
|
extern int x49gp_s3c2410_rtc_init(x49gp_t *x49gp);
|
|
extern int x49gp_s3c2410_adc_init(x49gp_t *x49gp);
|
|
extern int x49gp_s3c2410_spi_init(x49gp_t *x49gp);
|
|
extern int x49gp_s3c2410_sdi_init(x49gp_t *x49gp);
|
|
|
|
extern void s3c2410_io_port_g_set_bit(x49gp_t *x49gp, int n, uint32_t set);
|
|
extern void s3c2410_io_port_f_set_bit(x49gp_t *x49gp, int n, uint32_t set);
|
|
|
|
extern void x49gp_schedule_lcd_update(x49gp_t *x49gp);
|
|
extern void x49gp_lcd_update(x49gp_t *x49gp);
|
|
|
|
extern unsigned long s3c2410_timer_next_interrupt(x49gp_t *x49gp);
|
|
extern unsigned long s3c2410_watchdog_next_interrupt(x49gp_t *x49gp);
|
|
|
|
#endif /* !(_X49GP_S3C2410_H) */
|