Merge "esoc: mdm-4x: Separate out callback function for 9x45"
This commit is contained in:
commit
9b50e3d6ba
1 changed files with 45 additions and 2 deletions
|
@ -60,6 +60,29 @@ static int mdm9x55_toggle_soft_reset(struct mdm_ctrl *mdm, bool atomic)
|
||||||
return 0;
|
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)
|
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;
|
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)
|
static void mdm4x_cold_reset(struct mdm_ctrl *mdm)
|
||||||
{
|
{
|
||||||
if (!gpio_is_valid(MDM_GPIO(mdm, AP2MDM_SOFT_RESET)))
|
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 = {
|
struct mdm_pon_ops mdm9x45_pon_ops = {
|
||||||
.pon = mdm4x_do_first_power_on,
|
.pon = mdm4x_do_first_power_on,
|
||||||
.soft_reset = mdm4x_toggle_soft_reset,
|
.soft_reset = mdm9x45_toggle_soft_reset,
|
||||||
.poff_force = mdm4x_power_down,
|
.poff_force = mdm9x45_power_down,
|
||||||
.cold_reset = mdm4x_cold_reset,
|
.cold_reset = mdm4x_cold_reset,
|
||||||
.dt_init = mdm4x_pon_dt_init,
|
.dt_init = mdm4x_pon_dt_init,
|
||||||
.setup = mdm4x_pon_setup,
|
.setup = mdm4x_pon_setup,
|
||||||
|
|
Loading…
Add table
Reference in a new issue