Skip to content

Commit

Permalink
MMC: Fix S3C24XX IRQ enable during PIO transfers
Browse files Browse the repository at this point in the history
Fix Bug #677 - I/O errors on heavy microSD writes for 2.6.22.x.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
  • Loading branch information
Roman Moracik authored and Pierre Ossman committed Jul 15, 2008
1 parent bdbc9c3 commit d643b5f
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions drivers/mmc/host/s3cmci.c
Original file line number Diff line number Diff line change
Expand Up @@ -335,6 +335,8 @@ static void pio_tasklet(unsigned long data)
struct s3cmci_host *host = (struct s3cmci_host *) data;


disable_irq(host->irq);

if (host->pio_active == XFER_WRITE)
do_pio_write(host);

Expand All @@ -352,9 +354,9 @@ static void pio_tasklet(unsigned long data)
host->mrq->data->error = -EINVAL;
}

disable_irq(host->irq);
finalize_request(host);
}
} else
enable_irq(host->irq);
}

/*
Expand Down Expand Up @@ -630,7 +632,6 @@ void s3cmci_dma_done_callback(struct s3c2410_dma_chan *dma_ch, void *buf_id,
spin_unlock_irqrestore(&host->complete_lock, iflags);
return;


fail_request:
host->mrq->data->error = -EINVAL;
host->complete_what = COMPLETION_FINALIZE;
Expand Down

0 comments on commit d643b5f

Please sign in to comment.