From: laurent.pinchart@ideasonboard.com (Laurent Pinchart)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 35/53] dmaengine: sh: Split device_control
Date: Thu, 16 Oct 2014 19:17:47 +0300 [thread overview]
Message-ID: <3055002.ZJvxdY8rr0@avalon> (raw)
In-Reply-To: <1413454672-27400-36-git-send-email-maxime.ripard@free-electrons.com>
Hi Maxime,
Thank you for the patch.
On Thursday 16 October 2014 12:17:34 Maxime Ripard wrote:
> Split the device_control callback of the Super-H DMA driver to make use of
> the newly introduced callbacks, that will eventually be used to retrieve
> slave capabilities.
>
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
> drivers/dma/sh/shdma-base.c | 72 +++++++++++++++++++-----------------------
> 1 file changed, 35 insertions(+), 37 deletions(-)
>
> diff --git a/drivers/dma/sh/shdma-base.c b/drivers/dma/sh/shdma-base.c
> index 42d497416196..eda59515f704 100644
> --- a/drivers/dma/sh/shdma-base.c
> +++ b/drivers/dma/sh/shdma-base.c
> @@ -727,8 +727,7 @@ static struct dma_async_tx_descriptor
> *shdma_prep_dma_cyclic( return desc;
> }
>
> -static int shdma_control(struct dma_chan *chan, enum dma_ctrl_cmd cmd,
> - unsigned long arg)
> +static int shdma_terminate_all(struct dma_chan *chan)
> {
> struct shdma_chan *schan = to_shdma_chan(chan);
> struct shdma_dev *sdev = to_shdma_dev(chan->device);
> @@ -737,43 +736,41 @@ static int shdma_control(struct dma_chan *chan, enum
> dma_ctrl_cmd cmd, unsigned long flags;
> int ret;
>
> - switch (cmd) {
> - case DMA_TERMINATE_ALL:
> - spin_lock_irqsave(&schan->chan_lock, flags);
> - ops->halt_channel(schan);
> + spin_lock_irqsave(&schan->chan_lock, flags);
> + ops->halt_channel(schan);
>
> - if (ops->get_partial && !list_empty(&schan->ld_queue)) {
> - /* Record partial transfer */
> - struct shdma_desc *desc = list_first_entry(&schan->ld_queue,
> - struct shdma_desc, node);
> - desc->partial = ops->get_partial(schan, desc);
> - }
> + if (ops->get_partial && !list_empty(&schan->ld_queue)) {
> + /* Record partial transfer */
> + struct shdma_desc *desc = list_first_entry(&schan->ld_queue,
> + struct shdma_desc, node);
> + desc->partial = ops->get_partial(schan, desc);
> + }
>
> - spin_unlock_irqrestore(&schan->chan_lock, flags);
> + spin_unlock_irqrestore(&schan->chan_lock, flags);
>
> - shdma_chan_ld_cleanup(schan, true);
> - break;
> - case DMA_SLAVE_CONFIG:
> - /*
> - * So far only .slave_id is used, but the slave drivers are
> - * encouraged to also set a transfer direction and an address.
> - */
> - if (!arg)
> - return -EINVAL;
> - /*
> - * We could lock this, but you shouldn't be configuring the
> - * channel, while using it...
> - */
> - config = (struct dma_slave_config *)arg;
> - ret = shdma_setup_slave(schan, config->slave_id,
> - config->direction == DMA_DEV_TO_MEM ?
> - config->src_addr : config->dst_addr);
> - if (ret < 0)
> - return ret;
> - break;
> - default:
> - return -ENXIO;
> - }
> + shdma_chan_ld_cleanup(schan, true);
> +
> + return 0;
> +}
> +
> +static int shdma_config(struct dma_chan *chan,
> + struct dma_slave_config *config)
> +{
> + struct shdma_chan *schan = to_shdma_chan(chan);
> +
> + /*
> + * So far only .slave_id is used, but the slave drivers are
> + * encouraged to also set a transfer direction and an address.
> + */
> + if (!config)
> + return -EINVAL;
> + /*
> + * We could lock this, but you shouldn't be configuring the
> + * channel, while using it...
> + */
> + return shdma_setup_slave(schan, config->slave_id,
> + config->direction == DMA_DEV_TO_MEM ?
> + config->src_addr : config->dst_addr);
>
> return 0;
You can remove the return 0. With this fixed,
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> }
> @@ -1000,7 +997,8 @@ int shdma_init(struct device *dev, struct shdma_dev
> *sdev, /* Compulsory for DMA_SLAVE fields */
> dma_dev->device_prep_slave_sg = shdma_prep_slave_sg;
> dma_dev->device_prep_dma_cyclic = shdma_prep_dma_cyclic;
> - dma_dev->device_control = shdma_control;
> + dma_dev->device_config = shdma_config;
> + dma_dev->device_terminate_all = shdma_terminate_all;
>
> dma_dev->dev = dev;
--
Regards,
Laurent Pinchart
WARNING: multiple messages have this Message-ID (diff)
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: dmaengine@vger.kernel.org, "Vinod Koul" <vinod.koul@intel.com>,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org,
"Antoine Ténart" <antoine@free-electrons.com>,
lars@metafoo.de, "Russell King" <linux@arm.linux.org.uk>,
"Dan Williams" <dan.j.williams@intel.com>
Subject: Re: [PATCH v2 35/53] dmaengine: sh: Split device_control
Date: Thu, 16 Oct 2014 19:17:47 +0300 [thread overview]
Message-ID: <3055002.ZJvxdY8rr0@avalon> (raw)
In-Reply-To: <1413454672-27400-36-git-send-email-maxime.ripard@free-electrons.com>
Hi Maxime,
Thank you for the patch.
On Thursday 16 October 2014 12:17:34 Maxime Ripard wrote:
> Split the device_control callback of the Super-H DMA driver to make use of
> the newly introduced callbacks, that will eventually be used to retrieve
> slave capabilities.
>
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
> drivers/dma/sh/shdma-base.c | 72 +++++++++++++++++++-----------------------
> 1 file changed, 35 insertions(+), 37 deletions(-)
>
> diff --git a/drivers/dma/sh/shdma-base.c b/drivers/dma/sh/shdma-base.c
> index 42d497416196..eda59515f704 100644
> --- a/drivers/dma/sh/shdma-base.c
> +++ b/drivers/dma/sh/shdma-base.c
> @@ -727,8 +727,7 @@ static struct dma_async_tx_descriptor
> *shdma_prep_dma_cyclic( return desc;
> }
>
> -static int shdma_control(struct dma_chan *chan, enum dma_ctrl_cmd cmd,
> - unsigned long arg)
> +static int shdma_terminate_all(struct dma_chan *chan)
> {
> struct shdma_chan *schan = to_shdma_chan(chan);
> struct shdma_dev *sdev = to_shdma_dev(chan->device);
> @@ -737,43 +736,41 @@ static int shdma_control(struct dma_chan *chan, enum
> dma_ctrl_cmd cmd, unsigned long flags;
> int ret;
>
> - switch (cmd) {
> - case DMA_TERMINATE_ALL:
> - spin_lock_irqsave(&schan->chan_lock, flags);
> - ops->halt_channel(schan);
> + spin_lock_irqsave(&schan->chan_lock, flags);
> + ops->halt_channel(schan);
>
> - if (ops->get_partial && !list_empty(&schan->ld_queue)) {
> - /* Record partial transfer */
> - struct shdma_desc *desc = list_first_entry(&schan->ld_queue,
> - struct shdma_desc, node);
> - desc->partial = ops->get_partial(schan, desc);
> - }
> + if (ops->get_partial && !list_empty(&schan->ld_queue)) {
> + /* Record partial transfer */
> + struct shdma_desc *desc = list_first_entry(&schan->ld_queue,
> + struct shdma_desc, node);
> + desc->partial = ops->get_partial(schan, desc);
> + }
>
> - spin_unlock_irqrestore(&schan->chan_lock, flags);
> + spin_unlock_irqrestore(&schan->chan_lock, flags);
>
> - shdma_chan_ld_cleanup(schan, true);
> - break;
> - case DMA_SLAVE_CONFIG:
> - /*
> - * So far only .slave_id is used, but the slave drivers are
> - * encouraged to also set a transfer direction and an address.
> - */
> - if (!arg)
> - return -EINVAL;
> - /*
> - * We could lock this, but you shouldn't be configuring the
> - * channel, while using it...
> - */
> - config = (struct dma_slave_config *)arg;
> - ret = shdma_setup_slave(schan, config->slave_id,
> - config->direction == DMA_DEV_TO_MEM ?
> - config->src_addr : config->dst_addr);
> - if (ret < 0)
> - return ret;
> - break;
> - default:
> - return -ENXIO;
> - }
> + shdma_chan_ld_cleanup(schan, true);
> +
> + return 0;
> +}
> +
> +static int shdma_config(struct dma_chan *chan,
> + struct dma_slave_config *config)
> +{
> + struct shdma_chan *schan = to_shdma_chan(chan);
> +
> + /*
> + * So far only .slave_id is used, but the slave drivers are
> + * encouraged to also set a transfer direction and an address.
> + */
> + if (!config)
> + return -EINVAL;
> + /*
> + * We could lock this, but you shouldn't be configuring the
> + * channel, while using it...
> + */
> + return shdma_setup_slave(schan, config->slave_id,
> + config->direction == DMA_DEV_TO_MEM ?
> + config->src_addr : config->dst_addr);
>
> return 0;
You can remove the return 0. With this fixed,
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> }
> @@ -1000,7 +997,8 @@ int shdma_init(struct device *dev, struct shdma_dev
> *sdev, /* Compulsory for DMA_SLAVE fields */
> dma_dev->device_prep_slave_sg = shdma_prep_slave_sg;
> dma_dev->device_prep_dma_cyclic = shdma_prep_dma_cyclic;
> - dma_dev->device_control = shdma_control;
> + dma_dev->device_config = shdma_config;
> + dma_dev->device_terminate_all = shdma_terminate_all;
>
> dma_dev->dev = dev;
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2014-10-16 16:17 UTC|newest]
Thread overview: 147+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-16 10:16 [PATCH v2 00/53] dmaengine: Implement generic slave capabilities retrieval Maxime Ripard
2014-10-16 10:16 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 01/53] dmaengine: Make the destination abbreviation coherent Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:25 ` Mark Brown
2014-10-16 10:25 ` Mark Brown
2014-10-16 10:32 ` Laurent Pinchart
2014-10-16 10:32 ` Laurent Pinchart
2014-10-16 15:26 ` Stephen Warren
2014-10-16 15:26 ` Stephen Warren
2014-10-16 10:17 ` [PATCH v2 02/53] dmaengine: Make channel allocation callbacks optional Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:35 ` Laurent Pinchart
2014-10-16 10:35 ` Laurent Pinchart
2014-10-16 10:17 ` [PATCH v2 03/53] dmaengine: Introduce a device_config callback Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:44 ` Laurent Pinchart
2014-10-16 10:44 ` Laurent Pinchart
2014-10-16 10:17 ` [PATCH v2 04/53] dmaengine: split out pause/resume operations from device_control Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:45 ` Laurent Pinchart
2014-10-16 10:45 ` Laurent Pinchart
2014-10-16 10:17 ` [PATCH v2 05/53] dmaengine: Add device_terminate_all callback Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:46 ` Laurent Pinchart
2014-10-16 10:46 ` Laurent Pinchart
2014-10-16 10:17 ` [PATCH v2 06/53] dmaengine: Create a generic dma_slave_caps callback Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 16:15 ` Laurent Pinchart
2014-10-16 16:15 ` Laurent Pinchart
2014-10-16 16:24 ` Maxime Ripard
2014-10-16 16:24 ` Maxime Ripard
2014-10-22 20:16 ` Laurent Pinchart
2014-10-22 20:16 ` Laurent Pinchart
2014-10-23 8:08 ` Maxime Ripard
2014-10-23 8:08 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 07/53] dmaengine: Move slave caps to dma_device Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 08/53] dmaengine: pl08x: Split device_control Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 09/53] dmaengine: hdmac: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 10/53] dmaengine: bcm2835: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 15:27 ` Stephen Warren
2014-10-16 15:27 ` Stephen Warren
2014-10-16 10:17 ` [PATCH v2 11/53] dmaengine: coh901318: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-28 14:40 ` Linus Walleij
2014-10-28 14:40 ` Linus Walleij
2014-10-16 10:17 ` [PATCH v2 12/53] dmaengine: cppi41: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 13/53] dmaengine: jz4740: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 14/53] dmaengine: dw: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 11:17 ` Andy Shevchenko
2014-10-16 11:17 ` Andy Shevchenko
2014-10-16 14:05 ` Maxime Ripard
2014-10-16 14:05 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 15/53] dmaengine: edma: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 16/53] dmaengine: ep93xx: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 17/53] dmaengine: fsl-edma: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 18/53] dmaengine: imx: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 19/53] dmaengine: imx-sdma: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 20/53] dmaengine: intel-mid-dma: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 21/53] dmaengine: ipu-idmac: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 22/53] dmaengine: k3: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 23/53] dmaengine: mmp-pdma: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 24/53] dmaengine: mmp-tdma: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 25/53] dmaengine: moxart: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 26/53] dmaengine: fsl-dma: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 27/53] dmaengine: mpc512x: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 28/53] dmaengine: mxs: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 29/53] dmaengine: nbpfaxi: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 30/53] dmaengine: omap: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 31/53] dmaengine: pl330: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 32/53] dmaengine: bam-dma: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 33/53] dmaengine: s3c24xx: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 34/53] dmaengine: sa11x0: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 35/53] dmaengine: sh: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 16:17 ` Laurent Pinchart [this message]
2014-10-16 16:17 ` Laurent Pinchart
2014-10-16 10:17 ` [PATCH v2 36/53] dmaengine: sirf: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 37/53] dmaengine: sun6i: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 38/53] dmaengine: d40: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-28 14:41 ` Linus Walleij
2014-10-28 14:41 ` Linus Walleij
2014-10-16 10:17 ` [PATCH v2 39/53] dmaengine: tegra20: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 40/53] dmaengine: xilinx: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 16:20 ` Laurent Pinchart
2014-10-16 16:20 ` Laurent Pinchart
2014-10-16 10:17 ` [PATCH v2 41/53] dmaengine: mv_xor: Remove device_control Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 42/53] dmaengine: pch-dma: Rename device_control Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 43/53] dmaengine: td: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 44/53] dmaengine: txx9: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 45/53] dmaengine: bcm2835: Declare slave capabilities for the generic code Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 15:27 ` Stephen Warren
2014-10-16 15:27 ` Stephen Warren
2014-10-16 10:17 ` [PATCH v2 46/53] dmaengine: fsl-edma: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 47/53] dmaengine: edma: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 48/53] dmaengine: nbpfaxi: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 49/53] dmaengine: omap: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 50/53] dmaengine: pl330: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 51/53] dmaengine: sirf: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 52/53] dmaengine: sun6i: " Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
2014-10-16 10:17 ` [PATCH v2 53/53] dmaengine: Mark device_control and device_slave_caps as deprecated Maxime Ripard
2014-10-16 10:17 ` Maxime Ripard
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=3055002.ZJvxdY8rr0@avalon \
--to=laurent.pinchart@ideasonboard.com \
--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.