Loading arch/arm64/boot/dts/qcom/qm215-qrd.dtsi +1 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ qcom,chgr-led-support; qcom,vddmax-mv = <4400>; qcom,vddsafe-mv = <4400>; qcom,batt-hot-percentage = <35>; }; &pm8916_bms{ Loading drivers/media/platform/msm/camera_v2/sensor/ir_led/msm_ir_led.c +5 −5 Original line number Diff line number Diff line /* Copyright (c) 2016, 2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2016-2018 The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -324,10 +324,6 @@ static long msm_ir_led_subdev_do_ioctl( struct msm_ir_led_cfg_data_t ir_led_data; CDBG("Enter\n"); ir_led_data.cfg_type = u32->cfg_type; ir_led_data.pwm_duty_on_ns = u32->pwm_duty_on_ns; ir_led_data.pwm_period_ns = u32->pwm_period_ns; switch (cmd) { case VIDIOC_MSM_IR_LED_CFG32: cmd = VIDIOC_MSM_IR_LED_CFG; Loading @@ -336,6 +332,10 @@ static long msm_ir_led_subdev_do_ioctl( return msm_ir_led_subdev_ioctl(sd, cmd, arg); } ir_led_data.cfg_type = u32->cfg_type; ir_led_data.pwm_duty_on_ns = u32->pwm_duty_on_ns; ir_led_data.pwm_period_ns = u32->pwm_period_ns; rc = msm_ir_led_subdev_ioctl(sd, cmd, &ir_led_data); CDBG("Exit\n"); Loading drivers/media/platform/msm/camera_v2/sensor/laser_led/msm_laser_led.c +57 −8 Original line number Diff line number Diff line Loading @@ -70,18 +70,15 @@ static struct msm_camera_i2c_fn_t msm_sensor_cci_func_tbl = { .i2c_util = msm_sensor_cci_i2c_util, .i2c_poll = msm_camera_cci_i2c_poll, }; #ifdef CONFIG_COMPAT static int32_t msm_laser_led_init( struct msm_laser_led_ctrl_t *laser_led_ctrl, struct msm_laser_led_cfg_data_t32 __user *laser_led_data) #else static int32_t msm_laser_led_init( struct msm_laser_led_ctrl_t *laser_led_ctrl, struct msm_laser_led_cfg_data_t __user *laser_led_data) #endif void __user *argp) { int32_t rc = -EFAULT; struct msm_camera_cci_client *cci_client = NULL; struct msm_laser_led_cfg_data_t __user *laser_led_data = (struct msm_laser_led_cfg_data_t __user *) argp; CDBG("Enter\n"); Loading Loading @@ -263,6 +260,53 @@ static int32_t msm_laser_led_control32( return rc; } static int32_t msm_laser_led_init32( struct msm_laser_led_ctrl_t *laser_led_ctrl, void __user *argp) { int32_t rc = -EFAULT; struct msm_laser_led_cfg_data_t32 __user *laser_led_data = (struct msm_laser_led_cfg_data_t32 __user *) argp; struct msm_camera_cci_client *cci_client = NULL; CDBG("Enter\n"); if (laser_led_ctrl->laser_led_state == MSM_CAMERA_LASER_LED_INIT) { pr_err("Invalid laser_led state = %d\n", laser_led_ctrl->laser_led_state); return 0; } rc = laser_led_ctrl->i2c_client.i2c_func_tbl->i2c_util( &laser_led_ctrl->i2c_client, MSM_CCI_INIT); if (rc < 0) pr_err("cci_init failed\n"); cci_client = laser_led_ctrl->i2c_client.cci_client; if (copy_from_user(&(cci_client->sid), &(laser_led_data->i2c_addr), sizeof(uint16_t))) { pr_err("%s:%d failed\n", __func__, __LINE__); return -EFAULT; } cci_client->sid = cci_client->sid >> 1; cci_client->retries = 3; cci_client->id_map = 0; if (copy_from_user(&(cci_client->i2c_freq_mode), &(laser_led_data->i2c_freq_mode), sizeof(enum i2c_freq_mode_t))) { pr_err("%s:%d failed\n", __func__, __LINE__); return -EFAULT; } laser_led_ctrl->laser_led_state = MSM_CAMERA_LASER_LED_INIT; CDBG("Exit\n"); return 0; } #endif static int32_t msm_laser_led_control( Loading Loading @@ -381,7 +425,12 @@ static int32_t msm_laser_led_config(struct msm_laser_led_ctrl_t *laser_led_ctrl, switch (cfg_type) { case CFG_LASER_LED_INIT: rc = msm_laser_led_init(laser_led_ctrl, laser_led_data); #ifdef CONFIG_COMPAT if (is_compat_task()) rc = msm_laser_led_init32(laser_led_ctrl, argp); else #endif rc = msm_laser_led_init(laser_led_ctrl, argp); break; case CFG_LASER_LED_CONTROL: #ifdef CONFIG_COMPAT Loading drivers/scsi/ufs/ufshcd.c +5 −2 Original line number Diff line number Diff line Loading @@ -3445,6 +3445,7 @@ static int ufshcd_exec_dev_cmd(struct ufs_hba *hba, int tag; struct completion wait; unsigned long flags; bool has_read_lock = false; /* * May get invoked from shutdown and IOCTL contexts. Loading @@ -3452,8 +3453,10 @@ static int ufshcd_exec_dev_cmd(struct ufs_hba *hba, * In error recovery context, it may come with lock acquired. */ if (!ufshcd_is_shutdown_ongoing(hba) && !ufshcd_eh_in_progress(hba)) if (!ufshcd_is_shutdown_ongoing(hba) && !ufshcd_eh_in_progress(hba)) { down_read(&hba->lock); has_read_lock = true; } /* * Get free slot, sleep if slots are unavailable. Loading Loading @@ -3486,7 +3489,7 @@ static int ufshcd_exec_dev_cmd(struct ufs_hba *hba, out_put_tag: ufshcd_put_dev_cmd_tag(hba, tag); wake_up(&hba->dev_cmd.tag_wq); if (!ufshcd_is_shutdown_ongoing(hba) && !ufshcd_eh_in_progress(hba)) if (has_read_lock) up_read(&hba->lock); return err; } Loading drivers/video/fbdev/msm/mdp3.c +1 −1 Original line number Diff line number Diff line Loading @@ -1986,7 +1986,7 @@ static int mdp3_debug_init(struct platform_device *pdev) mdata->debug_inf.debug_enable_clock = mdp3_debug_enable_clock; mdata->mdp_rev = mdp3_res->mdp_rev; mdata->pdev = pdev; rc = mdss_debugfs_init(mdata); if (rc) return rc; Loading Loading
arch/arm64/boot/dts/qcom/qm215-qrd.dtsi +1 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ qcom,chgr-led-support; qcom,vddmax-mv = <4400>; qcom,vddsafe-mv = <4400>; qcom,batt-hot-percentage = <35>; }; &pm8916_bms{ Loading
drivers/media/platform/msm/camera_v2/sensor/ir_led/msm_ir_led.c +5 −5 Original line number Diff line number Diff line /* Copyright (c) 2016, 2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2016-2018 The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -324,10 +324,6 @@ static long msm_ir_led_subdev_do_ioctl( struct msm_ir_led_cfg_data_t ir_led_data; CDBG("Enter\n"); ir_led_data.cfg_type = u32->cfg_type; ir_led_data.pwm_duty_on_ns = u32->pwm_duty_on_ns; ir_led_data.pwm_period_ns = u32->pwm_period_ns; switch (cmd) { case VIDIOC_MSM_IR_LED_CFG32: cmd = VIDIOC_MSM_IR_LED_CFG; Loading @@ -336,6 +332,10 @@ static long msm_ir_led_subdev_do_ioctl( return msm_ir_led_subdev_ioctl(sd, cmd, arg); } ir_led_data.cfg_type = u32->cfg_type; ir_led_data.pwm_duty_on_ns = u32->pwm_duty_on_ns; ir_led_data.pwm_period_ns = u32->pwm_period_ns; rc = msm_ir_led_subdev_ioctl(sd, cmd, &ir_led_data); CDBG("Exit\n"); Loading
drivers/media/platform/msm/camera_v2/sensor/laser_led/msm_laser_led.c +57 −8 Original line number Diff line number Diff line Loading @@ -70,18 +70,15 @@ static struct msm_camera_i2c_fn_t msm_sensor_cci_func_tbl = { .i2c_util = msm_sensor_cci_i2c_util, .i2c_poll = msm_camera_cci_i2c_poll, }; #ifdef CONFIG_COMPAT static int32_t msm_laser_led_init( struct msm_laser_led_ctrl_t *laser_led_ctrl, struct msm_laser_led_cfg_data_t32 __user *laser_led_data) #else static int32_t msm_laser_led_init( struct msm_laser_led_ctrl_t *laser_led_ctrl, struct msm_laser_led_cfg_data_t __user *laser_led_data) #endif void __user *argp) { int32_t rc = -EFAULT; struct msm_camera_cci_client *cci_client = NULL; struct msm_laser_led_cfg_data_t __user *laser_led_data = (struct msm_laser_led_cfg_data_t __user *) argp; CDBG("Enter\n"); Loading Loading @@ -263,6 +260,53 @@ static int32_t msm_laser_led_control32( return rc; } static int32_t msm_laser_led_init32( struct msm_laser_led_ctrl_t *laser_led_ctrl, void __user *argp) { int32_t rc = -EFAULT; struct msm_laser_led_cfg_data_t32 __user *laser_led_data = (struct msm_laser_led_cfg_data_t32 __user *) argp; struct msm_camera_cci_client *cci_client = NULL; CDBG("Enter\n"); if (laser_led_ctrl->laser_led_state == MSM_CAMERA_LASER_LED_INIT) { pr_err("Invalid laser_led state = %d\n", laser_led_ctrl->laser_led_state); return 0; } rc = laser_led_ctrl->i2c_client.i2c_func_tbl->i2c_util( &laser_led_ctrl->i2c_client, MSM_CCI_INIT); if (rc < 0) pr_err("cci_init failed\n"); cci_client = laser_led_ctrl->i2c_client.cci_client; if (copy_from_user(&(cci_client->sid), &(laser_led_data->i2c_addr), sizeof(uint16_t))) { pr_err("%s:%d failed\n", __func__, __LINE__); return -EFAULT; } cci_client->sid = cci_client->sid >> 1; cci_client->retries = 3; cci_client->id_map = 0; if (copy_from_user(&(cci_client->i2c_freq_mode), &(laser_led_data->i2c_freq_mode), sizeof(enum i2c_freq_mode_t))) { pr_err("%s:%d failed\n", __func__, __LINE__); return -EFAULT; } laser_led_ctrl->laser_led_state = MSM_CAMERA_LASER_LED_INIT; CDBG("Exit\n"); return 0; } #endif static int32_t msm_laser_led_control( Loading Loading @@ -381,7 +425,12 @@ static int32_t msm_laser_led_config(struct msm_laser_led_ctrl_t *laser_led_ctrl, switch (cfg_type) { case CFG_LASER_LED_INIT: rc = msm_laser_led_init(laser_led_ctrl, laser_led_data); #ifdef CONFIG_COMPAT if (is_compat_task()) rc = msm_laser_led_init32(laser_led_ctrl, argp); else #endif rc = msm_laser_led_init(laser_led_ctrl, argp); break; case CFG_LASER_LED_CONTROL: #ifdef CONFIG_COMPAT Loading
drivers/scsi/ufs/ufshcd.c +5 −2 Original line number Diff line number Diff line Loading @@ -3445,6 +3445,7 @@ static int ufshcd_exec_dev_cmd(struct ufs_hba *hba, int tag; struct completion wait; unsigned long flags; bool has_read_lock = false; /* * May get invoked from shutdown and IOCTL contexts. Loading @@ -3452,8 +3453,10 @@ static int ufshcd_exec_dev_cmd(struct ufs_hba *hba, * In error recovery context, it may come with lock acquired. */ if (!ufshcd_is_shutdown_ongoing(hba) && !ufshcd_eh_in_progress(hba)) if (!ufshcd_is_shutdown_ongoing(hba) && !ufshcd_eh_in_progress(hba)) { down_read(&hba->lock); has_read_lock = true; } /* * Get free slot, sleep if slots are unavailable. Loading Loading @@ -3486,7 +3489,7 @@ static int ufshcd_exec_dev_cmd(struct ufs_hba *hba, out_put_tag: ufshcd_put_dev_cmd_tag(hba, tag); wake_up(&hba->dev_cmd.tag_wq); if (!ufshcd_is_shutdown_ongoing(hba) && !ufshcd_eh_in_progress(hba)) if (has_read_lock) up_read(&hba->lock); return err; } Loading
drivers/video/fbdev/msm/mdp3.c +1 −1 Original line number Diff line number Diff line Loading @@ -1986,7 +1986,7 @@ static int mdp3_debug_init(struct platform_device *pdev) mdata->debug_inf.debug_enable_clock = mdp3_debug_enable_clock; mdata->mdp_rev = mdp3_res->mdp_rev; mdata->pdev = pdev; rc = mdss_debugfs_init(mdata); if (rc) return rc; Loading