mirror of
https://github.com/torvalds/linux.git
synced 2026-07-31 11:37:06 +02:00
bus: mhi: host: Add update transfer state APIs
Add update transfer state APIs and do not check for channel state in the channel context as device can update it once MHI master reset has taken place. Instead, rely on local channel and PM states prior to sending any channel update commands. Change-Id: Ib3416323e0f1b01ff37c9bd176e72daa4dea9d8d Signed-off-by: Bhaumik Bhatt <quic_bbhatt@quicinc.com> Signed-off-by: Lazarus Motha <quic_lmotha@quicinc.com>
This commit is contained in:
parent
ba41ac151c
commit
48799e0f4d
|
|
@ -1763,6 +1763,47 @@ void mhi_unprepare_from_transfer(struct mhi_device *mhi_dev)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(mhi_unprepare_from_transfer);
|
||||
|
||||
static int mhi_update_transfer_state(struct mhi_device *mhi_dev,
|
||||
enum mhi_ch_state_type to_state)
|
||||
{
|
||||
struct mhi_controller *mhi_cntrl = mhi_dev->mhi_cntrl;
|
||||
struct mhi_chan *mhi_chan;
|
||||
int dir, ret;
|
||||
|
||||
for (dir = 0; dir < 2; dir++) {
|
||||
mhi_chan = dir ? mhi_dev->ul_chan : mhi_dev->dl_chan;
|
||||
|
||||
if (!mhi_chan)
|
||||
continue;
|
||||
|
||||
/*
|
||||
* Bail out if one of the channels fails as client will reset
|
||||
* both upon failure
|
||||
*/
|
||||
mutex_lock(&mhi_chan->mutex);
|
||||
ret = mhi_update_channel_state(mhi_cntrl, mhi_chan, to_state);
|
||||
if (ret) {
|
||||
mutex_unlock(&mhi_chan->mutex);
|
||||
return ret;
|
||||
}
|
||||
mutex_unlock(&mhi_chan->mutex);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mhi_stop_transfer(struct mhi_device *mhi_dev)
|
||||
{
|
||||
return mhi_update_transfer_state(mhi_dev, MHI_CH_STATE_TYPE_STOP);
|
||||
}
|
||||
EXPORT_SYMBOL(mhi_stop_transfer);
|
||||
|
||||
int mhi_start_transfer(struct mhi_device *mhi_dev)
|
||||
{
|
||||
return mhi_update_transfer_state(mhi_dev, MHI_CH_STATE_TYPE_START);
|
||||
}
|
||||
EXPORT_SYMBOL(mhi_start_transfer);
|
||||
|
||||
int mhi_poll(struct mhi_device *mhi_dev, u32 budget)
|
||||
{
|
||||
struct mhi_controller *mhi_cntrl = mhi_dev->mhi_cntrl;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user