1:
static void AG903_DSPMgrInitDSP(uint8_t ch) {
2:
if (ch >
AG903_DSP_CH_NUM)
return;
3:
4:
DSPPrmParamMOD mod = {
5: .de = AG903_DSP_RGBDE_SIGNAL_DATA,
6: .ip = AG903_DSP_VMODE_NONINTERLACE,
7: .upd = AG903_DSP_ATTR_END_OF_VSYNC,
8: .bmr = AG903_DSP_BMU_WINDATA,
9: .lut =
false,
10: .dith =
false,
11: };
12:
DSPPrmParamSYNC sync = {
13: .sel = AG903_DSP_EXSYNC_NONE,
14: .dly =
false,
15: .ip = AG903_DSP_VMODE_NONINTERLACE,
16: .vp = AG903_DSP_POLARITY_NEGA,
17: .fp = AG903_DSP_POLARITY_NEGA,
18: .msk =
true,
19: };
20:
DSPPrmParamVTPRM0 vtprm0 = {
21: .vpw = 2,
22: .ofp =
false,
23: .obp =
false,
24: .efp =
false,
25: .ebp =
false,
26: };
27:
DSPPrmParamCDCTRL cdctrl = {
28: .be =
false,
29: .ge =
false,
30: .re =
false,
31: .ae =
false,
32: };
33:
DSPPrmParamCOLDET coldet = {
34: .b = 0x00000000,
35: .g = 0x00000000,
36: .r = 0x00000000,
37: .a = 0x00000000,
38: };
39:
DSPPrmParamERRCLR errclr = {
40: .line =
true,
41: .ue =
true,
42: .le =
true,
43: .pe =
true,
44: };
45:
DSPPrmParamINT intprm = {
46: .line = 0,
47: .fcnt = 0,
48: .hline = AG903_DSP_INT_START_OF_LINE,
49: .vblk = AG903_DSP_INT_START_OF_VBLANK,
50: };
51:
DSPPrmParamINTMASK intmask = {
52: .vblk =
true,
53: .hline =
true,
54: .doff =
true,
55: .err =
true,
56: };
57:
DSPPrmParamLUTR lutr = {
58: .r0 = 0x00,
59: .r1 = 0x00,
60: .r2 = 0x00,
61: .r3 = 0x00,
62: };
63:
DSPPrmParamLUTG lutg = {
64: .g0 = 0x00,
65: .g1 = 0x00,
66: .g2 = 0x00,
67: .g3 = 0x00,
68: };
69:
DSPPrmParamLUTB lutb = {
70: .b0 = 0x00,
71: .b1 = 0x00,
72: .b2 = 0x00,
73: .b3 = 0x00,
74: };
75:
76:
AG903_DSPPrmSetCTRL(ch, AG903_DSP_CTRL_OFF);
77:
AG903_DSPPrmSetMOD(ch, &mod);
78:
AG903_DSPPrmSetSYNC(ch, &sync);
79:
AG903_DSPPrmSetBGCOL(ch, 0x00000000);
80:
AG903_DSPPrmSetWINNUM(ch, 1);
81:
AG903_DSPPrmSetWATNUM(ch, 1);
82:
AG903_DSPPrmSetWATBASE(ch, 0x00000000);
83:
AG903_DSPPrmSetLSTCTRL(ch,
false,
false);
84:
AG903_DSPPrmSetHRZPRM0(ch, 0x060);
85:
AG903_DSPPrmSetHRZPRM1(ch, 0x010, 0x030);
86:
AG903_DSPPrmSetVTPRM0(ch, &vtprm0);
87:
AG903_DSPPrmSetVTPRM1(ch, 0x00A, 0x021);
88:
AG903_DSPPrmSetFRMSIZE(ch, 0x1E0, 0x280);
89:
AG903_DSPPrmSetCDCTRL(ch, &cdctrl);
90:
AG903_DSPPrmSetCOLDET(ch, &coldet);
91:
AG903_DSPPrmSetDITHAREA0A(ch, 0x7FF, 0x7FF);
92:
AG903_DSPPrmSetDITHAREA0B(ch, 0x000, 0x000);
93:
AG903_DSPPrmSetDITHAREA1A(ch, 0x7FF, 0x7FF);
94:
AG903_DSPPrmSetDITHAREA1B(ch, 0x000, 0x000);
95:
AG903_DSPPrmSetDITHAREA2A(ch, 0x7FF, 0x7FF);
96:
AG903_DSPPrmSetDITHAREA2B(ch, 0x000, 0x000);
97:
AG903_DSPPrmSetDITHAREA3A(ch, 0x7FF, 0x7FF);
98:
AG903_DSPPrmSetDITHAREA3B(ch, 0x000, 0x000);
99:
AG903_DSPPrmSetERRCLR(ch, &errclr);
100:
AG903_DSPPrmSetINT(ch, &intprm);
101:
AG903_DSPPrmSetTRIGGER(ch, AG903_DSP_EVENT_VT,
102: AG903_DSP_TRG_HRZ_START_OF_LINE,
103: AG903_DSP_TRG_VT_START_OF_VBLANK);
104:
AG903_DSPPrmSetINTCLR(ch,
true,
105:
true,
106:
true);
107:
AG903_DSPPrmSetINTMASK(ch, &intmask);
108:
AG903_DSPPrmSetDMAREQ(ch, AG903_DSP_DMA_NONE);
109: int32_t tnum;
110:
for(tnum=0; tnum<
AG903_DSP_LUT_NUM; tnum++)
111: {
112:
AG903_DSPPrmSetLUTR(ch, tnum, &lutr);
113:
AG903_DSPPrmSetLUTG(ch, tnum, &lutg);
114:
AG903_DSPPrmSetLUTB(ch, tnum, &lutb);
115: }
116:
117:
int listno;
118:
for (listno=0; listno<
AG903_DSP_ATTR_MAX; listno++)
119: {
120: gDSP.ch[ch].lock[listno] = NULL;
121: }
122: }