瀏覽代碼

dmaengine: shdma: add dmaor_is_32bit flag

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Kuninori Morimoto 14 年之前
父節點
當前提交
e76c3af873
共有 2 個文件被更改,包括 14 次插入2 次删除
  1. 12 2
      drivers/dma/shdma.c
  2. 2 0
      include/linux/sh_dma.h

+ 12 - 2
drivers/dma/shdma.c

@@ -70,12 +70,22 @@ static u32 sh_dmae_readl(struct sh_dmae_chan *sh_dc, u32 reg)
 
 static u16 dmaor_read(struct sh_dmae_device *shdev)
 {
-	return __raw_readw(shdev->chan_reg + DMAOR / sizeof(u32));
+	u32 __iomem *addr = shdev->chan_reg + DMAOR / sizeof(u32);
+
+	if (shdev->pdata->dmaor_is_32bit)
+		return __raw_readl(addr);
+	else
+		return __raw_readw(addr);
 }
 
 static void dmaor_write(struct sh_dmae_device *shdev, u16 data)
 {
-	__raw_writew(data, shdev->chan_reg + DMAOR / sizeof(u32));
+	u32 __iomem *addr = shdev->chan_reg + DMAOR / sizeof(u32);
+
+	if (shdev->pdata->dmaor_is_32bit)
+		__raw_writel(data, addr);
+	else
+		__raw_writew(data, addr);
 }
 
 static void chcr_write(struct sh_dmae_chan *sh_dc, u32 data)

+ 2 - 0
include/linux/sh_dma.h

@@ -64,6 +64,8 @@ struct sh_dmae_pdata {
 	u16 dmaor_init;
 	unsigned int chcr_offset;
 	u32 chcr_ie_bit;
+
+	unsigned int dmaor_is_32bit:1;
 };
 
 /* DMA register */