📄 s3c24x0.h
字号:
/* * (C) Copyright 2003 * David M黮ler ELSOFT AG Switzerland. d.mueller@elsoft.ch * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA *//************************************************ * NAME : s3c24x0.h * Version : 31.3.2003 * * common stuff for SAMSUNG S3C24X0 SoC ************************************************/#ifndef __S3C24X0_H__#define __S3C24X0_H__typedef volatile u8 S3C24X0_REG8;typedef volatile u16 S3C24X0_REG16;typedef volatile u32 S3C24X0_REG32;/* Memory controller (see manual chapter 5) */typedef struct { S3C24X0_REG32 BWSCON; S3C24X0_REG32 BANKCON[8]; S3C24X0_REG32 REFRESH; S3C24X0_REG32 BANKSIZE; S3C24X0_REG32 MRSRB6; S3C24X0_REG32 MRSRB7;} /*__attribute__((__packed__))*/ S3C24X0_MEMCTL;/* USB HOST (see manual chapter 12) */typedef struct { S3C24X0_REG32 HcRevision; S3C24X0_REG32 HcControl; S3C24X0_REG32 HcCommonStatus; S3C24X0_REG32 HcInterruptStatus; S3C24X0_REG32 HcInterruptEnable; S3C24X0_REG32 HcInterruptDisable; S3C24X0_REG32 HcHCCA; S3C24X0_REG32 HcPeriodCuttendED; S3C24X0_REG32 HcControlHeadED; S3C24X0_REG32 HcControlCurrentED; S3C24X0_REG32 HcBulkHeadED; S3C24X0_REG32 HcBuldCurrentED; S3C24X0_REG32 HcDoneHead; S3C24X0_REG32 HcRmInterval; S3C24X0_REG32 HcFmRemaining; S3C24X0_REG32 HcFmNumber; S3C24X0_REG32 HcPeriodicStart; S3C24X0_REG32 HcLSThreshold; S3C24X0_REG32 HcRhDescriptorA; S3C24X0_REG32 HcRhDescriptorB; S3C24X0_REG32 HcRhStatus; S3C24X0_REG32 HcRhPortStatus1; S3C24X0_REG32 HcRhPortStatus2;} /*__attribute__((__packed__))*/ S3C24X0_USB_HOST;/* INTERRUPT (see manual chapter 14) */typedef struct { S3C24X0_REG32 SRCPND; S3C24X0_REG32 INTMOD; S3C24X0_REG32 INTMSK; S3C24X0_REG32 PRIORITY; S3C24X0_REG32 INTPND; S3C24X0_REG32 INTOFFSET;#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) S3C24X0_REG32 SUBSRCPND; S3C24X0_REG32 INTSUBMSK;#endif} /*__attribute__((__packed__))*/ S3C24X0_INTERRUPT;/* DMAS (see manual chapter 8) */typedef struct { S3C24X0_REG32 DISRC;#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) S3C24X0_REG32 DISRCC;#endif S3C24X0_REG32 DIDST;#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) S3C24X0_REG32 DIDSTC;#endif S3C24X0_REG32 DCON; S3C24X0_REG32 DSTAT; S3C24X0_REG32 DCSRC; S3C24X0_REG32 DCDST; S3C24X0_REG32 DMASKTRIG;#ifdef CONFIG_S3C2400 S3C24X0_REG32 res[1];#endif#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) S3C24X0_REG32 res[7];#endif} /*__attribute__((__packed__))*/ S3C24X0_DMA;typedef struct { S3C24X0_DMA dma[4];} /*__attribute__((__packed__))*/ S3C24X0_DMAS;/* CLOCK & POWER MANAGEMENT (see S3C2400 manual chapter 6) *//* (see S3C2410 manual chapter 7) */typedef struct { S3C24X0_REG32 LOCKTIME; S3C24X0_REG32 MPLLCON; S3C24X0_REG32 UPLLCON; S3C24X0_REG32 CLKCON; S3C24X0_REG32 CLKSLOW; S3C24X0_REG32 CLKDIVN;#ifdef CONFIG_S3C2440 S3C24X0_REG32 CAMDIVN;#endif} /*__attribute__((__packed__))*/ S3C24X0_CLOCK_POWER;/* LCD CONTROLLER (see manual chapter 15) */typedef struct { S3C24X0_REG32 LCDCON1; S3C24X0_REG32 LCDCON2; S3C24X0_REG32 LCDCON3; S3C24X0_REG32 LCDCON4; S3C24X0_REG32 LCDCON5; S3C24X0_REG32 LCDSADDR1; S3C24X0_REG32 LCDSADDR2; S3C24X0_REG32 LCDSADDR3; S3C24X0_REG32 REDLUT; S3C24X0_REG32 GREENLUT; S3C24X0_REG32 BLUELUT; S3C24X0_REG32 res[8]; S3C24X0_REG32 DITHMODE; S3C24X0_REG32 TPAL;#if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440) S3C24X0_REG32 LCDINTPND; S3C24X0_REG32 LCDSRCPND; S3C24X0_REG32 LCDINTMSK; S3C24X0_REG32 LPCSEL;#endif} /*__attribute__((__packed__))*/ S3C24X0_LCD;#if defined(CONFIG_S3C2410)/* NAND FLASH (see S3C2410 manual chapter 6) */typedef struct { S3C24X0_REG32 NFCONF; S3C24X0_REG32 NFCMD; S3C24X0_REG32 NFADDR; S3C24X0_REG32 NFDATA; S3C24X0_REG32 NFSTAT; S3C24X0_REG32 NFECC;} /*__attribute__((__packed__))*/ S3C2410_NAND;#elif defined(CONFIG_S3C2440)/* NAND FLASH (see S3C2440 manual chapter 6) */typedef struct { S3C24X0_REG32 NFCONF; S3C24X0_REG32 NFCONT; S3C24X0_REG32 NFCMD; S3C24X0_REG32 NFADDR; S3C24X0_REG32 NFDATA; S3C24X0_REG32 NFMECCD0; S3C24X0_REG32 NFMECCD1; S3C24X0_REG32 NFSECCD; S3C24X0_REG32 NFSTAT; S3C24X0_REG32 NFESTAT0; S3C24X0_REG32 NFESTAT1; S3C24X0_REG32 NFMECC0; S3C24X0_REG32 NFMECC1; S3C24X0_REG32 NFSECC; S3C24X0_REG32 NFSBLK; S3C24X0_REG32 NFEBLK;} /*__attribute__((__packed__))*/ S3C2440_NAND;#endif/* UART (see manual chapter 11) */typedef struct { S3C24X0_REG32 ULCON; S3C24X0_REG32 UCON; S3C24X0_REG32 UFCON; S3C24X0_REG32 UMCON; S3C24X0_REG32 UTRSTAT; S3C24X0_REG32 UERSTAT; S3C24X0_REG32 UFSTAT; S3C24X0_REG32 UMSTAT;#ifdef __BIG_ENDIAN S3C24X0_REG8 res1[3]; S3C24X0_REG8 UTXH; S3C24X0_REG8 res2[3]; S3C24X0_REG8 URXH;#else /* Little Endian */ S3C24X0_REG8 UTXH; S3C24X0_REG8 res1[3]; S3C24X0_REG8 URXH; S3C24X0_REG8 res2[3];#endif S3C24X0_REG32 UBRDIV;} /*__attribute__((__packed__))*/ S3C24X0_UART;/* PWM TIMER (see manual chapter 10) */typedef struct { S3C24X0_REG32 TCNTB; S3C24X0_REG32 TCMPB; S3C24X0_REG32 TCNTO;} /*__attribute__((__packed__))*/ S3C24X0_TIMER;typedef struct { S3C24X0_REG32 TCFG0; S3C24X0_REG32 TCFG1; S3C24X0_REG32 TCON; S3C24X0_TIMER ch[4]; S3C24X0_REG32 TCNTB4; S3C24X0_REG32 TCNTO4;} /*__attribute__((__packed__))*/ S3C24X0_TIMERS;/* USB DEVICE (see manual chapter 13) */typedef struct {#ifdef __BIG_ENDIAN S3C24X0_REG8 res[3]; S3C24X0_REG8 EP_FIFO_REG;#else /* little endian */ S3C24X0_REG8 EP_FIFO_REG; S3C24X0_REG8 res[3];#endif} /*__attribute__((__packed__))*/ S3C24X0_USB_DEV_FIFOS;typedef struct {#ifdef __BIG_ENDIAN S3C24X0_REG8 res1[3]; S3C24X0_REG8 EP_DMA_CON; S3C24X0_REG8 res2[3]; S3C24X0_REG8 EP_DMA_UNIT; S3C24X0_REG8 res3[3]; S3C24X0_REG8 EP_DMA_FIFO; S3C24X0_REG8 res4[3]; S3C24X0_REG8 EP_DMA_TTC_L; S3C24X0_REG8 res5[3]; S3C24X0_REG8 EP_DMA_TTC_M; S3C24X0_REG8 res6[3]; S3C24X0_REG8 EP_DMA_TTC_H;#else /* little endian */ S3C24X0_REG8 EP_DMA_CON; S3C24X0_REG8 res1[3]; S3C24X0_REG8 EP_DMA_UNIT; S3C24X0_REG8 res2[3]; S3C24X0_REG8 EP_DMA_FIFO; S3C24X0_REG8 res3[3]; S3C24X0_REG8 EP_DMA_TTC_L; S3C24X0_REG8 res4[3]; S3C24X0_REG8 EP_DMA_TTC_M; S3C24X0_REG8 res5[3]; S3C24X0_REG8 EP_DMA_TTC_H; S3C24X0_REG8 res6[3];#endif} /*__attribute__((__packed__))*/ S3C24X0_USB_DEV_DMAS;typedef struct {#ifdef __BIG_ENDIAN S3C24X0_REG8 res1[3]; S3C24X0_REG8 FUNC_ADDR_REG; S3C24X0_REG8 res2[3]; S3C24X0_REG8 PWR_REG; S3C24X0_REG8 res3[3]; S3C24X0_REG8 EP_INT_REG; S3C24X0_REG8 res4[15]; S3C24X0_REG8 USB_INT_REG; S3C24X0_REG8 res5[3]; S3C24X0_REG8 EP_INT_EN_REG; S3C24X0_REG8 res6[15]; S3C24X0_REG8 USB_INT_EN_REG; S3C24X0_REG8 res7[3]; S3C24X0_REG8 FRAME_NUM1_REG; S3C24X0_REG8 res8[3]; S3C24X0_REG8 FRAME_NUM2_REG; S3C24X0_REG8 res9[3]; S3C24X0_REG8 INDEX_REG; S3C24X0_REG8 res10[7]; S3C24X0_REG8 MAXP_REG; S3C24X0_REG8 res11[3]; S3C24X0_REG8 EP0_CSR_IN_CSR1_REG; S3C24X0_REG8 res12[3]; S3C24X0_REG8 IN_CSR2_REG; S3C24X0_REG8 res13[7]; S3C24X0_REG8 OUT_CSR1_REG; S3C24X0_REG8 res14[3]; S3C24X0_REG8 OUT_CSR2_REG; S3C24X0_REG8 res15[3]; S3C24X0_REG8 OUT_FIFO_CNT1_REG; S3C24X0_REG8 res16[3]; S3C24X0_REG8 OUT_FIFO_CNT2_REG;#else /* little endian */ S3C24X0_REG8 FUNC_ADDR_REG; /* 140 */ S3C24X0_REG8 res1[3]; S3C24X0_REG8 PWR_REG; /* 144 */ S3C24X0_REG8 res2[3]; S3C24X0_REG8 EP_INT_REG; /* 148 */ S3C24X0_REG8 res3[15]; S3C24X0_REG8 USB_INT_REG; /* 158 */ S3C24X0_REG8 res4[3]; S3C24X0_REG8 EP_INT_EN_REG; /* 15c */ S3C24X0_REG8 res5[15]; S3C24X0_REG8 USB_INT_EN_REG; /* 16c */ S3C24X0_REG8 res6[3]; S3C24X0_REG8 FRAME_NUM1_REG; /* 170 */ S3C24X0_REG8 res7[3]; S3C24X0_REG8 FRAME_NUM2_REG; /* 174 */ S3C24X0_REG8 res8[3]; S3C24X0_REG8 INDEX_REG; /* 178 */ S3C24X0_REG8 res9[7]; S3C24X0_REG8 MAXP_REG; /* 180 *//* S3C24X0_REG8 res10[7]; */ S3C24X0_REG8 res10[3]; S3C24X0_REG8 EP0_CSR_IN_CSR1_REG; /* 184 */ S3C24X0_REG8 res11[3]; S3C24X0_REG8 IN_CSR2_REG; /* 188 *//* S3C24X0_REG8 res12[3]; */ S3C24X0_REG8 res12[7]; S3C24X0_REG8 OUT_CSR1_REG; /* 190 *//* S3C24X0_REG8 res13[7]; */ S3C24X0_REG8 res13[3]; S3C24X0_REG8 OUT_CSR2_REG; /* 194 */ S3C24X0_REG8 res14[3]; S3C24X0_REG8 OUT_FIFO_CNT1_REG; /* 198 */ S3C24X0_REG8 res15[3]; S3C24X0_REG8 OUT_FIFO_CNT2_REG; /* 19c */ S3C24X0_REG8 res16[3];#endif /* __BIG_ENDIAN */ S3C24X0_REG8 res17[0x20]; S3C24X0_USB_DEV_FIFOS fifo[5]; /* 1C0 */ S3C24X0_REG8 res18[0x2c]; S3C24X0_USB_DEV_DMAS dma[5]; /* 200 */} /*__attribute__((__packed__))*/ S3C24X0_USB_DEVICE;/* WATCH DOG TIMER (see manual chapter 18) */typedef struct { S3C24X0_REG32 WTCON; S3C24X0_REG32 WTDAT; S3C24X0_REG32 WTCNT;} /*__attribute__((__packed__))*/ S3C24X0_WATCHDOG;/* IIC (see manual chapter 20) */typedef struct { S3C24X0_REG32 IICCON; S3C24X0_REG32 IICSTAT; S3C24X0_REG32 IICADD; S3C24X0_REG32 IICDS;} /*__attribute__((__packed__))*/ S3C24X0_I2C;/* IIS (see manual chapter 21) */typedef struct {#ifdef __BIG_ENDIAN S3C24X0_REG16 res1; S3C24X0_REG16 IISCON; S3C24X0_REG16 res2; S3C24X0_REG16 IISMOD; S3C24X0_REG16 res3; S3C24X0_REG16 IISPSR; S3C24X0_REG16 res4; S3C24X0_REG16 IISFCON; S3C24X0_REG16 res5; S3C24X0_REG16 IISFIFO;#else /* little endian */ S3C24X0_REG16 IISCON; S3C24X0_REG16 res1; S3C24X0_REG16 IISMOD; S3C24X0_REG16 res2; S3C24X0_REG16 IISPSR; S3C24X0_REG16 res3; S3C24X0_REG16 IISFCON; S3C24X0_REG16 res4; S3C24X0_REG16 IISFIFO; S3C24X0_REG16 res5;#endif} /*__attribute__((__packed__))*/ S3C24X0_I2S;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -