Lines Matching full:edid
473 static int adv748x_hdmi_get_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid) in adv748x_hdmi_get_edid() argument
477 memset(edid->reserved, 0, sizeof(edid->reserved)); in adv748x_hdmi_get_edid()
479 if (!hdmi->edid.present) in adv748x_hdmi_get_edid()
482 if (edid->start_block == 0 && edid->blocks == 0) { in adv748x_hdmi_get_edid()
483 edid->blocks = hdmi->edid.blocks; in adv748x_hdmi_get_edid()
487 if (edid->start_block >= hdmi->edid.blocks) in adv748x_hdmi_get_edid()
490 if (edid->start_block + edid->blocks > hdmi->edid.blocks) in adv748x_hdmi_get_edid()
491 edid->blocks = hdmi->edid.blocks - edid->start_block; in adv748x_hdmi_get_edid()
493 memcpy(edid->edid, hdmi->edid.edid + edid->start_block * 128, in adv748x_hdmi_get_edid()
494 edid->blocks * 128); in adv748x_hdmi_get_edid()
507 adv_dbg(state, "%s: write EDID block (%d byte)\n", in adv748x_hdmi_edid_write_block()
523 static int adv748x_hdmi_set_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid) in adv748x_hdmi_set_edid() argument
529 memset(edid->reserved, 0, sizeof(edid->reserved)); in adv748x_hdmi_set_edid()
531 if (edid->start_block != 0) in adv748x_hdmi_set_edid()
534 if (edid->blocks == 0) { in adv748x_hdmi_set_edid()
535 hdmi->edid.blocks = 0; in adv748x_hdmi_set_edid()
536 hdmi->edid.present = 0; in adv748x_hdmi_set_edid()
542 /* Disable the EDID */ in adv748x_hdmi_set_edid()
544 edid->blocks << ADV748X_REPEATER_EDID_SZ_SHIFT); in adv748x_hdmi_set_edid()
551 if (edid->blocks > 4) { in adv748x_hdmi_set_edid()
552 edid->blocks = 4; in adv748x_hdmi_set_edid()
556 memcpy(hdmi->edid.edid, edid->edid, 128 * edid->blocks); in adv748x_hdmi_set_edid()
557 hdmi->edid.blocks = edid->blocks; in adv748x_hdmi_set_edid()
558 hdmi->edid.present = true; in adv748x_hdmi_set_edid()
560 hdmi->aspect_ratio = v4l2_calc_aspect_ratio(edid->edid[0x15], in adv748x_hdmi_set_edid()
561 edid->edid[0x16]); in adv748x_hdmi_set_edid()
563 err = adv748x_hdmi_edid_write_block(hdmi, 128 * edid->blocks, in adv748x_hdmi_set_edid()
564 hdmi->edid.edid); in adv748x_hdmi_set_edid()
566 v4l2_err(sd, "error %d writing edid pad %d\n", err, edid->pad); in adv748x_hdmi_set_edid()
571 edid->blocks << ADV748X_REPEATER_EDID_SZ_SHIFT); in adv748x_hdmi_set_edid()