From: Arnd Bergmann <arnd@arndb.de>
To: Gerhard Sittig <gsi@denx.de>
Cc: Lars-Peter Clausen <lars@metafoo.de>,
Vinod Koul <vinod.koul@intel.com>,
devicetree-discuss@lists.ozlabs.org,
Alexander Popov <a13xp0p0v88@gmail.com>,
Dan Williams <djbw@fb.com>, Anatolij Gustschin <agust@denx.de>,
linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH RFC 5/8] dma: mpc512x: use symbolic specifiers for DMA channels
Date: Sun, 14 Jul 2013 10:50:04 +0200 [thread overview]
Message-ID: <201307141050.05153.arnd@arndb.de> (raw)
In-Reply-To: <20130713141443.GJ2615@book.gsilab.sittig.org>
On Saturday 13 July 2013, Gerhard Sittig wrote:
> [ MPC8308 knowledge required, see below ]
>
> On Sat, Jul 13, 2013 at 09:17 +0200, Arnd Bergmann wrote:
> >
> > On Friday 12 July 2013, Gerhard Sittig wrote:
> > > +++ b/include/dt-bindings/dma/mpc512x-dma.h
> > > @@ -0,0 +1,21 @@
> > > +/*
> > > + * This header file provides symbolic specifiers for DMA channels
> > > + * within the MPC512x SoC's DMA controller. Since requester lines
> > > + * directly map to channel numbers and no additional flexibility
> > > + * is involved, DMA channels can be considered directly associated
> > > + * with individual peripherals.
> > > + *
> > > + * This header file gets shared among DT bindings which provide
> > > + * hardware specs, and driver code which implements supporting logic.
> > > + */
> > > +
> > > +#ifndef _DT_BINDINGS_DMA_MPC512x_DMA_H
> > > +#define _DT_BINDINGS_DMA_MPC512x_DMA_H
> > > +
> > > +#define MPC512x_DMACHAN_SCLPC 26
> > > +#define MPC512x_DMACHAN_SDHC 30
> > > +#define MPC512x_DMACHAN_MDDRC 32
> > > +
> > > +#define MPC512x_DMACHAN_MAX 64
> > > +
> >
> > I think these should not be in the header and should not bve part of the
> > binding either. They are specific to an SoC that happens to be using this
> > DMA controller but would be completely different for any other SoC with
> > the same DMA engine. These belong into the dma descriptors of the slave
> > drivers and don't need symbolic names.
>
> Thank you for the feedback.
>
> OK, so not adding the dt-bindings header leads to no change in
> the DTS nodes, which in turn collapses 5/8 into something local
> to the .c driver source (introduce an enum and replace a few
> magic numbers with names), and obsoletes 4/8 as a prerequisite.
> This will further reduce the patch set's size.
Actually I think you will need extra changes: The dma-engine driver
should not require knowledge of any channel-specific settings.
I did not notice you had them until you mentioned the above, but
from what I can tell, you need a few flags in the dma-specifier
to replace code like
/* only start explicitly on MDDRC channel */
- if (cid == 32)
+ if (cid == MPC512x_DMACHAN_MDDRC)
mdesc->tcd->start = 1;
with
mdesc->tcd->start = dmaspec->explicit_start;
or something along these lines, where dmaspec is a data structure
derived from the fields in the DT dma specifier of the child
node.
> I scanned chapter 12 (DMA controller) in the MPC8308 reference
> manual (rev 0 as of 2010-04) several times and could not find any
> hint about peripherals, request lines, or anything else related
> to flow control. Searching in the whole RM won't give a hint
> either. Does this suggest that the MPC8308 DMA controller's
> channels are "free" in their assignment to transfer tasks? Or
> are they "memory transfers only"? Or do they happily accept any
> XLB address (internal and external RAM, IMMR and IP bus space)
> but don't apply flow control, i.e. expect either peripherals to
> already hold the RX data, or peripherals to keep up with being
> fed random amounts of TX data? I tend to read the doc as the
> latter.
It sounds to me that they are memory-to-memory only, which means
you probably want to allow #dma-cells=<0> as a special case to
describe an instance that has no slave API support.
Arnd
next prev parent reply other threads:[~2013-07-14 8:50 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-12 15:26 [PATCH RFC 0/8] MPC512x DMA slave s/g support, OF DMA lookup Gerhard Sittig
2013-07-12 15:26 ` Gerhard Sittig
2013-07-12 15:26 ` [PATCH RFC 1/8] powerpc: mpc512x_dma: add support for data transfers between memory and i/o memory Gerhard Sittig
2013-07-14 10:05 ` Lars-Peter Clausen
2013-07-14 11:07 ` Gerhard Sittig
2013-07-14 11:07 ` Gerhard Sittig
2013-07-12 15:26 ` [PATCH RFC 2/8] dma: mpc512x: fix start condition in execute() Gerhard Sittig
2013-07-12 15:26 ` Gerhard Sittig
2013-07-12 15:26 ` [PATCH RFC 3/8] dma: mpc512x: support 'terminate all' control request Gerhard Sittig
2013-07-12 15:26 ` Gerhard Sittig
2013-07-12 15:26 ` [PATCH RFC 4/8] dts: mpc512x: prepare for preprocessor support Gerhard Sittig
2013-07-12 15:26 ` [PATCH RFC 5/8] dma: mpc512x: use symbolic specifiers for DMA channels Gerhard Sittig
2013-07-13 7:17 ` Arnd Bergmann
2013-07-13 7:17 ` Arnd Bergmann
2013-07-13 14:14 ` Gerhard Sittig
2013-07-14 8:50 ` Arnd Bergmann [this message]
2013-07-14 9:53 ` Lars-Peter Clausen
2013-07-14 11:02 ` Gerhard Sittig
2013-07-12 15:26 ` [PATCH RFC 6/8] dma: of: Add common xlate function for matching by channel id Gerhard Sittig
2013-07-12 15:26 ` Gerhard Sittig
2013-07-12 15:26 ` [PATCH RFC 7/8] dma: mpc512x: register for device tree channel lookup Gerhard Sittig
2013-07-12 15:26 ` [PATCH RFC 8/8] HACK mmc: mxcmmc: enable clocks for the MPC512x Gerhard Sittig
2013-07-12 16:45 ` [PATCH RFC 0/8] MPC512x DMA slave s/g support, OF DMA lookup Lars-Peter Clausen
2013-07-12 16:45 ` Lars-Peter Clausen
2013-07-14 12:01 ` [PATCH RFC v2 0/5] " Gerhard Sittig
2013-07-14 12:01 ` Gerhard Sittig
2013-07-14 12:01 ` [PATCH RFC v2 1/5] dma: mpc512x: re-order mpc8308 specific instructions Gerhard Sittig
2013-08-12 13:38 ` Alexander Popov
2013-08-12 13:38 ` Alexander Popov
2013-07-14 12:01 ` [PATCH RFC v2 2/5] dma: mpc512x: add support for peripheral transfers Gerhard Sittig
2013-07-16 10:37 ` Lars-Peter Clausen
2013-07-17 10:42 ` Gerhard Sittig
2013-07-17 10:42 ` Gerhard Sittig
2013-07-31 7:46 ` Alexander Popov
2013-08-12 13:37 ` Alexander Popov
2013-08-12 13:37 ` Alexander Popov
2013-07-14 12:01 ` [PATCH RFC v2 3/5] dma: of: Add common xlate function for matching by channel id Gerhard Sittig
2013-10-03 14:05 ` Alexander Popov
2013-07-14 12:02 ` [PATCH RFC v2 4/5] dma: mpc512x: register for device tree channel lookup Gerhard Sittig
2013-10-03 14:06 ` Alexander Popov
2013-07-14 12:02 ` [PATCH RFC v2 5/5] HACK mmc: mxcmmc: enable clocks for the MPC512x Gerhard Sittig
2013-10-03 14:06 ` Alexander Popov
2013-07-16 9:27 ` [PATCH RFC v2 0/5] MPC512x DMA slave s/g support, OF DMA lookup Alexander Popov
2013-10-03 14:00 ` Alexander Popov
2013-10-06 10:01 ` Gerhard Sittig
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=201307141050.05153.arnd@arndb.de \
--to=arnd@arndb.de \
--cc=a13xp0p0v88@gmail.com \
--cc=agust@denx.de \
--cc=devicetree-discuss@lists.ozlabs.org \
--cc=djbw@fb.com \
--cc=gsi@denx.de \
--cc=lars@metafoo.de \
--cc=linuxppc-dev@lists.ozlabs.org \
--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.