All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matt Porter <mporter@ti.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Linux DaVinci Kernel List
	<davinci-linux-open-source@linux.davincidsp.com>,
	Linux OMAP List <linux-omap@vger.kernel.org>,
	Russell King <linux@arm.linux.org.uk>,
	Benoit Cousson <b-cousson@ti.com>,
	Linux Documentation List <linux-doc@vger.kernel.org>,
	Tony Lindgren <tony@atomide.com>,
	Linux MMC List <linux-mmc@vger.kernel.org>,
	Devicetree Discuss <devicetree-discuss@lists.ozlabs.org>,
	Mark Brown <broonie@opensource.wolfsonmicro.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Rob Herring <rob.herring@calxeda.com>,
	Grant Likely <grant.likely@secretlab.ca>,
	Vinod Koul <vinod.koul@intel.com>, Rob Landley <rob@landley.net>,
	Dan Williams <djbw@fb.com>,
	Linux SPI Devel List <spi-devel-general@lists.sourceforge.net>,
	Chris Ball <cjb@laptop.org>,
	Linux ARM Kernel List <linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH v5 07/14] dmaengine: add dma_request_slave_channel_compat()
Date: Wed, 30 Jan 2013 01:36:11 -0500	[thread overview]
Message-ID: <20130130063611.GM5256@beef> (raw)
In-Reply-To: <201301232228.46716.arnd@arndb.de>

On Wed, Jan 23, 2013 at 10:28:46PM +0000, Arnd Bergmann wrote:
> On Tuesday 15 January 2013, Matt Porter wrote:
> > Adds a dma_request_slave_channel_compat() wrapper which accepts
> > both the arguments from dma_request_channel() and
> > dma_request_slave_channel(). Based on whether the driver is
> > instantiated via DT, the appropriate channel request call will be
> > made.
> > 
> > This allows for a much cleaner migration of drivers to the
> > dmaengine DT API as platforms continue to be mixed between those
> > that boot using DT and those that do not.
> 
> I noticed today some drivers in linux-next that rely on this patch,
> but the patch itself still missing from -next.
> 
> > --- a/include/linux/dmaengine.h
> > +++ b/include/linux/dmaengine.h
> > @@ -1047,6 +1047,16 @@ void dma_run_dependencies(struct dma_async_tx_descriptor *tx);
> >  struct dma_chan *dma_find_channel(enum dma_transaction_type tx_type);
> >  struct dma_chan *net_dma_find_channel(void);
> >  #define dma_request_channel(mask, x, y) __dma_request_channel(&(mask), x, y)
> > +static inline struct dma_chan
> > +*dma_request_slave_channel_compat(dma_cap_mask_t mask, dma_filter_fn fn,
> > +                                 void *fn_param, struct device *dev,
> > +                                 char *name)
> > +{
> > +       if (dev->of_node)
> > +               return dma_request_slave_channel(dev, name);
> > +       else
> > +               return dma_request_channel(mask, fn, fn_param);
> > +}
> 
> Hmm, dma_request_channel is actually a macro that passes mask by reference,
> presumably because it can get modified by the filter function. Also, there
> may be cases where we do have an of_node but don't use the dma binding
> yet, or where dma_request_slave_channel doesn't actually use DT information
> but rather one of the other methods that Vinod was talking about adding.
> 
> I think what it should look like instead is the below.

Yes, looks correct now, thanks. I've incorporated it into v6.

-Matt

> 
> 	Arnd
> 
> diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
> index bfcdecb..b6ffd7d 100644
> --- a/include/linux/dmaengine.h
> +++ b/include/linux/dmaengine.h
> @@ -993,6 +993,19 @@ static inline void dma_release_channel(struct dma_chan *chan)
>  }
>  #endif
>  
> +static inline struct dma_chan *__dma_request_slave_channel_compat(dma_cap_mask_t *mask,
> +				dma_filter_fn fn, void *fn_param, struct device *dev,
> +				 char *name)
> +{
> +	struct dma_chan *chan;
> +
> +	chan = dma_request_slave_channel(dev, name);
> +	if (chan)
> +		return chan;
> +
> +	return __dma_request_channel(mask, fn, fn_param);
> +}
> +
>  /* --- DMA device --- */
>  
>  int dma_async_device_register(struct dma_device *device);
> @@ -1001,6 +1014,8 @@ void dma_run_dependencies(struct dma_async_tx_descriptor *tx);
>  struct dma_chan *dma_find_channel(enum dma_transaction_type tx_type);
>  struct dma_chan *net_dma_find_channel(void);
>  #define dma_request_channel(mask, x, y) __dma_request_channel(&(mask), x, y)
> +#define dma_request_slave_channel_compat(mask, x, y, dev, name) \
> +	 __dma_request_slave_channel_compat(&(mask), x, y, dev, name)
>  
>  /* --- Helper iov-locking functions --- */
>  
> _______________________________________________
> Davinci-linux-open-source mailing list
> Davinci-linux-open-source@linux.davincidsp.com
> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

WARNING: multiple messages have this Message-ID (diff)
From: mporter@ti.com (Matt Porter)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 07/14] dmaengine: add dma_request_slave_channel_compat()
Date: Wed, 30 Jan 2013 01:36:11 -0500	[thread overview]
Message-ID: <20130130063611.GM5256@beef> (raw)
In-Reply-To: <201301232228.46716.arnd@arndb.de>

On Wed, Jan 23, 2013 at 10:28:46PM +0000, Arnd Bergmann wrote:
> On Tuesday 15 January 2013, Matt Porter wrote:
> > Adds a dma_request_slave_channel_compat() wrapper which accepts
> > both the arguments from dma_request_channel() and
> > dma_request_slave_channel(). Based on whether the driver is
> > instantiated via DT, the appropriate channel request call will be
> > made.
> > 
> > This allows for a much cleaner migration of drivers to the
> > dmaengine DT API as platforms continue to be mixed between those
> > that boot using DT and those that do not.
> 
> I noticed today some drivers in linux-next that rely on this patch,
> but the patch itself still missing from -next.
> 
> > --- a/include/linux/dmaengine.h
> > +++ b/include/linux/dmaengine.h
> > @@ -1047,6 +1047,16 @@ void dma_run_dependencies(struct dma_async_tx_descriptor *tx);
> >  struct dma_chan *dma_find_channel(enum dma_transaction_type tx_type);
> >  struct dma_chan *net_dma_find_channel(void);
> >  #define dma_request_channel(mask, x, y) __dma_request_channel(&(mask), x, y)
> > +static inline struct dma_chan
> > +*dma_request_slave_channel_compat(dma_cap_mask_t mask, dma_filter_fn fn,
> > +                                 void *fn_param, struct device *dev,
> > +                                 char *name)
> > +{
> > +       if (dev->of_node)
> > +               return dma_request_slave_channel(dev, name);
> > +       else
> > +               return dma_request_channel(mask, fn, fn_param);
> > +}
> 
> Hmm, dma_request_channel is actually a macro that passes mask by reference,
> presumably because it can get modified by the filter function. Also, there
> may be cases where we do have an of_node but don't use the dma binding
> yet, or where dma_request_slave_channel doesn't actually use DT information
> but rather one of the other methods that Vinod was talking about adding.
> 
> I think what it should look like instead is the below.

Yes, looks correct now, thanks. I've incorporated it into v6.

-Matt

> 
> 	Arnd
> 
> diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
> index bfcdecb..b6ffd7d 100644
> --- a/include/linux/dmaengine.h
> +++ b/include/linux/dmaengine.h
> @@ -993,6 +993,19 @@ static inline void dma_release_channel(struct dma_chan *chan)
>  }
>  #endif
>  
> +static inline struct dma_chan *__dma_request_slave_channel_compat(dma_cap_mask_t *mask,
> +				dma_filter_fn fn, void *fn_param, struct device *dev,
> +				 char *name)
> +{
> +	struct dma_chan *chan;
> +
> +	chan = dma_request_slave_channel(dev, name);
> +	if (chan)
> +		return chan;
> +
> +	return __dma_request_channel(mask, fn, fn_param);
> +}
> +
>  /* --- DMA device --- */
>  
>  int dma_async_device_register(struct dma_device *device);
> @@ -1001,6 +1014,8 @@ void dma_run_dependencies(struct dma_async_tx_descriptor *tx);
>  struct dma_chan *dma_find_channel(enum dma_transaction_type tx_type);
>  struct dma_chan *net_dma_find_channel(void);
>  #define dma_request_channel(mask, x, y) __dma_request_channel(&(mask), x, y)
> +#define dma_request_slave_channel_compat(mask, x, y, dev, name) \
> +	 __dma_request_slave_channel_compat(&(mask), x, y, dev, name)
>  
>  /* --- Helper iov-locking functions --- */
>  
> _______________________________________________
> Davinci-linux-open-source mailing list
> Davinci-linux-open-source at linux.davincidsp.com
> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

  reply	other threads:[~2013-01-30  6:36 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-15 20:32 [PATCH v5 00/14] DMA Engine support for AM33XX Matt Porter
2013-01-15 20:32 ` Matt Porter
2013-01-15 20:32 ` Matt Porter
     [not found] ` <1358281974-8411-1-git-send-email-mporter-l0cyMroinI0@public.gmane.org>
2013-01-15 20:32   ` [PATCH v5 01/14] ARM: davinci: move private EDMA API to arm/common Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32   ` [PATCH v5 02/14] ARM: edma: remove unused transfer controller handlers Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32   ` [PATCH v5 03/14] ARM: edma: add AM33XX support to the private EDMA API Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-28 19:27     ` Andy Shevchenko
2013-01-28 19:27       ` Andy Shevchenko
2013-01-28 19:27       ` Andy Shevchenko
2013-01-28 19:27       ` Andy Shevchenko
     [not found]       ` <CAHp75VeFZ19CCL-4huLNWbsXT-8sGrcvtxN=Dm0s+ojNA3w-3g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-01-30  6:41         ` Matt Porter
2013-01-30  6:41           ` Matt Porter
2013-01-30  6:41           ` Matt Porter
2013-01-30  7:40           ` Andy Shevchenko
2013-01-30  7:40             ` Andy Shevchenko
2013-01-30  7:40             ` Andy Shevchenko
2013-01-30  7:40             ` Andy Shevchenko
2013-01-31  1:31             ` Matt Porter
2013-01-31  1:31               ` Matt Porter
2013-01-15 20:32   ` [PATCH v5 04/14] dmaengine: edma: enable build for AM33XX Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32   ` [PATCH v5 05/14] dmaengine: edma: Add TI EDMA device tree binding Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32   ` [PATCH v5 06/14] ARM: dts: add AM33XX EDMA support Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32   ` [PATCH v5 07/14] dmaengine: add dma_request_slave_channel_compat() Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32     ` Matt Porter
     [not found]     ` <1358281974-8411-8-git-send-email-mporter-l0cyMroinI0@public.gmane.org>
2013-01-23 22:28       ` Arnd Bergmann
2013-01-23 22:28         ` Arnd Bergmann
2013-01-23 22:28         ` Arnd Bergmann
2013-01-30  6:36         ` Matt Porter [this message]
2013-01-30  6:36           ` Matt Porter
2013-01-28 19:34     ` Andy Shevchenko
2013-01-28 19:34       ` Andy Shevchenko
2013-01-28 19:34       ` Andy Shevchenko
2013-01-28 19:34       ` Andy Shevchenko
     [not found]       ` <CAHp75VeqikcTuOd14utb9E0P3b9t1mr=JsmkAbz5=3FJwU2kFA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-01-28 19:57         ` Arnd Bergmann
2013-01-28 19:57           ` Arnd Bergmann
2013-01-28 19:57           ` Arnd Bergmann
2013-01-15 20:32   ` [PATCH v5 08/14] mmc: omap_hsmmc: convert to dma_request_slave_channel_compat() Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32   ` [PATCH v5 09/14] mmc: omap_hsmmc: set max_segs based on dma engine limitations Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32   ` [PATCH v5 10/14] mmc: omap_hsmmc: add generic DMA request support to the DT binding Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32   ` [PATCH v5 11/14] ARM: dts: add AM33XX MMC support Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32   ` [PATCH v5 12/14] spi: omap2-mcspi: convert to dma_request_slave_channel_compat() Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32   ` [PATCH v5 13/14] spi: omap2-mcspi: add generic DMA request support to the DT binding Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32   ` [PATCH v5 14/14] ARM: dts: add AM33XX SPI DMA support Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-15 20:32     ` Matt Porter
2013-01-22 15:56   ` [PATCH v5 00/14] DMA Engine support for AM33XX Sekhar Nori
2013-01-22 15:56     ` Sekhar Nori
2013-01-22 15:56     ` Sekhar Nori
2013-01-23  2:21     ` Mark Brown
2013-01-23  2:21       ` Mark Brown
     [not found]       ` <20130123022133.GA5727-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
2013-01-23 10:49         ` Sekhar Nori
2013-01-23 10:49           ` Sekhar Nori
2013-01-23 10:49           ` Sekhar Nori
2013-01-23 21:37         ` Matt Porter
2013-01-23 21:37           ` Matt Porter
2013-01-23 21:37           ` Matt Porter
2013-01-24  5:14           ` Sekhar Nori
2013-01-24  5:14             ` Sekhar Nori
2013-01-24  5:14             ` Sekhar Nori
     [not found]           ` <d07dbfd50690423b903803720152c0dc@DLEE74.ent.ti.com>
2013-01-24 20:42             ` Matt Porter
2013-01-24 20:42               ` Matt Porter
2013-01-23 11:07   ` Santosh Shilimkar
2013-01-23 11:07     ` Santosh Shilimkar
2013-01-23 11:07     ` Santosh Shilimkar
     [not found]     ` <50FFC48B.80902-l0cyMroinI0@public.gmane.org>
2013-01-23 20:49       ` Matt Porter
2013-01-23 20:49         ` Matt Porter
2013-01-23 20:49         ` Matt Porter
2013-01-24  5:12         ` Santosh Shilimkar
2013-01-24  5:12           ` Santosh Shilimkar
2013-01-24  5:12           ` Santosh Shilimkar
     [not found]         ` <8ea1d227d84648f68e670c56f27c481e@DFLE72.ent.ti.com>
2013-01-24 20:49           ` Matt Porter
2013-01-24 20:49             ` Matt Porter
2013-01-25  7:02             ` Santosh Shilimkar
2013-01-25  7:02               ` Santosh Shilimkar
2013-01-25  7:02               ` Santosh Shilimkar

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=20130130063611.GM5256@beef \
    --to=mporter@ti.com \
    --cc=arnd@arndb.de \
    --cc=b-cousson@ti.com \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=cjb@laptop.org \
    --cc=davinci-linux-open-source@linux.davincidsp.com \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=djbw@fb.com \
    --cc=grant.likely@secretlab.ca \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=rob.herring@calxeda.com \
    --cc=rob@landley.net \
    --cc=spi-devel-general@lists.sourceforge.net \
    --cc=tony@atomide.com \
    --cc=vinod.koul@intel.com \
    /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.