All of lore.kernel.org
 help / color / mirror / Atom feed
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>,
	Viresh Kumar
	<viresh.kumar-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
	Greg Kroah-Hartman
	<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
	spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
	Andy Shevchenko
	<andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
	Jiri Slaby <jslaby-AlSwsSmVLrQ@public.gmane.org>
Subject: Re: [PATCH 3/5] serial: pl011: use generic DMA slave configuration if possible
Date: Tue, 05 Feb 2013 14:22:38 +0000	[thread overview]
Message-ID: <20130205142238.3F3AB3E1265@localhost> (raw)
In-Reply-To: <1359395857-1235-4-git-send-email-arnd-r2nGTMty4D4@public.gmane.org>

On Mon, 28 Jan 2013 17:57:35 +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: Jiri Slaby <jslaby-AlSwsSmVLrQ@public.gmane.org>
> Cc: Greg Kroah-Hartman <gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>
> Cc: Linus Walleij <linus.walleij-QSEj5FYQhm4dnm+yROfE0A@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

Acked-by: Grant Likely <grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>

> ---
>  drivers/tty/serial/amba-pl011.c | 62 ++++++++++++++++++++++++-----------------
>  1 file changed, 37 insertions(+), 25 deletions(-)
> 
> diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
> index 3ea5408..c25b00e 100644
> --- a/drivers/tty/serial/amba-pl011.c
> +++ b/drivers/tty/serial/amba-pl011.c
> @@ -245,7 +245,7 @@ static void pl011_sgbuf_free(struct dma_chan *chan, struct pl011_sgbuf *sg,
>  	}
>  }
>  
> -static void pl011_dma_probe_initcall(struct uart_amba_port *uap)
> +static void pl011_dma_probe_initcall(struct device *dev, struct uart_amba_port *uap)
>  {
>  	/* DMA is the sole user of the platform data right now */
>  	struct amba_pl011_data *plat = uap->port.dev->platform_data;
> @@ -259,20 +259,25 @@ static void pl011_dma_probe_initcall(struct uart_amba_port *uap)
>  	struct dma_chan *chan;
>  	dma_cap_mask_t mask;
>  
> -	/* We need platform data */
> -	if (!plat || !plat->dma_filter) {
> -		dev_info(uap->port.dev, "no DMA platform data\n");
> -		return;
> -	}
> +	chan = dma_request_slave_channel(dev, "tx");
>  
> -	/* Try to acquire a generic DMA engine slave TX channel */
> -	dma_cap_zero(mask);
> -	dma_cap_set(DMA_SLAVE, mask);
> -
> -	chan = dma_request_channel(mask, plat->dma_filter, plat->dma_tx_param);
>  	if (!chan) {
> -		dev_err(uap->port.dev, "no TX DMA channel!\n");
> -		return;
> +		/* We need platform data */
> +		if (!plat || !plat->dma_filter) {
> +			dev_info(uap->port.dev, "no DMA platform data\n");
> +			return;
> +		}
> +
> +		/* Try to acquire a generic DMA engine slave TX channel */
> +		dma_cap_zero(mask);
> +		dma_cap_set(DMA_SLAVE, mask);
> +
> +		chan = dma_request_channel(mask, plat->dma_filter,
> +						plat->dma_tx_param);
> +		if (!chan) {
> +			dev_err(uap->port.dev, "no TX DMA channel!\n");
> +			return;
> +		}
>  	}
>  
>  	dmaengine_slave_config(chan, &tx_conf);
> @@ -282,7 +287,18 @@ static void pl011_dma_probe_initcall(struct uart_amba_port *uap)
>  		 dma_chan_name(uap->dmatx.chan));
>  
>  	/* Optionally make use of an RX channel as well */
> -	if (plat->dma_rx_param) {
> +	chan = dma_request_slave_channel(dev, "rx");
> +	
> +	if (!chan && plat->dma_rx_param) {
> +		chan = dma_request_channel(mask, plat->dma_filter, plat->dma_rx_param);
> +
> +		if (!chan) {
> +			dev_err(uap->port.dev, "no RX DMA channel!\n");
> +			return;
> +		}
> +	}
> +
> +	if (chan) {
>  		struct dma_slave_config rx_conf = {
>  			.src_addr = uap->port.mapbase + UART01x_DR,
>  			.src_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE,
> @@ -291,12 +307,6 @@ static void pl011_dma_probe_initcall(struct uart_amba_port *uap)
>  			.device_fc = false,
>  		};
>  
> -		chan = dma_request_channel(mask, plat->dma_filter, plat->dma_rx_param);
> -		if (!chan) {
> -			dev_err(uap->port.dev, "no RX DMA channel!\n");
> -			return;
> -		}
> -
>  		dmaengine_slave_config(chan, &rx_conf);
>  		uap->dmarx.chan = chan;
>  
> @@ -315,6 +325,7 @@ static void pl011_dma_probe_initcall(struct uart_amba_port *uap)
>  struct dma_uap {
>  	struct list_head node;
>  	struct uart_amba_port *uap;
> +	struct device *dev;
>  };
>  
>  static LIST_HEAD(pl011_dma_uarts);
> @@ -325,7 +336,7 @@ static int __init pl011_dma_initcall(void)
>  
>  	list_for_each_safe(node, tmp, &pl011_dma_uarts) {
>  		struct dma_uap *dmau = list_entry(node, struct dma_uap, node);
> -		pl011_dma_probe_initcall(dmau->uap);
> +		pl011_dma_probe_initcall(dmau->dev, dmau->uap);
>  		list_del(node);
>  		kfree(dmau);
>  	}
> @@ -334,18 +345,19 @@ static int __init pl011_dma_initcall(void)
>  
>  device_initcall(pl011_dma_initcall);
>  
> -static void pl011_dma_probe(struct uart_amba_port *uap)
> +static void pl011_dma_probe(struct device *dev, struct uart_amba_port *uap)
>  {
>  	struct dma_uap *dmau = kzalloc(sizeof(struct dma_uap), GFP_KERNEL);
>  	if (dmau) {
>  		dmau->uap = uap;
> +		dmau->dev = dev;
>  		list_add_tail(&dmau->node, &pl011_dma_uarts);
>  	}
>  }
>  #else
> -static void pl011_dma_probe(struct uart_amba_port *uap)
> +static void pl011_dma_probe(struct device *dev, struct uart_amba_port *uap)
>  {
> -	pl011_dma_probe_initcall(uap);
> +	pl011_dma_probe_initcall(dev, uap);
>  }
>  #endif
>  
> @@ -2020,7 +2032,7 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
>  	uap->port.ops = &amba_pl011_pops;
>  	uap->port.flags = UPF_BOOT_AUTOCONF;
>  	uap->port.line = i;
> -	pl011_dma_probe(uap);
> +	pl011_dma_probe(&dev->dev, uap);
>  
>  	/* Ensure interrupts from this UART are masked and cleared */
>  	writew(0, uap->port.membase + UART011_IMSC);
> -- 
> 1.8.0
> 

-- 
Grant Likely, B.Sc, P.Eng.
Secret Lab Technologies, Ltd.

  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
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 [this message]
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=20130205142238.3F3AB3E1265@localhost \
    --to=grant.likely-s3s/wqlpoipyb63q8fvjnq@public.gmane.org \
    --cc=andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
    --cc=arnd-r2nGTMty4D4@public.gmane.org \
    --cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
    --cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
    --cc=jslaby-AlSwsSmVLrQ@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.