Commit e6130aef authored by Ben Dooks's avatar Ben Dooks Committed by Linus Torvalds

s3cmci: fix direct write to interrupt mask

The clear_imask() call should be used to clear the interrupt mask
register, as it may end up clearing the SDIO interrupt bit if this is
enabled.

Change all writes of zero to SDIIMSK register to use clear_imask() ready
for the SDIO updates.
Signed-off-by: default avatarBen Dooks <ben@simtec.co.uk>
Cc: <linux-mmc@vger.kernel.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 50d7fa9a
...@@ -681,9 +681,9 @@ static void s3cmci_dma_done_callback(struct s3c2410_dma_chan *dma_ch, ...@@ -681,9 +681,9 @@ static void s3cmci_dma_done_callback(struct s3c2410_dma_chan *dma_ch,
fail_request: fail_request:
host->mrq->data->error = -EINVAL; host->mrq->data->error = -EINVAL;
host->complete_what = COMPLETION_FINALIZE; host->complete_what = COMPLETION_FINALIZE;
writel(0, host->base + host->sdiimsk); clear_imask(host);
goto out;
goto out;
} }
static void finalize_request(struct s3cmci_host *host) static void finalize_request(struct s3cmci_host *host)
...@@ -726,7 +726,7 @@ static void finalize_request(struct s3cmci_host *host) ...@@ -726,7 +726,7 @@ static void finalize_request(struct s3cmci_host *host)
writel(0, host->base + S3C2410_SDICMDARG); writel(0, host->base + S3C2410_SDICMDARG);
writel(S3C2410_SDIDCON_STOP, host->base + S3C2410_SDIDCON); writel(S3C2410_SDIDCON_STOP, host->base + S3C2410_SDIDCON);
writel(0, host->base + S3C2410_SDICMDCON); writel(0, host->base + S3C2410_SDICMDCON);
writel(0, host->base + host->sdiimsk); clear_imask(host);
if (cmd->data && cmd->error) if (cmd->data && cmd->error)
cmd->data->error = cmd->error; cmd->data->error = cmd->error;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment