summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorTony Truong <truong@codeaurora.org>2015-11-10 17:28:42 -0800
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 21:24:46 -0700
commitdd91a9a03a6e592ccaa774f90a43d93a84cce0ad (patch)
tree44db7bcc357fc9dbe2dc5f1bd03f158b78c7ffac /drivers
parentd3d1144ee507880a2325f13615dc32a2f599a202 (diff)
mhi: core: Reorder channel initialization sequence
Enable the local bounce buffer list before the device channel initialization sequence. Change-Id: Ia87698dc83807727f6897356bf9b23f123c53851 Signed-off-by: Andrei Danaila <adanaila@codeaurora.org> Signed-off-by: Tony Truong <truong@codeaurora.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/platform/msm/mhi/mhi_main.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/platform/msm/mhi/mhi_main.c b/drivers/platform/msm/mhi/mhi_main.c
index 4ea80fcf4d0e..099b7b19c3af 100644
--- a/drivers/platform/msm/mhi/mhi_main.c
+++ b/drivers/platform/msm/mhi/mhi_main.c
@@ -293,6 +293,13 @@ enum MHI_STATUS mhi_open_channel(struct mhi_client_handle *client_handle)
chan, mhi_dev_ctxt->dev_exec_env);
return MHI_STATUS_DEVICE_NOT_READY;
}
+ r = populate_tre_ring(client_handle);
+ if (r) {
+ mhi_log(MHI_MSG_ERROR,
+ "Failed to initialize tre ring chan %d ret %d\n",
+ chan, r);
+ return r;
+ }
client_handle->event_ring_index =
mhi_dev_ctxt->dev_space.ring_ctxt.
cc_list[chan].mhi_event_ring_index;
@@ -302,14 +309,7 @@ enum MHI_STATUS mhi_open_channel(struct mhi_client_handle *client_handle)
mhi_log(MHI_MSG_ERROR,
"Failed to initialize bb ctxt chan %d ret %d\n",
chan, r);
- return r;
- }
- r = populate_tre_ring(client_handle);
- if (r) {
- mhi_log(MHI_MSG_ERROR,
- "Failed to initialize tre ring chan %d ret %d\n",
- chan, r);
- return r;
+ return MHI_STATUS_ERROR;
}
client_handle->msi_vec =
@@ -423,6 +423,7 @@ void mhi_close_channel(struct mhi_client_handle *client_handle)
}
mhi_log(MHI_MSG_INFO, "Freeing ring for chan 0x%x\n", chan);
+ free_tre_ring(client_handle);
mhi_log(MHI_MSG_INFO, "Chan 0x%x confirmed closed.\n", chan);
client_handle->chan_status = 0;
}