Lines Matching full:edid
470 static int adv748x_hdmi_get_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid) in adv748x_hdmi_get_edid() argument
474 memset(edid->reserved, 0, sizeof(edid->reserved)); in adv748x_hdmi_get_edid()
476 if (!hdmi->edid.present) in adv748x_hdmi_get_edid()
479 if (edid->start_block == 0 && edid->blocks == 0) { in adv748x_hdmi_get_edid()
480 edid->blocks = hdmi->edid.blocks; in adv748x_hdmi_get_edid()
484 if (edid->start_block >= hdmi->edid.blocks) in adv748x_hdmi_get_edid()
487 if (edid->start_block + edid->blocks > hdmi->edid.blocks) in adv748x_hdmi_get_edid()
488 edid->blocks = hdmi->edid.blocks - edid->start_block; in adv748x_hdmi_get_edid()
490 memcpy(edid->edid, hdmi->edid.edid + edid->start_block * 128, in adv748x_hdmi_get_edid()
491 edid->blocks * 128); in adv748x_hdmi_get_edid()
504 adv_dbg(state, "%s: write EDID block (%d byte)\n", in adv748x_hdmi_edid_write_block()
520 static int adv748x_hdmi_set_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid) in adv748x_hdmi_set_edid() argument
526 memset(edid->reserved, 0, sizeof(edid->reserved)); in adv748x_hdmi_set_edid()
528 if (edid->start_block != 0) in adv748x_hdmi_set_edid()
531 if (edid->blocks == 0) { in adv748x_hdmi_set_edid()
532 hdmi->edid.blocks = 0; in adv748x_hdmi_set_edid()
533 hdmi->edid.present = 0; in adv748x_hdmi_set_edid()
539 /* Disable the EDID */ in adv748x_hdmi_set_edid()
541 edid->blocks << ADV748X_REPEATER_EDID_SZ_SHIFT); in adv748x_hdmi_set_edid()
548 if (edid->blocks > 4) { in adv748x_hdmi_set_edid()
549 edid->blocks = 4; in adv748x_hdmi_set_edid()
553 memcpy(hdmi->edid.edid, edid->edid, 128 * edid->blocks); in adv748x_hdmi_set_edid()
554 hdmi->edid.blocks = edid->blocks; in adv748x_hdmi_set_edid()
555 hdmi->edid.present = true; in adv748x_hdmi_set_edid()
557 hdmi->aspect_ratio = v4l2_calc_aspect_ratio(edid->edid[0x15], in adv748x_hdmi_set_edid()
558 edid->edid[0x16]); in adv748x_hdmi_set_edid()
560 err = adv748x_hdmi_edid_write_block(hdmi, 128 * edid->blocks, in adv748x_hdmi_set_edid()
561 hdmi->edid.edid); in adv748x_hdmi_set_edid()
563 v4l2_err(sd, "error %d writing edid pad %d\n", err, edid->pad); in adv748x_hdmi_set_edid()
568 edid->blocks << ADV748X_REPEATER_EDID_SZ_SHIFT); in adv748x_hdmi_set_edid()