[media] cx231xx: Clear avmode bits before setting
authorDevin Heitmueller <dheitmueller@hauppauge.com>
Mon, 12 Jul 2010 18:31:56 +0000 (15:31 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Thu, 21 Oct 2010 03:17:22 +0000 (01:17 -0200)
We need to clear out the field before setting individual bits, or else we end
up with a union of whatever was there and what we are trying to set.  For
example, switching to digital mode ends up being 0x30 instead of 0x10 if we
were previously in analog tv mode.

Signed-off-by: Devin Heitmueller <dheitmueller@hauppauge.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/cx231xx/cx231xx-avcore.c

index 362a4311cdee657c1aa661710b2193dc49b41f2c..146e52e318eb488abebab6d8902c9755ea8cb74a 100644 (file)
@@ -2392,6 +2392,7 @@ int cx231xx_set_power_mode(struct cx231xx *dev, enum AV_MODE mode)
                        msleep(PWR_SLEEP_INTERVAL);
                }
 
+               tmp &= (~PWR_AV_MODE);
                tmp |= POLARIS_AVMODE_DIGITAL | I2C_DEMOD_EN;
                value[0] = (u8) tmp;
                value[1] = (u8) (tmp >> 8);