summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHeiko Stuebner <heiko@sntech.de>2013-05-20 18:01:37 +0200
committerKukjin Kim <kgene.kim@samsung.com>2013-05-20 18:01:37 +0200
commite8de5a1fa9101a6aa22b2cbdde058979664b2474 (patch)
treeeda2911302aefb6db1690328c5be2b09c301770f
parentARM: S3C24XX: split s3c2412 spi dma channels (diff)
downloadlinux-e8de5a1fa9101a6aa22b2cbdde058979664b2474.tar.xz
linux-e8de5a1fa9101a6aa22b2cbdde058979664b2474.zip
ARM: S3C24XX: dma-s3c2443 - do not write into arbitary bits
The values read from the channel map always also contain the DMA_CH_VALID (= 1<<31) setting, which should not get written into the register, even if this bit is unused. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
-rw-r--r--arch/arm/mach-s3c24xx/dma-s3c2443.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/arm/mach-s3c24xx/dma-s3c2443.c b/arch/arm/mach-s3c24xx/dma-s3c2443.c
index 5fe3539dc2b5..95b9f759fe97 100644
--- a/arch/arm/mach-s3c24xx/dma-s3c2443.c
+++ b/arch/arm/mach-s3c24xx/dma-s3c2443.c
@@ -128,7 +128,8 @@ static struct s3c24xx_dma_map __initdata s3c2443_dma_mappings[] = {
static void s3c2443_dma_select(struct s3c2410_dma_chan *chan,
struct s3c24xx_dma_map *map)
{
- writel(map->channels[0] | S3C2443_DMAREQSEL_HW,
+ unsigned long chsel = map->channels[0] & (~DMA_CH_VALID);
+ writel(chsel | S3C2443_DMAREQSEL_HW,
chan->regs + S3C2443_DMA_DMAREQSEL);
}