[media] adv7511: disable register reset by HPD
authorMartin Bugge <marbugge@cisco.com>
Thu, 5 Dec 2013 12:02:20 +0000 (09:02 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Tue, 7 Jan 2014 07:28:24 +0000 (05:28 -0200)
Whenever the hotplug pin is pulled low the chip resets a whole bunch
of registers. It turns out that this can be turned off on the adv7511.
Do so, as this 'feature' introduces race conditions in setting up
registers, particular when the hotplug pin bounces a lot.

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>
drivers/media/i2c/adv7511.c

index 7c8d971f1f613206b1821bfa023ea5326ba48028..89ea266673111f3dc60359d32f4ed275c9b42eb8 100644 (file)
@@ -1038,6 +1038,12 @@ static void adv7511_init_setup(struct v4l2_subdev *sd)
 
        /* clear all interrupts */
        adv7511_wr(sd, 0x96, 0xff);
+       /*
+        * Stop HPD from resetting a lot of registers.
+        * It might leave the chip in a partly un-initialized state,
+        * in particular with regards to hotplug bounces.
+        */
+       adv7511_wr_and_or(sd, 0xd6, 0x3f, 0xc0);
        memset(edid, 0, sizeof(struct adv7511_state_edid));
        state->have_monitor = false;
        adv7511_set_isr(sd, false);