linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: lee.jones@linaro.org (Lee Jones)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 4/8] dmaengine: ste_dma40: Do not configure channels during an channel allocation
Date: Fri, 12 Apr 2013 17:38:10 +0100	[thread overview]
Message-ID: <20130412163810.GC18459@gmail.com> (raw)
In-Reply-To: <CAH+eYFBk8y28e+NwOBpvpdFa29JRXbNpFgjwNumC8GRtB-e7VQ@mail.gmail.com>

On Fri, 12 Apr 2013, Rabin Vincent wrote:

> 2013/4/9 Lee Jones <lee.jones@linaro.org>:
> > diff --git a/drivers/dma/ste_dma40.c b/drivers/dma/ste_dma40.c
> > index 2a0a9d4..9e423ad 100644
> > --- a/drivers/dma/ste_dma40.c
> > +++ b/drivers/dma/ste_dma40.c
> > @@ -2463,16 +2463,10 @@ static int d40_alloc_chan_resources(struct dma_chan *chan)
> >         }
> >
> >         pm_runtime_get_sync(d40c->base->dev);
> > -       /* Fill in basic CFG register values */
> > -       d40_phy_cfg(&d40c->dma_cfg, &d40c->src_def_cfg,
> > -                   &d40c->dst_def_cfg, chan_is_logical(d40c));
> >
> >         d40_set_prio_realtime(d40c);
> >
> >         if (chan_is_logical(d40c)) {
> > -               d40_log_cfg(&d40c->dma_cfg,
> > -                           &d40c->log_def.lcsp1, &d40c->log_def.lcsp3);
> > -
> >                 if (d40c->dma_cfg.dir == STEDMA40_PERIPH_TO_MEM)
> >                         d40c->lcpa = d40c->base->lcpa_base +
> >                                 d40c->dma_cfg.src_dev_type * D40_LCPA_CHAN_SIZE;
> > @@ -2487,14 +2481,6 @@ static int d40_alloc_chan_resources(struct dma_chan *chan)
> >                  d40c->phy_chan->num,
> >                  d40c->dma_cfg.use_fixed_channel ? ", fixed" : "");
> >
> > -
> > -       /*
> > -        * Only write channel configuration to the DMA if the physical
> > -        * resource is free. In case of multiple logical channels
> > -        * on the same physical resource, only the first write is necessary.
> > -        */
> > -       if (is_free_phy)
> > -               d40_config_write(d40c);
> 
> This function does basic initial configuration which is linked to
> whether the channel is pysical or logical -- something that is not being
> allowed to be runtime configured, so the place to call this function is
> here.  Furthermore, it clears the SSLNK/SDLNK which has to be done here,
> when the phy channel is first allocated.

Okay, I see what you're saying.

So I need to devise another way, as this function cannot be called
here either. Using the dmaengine API, allocating a channel and
configuring it are to be completed using different calls. Using the
API correctly, there is no way the driver can setup the channel
with all of the relevant information during allocation time.

The steps are as follows:

dma_request_channel() - here we only allot a channel number and
                        allocate the appropriate resources for the
			channel.

dma_slave_config()    - this is where we're meant to configure the
                        channel, so d40_config_write() needs to be
			called here, as only dma_slave_config() will
			carry the information required so as
			d40_*_cfg() can make the correct decisions.

At the moment calling dma_slave_config() ends up calling
d40_set_runtime_config(), which, taking into consideration what you've
been saying about possibly cutting off other logical channels, is
probably not what we want. I'll take a look at the dmaengine API and
see if there's a more appropriate way to do that.

Thanks again for your input Rabin, it's invaluable.

Kind regards,
Lee		

-- 
Lee Jones
Linaro ST-Ericsson Landing Team Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

  reply	other threads:[~2013-04-12 16:38 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-09 18:39 [PATCH 1/8] dmaengine: ste_dma40: Assign memcpy channels in the driver Lee Jones
2013-04-09 18:39 ` [PATCH 2/8] dmaengine: ste_dma40: Move default memcpy configs into " Lee Jones
2013-04-09 18:39 ` [PATCH 3/8] dmaengine: ste_dma40: Actually write the runtime configuration to registers Lee Jones
2013-04-09 18:59   ` Arnd Bergmann
2013-04-09 19:07     ` Lee Jones
2013-04-09 20:37   ` Arnd Bergmann
2013-04-12 13:49   ` Rabin Vincent
2013-04-12 16:13     ` Lee Jones
2013-04-15 11:06     ` Lee Jones
2013-04-15 11:36       ` Rabin Vincent
2013-04-15 11:59         ` Lee Jones
2013-04-15 13:47           ` Linus Walleij
2013-04-15 14:28             ` Lee Jones
2013-04-09 18:39 ` [PATCH 4/8] dmaengine: ste_dma40: Do not configure channels during an channel allocation Lee Jones
2013-04-12 13:54   ` Rabin Vincent
2013-04-12 16:38     ` Lee Jones [this message]
2013-04-14 16:34       ` Rabin Vincent
2013-04-09 18:39 ` [PATCH 5/8] dmaengine: ste_dma40: Ensure src and dst registers are configured correctly Lee Jones
2013-04-09 18:57   ` Arnd Bergmann
2013-04-09 19:09     ` Lee Jones
2013-04-09 20:38       ` Arnd Bergmann
2013-04-12 14:02   ` Rabin Vincent
2013-04-09 18:39 ` [PATCH 6/8] dmaengine: ste_dma40: Move LCPA allocation and real-time config Lee Jones
2013-04-09 18:56   ` Arnd Bergmann
2013-04-09 18:39 ` [PATCH 7/8] dmaengine: ste_dma40: Use the BIT macro to replace ugly '(1 << x)'s Lee Jones
2013-04-09 18:55   ` Arnd Bergmann
2013-04-09 19:04   ` Harvey Harrison
2013-04-09 19:12     ` Arnd Bergmann
2013-04-10  9:34       ` Lee Jones
2013-04-10 12:22         ` Arnd Bergmann
2013-04-09 19:12     ` Lee Jones
2013-04-09 18:39 ` [PATCH 8/8] ARM: ux500: Amalgamate DMA source and destination channel numbers Lee Jones
2013-04-09 18:51   ` Arnd Bergmann
2013-04-24 13:45 ` [PATCH 1/8] dmaengine: ste_dma40: Assign memcpy channels in the driver Linus Walleij
     [not found]   ` <CAF2Aj3jHPvc=hOcgLq8LONppGtnxUPP96HRPLfCwQ5x4HONUOw@mail.gmail.com>
2013-04-24 15:05     ` Linus Walleij

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=20130412163810.GC18459@gmail.com \
    --to=lee.jones@linaro.org \
    --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 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).