* [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 related [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 related [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, other threads:[~2019-09-04 9:34 UTC | newest]
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
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).