From: Heiko Stuebner Date: Mon, 20 May 2013 16:01:37 +0000 (+0900) Subject: ARM: S3C24XX: dma-s3c2443 - do not write into arbitary bits X-Git-Tag: firefly_0821_release~176^2~5840^2~37^2~1 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=e8de5a1fa9101a6aa22b2cbdde058979664b2474;p=firefly-linux-kernel-4.4.55.git 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 Signed-off-by: Kukjin Kim --- 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); }