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
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
|
#ifndef _VDEC_HW_COMMON_H_
#define _VDEC_HW_COMMON_H_
#include "../include/vdec_usage.h"
#include "../include/vdec_info_common.h"
//#include "x_hal_ic.h"
//PANDA
#include "../include/vdec_common_if.h"
//#include <mach/hardware.h>
#include <mach/mt_reg_base.h>
#include <mach/sync_write.h>
#if CONFIG_DRV_VERIFY_SUPPORT
#include "../verify/vdec_verify_general.h"
#endif
#define VP6_MULTI_STREAM
#define VP6_ALPHA_SUPPORT
#if ((CONFIG_DRV_VERIFY_SUPPORT || CONFIG_DRV_FPGA_BOARD))
#define VDEC_DRV_PARSER 0
#else
#define VDEC_DRV_PARSER 1
#endif
//#define VDEC_SIM_DUMP
//#define HEVC_DPB_INFO_DUMP
//#define VP8_REG_DUMP
#define MEM_PAUSE_SUPPORT
//#define IO_BASE_ADDRESS 0x70000000L
// *********************************************************************
// Video Decoder Registers define
// *********************************************************************
#define VLD_REG_OFFSET0 0x1000
#define VLD_TOP_REG_OFFSET0 (VLD_REG_OFFSET0 + 0x800)
#define MC_REG_OFFSET0 0x2000
#define HEVC_VLD_REG_OFFSET0 0x8000
#define HEVC_MV_REG_OFFSET0 0x4000
#define HEVC_PP_REG_OFFSET0 0x5000
#define HEVC_MISC_REG_OFFSET0 0x0
#define VDSCL_REG_OFFSET0 0x2b800 /// no use
#define AVC_VLD_REG_OFFSET0 0x3000
#define AVC_MV_REG_OFFSET0 0x4000
#define AVC_FG_REG_OFFSET0 0x31000 ///no use
#define DV_REG_OFFSET0 0x0
#define WMV_DCAC_REG_OFFSET0 0x5700 ///
#define WMV_MV_REG_OFFSET0 0x4000 ///
#define VLD_REG_OFFSET1 0x2E000
#define VLD_TOP_REG_OFFSET1 (VLD_REG_OFFSET1 + 0x800)
#define MC_REG_OFFSET1 0x2F000
#define VDSCL_REG_OFFSET1 0x30800
#define AVC_VLD_REG_OFFSET1 0x30000
#define AVC_MV_REG_OFFSET1 0x31000
#define AVC_FG_REG_OFFSET1 0x32000
#define DV_REG_OFFSET1 0x32000
#define WMV_DCAC_REG_OFFSET1 0x34000
#define WMV_MV_REG_OFFSET1 0x31000
#define AVS_VLD_REG_OFFSET0 0x6000 //AVS VLD 0x1602-6000
#define AVS_VLD_REG_OFFSET1 0x2D000
#define AVS_PP_REG_OFFSET0 0x5000 //PP 0x16025000
#define AVS_PP_REG_OFFSET1 0x2C000
//RM IO Base
#define RM_VLD_REG_OFFSET0 (AVC_VLD_REG_OFFSET0 + 0xC00)
#define RM_VDEC_PP_BASE 0x5000
#define VDEC_CRC_REG_OFFSET0 DV_REG_OFFSET0
#define VDEC_CRC_REG_EN 0x4
#define VDEC_CRC_EN 0x1
#define VDEC_CRC_SRC_MC (0x0 << 1)
#define VDEC_CRC_SRC_PP (0x1 << 1)
/*
// rite MISC_01 = 0x10 turn on
#define VDEC_CRC_Y_CHKSUM0 0x8
#define VDEC_CRC_Y_CHKSUM1 0xC
#define VDEC_CRC_Y_CHKSUM2 0x10
#define VDEC_CRC_Y_CHKSUM3 0x14
#define VDEC_CRC_C_CHKSUM0 0x18
#define VDEC_CRC_C_CHKSUM1 0x1C
#define VDEC_CRC_C_CHKSUM2 0x20
#define VDEC_CRC_C_CHKSUM3 0x24
*/
//Write MISC_01 = 0x100 turn on
#define VDEC_CRC_Y_CHKSUM0 0x17C
#define VDEC_CRC_Y_CHKSUM1 0x180
#define VDEC_CRC_Y_CHKSUM2 0x184
#define VDEC_CRC_Y_CHKSUM3 0x188
#define VDEC_CRC_C_CHKSUM0 0x18C
#define VDEC_CRC_C_CHKSUM1 0x190
#define VDEC_CRC_C_CHKSUM2 0x194
#define VDEC_CRC_C_CHKSUM3 0x198
#define VDEC_DV_INT_CFG 0xA4
#define VDEC_DV_LAT_BUF_BYPASS 0xF0
#define VDEC_DV_DEC_BREAK 0x100
#define VDEC_DV_DEC_BREAK_EN (0x01)
#define VDEC_DV_DEC_BREAK_STATUS 0x104
#define VDEC_BREAK_OK_0 (0x01)
#define VDEC_BREAK_OK_1 (0x01<<4)
#define VP6_VLD_REG_OFFSET0 0x7000
#define VP6_VLD_REG_OFFSET1 0x2E000
#define VP6_MV_REG_OFFSET0 0x4000
#define VP6_MV_REG_OFFSET1 0x2A000
#define VP6_PP_REG_OFFSET0 0x5000
#define VP6_DCAC_REG_OFFSET0 0x5700
#define VP6_VLD2_REG_OFFSET (VP6_VLD_REG_OFFSET0 + 0x800) //MULTI-STREAM PANDA
#define VP6_VLD2_SHIFT_OFFSET (VP6_VLD_REG_OFFSET0 + 0x400) //MULTI-STREAM PANDA
//VP8
#define VP8_VLD_REG_OFFSET0 (AVS_VLD_REG_OFFSET0+0x800)
#define VP8_MV_REG_OFFSET0 AVC_MV_REG_OFFSET0
#define VP8_VLD2_REG_OFFSET0 (VP6_VLD_REG_OFFSET0+0x800)
#define VP8_PP_REG_OFFSET0 0x5000
#define VP8_VLD_REG_OFFSET1 (AVS_VLD_REG_OFFSET1+0x800)
#define VP8_MV_REG_OFFSET1 AVC_MV_REG_OFFSET1
#define VP8_VLD2_REG_OFFSET1 (VP6_VLD_REG_OFFSET1+0x800)
#define VP8_PP_REG_OFFSET1 0x2C000
#define RW_PDN_CTRL 0x0
#define RW_SYS_CLK_SEL 0x84
// *********************************************************************
// VLD Registers define
// *********************************************************************
// Barral Shifter from 0x00 - 0x80
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8580)
#define RW_VLD_TOP_TIMEOUT_ST_CLR 0x04
#define VLD_TOP_TIMEOUT_CLR ((unsigned)0x01 << 0)
#define RW_VLD_TOP_PRED_ADDR 0x28
#define RW_VLD_TOP_PRED_SRAM_CFG 0x2C // 11x4
#define RW_PRED_SRAM_CFG_OUTRANGE_SUPPORT_FLAG 31
#define RW_PRED_SRAM_CFG_SRAM_BYPASS_FLAG 30
#define RW_VLD_TOP_SEGID_DRAM_ADDR 0x3c // 15x4
#define RW_VLD_TOP_PRED_MODE 0x40 // 16x4
#define RW_NUM_ROW_SEGID_DATA_M1_S 0
#define RW_NUM_ROW_SEGID_DATA_M1_E 2
#define RW_DRAM_BURST_MODE_S 4
#define RW_DRAM_BURST_MODE_E 5
#define RW_VLD_TOP_WEBP_CTRL 0x48 // 18x4
#define RW_BUFCTRL_ON_FLAG 0
#define RW_RESIZE_INTER_ON_FLAG 4
#define RW_VLD_TOP_MB_DECSTART 0x4c // 19x4
#define RO_VLD_TOP_TIMEOUT_THD 0x50
#define VLD_TOP_TIMEOUT_THD 0xffffffff
#define RW_VLD_TOP_TIMEOUT_SW 0x54
#define VLD_TOP_DEC_CYCLE_EN ((unsigned)0x1 << 0)
#define RW_VLD_TOP_BUSY_THRESHOLD 0x58
#define RW_VLD_TOP_ERR_CONCEAL 0x5C
#define RW_VLD_TOP_ERR_TYPE_ENABLE 0x64
#define RW_VLD_TOP_PIC_MB_SIZE_M1 0x68
#define RW_VLD_TOP_PIC_PIX_SIZE 0x70
#define RW_PIC_WIDTH_IN_MBS_S 0
#define RW_PIC_WIDTH_IN_MBS_E 9
#define RW_PIC_HEIGHT_IN_MBS_S 16
#define RW_PIC_HEIGHT_IN_MBS_E 25
#define RW_VLD_TOP_TOTAL_MBS_IN_PIC 0x6C
#define RW_VLD_TOP_VP8_ENHANCE 0x7C
#define RO_VLD_TOP_DEC_CYCLE 0x80
#define RW_VLD_TOP_MV_DC_PRED_END_ADDR 0x94
#define RW_VLD_TOP_BIT_DEPTH 0x100
#endif
#define RO_VLD_BARL 0x00
#define RW_VLD_VDOUFM 0x84
#define VLD_VDOUFM ((unsigned)0x1 << 0)
#define VLD_MXOFF ((unsigned)0x1 << 8)
#define VLD_ENSTCNT ((unsigned)0x1 << 9)
#define VLD_AATO ((unsigned)0x1 << 10)
// Type 18 [BIT14] out_of_picture error
// Type 1 [BIT15] block pixel overflow
// Type 2 [BIT16] cbp number mismatch
// Type 3 [BIT17] dct_dc_size_lum table error
// Type 4 [BIT18] dct_dc_size_chrom table error
// Type 5 [BIT19] slice-layer syntax error
// Type 6 [BIT20] end_of_block syntax rooer
// Type 7 [BIT21] macroblock address increment table error
// Type 8 [BIT22] coded_block_pattern table error
// Type 9 [BIT23] insufficient slice error
// Type 10 [BIT24] slice-level quantization scale error
// Type 11 [BIT25] other slice-level syntax error
// Type 12 [BIT26] macroblock address overflow error
// Type 13 [BIT27] mb_type table error
// Type 14 [BIT28] motion type error
// Type 15 [BIT29] motion code error
// Type 16 [BIT30] marker syntax error
// Type 17 [BIT31] MC-IDCT busy overflow
#define ERR_OUT_PIC ((unsigned)0x1 << 14)
#define ERR_BL_PIX ((unsigned)0x1 << 15)
#define ERR_CBP_NS ((unsigned)0x1 << 16)
#define ERR_DCT_Y_TAB ((unsigned)0x1 << 17)
#define ERR_DCT_C_TAB ((unsigned)0x1 << 18)
#define ERR_SL_SYN ((unsigned)0x1 << 19)
#define ERR_EOB_SYN ((unsigned)0x1 << 20)
#define ERR_MB_ADD_INC_TAB ((unsigned)0x1 << 21)
#define ERR_CBP_TAB ((unsigned)0x1 << 22)
#define ERR_INS_SL ((unsigned)0x1 << 23)
#define ERR_SL_QSCALE ((unsigned)0x1 << 24)
#define ERR_SL_SYN2 ((unsigned)0x1 << 25)
#define ERR_MB_ADD ((unsigned)0x1 << 26)
#define ERR_MB_TBL ((unsigned)0x1 << 27)
#define ERR_MOT_TP ((unsigned)0x1 << 28)
#define ERR_MOT_CD ((unsigned)0x1 << 29)
#define ERR_MKB ((unsigned)0x1 << 30)
#define ERR_MCIDCT_BSY ((unsigned)0x1 << 31)
#define VLD_ERR_MONITOR (ERR_BL_PIX + ERR_CBP_NS + ERR_DCT_Y_TAB + \
ERR_DCT_C_TAB + ERR_SL_SYN + ERR_EOB_SYN + \
ERR_MB_ADD_INC_TAB + ERR_CBP_TAB + ERR_INS_SL + \
ERR_SL_QSCALE + ERR_SL_SYN2 + ERR_MB_ADD + \
ERR_MB_TBL + ERR_MOT_TP + ERR_MOT_CD + \
ERR_MKB + ERR_MCIDCT_BSY + ERR_OUT_PIC)
// Error Type Define
#define ETP_OUT_PIC 18
#define ETP_BL_PIX 1
#define ETP_CBP_NS 2
#define ETP_DCT_Y_TAB 3
#define ETP_DCT_C_TAB 4
#define ETP_SL_SYN 5
#define ETP_EOB_SYN 6
#define ETP_MB_ADD_INC_TAB 7
#define ETP_CBP_TAB 8
#define ETP_INS_SL 9
#define ETP_SL_QSCALE 10
#define ETP_SL_SYN2 11
#define ETP_MB_ADD 12
#define ETP_MB_TBL 13
#define ETP_MOT_TP 14
#define ETP_MOT_CD 15
#define ETP_MKB 16
#define ETP_MCIDCT_BSY 17
#define RW_MBSTART_DCAC_SWITCH 0x1F0
#define RW_VLD_PARA 0x88
#define RW_VLD_PROC 0x8C
#define VLD_SSCBIT ((unsigned)0x1 << 16)
#define VLD_SSCBYTE ((unsigned)0x1 << 17)
#define VLD_ABRT ((unsigned)0x1 << 18)
#define VLD_PSUP ((unsigned)0x1 << 19)
#define VLD_INIFET ((unsigned)0x1 << 20)
#define VLD_MBDATA ((unsigned)0x1 << 21) // for 1389 MP ECO
#define VLD_PDHW ((unsigned)0x1 << 22)
#define VLD_INIBR ((unsigned)0x1 << 23)
#define VLD_PERRCON ((unsigned)0x1 << 24)
#define VLD_RTERR ((unsigned)0x1 << 25)
#define VLD_EOFR ((unsigned)0x1 << 26)
#define VLD_IGBCL ((unsigned)0x1 << 27)
#define VLD_DECTOP ((unsigned)0x1 << 29)
#define VLD_DECBTM ((unsigned)0x2 << 29)
#define VLD_FPRBS ((unsigned)0x3 << 29)
#define VLD_B21EN ((unsigned)0x1 << 31)
#define RW_VLD_PICSZ 0x90
#define RW_VLD_MBROWPRM 0x94
#define RW_VLD_DIGMBSA 0x98
#define RW_VLD_SCALE 0x9C
#define H_SCALE_1_1 0
#define H_SCALE_1_2 1
#define H_SCALE_1_4 2
#define H_SCALE_3_4 3
#define H_SCALE_3_8 4
#define V_SCALE_1_1 0
#define V_SCALE_1_2 1
#define V_SCALE_1_4 2
#define RW_VLD_TABLIM 0xA0
#define RW_VLD_TABLNIM 0xA4
#define RW_VLD_DIGMBYOFF 0xA8
#define RW_VLD_PSUPCTR 0xAC
#define RW_VLD_RPTR 0xB0
#define RW_VLD_VSTART 0xB4
#define RW_VLD_VEND 0xB8
#define RO_VLD_BLKFIN 0xBC
#define RW_VLD_RDY_SWTICH 0xC0
#define READY_TO_RISC (0x1 << 17)
#define READY_TO_RISC_1 (0x1 << 18)
#define READY_TO_RISC_2 (0x1 << 20)
#define RW_VLD_PWRSAVE 0xC4
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8530)
#define RW_VLD_PIC_W_MB 0xC8
#endif
#if (CONFIG_DRV_FPGA_BOARD)
#define RW_VLD_BS_SPEEDUP 0xCC
#endif
#define RW_VLD_ASYNC 0xD0
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8530)
#define VLD_WR_ENABLE ((unsigned)0x1 << 18)
#endif
#define RW_VLD_TIMEOUT 0xDC
#define RO_VLD_FSBI 0xE0
#define RO_VLD_ERRFG 0xE4
#define RO_VLD_FETCHOK 0xE8
#define VLD_FETCH_OK ((unsigned)0x1 << 0)
#define VLD_DRAM_REQ_FIN ((unsigned)0x1 << 2)
#define RO_VLD_VBAR 0xEC
#define RO_VLD_INPUTWND 0xF0
#define RO_VLD_SRAMCTRL 0xF4
#define AA_FIT_TARGET_SCLK (1<<0)
#define AA_FIT_TARGET_D (1<<1)
#define PROCESS_FLAG (1<<15)
#define RO_VLD_VWPTR 0xF8
#define RO_VLD_VRPTR 0xFC
#define RW_VLD_WAITT 0x100
#define WO_VLD_FDEC 0x104
#define VLD_PIC_COMPLETE ((unsigned)0x1 << 0)
#define VLD_RELOAD_INTRA ((unsigned)0x1 << 8)
#define VLD_RELOAD_NONINTRA ((unsigned)0x1 << 9)
#define VLD_RST_QMATRIX ((unsigned)0x1 << 10)
#define WO_VLD_SRST 0x108
#define WO_VLD_WPTR 0x110
#define VLD_CLEAR_PROCESS_EN ((unsigned)0x1 << 0)
#define VLD_RISC_WR_EN ((unsigned)0x1 << 1)
#define WO_VLD_BBUFRST 0x10C
#define VLD_MVOF_DET_DISABLE (((unsigned)0x1 << 4) | ((unsigned)0x1 << 5) | ((unsigned)0x1 << 11)) //mv overflow detection disable bit
#define RO_VLD_SUM 0x114
#define RW_VLD_DIGEST_BOUNDARY 0x1A4
#define VLD_RESYNC_MARK_ECO 0x2
// Display Initialization
#define RW_VLD_RESET_COMMOM_SRAM 0x2EC
// *********************************************************************
// MPEG4 relate Registers define
// *********************************************************************
#define RW_VLD_MP4_HDR 0x1C4
#define RW_VLD_MP4_FLG 0x1C8
#define RW_VLD_LDSR 0x1CC
#define RW_VLD_LDSH 0x1D0
#define RW_VLD_QUANT 0x1D4
#define RW_VLD_M4SH 0x1D8
#define RW_VLD_DX3 0x1DC
#define RO_VLD_MP4DECBSY 0x1E0
#define RW_VLD_DECSTART 0x1E4
#define RW_VLD_BREF 0x1E8
#define RO_VLD_MP4DECERR 0x1F4
#define RW_VLD_DCACWK 0x1FC
#if (MPEG4_6589_SUPPORT)
//6589NEW 2.3
#define RW_VLD_MP4_DATA_PARTITION_SZ 0x2BC
#endif
#define RW_VLD_DVX_BOUND_MODE 0x2C0
#define RW_VLD_DVX_BOUND_R1 0x2C4
#define RW_VLD_DVX_BOUND_R2 0x2C8
#define RW_VLD_DVX_BOUND_R3 0x2CC
#define RW_VLD_MP4_DATA_PARTITION 0x2D0
#if (MPEG4_6589_SUPPORT)
//6589NEW 2.4-2.6
#define RW_VLD_MP4_NOT_CODED_SA 0x2D4
#define RW_VLD_MP4_DATA_PARTITION_SA 0x2D8
#define RW_VLD_MP4_DCAC_NOT_CODED_SZ 0x2DC
#endif
#define RW_VLD_MP4_ERR_MASK 0x2E0
#define RW_VLD_MP4_ERR_DET2 0x2F8
#define RW_VLD_MP4_ERR_DET1 0x2F4
#if (MPEG4_6582_SUPPORT)
#define RW_VLD_MP4_DCAC_NOT_CODED_LOOP_SZ 0x2FC
#endif
// HHKuo's
#define RW_VLD_DCACSA 0x300
#define RW_VLD_DCACPITCH 0x304
#define RW_VLD_MVSA 0x308
#define RW_VLD_DIRE_MD 0x30C
#define RW_VLD_BMB1 0x310
#define RW_VLD_BMB2 0x314
#define RW_VLD_BCODE_SA 0x318
#define RW_VLD_DIRE_MD_IL 0x31C
#define RW_VLD_DCMVSEL 0x320
#define LITE_BREF_I_VOP (0x1 << 18)
#define RW_VLD_DRAMMBSEL 0x324
#define RW_VLD_ADDREXTEND 0x328
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8580) //mtk40343 9/7/2010
#define RW_VLD_MVDRAM 0x36C
#define RW_VLD_MB1SA 0x370
#define RW_VLD_MB2SA 0x374
#define RW_VLD_COSA 0x378
#endif
#define RO_VLD_DCACBSY 0x380
#define RO_VLD_DCDRAM 0x384
#define RO_VLD_DRAMWR 0x394
#define RW_VLD_2ND_PROC 0x48C
#define RW_VLD_2ND_RPTR 0x4B0
#define RW_VLD_2ND_VSTART 0x4B4
#define RW_VLD_2ND_VEND 0x4B8
#define RW_VLD_2ND_RDY_SWTICH 0x4C0
#define RO_VLD_2ND_FETCHOK 0x4E8
#define RO_VLD_2ND_VBAR 0x4EC
#define RO_VLD_2ND_VRPTR 0x4FC
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8580) //mtk40343 9/7/2010
#define RW_VLD_PIC_SIZE 0x870
#define RW_VLD_MB_SIZE 0x868
#endif
#define RW_VLD_RESYNC_MARK 0x254
#if (MPEG4_6589_SUPPORT)
//6589NEW 3.1
#define RW_PP_DIVX3_DFT_PRED 0x704
//NEW6589 4.1 - 4.12
#define RW_AMV_MP4_MV_DIRECT_SA 0x20C
#define RW_AMV_MP4_COL_IVOP 0x218
#define RW_AMV_MP4_TOP_FIELD_QUART_SAMPLE 0x2D8
#define RW_AMV_MP4_GMC_Y_MV 0x2DC
#define RW_AMV_MP4_VTRBD 0x2E0
#define RW_AMV_MP4_VTRBD_I 0x2E4
#define RW_AMV_MP4_VTRBD_I_PLUS_1 0x2E8
#define RW_AMV_MP4_VTRBD_I_MINUS_1 0x2EC
#define RW_AMV_MP4_VTRBD_RATIO 0x2F0
#define RW_AMV_MP4_VTRBD_I_RATIO 0x2F4
#define RW_AMV_MP4_VTRBD_I_RATIO_2 0x2F8
#define RW_AMV_MP4_VTRBD_I_RATIO_3 0x2FC
#endif
/* JPEG decoding */
#define WO_VLD_RDY 0x114
// *********************************************************************
// H.264 related VLD Registers define
// *********************************************************************
// KB's scaling list
#define RW_VLD_SCL_ADDR 0x260
#define RW_VLD_SCL_DATA 0x264
// ****************************
// WMV related VLD registers define
// ****************************
#define RW_VLD_SRAM_TEST_WRITE_ADDR 0xCC
#define RW_VLD_SRAM_TEST_WRITE_DATA 0xD0
#define RW_VLD_BITCOUNT 0x114
#define RW_VLD_WMVDEC 0x208
#define WMV_DEC_START (0x1)
#define WMV_BP_DEC_START (0x1 << 8)
#define RW_VLD_WMV_MODE 0x20C
#define RW_VLD_WMV_PARA1 0x210
#define RW_VLD_WMV_PARA2 0x214
#define RW_VLD_WMV_OVC 0x218
#define RW_VLD_WMV_LOAD_SUM 0x21C
#define RW_VLD_WMV_PARA3 0x220
#define RW_VLD_WMV_BP 0x224
#define RW_VLD_MODE 0x228
#define RW_VLD_WMV_QM 0x230
#define RO_VLD_BP_DEC_END 0x234
#define BD_DEC_FINISH (0x1 << 8)
#define RW_VLD_WMV_TAB 0x238
#define RW_VLD_WMV_ABS 0x23C
#define RO_VLD_PIC_DEC_END 0x240
#define PIC_DEC_FINISH (0x1)
#define RW_VLD_WMV_PUD 0x244
#define RW_VLD_WMV_PBN 0x248
#define RO_VLD_WMV_ERRFG 0x250
#define RW_VLD_WMV_SLICE_IDX0 0x274
#define RW_VLD_WMV_SLICE_IDX1 0x278
#define RW_VLD_WMV_SLICE_IDX2 0x27C
#define RO_VLD_WMV_ERRCNT 0x284
#define RO_VLD_WMV_ERRTYP 0x288
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8550)
#define RW_VLD_WMV_NEW_CTRL 0x28C
#define WMV_NEW_FLG_EN (1 << 0)
#define WMV_PRED_MOD_EN (1 << 1)
#define WMV_PRED_RD_SYNC_DISABLE (1 << 3)
#define WMV_DRAM_BURST_MODE_EN (1 << 4)
#define WMV_BP_USE_PRED_RD_EN (1 << 5)
#define RW_VLD_WMV_DCAC_NEW_ADDR 0x290
#define RW_VLD_WMV_BP0_NEW_ADDR 0x29C
#define RW_VLD_WMV_BP1_NEW_ADDR 0x2A0
#define RW_VLD_WMV_BP2_NEW_ADDR 0x2A4
#define RW_VLD_WMV_OW_PRED 0x2A8
#define RW_VLD_WMV_OW_BP 0x2AC
#define WMV_NUM_OW_BP_0 0
#define WMV_NUM_OW_BP_1 8
#define WMV_NUM_OW_BP_2 16
#endif
#define RW_VLD_BP1_ADDR 0x318 // the same as RW_VLD_BCODE_SA
#define RW_VLD_DCMVSEL 0x320
#define RW_VLD_MBDRAM_SEL 0x324
#define RW_VLD_BP2_ADDR 0x32C
#define RW_VLD_BP3_ADDR 0x330
#define RW_VLD_BP4_ADDR 0x334
#define RW_VLD_MVVOP_SEL 0x338
#define RW_VLD_MVF1 0x33C
#define RW_VLD_MVF2 0x340
#define RW_VLD_MVF3 0x344
#define RW_VLD_MVF4 0x348
#define RW_VLD_MV2_ADDR 0x34C
#define RW_VLD_VOP_TYPE 0x350
#define RW_VLD_DCAC2_ADDR 0x354
#define RW_VLD_MV3_ADDR 0x358
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8580)
#define RW_TOPVLD_WMV_PICSIZE_MB 0x68
#define RW_TOPVLD_WMV_PICSIZE 0x70
#define RW_TOPVLD_WMV_DCAC_NEW_ADDR 0x28
#endif
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8580)
#define RW_VLD_PIC_MB_SIZE_M1 0x68
#define VLD_TOP_PIC_HEIGHT_IN_MBS_POS 16
#endif
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8550)
// *********************************************************************
// WMV NEW MV Registers define
// *********************************************************************
#define RW_WMV_MV_NEW_ADDR 0x20C
#define RW_WMV_BWDREF_PIC_TYPE 0x218
#define RW_WMV_MV_DIRECT_SCL_FAC 0x21C
#define WMV_IRAT_0 0
#define WMV_IRAT_1 16
#define RW_WMV_MV_CFG 0x224
#define WMV_FIRST_FIELD 28
#define WMV_BWDREF_DIST 24
#define WMV_FWDREF_DIST 20
#define WMV_USE_OPP_REF_FIELD 16
#define WMV_TWO_REF_PIC 12
#define WMV_POST_RESCENT 9
#define WMV_FAST_UV 8
#define WMV_MV_RNG_IDX 4
#define WMV_QPIXEL 0
// *********************************************************************
// DCAC Registers define
// *********************************************************************
#define RW_WMV_DCAC_RULEB 0x0
#define RW_WMV_DCAC_PRED 0x4
#endif
// *********************************************************************
// MC Registers define
// *********************************************************************
#define RW_MC_R1Y 0x00
#define RW_MC_R1C 0x04
#define RW_MC_R2Y 0x08
#define RW_MC_R2C 0x0C
#define RW_MC_BY 0x10
#define RW_MC_BC 0x14
#define RW_MC_FWDP 0x18
#define RW_MC_DECFLD 0x1C
#define RW_MC_2FLDMD 0x20
#define RW_MC_OPBUF 0x24
#define RO_MC_MBX 0x28
#define RO_MC_MBY 0x2C
#define RO_MC_BMBX 0x30
#define RO_MC_BMBY 0x34
#define RO_MC_MOTION 0x38
#define RO_MC_MVVALID 0x3C
#define RO_MC_MV1X 0x40
#define RO_MC_MV1Y 0x44
#define RO_MC_MV2X 0x48
#define RO_MC_MV2Y 0x4C
#define RO_MC_MV3X 0x50
#define RO_MC_MV3Y 0x54
#define RO_MC_MV4X 0x58
#define RO_MC_MV4Y 0x5C
#define RO_MC_REFFLD 0x60
#define RO_MC_MBINTRA 0x64
#define RO_MC_FRMDCT 0x68
#define RO_MC_CBP 0x6C
#define RW_MC_HREFP 0x70
#define RW_MC_WMBDIG 0x74
#define RW_MC_DIGMBX 0x78
#define RW_MC_DIGMBY 0x7C
#define RW_MC_DIGY 0x80
#define RW_MC_DIGC 0x84
#define RW_MC_DIGWD 0x88
#define RW_MC_YDCS 0x8C
#define RW_MC_ADDRSWAP 0x90
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8530)
#define ADDRSWAP_OFF (0x2 << 1)
#define ADDRSWAP_DDR3 (0x2 << 0)
#else
#define ADDRSWAP_OFF (0x0 << 0)
#define ADDRSWAP_MODE_1 (0x1 << 0)
#define ADDRSWAP_MODE_2 (0x2 << 0)
#endif
#define RO_MC_STATUS 0x94
#define RW_MC_DISSOLVE 0x98
#define RW_MC_BY1 0x9C //first B pic buffer ptr Y
#define RW_MC_BC1 0xA0 //first B pic C
#define RW_MC_BY2 0xA4 //second B pic buffer ptr Y
#define RW_MC_BC2 0xA8 //second B pic C
#define RW_MC_PS_CMB11 0xAC //cmb1 intra 1xy 2xy
#define RW_MC_PS_CMB12 0xB0 //cmb1 intra 3xy 4xy
#define RW_MC_PS_CMB13 0xB4 //cmb1 intra 5xy 6xy
#define RW_MC_PS_CMB14 0xB8 //cmb1 intra 7xy 8xy
#define RW_MC_PS_CMB15 0xBC //cmb1 intra 9xy 10xy
#define RW_MC_PS_CMB16 0xC0 //cmb1 MVxy , IDCTxy
#define RW_MC_PS_CMB21 0xC4 //cmb2 intra 1xy 2xy
#define RW_MC_PS_CMB22 0xC8 //cmb2 intra 3xy 4xy
#define RW_MC_PS_CMB23 0xCC //cmb2 intra 5xy 6xy
#define RW_MC_PS_CMB24 0xD0 //cmb2 intra 7xy 8xy
#define RW_MC_PS_CMB25 0xD4 //cmb2 intra 9xy 10xy
#define RW_MC_PS_CMB26 0xD8 //cmb2 MVxy , IDCTxy
#define RW_MC_PS_CMB_INTRA_THD 0xDC //CMB intra dc threshold
#define RW_MC_PS_CMB_MV_MAX 0xE0 //CMB maximun MV
#define PS_CMB_MV1_VALID ((unsigned)(0x1) << 30)
#define PS_CMB_MV2_VALID ((unsigned)(0x1) << 29)
#define RW_MC_PS_MP_BOUND 0xE4//motion plane IDCT diff curve upper bound
#define RW_MC_PS_MP_DIFF 0xE8//motion plane IDCT diffrence curve level
#define RW_MC_PS_MP_DIFF1 0xEC//motion plane IDCT diffrence curve level
#define RW_MC_PS_MP_IDCT_CNT 0xF0//motion plane IDCT count threshold
#define RW_MC_PS_CMB_IDCT_MAX 0xF4//CMB maximun IDCT abs sum
#define PS_CMB_IDCT1_VALID ((unsigned)(0x1) << 18)
#define PS_CMB_IDCT2_VALID ((unsigned)(0x1) << 17)
#define RW_MC_PS_CMB_CTRL 0xF8//CMB control register
#define PS_CMB1_CLR ((unsigned)(0x1) << 7)//clear cmb group1
#define PS_CMB2_CLR ((unsigned)(0x1) << 6)//clear cmb group2
#define PS_CMB_SEL2 ((unsigned)(0x1) << 5)// 1:select 2 ,0:select cmb group 1
#define PS_SRC_DETECT ((unsigned)(0x1) << 4)//film detect on
#define PS_MAD_ON ((unsigned)(0x1) << 3)//motion plane on
#define PS_CMB_INTRA ((unsigned)(0x1) << 2)//cmb select intra on
#define PS_CMB_IDCT ((unsigned)(0x1) << 1)//cmb select idct on
#define PS_CMB_MV ((unsigned)(0x1) << 0)//cmb select mv on
#define RW_MC_PS_MP_READ 0xFC//motion plane read ptr
#define RW_MC_PS_MP_WRITE 0x100//motion plane write ptr
#define RW_MC_PS_DINTRA1 0x104//Dinra 1-12
#define RW_MC_PS_DINTRA2 0x108
#define RW_MC_PS_DINTRA3 0x10C
#define RW_MC_PS_DINTRA4 0x110
#define RW_MC_PS_DINTRA5 0x114
#define RW_MC_PS_DINTRA6 0x118
#define RW_MC_PS_DINTRA7 0x11C
#define RW_MC_PS_DINTRA8 0x120
#define RW_MC_PS_DINTRA9 0x124
#define RW_MC_PS_DINTRA10 0x128
#define RW_MC_PS_DINTRA11 0x12C
#define RW_MC_PS_DINTRA12 0x130
#define RW_MC_PS_DINTER1 0x134//Dinter 1-12
#define RW_MC_PS_DINTER2 0x138
#define RW_MC_PS_DINTER3 0x13C
#define RW_MC_PS_DINTER4 0x140
#define RW_MC_PS_DINTER5 0x144
#define RW_MC_PS_DINTER6 0x148
#define RW_MC_PS_DINTER7 0x14C
#define RW_MC_PS_DINTER8 0x150
#define RW_MC_PS_DINTER9 0x154
#define RW_MC_PS_DINTER10 0x158
#define RW_MC_PS_DINTER11 0x15C
#define RW_MC_PS_DINTER12 0x160
#define RW_MC_PS_DT1 0x164//Dt 1-12
#define RW_MC_PS_DT2 0x168
#define RW_MC_PS_DT3 0x16C
#define RW_MC_PS_DT4 0x170
#define RW_MC_PS_DT5 0x174
#define RW_MC_PS_DT6 0x178
#define RW_MC_PS_DT7 0x17C
#define RW_MC_PS_DT8 0x180
#define RW_MC_PS_DT9 0x184
#define RW_MC_PS_DT10 0x188
#define RW_MC_PS_DT11 0x18C
#define RW_MC_PS_DT12 0x190
#define RW_MC_PS_DB1 0x194//Db 1-12
#define RW_MC_PS_DB2 0x198
#define RW_MC_PS_DB3 0x19C
#define RW_MC_PS_DB4 0x1A0
#define RW_MC_PS_DB5 0x1A4
#define RW_MC_PS_DB6 0x1A8
#define RW_MC_PS_DB7 0x1AC
#define RW_MC_PS_DB8 0x1B0
#define RW_MC_PS_DB9 0x1B4
#define RW_MC_PS_DB10 0x1B8
#define RW_MC_PS_DB11 0x1BC
#define RW_MC_PS_DB12 0x1C0
#define RW_MC_PS_DIFF_CTRL 0x1C4//D calculation control
#define PS_BUF_ID ((unsigned)(0x1) << 27)//current pic buffer id
#define PS_LAST_BUF_ID ((unsigned)(0x1) << 25)//last pic buffer id
#define PS_MP_CNT_CLR ((unsigned)(0x1) << 3)//clear motion table count
#define PS_DINTERA_ON ((unsigned)(0x1) << 2)//enable Dinter, Dintra
#define PS_DTB_ON ((unsigned)(0x1) << 1)//enable Dt, Db
#define PS_D_START ((unsigned)(0x1) << 0)//start to calculate D values
#define RW_MC_PS_DRAM_MODE 0x1C8//read/write Dram address mode
#define RW_MC_QPEL_TYPE 0x1FC
#define TYPE_14496 0
#define TYPE_MOMUSYS 1
#define RW_MC_QUARTER_SAMPLE 0x200
#define RW_MC_ROUNDING_CTRL 0x204
#define RW_MC_UMV_PIC_WIDTH 0x208
#define RW_MC_UMV_PIC_HEIGHT 0x20C
#define RW_MC_WARP_POINT_NUM 0x210
#define RW_MC_GMC_Y_MV 0x214
#define RW_MC_GMC_C_MV 0x218
#define RW_MC_CBCR_MV_TYPE 0x21C
#define QPEL_4MV_CMV_14496 (0x0)
#define QPEL_4MV_CMV_DIVX503 (0x1)
#define QPEL_FIELD_CMV_14496 (0x0 << 8)
#define QPEL_FIELD_CMV_DIVX503 (0x1 << 8)
#define QPEL_FRAME_CMV_14496 (0x0 << 16)
#define QPEL_FRAME_CMV_DIVX503 (0x1 << 16)
#define QPEL_FRAME_CMV_DIVXOLD (0x2 << 16)
// post-processing registers
#define RW_MC_PP_ENABLE 0x220
#define RW_MC_PP_Y_ADDR 0x224
#define RW_MC_PP_C_ADDR 0x228
#define RW_MC_PP_MB_WIDTH 0x22C
#define RW_MC_BREF 0x230
#define NML_BREF_I_VOP (0x1 << 5)
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8530)
#define RW_MC_PP_QP_TYPE 0x700
#else
#define RW_MC_PP_QP_TYPE 0x234
#endif
#define SEL_GIVEN_QP (0x0 << 8)
#define SEL_USER_QP (0x1 << 8)
#define SEL_LUT_QP (0x2 << 8)
#define RW_MC_PP_DBLK_MODE 0x238
#define DBLK_14496 (0x0 << 16)
#define DBLK_DIVX (0x1 << 16)
#define DBLK_V_THEN_H (0x0 << 8)
#define DBLK_H_THEN_V (0x1 << 8)
#define DBLK_Y (0x1 << 1)
#define DBLK_C (0x1)
#define RW_MC_PP_DBLK_THD 0x23C
#define RW_MC_PP_DBLK_DIR 0x240
#define DBLK_H_ONLY (0x1 << 8)
#define DBLK_V_ONLY (0x1)
#define RW_MC_PP_DRING_MODE 0x244
#define COMB_WITH_DBLK (0x1 << 16)
#define MAX_DIFF_MOMUSYS (0x0 << 8)
#define MAX_DIFF_14496 (0x1 << 8)
#define DRING_Y (0x1 << 1)
#define DRING_C (0x1)
#define RW_MC_PP_DRING_THD 0x248
#define RW_MC_PP_INTERLACE 0x24C
#define INTERLACE_DRING (0x1 << 8)
#define INTERLACE_DBLK (0x1)
#define RW_MC_PP_WB_BY_POST 0x250
#define RW_MC_PP_LOW_BW 0x254
#define RW_MC_PP_SEQ 0x258
#define DBLK_THEN_DRING (0x0)
#define DRING_THEN_DBLK (0x1)
#define RW_MC_PP_X_RANGE 0x260
#define RW_MC_PP_Y_RANGE 0x264
#define RW_MC_PP_MODE 0x268
#define WMV_MODE (0x0)
#define H264_MODE (0x1)
#define RW_MC_WMV9_PRE_PROC 0x270
#define PP_NO_SCALE (0x0)
#define PP_SCALE_DOWN (0x1)
#define PP_SCALE_UP (0x1 << 1)
#define RW_MC_WMV9_ICOMP_EN 0x274
#define ICOMP_C_OFF (0x0)
#define ICOMP_C_EN (0x1)
#define ICOMP_Y_OFF (0x0 << 1)
#define ICOMP_Y_EN (0x1 << 1)
#define RW_MC_ISCALE1_X1 0x278
#define RW_MC_ISCALE1_X3 0x27C
#define RW_MC_ISCALE1_X5 0x280
#define RW_MC_ISCALE1_X7 0x284
#define RW_MC_ISCALE1_X9 0x288
#define RW_MC_ISCALE1_X11 0x28C
#define RW_MC_ISCALE1_X13 0x290
#define RW_MC_ISCALE1_X15 0x294
#define RW_MC_YSHIFT_OFF1 0x298
#define RW_MC_CSHIFT_OFF1 0x29C
#define RW_MC_FILTER_TYPE 0x2A0
#define C_BILINEAR (0x0)
#define C_BICUBIC (0x1)
#define Y_BILINEAR (0x0 << 1)
#define Y_BICUBIC (0x1 << 1)
#define RW_MC_WRITE_BUS_TYPE 0x2A4
#define CLIP_0_255_TYPE 0
#define UNCLIP_TYPE 1
#define RW_MC_INTRA_BLK_ADD128 0x2a8
#define ADD128_OFF 0
#define ADD128_ON 1
#define RW_MC_FAST_UVMC 0x2B4
#define FAST_UVMC_EN (0x1)
#define RW_MC_OVL_SMTH_FILTER 0x2BC
#define OVL_OFF (0x0)
#define OVL_EN (0x1)
#define RW_MC_COND_OVL_FILTER 0x2C0
#define COND_OVL_OFF (0x0)
#define COND_OVL_EN (0x1)
#define RW_MC_PP_DBLK_OPT 0x2C4
#define CHK_INTRA0 (0x1)
#define CHK_BLK3 (0x1 << 8)
#define DBLK_FLG_4x4 (0x1 << 16)
#define VC1_ALL_SET_ONE (CHK_INTRA0 + CHK_BLK3 + DBLK_FLG_4x4)
#define NOT_VC1_ALL_SET_ZERO (0)
#define RW_MC_PP_DBLK_Y_ADDR 0x2C8
#define RW_MC_PP_DBLK_C_ADDR 0x2CC
#define RW_MC_WMV8_MIX_PEL 0x2D0
#define MIX_PEL_MC_EN (0x0)
#define RW_MC_RNG_PARA 0x2E4 //This register is not used in current hardware any more
#define RW_MC_ISCALE2_X1 0x2EC
#define RW_MC_ISCALE2_X3 0x2F0
#define RW_MC_ISCALE2_X5 0x2F4
#define RW_MC_ISCALE2_X7 0x2F8
#define RW_MC_ISCALE2_X9 0x2FC
#define RW_MC_ISCALE2_X11 0x300
#define RW_MC_ISCALE2_X13 0x304
#define RW_MC_ISCALE2_X15 0x308
#define RW_MC_YSHIFT_OFF2 0x30C
#define RW_MC_CSHIFT_OFF2 0x310
#define RW_MC_ICOMP_TYPE 0x314
#define NO_ICOMP 0
#define FRAME_ICOMP 1
#define TOP_FLD_ICOMP 2
#define BTM_FLD_ICOMP 3
#define BOTH_FLD_ICOMP 4
#define RW_MC_ISCALE3_X1 0x318
#define RW_MC_ISCALE3_X3 0x31C
#define RW_MC_ISCALE3_X5 0x320
#define RW_MC_ISCALE3_X7 0x324
#define RW_MC_ISCALE3_X9 0x328
#define RW_MC_ISCALE3_X11 0x32C
#define RW_MC_ISCALE3_X13 0x330
#define RW_MC_ISCALE3_X15 0x334
#define RW_MC_YSHIFT_OFF3 0x338
#define RW_MC_CSHIFT_OFF3 0x33C
#define RW_MC_ICOMP2_EN 0x340
#define RW_MC_ISCALE4_X1 0x344
#define RW_MC_ISCALE4_X3 0x348
#define RW_MC_ISCALE4_X5 0x34C
#define RW_MC_ISCALE4_X7 0x350
#define RW_MC_ISCALE4_X9 0x354
#define RW_MC_ISCALE4_X11 0x358
#define RW_MC_ISCALE4_X13 0x35C
#define RW_MC_ISCALE4_X15 0x360
#define RW_MC_YSHIFT_OFF4 0x364
#define RW_MC_CSHIFT_OFF4 0x368
#define RW_MC_ISCALE5_X1 0x36C
#define RW_MC_ISCALE5_X3 0x370
#define RW_MC_ISCALE5_X5 0x374
#define RW_MC_ISCALE5_X7 0x378
#define RW_MC_ISCALE5_X9 0x37C
#define RW_MC_ISCALE5_X11 0x380
#define RW_MC_ISCALE5_X13 0x384
#define RW_MC_ISCALE5_X15 0x388
#define RW_MC_YSHIFT_OFF5 0x38C
#define RW_MC_CSHIFT_OFF5 0x390
#define RW_MC_BWD_ICOMP_FLD 0x394
#define BWD_TOP_FLD (0x0)
#define BWD_BTM_FLD (0x1)
#define RW_MC_SAME_ICOMP 0x398
#define NO_USE_SAME_ICOPM1_FOR_FRAME (0x0)
#define USE_SAME_ICOMP1_FOR_FRAME (0x1)
#define RW_MC_REF_PIC_TYPE 0x39C
#define BWD_PROG_REF_PIC (0x0)
#define BWD_INTLCE_REF_PIC (0x1)
#define FWD_PROG_REF_PIC (0x0 << 16)
#define FWD_INTLCE_REF_PIC (0x1 << 16)
#define RW_MC_ISCALE6_X1 0x3A0
#define RW_MC_ISCALE6_X3 0x3A4
#define RW_MC_ISCALE6_X5 0x3A8
#define RW_MC_ISCALE6_X7 0x3AC
#define RW_MC_ISCALE6_X9 0x3B0
#define RW_MC_ISCALE6_X11 0x3B4
#define RW_MC_ISCALE6_X13 0x3B8
#define RW_MC_ISCALE6_X15 0x3BC
#define RW_MC_YSHIFT_OFF6 0x3C0
#define RW_MC_CSHIFT_OFF6 0x3C4
#define RW_MC_SAME_REF_PIC 0x3CC
#define RW_MC_P_LIST0 0x3DC // ~0x458
#define RW_MC_B_LIST0 0x45C // ~0x4d8
#define RW_MC_B_LIST1 0x4DC // ~0x558
#define RW_AMC_CBCR_OFFSET 0x55C
#define RW_AMC_Y_OUT_ADDR 0x560
#define RW_AMC_P_LIST0_FLD 0x564
#define RW_AMC_B_LIST0_FLD 0x568
#define RW_AMC_B_LIST1_FLD 0x56C
#define RW_MC_WRAPPER_SWITCH 0x57C
#define RW_MC_IRATIO 0x690 //RM Codec
#define RO_MC_DRAM_PEAK 0x770
#define RO_MC_DRAM_CYCLE 0x778
#define RW_MC_PARA_BEHAVIOR 0x998
#if (CONFIG_DRV_FPGA_BOARD)
#define RW_MC_MODE_CTL 0x5E4
#define MC_MV_MERGE_OFF (0x0 << 10)
#define MC_DRAM_REQ_MERGE_OFF (0x0 << 12)
#define MC_DRAM_REQ_DELAY_1T (0x0 << 16)
#define MC_QIU_BANK8 (0x1 << 17)
#define MC_QIU_BANK4 (0x0 << 18)
#endif
//PANDA
#define RW_MC_VLD_WRAPPER_ADDR 0x93C
#define MC_VLD_WRAPPER_READ (0x0ul<<16)
#define MC_VLD_WRAPPER_WRITE (0x1ul<<16)
#define RW_MC_VLD_WRAPPER_DATA 0x940
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8580)
#define RW_MC_PIC_W_MB 0x980
#define RW_MC_MVDCAC_SEL 0x80C
#endif
#define RW_MC_VLD_WRAPPER 0xA20
#define RW_MC_PP_WRAPPER 0xA24
#define RW_MC_PREFETCH 0xA2C
// *********************************************************************
// NBM MC Registers define
// *********************************************************************
#define RW_MC_NBM_CTRL 0x768
#define RW_MC_NBM_OFF (0x1 << 8)
// *********************************************************************
// DDR3 Switch MC Registers define
// *********************************************************************
#define RW_MC_DDR_CTRL0 0x7FC
#define RW_MC_DDR_CTRL1 0x800
#define RW_MC_DDR3_EN 0x834
// *********************************************************************
// HEVC Registers define
// *********************************************************************
//VLD part
#define RO_HEVLD_BARL 0x00
#define RW_HEVLD_CTRL 0x84
#define HEVC_EN (0x1)
#define HEVC_FIND_SC_CFG (0x1<<4)
#define HEVLD_PIC_TRG_REG 0x90
#define HEVC_FC_TRG_REG 0x94
#define HEVC_SC_START (0x1<<8)
#define HEVC_RPL_MOD (0x1<<4)
#define HEVC_WEIGHT_PRED_TBL (0x1<<0)
#define HEVC_VLD_TOP_PIC_PIX_SIZE 0x70
#define HEVC_VLD_TOP_PIC_BLK_SIZE 0x94
#define HEVC_VLD_TOP_BIT_DEPTH 0x100
#define HEVC_BITCNT_REG 0x120
#define RW_HEVLD_SPS_0 0xA0
#define RW_HEVLD_SPS_1 0xA4
#define RW_HEVLD_SPS_SIZE 0xA8
#define RW_HEVLD_PPS 0xAC
#define RW_HEVLD_PPS_QP 0xB0
#define RW_HEVLD_PPS_TILE 0xB4
#define RW_HEVLD_PPS_DBK 0xB8
#define RW_HEVC_SLICE_0 0xBC
#define RW_HEVC_SLICE_1 0xC0
#define RW_HEVC_SLICE_2 0xC4
#define RW_HEVC_SLICE_STR_LT 0xC8
#define RW_HEVC_REF_PIC_LIST_MOD 0xCC
#define RW_HEVC_PIC_BYTES 0xD0
#define RW_HEVC_ERR_DET_CTRL 0xF4
#define RW_HEVC_TILE_X_0 0x140
#define RW_HEVC_TILE_X_1 0x144
#define RW_HEVC_TILE_X_2 0x148
#define RW_HEVC_TILE_X_3 0x14C
#define RW_HEVC_TILE_X_4 0x150
#define RW_HEVC_TILE_X_5 0x154
#define RW_HEVC_TILE_X_6 0x158
#define RW_HEVC_TILE_X_7 0x15C
#define RW_HEVC_TILE_X_8 0x160
#define RW_HEVC_TILE_X_9 0x164
#define RW_HEVC_TILE_X_10 0x168
#define RW_HEVC_TILE_X_11 0x16C
#define RW_HEVC_TILE_X_12 0x170
#define RW_HEVC_TILE_X_13 0x174
#define RW_HEVC_TILE_X_14 0x178
#define RW_HEVC_TILE_X_15 0x17C
#define RW_HEVC_TILE_X_16 0x1C0
#define RW_HEVC_TILE_Y_0 0x180
#define RW_HEVC_TILE_Y_1 0x184
#define RW_HEVC_TILE_Y_2 0x188
#define RW_HEVC_TILE_Y_3 0x18C
#define RW_HEVC_TILE_Y_4 0x190
#define RW_HEVC_TILE_Y_5 0x194
#define RW_HEVC_TILE_Y_6 0x198
#define RW_HEVC_TILE_Y_7 0x19C
#define RW_HEVC_TILE_Y_8 0x1A0
#define RW_HEVC_TILE_Y_9 0x1A4
#define RW_HEVC_TILE_Y_10 0x1A8
#define RW_HEVC_TILE_Y_11 0x1AC
#define RW_HEVC_TILE_Y_12 0x1B0
#define RW_HEVC_TILE_Y_13 0x1B4
#define RW_HEVC_TILE_Y_14 0x1B8
#define RW_HEVC_TILE_Y_15 0x1BC
#define RW_HEVC_TILE_Y_16 0x1D0
//MC part
#define HEVC_PIC_WIDTH 0x208
#define HEVC_PIC_HEIGHT 0x20C
#define HEVC_DRAM_PITCH 0x980
#define HEVC_CBCR_DPB_OFFSET 0x934
//MV part
#define HEVC_MV_WR_SA 0x20C
#define HEVC_MV_CTRL 0x320
#define HEVC_LONG_TERM 0x324
#define HEVC_DPB_LT_BUF_ID_0_3 0x328
#define HEVC_DPB_LT_BUF_ID_4_7 0x32C
#define HEVC_DPB_LT_BUF_ID_8_11 0x330
#define HEVC_DPB_LT_BUF_ID_12_15 0x334
#define HEVC_L0_INFO_0 0x338
#define HEVC_L0_INFO_1 0x33C
#define HEVC_L0_INFO_2 0x340
#define HEVC_L0_INFO_3 0x344
#define HEVC_L0_INFO_4 0x348
#define HEVC_L0_INFO_5 0x34C
#define HEVC_L0_INFO_6 0x350
#define HEVC_L0_INFO_7 0x354
#define HEVC_L0_INFO_8 0x358
#define HEVC_L0_INFO_9 0x35C
#define HEVC_L0_INFO_10 0x360
#define HEVC_L0_INFO_11 0x364
#define HEVC_L0_INFO_12 0x368
#define HEVC_L0_INFO_13 0x36C
#define HEVC_L0_INFO_14 0x370
#define HEVC_L0_INFO_15 0x374
#define HEVC_L1_INFO_0 0x378
#define HEVC_L1_INFO_1 0x37C
#define HEVC_L1_INFO_2 0x380
#define HEVC_L1_INFO_3 0x384
#define HEVC_L1_INFO_4 0x388
#define HEVC_L1_INFO_5 0x38C
#define HEVC_L1_INFO_6 0x390
#define HEVC_L1_INFO_7 0x394
#define HEVC_L1_INFO_8 0x398
#define HEVC_L1_INFO_9 0x39C
#define HEVC_L1_INFO_10 0x3A0
#define HEVC_L1_INFO_11 0x3A4
#define HEVC_L1_INFO_12 0x3A8
#define HEVC_L1_INFO_13 0x3AC
#define HEVC_L1_INFO_14 0x3B0
#define HEVC_L1_INFO_15 0x3B4
//PP part
#define HEVC_DBK_ON 0x220
#define HEVC_Y_OUTPUT 0x224
#define HEVC_C_OUTPUT 0x228
#define HEVC_OUTPUT_WIDTH 0x22C
#define HEVC_DBK_ON2 0x238
#define HEVC_ENABLE_WR_REC 0x250
#define HEVC_PIC_WITDTH_MB 0x260
#define HEVC_PIC_HEIGHT_MB 0x264
//SQT part
#define HEVC_IQ_SRAM_32BITS_CTRL_REG 0x504
#define HEVC_IQ_SL_CTRL 0x630
#define HEVC_IQ_SACLING_FACTOR_DC_0 0x634
#define HEVC_IQ_SACLING_FACTOR_DC_1 0x638
#define HEVC_IQ_SRAM_ADDR 0x260
#define HEVC_IQ_SRAM_DATA 0x264
#define RW_HEVC_DEC_COMPLETE 0xA4
// EC part
#define HEVC_MC_REF_P 0x3DC
#define HEVC_MC_REF_B 0x45C
#define HEVC_LCU_POS_REG 0x12C
#define HEVC_VLD_ERROR_TYPE_ENABLE 0xE0
#define HEVC_VLD_PICTURE_BYTES 0xD0
#define HEVC_VLD_ERROR_HANDLING 0xD4
#define HEVC_PP_ERROR_HANDLE_MODE 0x40
#define RO_HEVLD_ERR_TYPE 0xE4
#define RO_HEVLD_ERR_ACCUMULATOR 0xE8
////////////////////////////////////
#define RO_HEVLD_UE 0x98 //
#define RO_HEVLD_SE 0x9C // 2's complement
#define RO_HEVLD_STATE_INFO 0x278
#define HEVLD_PIC_FINISH ((unsigned)(0x1) << 31)
#define RW_HEVLD_ERR_MASK 0x280
#define HEVLD_MB_END_CHK ((unsigned)(0x1) << 14)
#define NO_NEXT_START_CODE ((unsigned)(0x1) << 3)
#define CABAC_ALIGN_BIT_ERR ((unsigned)(0x1) << 8)
#define CABAC_ZERO_WORD_ERR ((unsigned)(0x1) << 14)
#define RO_HEVLD_DEC_CYCLE 0x288
#define RW_HEVLD_RESET_SUM 0x88 //
#define HEVLD_RESET_SUM_OFF 0x0
#define HEVLD_RESET_SUM_ON 0x1
#define RW_HEVLD_MC_BUSY_THRESHOLD 0x290
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8530)
#define RW_HEVLD_RM03R 0x2C8
#define RO_ALVD_FIND_03 ((unsigned)(0x1) << 11)
#define VIEW_REORDER_SWITCH ((unsigned)(0x1) << 13)
#define MVC_SWITCH ((unsigned)(0x1) << 14)
#define HEADER_EXT_SWITCH ((unsigned)(0x1) << 16)
#define REORDER_MVC_SWITCH ((unsigned)(0x1) << 17)
#define RW_HEVLD_FSSR 0x2D8
#define FW_SEARCH_START_CODE ((unsigned)(0x1) << 0)
#endif
// *********************************************************************
// AVC VLD Registers define
// *********************************************************************
// Barral Shifter from 0x00 - 0x80
#define RO_AVLD_BARL 0x00
#define RW_AVLD_CTRL 0x84
#define AVC_EN (0x1)
#define AVC_DEC_CYCLE_EN (0x1<<13)
#define AVC_ERR_BYPASS ((unsigned)(0x3) << 14)
#define AVC_NON_SPEC_SWITCH ((unsigned)(0x1) << 15)
#define AVC_ERR_CONCEALMENT ((unsigned)(0x2) << 22)
#ifdef MEM_PAUSE_SUPPORT
#define AVLD_MEM_PAUSE_MOD_EN (0x1<<27)
#else
#define AVLD_MEM_PAUSE_MOD_EN (0x0<<27)
#endif
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8530)
#define AVC_RDY_WITH_CNT ((unsigned)(0x3) << 1) //in search start code, it should be set as 3
#else
#define AVC_RDY_WITH_CNT ((unsigned)(0x0) << 1)
#endif
#define AVC_RDY_CNT_THD (0x0 << 3)
#define AVC_RBSP_CHK_INV ((unsigned)(0x0) << 28)
#define AVC_SUM6_APPEND_INV ((unsigned)(0x1) << 29)
#ifdef MEM_PAUSE_SUPPORT
#define AVC_READ_FLAG_CHK_INV ((unsigned)(0x0) << 30)
#define AVC_NOT_CHK_DATA_VALID ((unsigned)(0x1) << 31)
#else
#define AVC_READ_FLAG_CHK_INV ((unsigned)(0x1) << 30)
#define AVC_NOT_CHK_DATA_VALID ((unsigned)(0x0) << 31)
#endif
#define RW_AVLD_SPS 0x88
#define RW_AVLD_PIC_SIZE 0x8C
#define AVLD_PIC_HEIGHT_IN_MBS_POS 8
#define FW_FST_MB_IN_SLICE_MASK 0x1FFFF
#define RW_AVLD_PPS_1 0x90
#define RW_AVLD_PPS_2 0x94
#define RW_AVLD_SHDR_1 0x98
#define RW_AVLD_SHDR_2 0x9C
#define RW_AVLD_MAX_PIC_NUM 0xA0
#define RW_AVLD_CUR_PIC_NUM 0xA4
#define RW_AVLD_REORD_P0_RPL 0xA8
#define RW_AVLD_REORD_B0_RPL 0x128
#define RW_AVLD_REORD_B1_RPL 0x1A8
#define RW_AVLD_RESET_PIC_NUM 0x228
#define RESET_PIC_NUM 0x1
#define RW_AVLD_RPL_REORD 0x22C
#define RW_AVLD_WEIGHT_PRED_TBL 0x230
#define RW_AVLD_INIT_CTX_SRAM 0x234
#define RW_AVLD_PROC 0x238
#define RO_AVLD_UE 0x23C
#define RO_AVLD_SE 0x240 // 2's complement
#define RW_AVLD_PRED_ADDR 0x244
#define RO_AVLD_STATUS 0x25c
#define RO_AVLD_STALL 0x2000000
#define RO_AVLD_TIMEOUT_THD 0x268
#define AVLD_TIMEOUT_THD 0xffffffff
#define RO_AVLD_ERR_MESSAGE 0x270
#define RO_AVLD_COMPLETE 0x274
#define RO_AVLD_STATE_INFO 0x278
#define AVLD_PIC_FINISH ((unsigned)(0x1) << 31)
#define RW_AVLD_2ND_BARL_CTRL 0x27C
#define AVLD_2ND_BARL_EN 0x3
#define RW_AVLD_ERR_MASK 0x280
#define AVLD_MB_END_CHK ((unsigned)(0x1) << 14)
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8530)
#define AVLD_4BLOCKS_SKIP_CHK ((unsigned)(0x1) << 21)
#endif
#define RO_AVLD_ERR_ACCUMULATOR 0x284
#define NO_NEXT_START_CODE ((unsigned)(0x1) << 3)
#define CABAC_ALIGN_BIT_ERR ((unsigned)(0x1) << 8)
#define CABAC_ZERO_WORD_ERR ((unsigned)(0x1) << 14)
#define RO_AVLD_DEC_CYCLE 0x288
#define RW_AVLD_RESET_SUM 0x28C
#define AVLD_RESET_SUM_OFF 0x0
#define AVLD_RESET_SUM_ON 0x1
#define RW_AVLD_MC_BUSY_THRESHOLD 0x290
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8530)
#define RW_AVLD_RM03R 0x2C8
#define RO_ALVD_FIND_03 ((unsigned)(0x1) << 11)
#define VIEW_REORDER_SWITCH ((unsigned)(0x1) << 13)
#define MVC_SWITCH ((unsigned)(0x1) << 14)
#define HEADER_EXT_SWITCH ((unsigned)(0x1) << 16)
#define REORDER_MVC_SWITCH ((unsigned)(0x1) << 17)
#define RW_AVLD_FSSR 0x2D8
#define FW_SEARCH_START_CODE ((unsigned)(0x1) << 0)
#endif
#if VDEC_MVC_SUPPORT
#define RW_AVLD_MVC_REFS_L0 0x2F0
#define RW_AVLD_MVC_REFS_L1 0x370
#define RW_AVLD_MAX_VIEW_IDX_L0 0x3F0
#define RW_AVLD_MAX_VIEW_IDX_L1 0x3F4
#endif
#define RO_AVLD_2ND_BARL 0x800
#define RO_AVLD_2ND_UE 0x888
#define RO_AVLD_2ND_SE 0x88c // 2's complement
#define RW_AVLD_2ND_CTRL 0x884
// *********************************************************************
// AVC MV Registers define
// *********************************************************************
#define RW_AMV_P_REF_PARA 0 // ~0x7C
#define RW_AMV_B0_REF_PARA 0x80 // ~0xFC
#define RW_AMV_B1_REF_PARA 0x100 // ~0x17C
#define RW_AMV_B1_REF_ADDR 0x180 // ~0x1FC
#define RW_AMV_CURR_POC 0x200
#define RW_AMV_CURR_TFLD_POC 0x204
#define RW_AMV_CURR_BFLD_POC 0x208
#define RW_AMV_WR_ADDR 0x20C
#if VDEC_MVC_SUPPORT
#define RW_AMV_MVC_CTRL 0x244
#define FW_NO_MV_MVC ((unsigned)(0x1) << 4)
#endif
#define RW_AMV_REDUCE_BMV 0x220
#define EN_AMV_REDUCE_BMV (0x1 << 5)
#define EN_AMV_ALLEG_MVC_CFG (0x1 << 6)
// *********************************************************************
// AVC FilmGrain Registers define
// *********************************************************************
#define RW_FGT_MODE 0x00
#define FGT_EN 0x1 << 0
#define FGT_SCR_PP 0x1 << 1
#define FGT_VDSCL_BUSY_EN 0x1<<4
#define RW_FGT_SEED_ADDR 0x04
#define RW_FGT_SEI_ADDR_A 0x08
#define RW_FGT_SEI_ADDR_B 0x0C
#define RW_FGT_DATABASE_ADDR 0x10
#define RW_FGT_OUT_Y_ADDR 0x14
#define RW_FGT_OUT_C_ADDR 0x18
#define RW_FGT_IN_Y_ADDR 0x1C
#define RW_FGT_IN_C_ADDR 0x20
#define RW_FGT_MB_SIZE 0x24
#define RW_FGT_DRAM_CTRL 0x28
#define RW_FGT_SEI_CTRL_A 0x2c
#define FGT_CANCLE_FLG_A 0x1 << 0
#define RW_FGT_SEI_CTRL_B 0x30
#define RW_FGT_CTRL_STATE 0x34
// *********************************************************************
// RM VLD Registers define
// *********************************************************************
#define RW_RMVLD_CTRL 0x84
#define CFG_RM_CDECODER 0x1 << 0
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8580)
#define RW_RM_TOPVLD_PICSIZE1 0x70 //PIC_WIDTH & PIC_HEIGHT
#define RW_RM_TOPVLD_PICSIZE2 0x68 //PIC_WIDTH in mb & PIC_HEIGHT in mb
#define RW_RM_TOPVLD_PICSIZE3 0x6C //Total mbs in Pic
#define RW_RM_TOPVLD_TIMEOUT 0x50
#define RW_RM_TOPVLD_TIMEOUT_INT_SWITCH 0x54
#define RW_RM_TOPVLD_PREDADDR 0x28
#define RW_RM_TOPVLD_PREDADDR_MODE 0x2C
#endif
#define RW_RMVLD_PICSIZE1 0x88
#define RW_RMVLD_PICSIZE2 0x8C
#define RW_RMVLD_PICHDRPARA1 0x90
#define RW_RMVLD_PICHDRPARA2 0x94
#define RW_RMVLD_TIMEOUT 0x98
#define RW_RMVLD_PREDADDR 0x9C
#define RW_RMVLD_STARTDEC 0xA8
#define RW_RMVLD_ERRTYPE 0xC0
#define RW_RMVLD_ERRTYPEACCUM 0xC4
#define RW_RMVLD_VLDOK 0xCC
#define RW_RMVLD_PICFINISH 0xD0
#define RW_RMVLD_SLICENUM 0xF4
#define RW_RMVLD_BCNTRST 0x108
#define CFG_RM_RST0 0x0 << 0
#define CFG_RM_RST1 0x1 << 0
#define RW_RMVLD_SLICEBCNT 0x110
#define RW_RMVLD_CTRL2 0x324
// *********************************************************************
// RM MV Registers define
// *********************************************************************
#define RW_RMMV_CPLOCPICTYPE 0x218
#define RW_RMMV_IRATIO0 0x21C
// *********************************************************************
// RM PP Registers define
// *********************************************************************
#define RW_RMPP_PARAM 0x8
#define RW_RMPP_PQ 0x1C
// *********************************************************************
// Letter Box Registers define
// *********************************************************************
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8560)
#define RW_VEC_LBOX_UP_CFG 0x88
#define RW_VEC_LBOX_LOW_CFG 0x8C
#define RW_VEC_LBOX_SIDE_CFG 0x90
#define RW_VEC_LBOX_THD_OFFSET 0x94
#define RW_VEC_LBOX_CNT_THD 0x98
#define RO_VEC_LBOX_Y_LINE 0x9C
#define RO_VEC_LBOX_C_LINE 0xA0
#endif
// *********************************************************************
// VDSCL Registers define
// *********************************************************************
#define RW_VDSCL_ACTIVATE 0x00
#define RW_VDSCL_EN (1<<0)
#define RW_VDSCL_CONVERT (1<<2)
#define RW_VDSCL_SW_RESET (3<<4)
#define RW_VDSCL_TYPE 0x04
#define RW_VDSCL_PIC_STRU (3<<0)
#define RW_VDSCL_SRC_MC (0<<2)
#define RW_VDSCL_SRC_PP (2<<2)
#define RW_VDSCL_SRC_FG (4<<2)
#define RW_VDSCL_SPEC_MPEG (0<<5)
#define RW_VDSCL_SPEC_WMV (1<<5)
#define RW_VDSCL_SPEC_264 (2<<5)
#define RW_VDSCL_Y_ONLY (1<<7)
#define RW_VDSCL_RASTER_SCAN (1<<16)
#define RW_VDSCL_MEM_IF 0x08
#define RW_VDSCL_ADDR_SWAP_MODE1 (2<<0)
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8530)
#define RW_VDSCL_ADDR_SWAP_MODE2 (7<<0)
#else
#define RW_VDSCL_ADDR_SWAP_MODE2 (3<<0)
#endif
#define RW_VDSCL_BOUND 0x0C
#define RW_VDSCL_BOUND_PAD_CR (0xFF<<0)
#define RW_VDSCL_BOUND_PAD_CB (0xFF<<8)
#define RW_VDSCL_BOUND_PAD_Y (0xFF<<16)
#define RW_VDSCL_BOUND_PAD_EN (1<<24)
#define RW_VDSCL_BOUND_NO_PAD (1<<25)
#define RW_VDSCL_SRC_SIZE 0x10
#define RW_VDSCL_SRC_WIDTH (0xFFF<<16)
#define RW_VDSCL_SRC_HEIGHT (0xFFF<<0)
#define RW_VDSCL_SRC_OFFSET 0x14
#define RW_VDSCL_TG_BUF_LEN 0x18
#define RW_VDSCL_TRG_BUF_LEN (0xFF<<0)
#define RW_VDSCL_TG_SIZE 0x1C
#define RW_VDSCL_TG_WIDTH (0xFFF<<16)
#define RW_VDSCL_TG_HEIGHT (0xFFF<<0)
#define RW_VDSCL_TG_OFFSET 0x20
#define RW_VDSCL_TG_Y_OW_BASE 0x24
#define RW_VDSCL_TG_Y_OW_ADDR_BASE (0xFFFFFFF<<0)
#define RW_VDSCL_TG_C_OW_BASE 0x28
#define RW_VDSCL_TG_C_OW_ADDR_BASE (0xFFFFFFF<<0)
#define RW_VDSCL_H_SCL_Y 0x2C
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8530)
#define RW_VDSCL_H_SCL_Y_FACTOR ((UINT32)(0xFFFF)<<0)
#define RW_VDSCL_H_SCL_Y_OFFSET ((UINT32)(0xFFFF)<<16)
#else
#define RW_VDSCL_H_SCL_Y_FACTOR (0xFFF<<0)
#define RW_VDSCL_H_SCL_Y_OFFSET (0xFFF<<16)
#endif
#define RW_VDSCL_H_SCL_C 0x30
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8530)
#define RW_VDSCL_H_SCL_C_FACTOR ((UINT32)(0xFFFF)<<0)
#define RW_VDSCL_H_SCL_C_OFFSET ((UINT32)(0xFFFF)<<16)
#else
#define RW_VDSCL_H_SCL_C_FACTOR (0xFFF<<0)
#define RW_VDSCL_H_SCL_C_OFFSET (0xFFF<<16)
#endif
#define RW_VDSCL_V_SCL_Y 0x34
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8530)
#define RW_VDSCL_V_SCL_Y_FACTOR ((UINT32)(0xFFFF)<<0)
#define RW_VDSCL_V_SCL_Y_OFFSET ((UINT32)(0xFFFF)<<16)
#else
#define RW_VDSCL_V_SCL_Y_FACTOR (0xFFF<<0)
#define RW_VDSCL_V_SCL_Y_OFFSET (0xFFF<<16)
#endif
#define RW_VDSCL_V_SCL_C 0x38
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8530)
#define RW_VDSCL_V_SCL_C_FACTOR ((UINT32)(0xFFFF)<<0)
#define RW_VDSCL_V_SCL_C_OFFSET ((UINT32)(0xFFFF)<<16)
#else
#define RW_VDSCL_V_SCL_C_FACTOR (0xFFF<<0)
#define RW_VDSCL_V_SCL_C_OFFSET (0xFFF<<16)
#endif
#define RW_VDSCL_TMP_OW_BASE 0x3C
#define RW_VDSCL_TMP_OW_ADDR_BASE (0xFFFFFFF<<0)
#define RW_VDSCL_TFSCLOFT 0x70
#define RW_VDSCL_LUMA_KEY 0x74
#define RW_VDSCL_LK_EN (0x1<<0)
#define RO_VDSCL_DONE 0x7C
#define RO_VDSCL_DONE_FRAME (0x1<<0)
// *********************************************************************
// VP6 VLD Registers define
// *********************************************************************
//Picture Layer Parameter
// Barral Shifter from 0x00 - 0x80
//Temp workaround for HW
#define RO_VP6_VLD_BARL 0x00
#define RW_VP6_INIT_BOOL 0x84
#define RW_VP6_BOOL_EN (1<<0)
#define RW_VP6_BCPR 0x88
#define RW_VP6_PCI_PAR 0x8C
#define RW_VP6_FLAG (1<<0)
//PANDA
#ifdef VP6_MULTI_STREAM
#define RW_VP6_VLD_ETC 0x158
#else
#define RW_VP6_VLD_ETC 0xDC
#endif
#define ETC_COEFF_ERROR (0x1<<0)
#define ETC_MC_TIMEOUT (0x1<<1)
#define ETC_MV_TIMEOUT (0x1<<2)
#define ETC_DCAC_TIMEOUT (0x1<<3)
#define ETC_HUFF_ERR (0x1<<4)
#define RW_PIC_MB_SIZE_M1 0x68
#define RW_PIC_PIX_SIZE 0x70
#define RW_VP6_KEY_FRM (1<<1)
#define RW_VP6_RTN_ERR (1<<2)
#define RW_VP6_EERE (1<<3)
#define RW_VP6_DAEC (1<<4)
#define RW_VP6_HUFFMAN (1<<5)
#define RW_VP6_MULTI (1<<6)
//Get Bits Function
#define RW_VP6_GBFR 0x94
#define RW_VLD_VP6DEC 0xA0
#define RO_VP6_PIC_DEC_END 0xA8
#define VP6_DEC_START (1<<0)
#define RW_VP6_VLD_WARR 0xC8
//MULTI-STREAM PANDA
#define VP6_CTX_WARR_READ (0x0ul<<8)
#define VP6_CTX_WARR_WRITE (0x1ul<<8)
#define VP6_CTX_WARR_BOOL (0x0ul<<12)
#define VP6_CTX_WARR_HUFFMAN (0x1ul<<12)
#define RW_VP6_VLD_FCVR1 0xCC
#define RW_VP6_VLD_FCVR2 0xD0
#define RW_VP6_VLD_FCVR3 0xD4
#define RW_VP6_VLD_FCVR4 0xD8
//MULTI-STREAM PANDA
#ifdef VP6_MULTI_STREAM
#define RW_VP6_VLD_WWFR 0x158
#else
#define RW_VP6_VLD_WWFR 0xDC
#endif
#define WWFR_COEFF_ERROR (0x1<<0)
#define WWFR_MC_TIMEOUT (0x1<<1)
#define WWFR_MV_TIMEOUT (0x1<<2)
#define WWFR_DCAC_TIMEOUT (0x1<<3)
#define WWFR_HUFF_ERR (0x1<<4)
#define RO_VP6_VLD_ERR 0xF4
//MULTI-STREAM PANDA
#define RW_VP6_VLD_PROB_UPD 0x140
#define RW_VP6_PAD_ZERO_MODE 0x14C
#define RW_VP6_PIC_BYTE_CNT 0x150
#define RW_VP6_PAD_ZERO_MODE2 0x164
#define RW_VP6_PIC_BYTE_CNT2 0x168
#define VLD_WRAPPER_MP_TYPE_PROB 840
#define VLD_WRAPPER_UPD_MP_TYPE 936
#define VLD_WRAPPER_DC_Y 945
#define VLD_WRAPPER_DC_C 946
#define VLD_WRAPPER_RUN_0 947
#define VLD_WRAPPER_RUN_1 948
#define VLD_WRAPPER_AC_BASE 949 //949~984
#define VLD_WRAPPER_AC_BASE_END 984
#define CTX_BOOL_DC_Y 0
#define CTX_BOOL_DC_C 1
#define CTX_BOOL_RUN_0 2
#define CTX_BOOL_RUN_1 3
#define CTX_BOOL_AC_BASE 4 //4~39
#define CTX_HUFF_AC_BASE 0 //0~23
#define CTX_HUFF_DC_Y 24
#define CTX_HUFF_DC_C 25
#define CTX_HUFF_RUN_0 26
#define CTX_HUFF_RUN_1 27
#define CTX_HUFF_EOB_RUN 28
//~MULTI-STREAM PANDA
#define RO_VP6_VLD_DDR3_Finish 0x24C
#define VP6_DDR3_FINISH (1<<30)
//#define RW_VP6_QUANT_REG 0x200
#define RW_VP6_QUANT_REG 0x500 //20110728
#define RW_VP6_BKDOOR 0x85C
#define VP6_ADOBE_EN (1<<12)
#define VP6_2FLIMIT_ZERO (1<<8)
#define VP6_DBK_START (1<<4)
#define VP6_CBCR_MAKE_RND (1<<0)
#define RW_VP6_LOOPDBK 0x860
#define RW_VP6_MV_TH 0x864
#define RW_VP6_AUTOSEL 0x868
#define RW_VP6_COEF0_P1 0x86C
#define RW_VP6_COEF0_P2 0x870
#define RW_VP6_COEF1_P1 0x874
#define RW_VP6_COEF1_P2 0x878
#define RW_VP6_COEF2_P1 0x87C
#define RW_VP6_COEF2_P2 0x880
#define RW_VP6_COEF3_P1 0x884
#define RW_VP6_COEF3_P2 0x888
//VP6 MC
#define RW_VP6_MC_RY 0x0
#define RW_VP6_MC_RC 0x4
#define RW_VP6_MC_GY 0x8
#define RW_VP6_MC_GC 0xC
#define RW_VP6_MC_DY 0x9C
#define RW_VP6_MC_DC 0xA0
//~VP6 MC
//VP6 PP
#define RW_VP6_MC_PP_QP_TYPE 0x234
//~VP6 PP
// *********************************************************************
// VP8 VLD Registers define
// *********************************************************************
//Picture Layer Parameter
#define RO_VP8_VBSR1 0x00 // 0--32x4 Barrel shift read
#define RO_VP8_VRLR 0x84 // 33--40x4 read literal
#define RO_VP8_VBSR2 0x200 // 128--160x4 second barrel shift read
#define RW_VP8_CTRL 0xA4 // 41x4 control register
#define RW_VP8_VP8FLAG 0
#define RO_VP8_SUM1_S 8
#define RO_VP8_SUM1_E 13
#define RO_VP8_SUM2_S 16
#define RO_VP8_SUM2_E 21
#define RW_VP8_HEADER2 0xA8 // 42x4
#define RW_VP8_PICTYPE_FLAG 0
#define RW_VP8_VERSION_S 1
#define RW_VP8_VERSION_E 3
#define RW_VP8_FSTPB_S 8
#define RW_VP8_FSTPB_E 26
#define RW_VP8_HEADER3 0xAC // 43x4
#define RW_VP8_CLTYPE_FLAG 0
#define RW_VP8_SEGEN_FLAG 4
#define RW_VP8_UMBSM_FLAG 8
#define RW_VP8_MTP_S 12
#define RW_VP8_MTP_E 13
#define RW_VP8_MBSKIP_FLAG 16
#define RW_VP8_PICPROB 0xB0 // 44x4
#define RW_VP8_PSKIPF_S 0
#define RW_VP8_PSKIPF_E 7
#define RW_VP8_PINTRA_S 8
#define RW_VP8_PINTRA_E 15
#define RW_VP8_PLAST_S 16
#define RW_VP8_PLAST_E 23
#define RW_VP8_PGF_S 24
#define RW_VP8_PGF_E 31
#define RW_VP8_FWPROB 0xB4 // 45x4 0--7 bit the probability of firmware read_lit(n)
#define RW_VP8_HDR 0xB8 // 46x4 0 bit triger start decode
#define RW_VP8_COEFR0 0xC0 //48X4
#define RW_VP8_COEFR1 0xC4
#define RW_VP8_COEFR2 0xC8
#define RW_VP8_COEFR3 0xCC
#define RW_VP8_COEFR4 0xD0
#define RW_VP8_COEFR5 0xD4
#define RW_VP8_COEFR6 0xD8
#define RW_VP8_COEFR7 0xDC
#define RW_VP8_COEFPB0 0xE0 // 56 X4
#define RW_VP8_COEFPB1 0xE4
#define RW_VP8_COEFPB2 0xE8
#define RW_VP8_COEFPB3 0xEC
#define RW_VP8_COEFPB4 0xF0
#define RW_VP8_COEFPB5 0xF4
#define RW_VP8_COEFPB6 0xF8
#define RW_VP8_COEFPB7 0xFC
#define RW_VP8_BSASET 0x100 // 64X4 0--8 bit Bus_SRAM address setting
#define RW_VP8_BSDSET 0x104 //65x4 0--31bit Bus_SRAM write data setting
#define RW_VP8_CSASET 0x108 // 66X4 0--7bit CTX_SRAM address setting
#define RW_VP8_CSDSET 0x10C // 67x4 0--31bit CTX_SRAM write data setting
#define RO_VP8_BINIT1 0x110 //68x4 0--31bit bool0 init
#define RO_VP8_BINIT2 0x114 //69x4 0--31bit bool1 init
#define RW_VP8_MVPROB 0x120 //72x4
#define RW_VP8_PMVISX_S 0
#define RW_VP8_PMVISX_E 7
#define RW_VP8_PMVISY_S 8
#define RW_VP8_PMVISY_E 15
#define RW_VP8_PMVSX_S 16
#define RW_VP8_PMVSX_E 23
#define RW_VP8_PMVSY_S 24
#define RW_VP8_PMVSY_E 31
#define RW_VP8_STR 0x140 // 80x4
#define RW_VP8_STR1_FLAG 0
#define RW_VP8_STR2_FLAG 8
#define RW_VP8_BCRT 0x144 // 81x4
#define RW_VP8_BCRT1_FLAG 0
#define RW_VP8_BCRT2_FLAG 8
#define RW_VP8_CPUT 0x148 //82x4 0bit trigger coef_prob_update
#define RW_VP8_MVPUT 0x14C //83x4 0bit trigger mv_prob_update
#define RO_VP8_PICFSM 0x150 //84x4 0--18bit pic state
#define RO_VP8_MBFSM 0x154 //85x4 0--22 mb_state
#define RO_VP8_COEFFSM 0x158 //86x4 0--2bit coeff_dec_state
#define RO_VP8_ERTR 0x15C //87x4 0--31 error type register
#define RO_VP8_ERRXY 0x160 //88x4
#define RO_VP8_ERRY_S 0
#define RO_VP8_ERRY_E 8
#define RO_VP8_ERRX_S 16
#define RO_VP8_ERRX_E 24
#define RO_VP8_RECKSM 0x164 //89x4 0--31bite residual check sum
#define RO_VP8_LTHR1 0x168 //90x4 0--31 barrel_shifter_latch2
#define RO_VP8_LTHR2 0x16C //91x4 0--31 second barrel_shifter_latch2
#define RO_VP8_VOKR 0x170 //92x4 0bit vld ok :1 means that vld decode whole picture
#define RO_VP8_PFR 0x174 // 93x4 0bit picture finish: 1 means that vdec decode whole picture
#define RO_VP8_STATUS 0x178 // 94X4
#define RO_VP8_XY 0x17C //95x4
#define RO_VP8_CURRY_S 0
#define RO_VP8_CURRY_E 8
#define RO_VP8_CURRX_S 16
#define RO_VP8_CURRX_E 24
#define RO_VP8_HWA 0x180 // 96X4 0bit hw is in process
// MV Register
#define RW_VP8_MV_RFSB 0x2D4 // 181x4
//MC Register
#define RW_MC_PIC1Y_ADD 0x3E0 // 248x4
#define RW_MC_PIC2Y_ADD 0x3E4
#define RW_MC_PIC3Y_ADD 0x3E8
#define RW_MC_LUMA_SIZE 0x934 //589x4
#define RW_MC_VP8SETTING 0x97C //607x4
#define RW_MC_VP8FULLPEL_FLAG 8
#define RW_MC_BILINEAR_OR_SIXTAP_FLAG 4
#define RW_MC_SUPERBITSCAN_OFF_FLAG 0
#define RW_MC_VP8RANDOMERRSET 0x9F8 //638x4
#define RW_MC_VP8RANDOM_ERR 1
//PP Register
#define RW_PP_VP8PARA 0x20 // 8x4
#define RW_PP_VP8ENABLE_FLAG 0
#define RW_PP_FLTTYPE_FLAG 4 // 0:normal 1: simple
#define RW_PP_MODEREF_DELTA_ENABLE_FLAG 8
#define RW_PP_FRAMETYPE_FLAG 12 // 0:Key 1:Inter
#define RW_PP_SHARPLVL_S 16
#define RW_PP_SHARPLVL_E 18
#define RW_PP_VP8FILTER_LEVEL 0x24 // 9X4
#define RW_PP_FILTER_LV0_S 0
#define RW_PP_FILTER_LV0_E 5
#define RW_PP_FILTER_LV1_S 8
#define RW_PP_FILTER_LV1_E 13
#define RW_PP_FILTER_LV2_S 16
#define RW_PP_FILTER_LV2_E 21
#define RW_PP_FILTER_LV3_S 24
#define RW_PP_FILTER_LV3_E 29
#define RW_PP_VP8REFDELTA 0x28 // 10x4
#define RW_PP_VP8MODEDELTA 0x2C // 11x4
#define RW_PP_DELTA_ID0_S 0
#define RW_PP_DELTA_ID0_E 6
#define RW_PP_DELTA_ID1_S 8
#define RW_PP_DELTA_ID1_E 14
#define RW_PP_DELTA_ID2_S 16
#define RW_PP_DELTA_ID2_E 22
#define RW_PP_DELTA_ID3_S 24
#define RW_PP_DELTA_ID3_E 30
#define RW_PP_SPECIAL_MODE 0x30 // 12x4
#define RW_PP_REG_17 0x44 // 17x4
#define RW_PP_BRC_OFFSET 0x70 // 28x4
// *********************************************************************
// AVS relate Registers definitions
// *********************************************************************
#define RW_AVS_VLD_COMPLETE_CLR 0xac
#define RW_AVS_VLD_HW_TIMEOUT 0xB4
#ifdef CC_AVS_EMULATION
#define AVS_HW_TIMEOUT 0x66684B
#else
#define AVS_HW_TIMEOUT 0xCCD097
#endif
#define RO_AVS_VLD_COMPLETE 0x120
#define RO_AVS_VLD_PIC_FINISH 0x124
#define RW_AVS_VLD_QUANT_TABLE_POS 0x260
#define RW_AVS_VLD_QUANT_TABLE 0x264
#define RW_AVS_VLD_CTRL 0x84
#define RW_AVS_VLD_PIC_SIZE 0x88
#define RW_AVS_VLD_PHP 0x8C
#define RW_AVS_VLD_ERR_CONCEALMENT 0x90
#define AVS_ERR_CONCEALMENT_ENABLE 0x201
#define AVS_ERR_CONCEALMENT_DISABLE 0
#define RW_AVS_VLD_PRED_BASE_ADDR 0x98
#define RW_AVS_VLD_DECSTART 0x9C
#define RW_AVS_VLD_CLR_BYTE_COUNT 0xC0
#define RW_VLD_MCPICSZ 0xC8
#define RW_AVS_VLD_BITSTUFFING_SWITCH 0xC4
#define RW_AVS_VLD_MODE_SWITCH 0xF4
#define RW_AVS_VLD_BYTE_COUNT 0x138
#define RW_MC_UMV_PIC_WIDTH 0x208
#define RW_MC_UMV_PIC_HEIGHT 0x20C
#define RW_MC_DEC_Y 0x9C // output decoder buffer for y
#define RW_MC_DEC_C 0xA0 // output decoder buffer for cbcr
#define RW_AVS_MV_ADDR 0x20C
#define RW_AVS_MC_PP_ENABLE 0x220
#define RW_AVS_MC_DISABLE_WRITE 0x250
#define RW_AVS_MC_P_LIST0_PIC0_Y_ADDR 0x3DC
#define RW_AVS_MC_P_LIST0_PIC1_Y_ADDR 0x3E0
#define RW_AVS_MC_P_LIST0_PIC2_Y_ADDR 0x3E4
#define RW_AVS_MC_P_LIST0_PIC3_Y_ADDR 0x3E8
#define RW_AVS_MC_B_LIST0_PIC0_Y_ADDR 0x45C
#define RW_AVS_MC_B_LIST0_PIC1_Y_ADDR 0x460
#define RW_AVS_MC_B_LIST1_PIC0_Y_ADDR 0x4DC
#define RW_AVS_MC_B_LIST1_PIC1_Y_ADDR 0x4E0
#define RW_AVS_MC_P_FIELD_DESCRIPTION 0x564
#define RW_AVS_MC_B_REF 0x930
#define RW_AVS_MV_BW_I_REF 0x218
#define RW_AVS_BLK_FW_DISTANCE_1_0 0x2A8
#define RW_AVS_BLK_FW_DISTANCE_3_2 0x2AC
#define RW_AVS_BLK_BW_DISTANCE_1_0 0x2B0
#define RW_AVS_BLK_FW_MED_RATIO_1_0 0x2B4
#define RW_AVS_MV_FW_MED_RATIO_3_2 0x2B8
#define RW_AVS_MV_BW_MED_RATIO_1_0 0x2BC
#define RW_AVS_MV_DIRECT_RATIO_1_0 0x2C0
#define RW_AVS_MV_DIRECT_RATIO_3_2 0x2C4
#define RW_AVS_MC_LUMA_SIZE 0x934
#define RW_AVS_PP_AVS_MODE 0x0
#define RW_AVS_PP_LUMA_ADDR 0x224
#define RW_AVS_PP_CHROM_ADDR 0x228
#define RO_AVS_VLD_UE 0xC8
#define RO_AVS_VLD_SE 0xCC // 2's complement
#define RW_AVS_FIND_STARTCODE 0xD0
#define RW_AVS_FIND_NEXT_STARTCODE 0xD4
#define RO_AVS_ERROR_TYPE 0x114
#define RO_AVS_ERROR_ACC 0x118
#define RO_AVS_TIMEOUT_CNT 0x11C
#define RO_AVLD_SMKR 0x250
// *********************************************************************
// Video Constant define
// *********************************************************************
// Referenc Buf / B Buf / Digest Buf / Post Processing Buf Index
#define MPV_REF_BUF_0 0
#define MPV_REF_BUF_1 1
#define MPV_B_BUF_0 2
#define MPV_B_BUF_1 3
#define MC_DIG_BUF 2
// Picture Field control for MC
#define MC_TOP_FLD 0
#define MC_BOTTOM_FLD 1
#define MC_2ND_FLD_OFF 0
#define MC_2ND_FLD_ON 1
typedef enum
{
PIC_STRUCT_FRAME = 0,
PIC_STRUCT_TOP = 1,
PIC_STRUCT_BOTTOM = 2,
PIC_STRUCT_TOP_BOTTOM = 3
} EPicStruct;
typedef enum
{
PAD_MODE_NO_PAD,
PAD_MODE_EXTEND,
PAD_MODE_COLOR
} EPadMode;
typedef enum
{
VID_COLOR_TRANSPARENT = 0x000000,
VID_COLOR_BLACK = 0x808010,
VID_COLOR_BLUE = 0x72D423,
VID_COLOR_RED = 0xD46441,
VID_COLOR_MAGENTA = 0xC6B854,
VID_COLOR_GREEN = 0x3A4870,
VID_COLOR_CYAN = 0x2C9C83,
VID_COLOR_YELLOW = 0x8E2CA2,
VID_COLOR_GRAY = 0x8080B4,
VID_COLOR_WHITE = 0x8080EB
} EVidColor;
#define IO_BASE VDEC_BASE ///TODO:
// *********************************************************************
// Video Decoder Macros
// *********************************************************************
#define vWriteGenReg(dAddr, dVal) mt65xx_reg_sync_writel(dVal, dAddr) //*(volatile UINT32 *)(IO_BASE + dAddr) = dVal
#define u4ReadGenReg(dAddr) *(volatile UINT32 *)(dAddr)
// *********************************************************************
// Common Video Decoder HW Functions
// *********************************************************************
void vWriteReg(UINT32 dAddr, UINT32 dVal);
UINT32 u4ReadReg(UINT32 dAddr);
void vWriteGconReg(UINT32 dAddr, UINT32 dVal);
UINT32 u4ReadGconReg(UINT32 dAddr);
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8580)
extern void vVDecWriteTopVLD(UINT32 u4VDecID, UINT32 u4Addr, UINT32 u4Val);
extern UINT32 u4VDecReadTopVLD(UINT32 u4VDecID, UINT32 u4Addr);
#endif
extern void vVDecWriteHEVCMISC(UINT32 u4VDecID, UINT32 u4Addr, UINT32 u4Val);
extern void vVDecWriteMISC(UINT32 u4VDecID, UINT32 u4Addr, UINT32 u4Val);
extern UINT32 u4VDecReadMISC(UINT32 u4VDecID, UINT32 u4Addr);
extern void vVDecWriteVLD(UINT32 u4VDecID, UINT32 u4Addr, UINT32 u4Val);
extern UINT32 u4VDecReadVLD(UINT32 u4VDecID, UINT32 u4Addr);
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8580)
extern void vVDecWriteVLDTOP(UINT32 u4VDecID, UINT32 u4Addr, UINT32 u4Val);
extern UINT32 u4VDecReadVLDTOP(UINT32 u4VDecID, UINT32 u4Addr);
#endif
extern void vVDecWriteMC(UINT32 u4VDecID, UINT32 u4Addr, UINT32 u4Val);
extern UINT32 u4VDecReadMC(UINT32 u4VDecID, UINT32 u4Addr);
#if (CONFIG_CHIP_VER_CURR < CONFIG_CHIP_VER_MT8555)
extern void vVDecResetHW(UINT32 u4VDecID);
#else
extern void vVDecResetHW(UINT32 u4VDecID, UINT32 u4VDecType);
#endif
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8555)
extern void vVDecWriteDV(UINT32 u4VDecID, UINT32 u4Addr, UINT32 u4Val);
extern UINT32 u4VDecReadDV(UINT32 u4VDecID, UINT32 u4Addr);
#endif
extern void vVDecSetVLDVFIFO(UINT32 u4BSID, UINT32 u4VDecID, UINT32 u4VFifoSa, UINT32 u4VFifoEa);
extern UINT32 u4VDecReadVldRPtrEx(UINT32 u4BSID, UINT32 u4VDecID, UINT32 *pu4Bits, UINT32 u4VFIFOSa, const char *szFunction, INT32 i4Line);
extern BOOL fgVDecIsVLDFetchOk(UINT32 u4BSID, UINT32 u4VDecID);
extern BOOL fgVDecWaitVldFetchOk(UINT32 u4BSID, UINT32 u4VDecID);
extern UINT32 u4VDecVLDGetBitS(UINT32 u4BSID, UINT32 u4VDecID, UINT32 dShiftBit);
#define u4VDecReadVldRPtr(u4BSID, u4VDecID, pu4Bits, u4VFIFOSa) u4VDecReadVldRPtrEx(u4BSID, u4VDecID, pu4Bits, u4VFIFOSa, __func__, __LINE__)
#if (CONFIG_DRV_ONLY || CONFIG_DRV_VERIFY_SUPPORT)
extern void vVLDLoadQuanMat(UINT32 u4VDecID, BOOL fgIntra);
#endif
extern UINT32 u4VDec03Number(ULONG u4Addr, UINT32 u4Range);
extern void vMCSetOutputBuf(UINT32 u4VDecID, UINT32 u4OutBufIdx, UINT32 u4FRefBufIdx);
extern UINT32 u4ReadVDSCL(UINT32 u4VDecID, UINT32 u4Addr);
#ifdef VDEC_SIM_DUMP
extern void vVDecSimDump(UINT32 u4VDecID, UINT32 u4OffsetAddr, UINT32 u4Addr, UINT32 u4Val);
extern void vVDecSimWDump(const char *szFunction, UINT32 u4VDecID, const char *szOffset, UINT32 u4Addr, UINT32 u4Val, UINT32 u4BaseReg);
extern void vVDecSimRDump(const char *szFunction, UINT32 u4VDecID, const char *szOffset, UINT32 u4Addr, UINT32 u4Val, UINT32 u4BaseReg);
#define vVDecSimDumpW(u4VDecID, szOffset, u4Addr, u4Val) vVDecSimWDump(__func__, u4VDecID, #szOffset, u4Addr, u4Val, szOffset)
#define vVDecSimDumpR(u4VDecID, szOffset, u4Addr, u4Val) vVDecSimRDump(__func__, u4VDecID, #szOffset, u4Addr, u4Val, szOffset)
#else
#define vVDecSimDumpW(u4VDecID, szOffset, u4Addr, u4Val)
#define vVDecSimDumpR(u4VDecID, szOffset, u4Addr, u4Val)
#endif
extern void vVDecWriteCRC(UINT32 u4VDecID, UINT32 u4Addr, UINT32 u4Val);
extern UINT32 u4VDecReadCRC(UINT32 u4VDecID, UINT32 u4Addr);
extern void vVDecEnableCRC(UINT32 u4VDecID, BOOL fgEnable, BOOL fgCRCFromMC);
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8555)
extern void vVDecPowerDownHW(UINT32 u4VDecID);
#endif
#if ((CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8560) &&(!CONFIG_DRV_FPGA_BOARD))
extern void vVDecSetVldMcClk(UINT32 u4VDecID, UINT32 u4CodecType);
#endif
#if (CONFIG_CHIP_VER_CURR >= CONFIG_CHIP_VER_MT8560)
extern void vVDECSetLetetrBoxDetPrm(UINT32 u4VDecID, VDEC_INFO_LBD_PRM_T *prLBDPrm);
extern void vVDECReadLetetrBoxDetResult(UINT32 u4VDecID, UINT32 *u4YResult, UINT32 *u4CResult);
#endif
// *********************************************************************
// Down Scaler HW Functions
// *********************************************************************
extern void vVDECSetDownScalerPrm(UINT32 u4VDecID, VDEC_INFO_VDSCL_PRM_T *prDownScalerPrm);
// BYTE 0 first [BYTE0, BYTE1, BYTE2, BYTE3]
#define BYTE3(arg) (*((BYTE *)&(arg) + 3))
#define BYTE2(arg) (*((BYTE *)&(arg) + 2))
#define BYTE1(arg) (*((BYTE *)&(arg) + 1))
#define BYTE0(arg) (* (BYTE *)&(arg))
#define INVERSE_ENDIAN(value) \
(((value & 0xFF) << 24) + ((value & 0xFF00) << 8) + ((value & 0xFF0000) >> 8) + ((value & 0xFF000000) >> 24))
#endif
|