Incorrect registers used for pixelclock read-out.
Same registers as for adv7604 which actually gave an almost
correct read-out, even they are not documented for adv7842.
Corrected deep-color pixel-clock correction.

Cc: Mats Randgaard <matra...@cisco.com>
Cc: Hans Verkuil <hans.verk...@cisco.com>
Signed-off-by: Martin Bugge <marbu...@cisco.com>
---
 drivers/media/i2c/adv7842.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/media/i2c/adv7842.c b/drivers/media/i2c/adv7842.c
index f7a4d79..3aa1a7c 100644
--- a/drivers/media/i2c/adv7842.c
+++ b/drivers/media/i2c/adv7842.c
@@ -1449,12 +1449,11 @@ static int adv7842_query_dv_timings(struct v4l2_subdev 
*sd,
 
                bt->width = (hdmi_read(sd, 0x07) & 0x0f) * 256 + hdmi_read(sd, 
0x08);
                bt->height = (hdmi_read(sd, 0x09) & 0x0f) * 256 + hdmi_read(sd, 
0x0a);
-               freq = (hdmi_read(sd, 0x06) * 1000000) +
-                      ((hdmi_read(sd, 0x3b) & 0x30) >> 4) * 250000;
-
+               freq = ((hdmi_read(sd, 0x51) << 1) + (hdmi_read(sd, 0x52) >> 
7)) * 1000000;
+               freq += ((hdmi_read(sd, 0x52) & 0x7f) * 7813);
                if (is_hdmi(sd)) {
                        /* adjust for deep color mode */
-                       freq = freq * 8 / (((hdmi_read(sd, 0x0b) & 0xc0) >> 5) 
+ 8);
+                       freq = freq * 8 / (((hdmi_read(sd, 0x0b) & 0xc0) >> 6) 
* 2 + 8);
                }
                bt->pixelclock = freq;
                bt->hfrontporch = (hdmi_read(sd, 0x20) & 0x03) * 256 +
-- 
1.8.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to