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

Commit fe00ea4d authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm:camera: pin control changes cleanup for 8916"

parents 0c5fc904 7659c61c
Loading
Loading
Loading
Loading
+12 −39
Original line number Diff line number Diff line
@@ -650,23 +650,25 @@ static int msm_cci_subdev_g_chip_ident(struct v4l2_subdev *sd,
static int32_t msm_cci_pinctrl_init(struct cci_device *cci_dev)
{
	struct msm_pinctrl_info *cci_pctrl = NULL;
	cci_pctrl = &cci_dev->cci_pinctrl;

	cci_pctrl = &cci_dev->cci_pinctrl;
	cci_pctrl->pinctrl = devm_pinctrl_get(&cci_dev->pdev->dev);
	if (IS_ERR_OR_NULL(cci_pctrl->pinctrl)) {
		pr_err("%s:%d devm_pinctrl_get cci_pinctrl failed\n",
			__func__, __LINE__);
		return -EINVAL;
	}
	cci_pctrl->gpio_state_active =
	pinctrl_lookup_state(cci_pctrl->pinctrl, CCI_PINCTRL_STATE_DEFAULT);
	cci_pctrl->gpio_state_active = pinctrl_lookup_state(
						cci_pctrl->pinctrl,
						CCI_PINCTRL_STATE_DEFAULT);
	if (IS_ERR_OR_NULL(cci_pctrl->gpio_state_active)) {
		pr_err("%s:%d look up state  for active state failed\n",
			__func__, __LINE__);
		return -EINVAL;
	}
	cci_pctrl->gpio_state_suspend
	= pinctrl_lookup_state(cci_pctrl->pinctrl, CCI_PINCTRL_STATE_SLEEP);
	cci_pctrl->gpio_state_suspend = pinctrl_lookup_state(
						cci_pctrl->pinctrl,
						CCI_PINCTRL_STATE_SLEEP);
	if (IS_ERR_OR_NULL(cci_pctrl->gpio_state_suspend)) {
		pr_err("%s:%d look up state for suspend state failed\n",
			__func__, __LINE__);
@@ -684,14 +686,12 @@ static int32_t msm_cci_init(struct v4l2_subdev *sd,
	enum cci_i2c_master_t master;

	cci_dev = v4l2_get_subdevdata(sd);

	if (!cci_dev || !c_ctrl) {
		pr_err("%s:%d failed: invalid params %p %p\n", __func__,
			__LINE__, cci_dev, c_ctrl);
		rc = -ENOMEM;
		return rc;
	}

	if (cci_dev->ref_count++) {
		CDBG("%s ref_count %d\n", __func__, cci_dev->ref_count);
		master = c_ctrl->cci_info->cci_i2c_master;
@@ -719,38 +719,28 @@ static int32_t msm_cci_init(struct v4l2_subdev *sd,
		}
		return 0;
	}

	ret = msm_cci_pinctrl_init(cci_dev);

	if (ret < 0) {
		/*ignoring ret for backward compatibility*/
		/*need to check with a flag later*/
		pr_err("%s:%d Initialization of pinctrl failed\n",
				__func__, __LINE__);
		cci_dev->cci_pinctrl_status = 0;
	} else
	} else {
		cci_dev->cci_pinctrl_status = 1;

	}
	rc = msm_camera_request_gpio_table(cci_dev->cci_gpio_tbl,
		cci_dev->cci_gpio_tbl_size, 1);

	if (cci_dev->cci_pinctrl_status) {
		ret = pinctrl_select_state(cci_dev->cci_pinctrl.pinctrl,
				cci_dev->cci_pinctrl.gpio_state_active);
		if (ret) {
			/*ignoring ret for backward compatibility*/
			/*need to check with a flag later*/
		if (ret)
			pr_err("%s:%d cannot set pin to active state\n",
				__func__, __LINE__);
	}
	}

	if (rc < 0) {
		cci_dev->ref_count--;
		CDBG("%s: request gpio failed\n", __func__);
		goto request_gpio_failed;
	}

	rc = msm_cam_clk_enable(&cci_dev->pdev->dev, cci_clk_info,
		cci_dev->cci_clk, cci_dev->num_clk, 1);
	if (rc < 0) {
@@ -758,7 +748,6 @@ static int32_t msm_cci_init(struct v4l2_subdev *sd,
		CDBG("%s: clk enable failed\n", __func__);
		goto clk_enable_failed;
	}

	enable_irq(cci_dev->irq->start);
	cci_dev->hw_version = msm_camera_io_r(cci_dev->base +
		CCI_HW_VERSION_ADDR);
@@ -777,7 +766,6 @@ static int32_t msm_cci_init(struct v4l2_subdev *sd,
			rc = -ETIMEDOUT;
		goto reset_complete_failed;
	}

	for (i = 0; i < MASTER_MAX; i++)
		cci_dev->master_clk_init[i] = 0;
	msm_cci_set_clk_param(cci_dev, c_ctrl);
@@ -798,17 +786,12 @@ clk_enable_failed:
	if (cci_dev->cci_pinctrl_status) {
		ret = pinctrl_select_state(cci_dev->cci_pinctrl.pinctrl,
				cci_dev->cci_pinctrl.gpio_state_suspend);
		if (ret) {
			/*ignoring ret for backward compatibility*/
			/*need to check with a flag later*/
		if (ret)
			pr_err("%s:%d cannot set pin to suspend state\n",
				__func__, __LINE__);
	}
	}

	msm_camera_request_gpio_table(cci_dev->cci_gpio_tbl,
		cci_dev->cci_gpio_tbl_size, 0);

request_gpio_failed:
	cci_dev->ref_count--;
	return rc;
@@ -820,38 +803,28 @@ static int32_t msm_cci_release(struct v4l2_subdev *sd)
	struct cci_device *cci_dev;

	cci_dev = v4l2_get_subdevdata(sd);

	if (!cci_dev->ref_count || cci_dev->cci_state != CCI_STATE_ENABLED) {
		pr_err("%s invalid ref count %d / cci state %d\n",
			__func__, cci_dev->ref_count, cci_dev->cci_state);
		return -EINVAL;
	}

	if (--cci_dev->ref_count) {
		CDBG("%s ref_count Exit %d\n", __func__, cci_dev->ref_count);
		return 0;
	}

	disable_irq(cci_dev->irq->start);

	msm_cam_clk_enable(&cci_dev->pdev->dev, cci_clk_info,
		cci_dev->cci_clk, cci_dev->num_clk, 0);

	if (cci_dev->cci_pinctrl_status) {
		rc = pinctrl_select_state(cci_dev->cci_pinctrl.pinctrl,
				cci_dev->cci_pinctrl.gpio_state_suspend);
		if (rc) {
			/*ignoring ret for backward compatibility*/
			/*need to check with a flag later*/
		if (rc)
			pr_err("%s:%d cannot set pin to active state\n",
				__func__, __LINE__);
	}
	}

	cci_dev->cci_pinctrl_status = 0;
	msm_camera_request_gpio_table(cci_dev->cci_gpio_tbl,
		cci_dev->cci_gpio_tbl_size, 0);

	for (i = 0; i < MASTER_MAX; i++)
		cci_dev->master_clk_init[i] = 0;
	cci_dev->cci_state = CCI_STATE_DISABLED;
+0 −1
Original line number Diff line number Diff line
@@ -119,7 +119,6 @@ enum msm_cci_state_t {
	CCI_STATE_DISABLED,
};


struct cci_device {
	struct platform_device *pdev;
	struct msm_sd_subdev msm_sd;
+8 −42
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@

#define CAM_SENSOR_PINCTRL_STATE_SLEEP "cam_suspend"
#define CAM_SENSOR_PINCTRL_STATE_DEFAULT "cam_default"

/*#define CONFIG_MSM_CAMERA_DT_DEBUG*/
#undef CDBG
#ifdef CONFIG_MSM_CAMERA_DT_DEBUG
@@ -27,7 +26,6 @@
#define CDBG(fmt, args...) do { } while (0)
#endif


int msm_camera_fill_vreg_params(struct camera_vreg_t *cam_vreg,
	int num_vreg, struct msm_sensor_power_setting *power_setting,
	uint16_t power_setting_size)
@@ -980,11 +978,9 @@ static int msm_camera_disable_i2c_mux(struct msm_camera_i2c_conf *i2c_conf)
static int msm_camera_pinctrl_init(struct msm_camera_power_ctrl_t *ctrl)
{
	struct msm_pinctrl_info *sensor_pctrl = NULL;
	sensor_pctrl = &ctrl->pinctrl_info;

	dev_err(ctrl->dev, "camera device");
	sensor_pctrl = &ctrl->pinctrl_info;
	sensor_pctrl->pinctrl = devm_pinctrl_get(ctrl->dev);

	if (IS_ERR_OR_NULL(sensor_pctrl->pinctrl)) {
		pr_err("%s:%d Getting pinctrl handle failed\n",
			__func__, __LINE__);
@@ -993,24 +989,19 @@ static int msm_camera_pinctrl_init(struct msm_camera_power_ctrl_t *ctrl)
	sensor_pctrl->gpio_state_active =
		pinctrl_lookup_state(sensor_pctrl->pinctrl,
				CAM_SENSOR_PINCTRL_STATE_DEFAULT);

	if (IS_ERR_OR_NULL(sensor_pctrl->gpio_state_active)) {
		pr_err("%s:%d Failed to get the active state pinctrl handle\n",
			__func__, __LINE__);
		return -EINVAL;
	}

	sensor_pctrl->gpio_state_suspend
		= pinctrl_lookup_state(sensor_pctrl->pinctrl,
				CAM_SENSOR_PINCTRL_STATE_SLEEP);


	if (IS_ERR_OR_NULL(sensor_pctrl->gpio_state_suspend)) {
		pr_err("%s:%d Failed to get the suspend state pinctrl handle\n",
				__func__, __LINE__);
		return -EINVAL;
	}

	return 0;
}

@@ -1034,35 +1025,26 @@ int msm_camera_power_up(struct msm_camera_power_ctrl_t *ctrl,
			ctrl->gpio_conf->cam_gpiomux_conf_tbl,
			ctrl->gpio_conf->cam_gpiomux_conf_tbl_size);
	}

	ret = msm_camera_pinctrl_init(ctrl);
	if (ret < 0) {
		/*ignoring ret for backward compatibility*/
		/*need to check with a flag later*/
		pr_err("%s:%d Initialization of pinctrl failed\n",
				__func__, __LINE__);
		ctrl->cam_pinctrl_status = 0;
	} else
	} else {
		ctrl->cam_pinctrl_status = 1;

	}
	rc = msm_camera_request_gpio_table(
		ctrl->gpio_conf->cam_gpio_req_tbl,
		ctrl->gpio_conf->cam_gpio_req_tbl_size, 1);

	if (rc < 0)
		no_gpio = rc;

	if (ctrl->cam_pinctrl_status) {
		ret = pinctrl_select_state(ctrl->pinctrl_info.pinctrl,
			ctrl->pinctrl_info.gpio_state_active);
		if (ret) {
			/*ignoring ret for backward compatibility*/
			/*need to check with a flag later*/
		if (ret)
			pr_err("%s:%d cannot set pin to active state",
				__func__, __LINE__);
	}
	}

	for (index = 0; index < ctrl->power_setting_size; index++) {
		CDBG("%s index %d\n", __func__, index);
		power_setting = &ctrl->power_setting[index];
@@ -1175,7 +1157,6 @@ power_up_failed:
			gpio_set_value_cansleep(
				ctrl->gpio_conf->gpio_num_info->gpio_num
				[power_setting->seq_val], GPIOF_OUT_INIT_LOW);

			break;
		case SENSOR_VREG:
			msm_camera_config_single_vreg(ctrl->dev,
@@ -1199,24 +1180,17 @@ power_up_failed:
				(power_setting->delay * 1000) + 1000);
		}
	}

	if (ctrl->cam_pinctrl_status) {
		pr_err("calling suspend state power-up-failed ravi\n");
		ret = pinctrl_select_state(ctrl->pinctrl_info.pinctrl,
				ctrl->pinctrl_info.gpio_state_suspend);
		if (ret) {
			/*ignoring ret for backward compatibilit*/
			/*need to check with a flag later*/
		if (ret)
			pr_err("%s:%d cannot set pin to suspend state\n",
				__func__, __LINE__);
	}
	}
	ctrl->cam_pinctrl_status = 0;

	msm_camera_request_gpio_table(
		ctrl->gpio_conf->cam_gpio_req_tbl,
		ctrl->gpio_conf->cam_gpio_req_tbl_size, 0);

	return rc;
}

@@ -1254,7 +1228,6 @@ int msm_camera_power_down(struct msm_camera_power_ctrl_t *ctrl,
			sensor_i2c_client);
		return -EINVAL;
	}

	if (device_type == MSM_CAMERA_PLATFORM_DEVICE)
		sensor_i2c_client->i2c_func_tbl->i2c_util(
			sensor_i2c_client, MSM_CCI_RELEASE);
@@ -1334,24 +1307,17 @@ int msm_camera_power_down(struct msm_camera_power_ctrl_t *ctrl,
				(pd->delay * 1000) + 1000);
		}
	}

	if (ctrl->cam_pinctrl_status) {
		pr_err("calling suspend state power-down ravi\n");
		ret = pinctrl_select_state(ctrl->pinctrl_info.pinctrl,
				ctrl->pinctrl_info.gpio_state_suspend);
		if (ret) {
			/*ignoring ret for backward compatibility*/
			/*need to check with a flag later*/
		if (ret)
			pr_err("%s:%d cannot set pin to suspend state",
				__func__, __LINE__);
	}
	}
	ctrl->cam_pinctrl_status = 0;

	msm_camera_request_gpio_table(
		ctrl->gpio_conf->cam_gpio_req_tbl,
		ctrl->gpio_conf->cam_gpio_req_tbl_size, 0);

	CDBG("%s exit\n", __func__);
	return 0;
}