Loading drivers/esoc/esoc-mdm-pon.c +45 −2 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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))) Loading Loading @@ -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, Loading Loading
drivers/esoc/esoc-mdm-pon.c +45 −2 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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))) Loading Loading @@ -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, Loading