From: Grant Likely <grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>
To: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
linux-arm-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: Vinod Koul <vinod.koul-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
Viresh Kumar
<viresh.kumar-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
Mark Brown
<broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>,
spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
Andy Shevchenko
<andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
Subject: Re: [PATCH 2/5] spi: pl022: use generic DMA slave configuration if possible
Date: Tue, 05 Feb 2013 14:22:02 +0000 [thread overview]
Message-ID: <20130205142202.860453E1265@localhost> (raw)
In-Reply-To: <1359395857-1235-3-git-send-email-arnd-r2nGTMty4D4@public.gmane.org>
On Mon, 28 Jan 2013 17:57:34 +0000, Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org> wrote:
> With the new OF DMA binding, it is possible to completely avoid the
> need for platform_data for configuring a DMA channel. In cases where the
> platform has already been converted, calling dma_request_slave_channel
> should get all the necessary information from the device tree.
>
> Like the patch that converts the dw_dma controller, this is completely
> untested and is looking for someone to try it out.
>
> Signed-off-by: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
> Cc: Grant Likely <grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>
> Cc: Mark Brown <broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
> Cc: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> Cc: Viresh Kumar <viresh.kumar-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> Cc: Andy Shevchenko <andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
> Cc: Vinod Koul <vinod.koul-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
> Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org
> Cc: linux-arm-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> ---
> drivers/spi/spi-pl022.c | 43 +++++++++++++++++++++++++++++++++++++++++--
> 1 file changed, 41 insertions(+), 2 deletions(-)
Acked-by: Grant Likely <grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>
>
> diff --git a/drivers/spi/spi-pl022.c b/drivers/spi/spi-pl022.c
> index b0fe393..371cc66f 100644
> --- a/drivers/spi/spi-pl022.c
> +++ b/drivers/spi/spi-pl022.c
> @@ -1139,6 +1139,35 @@ err_no_rxchan:
> return -ENODEV;
> }
>
> +static int pl022_dma_autoprobe(struct pl022 *pl022)
> +{
> + struct device *dev = &pl022->adev->dev;
> +
> + /* automatically configure DMA channels from platform, normally using DT */
> + pl022->dma_rx_channel = dma_request_slave_channel(dev, "rx");
> + if (!pl022->dma_rx_channel)
> + goto err_no_rxchan;
> +
> + pl022->dma_tx_channel = dma_request_slave_channel(dev, "tx");
> + if (!pl022->dma_tx_channel)
> + goto err_no_txchan;
> +
> + pl022->dummypage = kmalloc(PAGE_SIZE, GFP_KERNEL);
> + if (!pl022->dummypage)
> + goto err_no_dummypage;
> +
> + return 0;
> +
> +err_no_dummypage:
> + dma_release_channel(pl022->dma_tx_channel);
> + pl022->dma_tx_channel = NULL;
> +err_no_txchan:
> + dma_release_channel(pl022->dma_rx_channel);
> + pl022->dma_rx_channel = NULL;
> +err_no_rxchan:
> + return -ENODEV;
> +}
> +
> static void terminate_dma(struct pl022 *pl022)
> {
> struct dma_chan *rxchan = pl022->dma_rx_channel;
> @@ -1167,6 +1196,11 @@ static inline int configure_dma(struct pl022 *pl022)
> return -ENODEV;
> }
>
> +static inline int pl022_dma_autoprobe(struct pl022 *pl022)
> +{
> + return 0;
> +}
> +
> static inline int pl022_dma_probe(struct pl022 *pl022)
> {
> return 0;
> @@ -2226,8 +2260,13 @@ static int pl022_probe(struct amba_device *adev, const struct amba_id *id)
> goto err_no_irq;
> }
>
> - /* Get DMA channels */
> - if (platform_info->enable_dma) {
> + /* Get DMA channels, try autoconfiguration first */
> + status = pl022_dma_autoprobe(pl022);
> +
> + /* If that failed, use channels from platform_info */
> + if (status == 0)
> + platform_info->enable_dma = 1;
> + else if (platform_info->enable_dma) {
> status = pl022_dma_probe(pl022);
> if (status != 0)
> platform_info->enable_dma = 0;
> --
> 1.8.0
>
--
Grant Likely, B.Sc, P.Eng.
Secret Lab Technologies, Ltd.
------------------------------------------------------------------------------
Free Next-Gen Firewall Hardware Offer
Buy your Sophos next-gen firewall before the end March 2013
and get the hardware for free! Learn more.
http://p.sf.net/sfu/sophos-d2d-feb
WARNING: multiple messages have this Message-ID (diff)
From: Grant Likely <grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>
To: linux-arm-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: Vinod Koul <vinod.koul-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
Viresh Kumar
<viresh.kumar-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
Mark Brown
<broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>,
spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
Andy Shevchenko
<andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
Subject: Re: [PATCH 2/5] spi: pl022: use generic DMA slave configuration if possible
Date: Tue, 05 Feb 2013 14:22:02 +0000 [thread overview]
Message-ID: <20130205142202.860453E1265@localhost> (raw)
In-Reply-To: <1359395857-1235-3-git-send-email-arnd-r2nGTMty4D4@public.gmane.org>
On Mon, 28 Jan 2013 17:57:34 +0000, Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org> wrote:
> With the new OF DMA binding, it is possible to completely avoid the
> need for platform_data for configuring a DMA channel. In cases where the
> platform has already been converted, calling dma_request_slave_channel
> should get all the necessary information from the device tree.
>
> Like the patch that converts the dw_dma controller, this is completely
> untested and is looking for someone to try it out.
>
> Signed-off-by: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
> Cc: Grant Likely <grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>
> Cc: Mark Brown <broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
> Cc: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> Cc: Viresh Kumar <viresh.kumar-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> Cc: Andy Shevchenko <andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
> Cc: Vinod Koul <vinod.koul-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
> Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org
> Cc: linux-arm-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> ---
> drivers/spi/spi-pl022.c | 43 +++++++++++++++++++++++++++++++++++++++++--
> 1 file changed, 41 insertions(+), 2 deletions(-)
Acked-by: Grant Likely <grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>
>
> diff --git a/drivers/spi/spi-pl022.c b/drivers/spi/spi-pl022.c
> index b0fe393..371cc66f 100644
> --- a/drivers/spi/spi-pl022.c
> +++ b/drivers/spi/spi-pl022.c
> @@ -1139,6 +1139,35 @@ err_no_rxchan:
> return -ENODEV;
> }
>
> +static int pl022_dma_autoprobe(struct pl022 *pl022)
> +{
> + struct device *dev = &pl022->adev->dev;
> +
> + /* automatically configure DMA channels from platform, normally using DT */
> + pl022->dma_rx_channel = dma_request_slave_channel(dev, "rx");
> + if (!pl022->dma_rx_channel)
> + goto err_no_rxchan;
> +
> + pl022->dma_tx_channel = dma_request_slave_channel(dev, "tx");
> + if (!pl022->dma_tx_channel)
> + goto err_no_txchan;
> +
> + pl022->dummypage = kmalloc(PAGE_SIZE, GFP_KERNEL);
> + if (!pl022->dummypage)
> + goto err_no_dummypage;
> +
> + return 0;
> +
> +err_no_dummypage:
> + dma_release_channel(pl022->dma_tx_channel);
> + pl022->dma_tx_channel = NULL;
> +err_no_txchan:
> + dma_release_channel(pl022->dma_rx_channel);
> + pl022->dma_rx_channel = NULL;
> +err_no_rxchan:
> + return -ENODEV;
> +}
> +
> static void terminate_dma(struct pl022 *pl022)
> {
> struct dma_chan *rxchan = pl022->dma_rx_channel;
> @@ -1167,6 +1196,11 @@ static inline int configure_dma(struct pl022 *pl022)
> return -ENODEV;
> }
>
> +static inline int pl022_dma_autoprobe(struct pl022 *pl022)
> +{
> + return 0;
> +}
> +
> static inline int pl022_dma_probe(struct pl022 *pl022)
> {
> return 0;
> @@ -2226,8 +2260,13 @@ static int pl022_probe(struct amba_device *adev, const struct amba_id *id)
> goto err_no_irq;
> }
>
> - /* Get DMA channels */
> - if (platform_info->enable_dma) {
> + /* Get DMA channels, try autoconfiguration first */
> + status = pl022_dma_autoprobe(pl022);
> +
> + /* If that failed, use channels from platform_info */
> + if (status == 0)
> + platform_info->enable_dma = 1;
> + else if (platform_info->enable_dma) {
> status = pl022_dma_probe(pl022);
> if (status != 0)
> platform_info->enable_dma = 0;
> --
> 1.8.0
>
--
Grant Likely, B.Sc, P.Eng.
Secret Lab Technologies, Ltd.
------------------------------------------------------------------------------
Free Next-Gen Firewall Hardware Offer
Buy your Sophos next-gen firewall before the end March 2013
and get the hardware for free! Learn more.
http://p.sf.net/sfu/sophos-d2d-feb
next prev parent reply other threads:[~2013-02-05 14:22 UTC|newest]
Thread overview: 111+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-28 17:57 [PATCH 0/5] dmaengine: convert dw_dmac/spear13xx to generic binding Arnd Bergmann
[not found] ` <1359395857-1235-1-git-send-email-arnd-r2nGTMty4D4@public.gmane.org>
2013-01-28 17:57 ` [PATCH 1/5] dmaengine: dw_dmac: move to generic DMA binding Arnd Bergmann
2013-01-28 17:57 ` [PATCH 2/5] spi: pl022: use generic DMA slave configuration if possible Arnd Bergmann
[not found] ` <1359395857-1235-3-git-send-email-arnd-r2nGTMty4D4@public.gmane.org>
2013-02-05 14:22 ` Grant Likely [this message]
2013-02-05 14:22 ` Grant Likely
2013-02-07 18:27 ` Linus Walleij
2013-01-28 17:57 ` [PATCH 3/5] serial: pl011: " Arnd Bergmann
[not found] ` <1359395857-1235-4-git-send-email-arnd-r2nGTMty4D4@public.gmane.org>
2013-02-05 14:22 ` Grant Likely
2013-01-28 17:57 ` [PATCH 4/5] ata: arasan: remove the need for platform_data Arnd Bergmann
2013-01-28 17:57 ` [PATCH 5/5] ARM: SPEAr13xx: Pass generic DW DMAC platform data from DT Arnd Bergmann
2013-01-28 21:58 ` [PATCH v2 0/5] dmaengine: convert dw_dmac/spear13xx to generic binding Arnd Bergmann
2013-01-28 21:58 ` Arnd Bergmann
2013-01-28 21:58 ` [PATCH 1/5] dmaengine: dw_dmac: move to generic DMA binding Arnd Bergmann
2013-01-28 21:58 ` Arnd Bergmann
2013-01-29 7:24 ` Viresh Kumar
2013-01-29 7:24 ` Viresh Kumar
2013-01-29 10:35 ` Arnd Bergmann
2013-01-29 10:35 ` Arnd Bergmann
2013-01-29 10:49 ` Viresh Kumar
2013-01-29 10:49 ` Viresh Kumar
2013-01-29 10:54 ` Andy Shevchenko
2013-01-29 10:54 ` Andy Shevchenko
2013-01-29 10:57 ` Viresh Kumar
2013-01-29 10:57 ` Viresh Kumar
2013-01-29 11:14 ` Andy Shevchenko
2013-01-29 11:14 ` Andy Shevchenko
2013-01-29 13:31 ` Arnd Bergmann
2013-01-29 13:31 ` Arnd Bergmann
2013-01-29 13:45 ` Andy Shevchenko
2013-01-29 13:45 ` Andy Shevchenko
2013-01-29 14:26 ` Russell King - ARM Linux
2013-01-29 14:26 ` Russell King - ARM Linux
2013-01-29 15:28 ` Arnd Bergmann
2013-01-29 15:28 ` Arnd Bergmann
2013-01-29 15:17 ` Viresh Kumar
2013-01-29 15:17 ` Viresh Kumar
2013-01-29 16:21 ` Arnd Bergmann
2013-01-29 16:21 ` Arnd Bergmann
2013-01-30 2:04 ` Viresh Kumar
2013-01-30 2:04 ` Viresh Kumar
2013-01-30 9:41 ` Arnd Bergmann
2013-01-30 9:41 ` Arnd Bergmann
2013-01-30 9:48 ` Viresh Kumar
2013-01-30 9:48 ` Viresh Kumar
2013-01-30 10:08 ` Arnd Bergmann
2013-01-30 10:08 ` Arnd Bergmann
2013-01-30 10:32 ` Viresh Kumar
2013-01-30 10:32 ` Viresh Kumar
[not found] ` <1359445171.31148.30.camel@smile>
2013-01-29 10:50 ` Arnd Bergmann
2013-01-29 10:50 ` Arnd Bergmann
2013-01-29 11:18 ` Russell King - ARM Linux
2013-01-29 11:18 ` Russell King - ARM Linux
2013-01-29 13:44 ` Arnd Bergmann
2013-01-29 13:44 ` Arnd Bergmann
2013-01-29 14:24 ` Russell King - ARM Linux
2013-01-29 14:24 ` Russell King - ARM Linux
2013-01-29 14:55 ` Arnd Bergmann
2013-01-29 14:55 ` Arnd Bergmann
2013-01-29 15:44 ` Russell King - ARM Linux
2013-01-29 15:44 ` Russell King - ARM Linux
2013-01-29 16:36 ` Arnd Bergmann
2013-01-29 16:36 ` Arnd Bergmann
2013-01-29 17:45 ` Russell King - ARM Linux
2013-01-29 17:45 ` Russell King - ARM Linux
2013-01-29 20:40 ` Arnd Bergmann
2013-01-29 20:40 ` Arnd Bergmann
2013-01-29 21:59 ` Linus Walleij
2013-01-29 21:59 ` Linus Walleij
2013-02-15 8:50 ` Andy Shevchenko
2013-02-15 8:50 ` Andy Shevchenko
2013-02-15 11:17 ` Arnd Bergmann
2013-02-15 11:17 ` Arnd Bergmann
[not found] ` <1359410300-26113-1-git-send-email-arnd-r2nGTMty4D4@public.gmane.org>
2013-01-28 21:58 ` [PATCH 2/5] spi: pl022: use generic DMA slave configuration if possible Arnd Bergmann
2013-01-28 21:58 ` Arnd Bergmann
[not found] ` <1359410300-26113-3-git-send-email-arnd-r2nGTMty4D4@public.gmane.org>
2013-01-29 2:41 ` Mark Brown
2013-01-29 2:41 ` Mark Brown
2013-01-29 7:49 ` Andy Shevchenko
2013-01-29 7:49 ` Andy Shevchenko
2013-01-29 13:13 ` Arnd Bergmann
2013-01-29 13:13 ` Arnd Bergmann
[not found] ` <201301291313.03511.arnd-r2nGTMty4D4@public.gmane.org>
2013-02-07 18:29 ` Linus Walleij
2013-02-07 18:29 ` Linus Walleij
[not found] ` <CACRpkdZNpCJwp-uaH6feTcaPesNouwpHt-hO-M9v52G=Ux+Hqw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-02-07 19:42 ` Arnd Bergmann
2013-02-07 19:42 ` Arnd Bergmann
[not found] ` <201302071942.54642.arnd-r2nGTMty4D4@public.gmane.org>
2013-02-07 20:19 ` Linus Walleij
2013-02-07 20:19 ` Linus Walleij
[not found] ` <CACRpkdbunPGtR4p_kY4q8WEb8iwkEbdo_icDyrLZwKrCe0wXqw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-02-07 21:15 ` Arnd Bergmann
2013-02-07 21:15 ` Arnd Bergmann
2013-02-08 16:22 ` Russell King - ARM Linux
2013-02-08 16:22 ` Russell King - ARM Linux
2013-02-08 16:28 ` Arnd Bergmann
2013-02-08 16:28 ` Arnd Bergmann
2013-02-08 22:10 ` Linus Walleij
2013-02-08 22:10 ` Linus Walleij
2013-02-08 16:20 ` Russell King - ARM Linux
2013-02-08 16:20 ` Russell King - ARM Linux
2013-01-28 21:58 ` [PATCH 3/5] serial: pl011: " Arnd Bergmann
2013-01-28 21:58 ` Arnd Bergmann
[not found] ` <1359410300-26113-4-git-send-email-arnd-r2nGTMty4D4@public.gmane.org>
2013-01-30 4:38 ` Greg Kroah-Hartman
2013-01-30 4:38 ` Greg Kroah-Hartman
2013-01-28 21:58 ` [PATCH 4/5] ata: arasan: remove the need for platform_data Arnd Bergmann
2013-01-28 21:58 ` Arnd Bergmann
2013-01-29 8:18 ` Viresh Kumar
2013-01-29 8:18 ` Viresh Kumar
2013-01-28 21:58 ` [PATCH 5/5] ARM: SPEAr13xx: Pass generic DW DMAC platform data from DT Arnd Bergmann
2013-01-28 21:58 ` Arnd Bergmann
2013-01-29 8:16 ` Viresh Kumar
2013-01-29 8:16 ` Viresh Kumar
2013-01-29 13:21 ` Arnd Bergmann
2013-01-29 13:21 ` Arnd Bergmann
2013-04-19 20:38 ` [PATCH 0/5] dmaengine: convert dw_dmac/spear13xx to generic binding Arnd Bergmann
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=20130205142202.860453E1265@localhost \
--to=grant.likely-s3s/wqlpoipyb63q8fvjnq@public.gmane.org \
--cc=andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
--cc=arnd-r2nGTMty4D4@public.gmane.org \
--cc=broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org \
--cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
--cc=linux-arm-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
--cc=vinod.koul-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
--cc=viresh.kumar-QSEj5FYQhm4dnm+yROfE0A@public.gmane.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.