From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 03/12] dma: mxs-dma: move to generic device tree binding
Date: Wed, 27 Feb 2013 20:50:14 +0000 [thread overview]
Message-ID: <201302272050.14338.arnd@arndb.de> (raw)
In-Reply-To: <1361978748-25281-4-git-send-email-shawn.guo@linaro.org>
On Wednesday 27 February 2013, Shawn Guo wrote:
> @@ -139,6 +140,9 @@ struct mxs_dma_engine {
> struct dma_device dma_device;
> struct device_dma_parameters dma_parms;
> struct mxs_dma_chan mxs_chans[MXS_DMA_CHANNELS];
> + struct platform_device *pdev;
> + struct of_dma_filter_info filter_info;
> + unsigned int nr_channels;
> };
I don't think using of_dma_filter_info makes sense when we are not
using the generic xlate function:
> @@ -665,8 +667,59 @@ err_out:
> return ret;
> }
>
> +struct mxs_dma_filter_param {
> + struct device_node *of_node;
> + unsigned int chan_id;
> +};
> +
> +struct dma_chan *mxs_dma_xlate(struct of_phandle_args *dma_spec,
> + struct of_dma *ofdma)
> +{
> + struct mxs_dma_engine *mxs_dma = ofdma->of_dma_data;
> + struct of_dma_filter_info *info = &mxs_dma->filter_info;
> + struct mxs_dma_filter_param param;
> + int count = dma_spec->args_count;
> +
> + if (!info || !info->filter_fn)
> + return NULL;
> +
> + if (count != 1)
> + return NULL;
> +
> + param.of_node = ofdma->of_node;
> + param.chan_id = dma_spec->args[0];
> +
> + if (param.chan_id >= mxs_dma->nr_channels)
> + return NULL;
> +
> + return dma_request_channel(info->dma_cap, info->filter_fn, ¶m);
> +}
> +
> +static bool mxs_dma_filter_fn(struct dma_chan *chan, void *fn_param)
You already know the value of info->filter_fn, it's always &mxs_dma_filter_fn,
so if you reorder these two functions, you can pass it directly into
dma_request_channel.
> + struct mxs_dma_filter_param *param = fn_param;
> + struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan);
> + struct mxs_dma_engine *mxs_dma = mxs_chan->mxs_dma;
> + int chan_irq;
> +
> + if (mxs_dma->dma_device.dev->of_node != param->of_node)
> + return false;
> +
> + if (chan->chan_id != param->chan_id)
> + return false;
It would be nice if we could just get a pointer to the right channel
structure from the xlate() function, rather than having to walk the
list of channels and trying each one. Your method is what everyone
else is doing as well, so we can stick with it for now, but at some
point I'd like to open up this discussion again.
Arnd
next prev parent reply other threads:[~2013-02-27 20:50 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-27 15:25 [PATCH 00/12] ARM: mxs: move to generic DMA device tree binding Shawn Guo
2013-02-27 15:25 ` [PATCH 01/12] ARM: dts: add generic DMA device tree binding for mxs-dma Shawn Guo
2013-02-27 20:36 ` Arnd Bergmann
2013-02-28 6:39 ` Shawn Guo
2013-02-28 10:48 ` Arnd Bergmann
2013-02-27 15:25 ` [PATCH 02/12] dma: mxs-dma: use devm_* managed functions Shawn Guo
2013-02-27 15:25 ` [PATCH 03/12] dma: mxs-dma: move to generic device tree binding Shawn Guo
2013-02-27 20:50 ` Arnd Bergmann [this message]
2013-02-28 7:24 ` Shawn Guo
2013-02-27 15:25 ` [PATCH 04/12] mmc: mxs-mmc: move to use generic DMA helper Shawn Guo
2013-02-27 15:25 ` Shawn Guo
2013-02-27 20:54 ` Arnd Bergmann
2013-02-27 20:54 ` Arnd Bergmann
2013-02-28 8:28 ` Shawn Guo
2013-02-28 8:28 ` Shawn Guo
2013-02-28 10:50 ` Arnd Bergmann
2013-02-28 10:50 ` Arnd Bergmann
2013-02-27 15:25 ` [PATCH 05/12] spi: mxs-spi: " Shawn Guo
2013-02-27 15:25 ` Shawn Guo
2013-03-02 23:17 ` Grant Likely
2013-03-02 23:17 ` Grant Likely
[not found] ` <1361978748-25281-1-git-send-email-shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2013-02-27 15:25 ` [PATCH 06/12] i2c: i2c-mxs: " Shawn Guo
2013-02-27 15:25 ` Shawn Guo
2013-02-27 15:25 ` [PATCH 07/12] mtd: gpmi: " Shawn Guo
2013-02-27 15:25 ` Shawn Guo
2013-02-28 8:39 ` Huang Shijie
2013-02-28 8:39 ` Huang Shijie
2013-03-01 1:14 ` Shawn Guo
2013-03-01 1:14 ` Shawn Guo
2013-03-08 13:19 ` Artem Bityutskiy
2013-03-08 13:19 ` Artem Bityutskiy
2013-03-08 14:06 ` Arnd Bergmann
2013-03-08 14:06 ` Arnd Bergmann
2013-03-11 7:32 ` Artem Bityutskiy
2013-03-11 7:32 ` Artem Bityutskiy
2013-03-08 16:26 ` Huang Shijie
2013-03-08 16:26 ` Huang Shijie
2013-03-11 3:03 ` Shawn Guo
2013-03-11 3:03 ` Shawn Guo
2013-02-27 15:25 ` [PATCH 08/12] serial: mxs-auart: " Shawn Guo
2013-02-27 15:25 ` Shawn Guo
2013-02-27 15:25 ` [PATCH 09/12] ASoC: dmaengine_pcm: support use of " Shawn Guo
2013-02-27 15:25 ` Shawn Guo
2013-02-27 21:02 ` Arnd Bergmann
2013-02-27 21:02 ` Arnd Bergmann
2013-02-28 8:09 ` Shawn Guo
2013-02-28 8:09 ` Shawn Guo
2013-03-01 10:23 ` Mark Brown
2013-03-01 10:23 ` Mark Brown
2013-03-04 8:37 ` Shawn Guo
2013-03-04 8:37 ` Shawn Guo
2013-02-27 15:25 ` [PATCH 10/12] ASoC: mxs: move to use " Shawn Guo
2013-02-27 15:25 ` Shawn Guo
2013-02-27 15:25 ` [PATCH 11/12] dma: mxs-dma: remove code left from generic DMA binding conversion Shawn Guo
2013-02-27 15:25 ` [PATCH 12/12] ARM: dts: remove mxs-dma channel interrupt number from client nodes Shawn Guo
2013-02-27 21:05 ` [PATCH 00/12] ARM: mxs: move to generic DMA device tree binding Arnd Bergmann
2013-02-28 19:20 ` Marek Vasut
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=201302272050.14338.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.