3 * David Müller ELSOFT AG Switzerland. d.mueller@elsoft.ch
5 * See file CREDITS for list of people who contributed to this
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License as
10 * published by the Free Software Foundation; either version 2 of
11 * the License, or (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
24 /************************************************
28 * common stuff for SAMSUNG S3C24X0 SoC
29 ************************************************/
34 /* Memory controller (see manual chapter 5) */
35 struct s3c24x0_memctl {
45 /* USB HOST (see manual chapter 12) */
46 struct s3c24x0_usb_host {
50 u32 HcInterruptStatus;
51 u32 HcInterruptEnable;
52 u32 HcInterruptDisable;
54 u32 HcPeriodCuttendED;
56 u32 HcControlCurrentED;
73 /* INTERRUPT (see manual chapter 14) */
74 struct s3c24x0_interrupt {
81 #if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
88 /* DMAS (see manual chapter 8) */
91 #if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
95 #if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
103 #if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) \
104 || defined(CONFIG_S3C2440)
109 struct s3c24x0_dmas {
110 struct s3c24x0_dma dma[4];
114 /* CLOCK & POWER MANAGEMENT (see S3C2400 manual chapter 6) */
115 /* (see S3C2410 manual chapter 7) */
116 struct s3c24x0_clock_power {
123 #if defined(CONFIG_S3C2440)
129 /* LCD CONTROLLER (see manual chapter 15) */
145 #if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
154 #ifdef CONFIG_S3C2410
155 /* NAND FLASH (see S3C2410 manual chapter 6) */
156 struct s3c2410_nand {
165 #ifdef CONFIG_S3C2440
166 /* NAND FLASH (see S3C2440 manual chapter 6) */
167 struct s3c2440_nand {
183 /* UART (see manual chapter 11) */
184 struct s3c24x0_uart {
198 #else /* Little Endian */
208 /* PWM TIMER (see manual chapter 10) */
209 struct s3c24x0_timer {
215 struct s3c24x0_timers {
219 struct s3c24x0_timer ch[4];
225 /* USB DEVICE (see manual chapter 13) */
226 struct s3c24x0_usb_dev_fifos {
230 #else /* little endian */
236 struct s3c24x0_usb_dev_dmas {
250 #else /* little endian */
266 struct s3c24x0_usb_device {
289 u8 ep0_csr_in_csr1_reg;
297 u8 out_fifo_cnt1_reg;
299 u8 out_fifo_cnt2_reg;
300 #else /* little endian */
321 u8 ep0_csr_in_csr1_reg;
329 u8 out_fifo_cnt1_reg;
331 u8 out_fifo_cnt2_reg;
333 #endif /* __BIG_ENDIAN */
334 struct s3c24x0_usb_dev_fifos fifo[5];
335 struct s3c24x0_usb_dev_dmas dma[5];
339 /* WATCH DOG TIMER (see manual chapter 18) */
340 struct s3c24x0_watchdog {
347 /* IIC (see manual chapter 20) */
356 /* IIS (see manual chapter 21) */
369 #else /* little endian */
384 /* I/O PORT (see manual chapter 9) */
385 struct s3c24x0_gpio {
386 #ifdef CONFIG_S3C2400
419 #ifdef CONFIG_S3C2410
469 #if defined(CONFIG_S3C2440)
531 /* RTC (see manual chapter 17) */
568 #else /* little endian */
608 /* ADC (see manual chapter 16) */
615 /* ADC (see manual chapter 16) */
625 /* SPI (see manual chapter 22) */
626 struct s3c24x0_spi_channel {
643 struct s3c24x0_spi_channel ch[S3C24X0_SPI_CHANNELS];
647 /* MMC INTERFACE (see S3C2400 manual chapter 19) */
703 /* SD INTERFACE (see S3C2410 manual chapter 19) */
730 #endif /*__S3C24X0_H__*/