OSDN Git Service

media: ccs: Only do software reset if we have no hardware reset
authorSakari Ailus <sakari.ailus@linux.intel.com>
Thu, 8 Oct 2020 08:59:26 +0000 (10:59 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Tue, 12 Jan 2021 16:34:11 +0000 (17:34 +0100)
The driver always used software reset after the sensor's power sequence
that includes a hardware reset if we have a reset GPIO. Do not use
software reset if we just brought the sensor up from hardware reset state.

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

index da7a6bd..fdf2e83 100644 (file)
@@ -1552,10 +1552,12 @@ static int ccs_power_on(struct device *dev)
         * is found.
         */
 
-       rval = ccs_write(sensor, SOFTWARE_RESET, CCS_SOFTWARE_RESET_ON);
-       if (rval < 0) {
-               dev_err(dev, "software reset failed\n");
-               goto out_cci_addr_fail;
+       if (!sensor->reset && !sensor->xshutdown) {
+               rval = ccs_write(sensor, SOFTWARE_RESET, CCS_SOFTWARE_RESET_ON);
+               if (rval < 0) {
+                       dev_err(dev, "software reset failed\n");
+                       goto out_cci_addr_fail;
+               }
        }
 
        if (sensor->hwcfg.i2c_addr_alt) {