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

Commit 412a92fa authored by Amandeep Singh's avatar Amandeep Singh
Browse files

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: default avatarAmandeep Singh <amansing@codeaurora.org>
parent a08ceb35
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -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)
{
	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);
	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)
@@ -650,15 +650,15 @@ static void qcn_sdio_rw_work(struct work_struct *work)
	struct sdio_al_channel_handle *ch_handle = NULL;

	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)) {
			spin_unlock(&sdio_ctxt->lock_wait_q);
			spin_unlock_bh(&sdio_ctxt->lock_wait_q);
			break;
		}
		rw_req = list_first_entry(&sdio_ctxt->rw_wait_q,
						struct qcn_sdio_rw_info, 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) {
			ret = qcn_sdio_recv_buff(rw_req->cid, rw_req->buf,