aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Bugge <marbugge@cisco.com>2014-03-19 05:43:45 -0400
committerMauro Carvalho Chehab <m.chehab@samsung.com>2014-04-16 17:22:02 -0400
commit2ff0f16ded0843e32acdbc683f9a04f07765987c (patch)
treed1223c9de28958e89d185f84e756df5291b1e1b3
parent5046f26b7b542ca7b70222acffeb7f1e6730eb02 (diff)
[media] adv7842: Disable access to EDID DDC lines before chip power up
In core_init make sure access to EDID DDC lines are disabled before chip is powered up. Also DISABLE_AUTO_EDID before power up. The correct setting is applied later when setting the EDID. Some sources (MAC) kept on reading EDID even when Hotplug was low and in the short period in core_init before the DDC lines was enabled read a corrupt EDID. Signed-off-by: Martin Bugge <marbugge@cisco.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
-rw-r--r--drivers/media/i2c/adv7842.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/media/i2c/adv7842.c b/drivers/media/i2c/adv7842.c
index 5d79c57f65d4..06c25c3fa3a9 100644
--- a/drivers/media/i2c/adv7842.c
+++ b/drivers/media/i2c/adv7842.c
@@ -2611,6 +2611,12 @@ static int adv7842_core_init(struct v4l2_subdev *sd)
2611 2611
2612 disable_input(sd); 2612 disable_input(sd);
2613 2613
2614 /*
2615 * Disable I2C access to internal EDID ram from HDMI DDC ports
2616 * Disable auto edid enable when leaving powerdown mode
2617 */
2618 rep_write_and_or(sd, 0x77, 0xd3, 0x20);
2619
2614 /* power */ 2620 /* power */
2615 io_write(sd, 0x0c, 0x42); /* Power up part and power down VDP */ 2621 io_write(sd, 0x0c, 0x42); /* Power up part and power down VDP */
2616 io_write(sd, 0x15, 0x80); /* Power up pads */ 2622 io_write(sd, 0x15, 0x80); /* Power up pads */
@@ -2691,9 +2697,6 @@ static int adv7842_core_init(struct v4l2_subdev *sd)
2691 2697
2692 enable_input(sd); 2698 enable_input(sd);
2693 2699
2694 /* disable I2C access to internal EDID ram from HDMI DDC ports */
2695 rep_write_and_or(sd, 0x77, 0xf3, 0x00);
2696
2697 if (pdata->hpa_auto) { 2700 if (pdata->hpa_auto) {
2698 /* HPA auto, HPA 0.5s after Edid set and Cable detect */ 2701 /* HPA auto, HPA 0.5s after Edid set and Cable detect */
2699 hdmi_write(sd, 0x69, 0x5c); 2702 hdmi_write(sd, 0x69, 0x5c);