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

Commit 5906eec4 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: mhi_dev: Fix clearing control interrupt"

parents 9fb53bc5 f290216b
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -2459,6 +2459,14 @@ static int mhi_dev_cache_host_cfg(struct mhi_dev *mhi)
			(union mhi_dev_ring_ctx *)mhi->cmd_ctx_cache, mhi);
}

void mhi_dev_pm_relax(void)
{
	atomic_set(&mhi_ctx->mhi_dev_wake, 0);
	pm_relax(mhi_ctx->dev);
	mhi_log(MHI_MSG_VERBOSE, "releasing mhi wakelock\n");
}
EXPORT_SYMBOL(mhi_dev_pm_relax);

int mhi_dev_suspend(struct mhi_dev *mhi)
{
	int ch_id = 0, rc = 0;
@@ -2493,10 +2501,6 @@ int mhi_dev_suspend(struct mhi_dev *mhi)

	}

	atomic_set(&mhi->mhi_dev_wake, 0);
	pm_relax(mhi->dev);
	mhi_log(MHI_MSG_VERBOSE, "releasing mhi wakelock\n");

	mutex_unlock(&mhi_ctx->mhi_write_test);

	return rc;
+1 −0
Original line number Diff line number Diff line
@@ -1116,4 +1116,5 @@ void mhi_uci_chan_state_notify_all(struct mhi_dev *mhi,
void mhi_uci_chan_state_notify(struct mhi_dev *mhi,
		enum mhi_client_channel ch_id, enum mhi_ctrl_info ch_state);

void mhi_dev_pm_relax(void);
#endif /* _MHI_H */
+1 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@
#define MHI_CTRL_INT_CLEAR_A7				(0x004C)
#define MHI_CTRL_INT_CLEAR_A7_CLEAR_MASK		0xffffffff
#define MHI_CTRL_INT_CLEAR_A7_CLEAR_SHIFT		0x0
#define MHI_CTRL_INT_MMIO_WR_CLEAR			BIT(2)
#define MHI_CTRL_INT_CRDB_CLEAR				BIT(1)
#define MHI_CTRL_INT_CRDB_MHICTRL_CLEAR			BIT(0)

+2 −1
Original line number Diff line number Diff line
@@ -420,7 +420,8 @@ int mhi_dev_mmio_clear_interrupts(struct mhi_dev *dev)
				MHI_ERDB_INT_CLEAR_A7_n_CLEAR_MASK);

	mhi_dev_mmio_write(dev, MHI_CTRL_INT_CLEAR_A7,
					MHI_CTRL_INT_CRDB_CLEAR);
		(MHI_CTRL_INT_MMIO_WR_CLEAR | MHI_CTRL_INT_CRDB_CLEAR |
		MHI_CTRL_INT_CRDB_MHICTRL_CLEAR));

	return 0;
}
+1 −0
Original line number Diff line number Diff line
@@ -888,6 +888,7 @@ static void mhi_sm_dev_event_manager(struct work_struct *work)
		res = mhi_sm_prepare_suspend(MHI_DEV_M3_STATE);
		if (res)
			MHI_SM_ERR("Failed switching to M3 state\n");
		mhi_dev_pm_relax();
		break;
	case MHI_DEV_EVENT_HW_ACC_WAKEUP:
	case MHI_DEV_EVENT_CORE_WAKEUP: