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

Commit 45df8b54 authored by Raghavendra Rao Ananta's avatar Raghavendra Rao Ananta Committed by Rishabh Bhatnagar
Browse files

esoc: Introduce a higher level reset under boot fail action



Introduce a higher level of reset for the external modem
as a recovery mechanism. This would act as a more aggressive
way to recover the modem if the lower level of resets
didn't work for recovery.

Change-Id: I1cfc93da9cfe90cc6e3244330184d78a02f54c50
Signed-off-by: default avatarRaghavendra Rao Ananta <rananta@codeaurora.org>
parent c803632b
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ enum esoc_boot_fail_action {
	BOOT_FAIL_ACTION_SHUTDOWN,
	BOOT_FAIL_ACTION_PANIC,
	BOOT_FAIL_ACTION_NOP,
	BOOT_FAIL_ACTION_S3_RESET,
};

static unsigned int boot_fail_action = BOOT_FAIL_ACTION_NOP;
@@ -65,6 +66,8 @@ struct mdm_drv {
};
#define to_mdm_drv(d)	container_of(d, struct mdm_drv, cmd_eng)

#define S3_RESET_DELAY_MS	1000

static void esoc_client_link_power_off(struct esoc_clink *esoc_clink,
							unsigned int flags);
static void esoc_client_link_mdm_crash(struct esoc_clink *esoc_clink);
@@ -353,6 +356,14 @@ static int mdm_handle_boot_fail(struct esoc_clink *esoc_clink, u8 *pon_trial)
		(*pon_trial)++;
		mdm_power_down(mdm);
		break;
	case BOOT_FAIL_ACTION_S3_RESET:
		mdm_subsys_retry_powerup_cleanup(esoc_clink,
							ESOC_HOOK_MDM_DOWN);
		esoc_mdm_log("Doing an S3 reset\n");
		(*pon_trial)++;
		mdm_power_down(mdm);
		msleep(S3_RESET_DELAY_MS);
		break;
	case BOOT_FAIL_ACTION_PANIC:
		esoc_mdm_log("Calling panic!!\n");
		panic("Panic requested on external modem boot failure\n");