3 * David Müller ELSOFT AG Switzerland. d.mueller@elsoft.ch
5 * SPDX-License-Identifier: GPL-2.0+
8 /************************************************
12 * common stuff for SAMSUNG S3C24X0 SoC
13 ************************************************/
18 /* Memory controller (see manual chapter 5) */
19 struct s3c24x0_memctl {
29 /* USB HOST (see manual chapter 12) */
30 struct s3c24x0_usb_host {
34 u32 HcInterruptStatus;
35 u32 HcInterruptEnable;
36 u32 HcInterruptDisable;
38 u32 HcPeriodCuttendED;
40 u32 HcControlCurrentED;
57 /* INTERRUPT (see manual chapter 14) */
58 struct s3c24x0_interrupt {
65 #if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
72 /* DMAS (see manual chapter 8) */
75 #if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
79 #if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
87 #if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) \
88 || defined(CONFIG_S3C2440)
94 struct s3c24x0_dma dma[4];
98 /* CLOCK & POWER MANAGEMENT (see S3C2400 manual chapter 6) */
99 /* (see S3C2410 manual chapter 7) */
100 struct s3c24x0_clock_power {
107 #if defined(CONFIG_S3C2440)
113 /* LCD CONTROLLER (see manual chapter 15) */
129 #if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
138 #ifdef CONFIG_S3C2410
139 /* NAND FLASH (see S3C2410 manual chapter 6) */
140 struct s3c2410_nand {
149 #ifdef CONFIG_S3C2440
150 /* NAND FLASH (see S3C2440 manual chapter 6) */
151 struct s3c2440_nand {
167 /* UART (see manual chapter 11) */
168 struct s3c24x0_uart {
182 #else /* Little Endian */
192 /* PWM TIMER (see manual chapter 10) */
193 struct s3c24x0_timer {
199 struct s3c24x0_timers {
203 struct s3c24x0_timer ch[4];
209 /* USB DEVICE (see manual chapter 13) */
210 struct s3c24x0_usb_dev_fifos {
214 #else /* little endian */
220 struct s3c24x0_usb_dev_dmas {
234 #else /* little endian */
250 struct s3c24x0_usb_device {
273 u8 ep0_csr_in_csr1_reg;
281 u8 out_fifo_cnt1_reg;
283 u8 out_fifo_cnt2_reg;
284 #else /* little endian */
305 u8 ep0_csr_in_csr1_reg;
313 u8 out_fifo_cnt1_reg;
315 u8 out_fifo_cnt2_reg;
317 #endif /* __BIG_ENDIAN */
318 struct s3c24x0_usb_dev_fifos fifo[5];
319 struct s3c24x0_usb_dev_dmas dma[5];
323 /* WATCH DOG TIMER (see manual chapter 18) */
324 struct s3c24x0_watchdog {
330 /* IIS (see manual chapter 21) */
343 #else /* little endian */
358 /* I/O PORT (see manual chapter 9) */
359 struct s3c24x0_gpio {
360 #ifdef CONFIG_S3C2400
393 #ifdef CONFIG_S3C2410
443 #if defined(CONFIG_S3C2440)
505 /* RTC (see manual chapter 17) */
542 #else /* little endian */
582 /* ADC (see manual chapter 16) */
589 /* ADC (see manual chapter 16) */
599 /* SPI (see manual chapter 22) */
600 struct s3c24x0_spi_channel {
617 struct s3c24x0_spi_channel ch[S3C24X0_SPI_CHANNELS];
621 /* MMC INTERFACE (see S3C2400 manual chapter 19) */
677 /* SD INTERFACE (see S3C2410 manual chapter 19) */
694 #ifdef CONFIG_S3C2410
703 #ifdef CONFIG_CMD_MMC
705 int s3cmmc_initialize(bd_t *bis, int (*getcd)(struct mmc *),
706 int (*getwp)(struct mmc *));
709 #endif /*__S3C24X0_H__*/