diff options
| author | Amandeep Singh <amansing@codeaurora.org> | 2019-06-24 13:54:00 +0530 |
|---|---|---|
| committer | Amandeep Singh <amansing@codeaurora.org> | 2019-09-03 11:05:57 +0530 |
| commit | bec7c9d8a8003c02f0004ddc52713f3e5b1999a1 (patch) | |
| tree | 8509a198ba71b14a3dc5fb8e8d51af500c1ff9d4 /drivers/platform | |
| parent | e4f6d17190c3c460d10cfe2afc76c266406f60a1 (diff) | |
msm: qcn: Update read/write APIs
Update read/write API in QCN sdio core driver to issue CMD53
instead of CMD52 for data equal or greater than 4 bytes.
Change-Id: I5641f32fa8896d3fafb087b440ff69ad936a83ee
Signed-off-by: Amandeep Singh <amansing@codeaurora.org>
Diffstat (limited to 'drivers/platform')
| -rw-r--r-- | drivers/platform/msm/qcn/qcn_sdio.c | 42 |
1 files changed, 28 insertions, 14 deletions
diff --git a/drivers/platform/msm/qcn/qcn_sdio.c b/drivers/platform/msm/qcn/qcn_sdio.c index 6a1b409a9e36..f8143d334ec2 100644 --- a/drivers/platform/msm/qcn/qcn_sdio.c +++ b/drivers/platform/msm/qcn/qcn_sdio.c @@ -202,11 +202,16 @@ static int qcn_send_meta_info(u8 event, u32 data) value = META_INFO(event, data); sdio_claim_host(sdio_ctxt->func); - for (i = 0; i < 4; i++) { - temp = (u8)((value >> (i * 8)) & 0x000000FF); - sdio_writeb(sdio_ctxt->func, temp, (SDIO_QCN_HRQ_PUSH + i), - &ret); + if (sdio_ctxt->curr_sw_mode < QCN_SDIO_SW_SBL) { + for (i = 0; i < 4; i++) { + temp = (u8)((value >> (i * 8)) & 0x000000FF); + sdio_writeb(sdio_ctxt->func, temp, + (SDIO_QCN_HRQ_PUSH + i), &ret); + } + } else { + sdio_writel(sdio_ctxt->func, value, SDIO_QCN_HRQ_PUSH, &ret); } + sdio_release_host(sdio_ctxt->func); return ret; @@ -224,12 +229,17 @@ static int qcn_read_crq_info(void) struct sdio_al_channel_handle *ch_handle = NULL; sdio_claim_host(sdio_ctxt->func); - for (i = 0; i < 4; i++) { - temp = sdio_readb(sdio_ctxt->func, (SDIO_QCN_CRQ_PULL + i), - &ret); - temp = temp << (i * 8); - data |= temp; + if (sdio_ctxt->curr_sw_mode < QCN_SDIO_SW_SBL) { + for (i = 0; i < 4; i++) { + temp = sdio_readb(sdio_ctxt->func, + (SDIO_QCN_CRQ_PULL + i), &ret); + temp = temp << (i * 8); + data |= temp; + } + } else { + data = sdio_readl(sdio_ctxt->func, SDIO_QCN_CRQ_PULL, &ret); } + sdio_release_host(sdio_ctxt->func); if (ret) return ret; @@ -434,11 +444,15 @@ static int qcn_read_meta_info(void) sdio_claim_host(sdio_ctxt->func); - for (i = 0; i < 4; i++) { - temp = sdio_readb(sdio_ctxt->func, (SDIO_QCN_LOCAL_INFO + i), - &ret); - temp = temp << (i * 8); - data |= temp; + if (sdio_ctxt->curr_sw_mode < QCN_SDIO_SW_SBL) { + for (i = 0; i < 4; i++) { + temp = sdio_readb(sdio_ctxt->func, + (SDIO_QCN_LOCAL_INFO + i), &ret); + temp = temp << (i * 8); + data |= temp; + } + } else { + data = sdio_readl(sdio_ctxt->func, SDIO_QCN_LOCAL_INFO, &ret); } sdio_writeb(sdio_ctxt->func, (u8)SDIO_QCN_IRQ_CLR_LOCAL_MASK, |
