msm: qcn: Change spin_lock api to synchronize clients
Change spin_lock api to spin_lock_bh to provide synchronization between bottom halves and threads. Change-Id: Ia964796e3d91ebce60238ad110086ba06a1026c1 Signed-off-by: Amandeep Singh <amansing@codeaurora.org>
This commit is contained in:
parent
a08ceb359a
commit
412a92fa0f
1 changed files with 5 additions and 5 deletions
|
@ -188,10 +188,10 @@ static struct qcn_sdio_rw_info *qcn_sdio_alloc_rw_req(void)
|
||||||
|
|
||||||
static void qcn_sdio_add_rw_req(struct qcn_sdio_rw_info *rw_req)
|
static void qcn_sdio_add_rw_req(struct qcn_sdio_rw_info *rw_req)
|
||||||
{
|
{
|
||||||
spin_lock(&sdio_ctxt->lock_wait_q);
|
spin_lock_bh(&sdio_ctxt->lock_wait_q);
|
||||||
list_add_tail(&rw_req->list, &sdio_ctxt->rw_wait_q);
|
list_add_tail(&rw_req->list, &sdio_ctxt->rw_wait_q);
|
||||||
atomic_inc(&sdio_ctxt->wait_list_count);
|
atomic_inc(&sdio_ctxt->wait_list_count);
|
||||||
spin_unlock(&sdio_ctxt->lock_wait_q);
|
spin_unlock_bh(&sdio_ctxt->lock_wait_q);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int qcn_enable_async_irq(bool enable)
|
static int qcn_enable_async_irq(bool enable)
|
||||||
|
@ -650,15 +650,15 @@ static void qcn_sdio_rw_work(struct work_struct *work)
|
||||||
struct sdio_al_channel_handle *ch_handle = NULL;
|
struct sdio_al_channel_handle *ch_handle = NULL;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
spin_lock(&sdio_ctxt->lock_wait_q);
|
spin_lock_bh(&sdio_ctxt->lock_wait_q);
|
||||||
if (list_empty(&sdio_ctxt->rw_wait_q)) {
|
if (list_empty(&sdio_ctxt->rw_wait_q)) {
|
||||||
spin_unlock(&sdio_ctxt->lock_wait_q);
|
spin_unlock_bh(&sdio_ctxt->lock_wait_q);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
rw_req = list_first_entry(&sdio_ctxt->rw_wait_q,
|
rw_req = list_first_entry(&sdio_ctxt->rw_wait_q,
|
||||||
struct qcn_sdio_rw_info, list);
|
struct qcn_sdio_rw_info, list);
|
||||||
list_del(&rw_req->list);
|
list_del(&rw_req->list);
|
||||||
spin_unlock(&sdio_ctxt->lock_wait_q);
|
spin_unlock_bh(&sdio_ctxt->lock_wait_q);
|
||||||
|
|
||||||
if (rw_req->dir) {
|
if (rw_req->dir) {
|
||||||
ret = qcn_sdio_recv_buff(rw_req->cid, rw_req->buf,
|
ret = qcn_sdio_recv_buff(rw_req->cid, rw_req->buf,
|
||||||
|
|
Loading…
Add table
Reference in a new issue