diff options
Diffstat (limited to 'arch/arm/plat-s3c64xx')
-rw-r--r-- | arch/arm/plat-s3c64xx/dma.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/arm/plat-s3c64xx/dma.c b/arch/arm/plat-s3c64xx/dma.c index 266a10745a85..6fa706f0f42a 100644 --- a/arch/arm/plat-s3c64xx/dma.c +++ b/arch/arm/plat-s3c64xx/dma.c | |||
@@ -339,6 +339,7 @@ int s3c2410_dma_enqueue(unsigned int channel, void *id, | |||
339 | struct s3c64xx_dma_buff *next; | 339 | struct s3c64xx_dma_buff *next; |
340 | struct s3c64xx_dma_buff *buff; | 340 | struct s3c64xx_dma_buff *buff; |
341 | struct pl080s_lli *lli; | 341 | struct pl080s_lli *lli; |
342 | unsigned long flags; | ||
342 | int ret; | 343 | int ret; |
343 | 344 | ||
344 | WARN_ON(!chan); | 345 | WARN_ON(!chan); |
@@ -366,6 +367,8 @@ int s3c2410_dma_enqueue(unsigned int channel, void *id, | |||
366 | 367 | ||
367 | s3c64xx_dma_fill_lli(chan, lli, data, size); | 368 | s3c64xx_dma_fill_lli(chan, lli, data, size); |
368 | 369 | ||
370 | local_irq_save(flags); | ||
371 | |||
369 | if ((next = chan->next) != NULL) { | 372 | if ((next = chan->next) != NULL) { |
370 | struct s3c64xx_dma_buff *end = chan->end; | 373 | struct s3c64xx_dma_buff *end = chan->end; |
371 | struct pl080s_lli *endlli = end->lli; | 374 | struct pl080s_lli *endlli = end->lli; |
@@ -397,6 +400,8 @@ int s3c2410_dma_enqueue(unsigned int channel, void *id, | |||
397 | s3c64xx_lli_to_regs(chan, lli); | 400 | s3c64xx_lli_to_regs(chan, lli); |
398 | } | 401 | } |
399 | 402 | ||
403 | local_irq_restore(flags); | ||
404 | |||
400 | show_lli(lli); | 405 | show_lli(lli); |
401 | 406 | ||
402 | dbg_showchan(chan); | 407 | dbg_showchan(chan); |