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

Commit d6205204 authored by Sujeev Dias's avatar Sujeev Dias Committed by Gerrit - the friendly Code Review server
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 ce2d64b7
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -651,7 +651,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);
@@ -707,8 +706,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
@@ -181,7 +181,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,
@@ -1232,7 +1232,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,
@@ -1281,7 +1281,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
@@ -605,6 +605,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