linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
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

  reply	other threads:[~2013-07-14  8:50 UTC|newest]

Thread overview: 34+ 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 ` [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-12 15:26 ` [PATCH RFC 2/8] dma: mpc512x: fix start condition in execute() 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 ` [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 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 ` [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-14 12:01 ` [PATCH RFC v2 0/5] " 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-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-31  7:46         ` 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).