1:
9:
10:
14:
15:
16:
#include "AG903_common.h"
17:
18:
#include "dsp/vodprm.h"
19:
#include "dsp/dspmgr.h"
20:
21:
22:
23:
26:
#define AG903_VOD_CH_NUM (
AG903_DSP_CH_NUM)
27:
28:
29:
36:
void AG903_VODPrmGetPORTSEL(uint8_t ch, uint32_t *portsel)
37: {
38:
ASSERT(ch <
AG903_VOD_CH_NUM);
39:
ASSERT(portsel != (uint32_t *)NULL);
40:
41: *portsel = (
AG903_VODn(ch)->PORTSEL &
AG903_VODn_PORTSEL_SEL_MSK) >>
AG903_VODn_PORTSEL_SEL_POS;
42: }
43:
44:
51:
void AG903_VODPrmSetPORTSEL(uint8_t ch, uint32_t portsel)
52: {
53:
ASSERT(ch <
AG903_VOD_CH_NUM);
54:
55:
AG903_VODn(ch)->PORTSEL = (portsel <<
AG903_VODn_PORTSEL_SEL_POS) &
AG903_VODn_PORTSEL_SEL_MSK;
56: }
57:
58:
65:
void AG903_VODPrmGetMOD(uint8_t ch,
VODPrmParamMOD *mod)
66: {
67:
ASSERT(ch <
AG903_VOD_CH_NUM);
68:
ASSERT(mod != (
VODPrmParamMOD *)NULL);
69:
70: uint32_t reg =
AG903_VODn(ch)->MOD;
71: mod->dp = (reg &
AG903_VODn_MOD_DP_MSK ) >>
AG903_VODn_MOD_DP_POS;
72: mod->vp = (reg &
AG903_VODn_MOD_VP_MSK ) >>
AG903_VODn_MOD_VP_POS;
73: mod->hp = (reg &
AG903_VODn_MOD_HP_MSK ) >>
AG903_VODn_MOD_HP_POS;
74: mod->fp = (reg &
AG903_VODn_MOD_FP_MSK ) >>
AG903_VODn_MOD_FP_POS;
75: mod->cdp = (reg &
AG903_VODn_MOD_CDP_MSK ) >>
AG903_VODn_MOD_CDP_POS;
76: mod->dex = (reg &
AG903_VODn_MOD_DEX_MSK ) >>
AG903_VODn_MOD_DEX_POS;
77: mod->vex = (reg &
AG903_VODn_MOD_VEX_MSK ) >>
AG903_VODn_MOD_VEX_POS;
78: mod->hex = (reg &
AG903_VODn_MOD_HEX_MSK ) >>
AG903_VODn_MOD_HEX_POS;
79: mod->fex = (reg &
AG903_VODn_MOD_FEX_MSK ) >>
AG903_VODn_MOD_FEX_POS;
80: mod->cdex = (reg &
AG903_VODn_MOD_CDEX_MSK) >>
AG903_VODn_MOD_CDEX_POS;
81: mod->pex = (reg &
AG903_VODn_MOD_PEX_MSK ) >>
AG903_VODn_MOD_PEX_POS;
82: mod->cp = (reg &
AG903_VODn_MOD_CP_MSK ) >>
AG903_VODn_MOD_CP_POS;
83: mod->code = (reg &
AG903_VODn_MOD_CODE_MSK) >>
AG903_VODn_MOD_CODE_POS;
84: mod->yuv = (reg &
AG903_VODn_MOD_YUV_MSK ) >>
AG903_VODn_MOD_YUV_POS;
85: mod->fmt = (reg &
AG903_VODn_MOD_FMT_MSK ) >>
AG903_VODn_MOD_FMT_POS;
86: mod->ct0 = (reg &
AG903_VODn_MOD_CT0_MSK ) >>
AG903_VODn_MOD_CT0_POS;
87: mod->ct1 = (reg &
AG903_VODn_MOD_CT1_MSK ) >>
AG903_VODn_MOD_CT1_POS;
88: }
89:
90:
97:
void AG903_VODPrmSetMOD(uint8_t ch,
VODPrmParamMOD *mod)
98: {
99:
ASSERT(ch <
AG903_VOD_CH_NUM);
100:
ASSERT(mod != (
VODPrmParamMOD *)NULL);
101:
102: uint32_t reg = 0;
103: reg |= (mod->dp <<
AG903_VODn_MOD_DP_POS ) &
AG903_VODn_MOD_DP_MSK;
104: reg |= (mod->vp <<
AG903_VODn_MOD_VP_POS ) &
AG903_VODn_MOD_VP_MSK;
105: reg |= (mod->hp <<
AG903_VODn_MOD_HP_POS ) &
AG903_VODn_MOD_HP_MSK;
106: reg |= (mod->fp <<
AG903_VODn_MOD_FP_POS ) &
AG903_VODn_MOD_FP_MSK;
107: reg |= (mod->cdp <<
AG903_VODn_MOD_CDP_POS ) &
AG903_VODn_MOD_CDP_MSK;
108: reg |= (mod->dex <<
AG903_VODn_MOD_DEX_POS ) &
AG903_VODn_MOD_DEX_MSK;
109: reg |= (mod->vex <<
AG903_VODn_MOD_VEX_POS ) &
AG903_VODn_MOD_VEX_MSK;
110: reg |= (mod->hex <<
AG903_VODn_MOD_HEX_POS ) &
AG903_VODn_MOD_HEX_MSK;
111: reg |= (mod->fex <<
AG903_VODn_MOD_FEX_POS ) &
AG903_VODn_MOD_FEX_MSK;
112: reg |= (mod->cdex <<
AG903_VODn_MOD_CDEX_POS) &
AG903_VODn_MOD_CDEX_MSK;
113: reg |= (mod->pex <<
AG903_VODn_MOD_PEX_POS ) &
AG903_VODn_MOD_PEX_MSK;
114: reg |= (mod->cp <<
AG903_VODn_MOD_CP_POS ) &
AG903_VODn_MOD_CP_MSK;
115: reg |= (mod->code <<
AG903_VODn_MOD_CODE_POS) &
AG903_VODn_MOD_CODE_MSK;
116: reg |= (mod->yuv <<
AG903_VODn_MOD_YUV_POS ) &
AG903_VODn_MOD_YUV_MSK;
117: reg |= (mod->fmt <<
AG903_VODn_MOD_FMT_POS ) &
AG903_VODn_MOD_FMT_MSK;
118: reg |= (mod->ct0 <<
AG903_VODn_MOD_CT0_POS ) &
AG903_VODn_MOD_CT0_MSK;
119: reg |= (mod->ct1 <<
AG903_VODn_MOD_CT1_POS ) &
AG903_VODn_MOD_CT1_MSK;
120:
AG903_VODn(ch)->MOD = reg;
121: }
122:
123:
131:
void AG903_VODPrmGetBPWRMOD(uint8_t ch, uint32_t *en, uint32_t *unit)
132: {
133:
ASSERT(ch <
AG903_VOD_CH_NUM);
134:
ASSERT(en != (uint32_t *)NULL);
135:
ASSERT(unit != (uint32_t *)NULL);
136:
137: uint32_t reg =
AG903_VODn(ch)->BPWRMOD;
138: *en = (reg &
AG903_VODn_BPWRMOD_EN_MSK ) >>
AG903_VODn_BPWRMOD_EN_POS;
139: *unit = (reg &
AG903_VODn_BPWRMOD_UNIT_MSK) >>
AG903_VODn_BPWRMOD_UNIT_POS;
140: }
141:
142:
150:
void AG903_VODPrmSetBPWRMOD(uint8_t ch, uint32_t en, uint32_t unit)
151: {
152:
ASSERT(ch <
AG903_VOD_CH_NUM);
153:
154: uint32_t reg = 0;
155: reg |= (en <<
AG903_VODn_BPWRMOD_EN_POS ) &
AG903_VODn_BPWRMOD_EN_MSK;
156: reg |= (unit <<
AG903_VODn_BPWRMOD_UNIT_POS) &
AG903_VODn_BPWRMOD_UNIT_MSK;
157:
AG903_VODn(ch)->BPWRMOD = reg;
158: }
159:
160:
167:
void AG903_VODPrmGetPPWRONCNT(uint8_t ch, uint32_t *cnt)
168: {
169:
ASSERT(ch <
AG903_VOD_CH_NUM);
170:
ASSERT(cnt != (uint32_t *)NULL);
171:
172: *cnt = (
AG903_VODn(ch)->PPWRONCNT &
AG903_VODn_PPWRONCNT_CNT_MSK) >>
AG903_VODn_PPWRONCNT_CNT_POS;
173: }
174:
175:
182:
void AG903_VODPrmSetPPWRONCNT(uint8_t ch, uint32_t cnt)
183: {
184:
ASSERT(ch <
AG903_VOD_CH_NUM);
185:
186:
AG903_VODn(ch)->PPWRONCNT = (cnt <<
AG903_VODn_PPWRONCNT_CNT_POS) &
AG903_VODn_PPWRONCNT_CNT_MSK;
187: }
188:
189:
196:
void AG903_VODPrmGetBPWRONCNT(uint8_t ch, uint32_t *cnt)
197: {
198:
ASSERT(ch <
AG903_VOD_CH_NUM);
199:
ASSERT(cnt != (uint32_t *)NULL);
200:
201: *cnt = (
AG903_VODn(ch)->BPWRONCNT &
AG903_VODn_BPWRONCNT_CNT_MSK) >>
AG903_VODn_BPWRONCNT_CNT_POS;
202: }
203:
204:
211:
void AG903_VODPrmSetBPWRONCNT(uint8_t ch, uint32_t cnt)
212: {
213:
ASSERT(ch <
AG903_VOD_CH_NUM);
214:
215:
AG903_VODn(ch)->BPWRONCNT = (cnt <<
AG903_VODn_BPWRONCNT_CNT_POS) &
AG903_VODn_BPWRONCNT_CNT_MSK;
216: }
217:
218:
225:
void AG903_VODPrmGetBLGTONCNT(uint8_t ch, uint32_t *cnt)
226: {
227:
ASSERT(ch <
AG903_VOD_CH_NUM);
228:
ASSERT(cnt != (uint32_t *)NULL);
229:
230: *cnt = (
AG903_VODn(ch)->BLGTONCNT &
AG903_VODn_BLGTONCNT_CNT_MSK) >>
AG903_VODn_BLGTONCNT_CNT_POS;
231: }
232:
233:
240:
void AG903_VODPrmSetBLGTONCNT(uint8_t ch, uint32_t cnt)
241: {
242:
ASSERT(ch <
AG903_VOD_CH_NUM);
243:
244:
AG903_VODn(ch)->BLGTONCNT = (cnt <<
AG903_VODn_BLGTONCNT_CNT_POS) &
AG903_VODn_BLGTONCNT_CNT_MSK;
245: }
246:
247:
254:
void AG903_VODPrmGetPPWROFFCNT(uint8_t ch, uint32_t *cnt)
255: {
256:
ASSERT(ch <
AG903_VOD_CH_NUM);
257:
ASSERT(cnt != (uint32_t *)NULL);
258:
259: *cnt = (
AG903_VODn(ch)->PPWROFFCNT &
AG903_VODn_PPWROFFCNT_CNT_MSK) >>
AG903_VODn_PPWROFFCNT_CNT_POS;
260: }
261:
262:
269:
void AG903_VODPrmSetPPWROFFCNT(uint8_t ch, uint32_t cnt)
270: {
271:
ASSERT(ch <
AG903_VOD_CH_NUM);
272:
273:
AG903_VODn(ch)->PPWROFFCNT = (cnt <<
AG903_VODn_PPWROFFCNT_CNT_POS) &
AG903_VODn_PPWROFFCNT_CNT_MSK;
274: }
275:
276:
283:
void AG903_VODPrmGetBPWROFFCNT(uint8_t ch, uint32_t *cnt)
284: {
285:
ASSERT(ch <
AG903_VOD_CH_NUM);
286:
ASSERT(cnt != (uint32_t *)NULL);
287:
288: *cnt = (
AG903_VODn(ch)->BPWROFFCNT &
AG903_VODn_BPWROFFCNT_CNT_MSK) >>
AG903_VODn_BPWROFFCNT_CNT_POS;
289: }
290:
291:
298:
void AG903_VODPrmSetBPWROFFCNT(uint8_t ch, uint32_t cnt)
299: {
300:
ASSERT(ch <
AG903_VOD_CH_NUM);
301:
302:
AG903_VODn(ch)->BPWROFFCNT = (cnt <<
AG903_VODn_BPWROFFCNT_CNT_POS) &
AG903_VODn_BPWROFFCNT_CNT_MSK;
303: }
304:
305:
312:
void AG903_VODPrmGetBLGTOFFCNT(uint8_t ch, uint32_t *cnt)
313: {
314:
ASSERT(ch <
AG903_VOD_CH_NUM);
315:
ASSERT(cnt != (uint32_t *)NULL);
316:
317: *cnt = (
AG903_VODn(ch)->BLGTOFFCNT &
AG903_VODn_BLGTOFFCNT_CNT_MSK) >>
AG903_VODn_BLGTOFFCNT_CNT_POS;
318: }
319:
320:
327:
void AG903_VODPrmSetBLGTOFFCNT(uint8_t ch, uint32_t cnt)
328: {
329:
ASSERT(ch <
AG903_VOD_CH_NUM);
330:
331:
AG903_VODn(ch)->BLGTOFFCNT = (cnt <<
AG903_VODn_BLGTOFFCNT_CNT_POS) &
AG903_VODn_BLGTOFFCNT_CNT_MSK;
332: }
333:
334:
341:
void AG903_VODPrmGetPWMPERIOD(uint8_t ch, uint32_t *period)
342: {
343:
ASSERT(ch <
AG903_VOD_CH_NUM);
344:
ASSERT(period != (uint32_t *)NULL);
345:
346: *period =
347: (
AG903_VODn(ch)->PWMPERIOD &
AG903_VODn_PWMPERIOD_PERIOD_MSK) >>
AG903_VODn_PWMPERIOD_PERIOD_POS;
348: }
349:
350:
357:
void AG903_VODPrmSetPWMPERIOD(uint8_t ch, uint32_t period)
358: {
359:
ASSERT(ch <
AG903_VOD_CH_NUM);
360:
361:
AG903_VODn(ch)->PWMPERIOD =
362: (period <<
AG903_VODn_PWMPERIOD_PERIOD_POS) &
AG903_VODn_PWMPERIOD_PERIOD_MSK;
363: }
364:
365:
372:
void AG903_VODPrmGetPWMCNT(uint8_t ch, uint32_t *cnt)
373: {
374:
ASSERT(ch <
AG903_VOD_CH_NUM);
375:
ASSERT(cnt != (uint32_t *)NULL);
376:
377: *cnt = (
AG903_VODn(ch)->PWMCNT &
AG903_VODn_PWMCNT_CNT_MSK) >>
AG903_VODn_PWMCNT_CNT_POS;
378: }
379:
380:
387:
void AG903_VODPrmSetPWMCNT(uint8_t ch, uint32_t cnt)
388: {
389:
ASSERT(ch <
AG903_VOD_CH_NUM);
390:
391:
AG903_VODn(ch)->PWMCNT = (cnt <<
AG903_VODn_PWMCNT_CNT_POS) &
AG903_VODn_PWMCNT_CNT_MSK;
392: }
393:
394:
401:
void AG903_VODPrmGetSTAT(uint8_t ch, uint32_t *state)
402: {
403:
ASSERT(ch <
AG903_VOD_CH_NUM);
404:
ASSERT(state != (uint32_t *)NULL);
405:
406: *state = (
AG903_VODn(ch)->STAT &
AG903_VODn_STAT_STATE_MSK) >>
AG903_VODn_STAT_STATE_POS;
407: }
408:
409:
417:
void AG903_VODPrmGetMACRO0(uint32_t *fr, uint32_t *pm, uint32_t *pdx)
418: {
419:
ASSERT(fr != (uint32_t *)NULL);
420:
ASSERT(pm != (uint32_t *)NULL);
421:
ASSERT(pdx != (uint32_t *)NULL);
422:
423: uint32_t reg =
AG903_VOD->MACRO0;
424: *fr = (reg &
AG903_VOD_MACRO0_FR_MSK ) >>
AG903_VOD_MACRO0_FR_POS;
425: *pm = (reg &
AG903_VOD_MACRO0_PM_MSK ) >>
AG903_VOD_MACRO0_PM_POS;
426: *pdx = (reg &
AG903_VOD_MACRO0_PDX_MSK) >>
AG903_VOD_MACRO0_PDX_POS;
427: }
428:
429:
437:
void AG903_VODPrmSetMACRO0(uint32_t fr, uint32_t pm, uint32_t pdx)
438: {
439: uint32_t reg = 0;
440: reg |= (fr <<
AG903_VOD_MACRO0_FR_POS ) &
AG903_VOD_MACRO0_FR_MSK;
441: reg |= (pm <<
AG903_VOD_MACRO0_PM_POS ) &
AG903_VOD_MACRO0_PM_MSK;
442: reg |= (pdx <<
AG903_VOD_MACRO0_PDX_POS) &
AG903_VOD_MACRO0_PDX_MSK;
443:
AG903_VOD->MACRO0 = reg;
444: }
445:
446:
454:
void AG903_VODPrmGetMACRO1(uint32_t *fr, uint32_t *pm, uint32_t *pdx)
455: {
456:
ASSERT(fr != (uint32_t *)NULL);
457:
ASSERT(pm != (uint32_t *)NULL);
458:
ASSERT(pdx != (uint32_t *)NULL);
459:
460: uint32_t reg =
AG903_VOD->MACRO1;
461: *fr = (reg &
AG903_VOD_MACRO1_FR_MSK ) >>
AG903_VOD_MACRO1_FR_POS;
462: *pm = (reg &
AG903_VOD_MACRO1_PM_MSK ) >>
AG903_VOD_MACRO1_PM_POS;
463: *pdx = (reg &
AG903_VOD_MACRO1_PDX_MSK) >>
AG903_VOD_MACRO1_PDX_POS;
464: }
465:
466:
474:
void AG903_VODPrmSetMACRO1(uint32_t fr, uint32_t pm, uint32_t pdx)
475: {
476: uint32_t reg = 0;
477: reg |= (fr <<
AG903_VOD_MACRO1_FR_POS ) &
AG903_VOD_MACRO1_FR_MSK;
478: reg |= (pm <<
AG903_VOD_MACRO1_PM_POS ) &
AG903_VOD_MACRO1_PM_MSK;
479: reg |= (pdx <<
AG903_VOD_MACRO1_PDX_POS) &
AG903_VOD_MACRO1_PDX_MSK;
480:
AG903_VOD->MACRO1 = reg;
481: }