Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d1a99118 authored by Linux Build Service Account's avatar Linux Build Service Account
Browse files

Merge edae206c on remote branch

Change-Id: Iadae40f2cd84885dd4b6b88e68990c61e1352595
parents 93d5ce03 edae206c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
	qcom,chgr-led-support;
	qcom,vddmax-mv = <4400>;
	qcom,vddsafe-mv = <4400>;
	qcom,batt-hot-percentage = <35>;
};

&pm8916_bms{
+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
@@ -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;
@@ -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");
+57 −8
Original line number Diff line number Diff line
@@ -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");

@@ -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(
@@ -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
+5 −2
Original line number Diff line number Diff line
@@ -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.
@@ -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.
@@ -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;
}
+1 −1
Original line number Diff line number Diff line
@@ -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