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