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

Commit d76689e4 authored by Jeff Skirvin's avatar Jeff Skirvin Committed by Dan Williams
Browse files

isci: Fix RNC suspend call for SCI_RESUMING state.



Instead of immediately transitioning to the SCI_RNC_AWAIT_SUSPENSION
state, handle the SCI_RNC_RESUMING suspend transition from the
SCI_RNC_READY state like the SCI_RNC_INVALIDATING --> SCI_RNC_POSTING
transitions do now, by setting the destination state for the entry
into the READY state.

Signed-off-by: default avatarJeff Skirvin <jeffrey.d.skirvin@intel.com>
Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
parent 621120ca
Loading
Loading
Loading
Loading
+4 −8
Original line number Diff line number Diff line
@@ -321,8 +321,6 @@ static void sci_remote_node_context_ready_state_enter(struct sci_base_state_mach
{
	struct sci_remote_node_context *rnc = container_of(sm, typeof(*rnc), sm);
	enum sci_remote_node_context_destination_state dest_select;
	scics_sds_remote_node_context_callback usr_cb = rnc->user_callback;
	void *usr_param = rnc->user_cookie;
	int tell_user = 1;

	dest_select = rnc->destination_state;
@@ -334,12 +332,10 @@ static void sci_remote_node_context_ready_state_enter(struct sci_base_state_mach
			rnc, rnc->suspend_reason,
			SCI_SOFTWARE_SUSPEND_EXPECTED_EVENT);

		if (dest_select == RNC_DEST_SUSPENDED_RESUME) {
			sci_remote_node_context_resume(rnc, usr_cb, usr_param);
		if (dest_select == RNC_DEST_SUSPENDED_RESUME)
			tell_user = 0;  /* Wait until ready again. */
	}
	}
	if (tell_user && rnc->user_callback)
	if (tell_user)
		sci_remote_node_context_notify_user(rnc);
}

@@ -584,8 +580,6 @@ enum sci_status sci_remote_node_context_suspend(
		dest_param = sci_rnc->destination_state;

	switch (state) {
	case SCI_RNC_RESUMING:
		break;  /* The RNC has been posted, so start the suspend. */
	case SCI_RNC_READY:
		break;
	case SCI_RNC_INVALIDATING:
@@ -596,6 +590,8 @@ enum sci_status sci_remote_node_context_suspend(
			return SCI_FAILURE_INVALID_STATE;
		}
		/* Fall through and handle like SCI_RNC_POSTING */
	case SCI_RNC_RESUMING:
		/* Fall through and handle like SCI_RNC_POSTING */
	case SCI_RNC_POSTING:
		/* Set the destination state to AWAIT - this signals the
		 * entry into the SCI_RNC_READY state that a suspension