1: int32_t AG903_VidMgrGetOutputHandle(int32_t *ports, int32_t num_ports,
AG903_VidMgrOutputHandle **handles)
2: {
3: int32_t i;
4: _Bool num_check[
AG903_VID_MGR_MAX_OUT_PORTS] = {
false};
5:
6:
if (num_ports >
AG903_VID_MGR_MAX_OUT_PORTS) {
7:
return -
AG903_EINVAL;
8: }
9:
if ((ports == NULL) || (handles == NULL)) {
10:
return -
AG903_EINVAL;
11: }
12:
for (i = 0; i < num_ports; i++) {
13:
if ((ports[i] < 0) || (ports[i] >=
AG903_VID_MGR_MAX_OUT_PORTS)) {
14:
return -
AG903_EINVAL;
15: }
16:
if (VidContext.used_out_ports[ports[i]] !=
false) {
17:
return -
AG903_ENOMEM;
18: }
19:
20:
if (num_check[ports[i]] ==
true) {
21:
return -
AG903_EINVAL;
22: }
23: num_check[ports[i]] =
true;
24: }
25:
26:
for (i = 0; i < num_ports; i++) {
27:
28: handles[i] = (
AG903_VidMgrOutputHandle *)&VidContext.out_ports[ports[i]];
29: handles[i]->id =
AG903_VID_MGR_OUTPUT_HANDLE_ID;
30: handles[i]->port_no = ports[i];
31: handles[i]->is_dirty =
false;
32: handles[i]->tdm = 0;
33: handles[i]->delay =
false;
34: handles[i]->trs_dec_enable =
false;
35: handles[i]->trs_efp = 0;
36: handles[i]->trs_ofp = 0;
37: handles[i]->trs_vfp = 0x4;
38: handles[i]->trs_href = 0;
39: handles[i]->trs_hfp = 0;
40: handles[i]->v_max = 8192;
41: handles[i]->h_max = 8192;
42:
43: VidContext.used_out_ports[ports[i]] =
true;
44: }
45:
return AG903_ENONE;
46: }