Loading drivers/media/platform/msm/camera_v2/sensor/cci/msm_cci.c +16 −2 Original line number Diff line number Diff line Loading @@ -32,7 +32,7 @@ #define CYCLES_PER_MICRO_SEC_DEFAULT 4915 #define CCI_MAX_DELAY 1000000 #ifdef CONFIG_MACH_XIAOMI_MIDO #if defined CONFIG_MACH_XIAOMI_MIDO || CONFIG_MACH_XIAOMI_MARKW #define CCI_TIMEOUT msecs_to_jiffies(800) #else #define CCI_TIMEOUT msecs_to_jiffies(500) Loading Loading @@ -823,6 +823,9 @@ static int32_t msm_cci_i2c_read(struct v4l2_subdev *sd, int32_t read_words = 0, exp_words = 0; int32_t index = 0, first_byte = 0; uint32_t i = 0; #ifdef CONFIG_MACH_XIAOMI_MARKW uint32_t retry = 0; #endif enum cci_i2c_master_t master; enum cci_i2c_queue_t queue = QUEUE_1; struct cci_device *cci_dev = NULL; Loading Loading @@ -950,9 +953,20 @@ static int32_t msm_cci_i2c_read(struct v4l2_subdev *sd, } else { rc = 0; } #ifdef CONFIG_MACH_XIAOMI_MARKW for (retry = 0; retry < 3; retry++) { read_words = msm_camera_io_r_mb(cci_dev->base + CCI_I2C_M0_READ_BUF_LEVEL_ADDR + master * 0x100); pr_err("test s5k5e8 add %s:%d read_words = %d, exp words = %d\n", __func__, __LINE__, read_words, exp_words); if (read_words > 0) break; } #else read_words = msm_camera_io_r_mb(cci_dev->base + CCI_I2C_M0_READ_BUF_LEVEL_ADDR + master * 0x100); #endif exp_words = ((read_cfg->num_byte / 4) + 1); if (read_words != exp_words) { pr_err("%s:%d read_words = %d, exp words = %d\n", __func__, Loading drivers/media/platform/msm/camera_v2/sensor/csid/msm_csid.c +1 −1 Original line number Diff line number Diff line Loading @@ -62,7 +62,7 @@ #define FALSE 0 #define MAX_LANE_COUNT 4 #ifdef CONFIG_MACH_XIAOMI_MIDO #if defined CONFIG_MACH_XIAOMI_MIDO || CONFIG_MACH_XIAOMI_MARKW #define CSID_TIMEOUT msecs_to_jiffies(500) #else #define CSID_TIMEOUT msecs_to_jiffies(100) Loading drivers/media/platform/msm/camera_v2/sensor/flash/msm_flash.c +58 −0 Original line number Diff line number Diff line Loading @@ -457,6 +457,10 @@ static int32_t msm_flash_i2c_write_setting_array( return rc; } #ifdef CONFIG_MACH_XIAOMI_MARKW struct msm_flash_ctrl_t *flash_ctrl_wt = NULL; #endif static int32_t msm_flash_init( struct msm_flash_ctrl_t *flash_ctrl, struct msm_flash_cfg_data_t *flash_data) Loading Loading @@ -600,7 +604,11 @@ static int32_t msm_flash_low( led_trigger_event(flash_ctrl->flash_trigger[i], 0); /* Turn on flash triggers */ #ifdef CONFIG_MACH_XIAOMI_MARKW for (i = 0; i < flash_ctrl->torch_num_sources - 1; i++) { #else for (i = 0; i < flash_ctrl->torch_num_sources; i++) { #endif if (flash_ctrl->torch_trigger[i]) { max_current = flash_ctrl->torch_max_current[i]; if (flash_data->flash_current[i] >= 0 && Loading @@ -623,6 +631,37 @@ static int32_t msm_flash_low( return 0; } #ifdef CONFIG_MACH_XIAOMI_MARKW int32_t wt_flash_flashlight(bool boolean) { uint32_t curr = 0; int32_t i = 0; if (boolean) curr = 100; else curr = 0; if (flash_ctrl_wt) { CDBG("WT Enter\n"); /* Turn on flash triggers */ CDBG("WT_XJB flash_ctrl_wt->torch_num_sources = %d", flash_ctrl_wt->torch_num_sources); for (i = 0; i < flash_ctrl_wt->torch_num_sources - 1; i++) { CDBG("WT low_flash_current[%d] = %d\n", i, curr); if (flash_ctrl_wt->torch_trigger[i]) { led_trigger_event(flash_ctrl_wt->torch_trigger[i], curr); } } if (flash_ctrl_wt->switch_trigger) led_trigger_event(flash_ctrl_wt->switch_trigger, 1); CDBG("WT Exit\n"); } return 0; } #endif static int32_t msm_flash_high( struct msm_flash_ctrl_t *flash_ctrl, struct msm_flash_cfg_data_t *flash_data) Loading @@ -632,7 +671,11 @@ static int32_t msm_flash_high( int32_t i = 0; /* Turn off torch triggers */ #ifdef CONFIG_MACH_XIAOMI_MARKW for (i = 0; i < flash_ctrl->torch_num_sources - 1; i++) #else for (i = 0; i < flash_ctrl->torch_num_sources; i++) #endif if (flash_ctrl->torch_trigger[i]) led_trigger_event(flash_ctrl->torch_trigger[i], 0); Loading Loading @@ -1007,6 +1050,16 @@ static int32_t msm_flash_get_dt_data(struct device_node *of_node, fctrl->flash_driver_type = FLASH_DRIVER_DEFAULT; #ifdef CONFIG_MACH_XIAOMI_MARKW rc = msm_flash_get_pmic_source_info(of_node, fctrl); if (rc < 0) { pr_err("%s:%d msm_flash_get_pmic_source_info failed rc %d\n", __func__, __LINE__, rc); return rc; } if (fctrl->flash_driver_type == FLASH_DRIVER_PMIC) return 0; #endif /* Read the CCI master. Use M0 if not available in the node */ rc = of_property_read_u32(of_node, "qcom,cci-master", &fctrl->cci_i2c_master); Loading @@ -1020,6 +1073,7 @@ static int32_t msm_flash_get_dt_data(struct device_node *of_node, fctrl->flash_driver_type = FLASH_DRIVER_I2C; } #ifndef CONFIG_MACH_XIAOMI_MARKW /* Read the flash and torch source info from device tree node */ rc = msm_flash_get_pmic_source_info(of_node, fctrl); if (rc < 0) { Loading @@ -1027,6 +1081,7 @@ static int32_t msm_flash_get_dt_data(struct device_node *of_node, __func__, __LINE__, rc); return rc; } #endif /* Read the gpio information from device tree */ rc = msm_sensor_driver_get_gpio_data( Loading Loading @@ -1196,6 +1251,9 @@ static int msm_camera_flash_i2c_probe(struct i2c_client *client, #endif flash_ctrl->msm_sd.sd.devnode->fops = &msm_flash_v4l2_subdev_fops; #ifdef CONFIG_MACH_XIAOMI_MARKW flash_ctrl_wt = flash_ctrl; #endif CDBG("probe success\n"); return rc; } Loading Loading
drivers/media/platform/msm/camera_v2/sensor/cci/msm_cci.c +16 −2 Original line number Diff line number Diff line Loading @@ -32,7 +32,7 @@ #define CYCLES_PER_MICRO_SEC_DEFAULT 4915 #define CCI_MAX_DELAY 1000000 #ifdef CONFIG_MACH_XIAOMI_MIDO #if defined CONFIG_MACH_XIAOMI_MIDO || CONFIG_MACH_XIAOMI_MARKW #define CCI_TIMEOUT msecs_to_jiffies(800) #else #define CCI_TIMEOUT msecs_to_jiffies(500) Loading Loading @@ -823,6 +823,9 @@ static int32_t msm_cci_i2c_read(struct v4l2_subdev *sd, int32_t read_words = 0, exp_words = 0; int32_t index = 0, first_byte = 0; uint32_t i = 0; #ifdef CONFIG_MACH_XIAOMI_MARKW uint32_t retry = 0; #endif enum cci_i2c_master_t master; enum cci_i2c_queue_t queue = QUEUE_1; struct cci_device *cci_dev = NULL; Loading Loading @@ -950,9 +953,20 @@ static int32_t msm_cci_i2c_read(struct v4l2_subdev *sd, } else { rc = 0; } #ifdef CONFIG_MACH_XIAOMI_MARKW for (retry = 0; retry < 3; retry++) { read_words = msm_camera_io_r_mb(cci_dev->base + CCI_I2C_M0_READ_BUF_LEVEL_ADDR + master * 0x100); pr_err("test s5k5e8 add %s:%d read_words = %d, exp words = %d\n", __func__, __LINE__, read_words, exp_words); if (read_words > 0) break; } #else read_words = msm_camera_io_r_mb(cci_dev->base + CCI_I2C_M0_READ_BUF_LEVEL_ADDR + master * 0x100); #endif exp_words = ((read_cfg->num_byte / 4) + 1); if (read_words != exp_words) { pr_err("%s:%d read_words = %d, exp words = %d\n", __func__, Loading
drivers/media/platform/msm/camera_v2/sensor/csid/msm_csid.c +1 −1 Original line number Diff line number Diff line Loading @@ -62,7 +62,7 @@ #define FALSE 0 #define MAX_LANE_COUNT 4 #ifdef CONFIG_MACH_XIAOMI_MIDO #if defined CONFIG_MACH_XIAOMI_MIDO || CONFIG_MACH_XIAOMI_MARKW #define CSID_TIMEOUT msecs_to_jiffies(500) #else #define CSID_TIMEOUT msecs_to_jiffies(100) Loading
drivers/media/platform/msm/camera_v2/sensor/flash/msm_flash.c +58 −0 Original line number Diff line number Diff line Loading @@ -457,6 +457,10 @@ static int32_t msm_flash_i2c_write_setting_array( return rc; } #ifdef CONFIG_MACH_XIAOMI_MARKW struct msm_flash_ctrl_t *flash_ctrl_wt = NULL; #endif static int32_t msm_flash_init( struct msm_flash_ctrl_t *flash_ctrl, struct msm_flash_cfg_data_t *flash_data) Loading Loading @@ -600,7 +604,11 @@ static int32_t msm_flash_low( led_trigger_event(flash_ctrl->flash_trigger[i], 0); /* Turn on flash triggers */ #ifdef CONFIG_MACH_XIAOMI_MARKW for (i = 0; i < flash_ctrl->torch_num_sources - 1; i++) { #else for (i = 0; i < flash_ctrl->torch_num_sources; i++) { #endif if (flash_ctrl->torch_trigger[i]) { max_current = flash_ctrl->torch_max_current[i]; if (flash_data->flash_current[i] >= 0 && Loading @@ -623,6 +631,37 @@ static int32_t msm_flash_low( return 0; } #ifdef CONFIG_MACH_XIAOMI_MARKW int32_t wt_flash_flashlight(bool boolean) { uint32_t curr = 0; int32_t i = 0; if (boolean) curr = 100; else curr = 0; if (flash_ctrl_wt) { CDBG("WT Enter\n"); /* Turn on flash triggers */ CDBG("WT_XJB flash_ctrl_wt->torch_num_sources = %d", flash_ctrl_wt->torch_num_sources); for (i = 0; i < flash_ctrl_wt->torch_num_sources - 1; i++) { CDBG("WT low_flash_current[%d] = %d\n", i, curr); if (flash_ctrl_wt->torch_trigger[i]) { led_trigger_event(flash_ctrl_wt->torch_trigger[i], curr); } } if (flash_ctrl_wt->switch_trigger) led_trigger_event(flash_ctrl_wt->switch_trigger, 1); CDBG("WT Exit\n"); } return 0; } #endif static int32_t msm_flash_high( struct msm_flash_ctrl_t *flash_ctrl, struct msm_flash_cfg_data_t *flash_data) Loading @@ -632,7 +671,11 @@ static int32_t msm_flash_high( int32_t i = 0; /* Turn off torch triggers */ #ifdef CONFIG_MACH_XIAOMI_MARKW for (i = 0; i < flash_ctrl->torch_num_sources - 1; i++) #else for (i = 0; i < flash_ctrl->torch_num_sources; i++) #endif if (flash_ctrl->torch_trigger[i]) led_trigger_event(flash_ctrl->torch_trigger[i], 0); Loading Loading @@ -1007,6 +1050,16 @@ static int32_t msm_flash_get_dt_data(struct device_node *of_node, fctrl->flash_driver_type = FLASH_DRIVER_DEFAULT; #ifdef CONFIG_MACH_XIAOMI_MARKW rc = msm_flash_get_pmic_source_info(of_node, fctrl); if (rc < 0) { pr_err("%s:%d msm_flash_get_pmic_source_info failed rc %d\n", __func__, __LINE__, rc); return rc; } if (fctrl->flash_driver_type == FLASH_DRIVER_PMIC) return 0; #endif /* Read the CCI master. Use M0 if not available in the node */ rc = of_property_read_u32(of_node, "qcom,cci-master", &fctrl->cci_i2c_master); Loading @@ -1020,6 +1073,7 @@ static int32_t msm_flash_get_dt_data(struct device_node *of_node, fctrl->flash_driver_type = FLASH_DRIVER_I2C; } #ifndef CONFIG_MACH_XIAOMI_MARKW /* Read the flash and torch source info from device tree node */ rc = msm_flash_get_pmic_source_info(of_node, fctrl); if (rc < 0) { Loading @@ -1027,6 +1081,7 @@ static int32_t msm_flash_get_dt_data(struct device_node *of_node, __func__, __LINE__, rc); return rc; } #endif /* Read the gpio information from device tree */ rc = msm_sensor_driver_get_gpio_data( Loading Loading @@ -1196,6 +1251,9 @@ static int msm_camera_flash_i2c_probe(struct i2c_client *client, #endif flash_ctrl->msm_sd.sd.devnode->fops = &msm_flash_v4l2_subdev_fops; #ifdef CONFIG_MACH_XIAOMI_MARKW flash_ctrl_wt = flash_ctrl; #endif CDBG("probe success\n"); return rc; } Loading