V4L/DVB (10670): tw9910: bit mask operation fix on tw9910_mask_set.
authorKuninori Morimoto <morimoto.kuninori@renesas.com>
Mon, 23 Feb 2009 15:12:58 +0000 (12:12 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 30 Mar 2009 15:42:52 +0000 (12:42 -0300)
Signed-off-by: Kuninori Morimoto <morimoto.kuninori@renesas.com>
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/tw9910.c

index 8dc3ec79a06f8596a8191001157e3725a673b7d8..0558b22fd3fb41841a97e080eefc64bde1a5a2e1 100644 (file)
@@ -460,9 +460,11 @@ static int tw9910_mask_set(struct i2c_client *client, u8 command,
                           u8 mask, u8 set)
 {
        s32 val = i2c_smbus_read_byte_data(client, command);
+       if (val < 0)
+               return val;
 
        val &= ~mask;
-       val |=  set;
+       val |= set & mask;
 
        return i2c_smbus_write_byte_data(client, command, val);
 }