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);