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

Commit 383f0f89 authored by Arun KS's avatar Arun KS
Browse files

esoc: mdm-4x: Separate out callback function for 9x45



Reset and power off timing is different. Hence need a
separate callback function.

Change-Id: I9714a4449b1fbeab84017da4be17f5ca2cb6cab6
Signed-off-by: default avatarArun KS <arunks@codeaurora.org>
parent 6e878faf
Loading
Loading
Loading
Loading
+45 −2
Original line number Diff line number Diff line
@@ -60,6 +60,29 @@ static int mdm9x55_toggle_soft_reset(struct mdm_ctrl *mdm, bool atomic)
	return 0;
}

/* This function can be called from atomic context. */
static int mdm9x45_toggle_soft_reset(struct mdm_ctrl *mdm, bool atomic)
{
	int soft_reset_direction_assert = 0,
	    soft_reset_direction_de_assert = 1;

	if (mdm->soft_reset_inverted) {
		soft_reset_direction_assert = 1;
		soft_reset_direction_de_assert = 0;
	}
	gpio_direction_output(MDM_GPIO(mdm, AP2MDM_SOFT_RESET),
			soft_reset_direction_assert);
	/*
	 * Allow PS hold assert to be detected
	 */
	if (!atomic)
		usleep_range(1000000, 1005000);
	else
		mdelay(1000);
	gpio_direction_output(MDM_GPIO(mdm, AP2MDM_SOFT_RESET),
			soft_reset_direction_de_assert);
	return 0;
}

static int mdm4x_do_first_power_on(struct mdm_ctrl *mdm)
{
@@ -135,6 +158,26 @@ static int mdm9x55_power_down(struct mdm_ctrl *mdm)
	return 0;
}

static int mdm9x45_power_down(struct mdm_ctrl *mdm)
{
	int soft_reset_direction_assert = 0,
	    soft_reset_direction_de_assert = 1;

	if (mdm->soft_reset_inverted) {
		soft_reset_direction_assert = 1;
		soft_reset_direction_de_assert = 0;
	}
	gpio_direction_output(MDM_GPIO(mdm, AP2MDM_SOFT_RESET),
			soft_reset_direction_assert);
	/*
	 * Allow PS hold assert to be detected
	 */
	msleep(3003);
	gpio_direction_output(MDM_GPIO(mdm, AP2MDM_SOFT_RESET),
			soft_reset_direction_de_assert);
	return 0;
}

static void mdm4x_cold_reset(struct mdm_ctrl *mdm)
{
	if (!gpio_is_valid(MDM_GPIO(mdm, AP2MDM_SOFT_RESET)))
@@ -229,8 +272,8 @@ struct mdm_pon_ops mdm9x35_pon_ops = {

struct mdm_pon_ops mdm9x45_pon_ops = {
	.pon = mdm4x_do_first_power_on,
	.soft_reset = mdm4x_toggle_soft_reset,
	.poff_force = mdm4x_power_down,
	.soft_reset = mdm9x45_toggle_soft_reset,
	.poff_force = mdm9x45_power_down,
	.cold_reset = mdm4x_cold_reset,
	.dt_init = mdm4x_pon_dt_init,
	.setup = mdm4x_pon_setup,