summaryrefslogtreecommitdiff
path: root/firmware/export/dm320.h
blob: def8508b0ba9ef3acc94dd80ddb685ea329a7e9e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
/***************************************************************************
 *             __________               __   ___.
 *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
 *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
 *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
 *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
 *                     \/            \/     \/    \/            \/
 * $Id$
 *
 * Copyright (C) 2007 by Karl Kurbjun
 * Copyright (C) 2008 by Maurus Cuelenaere
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ****************************************************************************/

/** All register offset definitions for the TI DM320
 * Taken from: http://svn.neurostechnology.com/filedetails.php?repname=neuros-bsp&path=%2Ftrunk%2Fkernels%2Flinux-2.6.15%2Finclude%2Fasm-arm%2Farch-ntosd-dm320%2Fio_registers.h&rev=0&sc=0
 */

#ifndef __DM320_H__
#define __DM320_H__

#if !defined(__ASSEMBLER__) && !defined(__LD__)
/* These variables are created during linking (app/boot.lds) */
extern unsigned long _lcdbuf;
extern unsigned long _lcdbuf2;
extern unsigned long _ttbstart;
#endif

#define TTB_BASE_ADDR    (_ttbstart) /* End of memory */
#define FRAME            ((short *) (&_lcdbuf))  /* Right after TTB */
#define FRAME2            ((short *) (&_lcdbuf2))  /* Right after FRAME */

#define PHY_IO_BASE      0x00030000
#define DM320_REG(addr)  (*(volatile unsigned short *)(PHY_IO_BASE + (addr)))
#define PHY_IO_BASE2     0x00060000
#define DM320_REG2(addr) (*(volatile unsigned int *)(PHY_IO_BASE2 + (addr)))

#define COP_IO_BASE     0x00090000
#define DM320_COP(addr) (*(volatile unsigned short *)(COP_IO_BASE + (addr)))

/* This needs to be 2048 byte aligned, but USB_QHARRAY_ATTR should take care
 * of that */
#define USB_QHARRAY_ATTR   __attribute__((section(".qharray"),nocommon,aligned(4)))
#define USB_DEVBSS_ATTR    IBSS_ATTR


/* Timer 0-3 */
#define IO_TIMER0_TMMD            DM320_REG(0x0000)
#define IO_TIMER0_TMRSV0          DM320_REG(0x0002)
#define IO_TIMER0_TMPRSCL         DM320_REG(0x0004)
#define IO_TIMER0_TMDIV           DM320_REG(0x0006)
#define IO_TIMER0_TMTRG           DM320_REG(0x0008)
#define IO_TIMER0_TMCNT           DM320_REG(0x000A)

#define IO_TIMER1_TMMD            DM320_REG(0x0080)
#define IO_TIMER1_TMRSV0          DM320_REG(0x0082)
#define IO_TIMER1_TMPRSCL         DM320_REG(0x0084)
#define IO_TIMER1_TMDIV           DM320_REG(0x0086)
#define IO_TIMER1_TMTRG           DM320_REG(0x0088)
#define IO_TIMER1_TMCNT           DM320_REG(0x008A)

#define IO_TIMER2_TMMD            DM320_REG(0x0100)
#define IO_TIMER2_TMVDCLR         DM320_REG(0x0102)
#define IO_TIMER2_TMPRSCL         DM320_REG(0x0104)
#define IO_TIMER2_TMDIV           DM320_REG(0x0106)
#define IO_TIMER2_TMTRG           DM320_REG(0x0108)
#define IO_TIMER2_TMCNT           DM320_REG(0x010A)

#define IO_TIMER3_TMMD            DM320_REG(0x0180)
#define IO_TIMER3_TMVDCLR         DM320_REG(0x0182)
#define IO_TIMER3_TMPRSCL         DM320_REG(0x0184)
#define IO_TIMER3_TMDIV           DM320_REG(0x0186)
#define IO_TIMER3_TMTRG           DM320_REG(0x0188)
#define IO_TIMER3_TMCNT           DM320_REG(0x018A)

/* Serial 0/1 */
#define IO_SERIAL0_TX_DATA        DM320_REG(0x0200)
#define IO_SERIAL0_RX_DATA        DM320_REG(0x0202)
#define IO_SERIAL0_TX_ENABLE      DM320_REG(0x0204)
#define IO_SERIAL0_MODE           DM320_REG(0x0206)
#define IO_SERIAL0_DMA_TRIGGER    DM320_REG(0x0208)
#define IO_SERIAL0_DMA_MODE       DM320_REG(0x020A)
#define IO_SERIAL0_DMA_SDRAM_LOW  DM320_REG(0x020C)
#define IO_SERIAL0_DMA_SDRAM_HI   DM320_REG(0x020E)
#define IO_SERIAL0_DMA_STATUS     DM320_REG(0x0210)

#define IO_SERIAL1_TX_DATA        DM320_REG(0x0280)
#define IO_SERIAL1_RX_DATA        DM320_REG(0x0282)
#define IO_SERIAL1_TX_ENABLE      DM320_REG(0x0284)
#define IO_SERIAL1_MODE           DM320_REG(0x0286)

/* UART 0/1 */
#define IO_UART0_DTRR             DM320_REG(0x0300)
#define IO_UART0_BRSR             DM320_REG(0x0302)
#define IO_UART0_MSR              DM320_REG(0x0304)
#define IO_UART0_RFCR             DM320_REG(0x0306)
#define IO_UART0_TFCR             DM320_REG(0x0308)
#define IO_UART0_LCR              DM320_REG(0x030A)
#define IO_UART0_SR               DM320_REG(0x030C)

#define IO_UART1_DTRR             DM320_REG(0x0380)
#define IO_UART1_BRSR             DM320_REG(0x0382)
#define IO_UART1_MSR              DM320_REG(0x0384)
#define IO_UART1_RFCR             DM320_REG(0x0386)
#define IO_UART1_TFCR             DM320_REG(0x0388)
#define IO_UART1_LCR              DM320_REG(0x038A)
#define IO_UART1_SR               DM320_REG(0x038C)

/* Watchdog Timer */
#define IO_WATCHDOG_MODE          DM320_REG(0x0400)
#define IO_WATCHDOG_RESET         DM320_REG(0x0402)
#define IO_WATCHDOG_PRESCALAR     DM320_REG(0x0404)
#define IO_WATCHDOG_DIVISOR       DM320_REG(0x0406)
#define IO_WATCHDOG_EXT_RESET     DM320_REG(0x0408)

/* MMC/SD Controller */
#define IO_MMC_CONTROL            DM320_REG(0x0480)
#define IO_MMC_MEM_CLK_CONTROL    DM320_REG(0x0482)
#define IO_MMC_STATUS0            DM320_REG(0x0484)
#define IO_MMC_STATUS1            DM320_REG(0x0486)
#define IO_MMC_INT_ENABLE         DM320_REG(0x0488)
#define IO_MMC_RESPONSE_TIMEOUT   DM320_REG(0x048A)
#define IO_MMC_READ_TIMEOUT       DM320_REG(0x048C)
#define IO_MMC_BLOCK_LENGTH       DM320_REG(0x048E)
#define IO_MMC_NR_BLOCKS          DM320_REG(0x0490)
#define IO_MMC_NR_BLOCKS_COUNT    DM320_REG(0x0492)
#define IO_MMC_RX_DATA            DM320_REG(0x0494)
#define IO_MMC_TX_DATA            DM320_REG(0x0496)
#define IO_MMC_COMMAND            DM320_REG(0x0498)
#define IO_MMC_ARG_LOW            DM320_REG(0x049A)
#define IO_MMC_ARG_HI             DM320_REG(0x049C)
#define IO_MMC_RESPONSE0          DM320_REG(0x049E)
#define IO_MMC_RESPONSE1          DM320_REG(0x04A0)
#define IO_MMC_RESPONSE2          DM320_REG(0x04A2)
#define IO_MMC_RESPONSE3          DM320_REG(0x04A4)
#define IO_MMC_RESPONSE4          DM320_REG(0x04A6)
#define IO_MMC_RESPONSE5          DM320_REG(0x04A8)
#define IO_MMC_RESPONSE6          DM320_REG(0x04AA)
#define IO_MMC_RESPONSE7          DM320_REG(0x04AC)
#define IO_MMC_SPI_DATA           DM320_REG(0x04AE)
#define IO_MMC_SPI_ERR            DM320_REG(0x04B0)
#define IO_MMC_COMMAND_INDEX      DM320_REG(0x04B2)
#define IO_MMC_CLK_START_PHASE    DM320_REG(0x04B4)
#define IO_MMC_RESPONSE_TOUT_CNT  DM320_REG(0x04B6)
#define IO_MMC_READ_TOUT_CNT      DM320_REG(0x04B8)
#define IO_MMC_BLOCK_LENGTH_CNT   DM320_REG(0x04BA)

#define IO_MMC_SD_DMA_TRIGGER     DM320_REG(0x04BC)
#define IO_MMC_SD_DMA_MODE        DM320_REG(0x04BE)
#define IO_MMC_SD_DMA_ADDR_LOW    DM320_REG(0x04C0)
#define IO_MMC_SD_DMA_ADDR_HI     DM320_REG(0x04C2)
#define IO_MMC_SD_DMA_STATUS0     DM320_REG(0x04C4)
#define IO_MMC_SD_DMA_STATUS1     DM320_REG(0x04C6)
#define IO_MMC_SD_DMA_TIMEOUT     DM320_REG(0x04C8)

#define IO_SDIO_CONTROL           DM320_REG(0x04CA)
#define IO_SDIO_STATUS0           DM320_REG(0x04CC)
#define IO_SDIO_INT_ENABLE        DM320_REG(0x04CE)
#define IO_SDIO_INT_STATUS        DM320_REG(0x04D0)

/* Interrupt Controller */
#define IO_INTC_FIQ0              DM320_REG(0x0500)
#define IO_INTC_FIQ1              DM320_REG(0x0502)
#define IO_INTC_FIQ2              DM320_REG(0x0504)
#define IO_INTC_IRQ0              DM320_REG(0x0508)
#define IO_INTC_IRQ1              DM320_REG(0x050A)
#define IO_INTC_IRQ2              DM320_REG(0x050C)
#define IO_INTC_FIQENTRY0         DM320_REG(0x0510)
#define IO_INTC_FIQENTRY1         DM320_REG(0x0512)
#define IO_INTC_FIQ_LOCK_ADDR0    DM320_REG(0x0514)
#define IO_INTC_FIQ_LOCK_ADDR1    DM320_REG(0x0516)
#define IO_INTC_IRQENTRY0         DM320_REG(0x0518)
#define IO_INTC_IRQENTRY1         DM320_REG(0x051A)
#define IO_INTC_IRQ_LOCK_ADDR0    DM320_REG(0x051C)
#define IO_INTC_IRQ_LOCK_ADDR1    DM320_REG(0x051E)
#define IO_INTC_FISEL0            DM320_REG(0x0520)
#define IO_INTC_FISEL1            DM320_REG(0x0522)
#define IO_INTC_FISEL2            DM320_REG(0x0524)
#define IO_INTC_EINT0             DM320_REG(0x0528)
#define IO_INTC_EINT1             DM320_REG(0x052A)
#define IO_INTC_EINT2             DM320_REG(0x052C)
#define IO_INTC_RAW               DM320_REG(0x0530)
#define IO_INTC_ENTRY_TBA0        DM320_REG(0x0538)
#define IO_INTC_ENTRY_TBA1        DM320_REG(0x053A)
#define IO_INTC_PRIORITY0         DM320_REG(0x0540)
#define IO_INTC_PRIORITY1         DM320_REG(0x0542)
#define IO_INTC_PRIORITY2         DM320_REG(0x0544)
#define IO_INTC_PRIORITY3         DM320_REG(0x0546)
#define IO_INTC_PRIORITY4         DM320_REG(0x0548)
#define IO_INTC_PRIORITY5         DM320_REG(0x054A)
#define IO_INTC_PRIORITY6         DM320_REG(0x054C)
#define IO_INTC_PRIORITY7         DM320_REG(0x054E)
#define IO_INTC_PRIORITY8         DM320_REG(0x0550)
#define IO_INTC_PRIORITY9         DM320_REG(0x0552)
#define IO_INTC_PRIORITY10        DM320_REG(0x0554)
#define IO_INTC_PRIORITY11        DM320_REG(0x0556)
#define IO_INTC_PRIORITY12        DM320_REG(0x0558)
#define IO_INTC_PRIORITY13        DM320_REG(0x055A)
#define IO_INTC_PRIORITY14        DM320_REG(0x055C)
#define IO_INTC_PRIORITY15        DM320_REG(0x055E)
#define IO_INTC_PRIORITY16        DM320_REG(0x0560)
#define IO_INTC_PRIORITY17        DM320_REG(0x0562)
#define IO_INTC_PRIORITY18        DM320_REG(0x0564)
#define IO_INTC_PRIORITY19        DM320_REG(0x0566)
#define IO_INTC_PRIORITY20        DM320_REG(0x0568)
#define IO_INTC_PRIORITY21        DM320_REG(0x056A)
#define IO_INTC_PRIORITY22        DM320_REG(0x056C)

/* GIO Controller */
#define IO_GIO_DIR0               DM320_REG(0x0580)
#define IO_GIO_DIR1               DM320_REG(0x0582)
#define IO_GIO_DIR2               DM320_REG(0x0584)
#define IO_GIO_INV0               DM320_REG(0x0586)
#define IO_GIO_INV1               DM320_REG(0x0588)
#define IO_GIO_INV2               DM320_REG(0x058A)
#define IO_GIO_BITSET0            DM320_REG(0x058C)
#define IO_GIO_BITSET1            DM320_REG(0x058E)
#define IO_GIO_BITSET2            DM320_REG(0x0590)
#define IO_GIO_BITCLR0            DM320_REG(0x0592)
#define IO_GIO_BITCLR1            DM320_REG(0x0594)
#define IO_GIO_BITCLR2            DM320_REG(0x0596)
#define IO_GIO_IRQPORT            DM320_REG(0x0598)
#define IO_GIO_IRQEDGE            DM320_REG(0x059A)
#define IO_GIO_CHAT0              DM320_REG(0x059C)
#define IO_GIO_CHAT1              DM320_REG(0x059E)
#define IO_GIO_CHAT2              DM320_REG(0x05A0)
#define IO_GIO_NCHAT              DM320_REG(0x05A2)
#define IO_GIO_FSEL0              DM320_REG(0x05A4)
#define IO_GIO_FSEL1              DM320_REG(0x05A6)
#define IO_GIO_FSEL2              DM320_REG(0x05A8)
#define IO_GIO_FSEL3              DM320_REG(0x05AA)
#define IO_GIO_FSEL4              DM320_REG(0x05AC)
#define IO_GIO_CARD_SET           DM320_REG(0x05AE)
#define IO_GIO_CARD_ST            DM320_REG(0x05B0)

/* DSP Controller */
#define IO_DSPC_HPIB_CONTROL      DM320_REG(0x0600)
#define IO_DSPC_HPIB_STATUS       DM320_REG(0x0602)

/* OSD Controller */
#define IO_OSD_MODE               DM320_REG(0x0680)
#define IO_OSD_VIDWINMD           DM320_REG(0x0682)
#define IO_OSD_OSDWINMD0          DM320_REG(0x0684)
#define IO_OSD_OSDWINMD1          DM320_REG(0x0686)
#define IO_OSD_ATRMD              DM320_REG(0x0688)
#define IO_OSD_RECTCUR            DM320_REG(0x0688)
#define IO_OSD_RESERVED           DM320_REG(0x068A)
#define IO_OSD_VIDWIN0OFST        DM320_REG(0x068C)
#define IO_OSD_VIDWIN1OFST        DM320_REG(0x068E)
#define IO_OSD_OSDWIN0OFST        DM320_REG(0x0690)
#define IO_OSD_OSDWIN1OFST        DM320_REG(0x0692)
#define IO_OSD_VIDWINADH          DM320_REG(0x0694)
#define IO_OSD_VIDWIN0ADL         DM320_REG(0x0696)
#define IO_OSD_VIDWIN1ADL         DM320_REG(0x0698)
#define IO_OSD_OSDWINADH          DM320_REG(0x069A)
#define IO_OSD_OSDWIN0ADL         DM320_REG(0x069C)
#define IO_OSD_OSDWIN1ADL         DM320_REG(0x069E)
#define IO_OSD_BASEPX             DM320_REG(0x06A0)
#define IO_OSD_BASEPY             DM320_REG(0x06A2)
#define IO_OSD_VIDWIN0XP          DM320_REG(0x06A4)
#define IO_OSD_VIDWIN0YP          DM320_REG(0x06A6)
#define IO_OSD_VIDWIN0XL          DM320_REG(0x06A8)
#define IO_OSD_VIDWIN0YL          DM320_REG(0x06AA)
#define IO_OSD_VIDWIN1XP          DM320_REG(0x06AC)
#define IO_OSD_VIDWIN1YP          DM320_REG(0x06AE)
#define IO_OSD_VIDWIN1XL          DM320_REG(0x06B0)
#define IO_OSD_VIDWIN1YL          DM320_REG(0x06B2)

#define IO_OSD_OSDWIN0XP          DM320_REG(0x06B4)
#define IO_OSD_OSDWIN0YP          DM320_REG(0x06B6)
#define IO_OSD_OSDWIN0XL          DM320_REG(0x06B8)
#define IO_OSD_OSDWIN0YL          DM320_REG(0x06BA)
#define IO_OSD_OSDWIN1XP          DM320_REG(0x06BC)
#define IO_OSD_OSDWIN1YP          DM320_REG(0x06BE)
#define IO_OSD_OSDWIN1XL          DM320_REG(0x06C0)
#define IO_OSD_OSDWIN1YL          DM320_REG(0x06C2)
#define IO_OSD_CURXP              DM320_REG(0x06C4)
#define IO_OSD_CURYP              DM320_REG(0x06C6)
#define IO_OSD_CURXL              DM320_REG(0x06C8)
#define IO_OSD_CURYL              DM320_REG(0x06CA)

#define IO_OSD_W0BMP01            DM320_REG(0x06D0)
#define IO_OSD_W0BMP23            DM320_REG(0x06D2)
#define IO_OSD_W0BMP45            DM320_REG(0x06D4)
#define IO_OSD_W0BMP67            DM320_REG(0x06D6)
#define IO_OSD_W0BMP89            DM320_REG(0x06D8)
#define IO_OSD_W0BMPAB            DM320_REG(0x06DA)
#define IO_OSD_W0BMPCD            DM320_REG(0x06DC)
#define IO_OSD_W0BMPEF            DM320_REG(0x06DE)

#define IO_OSD_W1BMP01            DM320_REG(0x06E0)
#define IO_OSD_W1BMP23            DM320_REG(0x06E2)
#define IO_OSD_W1BMP45            DM320_REG(0x06E4)
#define IO_OSD_W1BMP67            DM320_REG(0x06E6)
#define IO_OSD_W1BMP89            DM320_REG(0x06E8)
#define IO_OSD_W1BMPAB            DM320_REG(0x06EA)
#define IO_OSD_W1BMPCD            DM320_REG(0x06EC)
#define IO_OSD_W1BMPEF            DM320_REG(0x06EE)

#define IO_OSD_MISCCTL            DM320_REG(0x06F4)
#define IO_OSD_CLUTRAMYCB         DM320_REG(0x06F6)
#define IO_OSD_CLUTRAMCR          DM320_REG(0x06F8)

#define IO_OSD_PPWIN0ADH          DM320_REG(0x06FC)
#define IO_OSD_PPWIN0ADL          DM320_REG(0x06FE)


/* CCD Controller */
#define IO_CCD_SYNCEN             DM320_REG(0x0700)
#define IO_CCD_MODESET            DM320_REG(0x0702)
#define IO_CCD_HDWIDTH            DM320_REG(0x0704)
#define IO_CCD_VDWIDTH            DM320_REG(0x0706)
#define IO_CCD_PPLN               DM320_REG(0x0708)
#define IO_CCD_LPFR               DM320_REG(0x070A)
#define IO_CCD_SPH                DM320_REG(0x070C)
#define IO_CCD_NPH                DM320_REG(0x070E)
#define IO_CCD_SLV0               DM320_REG(0x0710)
#define IO_CCD_SLV1               DM320_REG(0x0712)
#define IO_CCD_NLV                DM320_REG(0x0714)
#define IO_CCD_CULH               DM320_REG(0x0716)
#define IO_CCD_CULV               DM320_REG(0x0718)
#define IO_CCD_HSIZE              DM320_REG(0x071A)
#define IO_CCD_SDOFST             DM320_REG(0x071C)
#define IO_CCD_STADRH             DM320_REG(0x071E)
#define IO_CCD_STADRL             DM320_REG(0x0720)
#define IO_CCD_CLAMP              DM320_REG(0x0722)
#define IO_CCD_DCSUB              DM320_REG(0x0724)
#define IO_CCD_COLPTN             DM320_REG(0x0726)
#define IO_CCD_BLKCMP0            DM320_REG(0x0728)
#define IO_CCD_BLKCMP1            DM320_REG(0x072A)
#define IO_CCD_MEDFILT            DM320_REG(0x072C)
#define IO_CCD_RYEGAIN            DM320_REG(0x072E)
#define IO_CCD_GRCYGAIN           DM320_REG(0x0730)
#define IO_CCD_GBGGAIN            DM320_REG(0x0732)
#define IO_CCD_BMGGAIN            DM320_REG(0x0734)
#define IO_CCD_OFFSET             DM320_REG(0x0736)
#define IO_CCD_OUTCLP             DM320_REG(0x0738)
#define IO_CCD_VDINT0             DM320_REG(0x073A)
#define IO_CCD_VDINT1             DM320_REG(0x073C)
#define IO_CCD_RSV0               DM320_REG(0x073E)
#define IO_CCD_GAMMAWD            DM320_REG(0x0740)
#define IO_CCD_REC656IF           DM320_REG(0x0742)
#define IO_CCD_CCDFG              DM320_REG(0x0744)
#define IO_CCD_FMTCFG             DM320_REG(0x0746)
#define IO_CCD_FMTSPH             DM320_REG(0x0748)
#define IO_CCD_FMTLNH             DM320_REG(0x074A)
#define IO_CCD_FMTSLV             DM320_REG(0x074C)
#define IO_CCD_FMTSNV             DM320_REG(0x074E)
#define IO_CCD_FMTOFST            DM320_REG(0x0750)
#define IO_CCD_FMTRLEN            DM320_REG(0x0752)
#define IO_CCD_FMTHCNT            DM320_REG(0x0754)
#define IO_CCD_FMTPTNA            DM320_REG(0x0756)
#define IO_CCD_FMTPTNB            DM320_REG(0x0758)

/* NTSC/PAL Encoder */
#define IO_VID_ENC_VMOD           DM320_REG(0x0800)
#define IO_VID_ENC_VDCTL          DM320_REG(0x0802)
#define IO_VID_ENC_VDPRO          DM320_REG(0x0804)
#define IO_VID_ENC_SYNCTL         DM320_REG(0x0806)
#define IO_VID_ENC_HSPLS          DM320_REG(0x0808)
#define IO_VID_ENC_VSPLS          DM320_REG(0x080A)
#define IO_VID_ENC_HINT           DM320_REG(0x080C)
#define IO_VID_ENC_HSTART         DM320_REG(0x080E)
#define IO_VID_ENC_HVALID         DM320_REG(0x0810)
#define IO_VID_ENC_VINT           DM320_REG(0x0812)
#define IO_VID_ENC_VSTART         DM320_REG(0x0814)
#define IO_VID_ENC_VVALID         DM320_REG(0x0816)
#define IO_VID_ENC_HSDLY          DM320_REG(0x0818)
#define IO_VID_ENC_VSDLY          DM320_REG(0x081A)
#define IO_VID_ENC_YCCTL          DM320_REG(0x081C)
#define IO_VID_ENC_RGBCTL         DM320_REG(0x081E)
#define IO_VID_ENC_RGBCLP         DM320_REG(0x0820)
#define IO_VID_ENC_LNECTL         DM320_REG(0x0822)
#define IO_VID_ENC_CULLLNE        DM320_REG(0x0824)
#define IO_VID_ENC_LCDOUT         DM320_REG(0x0826)
#define IO_VID_ENC_BRTS           DM320_REG(0x0828)
#define IO_VID_ENC_BRTW           DM320_REG(0x082A)
#define IO_VID_ENC_ACCTL          DM320_REG(0x082C)
#define IO_VID_ENC_PWMP           DM320_REG(0x082E)
#define IO_VID_ENC_PWMW           DM320_REG(0x0830)
#define IO_VID_ENC_DCLKCTL        DM320_REG(0x0832)
#define IO_VID_ENC_DCLKPTN0       DM320_REG(0x0834)
#define IO_VID_ENC_DCLKPTN1       DM320_REG(0x0836)
#define IO_VID_ENC_DCLKPTN2       DM320_REG(0x0838)
#define IO_VID_ENC_DCLKPTN3       DM320_REG(0x083A)
#define IO_VID_ENC_DCLKPTN0A      DM320_REG(0x083C)
#define IO_VID_ENC_DCLKPTN1A      DM320_REG(0x083E)
#define IO_VID_ENC_DCLKPTN2A      DM320_REG(0x0840)
#define IO_VID_ENC_DCLKPTN3A      DM320_REG(0x0842)
#define IO_VID_ENC_DCLKHS         DM320_REG(0x0844)
#define IO_VID_ENC_DCLKHSA        DM320_REG(0x0846)
#define IO_VID_ENC_DCLKHR         DM320_REG(0x0848)
#define IO_VID_ENC_DCLKVS         DM320_REG(0x084A)
#define IO_VID_ENC_DCLKVR         DM320_REG(0x084C)
#define IO_VID_ENC_CAPCTL         DM320_REG(0x084E)
#define IO_VID_ENC_CAPDO          DM320_REG(0x0850)
#define IO_VID_ENC_CAPDE          DM320_REG(0x0852)
#define IO_VID_ENC_ATR0           DM320_REG(0x0854)

/* Clock Controller */
#define IO_CLK_PLLA               DM320_REG(0x0880)
#define IO_CLK_PLLB               DM320_REG(0x0882)
#define IO_CLK_SEL0               DM320_REG(0x0884)
#define IO_CLK_SEL1               DM320_REG(0x0886)
#define IO_CLK_SEL2               DM320_REG(0x0888)
#define IO_CLK_DIV0               DM320_REG(0x088A)
#define IO_CLK_DIV1               DM320_REG(0x088C)
#define IO_CLK_DIV2               DM320_REG(0x088E)
#define IO_CLK_DIV3               DM320_REG(0x0890)
#define IO_CLK_DIV4               DM320_REG(0x0892)
#define IO_CLK_BYP                DM320_REG(0x0894)
#define IO_CLK_INV                DM320_REG(0x0896)
#define IO_CLK_MOD0               DM320_REG(0x0898)
#define IO_CLK_MOD1               DM320_REG(0x089A)
#define IO_CLK_MOD2               DM320_REG(0x089C)
#define IO_CLK_LPCTL0             DM320_REG(0x089E)
#define IO_CLK_LPCTL1             DM320_REG(0x08A0)
#define IO_CLK_OSEL               DM320_REG(0x08A2)
#define IO_CLK_O0DIV              DM320_REG(0x08A4)
#define IO_CLK_O1DIV              DM320_REG(0x08A6)
#define IO_CLK_O2DIV              DM320_REG(0x08A8)
#define IO_CLK_PWM0C              DM320_REG(0x08AA)
#define IO_CLK_PWM0H              DM320_REG(0x08AC)
#define IO_CLK_PWM1C              DM320_REG(0x08AE)
#define IO_CLK_PWM1H              DM320_REG(0x08B0)

/* Bus Controller */
#define IO_BUSC_ECR               DM320_REG(0x0900)
#define IO_BUSC_EBYTER            DM320_REG(0x0902)
#define IO_BUSC_EBITR             DM320_REG(0x0904)
#define IO_BUSC_REVR              DM320_REG(0x0906)

/* Known Silicon Revisions */
#define REVR_ES10                 0x0010
#define REVR_ES11                 0x0011

/* SDRAM Controller */
#define IO_SDRAM_SDBUFD0L         DM320_REG(0x0980)
#define IO_SDRAM_SDBUFD0H         DM320_REG(0x0982)
#define IO_SDRAM_SDBUFD1L         DM320_REG(0x0984)
#define IO_SDRAM_SDBUFD1H         DM320_REG(0x0986)
#define IO_SDRAM_SDBUFD2L         DM320_REG(0x0988)
#define IO_SDRAM_SDBUFD2H         DM320_REG(0x098A)
#define IO_SDRAM_SDBUFD3L         DM320_REG(0x098C)
#define IO_SDRAM_SDBUFD3H         DM320_REG(0x098E)
#define IO_SDRAM_SDBUFD4L         DM320_REG(0x0990)
#define IO_SDRAM_SDBUFD4H         DM320_REG(0x0992)
#define IO_SDRAM_SDBUFD5L         DM320_REG(0x0994)
#define IO_SDRAM_SDBUFD5H         DM320_REG(0x0996)
#define IO_SDRAM_SDBUFD6L         DM320_REG(0x0998)
#define IO_SDRAM_SDBUFD6H         DM320_REG(0x099A)
#define IO_SDRAM_SDBUFD7L         DM320_REG(0x099C)
#define IO_SDRAM_SDBUFD7H         DM320_REG(0x099E)
#define IO_SDRAM_SDBUFAD1         DM320_REG(0x09A0)
#define IO_SDRAM_SDBUFAD2         DM320_REG(0x09A2)
#define IO_SDRAM_SDBUFCTL         DM320_REG(0x09A4)
#define IO_SDRAM_SDMODE           DM320_REG(0x09A6)
#define IO_SDRAM_REFCTL           DM320_REG(0x09A8)
#define IO_SDRAM_SDPRTY1          DM320_REG(0x09AA)
#define IO_SDRAM_SDPRTY2          DM320_REG(0x09AC)
#define IO_SDRAM_SDPRTY3          DM320_REG(0x09AE)
#define IO_SDRAM_SDPRTY4          DM320_REG(0x09B0)
#define IO_SDRAM_SDPRTY5          DM320_REG(0x09B2)
#define IO_SDRAM_SDPRTY6          DM320_REG(0x09B4)
#define IO_SDRAM_SDPRTY7          DM320_REG(0x09B6)
#define IO_SDRAM_SDPRTY8          DM320_REG(0x09B8)
#define IO_SDRAM_SDPRTY9          DM320_REG(0x09BA)
#define IO_SDRAM_SDPRTY10         DM320_REG(0x09BC)
#define IO_SDRAM_SDPRTY11         DM320_REG(0x09BE)
#define IO_SDRAM_SDPRTY12         DM320_REG(0x09C0)
#define IO_SDRAM_RSV              DM320_REG(0x09C2)
#define IO_SDRAM_SDPRTYON         DM320_REG(0x09C4)
#define IO_SDRAM_SDDMASEL         DM320_REG(0x09C6)

/* EMIF Controller */
#define IO_EMIF_CS0CTRL1          DM320_REG(0x0A00)
#define IO_EMIF_CS0CTRL2          DM320_REG(0x0A02)
#define IO_EMIF_CS0CTRL3          DM320_REG(0x0A04)
#define IO_EMIF_CS1CTRL1A         DM320_REG(0x0A06)
#define IO_EMIF_CS1CTRL1B         DM320_REG(0x0A08)
#define IO_EMIF_CS1CTRL2          DM320_REG(0x0A0A)
#define IO_EMIF_CS2CTRL1          DM320_REG(0x0A0C)
#define IO_EMIF_CS2CTRL2          DM320_REG(0x0A0E)
#define IO_EMIF_CS3CTRL1          DM320_REG(0x0A10)
#define IO_EMIF_CS3CTRL2          DM320_REG(0x0A12)
#define IO_EMIF_CS4CTRL1          DM320_REG(0x0A14)
#define IO_EMIF_CS4CTRL2          DM320_REG(0x0A16)
#define IO_EMIF_BUSCTRL           DM320_REG(0x0A18)
#define IO_EMIF_BUSRLS            DM320_REG(0x0A1A)
#define IO_EMIF_CFCTRL1           DM320_REG(0x0A1C)
#define IO_EMIF_CFCTRL2           DM320_REG(0x0A1E)
#define IO_EMIF_SMCTRL            DM320_REG(0x0A20)
#define IO_EMIF_BUSINTEN          DM320_REG(0x0A22)
#define IO_EMIF_BUSSTS            DM320_REG(0x0A24)
#define IO_EMIF_BUSWAITMD         DM320_REG(0x0A26)
#define IO_EMIF_ECC1CP            DM320_REG(0x0A28)
#define IO_EMIF_ECC1LP            DM320_REG(0x0A2A)
#define IO_EMIF_ECC2CP            DM320_REG(0x0A2C)
#define IO_EMIF_ECC2LP            DM320_REG(0x0A2E)
#define IO_EMIF_ECC3CP            DM320_REG(0x0A30)
#define IO_EMIF_ECC3LP            DM320_REG(0x0A32)
#define IO_EMIF_ECC4CP            DM320_REG(0x0A34)
#define IO_EMIF_ECC4LP            DM320_REG(0x0A36)
#define IO_EMIF_ECC5CP            DM320_REG(0x0A38)
#define IO_EMIF_ECC5LP            DM320_REG(0x0A3A)
#define IO_EMIF_ECC6CP            DM320_REG(0x0A3C)
#define IO_EMIF_ECC6LP            DM320_REG(0x0A3E)
#define IO_EMIF_ECC7CP            DM320_REG(0x0A40)
#define IO_EMIF_ECC7LP            DM320_REG(0x0A42)
#define IO_EMIF_ECC8CP            DM320_REG(0x0A44)
#define IO_EMIF_ECC8LP            DM320_REG(0x0A46)
#define IO_EMIF_ECCCLR            DM320_REG(0x0A48)
#define IO_EMIF_PAGESZ            DM320_REG(0x0A4A)
#define IO_EMIF_PRIORCTL          DM320_REG(0x0A4C)
#define IO_EMIF_MGDSPDEST         DM320_REG(0x0A4E)
#define IO_EMIF_MGDSPADDH         DM320_REG(0x0A50)
#define IO_EMIF_MGDSPADDL         DM320_REG(0x0A52)
#define IO_EMIF_AHBADDH           DM320_REG(0x0A54)
#define IO_EMIF_AHBADDL           DM320_REG(0x0A56)
#define IO_EMIF_MTCADDH           DM320_REG(0x0A58)
#define IO_EMIF_MTCADDL           DM320_REG(0x0A5A)
#define IO_EMIF_DMASIZE           DM320_REG(0x0A5C)
#define IO_EMIF_DMAMTCSEL         DM320_REG(0x0A5E)
#define IO_EMIF_DMACTL            DM320_REG(0x0A60)

/* Preivew Engine */
#define IO_PREV_ENG_PVEN          DM320_REG(0x0A80)
#define IO_PREV_ENG_PVSET1        DM320_REG(0x0A82)
#define IO_PREV_ENG_RADRH         DM320_REG(0x0A84)
#define IO_PREV_ENG_RADRL         DM320_REG(0x0A86)
#define IO_PREV_ENG_WADRH         DM320_REG(0x0A88)
#define IO_PREV_ENG_WADRL         DM320_REG(0x0A8A)
#define IO_PREV_ENG_HSTART        DM320_REG(0x0A8C)
#define IO_PREV_ENG_HSIZE         DM320_REG(0x0A8E)
#define IO_PREV_ENG_VSTART        DM320_REG(0x0A90)
#define IO_PREV_ENG_VSIZE         DM320_REG(0x0A92)
#define IO_PREV_ENG_PVSET2        DM320_REG(0x0A94)
#define IO_PREV_ENG_NFILT         DM320_REG(0x0A96)
#define IO_PREV_ENG_DGAIN         DM320_REG(0x0A98)
#define IO_PREV_ENG_WBGAIN0       DM320_REG(0x0A9A)
#define IO_PREV_ENG_WBGAIN1       DM320_REG(0x0A9C)
#define IO_PREV_ENG_SMTH          DM320_REG(0x0A9E)
#define IO_PREV_ENG_HRSZ          DM320_REG(0x0AA0)
#define IO_PREV_ENG_VRSZ          DM320_REG(0x0AA2)
#define IO_PREV_ENG_BLOFST0       DM320_REG(0x0AA4)
#define IO_PREV_ENG_BLOFST1       DM320_REG(0x0AA6)
#define IO_PREV_ENG_MTXGAIN0      DM320_REG(0x0AA8)
#define IO_PREV_ENG_MTXGAIN1      DM320_REG(0x0AAA)
#define IO_PREV_ENG_MTXGAIN2      DM320_REG(0x0AAC)
#define IO_PREV_ENG_MTXGAIN3      DM320_REG(0x0AAE)
#define IO_PREV_ENG_MTXGAIN4      DM320_REG(0x0AB0)
#define IO_PREV_ENG_MTXGAIN5      DM320_REG(0x0AB2)
#define IO_PREV_ENG_MTXGAIN6      DM320_REG(0x0AB4)
#define IO_PREV_ENG_MTXGAIN7      DM320_REG(0x0AB6)
#define IO_PREV_ENG_MTXGAIN8      DM320_REG(0x0AB8)
#define IO_PREV_ENG_MTXOFST0      DM320_REG(0x0ABA)
#define IO_PREV_ENG_MTXOFST1      DM320_REG(0x0ABC)
#define IO_PREV_ENG_MTXOFST2      DM320_REG(0x0ABE)
#define IO_PREV_ENG_GAMTBYP       DM320_REG(0x0AC0)
#define IO_PREV_ENG_CSC0          DM320_REG(0x0AC2)
#define IO_PREV_ENG_CSC1          DM320_REG(0x0AC4)
#define IO_PREV_ENG_CSC2          DM320_REG(0x0AC6)
#define IO_PREV_ENG_CSC3          DM320_REG(0x0AC8)
#define IO_PREV_ENG_CSC4          DM320_REG(0x0ACA)
#define IO_PREV_ENG_YOFST         DM320_REG(0x0ACC)
#define IO_PREV_ENG_COFST         DM320_REG(0x0ACE)
#define IO_PREV_ENG_CNTBRT        DM320_REG(0x0AD0)
#define IO_PREV_ENG_CSUP0         DM320_REG(0x0AD2)
#define IO_PREV_ENG_CSUP1         DM320_REG(0x0AD4)
#define IO_PREV_ENG_SETUPY        DM320_REG(0x0AD4)
#define IO_PREV_ENG_SETUPC        DM320_REG(0x0AD8)
#define IO_PREV_ENG_TABLE_ADDR    DM320_REG(0x0ADA)
#define IO_PREV_ENG_TABLE_DATA    DM320_REG(0x0ADC)
#define IO_PREV_ENG_HG_CTL        DM320_REG(0x0ADE)
#define IO_PREV_ENG_HG_R0_HSTART  DM320_REG(0x0AE0)
#define IO_PREV_ENG_HG_R0_HSIZE   DM320_REG(0x0AE2)
#define IO_PREV_ENG_HG_R0_VSTART  DM320_REG(0x0AE4)
#define IO_PREV_ENG_HR_R0_VSIZE   DM320_REG(0x0AE6)
#define IO_PREV_ENG_HG_R1_HSTART  DM320_REG(0x0AE8)
#define IO_PREV_ENG_HG_R1_HSIZE   DM320_REG(0x0AEA)
#define IO_PREV_ENG_HG_R1_VSTART  DM320_REG(0x0AEC)
#define IO_PREV_ENG_HG_R1_VSIZE   DM320_REG(0x0AEE)
#define IO_PREV_ENG_HG_R2_HSTART  DM320_REG(0x0AF0)
#define IO_PREV_ENG_HG_R2_HSIZE   DM320_REG(0x0AF2)
#define IO_PREV_ENG_HG_R2_VSTART  DM320_REG(0x0AF4)
#define IO_PREV_ENG_HG_R2_VSIZE   DM320_REG(0x0AF6)
#define IO_PREV_ENG_HG_R3_HSTART  DM320_REG(0x0AF8)
#define IO_PREV_ENG_HG_R3_HSIZE   DM320_REG(0x0AFA)
#define IO_PREV_ENG_HG_R3_VSTART  DM320_REG(0x0AFC)
#define IO_PREV_ENG_HG_R3_VSIZE   DM320_REG(0x0AFE)
#define IO_PREV_ENG_HG_ADDR       DM320_REG(0x0B00)
#define IO_PREV_ENG_HG_DATA       DM320_REG(0x0B02)

/* H3A Hardware */
#define IO_H3A_H3ACTRL            DM320_REG(0x0B80)
#define IO_H3A_AFCTRL             DM320_REG(0x0B82)
#define IO_H3A_AFPAX1             DM320_REG(0x0B84)
#define IO_H3A_AFPAX2             DM320_REG(0x0B86)
#define IO_H3A_AFPAX3             DM320_REG(0x0B88)
#define IO_H3A_AFPAX4             DM320_REG(0x0B8A)
#define IO_H3A_AFIRSH             DM320_REG(0x0B8C)
#define IO_H3A_AFPAX5             DM320_REG(0x0B8E)
#define IO_H3A_AFSDRA1            DM320_REG(0x0B90)
#define IO_H3A_AFSDRA2            DM320_REG(0x0B92)
#define IO_H3A_AFSDRFLG           DM320_REG(0x0B94)
#define IO_H3A_AFCOEFF10          DM320_REG(0x0B96)
#define IO_H3A_AFCOEFF11          DM320_REG(0x0B98)
#define IO_H3A_AFCOEFF12          DM320_REG(0x0B9A)
#define IO_H3A_AFCOEFF13          DM320_REG(0x0B9C)
#define IO_H3A_AFCOEFF14          DM320_REG(0x0B9E)
#define IO_H3A_AFCOEFF15          DM320_REG(0x0BA0)
#define IO_H3A_AFCOEFF16          DM320_REG(0x0BA2)
#define IO_H3A_AFCOEFF17          DM320_REG(0x0BA4)
#define IO_H3A_AFCOEFF18          DM320_REG(0x0BA6)
#define IO_H3A_AFCOEFF19          DM320_REG(0x0BA8)
#define IO_H3A_AFCOEFF110         DM320_REG(0x0BAA)
#define IO_H3A_AFCOEFF20          DM320_REG(0x0BAC)
#define IO_H3A_AFCOEFF21          DM320_REG(0x0BAE)
#define IO_H3A_AFCOEFF22          DM320_REG(0x0BB0)
#define IO_H3A_AFCOEFF23          DM320_REG(0x0BB2)
#define IO_H3A_AFCOEFF24          DM320_REG(0x0BB4)
#define IO_H3A_AFCOEFF25          DM320_REG(0x0BB6)
#define IO_H3A_AFCOEFF26          DM320_REG(0x0BB8)
#define IO_H3A_AFCOEFF27          DM320_REG(0x0BBA)
#define IO_H3A_AFCOEFF28          DM320_REG(0x0BBC)
#define IO_H3A_AFCOEFF29          DM320_REG(0x0BBE)
#define IO_H3A_AFCOEFF210         DM320_REG(0x0BC0)
#define IO_H3A_AEWCTRL            DM320_REG(0x0BC2)
#define IO_H3A_AEWWIN1            DM320_REG(0x0BC4)
#define IO_H3A_AEWWIN2            DM320_REG(0x0BC6)
#define IO_H3A_AEWWIN3            DM320_REG(0x0BC8)
#define IO_H3A_AEWWIN4            DM320_REG(0x0BCA)
#define IO_H3A_AEWWIN5            DM320_REG(0x0BCC)
#define IO_H3A_AEWSDRA1           DM320_REG(0x0BCE)
#define IO_H3A_AEWSDRA2           DM320_REG(0x0BD0)
#define IO_H3A_AEWSDRFLG          DM320_REG(0x0BD2)

/* Reserved 0x0C00 - 0x0CCFF */

/* Memory Stick Controller : */
#define IO_MEM_STICK_MODE         DM320_REG(0x0C80)
#define IO_MEM_STICK_CMD          DM320_REG(0x0C82)
#define IO_MEM_STICK_DATA         DM320_REG(0x0C84)
#define IO_MEM_STICK_STATUS       DM320_REG(0x0C86)
#define IO_MEM_STICK_SYS          DM320_REG(0x0C88)
#define IO_MEM_STICK_ENDIAN       DM320_REG(0x0C8A)
#define IO_MEM_STICK_INT_STATUS   DM320_REG(0x0C8C)
#define IO_MEM_STICK_DMA_TRG      DM320_REG(0x0C8E)
#define IO_MEM_STICK_DMA_MODE     DM320_REG(0x0C90)
#define IO_MEM_STICK_SDRAM_ADDL   DM320_REG(0x0C92)
#define IO_MEM_STICK_SDRAM_ADDH   DM320_REG(0x0C94)
#define IO_MEM_STICK_DMA_STATUS   DM320_REG(0x0C96)

/* ATM : WBB Need to find these Register values */
#define IO_ATM_                   DM320_REG(0x0D00)

/* I2C */
#define IO_I2C_TXDATA             DM320_REG(0x0D80)
#define IO_I2C_RXDATA             DM320_REG(0x0D82)
#define IO_I2C_SCS                DM320_REG(0x0D84)

/* VLYNQ */
#define VL_ID                     DM320_REG2(0x0300)
#define VL_CTRL                   DM320_REG2(0x0304)
#define VL_STAT                   DM320_REG2(0x0308)
#define VL_INTPRI                 DM320_REG2(0x030c)
#define VL_INTST                  DM320_REG2(0x0310)
#define VL_INTPND                 DM320_REG2(0x0314)
#define VL_INTPTR                 DM320_REG2(0x0318)
#define VL_TXMAP                  DM320_REG2(0x031c)
#define VL_RXMAPSZ1               DM320_REG2(0x0320)
#define VL_RXMAPOF1               DM320_REG2(0x0324)
#define VL_RXMAPSZ2               DM320_REG2(0x0328)
#define VL_RXMAPOF2               DM320_REG2(0x032c)
#define VL_RXMAPSZ3               DM320_REG2(0x0330)
#define VL_RXMAPOF3               DM320_REG2(0x0334)
#define VL_RXMAPSZ4               DM320_REG2(0x0338)
#define VL_RXMAPOF4               DM320_REG2(0x033c)
#define VL_CHIPVER                DM320_REG2(0x0340)
#define VL_AUTONEG                DM320_REG2(0x0344)
#define VL_MANNEG                 DM320_REG2(0x0348)
#define VL_NEGSTAT                DM320_REG2(0x034c)
#define VL_ENDIAN                 DM320_REG2(0x035c)
#define VL_INTVEC30               DM320_REG2(0x0360)
#define VL_INTVEC74               DM320_REG2(0x0364)
#define VL_ID_R                   DM320_REG2(0x0380)
#define VL_CTRL_R                 DM320_REG2(0x0384)
#define VL_STAT_R                 DM320_REG2(0x0388)
#define VL_INTPRI_R               DM320_REG2(0x038c)
#define VL_INTST_R                DM320_REG2(0x0390)
#define VL_INTPND_R               DM320_REG2(0x0394)
#define VL_INTPTR_R               DM320_REG2(0x0398)
#define VL_TXMAP_R                DM320_REG2(0x039c)
#define VL_RXMAPSZ1_R             DM320_REG2(0x03a0)
#define VL_RXMAPOF1_R             DM320_REG2(0x03a4)
#define VL_RXMAPSZ2_R             DM320_REG2(0x03a8)
#define VL_RXMAPOF2_R             DM320_REG2(0x03ac)
#define VL_RXMAPSZ3_R             DM320_REG2(0x03b0)
#define VL_RXMAPOF3_R             DM320_REG2(0x03b4)
#define VL_RXMAPSZ4_R             DM320_REG2(0x03b8)
#define VL_RXMAPOF4_R             DM320_REG2(0x03bc)
#define VL_CHIPVER_R              DM320_REG2(0x03c0)
#define VL_AUTONEG_R              DM320_REG2(0x03c4)
#define VL_MANNEG_R               DM320_REG2(0x03c8)
#define VL_NEGSTAT_R              DM320_REG2(0x03cc)
#define VL_ENDIAN_R               DM320_REG2(0x03dc)
#define VL_INTVEC30_R             DM320_REG2(0x03e0)
#define VL_INTVEC74_R             DM320_REG2(0x03e4)

/* Coprocessor Interface */
#define COP_SDEM_ADDRH          DM320_COP(0xe000)
#define COP_SDEM_ADDRL          DM320_COP(0xe002)
#define COP_SDEM_LOFST          DM320_COP(0xe004)
#define COP_BUF_ADDR            DM320_COP(0xe006)
#define COP_BUF_LOFST           DM320_COP(0xe008)
#define COP_DMA_XNUM            DM320_COP(0xe00a)
#define COP_DMA_YNUM            DM320_COP(0xe00c)
#define COP_DMA_CTRL            DM320_COP(0xe00e)
#define COP_BUF_MUX0            DM320_COP(0xe010)
#define COP_BUF_MUX1            DM320_COP(0xe012)
#define COP_IMG_MODE            DM320_COP(0xe014)
#define COP_CP_CLKC             DM320_COP(0xe502)


/* Taken from linux/include/asm-arm/arch-itdm320/irqs.h
 *
 *  Copyright (C) 1999 ARM Limited
 *  Copyright (C) 2004 Ingenient Technologies
 */

/*
 *  Interrupt numbers
 */
#define IRQ_TIMER0     0
#define IRQ_TIMER1     1
#define IRQ_TIMER2     2
#define IRQ_TIMER3     3
#define IRQ_CCD_VD0    4
#define IRQ_CCD_VD1    5
#define IRQ_CCD_WEN    6
#define IRQ_VENC       7
#define IRQ_SERIAL0    8
#define IRQ_SERIAL1    9
#define IRQ_EXT_HOST   10
#define IRQ_DSPHINT    11
#define IRQ_UART0      12
#define IRQ_UART1      13
#define IRQ_USB_DMA    14
#define IRQ_USB_CORE   15
#define IRQ_VLYNQ      16
#define IRQ_MTC0       17
#define IRQ_MTC1       18
#define IRQ_SD_MMC     19
#define IRQ_SDIO_MS    20
#define IRQ_GIO0       21
#define IRQ_GIO1       22
#define IRQ_GIO2       23
#define IRQ_GIO3       24
#define IRQ_GIO4       25
#define IRQ_GIO5       26
#define IRQ_GIO6       27
#define IRQ_GIO7       28
#define IRQ_GIO8       29
#define IRQ_GIO9       30
#define IRQ_GIO10      31
#define IRQ_GIO11      32
#define IRQ_GIO12      33
#define IRQ_GIO13      34
#define IRQ_GIO14      35
#define IRQ_GIO15      36
#define IRQ_PREVIEW0   37
#define IRQ_PREVIEW1   38
#define IRQ_WATCHDOG   39
#define IRQ_I2C        40
#define IRQ_CLKC       41

/* Embedded Debugging Interrupts */
#define IRQ_ICE        42
#define IRQ_ARMCOM_RX  43
#define IRQ_ARMCOM_TX  44

#define IRQ_RESERVED   45

#define NR_IRQS        46

/*  Taken from linux/include/asm-arm/arch-integrator/timex.h
 *
 *  Copyright (C) 1999 ARM Limited
 */

#define CONFIG_TIMER0_TMMD_STOP        0x0000
#define CONFIG_TIMER0_TMMD_ONE_SHOT    0x0001
#define CONFIG_TIMER0_TMMD_FREE_RUN    0x0002

#define CONFIG_TIMER1_TMMD_STOP        0x0000
#define CONFIG_TIMER1_TMMD_ONE_SHOT    0x0001
#define CONFIG_TIMER1_TMMD_FREE_RUN    0x0002

#define CONFIG_TIMER2_TMMD_STOP        0x0000
#define CONFIG_TIMER2_TMMD_ONE_SHOT    0x0001
#define CONFIG_TIMER2_TMMD_FREE_RUN    0x0002
#define CONFIG_TIMER2_TMMD_CCD_SHUTTER 0x0100
#define CONFIG_TIMER2_TMMD_CCD_STROBE  0x0200
#define CONFIG_TIMER2_TMMD_POLARITY    0x0400
#define CONFIG_TIMER2_TMMD_TRG_SELECT  0x0800
#define CONFIG_TIMER2_TMMD_TRG_READY   0x1000
#define CONFIG_TIMER2_TMMD_SIGNAL      0x2000

#define CONFIG_TIMER3_TMMD_STOP        0x0000
#define CONFIG_TIMER3_TMMD_ONE_SHOT    0x0001
#define CONFIG_TIMER3_TMMD_FREE_RUN    0x0002
#define CONFIG_TIMER3_TMMD_CCD_SHUTTER 0x0100
#define CONFIG_TIMER3_TMMD_CCD_STROBE  0x0200
#define CONFIG_TIMER3_TMMD_POLARITY    0x0400
#define CONFIG_TIMER3_TMMD_TRG_SELECT  0x0800
#define CONFIG_TIMER3_TMMD_TRG_READY   0x1000
#define CONFIG_TIMER3_TMMD_SIGNAL      0x2000

/*
 *  IO_MODx bits
 */
#define CLK_MOD0_HPIB                  (1 << 11)
#define CLK_MOD0_DSP                   (1 << 10)
#define CLK_MOD0_EXTHOST               (1 << 9)
#define CLK_MOD0_SDRAMC                (1 << 8)
#define CLK_MOD0_EMIF                  (1 << 7)
#define CLK_MOD0_INTC                  (1 << 6)
#define CLK_MOD0_AIM                   (1 << 5)
#define CLK_MOD0_E2ICE                 (1 << 4)
#define CLK_MOD0_ETM                   (1 << 3)
#define CLK_MOD0_AHB                   (1 << 2)
#define CLK_MOD0_BUSC                  (1 << 1)
#define CLK_MOD0_ARM                   (1 << 0)

#define CLK_MOD1_CPBUS                 (1 << 11)
#define CLK_MOD1_SEQ                   (1 << 10)
#define CLK_MOD1_DCT                   (1 << 9)
#define CLK_MOD1_IMGBUF                (1 << 8)
#define CLK_MOD1_IMX                   (1 << 7)
#define CLK_MOD1_VLCD                  (1 << 6)
#define CLK_MOD1_DAC                   (1 << 5)
#define CLK_MOD1_VENC                  (1 << 4)
#define CLK_MOD1_OSD                   (1 << 3)
#define CLK_MOD1_PRV                   (1 << 2)
#define CLK_MOD1_H3A                   (1 << 1)
#define CLK_MOD1_CCDC                  (1 << 0)

#define CLK_MOD2_TEST                  (1 << 15)
#define CLK_MOD2_MS                    (1 << 14)
#define CLK_MOD2_VLYNQ                 (1 << 13)
#define CLK_MOD2_I2C                   (1 << 12)
#define CLK_MOD2_MMC                   (1 << 11)
#define CLK_MOD2_SIF1                  (1 << 10)
#define CLK_MOD2_SIF0                  (1 << 9)
#define CLK_MOD2_UART1                 (1 << 8)
#define CLK_MOD2_UART0                 (1 << 7)
#define CLK_MOD2_USB                   (1 << 6)
#define CLK_MOD2_GIO                   (1 << 5)
#define CLK_MOD2_CCDTMR1               (1 << 4)
#define CLK_MOD2_CCDTMR0               (1 << 3)
#define CLK_MOD2_TMR1                  (1 << 2)
#define CLK_MOD2_TMR0                  (1 << 1)
#define CLK_MOD2_WDT                   (1 << 0)

#define CLK_SEL0_UART0                 (1 << 5)

#define CLK_SEL1_OSD                   (1 << 12)
#define CLK_SEL1_CCD                   (1 << 8)
#define CLK_SEL1_VENCPLL               (1 << 4)
#define CLK_SEL1_VENC(x)               (x << 0)

#define CLK_OSEL_O2SEL(x)              (x << 8)
#define CLK_OSEL_O1SEL(x)              (x << 4)
#define CLK_OSEL_O0SEL(x)              (x << 0)

#define CLK_BYP_AXL                    (1 << 12)
#define CLK_BYP_SDRAM                  (1 << 8)
#define CLK_BYP_DSP                    (1 << 4)
#define CLK_BYP_ARM                    (1 << 0)

#define CLK_INV_MMC                    (1 << 0)
#define CLK_INV_VENC                   (1 << 4)
#define CLK_INV_CCD                    (1 << 8)
#define CLK_INV_SIF0                   (1 << 12)
#define CLK_INV_SIF1                   (1 << 13)

#define MMC_CTRL_DATRST                (1 << 0)
#define MMC_CTRL_CMDRST                (1 << 1)
#define MMC_CTRL_WIDTH                 (1 << 2)
#define MMC_CTRL_DMASZEN               (1 << 4)
#define MMC_CTRL_TEST2                 (1 << 8)
#define MMC_CTRL_PERMDR                (1 << 9)
#define MMC_CTRL_PERMDX                (1 << 10)

#define MMC_CMD_CMD_MASK               (0x3F)
#define MMC_CMD_PPLEN                  (1 << 7)
#define MMC_CMD_BSYEXP                 (1 << 8)
#define MMC_CMD_RSPFMT_SHIFT           9
#define MMC_CMD_RSPFMT_MASK            (3 << MMC_CMD_RSPFMT_SHIFT)
#define MMC_CMD_WRITE                  (1 << 11)
#define MMC_CMD_STREAM                 (1 << 12)
#define MMC_CMD_DATA                   (1 << 13)
#define MMC_CMD_INITCLK                (1 << 14)
#define MMC_CMD_DCLR                   (1 << 15)

#define MMC_ST0_DATDNE                 (1 << 0)
#define MMC_ST0_BSYDNE                 (1 << 1)
#define MMC_ST0_RSPDNE                 (1 << 2)
#define MMC_ST0_DATA_TIMEOUT           (1 << 3)
#define MMC_ST0_CMD_TIMEOUT            (1 << 4)
#define MMC_ST0_WR_CRCERR              (1 << 5)
#define MMC_ST0_RD_CRCERR              (1 << 6)
#define MMC_ST0_RESP_CRCERR            (1 << 7)
#define MMC_ST0_DMADNE                 (1 << 8)
#define MMC_ST0_DXRDY                  (1 << 9)
#define MMC_ST0_DRRDY                  (1 << 10)
#define MMC_ST0_DAT3_EDGE              (1 << 11)

#define MMC_ST1_BUSY                   (1 << 0)
#define MMC_ST1_CLKSTP                 (1 << 1)
#define MMC_ST1_DXEMPTY                (1 << 2)
#define MMC_ST1_DXFULL                 (1 << 3)
#define MMC_ST1_DAT3ST                 (1 << 4)

#define MMC_DMAMODE_RD_WORDSWAP        (1 << 10)
#define MMC_DMAMODE_WR_WORDSWAP        (1 << 11)
#define MMC_DMAMODE_WRITE              (1 << 12)
#define MMC_DMAMODE_ENABLE             (1 << 13)
#define MMC_DMAMODE_TIMEOUTIRQ_EN      (1 << 14)
/*
 *  IO_EINTx bits
 */
#define INTR_EINT0_USB1                (1 << 15)
#define INTR_EINT0_USB0                (1 << 14)
#define INTR_EINT0_UART1               (1 << 13)
#define INTR_EINT0_UART0               (1 << 12)
#define INTR_EINT0_IMGBUF              (1 << 11)
#define INTR_EINT0_EXTHOST             (1 << 10)
#define INTR_EINT0_SP1                 (1 << 9)
#define INTR_EINT0_SP0                 (1 << 8)
#define INTR_EINT0_VENC                (1 << 7)
#define INTR_EINT0_CCDWEN              (1 << 6)
#define INTR_EINT0_CCDVD1              (1 << 5)
#define INTR_EINT0_CCDVD0              (1 << 4)
#define INTR_EINT0_TMR3                (1 << 3)
#define INTR_EINT0_TMR2                (1 << 2)
#define INTR_EINT0_TMR1                (1 << 1)
#define INTR_EINT0_TMR0                (1 << 0)

#define INTR_EINT1_EXT10               (1 << 15)
#define INTR_EINT1_EXT9                (1 << 14)
#define INTR_EINT1_EXT8                (1 << 13)
#define INTR_EINT1_EXT7                (1 << 12)
#define INTR_EINT1_EXT6                (1 << 11)
#define INTR_EINT1_EXT5                (1 << 10)
#define INTR_EINT1_EXT4                (1 << 9)
#define INTR_EINT1_EXT3                (1 << 8)
#define INTR_EINT1_EXT2                (1 << 7)
#define INTR_EINT1_EXT1                (1 << 6)
#define INTR_EINT1_EXT0                (1 << 5)
#define INTR_EINT1_MMCSDMS1            (1 << 4)
#define INTR_EINT1_MMCSDMS0            (1 << 3)
#define INTR_EINT1_MTC1                (1 << 2)
#define INTR_EINT1_MTC0                (1 << 1)
#define INTR_EINT1_VLYNQ               (1 << 0)

#define INTR_EINT2_RSVINT              (1 << 13)
#define INTR_EINT2_ARMCOMTX            (1 << 12)
#define INTR_EINT2_ARMCOMRX            (1 << 11)
#define INTR_EINT2_E2ICE               (1 << 10)
#define INTR_EINT2_INTRC               (1 << 9)
#define INTR_EINT2_I2C                 (1 << 8)
#define INTR_EINT2_WDT                 (1 << 7)
#define INTR_EINT2_PREV1               (1 << 6)
#define INTR_EINT2_PREV0               (1 << 5)
#define INTR_EINT2_EXT15               (1 << 4)
#define INTR_EINT2_EXT14               (1 << 3)
#define INTR_EINT2_EXT13               (1 << 2)
#define INTR_EINT2_EXT12               (1 << 1)
#define INTR_EINT2_EXT11               (1 << 0)

/*
* IO_IRQx bits
*/
#define INTR_IRQ0_TMR0        INTR_EINT0_TMR0
#define INTR_IRQ0_TMR1        INTR_EINT0_TMR1
#define INTR_IRQ0_TMR2        INTR_EINT0_TMR2
#define INTR_IRQ0_TMR3        INTR_EINT0_TMR3
#define INTR_IRQ0_UART1       INTR_EINT0_UART1
#define INTR_IRQ0_CCDVD1      INTR_EINT0_CCDVD1
#define INTR_IRQ0_IMGBUF      INTR_EINT0_IMGBUF

#define INTR_IRQ1_EXT0        INTR_EINT1_EXT0
#define INTR_IRQ1_EXT2        INTR_EINT1_EXT2
#define INTR_IRQ1_EXT7        INTR_EINT1_EXT7
#define INTR_IRQ1_MTC0        INTR_EINT1_MTC0

/*
* HPIBCTL bits
*/
#define HPIBCTL_DBIO          (1 << 10)
#define HPIBCTL_DHOLD         (1 << 9)
#define HPIBCTL_DRST          (1 << 8)
#define HPIBCTL_DINT0         (1 << 7)
#define HPIBCTL_EXCHG         (1 << 5)
#define HPIBCTL_HPNMI         (1 << 3)
#define HPIBCTL_HPIEN         (1 << 0)

/*
* Video Encoder bits
*/
#define VENC_VMOD_VDMD(x)     (x << 12)
#define VENC_VMOD_ITLC        (1 << 10)
#define VENC_VMOD_CBTYP       (1 << 9)
#define VENC_VMOD_CBMD        (1 << 8)
#define VENC_VMOD_NTPLS(x)    (x << 6)
#define VENC_VMOD_SLAVE       (1 << 5)
#define VENC_VMOD_VMD         (1 << 4)
#define VENC_VMOD_BLNK        (1 << 3)
#define VENC_VMOD_DACPD       (1 << 2)
#define VENC_VMOD_VIE         (1 << 1)
#define VENC_VMOD_VENC        (1 << 0)

#define VENC_VDCTL_VCLKP      (1 << 14)
#define VENC_VDCTL_VCLKE      (1 << 13)
#define VENC_VDCTL_VCLKZ      (1 << 12)
#define VENC_VDCTL_DOMD(x)    (x << 4)
#define VENC_VDCTL_YCDC       (1 << 2)
#define VENC_VDCTL_INPTRU     (1 << 1)
#define VENC_VDCTL_YCDIR      (1 << 0)

#define VENC_VDPRO_PFLTY(x)   (x << 12)
#define VENC_VDPRO_PFLTR      (1 << 11)
#define VENC_VDPRO_YCDLY(x)   (x << 8)
#define VENC_VDPRO_RGBMAT     (1 << 7)
#define VENC_VDPRO_ATRGB      (1 << 6)
#define VENC_VDPRO_ATYCC      (1 << 5)
#define VENC_VDPRO_ATCOM      (1 << 4)
#define VENC_VDPRO_STUP       (1 << 3)
#define VENC_VDPRO_CRCUT      (1 << 2)
#define VENC_VDPRO_CUPS       (1 << 1)
#define VENC_VDPRO_YUPS       (1 << 0)

#define VENC_SYNCTL_EXFEN     (1 << 12)
#define VENC_SYNCTL_EXFIV     (1 << 11)
#define VENC_SYNCTL_EXSYNC    (1 << 10)
#define VENC_SYNCTL_EXVIV     (1 << 9)
#define VENC_SYNCTL_EXHIV     (1 << 8)
#define VENC_SYNCTL_CSP       (1 << 7)
#define VENC_SYNCTL_CSE       (1 << 6)
#define VENC_SYNCTL_SYSW      (1 << 5)
#define VENC_SYNCTL_VSYNCS    (1 << 4)
#define VENC_SYNCTL_VPL       (1 << 3)
#define VENC_SYNCTL_HPL       (1 << 2)
#define VENC_SYNCTL_SYE       (1 << 1)
#define VENC_SYNCTL_SYDIR     (1 << 0)

#define VENC_RGBCTL_IRONM     (1 << 11)
#define VENC_RGBCTL_DFLTR     (1 << 10)
#define VENC_RGBCTL_DFLTS(x)  (x << 8)
#define VENC_RGBCTL_RGBEF(x)  (x << 4)
#define VENC_RGBCTL_RGBOF(x)  (x << 0)

#define VENC_RGBCLP_UCLIP(x)  (x << 8)
#define VENC_RGBCLP_OFST(x)   (x << 0)

#define VENC_LCDOUT_FIDS      (1 << 8)
#define VENC_LCDOUT_FIDP      (1 << 7)
#define VENC_LCDOUT_PWMP      (1 << 6)
#define VENC_LCDOUT_PWME      (1 << 5)
#define VENC_LCDOUT_ACE       (1 << 4)
#define VENC_LCDOUT_BRP       (1 << 3)
#define VENC_LCDOUT_BRE       (1 << 2)
#define VENC_LCDOUT_OEP       (1 << 1)
#define VENC_LCDOUT_OEE       (1 << 0)

#define VENC_DCLKCTL_DOFST(x) (x << 12)
#define VENC_DCLKCTL_DCKEC    (1 << 11)
#define VENC_DCLKCTL_DCKME    (1 << 10)
#define VENC_DCLKCTL_DCKOH    (1 << 9)
#define VENC_DCLKCTL_DCKIH    (1 << 8)
#define VENC_DCLKCTL_DCKPW(x) (x << 0)

/* Timer frequency */
/* timer is based on PCLK and minimum division is 2 */
#define TIMER_FREQ (27000000)

#endif