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 /* NAND FLASH (see manual chapter 6) */
139 struct s3c24x0_nand {
141 #ifndef CONFIG_S3C2410
147 #ifndef CONFIG_S3C2410
153 #ifdef CONFIG_S3C2410
166 /* UART (see manual chapter 11) */
167 struct s3c24x0_uart {
181 #else /* Little Endian */
191 /* PWM TIMER (see manual chapter 10) */
192 struct s3c24x0_timer {
198 struct s3c24x0_timers {
202 struct s3c24x0_timer ch[4];
208 /* USB DEVICE (see manual chapter 13) */
209 struct s3c24x0_usb_dev_fifos {
213 #else /* little endian */
219 struct s3c24x0_usb_dev_dmas {
233 #else /* little endian */
249 struct s3c24x0_usb_device {
272 u8 ep0_csr_in_csr1_reg;
280 u8 out_fifo_cnt1_reg;
282 u8 out_fifo_cnt2_reg;
283 #else /* little endian */
304 u8 ep0_csr_in_csr1_reg;
312 u8 out_fifo_cnt1_reg;
314 u8 out_fifo_cnt2_reg;
316 #endif /* __BIG_ENDIAN */
317 struct s3c24x0_usb_dev_fifos fifo[5];
318 struct s3c24x0_usb_dev_dmas dma[5];
322 /* WATCH DOG TIMER (see manual chapter 18) */
323 struct s3c24x0_watchdog {
329 /* IIS (see manual chapter 21) */
342 #else /* little endian */
357 /* I/O PORT (see manual chapter 9) */
358 struct s3c24x0_gpio {
359 #ifdef CONFIG_S3C2400
392 #ifdef CONFIG_S3C2410
442 #if defined(CONFIG_S3C2440)
504 /* RTC (see manual chapter 17) */
541 #else /* little endian */
581 /* ADC (see manual chapter 16) */
588 /* ADC (see manual chapter 16) */
598 /* SPI (see manual chapter 22) */
599 struct s3c24x0_spi_channel {
616 struct s3c24x0_spi_channel ch[S3C24X0_SPI_CHANNELS];
620 /* MMC INTERFACE (see S3C2400 manual chapter 19) */
676 /* SD INTERFACE (see S3C2410 manual chapter 19) */
693 #ifdef CONFIG_S3C2410
702 #ifdef CONFIG_CMD_MMC
704 int s3cmmc_initialize(bd_t *bis, int (*getcd)(struct mmc *),
705 int (*getwp)(struct mmc *));
708 #endif /*__S3C24X0_H__*/