Lines Matching refs:edid
462 static int adv748x_hdmi_get_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid)
466 memset(edid->reserved, 0, sizeof(edid->reserved));
468 if (!hdmi->edid.present)
471 if (edid->start_block == 0 && edid->blocks == 0) {
472 edid->blocks = hdmi->edid.blocks;
476 if (edid->start_block >= hdmi->edid.blocks)
479 if (edid->start_block + edid->blocks > hdmi->edid.blocks)
480 edid->blocks = hdmi->edid.blocks - edid->start_block;
482 memcpy(edid->edid, hdmi->edid.edid + edid->start_block * 128,
483 edid->blocks * 128);
512 static int adv748x_hdmi_set_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid)
518 memset(edid->reserved, 0, sizeof(edid->reserved));
520 if (edid->start_block != 0)
523 if (edid->blocks == 0) {
524 hdmi->edid.blocks = 0;
525 hdmi->edid.present = 0;
533 edid->blocks << ADV748X_REPEATER_EDID_SZ_SHIFT);
540 if (edid->blocks > 4) {
541 edid->blocks = 4;
545 memcpy(hdmi->edid.edid, edid->edid, 128 * edid->blocks);
546 hdmi->edid.blocks = edid->blocks;
547 hdmi->edid.present = true;
549 hdmi->aspect_ratio = v4l2_calc_aspect_ratio(edid->edid[0x15],
550 edid->edid[0x16]);
552 err = adv748x_hdmi_edid_write_block(hdmi, 128 * edid->blocks,
553 hdmi->edid.edid);
555 v4l2_err(sd, "error %d writing edid pad %d\n", err, edid->pad);
560 edid->blocks << ADV748X_REPEATER_EDID_SZ_SHIFT);