Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

media: atomisp: Remove ISP controls which get passed through to the camera

Drop all ISP controls and ioctls which just get passed through
to the camera subdev. Instead these calls should be done directly
at the sensor subdev.

Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>

authored by

Hans de Goede and committed by
Mauro Carvalho Chehab
dc377684 95146b9d

-269
-21
drivers/staging/media/atomisp/include/linux/atomisp.h
··· 837 837 #define ATOMISP_IOC_S_PARAMETERS \ 838 838 _IOW('v', BASE_VIDIOC_PRIVATE + 32, struct atomisp_parameters) 839 839 840 - #define ATOMISP_IOC_EXT_ISP_CTRL \ 841 - _IOWR('v', BASE_VIDIOC_PRIVATE + 35, struct atomisp_ext_isp_ctrl) 842 - 843 840 #define ATOMISP_IOC_EXP_ID_UNLOCK \ 844 841 _IOW('v', BASE_VIDIOC_PRIVATE + 36, int) 845 842 ··· 906 909 /* Set the flash mode (see enum atomisp_flash_mode) */ 907 910 #define V4L2_CID_FLASH_MODE (V4L2_CID_CAMERA_LASTP1 + 10) 908 911 909 - /* VCM slew control */ 910 - #define V4L2_CID_VCM_SLEW (V4L2_CID_CAMERA_LASTP1 + 11) 911 - /* VCM step time */ 912 - #define V4L2_CID_VCM_TIMING (V4L2_CID_CAMERA_LASTP1 + 12) 913 - 914 - /* number of frames to skip at stream start */ 915 - #define V4L2_CID_G_SKIP_FRAMES (V4L2_CID_CAMERA_LASTP1 + 17) 916 - 917 - /* Query sensor's 2A status */ 918 - #define V4L2_CID_2A_STATUS (V4L2_CID_CAMERA_LASTP1 + 18) 919 - #define V4L2_2A_STATUS_AE_READY BIT(0) 920 - #define V4L2_2A_STATUS_AWB_READY BIT(1) 921 - 922 912 #define V4L2_CID_RUN_MODE (V4L2_CID_CAMERA_LASTP1 + 20) 923 913 #define ATOMISP_RUN_MODE_VIDEO 1 924 914 #define ATOMISP_RUN_MODE_STILL_CAPTURE 2 ··· 935 951 #define V4L2_CID_EXPOSURE_ZONE_NUM (V4L2_CID_CAMERA_LASTP1 + 31) 936 952 /* Disable digital zoom */ 937 953 #define V4L2_CID_DISABLE_DZ (V4L2_CID_CAMERA_LASTP1 + 32) 938 - 939 - #define V4L2_CID_TEST_PATTERN_COLOR_R (V4L2_CID_CAMERA_LASTP1 + 33) 940 - #define V4L2_CID_TEST_PATTERN_COLOR_GR (V4L2_CID_CAMERA_LASTP1 + 34) 941 - #define V4L2_CID_TEST_PATTERN_COLOR_GB (V4L2_CID_CAMERA_LASTP1 + 35) 942 - #define V4L2_CID_TEST_PATTERN_COLOR_B (V4L2_CID_CAMERA_LASTP1 + 36) 943 954 944 955 #define V4L2_CID_ATOMISP_SELECT_ISP_VERSION (V4L2_CID_CAMERA_LASTP1 + 38) 945 956
-248
drivers/staging/media/atomisp/pci/atomisp_ioctl.c
··· 83 83 .default_value = 0x00, 84 84 }, 85 85 { 86 - .id = V4L2_CID_POWER_LINE_FREQUENCY, 87 - .type = V4L2_CTRL_TYPE_MENU, 88 - .name = "Light frequency filter", 89 - .minimum = 1, 90 - .maximum = 2, 91 - .step = 1, 92 - .default_value = 1, 93 - }, 94 - { 95 86 .id = V4L2_CID_COLORFX, 96 87 .type = V4L2_CTRL_TYPE_INTEGER, 97 88 .name = "Image Color Effect", 98 89 .minimum = 0, 99 90 .maximum = 9, 100 - .step = 1, 101 - .default_value = 0, 102 - }, 103 - { 104 - .id = V4L2_CID_COLORFX_CBCR, 105 - .type = V4L2_CTRL_TYPE_INTEGER, 106 - .name = "Image Color Effect CbCr", 107 - .minimum = 0, 108 - .maximum = 0xffff, 109 91 .step = 1, 110 92 .default_value = 0, 111 93 }, ··· 153 171 .maximum = 1, 154 172 .step = 1, 155 173 .default_value = 1, 156 - }, 157 - { 158 - .id = V4L2_CID_2A_STATUS, 159 - .type = V4L2_CTRL_TYPE_BITMASK, 160 - .name = "AE and AWB status", 161 - .minimum = 0, 162 - .maximum = V4L2_2A_STATUS_AE_READY | V4L2_2A_STATUS_AWB_READY, 163 - .step = 1, 164 - .default_value = 0, 165 - }, 166 - { 167 - .id = V4L2_CID_EXPOSURE, 168 - .type = V4L2_CTRL_TYPE_INTEGER, 169 - .name = "exposure", 170 - .minimum = -4, 171 - .maximum = 4, 172 - .step = 1, 173 - .default_value = 0, 174 - }, 175 - { 176 - .id = V4L2_CID_EXPOSURE_ZONE_NUM, 177 - .type = V4L2_CTRL_TYPE_INTEGER, 178 - .name = "one-time exposure zone number", 179 - .minimum = 0x0, 180 - .maximum = 0xffff, 181 - .step = 1, 182 - .default_value = 0, 183 - }, 184 - { 185 - .id = V4L2_CID_EXPOSURE_AUTO_PRIORITY, 186 - .type = V4L2_CTRL_TYPE_INTEGER, 187 - .name = "Exposure auto priority", 188 - .minimum = V4L2_EXPOSURE_AUTO, 189 - .maximum = V4L2_EXPOSURE_APERTURE_PRIORITY, 190 - .step = 1, 191 - .default_value = V4L2_EXPOSURE_AUTO, 192 - }, 193 - { 194 - .id = V4L2_CID_SCENE_MODE, 195 - .type = V4L2_CTRL_TYPE_INTEGER, 196 - .name = "scene mode", 197 - .minimum = 0, 198 - .maximum = 13, 199 - .step = 1, 200 - .default_value = 0, 201 - }, 202 - { 203 - .id = V4L2_CID_ISO_SENSITIVITY, 204 - .type = V4L2_CTRL_TYPE_INTEGER, 205 - .name = "iso", 206 - .minimum = -4, 207 - .maximum = 4, 208 - .step = 1, 209 - .default_value = 0, 210 - }, 211 - { 212 - .id = V4L2_CID_ISO_SENSITIVITY_AUTO, 213 - .type = V4L2_CTRL_TYPE_INTEGER, 214 - .name = "iso mode", 215 - .minimum = V4L2_ISO_SENSITIVITY_MANUAL, 216 - .maximum = V4L2_ISO_SENSITIVITY_AUTO, 217 - .step = 1, 218 - .default_value = V4L2_ISO_SENSITIVITY_AUTO, 219 - }, 220 - { 221 - .id = V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE, 222 - .type = V4L2_CTRL_TYPE_INTEGER, 223 - .name = "white balance", 224 - .minimum = 0, 225 - .maximum = 9, 226 - .step = 1, 227 - .default_value = 0, 228 - }, 229 - { 230 - .id = V4L2_CID_EXPOSURE_METERING, 231 - .type = V4L2_CTRL_TYPE_MENU, 232 - .name = "metering", 233 - .minimum = 0, 234 - .maximum = 3, 235 - .step = 1, 236 - .default_value = 1, 237 - }, 238 - { 239 - .id = V4L2_CID_3A_LOCK, 240 - .type = V4L2_CTRL_TYPE_BITMASK, 241 - .name = "3a lock", 242 - .minimum = 0, 243 - .maximum = V4L2_LOCK_EXPOSURE | V4L2_LOCK_WHITE_BALANCE 244 - | V4L2_LOCK_FOCUS, 245 - .step = 1, 246 - .default_value = 0, 247 - }, 248 - { 249 - .id = V4L2_CID_TEST_PATTERN, 250 - .type = V4L2_CTRL_TYPE_INTEGER, 251 - .name = "Test Pattern", 252 - .minimum = 0, 253 - .maximum = 0xffff, 254 - .step = 1, 255 - .default_value = 0, 256 - }, 257 - { 258 - .id = V4L2_CID_TEST_PATTERN_COLOR_R, 259 - .type = V4L2_CTRL_TYPE_INTEGER, 260 - .name = "Test Pattern Solid Color R", 261 - .minimum = INT_MIN, 262 - .maximum = INT_MAX, 263 - .step = 1, 264 - .default_value = 0, 265 - }, 266 - { 267 - .id = V4L2_CID_TEST_PATTERN_COLOR_GR, 268 - .type = V4L2_CTRL_TYPE_INTEGER, 269 - .name = "Test Pattern Solid Color GR", 270 - .minimum = INT_MIN, 271 - .maximum = INT_MAX, 272 - .step = 1, 273 - .default_value = 0, 274 - }, 275 - { 276 - .id = V4L2_CID_TEST_PATTERN_COLOR_GB, 277 - .type = V4L2_CTRL_TYPE_INTEGER, 278 - .name = "Test Pattern Solid Color GB", 279 - .minimum = INT_MIN, 280 - .maximum = INT_MAX, 281 - .step = 1, 282 - .default_value = 0, 283 - }, 284 - { 285 - .id = V4L2_CID_TEST_PATTERN_COLOR_B, 286 - .type = V4L2_CTRL_TYPE_INTEGER, 287 - .name = "Test Pattern Solid Color B", 288 - .minimum = INT_MIN, 289 - .maximum = INT_MAX, 290 - .step = 1, 291 - .default_value = 0, 292 174 }, 293 175 }; 294 176 ··· 1094 1248 { 1095 1249 struct video_device *vdev = video_devdata(file); 1096 1250 struct atomisp_sub_device *asd = atomisp_to_video_pipe(vdev)->asd; 1097 - struct atomisp_device *isp = video_get_drvdata(vdev); 1098 1251 int i, ret = -EINVAL; 1099 1252 1100 1253 for (i = 0; i < ctrls_num; i++) { ··· 1107 1262 return ret; 1108 1263 1109 1264 switch (control->id) { 1110 - case V4L2_CID_IRIS_ABSOLUTE: 1111 - case V4L2_CID_EXPOSURE_ABSOLUTE: 1112 - case V4L2_CID_2A_STATUS: 1113 - case V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE: 1114 - case V4L2_CID_EXPOSURE: 1115 - case V4L2_CID_EXPOSURE_AUTO: 1116 - case V4L2_CID_SCENE_MODE: 1117 - case V4L2_CID_ISO_SENSITIVITY: 1118 - case V4L2_CID_ISO_SENSITIVITY_AUTO: 1119 - case V4L2_CID_CONTRAST: 1120 - case V4L2_CID_SATURATION: 1121 - case V4L2_CID_SHARPNESS: 1122 - case V4L2_CID_3A_LOCK: 1123 - case V4L2_CID_EXPOSURE_ZONE_NUM: 1124 - case V4L2_CID_TEST_PATTERN: 1125 - case V4L2_CID_TEST_PATTERN_COLOR_R: 1126 - case V4L2_CID_TEST_PATTERN_COLOR_GR: 1127 - case V4L2_CID_TEST_PATTERN_COLOR_GB: 1128 - case V4L2_CID_TEST_PATTERN_COLOR_B: 1129 - return v4l2_g_ctrl(isp->inputs[asd->input_curr].camera-> 1130 - ctrl_handler, control); 1131 1265 case V4L2_CID_COLORFX: 1132 1266 ret = atomisp_color_effect(asd, 0, &control->value); 1133 1267 break; ··· 1146 1322 { 1147 1323 struct video_device *vdev = video_devdata(file); 1148 1324 struct atomisp_sub_device *asd = atomisp_to_video_pipe(vdev)->asd; 1149 - struct atomisp_device *isp = video_get_drvdata(vdev); 1150 1325 int i, ret = -EINVAL; 1151 1326 1152 1327 for (i = 0; i < ctrls_num; i++) { ··· 1159 1336 return ret; 1160 1337 1161 1338 switch (control->id) { 1162 - case V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE: 1163 - case V4L2_CID_EXPOSURE: 1164 - case V4L2_CID_EXPOSURE_AUTO: 1165 - case V4L2_CID_EXPOSURE_AUTO_PRIORITY: 1166 - case V4L2_CID_SCENE_MODE: 1167 - case V4L2_CID_ISO_SENSITIVITY: 1168 - case V4L2_CID_ISO_SENSITIVITY_AUTO: 1169 - case V4L2_CID_POWER_LINE_FREQUENCY: 1170 - case V4L2_CID_EXPOSURE_METERING: 1171 - case V4L2_CID_CONTRAST: 1172 - case V4L2_CID_SATURATION: 1173 - case V4L2_CID_SHARPNESS: 1174 - case V4L2_CID_3A_LOCK: 1175 - case V4L2_CID_COLORFX_CBCR: 1176 - case V4L2_CID_TEST_PATTERN: 1177 - case V4L2_CID_TEST_PATTERN_COLOR_R: 1178 - case V4L2_CID_TEST_PATTERN_COLOR_GR: 1179 - case V4L2_CID_TEST_PATTERN_COLOR_GB: 1180 - case V4L2_CID_TEST_PATTERN_COLOR_B: 1181 - return v4l2_s_ctrl(NULL, 1182 - isp->inputs[asd->input_curr].camera-> 1183 - ctrl_handler, control); 1184 1339 case V4L2_CID_COLORFX: 1185 1340 ret = atomisp_color_effect(asd, 1, &control->value); 1186 1341 break; ··· 1199 1398 static int atomisp_queryctl(struct file *file, void *fh, 1200 1399 struct v4l2_queryctrl *qc) 1201 1400 { 1202 - struct video_device *vdev = video_devdata(file); 1203 1401 int i, ret = -EINVAL; 1204 1402 1205 1403 if (qc->id & V4L2_CTRL_FLAG_NEXT_CTRL) ··· 1233 1433 ctrl.id = c->controls[i].id; 1234 1434 ctrl.value = c->controls[i].value; 1235 1435 switch (ctrl.id) { 1236 - case V4L2_CID_EXPOSURE_ABSOLUTE: 1237 - case V4L2_CID_EXPOSURE_AUTO: 1238 - case V4L2_CID_IRIS_ABSOLUTE: 1239 - case V4L2_CID_3A_LOCK: 1240 - case V4L2_CID_TEST_PATTERN: 1241 - case V4L2_CID_TEST_PATTERN_COLOR_R: 1242 - case V4L2_CID_TEST_PATTERN_COLOR_GR: 1243 - case V4L2_CID_TEST_PATTERN_COLOR_GB: 1244 - case V4L2_CID_TEST_PATTERN_COLOR_B: 1245 - /* 1246 - * Exposure related control will be handled by sensor 1247 - * driver 1248 - */ 1249 - ret = 1250 - v4l2_g_ctrl(isp->inputs[asd->input_curr].camera-> 1251 - ctrl_handler, &ctrl); 1252 - break; 1253 1436 case V4L2_CID_FLASH_STATUS: 1254 1437 case V4L2_CID_FLASH_INTENSITY: 1255 1438 case V4L2_CID_FLASH_TORCH_INTENSITY: ··· 1248 1465 break; 1249 1466 case V4L2_CID_ZOOM_ABSOLUTE: 1250 1467 ret = atomisp_digital_zoom(asd, 0, &ctrl.value); 1251 - break; 1252 - case V4L2_CID_G_SKIP_FRAMES: 1253 - ret = v4l2_subdev_call( 1254 - isp->inputs[asd->input_curr].camera, 1255 - sensor, g_skip_frames, (u32 *)&ctrl.value); 1256 1468 break; 1257 1469 default: 1258 1470 ret = -EINVAL; ··· 1306 1528 ctrl.id = c->controls[i].id; 1307 1529 ctrl.value = c->controls[i].value; 1308 1530 switch (ctrl.id) { 1309 - case V4L2_CID_EXPOSURE_ABSOLUTE: 1310 - case V4L2_CID_EXPOSURE_AUTO: 1311 - case V4L2_CID_EXPOSURE_METERING: 1312 - case V4L2_CID_IRIS_ABSOLUTE: 1313 - case V4L2_CID_VCM_TIMING: 1314 - case V4L2_CID_VCM_SLEW: 1315 - case V4L2_CID_3A_LOCK: 1316 - case V4L2_CID_TEST_PATTERN: 1317 - case V4L2_CID_TEST_PATTERN_COLOR_R: 1318 - case V4L2_CID_TEST_PATTERN_COLOR_GR: 1319 - case V4L2_CID_TEST_PATTERN_COLOR_GB: 1320 - case V4L2_CID_TEST_PATTERN_COLOR_B: 1321 - ret = v4l2_s_ctrl(NULL, 1322 - isp->inputs[asd->input_curr].camera-> 1323 - ctrl_handler, &ctrl); 1324 - break; 1325 1531 case V4L2_CID_FLASH_STATUS: 1326 1532 case V4L2_CID_FLASH_INTENSITY: 1327 1533 case V4L2_CID_FLASH_TORCH_INTENSITY: ··· 1454 1692 bool valid_prio, unsigned int cmd, void *arg) 1455 1693 { 1456 1694 struct video_device *vdev = video_devdata(file); 1457 - struct atomisp_device *isp = video_get_drvdata(vdev); 1458 1695 struct atomisp_sub_device *asd = atomisp_to_video_pipe(vdev)->asd; 1459 1696 int err; 1460 1697 ··· 1600 1839 err = atomisp_fixed_pattern_table(asd, arg); 1601 1840 break; 1602 1841 1603 - case ATOMISP_IOC_S_EXPOSURE: 1604 - err = v4l2_subdev_call(isp->inputs[asd->input_curr].camera, 1605 - core, ioctl, cmd, arg); 1606 - break; 1607 - 1608 1842 case ATOMISP_IOC_S_ISP_SHD_TAB: 1609 1843 err = atomisp_set_shading_table(asd, arg); 1610 1844 break; ··· 1616 1860 err = atomisp_set_parameters(vdev, arg); 1617 1861 break; 1618 1862 1619 - case ATOMISP_IOC_EXT_ISP_CTRL: 1620 - err = v4l2_subdev_call(isp->inputs[asd->input_curr].camera, 1621 - core, ioctl, cmd, arg); 1622 - break; 1623 1863 case ATOMISP_IOC_EXP_ID_UNLOCK: 1624 1864 err = atomisp_exp_id_unlock(asd, arg); 1625 1865 break;