All of lore.kernel.org
 help / color / mirror / Atom feed
From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/5] dmaengine: dw_dmac: move to generic DMA binding
Date: Tue, 29 Jan 2013 16:36:38 +0000	[thread overview]
Message-ID: <201301291636.38773.arnd@arndb.de> (raw)
In-Reply-To: <20130129154409.GA23505@n2100.arm.linux.org.uk>

On Tuesday 29 January 2013, Russell King - ARM Linux wrote:
> That's a good way to represent it but it fails in a very big way:
> You're stuffing N peripherals down to 3 request lines to the DMA
> engine, and you may want more than 3 of those peripherals to be
> making use of the DMA engine at any one time.
> 
> Before anyone says "you shouldn't be doing this" consider this:
> your typical DMA slave engine already has this structure:
> 
> N DMA channels <---> M DMA requests <---> M peripherals
> 
> where N < M.  In other words, there is already a MUX between the
> peripherals and the DMA engine channels themselves (what do you think
> the "request index" which you have to program into DMA channel control
> registers is doing...

Ok.

> We support this external mux today in the PL080 driver - and we do that
> by having the PL080 driver do the scheduling of virtual DMA channels on
> the actual hardware itself.  The PL080 driver has knowledge that there
> may be some sort of additional muxing layer between it and the
> peripheral.
> 
> As the APIs stand today, you just can't do this without having the
> DMA engine driver itself intimately involved because a layer above
> doesn't really have much clue as to what's going on, and the DMA
> engine stuff itself doesn't layer particularly well.

If the pl080 driver already has code for the mux in it, then it should
handle both of_dma_controller instances in my example. It would
not change anything regarding the binding, which just describes the
way that the hardware is connected. I have not looked at the implementation
of the pl080 driver, but I'd assume we could get away with just having
two separate xlate() functions. It's slightly ugly to have one driver
take responsibility for two device_node:s, but it's not unheard of.
In the probe function for the pl080 node, the driver can walk the
entire device tree to find any mux devices connected to it and
register an of_dma_controller() with its xlate function for those.

Unless you see another issue with this, I'd assume it's all covered
by the new interface, but it also doesn't get better than what we
have today.

	Arnd

WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
To: Russell King - ARM Linux <linux-lFZ/pmaqli7XmaaqVzeoHQ@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,
	spear-devel <spear-devel-nkJGhpqTU55BDgjK7y7TUQ@public.gmane.org>,
	Andy Shevchenko
	<andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH 1/5] dmaengine: dw_dmac: move to generic DMA binding
Date: Tue, 29 Jan 2013 16:36:38 +0000	[thread overview]
Message-ID: <201301291636.38773.arnd@arndb.de> (raw)
In-Reply-To: <20130129154409.GA23505-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>

On Tuesday 29 January 2013, Russell King - ARM Linux wrote:
> That's a good way to represent it but it fails in a very big way:
> You're stuffing N peripherals down to 3 request lines to the DMA
> engine, and you may want more than 3 of those peripherals to be
> making use of the DMA engine at any one time.
> 
> Before anyone says "you shouldn't be doing this" consider this:
> your typical DMA slave engine already has this structure:
> 
> N DMA channels <---> M DMA requests <---> M peripherals
> 
> where N < M.  In other words, there is already a MUX between the
> peripherals and the DMA engine channels themselves (what do you think
> the "request index" which you have to program into DMA channel control
> registers is doing...

Ok.

> We support this external mux today in the PL080 driver - and we do that
> by having the PL080 driver do the scheduling of virtual DMA channels on
> the actual hardware itself.  The PL080 driver has knowledge that there
> may be some sort of additional muxing layer between it and the
> peripheral.
> 
> As the APIs stand today, you just can't do this without having the
> DMA engine driver itself intimately involved because a layer above
> doesn't really have much clue as to what's going on, and the DMA
> engine stuff itself doesn't layer particularly well.

If the pl080 driver already has code for the mux in it, then it should
handle both of_dma_controller instances in my example. It would
not change anything regarding the binding, which just describes the
way that the hardware is connected. I have not looked at the implementation
of the pl080 driver, but I'd assume we could get away with just having
two separate xlate() functions. It's slightly ugly to have one driver
take responsibility for two device_node:s, but it's not unheard of.
In the probe function for the pl080 node, the driver can walk the
entire device tree to find any mux devices connected to it and
register an of_dma_controller() with its xlate function for those.

Unless you see another issue with this, I'd assume it's all covered
by the new interface, but it also doesn't get better than what we
have today.

	Arnd

  reply	other threads:[~2013-01-29 16:36 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
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 [this message]
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=201301291636.38773.arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=linux-arm-kernel@lists.infradead.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.