media: ov5675: fix vflip/hflip control
authorShawn Tu <shawnx.tu@intel.com>
Tue, 2 Feb 2021 04:35:01 +0000 (05:35 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Sat, 6 Feb 2021 08:40:28 +0000 (09:40 +0100)
Set/clear the bits to configure the register to expected value
to assume the v/hflip state.

Signed-off-by: Shawn Tu <shawnx.tu@intel.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/i2c/ov5675.c

index 5e35808037ad6dc542f94f1d7065adac42e12129..ae00d717e599cb4fbb480587ea1fae54f313d881 100644 (file)
@@ -624,7 +624,7 @@ static int ov5675_set_ctrl_hflip(struct ov5675 *ov5675, u32 ctrl_val)
 
        return ov5675_write_reg(ov5675, OV5675_REG_FORMAT1,
                                OV5675_REG_VALUE_08BIT,
-                               ctrl_val ? val & ~BIT(3) : val);
+                               ctrl_val ? val & ~BIT(3) : val | BIT(3));
 }
 
 static int ov5675_set_ctrl_vflip(struct ov5675 *ov5675, u8 ctrl_val)
@@ -639,7 +639,7 @@ static int ov5675_set_ctrl_vflip(struct ov5675 *ov5675, u8 ctrl_val)
 
        ret = ov5675_write_reg(ov5675, OV5675_REG_FORMAT1,
                               OV5675_REG_VALUE_08BIT,
-                              ctrl_val ? val | BIT(4) | BIT(5)  : val);
+                              ctrl_val ? val | BIT(4) | BIT(5)  : val & ~BIT(4) & ~BIT(5));
 
        if (ret)
                return ret;
@@ -652,7 +652,7 @@ static int ov5675_set_ctrl_vflip(struct ov5675 *ov5675, u8 ctrl_val)
 
        return ov5675_write_reg(ov5675, OV5675_REG_FORMAT2,
                                OV5675_REG_VALUE_08BIT,
-                               ctrl_val ? val | BIT(1) : val);
+                               ctrl_val ? val | BIT(1) : val & ~BIT(1));
 }
 
 static int ov5675_set_ctrl(struct v4l2_ctrl *ctrl)