msm : sdio: zero mailbox memory before reading it
This will prevent a case where sdio_al process old
mailbox info.
CRs-fixed: 298290
Signed-off-by: Maya Erez <merez@codeaurora.org>
diff --git a/arch/arm/mach-msm/sdio_al.c b/arch/arm/mach-msm/sdio_al.c
index 09e5027..cd4311a 100644
--- a/arch/arm/mach-msm/sdio_al.c
+++ b/arch/arm/mach-msm/sdio_al.c
@@ -815,9 +815,19 @@
, __func__, from_isr, sdio_al_dev->card->host->index);
pr_debug(MODULE_NAME ":before sdio_memcpy_fromio.\n");
+ memset(mailbox, 0, sizeof(struct sdio_mailbox));
ret = sdio_memcpy_fromio(func1, mailbox,
HW_MAILBOX_ADDR, sizeof(*mailbox));
pr_debug(MODULE_NAME ":after sdio_memcpy_fromio.\n");
+ if (ret) {
+ pr_err(MODULE_NAME ":Fail to read Mailbox for card %d,"
+ " goto error state\n",
+ sdio_al_dev->card->host->index);
+ sdio_al_get_into_err_state(sdio_al_dev);
+ /* Stop the timer to stop reading the mailbox */
+ sdio_al_dev->poll_delay_msec = 0;
+ goto exit_err;
+ }
eot_pipe = (mailbox->eot_pipe_0_7) |
(mailbox->eot_pipe_8_15<<8);
@@ -832,16 +842,6 @@
(mailbox->mask_thresh_above_limit_pipe_0_7) |
(mailbox->mask_thresh_above_limit_pipe_8_15<<8);
- if (ret) {
- pr_err(MODULE_NAME ":Fail to read Mailbox for card %d,"
- " goto error state\n",
- sdio_al_dev->card->host->index);
- sdio_al_get_into_err_state(sdio_al_dev);
- /* Stop the timer to stop reading the mailbox */
- sdio_al_dev->poll_delay_msec = 0;
- goto exit_err;
- }
-
if (overflow_pipe || underflow_pipe)
pr_err(MODULE_NAME ":Mailbox ERROR "
"overflow=0x%x, underflow=0x%x\n",