From: Hein Tibosch <hein_tibosch@yahoo.es>
To: viresh kumar <viresh.kumar@linaro.org>
Cc: spear-devel <spear-devel@list.st.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
"ludovic.desroches" <ludovic.desroches@atmel.com>,
Havard Skinnemoen <havard@skinnemoen.net>,
Nicolas Ferre <nicolas.ferre@atmel.com>,
egtvedt@samfundet.no, Andrew Morton <akpm@linux-foundation.org>,
Arnd Bergmann <arnd.bergmann@linaro.org>
Subject: [PATCH 1/2] dw_dmac: make driver endianness configurable
Date: Mon, 27 Aug 2012 04:53:02 +0800 [thread overview]
Message-ID: <503A8CAE.6050606@yahoo.es> (raw)
The dw_dmac was originally developed for avr32 to be used with the
Synopsys DesignWare AHB DMA controller. After 2.6.38, device access was done
with the little-endian readl/writel functions. This didn't work on the
avr32 platform, because it needs native-endian (i.e. big-endian) accessors.
This patch makes the endianness configurable using 'DW_DMAC_BE',
which will default be true for AVR32
Signed-off-by: Hein Tibosch <hein_tibosch@yahoo.es>
---
drivers/dma/Kconfig | 8 ++++++++
drivers/dma/dw_dmac_regs.h | 23 +++++++++++++++++++++++
2 files changed, 31 insertions(+), 0 deletions(-)
diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
index aadeb5b..3635daf 100644
--- a/drivers/dma/Kconfig
+++ b/drivers/dma/Kconfig
@@ -89,6 +89,14 @@ config DW_DMAC
Support the Synopsys DesignWare AHB DMA controller. This
can be integrated in chips such as the Atmel AT32ap7000.
+config DW_DMAC_BE
+ bool "Synopsys DesignWare AHB DMA needs big endian access"
+ default y if AVR32
+ depends on DW_DMAC
+ help
+ Say yes if access to the Synopsys DesignWare AHB DMA controller
+ should be big endian, such as for Atmel AT32ap7000
+
config AT_HDMAC
tristate "Atmel AHB DMA support"
depends on ARCH_AT91
diff --git a/drivers/dma/dw_dmac_regs.h b/drivers/dma/dw_dmac_regs.h
index f298f69..cf048c3 100644
--- a/drivers/dma/dw_dmac_regs.h
+++ b/drivers/dma/dw_dmac_regs.h
@@ -175,11 +175,22 @@ __dwc_regs(struct dw_dma_chan *dwc)
return dwc->ch_regs;
}
+#ifdef CONFIG_DW_DMAC_BE
+
+#define channel_readl(dwc, name) \
+ ioread32be(&(__dwc_regs(dwc)->name))
+#define channel_writel(dwc, name, val) \
+ iowrite32be((val), &(__dwc_regs(dwc)->name))
+
+#else
+
#define channel_readl(dwc, name) \
readl(&(__dwc_regs(dwc)->name))
#define channel_writel(dwc, name, val) \
writel((val), &(__dwc_regs(dwc)->name))
+#endif
+
static inline struct dw_dma_chan *to_dw_dma_chan(struct dma_chan *chan)
{
return container_of(chan, struct dw_dma_chan, chan);
@@ -201,11 +212,23 @@ static inline struct dw_dma_regs __iomem *__dw_regs(struct dw_dma *dw)
return dw->regs;
}
+#ifdef CONFIG_DW_DMAC_BE
+
+#define dma_readl(dwc, name) \
+ ioread32be(&(__dw_regs(dw)->name))
+#define dma_writel(dwc, name, val) \
+ iowrite32be((val), &(__dw_regs(dw)->name))
+
+#else
+
#define dma_readl(dw, name) \
readl(&(__dw_regs(dw)->name))
#define dma_writel(dw, name, val) \
writel((val), &(__dw_regs(dw)->name))
+#endif
+
#define channel_set_bit(dw, reg, mask) \
dma_writel(dw, reg, ((mask) << 8) | (mask))
#define channel_clear_bit(dw, reg, mask) \
--
1.7.8.0
next reply other threads:[~2012-08-26 22:29 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-26 20:53 Hein Tibosch [this message]
2012-08-27 7:03 ` [PATCH 1/2] dw_dmac: make driver endianness configurable Hans-Christian Egtvedt
2012-08-27 8:47 ` Hein Tibosch
2012-08-27 11:14 ` Hans-Christian Egtvedt
2012-08-27 14:58 ` Hein Tibosch
2012-08-28 3:23 ` Viresh Kumar
2012-08-28 6:55 ` Hein Tibosch
2012-08-28 7:05 ` Viresh Kumar
2012-08-28 7:39 ` Felipe Balbi
2012-09-03 7:50 ` Andy Shevchenko
2012-09-03 14:16 ` Felipe Balbi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=503A8CAE.6050606@yahoo.es \
--to=hein_tibosch@yahoo.es \
--cc=akpm@linux-foundation.org \
--cc=arnd.bergmann@linaro.org \
--cc=egtvedt@samfundet.no \
--cc=havard@skinnemoen.net \
--cc=linux-kernel@vger.kernel.org \
--cc=ludovic.desroches@atmel.com \
--cc=nicolas.ferre@atmel.com \
--cc=spear-devel@list.st.com \
--cc=viresh.kumar@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.