Commit aa1a0e93 authored by Vivek Pernamitta's avatar Vivek Pernamitta Committed by Manivannan Sadhasivam
Browse files

bus: mhi: core: Improve mhi_sync_power_up handling for SYS_ERR state



Allow mhi_sync_power_up to handle SYS_ERR during power-up, reboot,
or recovery. This is to avoid premature exit when MHI_PM_IN_ERROR_STATE is
observed during above mentioned system states.

To achieve this, treat SYS_ERR as a valid state and let its handler process
the error and queue the next transition to Mission Mode instead of aborting
early.

Signed-off-by: default avatarVivek Pernamitta <quic_vpernami@quicinc.com>
[mani: reworded description]
Signed-off-by: default avatarManivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
Link: https://patch.msgid.link/20250912-uevent_vdev_next-20250911-v4-5-fa2f6ccd301b@quicinc.com
parent 12543f44
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -170,6 +170,8 @@ enum mhi_pm_state {
							MHI_PM_IN_ERROR_STATE(pm_state))
#define MHI_PM_IN_SUSPEND_STATE(pm_state)		(pm_state & \
							(MHI_PM_M3_ENTER | MHI_PM_M3))
#define MHI_PM_FATAL_ERROR(pm_state)			((pm_state == MHI_PM_FW_DL_ERR) || \
							(pm_state >= MHI_PM_SYS_ERR_FAIL))

#define NR_OF_CMD_RINGS					1
#define CMD_EL_PER_RING					128
+1 −1
Original line number Diff line number Diff line
@@ -1287,7 +1287,7 @@ int mhi_sync_power_up(struct mhi_controller *mhi_cntrl)
		mhi_cntrl->ready_timeout_ms : mhi_cntrl->timeout_ms;
	wait_event_timeout(mhi_cntrl->state_event,
			   MHI_IN_MISSION_MODE(mhi_cntrl->ee) ||
			   MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state),
			   MHI_PM_FATAL_ERROR(mhi_cntrl->pm_state),
			   msecs_to_jiffies(timeout_ms));

	ret = (MHI_IN_MISSION_MODE(mhi_cntrl->ee)) ? 0 : -ETIMEDOUT;