]> git.sur5r.net Git - u-boot/blob - arch/arm/include/asm/arch-s3c24x0/s3c24x0.h
Merge http://git.denx.de/u-boot-dm
[u-boot] / arch / arm / include / asm / arch-s3c24x0 / s3c24x0.h
1 /*
2  * (C) Copyright 2003
3  * David Müller ELSOFT AG Switzerland. d.mueller@elsoft.ch
4  *
5  * SPDX-License-Identifier:     GPL-2.0+
6  */
7
8 /************************************************
9  * NAME     : s3c24x0.h
10  * Version  : 31.3.2003
11  *
12  * common stuff for SAMSUNG S3C24X0 SoC
13  ************************************************/
14
15 #ifndef __S3C24X0_H__
16 #define __S3C24X0_H__
17
18 /* Memory controller (see manual chapter 5) */
19 struct s3c24x0_memctl {
20         u32     bwscon;
21         u32     bankcon[8];
22         u32     refresh;
23         u32     banksize;
24         u32     mrsrb6;
25         u32     mrsrb7;
26 };
27
28
29 /* USB HOST (see manual chapter 12) */
30 struct s3c24x0_usb_host {
31         u32     HcRevision;
32         u32     HcControl;
33         u32     HcCommonStatus;
34         u32     HcInterruptStatus;
35         u32     HcInterruptEnable;
36         u32     HcInterruptDisable;
37         u32     HcHCCA;
38         u32     HcPeriodCuttendED;
39         u32     HcControlHeadED;
40         u32     HcControlCurrentED;
41         u32     HcBulkHeadED;
42         u32     HcBuldCurrentED;
43         u32     HcDoneHead;
44         u32     HcRmInterval;
45         u32     HcFmRemaining;
46         u32     HcFmNumber;
47         u32     HcPeriodicStart;
48         u32     HcLSThreshold;
49         u32     HcRhDescriptorA;
50         u32     HcRhDescriptorB;
51         u32     HcRhStatus;
52         u32     HcRhPortStatus1;
53         u32     HcRhPortStatus2;
54 };
55
56
57 /* INTERRUPT (see manual chapter 14) */
58 struct s3c24x0_interrupt {
59         u32     srcpnd;
60         u32     intmod;
61         u32     intmsk;
62         u32     priority;
63         u32     intpnd;
64         u32     intoffset;
65 #if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
66         u32     subsrcpnd;
67         u32     intsubmsk;
68 #endif
69 };
70
71
72 /* DMAS (see manual chapter 8) */
73 struct s3c24x0_dma {
74         u32     disrc;
75 #if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
76         u32     disrcc;
77 #endif
78         u32     didst;
79 #if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
80         u32     didstc;
81 #endif
82         u32     dcon;
83         u32     dstat;
84         u32     dcsrc;
85         u32     dcdst;
86         u32     dmasktrig;
87 #if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) \
88                 || defined(CONFIG_S3C2440)
89         u32     res[1];
90 #endif
91 };
92
93 struct s3c24x0_dmas {
94         struct s3c24x0_dma      dma[4];
95 };
96
97
98 /* CLOCK & POWER MANAGEMENT (see S3C2400 manual chapter 6) */
99 /*                          (see S3C2410 manual chapter 7) */
100 struct s3c24x0_clock_power {
101         u32     locktime;
102         u32     mpllcon;
103         u32     upllcon;
104         u32     clkcon;
105         u32     clkslow;
106         u32     clkdivn;
107 #if defined(CONFIG_S3C2440)
108         u32     camdivn;
109 #endif
110 };
111
112
113 /* LCD CONTROLLER (see manual chapter 15) */
114 struct s3c24x0_lcd {
115         u32     lcdcon1;
116         u32     lcdcon2;
117         u32     lcdcon3;
118         u32     lcdcon4;
119         u32     lcdcon5;
120         u32     lcdsaddr1;
121         u32     lcdsaddr2;
122         u32     lcdsaddr3;
123         u32     redlut;
124         u32     greenlut;
125         u32     bluelut;
126         u32     res[8];
127         u32     dithmode;
128         u32     tpal;
129 #if defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)
130         u32     lcdintpnd;
131         u32     lcdsrcpnd;
132         u32     lcdintmsk;
133         u32     lpcsel;
134 #endif
135 };
136
137
138 #ifdef CONFIG_S3C2410
139 /* NAND FLASH (see S3C2410 manual chapter 6) */
140 struct s3c2410_nand {
141         u32     nfconf;
142         u32     nfcmd;
143         u32     nfaddr;
144         u32     nfdata;
145         u32     nfstat;
146         u32     nfecc;
147 };
148 #endif
149 #ifdef CONFIG_S3C2440
150 /* NAND FLASH (see S3C2440 manual chapter 6) */
151 struct s3c2440_nand {
152         u32     nfconf;
153         u32     nfcont;
154         u32     nfcmd;
155         u32     nfaddr;
156         u32     nfdata;
157         u32     nfeccd0;
158         u32     nfeccd1;
159         u32     nfeccd;
160         u32     nfstat;
161         u32     nfstat0;
162         u32     nfstat1;
163 };
164 #endif
165
166
167 /* UART (see manual chapter 11) */
168 struct s3c24x0_uart {
169         u32     ulcon;
170         u32     ucon;
171         u32     ufcon;
172         u32     umcon;
173         u32     utrstat;
174         u32     uerstat;
175         u32     ufstat;
176         u32     umstat;
177 #ifdef __BIG_ENDIAN
178         u8      res1[3];
179         u8      utxh;
180         u8      res2[3];
181         u8      urxh;
182 #else /* Little Endian */
183         u8      utxh;
184         u8      res1[3];
185         u8      urxh;
186         u8      res2[3];
187 #endif
188         u32     ubrdiv;
189 };
190
191
192 /* PWM TIMER (see manual chapter 10) */
193 struct s3c24x0_timer {
194         u32     tcntb;
195         u32     tcmpb;
196         u32     tcnto;
197 };
198
199 struct s3c24x0_timers {
200         u32     tcfg0;
201         u32     tcfg1;
202         u32     tcon;
203         struct s3c24x0_timer    ch[4];
204         u32     tcntb4;
205         u32     tcnto4;
206 };
207
208
209 /* USB DEVICE (see manual chapter 13) */
210 struct s3c24x0_usb_dev_fifos {
211 #ifdef __BIG_ENDIAN
212         u8      res[3];
213         u8      ep_fifo_reg;
214 #else /*  little endian */
215         u8      ep_fifo_reg;
216         u8      res[3];
217 #endif
218 };
219
220 struct s3c24x0_usb_dev_dmas {
221 #ifdef __BIG_ENDIAN
222         u8      res1[3];
223         u8      ep_dma_con;
224         u8      res2[3];
225         u8      ep_dma_unit;
226         u8      res3[3];
227         u8      ep_dma_fifo;
228         u8      res4[3];
229         u8      ep_dma_ttc_l;
230         u8      res5[3];
231         u8      ep_dma_ttc_m;
232         u8      res6[3];
233         u8      ep_dma_ttc_h;
234 #else /*  little endian */
235         u8      ep_dma_con;
236         u8      res1[3];
237         u8      ep_dma_unit;
238         u8      res2[3];
239         u8      ep_dma_fifo;
240         u8      res3[3];
241         u8      ep_dma_ttc_l;
242         u8      res4[3];
243         u8      ep_dma_ttc_m;
244         u8      res5[3];
245         u8      ep_dma_ttc_h;
246         u8      res6[3];
247 #endif
248 };
249
250 struct s3c24x0_usb_device {
251 #ifdef __BIG_ENDIAN
252         u8      res1[3];
253         u8      func_addr_reg;
254         u8      res2[3];
255         u8      pwr_reg;
256         u8      res3[3];
257         u8      ep_int_reg;
258         u8      res4[15];
259         u8      usb_int_reg;
260         u8      res5[3];
261         u8      ep_int_en_reg;
262         u8      res6[15];
263         u8      usb_int_en_reg;
264         u8      res7[3];
265         u8      frame_num1_reg;
266         u8      res8[3];
267         u8      frame_num2_reg;
268         u8      res9[3];
269         u8      index_reg;
270         u8      res10[7];
271         u8      maxp_reg;
272         u8      res11[3];
273         u8      ep0_csr_in_csr1_reg;
274         u8      res12[3];
275         u8      in_csr2_reg;
276         u8      res13[7];
277         u8      out_csr1_reg;
278         u8      res14[3];
279         u8      out_csr2_reg;
280         u8      res15[3];
281         u8      out_fifo_cnt1_reg;
282         u8      res16[3];
283         u8      out_fifo_cnt2_reg;
284 #else /*  little endian */
285         u8      func_addr_reg;
286         u8      res1[3];
287         u8      pwr_reg;
288         u8      res2[3];
289         u8      ep_int_reg;
290         u8      res3[15];
291         u8      usb_int_reg;
292         u8      res4[3];
293         u8      ep_int_en_reg;
294         u8      res5[15];
295         u8      usb_int_en_reg;
296         u8      res6[3];
297         u8      frame_num1_reg;
298         u8      res7[3];
299         u8      frame_num2_reg;
300         u8      res8[3];
301         u8      index_reg;
302         u8      res9[7];
303         u8      maxp_reg;
304         u8      res10[7];
305         u8      ep0_csr_in_csr1_reg;
306         u8      res11[3];
307         u8      in_csr2_reg;
308         u8      res12[3];
309         u8      out_csr1_reg;
310         u8      res13[7];
311         u8      out_csr2_reg;
312         u8      res14[3];
313         u8      out_fifo_cnt1_reg;
314         u8      res15[3];
315         u8      out_fifo_cnt2_reg;
316         u8      res16[3];
317 #endif /*  __BIG_ENDIAN */
318         struct s3c24x0_usb_dev_fifos    fifo[5];
319         struct s3c24x0_usb_dev_dmas     dma[5];
320 };
321
322
323 /* WATCH DOG TIMER (see manual chapter 18) */
324 struct s3c24x0_watchdog {
325         u32     wtcon;
326         u32     wtdat;
327         u32     wtcnt;
328 };
329
330 /* IIS (see manual chapter 21) */
331 struct s3c24x0_i2s {
332 #ifdef __BIG_ENDIAN
333         u16     res1;
334         u16     iiscon;
335         u16     res2;
336         u16     iismod;
337         u16     res3;
338         u16     iispsr;
339         u16     res4;
340         u16     iisfcon;
341         u16     res5;
342         u16     iisfifo;
343 #else /*  little endian */
344         u16     iiscon;
345         u16     res1;
346         u16     iismod;
347         u16     res2;
348         u16     iispsr;
349         u16     res3;
350         u16     iisfcon;
351         u16     res4;
352         u16     iisfifo;
353         u16     res5;
354 #endif
355 };
356
357
358 /* I/O PORT (see manual chapter 9) */
359 struct s3c24x0_gpio {
360 #ifdef CONFIG_S3C2400
361         u32     pacon;
362         u32     padat;
363
364         u32     pbcon;
365         u32     pbdat;
366         u32     pbup;
367
368         u32     pccon;
369         u32     pcdat;
370         u32     pcup;
371
372         u32     pdcon;
373         u32     pddat;
374         u32     pdup;
375
376         u32     pecon;
377         u32     pedat;
378         u32     peup;
379
380         u32     pfcon;
381         u32     pfdat;
382         u32     pfup;
383
384         u32     pgcon;
385         u32     pgdat;
386         u32     pgup;
387
388         u32     opencr;
389
390         u32     misccr;
391         u32     extint;
392 #endif
393 #ifdef CONFIG_S3C2410
394         u32     gpacon;
395         u32     gpadat;
396         u32     res1[2];
397         u32     gpbcon;
398         u32     gpbdat;
399         u32     gpbup;
400         u32     res2;
401         u32     gpccon;
402         u32     gpcdat;
403         u32     gpcup;
404         u32     res3;
405         u32     gpdcon;
406         u32     gpddat;
407         u32     gpdup;
408         u32     res4;
409         u32     gpecon;
410         u32     gpedat;
411         u32     gpeup;
412         u32     res5;
413         u32     gpfcon;
414         u32     gpfdat;
415         u32     gpfup;
416         u32     res6;
417         u32     gpgcon;
418         u32     gpgdat;
419         u32     gpgup;
420         u32     res7;
421         u32     gphcon;
422         u32     gphdat;
423         u32     gphup;
424         u32     res8;
425
426         u32     misccr;
427         u32     dclkcon;
428         u32     extint0;
429         u32     extint1;
430         u32     extint2;
431         u32     eintflt0;
432         u32     eintflt1;
433         u32     eintflt2;
434         u32     eintflt3;
435         u32     eintmask;
436         u32     eintpend;
437         u32     gstatus0;
438         u32     gstatus1;
439         u32     gstatus2;
440         u32     gstatus3;
441         u32     gstatus4;
442 #endif
443 #if defined(CONFIG_S3C2440)
444         u32     gpacon;
445         u32     gpadat;
446         u32     res1[2];
447         u32     gpbcon;
448         u32     gpbdat;
449         u32     gpbup;
450         u32     res2;
451         u32     gpccon;
452         u32     gpcdat;
453         u32     gpcup;
454         u32     res3;
455         u32     gpdcon;
456         u32     gpddat;
457         u32     gpdup;
458         u32     res4;
459         u32     gpecon;
460         u32     gpedat;
461         u32     gpeup;
462         u32     res5;
463         u32     gpfcon;
464         u32     gpfdat;
465         u32     gpfup;
466         u32     res6;
467         u32     gpgcon;
468         u32     gpgdat;
469         u32     gpgup;
470         u32     res7;
471         u32     gphcon;
472         u32     gphdat;
473         u32     gphup;
474         u32     res8;
475
476         u32     misccr;
477         u32     dclkcon;
478         u32     extint0;
479         u32     extint1;
480         u32     extint2;
481         u32     eintflt0;
482         u32     eintflt1;
483         u32     eintflt2;
484         u32     eintflt3;
485         u32     eintmask;
486         u32     eintpend;
487         u32     gstatus0;
488         u32     gstatus1;
489         u32     gstatus2;
490         u32     gstatus3;
491         u32     gstatus4;
492
493         u32     res9;
494         u32     dsc0;
495         u32     dsc1;
496         u32     mslcon;
497         u32     gpjcon;
498         u32     gpjdat;
499         u32     gpjup;
500         u32     res10;
501 #endif
502 };
503
504
505 /* RTC (see manual chapter 17) */
506 struct s3c24x0_rtc {
507 #ifdef __BIG_ENDIAN
508         u8      res1[67];
509         u8      rtccon;
510         u8      res2[3];
511         u8      ticnt;
512         u8      res3[11];
513         u8      rtcalm;
514         u8      res4[3];
515         u8      almsec;
516         u8      res5[3];
517         u8      almmin;
518         u8      res6[3];
519         u8      almhour;
520         u8      res7[3];
521         u8      almdate;
522         u8      res8[3];
523         u8      almmon;
524         u8      res9[3];
525         u8      almyear;
526         u8      res10[3];
527         u8      rtcrst;
528         u8      res11[3];
529         u8      bcdsec;
530         u8      res12[3];
531         u8      bcdmin;
532         u8      res13[3];
533         u8      bcdhour;
534         u8      res14[3];
535         u8      bcddate;
536         u8      res15[3];
537         u8      bcdday;
538         u8      res16[3];
539         u8      bcdmon;
540         u8      res17[3];
541         u8      bcdyear;
542 #else /*  little endian */
543         u8      res0[64];
544         u8      rtccon;
545         u8      res1[3];
546         u8      ticnt;
547         u8      res2[11];
548         u8      rtcalm;
549         u8      res3[3];
550         u8      almsec;
551         u8      res4[3];
552         u8      almmin;
553         u8      res5[3];
554         u8      almhour;
555         u8      res6[3];
556         u8      almdate;
557         u8      res7[3];
558         u8      almmon;
559         u8      res8[3];
560         u8      almyear;
561         u8      res9[3];
562         u8      rtcrst;
563         u8      res10[3];
564         u8      bcdsec;
565         u8      res11[3];
566         u8      bcdmin;
567         u8      res12[3];
568         u8      bcdhour;
569         u8      res13[3];
570         u8      bcddate;
571         u8      res14[3];
572         u8      bcdday;
573         u8      res15[3];
574         u8      bcdmon;
575         u8      res16[3];
576         u8      bcdyear;
577         u8      res17[3];
578 #endif
579 };
580
581
582 /* ADC (see manual chapter 16) */
583 struct s3c2400_adc {
584         u32     adccon;
585         u32     adcdat;
586 };
587
588
589 /* ADC (see manual chapter 16) */
590 struct s3c2410_adc {
591         u32     adccon;
592         u32     adctsc;
593         u32     adcdly;
594         u32     adcdat0;
595         u32     adcdat1;
596 };
597
598
599 /* SPI (see manual chapter 22) */
600 struct s3c24x0_spi_channel {
601         u8      spcon;
602         u8      res1[3];
603         u8      spsta;
604         u8      res2[3];
605         u8      sppin;
606         u8      res3[3];
607         u8      sppre;
608         u8      res4[3];
609         u8      sptdat;
610         u8      res5[3];
611         u8      sprdat;
612         u8      res6[3];
613         u8      res7[16];
614 };
615
616 struct s3c24x0_spi {
617         struct s3c24x0_spi_channel      ch[S3C24X0_SPI_CHANNELS];
618 };
619
620
621 /* MMC INTERFACE (see S3C2400 manual chapter 19) */
622 struct s3c2400_mmc {
623 #ifdef __BIG_ENDIAN
624         u8      res1[3];
625         u8      mmcon;
626         u8      res2[3];
627         u8      mmcrr;
628         u8      res3[3];
629         u8      mmfcon;
630         u8      res4[3];
631         u8      mmsta;
632         u16     res5;
633         u16     mmfsta;
634         u8      res6[3];
635         u8      mmpre;
636         u16     res7;
637         u16     mmlen;
638         u8      res8[3];
639         u8      mmcr7;
640         u32     mmrsp[4];
641         u8      res9[3];
642         u8      mmcmd0;
643         u32     mmcmd1;
644         u16     res10;
645         u16     mmcr16;
646         u8      res11[3];
647         u8      mmdat;
648 #else
649         u8      mmcon;
650         u8      res1[3];
651         u8      mmcrr;
652         u8      res2[3];
653         u8      mmfcon;
654         u8      res3[3];
655         u8      mmsta;
656         u8      res4[3];
657         u16     mmfsta;
658         u16     res5;
659         u8      mmpre;
660         u8      res6[3];
661         u16     mmlen;
662         u16     res7;
663         u8      mmcr7;
664         u8      res8[3];
665         u32     mmrsp[4];
666         u8      mmcmd0;
667         u8      res9[3];
668         u32     mmcmd1;
669         u16     mmcr16;
670         u16     res10;
671         u8      mmdat;
672         u8      res11[3];
673 #endif
674 };
675
676
677 /* SD INTERFACE (see S3C2410 manual chapter 19) */
678 struct s3c24x0_sdi {
679         u32     sdicon;
680         u32     sdipre;
681         u32     sdicarg;
682         u32     sdiccon;
683         u32     sdicsta;
684         u32     sdirsp0;
685         u32     sdirsp1;
686         u32     sdirsp2;
687         u32     sdirsp3;
688         u32     sdidtimer;
689         u32     sdibsize;
690         u32     sdidcon;
691         u32     sdidcnt;
692         u32     sdidsta;
693         u32     sdifsta;
694 #ifdef CONFIG_S3C2410
695         u32     sdidat;
696         u32     sdiimsk;
697 #else
698         u32     sdiimsk;
699         u32     sdidat;
700 #endif
701 };
702
703 #ifdef CONFIG_CMD_MMC
704 #include <mmc.h>
705 int s3cmmc_initialize(bd_t *bis, int (*getcd)(struct mmc *),
706                       int (*getwp)(struct mmc *));
707 #endif
708
709 #endif /*__S3C24X0_H__*/