Loading Documentation/devicetree/bindings/media/video/msm-cci.txt +3 −0 Original line number Diff line number Diff line Loading @@ -104,6 +104,8 @@ Optional properties: - qcom,mount-angle : should contain the physical mount angle of the sensor on the target - 0, 90, 180, 360 - qcom,mclk-23880000 : should be enabled if the supported mclk is 23.88Mhz and not 24 Mhz. - qcom,gpio-no-mux : should contain field to indicate whether gpio mux table is available - 1 if gpio mux is not available, 0 otherwise Loading Loading @@ -273,6 +275,7 @@ Example: qcom,csi-phy-sel = <0>; qcom,sensor-position = <0>; qcom,sensor-mode = <1>; qcom,mclk-23880000 }; }; Loading drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c +29 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,26 @@ #define CDBG(fmt, args...) pr_debug(fmt, ##args) static struct v4l2_file_operations msm_sensor_v4l2_subdev_fops; static void msm_sensor_adjust_mclk(struct msm_camera_power_ctrl_t *ctrl) { int idx; struct msm_sensor_power_setting *power_setting; for (idx = 0; idx < ctrl->power_setting_size; idx++) { power_setting = &ctrl->power_setting[idx]; if (power_setting->seq_type == SENSOR_CLK && power_setting->seq_val == SENSOR_CAM_MCLK) { if (power_setting->config_val == 24000000) { power_setting->config_val = 23880000; CDBG("%s MCLK request adjusted to 23.88MHz\n" , __func__); } break; } } return; } static int32_t msm_camera_get_power_settimgs_from_sensor_lib( struct msm_camera_power_ctrl_t *power_info, struct msm_sensor_power_setting_array *power_setting_array) Loading Loading @@ -168,6 +188,12 @@ static int32_t msm_sensor_get_dt_data(struct device_node *of_node, CDBG("%s qcom,sensor-mode %d\n", __func__, sensordata->sensor_info->modes_supported); s_ctrl->set_mclk_23880000 = of_property_read_bool(of_node, "qcom,mclk-23880000"); CDBG("%s qcom,mclk-23880000 %d\n", __func__, s_ctrl->set_mclk_23880000); rc = msm_sensor_get_dt_csi_data(of_node, &sensordata->csi_lane_params); if (rc < 0) { pr_err("%s failed %d\n", __func__, __LINE__); Loading Loading @@ -437,6 +463,9 @@ int msm_sensor_power_up(struct msm_sensor_ctrl_t *s_ctrl) return -EINVAL; } if (s_ctrl->set_mclk_23880000) msm_sensor_adjust_mclk(power_info); for (retry = 0; retry < 3; retry++) { rc = msm_camera_power_up(power_info, s_ctrl->sensor_device_type, sensor_i2c_client); Loading drivers/media/platform/msm/camera_v2/sensor/msm_sensor.h +1 −0 Original line number Diff line number Diff line Loading @@ -78,6 +78,7 @@ struct msm_sensor_ctrl_t { uint32_t id; struct device_node *of_node; enum msm_camera_stream_type_t camera_stream_type; uint32_t set_mclk_23880000; }; int msm_sensor_config(struct msm_sensor_ctrl_t *s_ctrl, void __user *argp); Loading drivers/media/platform/msm/camera_v2/sensor/msm_sensor_driver.c +6 −0 Original line number Diff line number Diff line Loading @@ -923,6 +923,12 @@ static int32_t msm_sensor_driver_get_dt_data(struct msm_sensor_ctrl_t *s_ctrl) &sensordata->misc_regulator); CDBG("qcom,misc_regulator %s", sensordata->misc_regulator); s_ctrl->set_mclk_23880000 = of_property_read_bool(of_node, "qcom,mclk-23880000"); CDBG("%s qcom,mclk-23880000 = %d\n", __func__, s_ctrl->set_mclk_23880000); return rc; FREE_VREG_DATA: Loading drivers/media/platform/msm/camera_v2/sensor/ov5645.c +1 −1 Original line number Diff line number Diff line Loading @@ -69,7 +69,7 @@ static struct msm_sensor_power_setting ov5645_power_setting[] = { { .seq_type = SENSOR_CLK, .seq_val = SENSOR_CAM_MCLK, .config_val = 23880000, .config_val = 24000000, .delay = 10, }, { Loading Loading
Documentation/devicetree/bindings/media/video/msm-cci.txt +3 −0 Original line number Diff line number Diff line Loading @@ -104,6 +104,8 @@ Optional properties: - qcom,mount-angle : should contain the physical mount angle of the sensor on the target - 0, 90, 180, 360 - qcom,mclk-23880000 : should be enabled if the supported mclk is 23.88Mhz and not 24 Mhz. - qcom,gpio-no-mux : should contain field to indicate whether gpio mux table is available - 1 if gpio mux is not available, 0 otherwise Loading Loading @@ -273,6 +275,7 @@ Example: qcom,csi-phy-sel = <0>; qcom,sensor-position = <0>; qcom,sensor-mode = <1>; qcom,mclk-23880000 }; }; Loading
drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c +29 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,26 @@ #define CDBG(fmt, args...) pr_debug(fmt, ##args) static struct v4l2_file_operations msm_sensor_v4l2_subdev_fops; static void msm_sensor_adjust_mclk(struct msm_camera_power_ctrl_t *ctrl) { int idx; struct msm_sensor_power_setting *power_setting; for (idx = 0; idx < ctrl->power_setting_size; idx++) { power_setting = &ctrl->power_setting[idx]; if (power_setting->seq_type == SENSOR_CLK && power_setting->seq_val == SENSOR_CAM_MCLK) { if (power_setting->config_val == 24000000) { power_setting->config_val = 23880000; CDBG("%s MCLK request adjusted to 23.88MHz\n" , __func__); } break; } } return; } static int32_t msm_camera_get_power_settimgs_from_sensor_lib( struct msm_camera_power_ctrl_t *power_info, struct msm_sensor_power_setting_array *power_setting_array) Loading Loading @@ -168,6 +188,12 @@ static int32_t msm_sensor_get_dt_data(struct device_node *of_node, CDBG("%s qcom,sensor-mode %d\n", __func__, sensordata->sensor_info->modes_supported); s_ctrl->set_mclk_23880000 = of_property_read_bool(of_node, "qcom,mclk-23880000"); CDBG("%s qcom,mclk-23880000 %d\n", __func__, s_ctrl->set_mclk_23880000); rc = msm_sensor_get_dt_csi_data(of_node, &sensordata->csi_lane_params); if (rc < 0) { pr_err("%s failed %d\n", __func__, __LINE__); Loading Loading @@ -437,6 +463,9 @@ int msm_sensor_power_up(struct msm_sensor_ctrl_t *s_ctrl) return -EINVAL; } if (s_ctrl->set_mclk_23880000) msm_sensor_adjust_mclk(power_info); for (retry = 0; retry < 3; retry++) { rc = msm_camera_power_up(power_info, s_ctrl->sensor_device_type, sensor_i2c_client); Loading
drivers/media/platform/msm/camera_v2/sensor/msm_sensor.h +1 −0 Original line number Diff line number Diff line Loading @@ -78,6 +78,7 @@ struct msm_sensor_ctrl_t { uint32_t id; struct device_node *of_node; enum msm_camera_stream_type_t camera_stream_type; uint32_t set_mclk_23880000; }; int msm_sensor_config(struct msm_sensor_ctrl_t *s_ctrl, void __user *argp); Loading
drivers/media/platform/msm/camera_v2/sensor/msm_sensor_driver.c +6 −0 Original line number Diff line number Diff line Loading @@ -923,6 +923,12 @@ static int32_t msm_sensor_driver_get_dt_data(struct msm_sensor_ctrl_t *s_ctrl) &sensordata->misc_regulator); CDBG("qcom,misc_regulator %s", sensordata->misc_regulator); s_ctrl->set_mclk_23880000 = of_property_read_bool(of_node, "qcom,mclk-23880000"); CDBG("%s qcom,mclk-23880000 = %d\n", __func__, s_ctrl->set_mclk_23880000); return rc; FREE_VREG_DATA: Loading
drivers/media/platform/msm/camera_v2/sensor/ov5645.c +1 −1 Original line number Diff line number Diff line Loading @@ -69,7 +69,7 @@ static struct msm_sensor_power_setting ov5645_power_setting[] = { { .seq_type = SENSOR_CLK, .seq_val = SENSOR_CAM_MCLK, .config_val = 23880000, .config_val = 24000000, .delay = 10, }, { Loading