dmaengine Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH 0/2] dmaengine: rcar-dmac: minor modifications
@ 2019-08-27 11:10 Yoshihiro Shimoda
  2019-08-27 11:10 ` [PATCH 1/2] dmaengine: rcar-dmac: Use of_data values instead of a macro Yoshihiro Shimoda
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Yoshihiro Shimoda @ 2019-08-27 11:10 UTC (permalink / raw)
  To: vkoul; +Cc: dmaengine, linux-renesas-soc, Yoshihiro Shimoda

This patch series is based on renesas-drivers.git /
renesas-drivers-2019-08-13-v5.3-rc4 tag. This is minor modifications
to add support for changed registers memory mapping hardware support
easily in the future.

Yoshihiro Shimoda (2):
  dmaengine: rcar-dmac: Use of_data values instead of a macro
  dmaengine: rcar-dmac: Use devm_platform_ioremap_resource()

 drivers/dma/sh/rcar-dmac.c | 37 +++++++++++++++++++++++++++++--------
 1 file changed, 29 insertions(+), 8 deletions(-)

-- 
2.7.4


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/2] dmaengine: rcar-dmac: Use of_data values instead of a macro
  2019-08-27 11:10 [PATCH 0/2] dmaengine: rcar-dmac: minor modifications Yoshihiro Shimoda
@ 2019-08-27 11:10 ` Yoshihiro Shimoda
  2019-08-27 13:08   ` Geert Uytterhoeven
  2019-08-27 11:10 ` [PATCH 2/2] dmaengine: rcar-dmac: Use devm_platform_ioremap_resource() Yoshihiro Shimoda
  2019-09-04  6:09 ` [PATCH 0/2] dmaengine: rcar-dmac: minor modifications Vinod Koul
  2 siblings, 1 reply; 9+ messages in thread
From: Yoshihiro Shimoda @ 2019-08-27 11:10 UTC (permalink / raw)
  To: vkoul; +Cc: dmaengine, linux-renesas-soc, Yoshihiro Shimoda

Since we will have changed memory mapping of the DMAC in the future,
this patch uses of_data values instead of a macro to calculate
each channel's base offset.

Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
 drivers/dma/sh/rcar-dmac.c | 33 ++++++++++++++++++++++++++++-----
 1 file changed, 28 insertions(+), 5 deletions(-)

diff --git a/drivers/dma/sh/rcar-dmac.c b/drivers/dma/sh/rcar-dmac.c
index eb6f231..1ff6d81 100644
--- a/drivers/dma/sh/rcar-dmac.c
+++ b/drivers/dma/sh/rcar-dmac.c
@@ -208,12 +208,20 @@ struct rcar_dmac {
 
 #define to_rcar_dmac(d)		container_of(d, struct rcar_dmac, engine)
 
+/*
+ * struct rcar_dmac_of_data - This driver's OF data
+ * @chan_offset_base: DMAC channels base offset
+ * @chan_offset_coefficient: DMAC channels offset coefficient
+ */
+struct rcar_dmac_of_data {
+	u32 chan_offset_base;
+	u32 chan_offset_coefficient;
+};
+
 /* -----------------------------------------------------------------------------
  * Registers
  */
 
-#define RCAR_DMAC_CHAN_OFFSET(i)	(0x8000 + 0x80 * (i))
-
 #define RCAR_DMAISTA			0x0020
 #define RCAR_DMASEC			0x0030
 #define RCAR_DMAOR			0x0060
@@ -1721,6 +1729,7 @@ static const struct dev_pm_ops rcar_dmac_pm = {
 
 static int rcar_dmac_chan_probe(struct rcar_dmac *dmac,
 				struct rcar_dmac_chan *rchan,
+				const struct rcar_dmac_of_data *data,
 				unsigned int index)
 {
 	struct platform_device *pdev = to_platform_device(dmac->dev);
@@ -1730,7 +1739,8 @@ static int rcar_dmac_chan_probe(struct rcar_dmac *dmac,
 	int ret;
 
 	rchan->index = index;
-	rchan->iomem = dmac->iomem + RCAR_DMAC_CHAN_OFFSET(index);
+	rchan->iomem = dmac->iomem + data->chan_offset_base +
+		       data->chan_offset_coefficient * index;
 	rchan->mid_rid = -EINVAL;
 
 	spin_lock_init(&rchan->lock);
@@ -1803,10 +1813,15 @@ static int rcar_dmac_probe(struct platform_device *pdev)
 	unsigned int channels_offset = 0;
 	struct dma_device *engine;
 	struct rcar_dmac *dmac;
+	const struct rcar_dmac_of_data *data;
 	struct resource *mem;
 	unsigned int i;
 	int ret;
 
+	data = of_device_get_match_data(&pdev->dev);
+	if (!data)
+		return -EINVAL;
+
 	dmac = devm_kzalloc(&pdev->dev, sizeof(*dmac), GFP_KERNEL);
 	if (!dmac)
 		return -ENOMEM;
@@ -1890,7 +1905,7 @@ static int rcar_dmac_probe(struct platform_device *pdev)
 	INIT_LIST_HEAD(&engine->channels);
 
 	for (i = 0; i < dmac->n_channels; ++i) {
-		ret = rcar_dmac_chan_probe(dmac, &dmac->channels[i],
+		ret = rcar_dmac_chan_probe(dmac, &dmac->channels[i], data,
 					   i + channels_offset);
 		if (ret < 0)
 			goto error;
@@ -1938,8 +1953,16 @@ static void rcar_dmac_shutdown(struct platform_device *pdev)
 	rcar_dmac_stop_all_chan(dmac);
 }
 
+static const struct rcar_dmac_of_data rcar_dmac_data = {
+	.chan_offset_base = 0x8000,
+	.chan_offset_coefficient = 0x80,
+};
+
 static const struct of_device_id rcar_dmac_of_ids[] = {
-	{ .compatible = "renesas,rcar-dmac", },
+	{
+		.compatible = "renesas,rcar-dmac",
+		.data = &rcar_dmac_data,
+	},
 	{ /* Sentinel */ }
 };
 MODULE_DEVICE_TABLE(of, rcar_dmac_of_ids);
-- 
2.7.4


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 2/2] dmaengine: rcar-dmac: Use devm_platform_ioremap_resource()
  2019-08-27 11:10 [PATCH 0/2] dmaengine: rcar-dmac: minor modifications Yoshihiro Shimoda
  2019-08-27 11:10 ` [PATCH 1/2] dmaengine: rcar-dmac: Use of_data values instead of a macro Yoshihiro Shimoda
@ 2019-08-27 11:10 ` Yoshihiro Shimoda
  2019-08-27 13:10   ` Geert Uytterhoeven
  2019-09-04  6:09 ` [PATCH 0/2] dmaengine: rcar-dmac: minor modifications Vinod Koul
  2 siblings, 1 reply; 9+ messages in thread
From: Yoshihiro Shimoda @ 2019-08-27 11:10 UTC (permalink / raw)
  To: vkoul; +Cc: dmaengine, linux-renesas-soc, Yoshihiro Shimoda

This patch uses devm_platform_ioremap_resource() instead of
using platform_get_resource() and devm_ioremap_resource() together
to simplify.

Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
 drivers/dma/sh/rcar-dmac.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/dma/sh/rcar-dmac.c b/drivers/dma/sh/rcar-dmac.c
index 1ff6d81..779b715 100644
--- a/drivers/dma/sh/rcar-dmac.c
+++ b/drivers/dma/sh/rcar-dmac.c
@@ -1814,7 +1814,6 @@ static int rcar_dmac_probe(struct platform_device *pdev)
 	struct dma_device *engine;
 	struct rcar_dmac *dmac;
 	const struct rcar_dmac_of_data *data;
-	struct resource *mem;
 	unsigned int i;
 	int ret;
 
@@ -1855,8 +1854,7 @@ static int rcar_dmac_probe(struct platform_device *pdev)
 		return -ENOMEM;
 
 	/* Request resources. */
-	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	dmac->iomem = devm_ioremap_resource(&pdev->dev, mem);
+	dmac->iomem = devm_platform_ioremap_resource(pdev, 0);
 	if (IS_ERR(dmac->iomem))
 		return PTR_ERR(dmac->iomem);
 
-- 
2.7.4


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/2] dmaengine: rcar-dmac: Use of_data values instead of a macro
  2019-08-27 11:10 ` [PATCH 1/2] dmaengine: rcar-dmac: Use of_data values instead of a macro Yoshihiro Shimoda
@ 2019-08-27 13:08   ` Geert Uytterhoeven
  2019-08-31  8:36     ` Simon Horman
  0 siblings, 1 reply; 9+ messages in thread
From: Geert Uytterhoeven @ 2019-08-27 13:08 UTC (permalink / raw)
  To: Yoshihiro Shimoda; +Cc: Vinod, dmaengine, Linux-Renesas

Hi Shimoda-san,

On Tue, Aug 27, 2019 at 1:12 PM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> Since we will have changed memory mapping of the DMAC in the future,
> this patch uses of_data values instead of a macro to calculate
> each channel's base offset.
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>

Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>

> --- a/drivers/dma/sh/rcar-dmac.c
> +++ b/drivers/dma/sh/rcar-dmac.c
> @@ -208,12 +208,20 @@ struct rcar_dmac {
>
>  #define to_rcar_dmac(d)                container_of(d, struct rcar_dmac, engine)
>
> +/*
> + * struct rcar_dmac_of_data - This driver's OF data
> + * @chan_offset_base: DMAC channels base offset
> + * @chan_offset_coefficient: DMAC channels offset coefficient

Perhaps "stride" instead of "coefficient"? Or "step"?

> @@ -1803,10 +1813,15 @@ static int rcar_dmac_probe(struct platform_device *pdev)
>         unsigned int channels_offset = 0;
>         struct dma_device *engine;
>         struct rcar_dmac *dmac;
> +       const struct rcar_dmac_of_data *data;
>         struct resource *mem;
>         unsigned int i;
>         int ret;
>
> +       data = of_device_get_match_data(&pdev->dev);
> +       if (!data)
> +               return -EINVAL;

This cannot fail, as the driver is DT only, and all entries in the match table
have a data pointer.

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/2] dmaengine: rcar-dmac: Use devm_platform_ioremap_resource()
  2019-08-27 11:10 ` [PATCH 2/2] dmaengine: rcar-dmac: Use devm_platform_ioremap_resource() Yoshihiro Shimoda
@ 2019-08-27 13:10   ` Geert Uytterhoeven
  0 siblings, 0 replies; 9+ messages in thread
From: Geert Uytterhoeven @ 2019-08-27 13:10 UTC (permalink / raw)
  To: Yoshihiro Shimoda; +Cc: Vinod, dmaengine, Linux-Renesas

On Tue, Aug 27, 2019 at 1:12 PM Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> wrote:
> This patch uses devm_platform_ioremap_resource() instead of
> using platform_get_resource() and devm_ioremap_resource() together
> to simplify.
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>

Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/2] dmaengine: rcar-dmac: Use of_data values instead of a macro
  2019-08-27 13:08   ` Geert Uytterhoeven
@ 2019-08-31  8:36     ` Simon Horman
  0 siblings, 0 replies; 9+ messages in thread
From: Simon Horman @ 2019-08-31  8:36 UTC (permalink / raw)
  To: Geert Uytterhoeven; +Cc: Yoshihiro Shimoda, Vinod, dmaengine, Linux-Renesas

On Tue, Aug 27, 2019 at 03:08:16PM +0200, Geert Uytterhoeven wrote:
> Hi Shimoda-san,
> 
> On Tue, Aug 27, 2019 at 1:12 PM Yoshihiro Shimoda
> <yoshihiro.shimoda.uh@renesas.com> wrote:
> > Since we will have changed memory mapping of the DMAC in the future,
> > this patch uses of_data values instead of a macro to calculate
> > each channel's base offset.
> >
> > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
> 
> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
> 
> > --- a/drivers/dma/sh/rcar-dmac.c
> > +++ b/drivers/dma/sh/rcar-dmac.c
> > @@ -208,12 +208,20 @@ struct rcar_dmac {
> >
> >  #define to_rcar_dmac(d)                container_of(d, struct rcar_dmac, engine)
> >
> > +/*
> > + * struct rcar_dmac_of_data - This driver's OF data
> > + * @chan_offset_base: DMAC channels base offset
> > + * @chan_offset_coefficient: DMAC channels offset coefficient
> 
> Perhaps "stride" instead of "coefficient"? Or "step"?
> 
> > @@ -1803,10 +1813,15 @@ static int rcar_dmac_probe(struct platform_device *pdev)
> >         unsigned int channels_offset = 0;
> >         struct dma_device *engine;
> >         struct rcar_dmac *dmac;
> > +       const struct rcar_dmac_of_data *data;
> >         struct resource *mem;
> >         unsigned int i;
> >         int ret;
> >
> > +       data = of_device_get_match_data(&pdev->dev);
> > +       if (!data)
> > +               return -EINVAL;
> 
> This cannot fail, as the driver is DT only, and all entries in the match table
> have a data pointer.

It seems to me that not including this check would make the code both more
fragile and less intuitive for a marginal gain in simplicity.

> 
> Gr{oetje,eeting}s,
> 
>                         Geert
> 
> -- 
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
> 
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
>                                 -- Linus Torvalds
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 0/2] dmaengine: rcar-dmac: minor modifications
  2019-08-27 11:10 [PATCH 0/2] dmaengine: rcar-dmac: minor modifications Yoshihiro Shimoda
  2019-08-27 11:10 ` [PATCH 1/2] dmaengine: rcar-dmac: Use of_data values instead of a macro Yoshihiro Shimoda
  2019-08-27 11:10 ` [PATCH 2/2] dmaengine: rcar-dmac: Use devm_platform_ioremap_resource() Yoshihiro Shimoda
@ 2019-09-04  6:09 ` Vinod Koul
  2019-09-04  6:14   ` Yoshihiro Shimoda
  2 siblings, 1 reply; 9+ messages in thread
From: Vinod Koul @ 2019-09-04  6:09 UTC (permalink / raw)
  To: Yoshihiro Shimoda; +Cc: dmaengine, linux-renesas-soc

On 27-08-19, 20:10, Yoshihiro Shimoda wrote:
> This patch series is based on renesas-drivers.git /
> renesas-drivers-2019-08-13-v5.3-rc4 tag. This is minor modifications
> to add support for changed registers memory mapping hardware support
> easily in the future.

This fails to apply for me, please rebase and resend.

Thanks

-- 
~Vinod

^ permalink raw reply	[flat|nested] 9+ messages in thread

* RE: [PATCH 0/2] dmaengine: rcar-dmac: minor modifications
  2019-09-04  6:09 ` [PATCH 0/2] dmaengine: rcar-dmac: minor modifications Vinod Koul
@ 2019-09-04  6:14   ` Yoshihiro Shimoda
  2019-09-04  9:33     ` Vinod Koul
  0 siblings, 1 reply; 9+ messages in thread
From: Yoshihiro Shimoda @ 2019-09-04  6:14 UTC (permalink / raw)
  To: Vinod Koul; +Cc: dmaengine, linux-renesas-soc

Hi Vinod,

> From: Vinod Koul, Sent: Wednesday, September 4, 2019 3:10 PM
> 
> On 27-08-19, 20:10, Yoshihiro Shimoda wrote:
> > This patch series is based on renesas-drivers.git /
> > renesas-drivers-2019-08-13-v5.3-rc4 tag. This is minor modifications
> > to add support for changed registers memory mapping hardware support
> > easily in the future.
> 
> This fails to apply for me, please rebase and resend.

I'm sorry for this. I'll rebase this patch series.
Also, I'll rebase the following patch as one series.
https://patchwork.kernel.org/patch/11118639/

And, note that the following patch [1] is already superseded.
https://patchwork.kernel.org/patch/11118637/

Best regards,
Yoshihiro Shimoda


> Thanks
> 
> --
> ~Vinod

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 0/2] dmaengine: rcar-dmac: minor modifications
  2019-09-04  6:14   ` Yoshihiro Shimoda
@ 2019-09-04  9:33     ` Vinod Koul
  0 siblings, 0 replies; 9+ messages in thread
From: Vinod Koul @ 2019-09-04  9:33 UTC (permalink / raw)
  To: Yoshihiro Shimoda; +Cc: dmaengine, linux-renesas-soc

On 04-09-19, 06:14, Yoshihiro Shimoda wrote:
> Hi Vinod,
> 
> > From: Vinod Koul, Sent: Wednesday, September 4, 2019 3:10 PM
> > 
> > On 27-08-19, 20:10, Yoshihiro Shimoda wrote:
> > > This patch series is based on renesas-drivers.git /
> > > renesas-drivers-2019-08-13-v5.3-rc4 tag. This is minor modifications
> > > to add support for changed registers memory mapping hardware support
> > > easily in the future.
> > 
> > This fails to apply for me, please rebase and resend.
> 
> I'm sorry for this. I'll rebase this patch series.
> Also, I'll rebase the following patch as one series.
> https://patchwork.kernel.org/patch/11118639/
> 
> And, note that the following patch [1] is already superseded.
> https://patchwork.kernel.org/patch/11118637/

Yes I think I picked the v2, please check my -next and send updated if
any on top of that :)

-- 
~Vinod

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, back to index

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-27 11:10 [PATCH 0/2] dmaengine: rcar-dmac: minor modifications Yoshihiro Shimoda
2019-08-27 11:10 ` [PATCH 1/2] dmaengine: rcar-dmac: Use of_data values instead of a macro Yoshihiro Shimoda
2019-08-27 13:08   ` Geert Uytterhoeven
2019-08-31  8:36     ` Simon Horman
2019-08-27 11:10 ` [PATCH 2/2] dmaengine: rcar-dmac: Use devm_platform_ioremap_resource() Yoshihiro Shimoda
2019-08-27 13:10   ` Geert Uytterhoeven
2019-09-04  6:09 ` [PATCH 0/2] dmaengine: rcar-dmac: minor modifications Vinod Koul
2019-09-04  6:14   ` Yoshihiro Shimoda
2019-09-04  9:33     ` Vinod Koul

dmaengine Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/dmaengine/0 dmaengine/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dmaengine dmaengine/ https://lore.kernel.org/dmaengine \
		dmaengine@vger.kernel.org
	public-inbox-index dmaengine

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.dmaengine


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git