diff mbox series

[v3,4/7] usb: renesas_usbhs: Drop has_new_pipe_configs from struct renesas_usbhs_driver_param

Message ID 20240315183921.375751-5-biju.das.jz@bp.renesas.com
State New
Headers show
Series Fix USB pipe configuration for RZ/G2L | expand

Commit Message

Biju Das March 15, 2024, 6:39 p.m. UTC
Drop has_new_pipe_configs variable from struct renesas_usbhs_driver_param
and use info for getting device pipe configuration data by renaming
usbhs_new_pipe[]->usbhs_rcar_pipe[] and changing the static qualifier to
global so that struct renesas_usbhs_platform_info can be filled by
respective devices.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
---
v3:
 * New patch
---
 drivers/usb/renesas_usbhs/common.c | 9 ++++-----
 drivers/usb/renesas_usbhs/common.h | 2 ++
 drivers/usb/renesas_usbhs/rcar2.c  | 3 ++-
 drivers/usb/renesas_usbhs/rcar3.c  | 6 ++++--
 drivers/usb/renesas_usbhs/rza.c    | 3 ++-
 drivers/usb/renesas_usbhs/rza2.c   | 3 ++-
 include/linux/usb/renesas_usbhs.h  | 1 -
 7 files changed, 16 insertions(+), 11 deletions(-)

Comments

Geert Uytterhoeven March 18, 2024, 9:22 a.m. UTC | #1
Hi Biju,

On Fri, Mar 15, 2024 at 7:39 PM Biju Das <biju.das.jz@bp.renesas.com> wrote:
> Drop has_new_pipe_configs variable from struct renesas_usbhs_driver_param
> and use info for getting device pipe configuration data by renaming
> usbhs_new_pipe[]->usbhs_rcar_pipe[] and changing the static qualifier to
> global so that struct renesas_usbhs_platform_info can be filled by
> respective devices.
>
> Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
> ---
> v3:
>  * New patch

Thanks for your patch!

>  drivers/usb/renesas_usbhs/common.c | 9 ++++-----
>  drivers/usb/renesas_usbhs/common.h | 2 ++
>  drivers/usb/renesas_usbhs/rcar2.c  | 3 ++-
>  drivers/usb/renesas_usbhs/rcar3.c  | 6 ++++--
>  drivers/usb/renesas_usbhs/rza.c    | 3 ++-
>  drivers/usb/renesas_usbhs/rza2.c   | 3 ++-
>  include/linux/usb/renesas_usbhs.h  | 1 -
>  7 files changed, 16 insertions(+), 11 deletions(-)

Do you need this patch, now RZ/V2H can just set .has_new_pipe_configs
to zero?

Gr{oetje,eeting}s,

                        Geert
Biju Das March 18, 2024, 9:33 a.m. UTC | #2
Hi Geert,

Thanks for the feedback.

> -----Original Message-----
> From: Geert Uytterhoeven <geert@linux-m68k.org>
> Sent: Monday, March 18, 2024 9:22 AM
> Subject: Re: [PATCH v3 4/7] usb: renesas_usbhs: Drop has_new_pipe_configs from struct
> renesas_usbhs_driver_param
> 
> Hi Biju,
> 
> On Fri, Mar 15, 2024 at 7:39 PM Biju Das <biju.das.jz@bp.renesas.com> wrote:
> > Drop has_new_pipe_configs variable from struct
> > renesas_usbhs_driver_param and use info for getting device pipe
> > configuration data by renaming usbhs_new_pipe[]->usbhs_rcar_pipe[] and
> > changing the static qualifier to global so that struct
> > renesas_usbhs_platform_info can be filled by respective devices.
> >
> > Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
> > ---
> > v3:
> >  * New patch
> 
> Thanks for your patch
> 
> >  drivers/usb/renesas_usbhs/common.c | 9 ++++-----
> > drivers/usb/renesas_usbhs/common.h | 2 ++
> > drivers/usb/renesas_usbhs/rcar2.c  | 3 ++-
> > drivers/usb/renesas_usbhs/rcar3.c  | 6 ++++--
> >  drivers/usb/renesas_usbhs/rza.c    | 3 ++-
> >  drivers/usb/renesas_usbhs/rza2.c   | 3 ++-
> >  include/linux/usb/renesas_usbhs.h  | 1 -
> >  7 files changed, 16 insertions(+), 11 deletions(-)
> 
> Do you need this patch, now RZ/V2H can just set .has_new_pipe_configs to zero?

RZ/V2H has similar configs with RZ/G2L and Old SH SoC's.

So, you mean just set . has_new_pipe_configs to zero
for devices using usbhsc_default_pipe[]??

Cheers,
Biju
Geert Uytterhoeven March 18, 2024, 9:50 a.m. UTC | #3
Hi Biju,

On Mon, Mar 18, 2024 at 10:33 AM Biju Das <biju.das.jz@bp.renesas.com> wrote:
> > -----Original Message-----
> > From: Geert Uytterhoeven <geert@linux-m68k.org>
> > Sent: Monday, March 18, 2024 9:22 AM
> > Subject: Re: [PATCH v3 4/7] usb: renesas_usbhs: Drop has_new_pipe_configs from struct
> > renesas_usbhs_driver_param
> >
> > Hi Biju,
> >
> > On Fri, Mar 15, 2024 at 7:39 PM Biju Das <biju.das.jz@bp.renesas.com> wrote:
> > > Drop has_new_pipe_configs variable from struct
> > > renesas_usbhs_driver_param and use info for getting device pipe
> > > configuration data by renaming usbhs_new_pipe[]->usbhs_rcar_pipe[] and
> > > changing the static qualifier to global so that struct
> > > renesas_usbhs_platform_info can be filled by respective devices.
> > >
> > > Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
> > > ---
> > > v3:
> > >  * New patch
> >
> > Thanks for your patch
> >
> > >  drivers/usb/renesas_usbhs/common.c | 9 ++++-----
> > > drivers/usb/renesas_usbhs/common.h | 2 ++
> > > drivers/usb/renesas_usbhs/rcar2.c  | 3 ++-
> > > drivers/usb/renesas_usbhs/rcar3.c  | 6 ++++--
> > >  drivers/usb/renesas_usbhs/rza.c    | 3 ++-
> > >  drivers/usb/renesas_usbhs/rza2.c   | 3 ++-
> > >  include/linux/usb/renesas_usbhs.h  | 1 -
> > >  7 files changed, 16 insertions(+), 11 deletions(-)
> >
> > Do you need this patch, now RZ/V2H can just set .has_new_pipe_configs to zero?
>
> RZ/V2H has similar configs with RZ/G2L and Old SH SoC's.

Sorry, I meant RZ/G2L (the RZ variants are starting to run around
inside my brain like cockroaches... ;-)

> So, you mean just set . has_new_pipe_configs to zero
> for devices using usbhsc_default_pipe[]??

Exactly. Wouldn't that be sufficient?

Now I have a better understanding of what renesas_usbhs_driver_pipe_config
does, the only thing that matters is how many entries you have, right?
So .has_new_pipe_configs = false means 10 entries, true means 16
entries. Hence if .probe() knows the number of entries, it can pick
a suitable table.
As long as there are only two tables, the boolean .has_new_pipe_configs
is fine.  If we ever need more tables, the boolean can be replaced by
a numerical value.

Gr{oetje,eeting}s,

                        Geert
diff mbox series

Patch

diff --git a/drivers/usb/renesas_usbhs/common.c b/drivers/usb/renesas_usbhs/common.c
index 177fa3144a47..013bc1583610 100644
--- a/drivers/usb/renesas_usbhs/common.c
+++ b/drivers/usb/renesas_usbhs/common.c
@@ -378,7 +378,7 @@  static struct renesas_usbhs_driver_pipe_config usbhsc_default_pipe[] = {
 };
 
 /* commonly used on newer SH-Mobile and R-Car SoCs */
-static struct renesas_usbhs_driver_pipe_config usbhsc_new_pipe[] = {
+struct renesas_usbhs_driver_pipe_config usbhsc_rcar_pipe[] = {
 	RENESAS_USBHS_PIPE(USB_ENDPOINT_XFER_CONTROL, 64, 0x00, false),
 	RENESAS_USBHS_PIPE(USB_ENDPOINT_XFER_ISOC, 1024, 0x08, true),
 	RENESAS_USBHS_PIPE(USB_ENDPOINT_XFER_ISOC, 1024, 0x28, true),
@@ -639,10 +639,9 @@  static int usbhs_probe(struct platform_device *pdev)
 	priv->pfunc = &info->platform_callback;
 
 	/* set default param if platform doesn't have */
-	if (usbhs_get_dparam(priv, has_new_pipe_configs)) {
-		priv->dparam.pipe_configs = usbhsc_new_pipe;
-		priv->dparam.pipe_size = ARRAY_SIZE(usbhsc_new_pipe);
-	} else if (!priv->dparam.pipe_configs) {
+	priv->dparam.pipe_configs = info->driver_param.pipe_configs;
+	priv->dparam.pipe_size = info->driver_param.pipe_size;
+	if (!priv->dparam.pipe_configs) {
 		priv->dparam.pipe_configs = usbhsc_default_pipe;
 		priv->dparam.pipe_size = ARRAY_SIZE(usbhsc_default_pipe);
 	}
diff --git a/drivers/usb/renesas_usbhs/common.h b/drivers/usb/renesas_usbhs/common.h
index 3fb5bc94dc0d..f6f527ca9b45 100644
--- a/drivers/usb/renesas_usbhs/common.h
+++ b/drivers/usb/renesas_usbhs/common.h
@@ -343,4 +343,6 @@  struct usbhs_priv *usbhs_pdev_to_priv(struct platform_device *pdev);
 #define usbhs_priv_to_dev(priv)		(&priv->pdev->dev)
 #define usbhs_priv_to_lock(priv)	(&priv->lock)
 
+extern struct renesas_usbhs_driver_pipe_config usbhsc_rcar_pipe[];
+
 #endif /* RENESAS_USB_DRIVER_H */
diff --git a/drivers/usb/renesas_usbhs/rcar2.c b/drivers/usb/renesas_usbhs/rcar2.c
index 52756fc2ac9c..170584f8de74 100644
--- a/drivers/usb/renesas_usbhs/rcar2.c
+++ b/drivers/usb/renesas_usbhs/rcar2.c
@@ -69,7 +69,8 @@  const struct renesas_usbhs_platform_info usbhs_rcar_gen2_plat_info = {
 		.get_id = usbhs_get_id_as_gadget,
 	},
 	.driver_param = {
+		.pipe_configs = usbhsc_rcar_pipe,
+		.pipe_size = 16,
 		.has_usb_dmac = 1,
-		.has_new_pipe_configs = 1,
 	},
 };
diff --git a/drivers/usb/renesas_usbhs/rcar3.c b/drivers/usb/renesas_usbhs/rcar3.c
index c181b2a0b9d3..da5c013cfd07 100644
--- a/drivers/usb/renesas_usbhs/rcar3.c
+++ b/drivers/usb/renesas_usbhs/rcar3.c
@@ -101,9 +101,10 @@  const struct renesas_usbhs_platform_info usbhs_rcar_gen3_plat_info = {
 		.get_id = usbhs_get_id_as_gadget,
 	},
 	.driver_param = {
+		.pipe_configs = usbhsc_rcar_pipe,
+		.pipe_size = 16,
 		.has_usb_dmac = 1,
 		.multi_clks = 1,
-		.has_new_pipe_configs = 1,
 	},
 };
 
@@ -113,8 +114,9 @@  const struct renesas_usbhs_platform_info usbhs_rcar_gen3_with_pll_plat_info = {
 		.get_id = usbhs_get_id_as_gadget,
 	},
 	.driver_param = {
+		.pipe_configs = usbhsc_rcar_pipe,
+		.pipe_size = 16,
 		.has_usb_dmac = 1,
 		.multi_clks = 1,
-		.has_new_pipe_configs = 1,
 	},
 };
diff --git a/drivers/usb/renesas_usbhs/rza.c b/drivers/usb/renesas_usbhs/rza.c
index 97b5217c5a90..91c1971c3949 100644
--- a/drivers/usb/renesas_usbhs/rza.c
+++ b/drivers/usb/renesas_usbhs/rza.c
@@ -51,6 +51,7 @@  const struct renesas_usbhs_platform_info usbhs_rza1_plat_info = {
 		.get_id = usbhs_get_id_as_gadget,
 	},
 	.driver_param = {
-		.has_new_pipe_configs = 1,
+		.pipe_configs = usbhsc_rcar_pipe,
+		.pipe_size = 16,
 	},
 };
diff --git a/drivers/usb/renesas_usbhs/rza2.c b/drivers/usb/renesas_usbhs/rza2.c
index f079817250bb..f6660628eea9 100644
--- a/drivers/usb/renesas_usbhs/rza2.c
+++ b/drivers/usb/renesas_usbhs/rza2.c
@@ -66,8 +66,9 @@  const struct renesas_usbhs_platform_info usbhs_rza2_plat_info = {
 		.get_id = usbhs_get_id_as_gadget,
 	},
 	.driver_param = {
+		.pipe_configs = usbhsc_rcar_pipe,
+		.pipe_size = 16,
 		.has_cnen = 1,
 		.cfifo_byte_addr = 1,
-		.has_new_pipe_configs = 1,
 	},
 };
diff --git a/include/linux/usb/renesas_usbhs.h b/include/linux/usb/renesas_usbhs.h
index 372898d9eeb0..41f58cfbd876 100644
--- a/include/linux/usb/renesas_usbhs.h
+++ b/include/linux/usb/renesas_usbhs.h
@@ -169,7 +169,6 @@  struct renesas_usbhs_driver_param {
 	u32 cfifo_byte_addr:1; /* CFIFO is byte addressable */
 #define USBHS_USB_DMAC_XFER_SIZE	32	/* hardcode the xfer size */
 	u32 multi_clks:1;
-	u32 has_new_pipe_configs:1;
 };
 
 /*