]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - arch/arm/include/asm/arch-mb86r0x/mb86r0x.h
Add GPL-2.0+ SPDX-License-Identifier to source files
[karo-tx-uboot.git] / arch / arm / include / asm / arch-mb86r0x / mb86r0x.h
1 /*
2  * (C) Copyright 2007
3  *
4  * mb86r0x definitions
5  *
6  * Author : Carsten Schneider, mycable GmbH
7  *          <cs@mycable.de>
8  *
9  * (C) Copyright 2010
10  * Matthias Weisser <weisserm@arcor.de>
11  *
12  * SPDX-License-Identifier:     GPL-2.0+
13  */
14
15 #ifndef MB86R0X_H
16 #define MB86R0X_H
17
18 #ifndef __ASSEMBLY__
19
20 /* GPIO registers */
21 struct mb86r0x_gpio {
22         uint32_t gpdr0;
23         uint32_t gpdr1;
24         uint32_t gpdr2;
25         uint32_t res;
26         uint32_t gpddr0;
27         uint32_t gpddr1;
28         uint32_t gpddr2;
29 };
30
31 /* PWM registers */
32 struct mb86r0x_pwm {
33         uint32_t bcr;
34         uint32_t tpr;
35         uint32_t pr;
36         uint32_t dr;
37         uint32_t cr;
38         uint32_t sr;
39         uint32_t ccr;
40         uint32_t ir;
41 };
42
43 /* The mb86r0x chip control (CCNT) register set. */
44 struct mb86r0x_ccnt {
45         uint32_t ccid;
46         uint32_t csrst;
47         uint32_t pad0[2];
48         uint32_t cist;
49         uint32_t cistm;
50         uint32_t cgpio_ist;
51         uint32_t cgpio_istm;
52         uint32_t cgpio_ip;
53         uint32_t cgpio_im;
54         uint32_t caxi_bw;
55         uint32_t caxi_ps;
56         uint32_t cmux_md;
57         uint32_t cex_pin_st;
58         uint32_t cmlb;
59         uint32_t pad1[1];
60         uint32_t cusb;
61         uint32_t pad2[41];
62         uint32_t cbsc;
63         uint32_t cdcrc;
64         uint32_t cmsr0;
65         uint32_t cmsr1;
66         uint32_t pad3[2];
67 };
68
69 /* The mb86r0x clock reset generator */
70 struct mb86r0x_crg {
71         uint32_t crpr;
72         uint32_t pad0;
73         uint32_t crwr;
74         uint32_t crsr;
75         uint32_t crda;
76         uint32_t crdb;
77         uint32_t crha;
78         uint32_t crpa;
79         uint32_t crpb;
80         uint32_t crhb;
81         uint32_t cram;
82 };
83
84 /* The mb86r0x timer */
85 struct mb86r0x_timer {
86         uint32_t load;
87         uint32_t value;
88         uint32_t control;
89         uint32_t intclr;
90         uint32_t ris;
91         uint32_t mis;
92         uint32_t bgload;
93 };
94
95 /* mb86r0x gdc display controller */
96 struct mb86r0x_gdc_dsp {
97         /* Display settings */
98         uint32_t dcm0;
99         uint16_t pad00;
100         uint16_t htp;
101         uint16_t hdp;
102         uint16_t hdb;
103         uint16_t hsp;
104         uint8_t  hsw;
105         uint8_t  vsw;
106         uint16_t pad01;
107         uint16_t vtr;
108         uint16_t vsp;
109         uint16_t vdp;
110         uint16_t wx;
111         uint16_t wy;
112         uint16_t ww;
113         uint16_t wh;
114
115         /* Layer 0 */
116         uint32_t l0m;
117         uint32_t l0oa;
118         uint32_t l0da;
119         uint16_t l0dx;
120         uint16_t l0dy;
121
122         /* Layer 1 */
123         uint32_t l1m;
124         uint32_t cbda0;
125         uint32_t cbda1;
126         uint32_t pad02;
127
128         /* Layer 2 */
129         uint32_t l2m;
130         uint32_t l2oa0;
131         uint32_t l2da0;
132         uint32_t l2oa1;
133         uint32_t l2da1;
134         uint16_t l2dx;
135         uint16_t l2dy;
136
137         /* Layer 3 */
138         uint32_t l3m;
139         uint32_t l3oa0;
140         uint32_t l3da0;
141         uint32_t l3oa1;
142         uint32_t l3da1;
143         uint16_t l3dx;
144         uint16_t l3dy;
145
146         /* Layer 4 */
147         uint32_t l4m;
148         uint32_t l4oa0;
149         uint32_t l4da0;
150         uint32_t l4oa1;
151         uint32_t l4da1;
152         uint16_t l4dx;
153         uint16_t l4dy;
154
155         /* Layer 5 */
156         uint32_t l5m;
157         uint32_t l5oa0;
158         uint32_t l5da0;
159         uint32_t l5oa1;
160         uint32_t l5da1;
161         uint16_t l5dx;
162         uint16_t l5dy;
163
164         /* Cursor */
165         uint16_t cutc;
166         uint8_t  cpm;
167         uint8_t  csize;
168         uint32_t cuoa0;
169         uint16_t cux0;
170         uint16_t cuy0;
171         uint32_t cuoa1;
172         uint16_t cux1;
173         uint16_t cuy1;
174
175         /* Layer blending */
176         uint32_t l0bld;
177         uint32_t pad03;
178         uint32_t l0tc;
179         uint16_t l3tc;
180         uint16_t l2tc;
181         uint32_t pad04[15];
182
183         /* Display settings */
184         uint32_t dcm1;
185         uint32_t dcm2;
186         uint32_t dcm3;
187         uint32_t pad05;
188
189         /* Layer 0 extended */
190         uint32_t l0em;
191         uint16_t l0wx;
192         uint16_t l0wy;
193         uint16_t l0ww;
194         uint16_t l0wh;
195         uint32_t pad06;
196
197         /* Layer 1 extended */
198         uint32_t l1em;
199         uint16_t l1wx;
200         uint16_t l1wy;
201         uint16_t l1ww;
202         uint16_t l1wh;
203         uint32_t pad07;
204
205         /* Layer 2 extended */
206         uint32_t l2em;
207         uint16_t l2wx;
208         uint16_t l2wy;
209         uint16_t l2ww;
210         uint16_t l2wh;
211         uint32_t pad08;
212
213         /* Layer 3 extended */
214         uint32_t l3em;
215         uint16_t l3wx;
216         uint16_t l3wy;
217         uint16_t l3ww;
218         uint16_t l3wh;
219         uint32_t pad09;
220
221         /* Layer 4 extended */
222         uint32_t l4em;
223         uint16_t l4wx;
224         uint16_t l4wy;
225         uint16_t l4ww;
226         uint16_t l4wh;
227         uint32_t pad10;
228
229         /* Layer 5 extended */
230         uint32_t l5em;
231         uint16_t l5wx;
232         uint16_t l5wy;
233         uint16_t l5ww;
234         uint16_t l5wh;
235         uint32_t pad11;
236
237         /* Multi screen control */
238         uint32_t msc;
239         uint32_t pad12[3];
240         uint32_t dls;
241         uint32_t dbgc;
242
243         /* Layer blending */
244         uint32_t l1bld;
245         uint32_t l2bld;
246         uint32_t l3bld;
247         uint32_t l4bld;
248         uint32_t l5bld;
249         uint32_t pad13;
250
251         /* Extended transparency control */
252         uint32_t l0etc;
253         uint32_t l1etc;
254         uint32_t l2etc;
255         uint32_t l3etc;
256         uint32_t l4etc;
257         uint32_t l5etc;
258         uint32_t pad14[10];
259
260         /* YUV coefficients */
261         uint32_t l1ycr0;
262         uint32_t l1ycr1;
263         uint32_t l1ycg0;
264         uint32_t l1ycg1;
265         uint32_t l1ycb0;
266         uint32_t l1ycb1;
267         uint32_t pad15[130];
268
269         /* Layer palletes */
270         uint32_t l0pal[256];
271         uint32_t l1pal[256];
272         uint32_t pad16[256];
273         uint32_t l2pal[256];
274         uint32_t l3pal[256];
275         uint32_t pad17[256];
276
277         /* PWM settings */
278         uint32_t vpwmm;
279         uint16_t vpwms;
280         uint16_t vpwme;
281         uint32_t vpwmc;
282         uint32_t pad18[253];
283 };
284
285 /* mb86r0x gdc capture controller */
286 struct mb86r0x_gdc_cap {
287         uint32_t vcm;
288         uint32_t csc;
289         uint32_t vcs;
290         uint32_t pad01;
291
292         uint32_t cbm;
293         uint32_t cboa;
294         uint32_t cbla;
295         uint16_t cihstr;
296         uint16_t civstr;
297         uint16_t cihend;
298         uint16_t civend;
299         uint32_t pad02;
300
301         uint32_t chp;
302         uint32_t cvp;
303         uint32_t pad03[4];
304
305         uint32_t clpf;
306         uint32_t pad04;
307         uint32_t cmss;
308         uint32_t cmds;
309         uint32_t pad05[12];
310
311         uint32_t rgbhc;
312         uint32_t rgbhen;
313         uint32_t rgbven;
314         uint32_t pad06;
315         uint32_t rgbs;
316         uint32_t pad07[11];
317
318         uint32_t rgbcmy;
319         uint32_t rgbcmcb;
320         uint32_t rgbcmcr;
321         uint32_t rgbcmb;
322         uint32_t pad08[12 + 1984];
323 };
324
325 /* mb86r0x gdc draw */
326 struct mb86r0x_gdc_draw {
327         uint32_t ys;
328         uint32_t xs;
329         uint32_t dxdy;
330         uint32_t xus;
331         uint32_t dxudy;
332         uint32_t xls;
333         uint32_t dxldy;
334         uint32_t usn;
335         uint32_t lsn;
336         uint32_t pad01[7];
337         uint32_t rs;
338         uint32_t drdx;
339         uint32_t drdy;
340         uint32_t gs;
341         uint32_t dgdx;
342         uint32_t dgdy;
343         uint32_t bs;
344         uint32_t dbdx;
345         uint32_t dbdy;
346         uint32_t pad02[7];
347         uint32_t zs;
348         uint32_t dzdx;
349         uint32_t dzdy;
350         uint32_t pad03[13];
351         uint32_t ss;
352         uint32_t dsdx;
353         uint32_t dsdy;
354         uint32_t ts;
355         uint32_t dtdx;
356         uint32_t dtdy;
357         uint32_t qs;
358         uint32_t dqdx;
359         uint32_t dqdy;
360         uint32_t pad04[23];
361         uint32_t lpn;
362         uint32_t lxs;
363         uint32_t lxde;
364         uint32_t lys;
365         uint32_t lyde;
366         uint32_t lzs;
367         uint32_t lzde;
368         uint32_t pad05[13];
369         uint32_t pxdc;
370         uint32_t pydc;
371         uint32_t pzdc;
372         uint32_t pad06[25];
373         uint32_t rxs;
374         uint32_t rys;
375         uint32_t rsizex;
376         uint32_t rsizey;
377         uint32_t pad07[12];
378         uint32_t saddr;
379         uint32_t sstride;
380         uint32_t srx;
381         uint32_t sry;
382         uint32_t daddr;
383         uint32_t dstride;
384         uint32_t drx;
385         uint32_t dry;
386         uint32_t brsizex;
387         uint32_t brsizey;
388         uint32_t tcolor;
389         uint32_t pad08[93];
390         uint32_t blpo;
391         uint32_t pad09[7];
392         uint32_t ctr;
393         uint32_t ifsr;
394         uint32_t ifcnt;
395         uint32_t sst;
396         uint32_t ds;
397         uint32_t pst;
398         uint32_t est;
399         uint32_t pad10;
400         uint32_t mdr0;
401         uint32_t mdr1;
402         uint32_t mdr2;
403         uint32_t mdr3;
404         uint32_t mdr4;
405         uint32_t pad14[2];
406         uint32_t mdr7;
407         uint32_t fbr;
408         uint32_t xres;
409         uint32_t zbr;
410         uint32_t tbr;
411         uint32_t pfbr;
412         uint32_t cxmin;
413         uint32_t cxmax;
414         uint32_t cymin;
415         uint32_t cymax;
416         uint32_t txs;
417         uint32_t tis;
418         uint32_t toa;
419         uint32_t sho;
420         uint32_t abr;
421         uint32_t pad15[2];
422         uint32_t fc;
423         uint32_t bc;
424         uint32_t alf;
425         uint32_t blp;
426         uint32_t pad16;
427         uint32_t tbc;
428         uint32_t pad11[42];
429         uint32_t lx0dc;
430         uint32_t ly0dc;
431         uint32_t lx1dc;
432         uint32_t ly1dc;
433         uint32_t pad12[12];
434         uint32_t x0dc;
435         uint32_t y0dc;
436         uint32_t x1dc;
437         uint32_t y1dc;
438         uint32_t x2dc;
439         uint32_t y2dc;
440         uint32_t pad13[666];
441 };
442
443 /* mb86r0x gdc geometry engine */
444 struct mb86r0x_gdc_geom {
445         uint32_t gctr;
446         uint32_t pad00[15];
447         uint32_t gmdr0;
448         uint32_t gmdr1;
449         uint32_t gmdr2;
450         uint32_t pad01[237];
451         uint32_t dfifog;
452         uint32_t pad02[767];
453 };
454
455 /* mb86r0x gdc */
456 struct mb86r0x_gdc {
457         uint32_t pad00[2];
458         uint32_t lts;
459         uint32_t pad01;
460         uint32_t lsta;
461         uint32_t pad02[3];
462         uint32_t ist;
463         uint32_t imask;
464         uint32_t pad03[6];
465         uint32_t lsa;
466         uint32_t lco;
467         uint32_t lreq;
468
469         uint32_t pad04[16*1024 - 19];
470         struct mb86r0x_gdc_dsp dsp0;
471         struct mb86r0x_gdc_dsp dsp1;
472         uint32_t pad05[4*1024 - 2];
473         uint32_t vccc;
474         uint32_t vcsr;
475         struct mb86r0x_gdc_cap cap0;
476         struct mb86r0x_gdc_cap cap1;
477         uint32_t pad06[4*1024];
478         uint32_t texture_base[16*1024];
479         struct mb86r0x_gdc_draw draw;
480         uint32_t pad07[7*1024];
481         struct mb86r0x_gdc_geom geom;
482         uint32_t pad08[7*1024];
483 };
484
485 /* mb86r0x ddr2c */
486 struct mb86r0x_ddr2c {
487         uint16_t dric;
488         uint16_t dric1;
489         uint16_t dric2;
490         uint16_t drca;
491         uint16_t drcm;
492         uint16_t drcst1;
493         uint16_t drcst2;
494         uint16_t drcr;
495         uint16_t pad00[8];
496         uint16_t drcf;
497         uint16_t pad01[7];
498         uint16_t drasr;
499         uint16_t pad02[15];
500         uint16_t drims;
501         uint16_t pad03[7];
502         uint16_t dros;
503         uint16_t pad04;
504         uint16_t dribsodt1;
505         uint16_t dribsocd;
506         uint16_t dribsocd2;
507         uint16_t pad05[3];
508         uint16_t droaba;
509         uint16_t pad06[9];
510         uint16_t drobs;
511         uint16_t pad07[5];
512         uint16_t drimr1;
513         uint16_t drimr2;
514         uint16_t drimr3;
515         uint16_t drimr4;
516         uint16_t droisr1;
517         uint16_t droisr2;
518 };
519
520 /* mb86r0x memc */
521 struct mb86r0x_memc {
522         uint32_t mcfmode[8];
523         uint32_t mcftim[8];
524         uint32_t mcfarea[8];
525 };
526
527 #endif /* __ASSEMBLY__ */
528
529 /*
530  * Physical Address Defines
531  */
532 #define MB86R0x_DDR2_BASE               0xf3000000
533 #define MB86R0x_GDC_BASE                0xf1fc0000
534 #define MB86R0x_CCNT_BASE               0xfff42000
535 #define MB86R0x_CAN0_BASE               0xfff54000
536 #define MB86R0x_CAN1_BASE               0xfff55000
537 #define MB86R0x_I2C0_BASE               0xfff56000
538 #define MB86R0x_I2C1_BASE               0xfff57000
539 #define MB86R0x_EHCI_BASE               0xfff80000
540 #define MB86R0x_OHCI_BASE               0xfff81000
541 #define MB86R0x_IRC1_BASE               0xfffb0000
542 #define MB86R0x_MEMC_BASE               0xfffc0000
543 #define MB86R0x_TIMER_BASE              0xfffe0000
544 #define MB86R0x_UART0_BASE              0xfffe1000
545 #define MB86R0x_UART1_BASE              0xfffe2000
546 #define MB86R0x_IRCE_BASE               0xfffe4000
547 #define MB86R0x_CRG_BASE                0xfffe7000
548 #define MB86R0x_IRC0_BASE               0xfffe8000
549 #define MB86R0x_GPIO_BASE               0xfffe9000
550 #define MB86R0x_PWM0_BASE               0xfff41000
551 #define MB86R0x_PWM1_BASE               0xfff41100
552
553 #define MB86R0x_CRSR_SWRSTREQ           (1 << 1)
554
555 /*
556  * Timer register bits
557  */
558 #define MB86R0x_TIMER_ENABLE            (1 << 7)
559 #define MB86R0x_TIMER_MODE_MSK          (1 << 6)
560 #define MB86R0x_TIMER_MODE_FR           (0 << 6)
561 #define MB86R0x_TIMER_MODE_PD           (1 << 6)
562
563 #define MB86R0x_TIMER_INT_EN            (1 << 5)
564 #define MB86R0x_TIMER_PRS_MSK           (3 << 2)
565 #define MB86R0x_TIMER_PRS_4S            (1 << 2)
566 #define MB86R0x_TIMER_PRS_8S            (1 << 3)
567 #define MB86R0x_TIMER_SIZE_32           (1 << 1)
568 #define MB86R0x_TIMER_ONE_SHT           (1 << 0)
569
570 /*
571  * Clock reset generator bits
572  */
573 #define MB86R0x_CRG_CRPR_PLLRDY         (1 << 8)
574 #define MB86R0x_CRG_CRPR_PLLMODE        (0x1f << 0)
575 #define MB86R0x_CRG_CRPR_PLLMODE_X49    (0 << 0)
576 #define MB86R0x_CRG_CRPR_PLLMODE_X46    (1 << 0)
577 #define MB86R0x_CRG_CRPR_PLLMODE_X37    (2 << 0)
578 #define MB86R0x_CRG_CRPR_PLLMODE_X20    (3 << 0)
579 #define MB86R0x_CRG_CRPR_PLLMODE_X47    (4 << 0)
580 #define MB86R0x_CRG_CRPR_PLLMODE_X44    (5 << 0)
581 #define MB86R0x_CRG_CRPR_PLLMODE_X36    (6 << 0)
582 #define MB86R0x_CRG_CRPR_PLLMODE_X19    (7 << 0)
583 #define MB86R0x_CRG_CRPR_PLLMODE_X39    (8 << 0)
584 #define MB86R0x_CRG_CRPR_PLLMODE_X38    (9 << 0)
585 #define MB86R0x_CRG_CRPR_PLLMODE_X30    (10 << 0)
586 #define MB86R0x_CRG_CRPR_PLLMODE_X15    (11 << 0)
587 /*
588  * DDR2 controller bits
589  */
590 #define MB86R0x_DDR2_DRCI_DRINI         (1 << 15)
591 #define MB86R0x_DDR2_DRCI_CKEN          (1 << 14)
592 #define MB86R0x_DDR2_DRCI_DRCMD         (1 << 0)
593 #define MB86R0x_DDR2_DRCI_CMD           (MB86R0x_DDR2_DRCI_DRINI | \
594                                         MB86R0x_DDR2_DRCI_CKEN | \
595                                         MB86R0x_DDR2_DRCI_DRCMD)
596 #define MB86R0x_DDR2_DRCI_INIT          (MB86R0x_DDR2_DRCI_DRINI | \
597                                         MB86R0x_DDR2_DRCI_CKEN)
598 #define MB86R0x_DDR2_DRCI_NORMAL        MB86R0x_DDR2_DRCI_CKEN
599 #endif /* MB86R0X_H */