media: ccs: Only add analogue gain control if the device supports it
authorSakari Ailus <sakari.ailus@linux.intel.com>
Wed, 23 Sep 2020 22:43:55 +0000 (00:43 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Tue, 12 Jan 2021 16:24:51 +0000 (17:24 +0100)
Some devices do not implement analogue gain this way. Only add the control
when a device does have the support.

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 706fa81..47879f9 100644 (file)
@@ -777,12 +777,16 @@ static int ccs_init_controls(struct ccs_sensor *sensor)
 
        sensor->pixel_array->ctrl_handler.lock = &sensor->mutex;
 
-       v4l2_ctrl_new_std(&sensor->pixel_array->ctrl_handler, &ccs_ctrl_ops,
-                         V4L2_CID_ANALOGUE_GAIN,
-                         CCS_LIM(sensor, ANALOG_GAIN_CODE_MIN),
-                         CCS_LIM(sensor, ANALOG_GAIN_CODE_MAX),
-                         max(CCS_LIM(sensor, ANALOG_GAIN_CODE_STEP), 1U),
-                         CCS_LIM(sensor, ANALOG_GAIN_CODE_MIN));
+       switch (CCS_LIM(sensor, ANALOG_GAIN_CAPABILITY)) {
+       case CCS_ANALOG_GAIN_CAPABILITY_GLOBAL:
+               v4l2_ctrl_new_std(&sensor->pixel_array->ctrl_handler,
+                                 &ccs_ctrl_ops, V4L2_CID_ANALOGUE_GAIN,
+                                 CCS_LIM(sensor, ANALOG_GAIN_CODE_MIN),
+                                 CCS_LIM(sensor, ANALOG_GAIN_CODE_MAX),
+                                 max(CCS_LIM(sensor, ANALOG_GAIN_CODE_STEP),
+                                     1U),
+                                 CCS_LIM(sensor, ANALOG_GAIN_CODE_MIN));
+       }
 
        if (CCS_LIM(sensor, DIGITAL_GAIN_CAPABILITY) ==
            CCS_DIGITAL_GAIN_CAPABILITY_GLOBAL ||