提交 827c1f52 编写于 作者: H Hans Verkuil 提交者: Mauro Carvalho Chehab

[media] adv7604: add vic detect

Obtain the correct timings based on the VIC code from the AVI InfoFrame.

It does a sanity check to see if at least the measured width and height
are in line with what the VIC code reports. If not, then use the timings
instead of the VIC code (as per the CEA-861 spec).
Signed-off-by: NHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: NMauro Carvalho Chehab <mchehab@s-opensource.com>
上级 d736e348
......@@ -1566,10 +1566,24 @@ static int adv76xx_query_dv_timings(struct v4l2_subdev *sd,
V4L2_DV_INTERLACED : V4L2_DV_PROGRESSIVE;
if (is_digital_input(sd)) {
bool hdmi_signal = hdmi_read(sd, 0x05) & 0x80;
u8 vic = 0;
u32 w, h;
w = hdmi_read16(sd, 0x07, info->linewidth_mask);
h = hdmi_read16(sd, 0x09, info->field0_height_mask);
if (hdmi_signal && (io_read(sd, 0x60) & 1))
vic = infoframe_read(sd, 0x04);
if (vic && v4l2_find_dv_timings_cea861_vic(timings, vic) &&
bt->width == w && bt->height == h)
goto found;
timings->type = V4L2_DV_BT_656_1120;
bt->width = hdmi_read16(sd, 0x07, info->linewidth_mask);
bt->height = hdmi_read16(sd, 0x09, info->field0_height_mask);
bt->width = w;
bt->height = h;
bt->pixelclock = info->read_hdmi_pixelclock(sd);
bt->hfrontporch = hdmi_read16(sd, 0x20, info->hfrontporch_mask);
bt->hsync = hdmi_read16(sd, 0x22, info->hsync_mask);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册