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