diff --git a/selfdrive/camerad/cameras/camera_qcom.cc b/selfdrive/camerad/cameras/camera_qcom.cc index 94d8f0969c..77fc4d9882 100644 --- a/selfdrive/camerad/cameras/camera_qcom.cc +++ b/selfdrive/camerad/cameras/camera_qcom.cc @@ -324,14 +324,8 @@ static void do_autoexposure(CameraState *s, float grey_frac) { } static void sensors_init(MultiCameraState *s) { - unique_fd sensorinit_fd; - sensorinit_fd = open("/dev/v4l-subdev11", O_RDWR | O_NONBLOCK); - assert(sensorinit_fd >= 0); - - // init road camera sensor - - struct msm_camera_sensor_slave_info slave_info = {0}; - slave_info = (struct msm_camera_sensor_slave_info){ + msm_camera_sensor_slave_info slave_infos[2] = { + (msm_camera_sensor_slave_info){ // road camera .sensor_name = "imx298", .eeprom_name = "sony_imx298", .actuator_name = "dw9800w", @@ -366,15 +360,8 @@ static void sensors_init(MultiCameraState *s) { .is_init_params_valid = 0, .sensor_init_params = {.modes_supported = 1, .position = BACK_CAMERA_B, .sensor_mount_angle = 90}, .output_format = MSM_SENSOR_BAYER, - }; - slave_info.power_setting_array.power_setting = &slave_info.power_setting_array.power_setting_a[0]; - slave_info.power_setting_array.power_down_setting = &slave_info.power_setting_array.power_down_setting_a[0]; - sensor_init_cfg_data sensor_init_cfg = {.cfgtype = CFG_SINIT_PROBE, .cfg.setting = &slave_info}; - int err = cam_ioctl(sensorinit_fd, VIDIOC_MSM_SENSOR_INIT_CFG, &sensor_init_cfg, "sensor init cfg (road camera)"); - assert(err >= 0); - - struct msm_camera_sensor_slave_info slave_info2 = {0}; - slave_info2 = (struct msm_camera_sensor_slave_info){ + }, + (msm_camera_sensor_slave_info){ // driver camera .sensor_name = "ov8865_sunny", .eeprom_name = "ov8865_plus", .actuator_name = "", @@ -407,13 +394,17 @@ static void sensors_init(MultiCameraState *s) { .is_init_params_valid = 0, .sensor_init_params = {.modes_supported = 1, .position = FRONT_CAMERA_B, .sensor_mount_angle = 270}, .output_format = MSM_SENSOR_BAYER, - }; - slave_info2.power_setting_array.power_setting = &slave_info2.power_setting_array.power_setting_a[0]; - slave_info2.power_setting_array.power_down_setting = &slave_info2.power_setting_array.power_down_setting_a[0]; - sensor_init_cfg.cfgtype = CFG_SINIT_PROBE; - sensor_init_cfg.cfg.setting = &slave_info2; - err = cam_ioctl(sensorinit_fd, VIDIOC_MSM_SENSOR_INIT_CFG, &sensor_init_cfg, "sensor init cfg (driver camera)"); - assert(err >= 0); + }}; + + unique_fd sensorinit_fd = open("/dev/v4l-subdev11", O_RDWR | O_NONBLOCK); + assert(sensorinit_fd >= 0); + for (auto &info : slave_infos) { + info.power_setting_array.power_setting = &info.power_setting_array.power_setting_a[0]; + info.power_setting_array.power_down_setting = &info.power_setting_array.power_down_setting_a[0]; + sensor_init_cfg_data sensor_init_cfg = {.cfgtype = CFG_SINIT_PROBE, .cfg.setting = &info}; + int err = cam_ioctl(sensorinit_fd, VIDIOC_MSM_SENSOR_INIT_CFG, &sensor_init_cfg, "sensor init cfg"); + assert(err >= 0); + } } static void camera_open(CameraState *s, bool is_road_cam) {