Lines Matching refs:edid

179 		u8 edid[256];  member
182 } edid; member
532 adv76xx_set_hpd(state, state->edid.present); in adv76xx_delayed_work_enable_hotplug()
2248 static int adv76xx_get_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid) in adv76xx_get_edid() argument
2253 memset(edid->reserved, 0, sizeof(edid->reserved)); in adv76xx_get_edid()
2255 switch (edid->pad) { in adv76xx_get_edid()
2260 if (state->edid.present & (1 << edid->pad)) in adv76xx_get_edid()
2261 data = state->edid.edid; in adv76xx_get_edid()
2267 if (edid->start_block == 0 && edid->blocks == 0) { in adv76xx_get_edid()
2268 edid->blocks = data ? state->edid.blocks : 0; in adv76xx_get_edid()
2275 if (edid->start_block >= state->edid.blocks) in adv76xx_get_edid()
2278 if (edid->start_block + edid->blocks > state->edid.blocks) in adv76xx_get_edid()
2279 edid->blocks = state->edid.blocks - edid->start_block; in adv76xx_get_edid()
2281 memcpy(edid->edid, data + edid->start_block * 128, edid->blocks * 128); in adv76xx_get_edid()
2286 static int adv76xx_set_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid) in adv76xx_set_edid() argument
2295 memset(edid->reserved, 0, sizeof(edid->reserved)); in adv76xx_set_edid()
2297 if (edid->pad > ADV7604_PAD_HDMI_PORT_D) in adv76xx_set_edid()
2299 if (edid->start_block != 0) in adv76xx_set_edid()
2301 if (edid->blocks == 0) { in adv76xx_set_edid()
2303 state->edid.present &= ~(1 << edid->pad); in adv76xx_set_edid()
2304 adv76xx_set_hpd(state, state->edid.present); in adv76xx_set_edid()
2305 rep_write_clr_set(sd, info->edid_enable_reg, 0x0f, state->edid.present); in adv76xx_set_edid()
2311 if (!state->edid.present) { in adv76xx_set_edid()
2312 state->edid.blocks = 0; in adv76xx_set_edid()
2317 __func__, edid->pad, state->edid.present); in adv76xx_set_edid()
2320 if (edid->blocks > 2) { in adv76xx_set_edid()
2321 edid->blocks = 2; in adv76xx_set_edid()
2324 pa = v4l2_get_edid_phys_addr(edid->edid, edid->blocks * 128, &spa_loc); in adv76xx_set_edid()
2330 __func__, edid->pad, state->edid.present); in adv76xx_set_edid()
2344 switch (edid->pad) { in adv76xx_set_edid()
2346 state->spa_port_a[0] = edid->edid[spa_loc]; in adv76xx_set_edid()
2347 state->spa_port_a[1] = edid->edid[spa_loc + 1]; in adv76xx_set_edid()
2350 rep_write(sd, 0x70, edid->edid[spa_loc]); in adv76xx_set_edid()
2351 rep_write(sd, 0x71, edid->edid[spa_loc + 1]); in adv76xx_set_edid()
2354 rep_write(sd, 0x72, edid->edid[spa_loc]); in adv76xx_set_edid()
2355 rep_write(sd, 0x73, edid->edid[spa_loc + 1]); in adv76xx_set_edid()
2358 rep_write(sd, 0x74, edid->edid[spa_loc]); in adv76xx_set_edid()
2359 rep_write(sd, 0x75, edid->edid[spa_loc + 1]); in adv76xx_set_edid()
2374 edid->edid[spa_loc] = state->spa_port_a[0]; in adv76xx_set_edid()
2375 edid->edid[spa_loc + 1] = state->spa_port_a[1]; in adv76xx_set_edid()
2377 memcpy(state->edid.edid, edid->edid, 128 * edid->blocks); in adv76xx_set_edid()
2378 state->edid.blocks = edid->blocks; in adv76xx_set_edid()
2379 state->aspect_ratio = v4l2_calc_aspect_ratio(edid->edid[0x15], in adv76xx_set_edid()
2380 edid->edid[0x16]); in adv76xx_set_edid()
2381 state->edid.present |= 1 << edid->pad; in adv76xx_set_edid()
2383 err = edid_write_block(sd, 128 * edid->blocks, state->edid.edid); in adv76xx_set_edid()
2385 v4l2_err(sd, "error %d writing edid pad %d\n", err, edid->pad); in adv76xx_set_edid()
2391 rep_write_clr_set(sd, info->edid_enable_reg, 0x0f, state->edid.present); in adv76xx_set_edid()
2394 if (rep_read(sd, info->edid_status_reg) & state->edid.present) in adv76xx_set_edid()
2399 v4l2_err(sd, "error enabling edid (0x%x)\n", state->edid.present); in adv76xx_set_edid()