1: int32_t AG903_DSPMgrSetIntParam(
AG903_DSPMgrHandle *handle,
AG903_DSPMgrIntParam *param)
2: {
3: int32_t rc =
AG903_ENONE;
4: uint8_t ch;
5:
6:
if ((handle == NULL) || (param == NULL))
7:
return -
AG903_EINVAL;
8:
9: rc = DSPMgrCheckHandle(handle, &ch);
10:
11:
if (rc ==
AG903_ENONE) {
12: rc =
AG903_DSPMgrCheckStopped(handle);
13: }
14:
15:
if (rc ==
AG903_ENONE) {
16:
DSPPrmParamMOD mod;
17:
AG903_DSPPrmGetMOD(ch, &mod);
18: mod.bmr = param->bmureq_timing;
19:
AG903_DSPPrmSetMOD(ch, &mod);
20:
21:
DSPPrmParamINT intprm = {
22: .line = param->int_line_no,
23: .fcnt = param->int_framecount,
24: .hline = param->int_hrz_line,
25: .vblk = param->int_vt_blank,
26: };
27:
AG903_DSPPrmSetINT(ch, &intprm);
28:
29:
DSPPrmParamINTMASK intmask = {
30: .vblk = param->mask_vt_blank,
31: .hline = param->mask_hrz_line,
32: .doff = param->mask_dspoff,
33: .err = param->mask_error,
34: };
35:
AG903_DSPPrmSetINTMASK(ch, &intmask);
36:
37:
AG903_DSPPrmSetTRIGGER(ch,
38: param->trigger_out,
39: param->trigger_hrz,
40: param->trigger_vt);
41: }
42:
43:
return rc;
44: }