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

Commit 165de74e authored by Sujeev Dias's avatar Sujeev Dias
Browse files

mhi: core: allow MHI control driver to set MHI device state



For control specific use cases, allow MHI control driver
to program MHI device state.

CRs-Fixed: 2347210
Change-Id: I55eb28513cd7787408963224b44892f91d2525b6
Signed-off-by: default avatarSujeev Dias <sdias@codeaurora.org>
parent 12d92292
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -655,7 +655,6 @@ const char *to_mhi_pm_state_str(enum MHI_PM_STATE state);
void mhi_reset_chan(struct mhi_controller *mhi_cntrl,
		    struct mhi_chan *mhi_chan);
enum mhi_ee mhi_get_exec_env(struct mhi_controller *mhi_cntrl);
enum mhi_dev_state mhi_get_m_state(struct mhi_controller *mhi_cntrl);
int mhi_queue_state_transition(struct mhi_controller *mhi_cntrl,
			       enum MHI_ST_TRANSITION state);
void mhi_pm_st_worker(struct work_struct *work);
@@ -711,8 +710,6 @@ void mhi_write_db(struct mhi_controller *mhi_cntrl, void __iomem *db_addr,
void mhi_ring_cmd_db(struct mhi_controller *mhi_cntrl, struct mhi_cmd *mhi_cmd);
void mhi_ring_chan_db(struct mhi_controller *mhi_cntrl,
		      struct mhi_chan *mhi_chan);
void mhi_set_mhi_state(struct mhi_controller *mhi_cntrl,
		       enum mhi_dev_state state);
int mhi_get_capability_offset(struct mhi_controller *mhi_cntrl, u32 capability,
			      u32 *offset);
int mhi_init_timesync(struct mhi_controller *mhi_cntrl);
+3 −3
Original line number Diff line number Diff line
@@ -190,7 +190,7 @@ enum mhi_ee mhi_get_exec_env(struct mhi_controller *mhi_cntrl)
	return (ret) ? MHI_EE_MAX : exec;
}

enum mhi_dev_state mhi_get_m_state(struct mhi_controller *mhi_cntrl)
enum mhi_dev_state mhi_get_mhi_state(struct mhi_controller *mhi_cntrl)
{
	u32 state;
	int ret = mhi_read_reg_field(mhi_cntrl, mhi_cntrl->regs, MHISTATUS,
@@ -1241,7 +1241,7 @@ void mhi_ctrl_ev_task(unsigned long data)
	if (!ret) {
		write_lock_irq(&mhi_cntrl->pm_lock);
		if (MHI_REG_ACCESS_VALID(mhi_cntrl->pm_state))
			state = mhi_get_m_state(mhi_cntrl);
			state = mhi_get_mhi_state(mhi_cntrl);
		if (state == MHI_STATE_SYS_ERR) {
			MHI_ERR("MHI system error detected\n");
			pm_state = mhi_tryset_pm_state(mhi_cntrl,
@@ -1290,7 +1290,7 @@ irqreturn_t mhi_intvec_threaded_handlr(int irq_number, void *dev)

	write_lock_irq(&mhi_cntrl->pm_lock);
	if (MHI_REG_ACCESS_VALID(mhi_cntrl->pm_state))
		state = mhi_get_m_state(mhi_cntrl);
		state = mhi_get_mhi_state(mhi_cntrl);
	if (state == MHI_STATE_SYS_ERR) {
		MHI_ERR("MHI system error detected\n");
		pm_state = mhi_tryset_pm_state(mhi_cntrl,
+14 −0
Original line number Diff line number Diff line
@@ -611,6 +611,20 @@ int mhi_get_remote_time_sync(struct mhi_device *mhi_dev,
			     u64 *t_host,
			     u64 *t_dev);

/**
 * mhi_get_mhi_state - Return MHI state of device
 * @mhi_cntrl: MHI controller
 */
enum mhi_dev_state mhi_get_mhi_state(struct mhi_controller *mhi_cntrl);

/**
 * mhi_set_mhi_state - Set device state
 * @mhi_cntrl: MHI controller
 * @state: state to set
 */
void mhi_set_mhi_state(struct mhi_controller *mhi_cntrl,
		       enum mhi_dev_state state);

#ifndef CONFIG_ARCH_QCOM

#ifdef CONFIG_MHI_DEBUG