diff mbox series

[2/3] usb: gadget: aspeed: add ast2600 vhub support

Message ID 20200131222157.20849-3-rentao.bupt@gmail.com (mailing list archive)
State New, archived
Headers show
Series aspeed-g6: enable usb support | expand

Commit Message

Tao Ren Jan. 31, 2020, 10:21 p.m. UTC
From: Tao Ren <rentao.bupt@gmail.com>

Add AST2600 support in aspeed-vhub driver. There are 3 major differences
between AST2500 and AST2600 vhub:
  - AST2600 supports 7 downstream ports while AST2500 supports 5.
  - AST2600 supports 21 generic endpoints while AST2500 supports 15.
  - EP0 data buffer's 8-byte DMA alignment restriction is removed from
    AST2600.

Signed-off-by: Tao Ren <rentao.bupt@gmail.com>
Reviewed-by: Andrew Jeffery <andrew@aj.id.au>
---
 drivers/usb/gadget/udc/aspeed-vhub/Kconfig | 4 ++--
 drivers/usb/gadget/udc/aspeed-vhub/core.c  | 9 +++++++++
 2 files changed, 11 insertions(+), 2 deletions(-)

Comments

Joel Stanley Feb. 10, 2020, 2:48 a.m. UTC | #1
On Fri, 31 Jan 2020 at 22:22, <rentao.bupt@gmail.com> wrote:
>
> From: Tao Ren <rentao.bupt@gmail.com>
>
> Add AST2600 support in aspeed-vhub driver. There are 3 major differences
> between AST2500 and AST2600 vhub:
>   - AST2600 supports 7 downstream ports while AST2500 supports 5.
>   - AST2600 supports 21 generic endpoints while AST2500 supports 15.
>   - EP0 data buffer's 8-byte DMA alignment restriction is removed from
>     AST2600.
>
> Signed-off-by: Tao Ren <rentao.bupt@gmail.com>
> Reviewed-by: Andrew Jeffery <andrew@aj.id.au>

Reviewed-by: Joel Stanley <joel@jms.id.au>

> ---
>  drivers/usb/gadget/udc/aspeed-vhub/Kconfig | 4 ++--
>  drivers/usb/gadget/udc/aspeed-vhub/core.c  | 9 +++++++++
>  2 files changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/gadget/udc/aspeed-vhub/Kconfig b/drivers/usb/gadget/udc/aspeed-vhub/Kconfig
> index 83ba8a2eb6af..605500b19cf3 100644
> --- a/drivers/usb/gadget/udc/aspeed-vhub/Kconfig
> +++ b/drivers/usb/gadget/udc/aspeed-vhub/Kconfig
> @@ -4,5 +4,5 @@ config USB_ASPEED_VHUB
>         depends on ARCH_ASPEED || COMPILE_TEST
>         depends on USB_LIBCOMPOSITE
>         help
> -         USB peripheral controller for the Aspeed AST2500 family
> -         SoCs supporting the "vHub" functionality and USB2.0
> +         USB peripheral controller for the Aspeed AST2400, AST2500 and
> +         AST2600 family SoCs supporting the "vHub" functionality and USB2.0
> diff --git a/drivers/usb/gadget/udc/aspeed-vhub/core.c b/drivers/usb/gadget/udc/aspeed-vhub/core.c
> index 94081cc04113..c827bf420278 100644
> --- a/drivers/usb/gadget/udc/aspeed-vhub/core.c
> +++ b/drivers/usb/gadget/udc/aspeed-vhub/core.c
> @@ -42,6 +42,11 @@ static const struct ast_vhub_config ast2400_config = {
>         .max_epns = 15,
>  };
>
> +static const struct ast_vhub_config ast2600_config = {
> +       .max_ports = 7,
> +       .max_epns = 21,
> +};
> +
>  static const struct of_device_id ast_vhub_dt_ids[] = {
>         {
>                 .compatible = "aspeed,ast2400-usb-vhub",
> @@ -51,6 +56,10 @@ static const struct of_device_id ast_vhub_dt_ids[] = {
>                 .compatible = "aspeed,ast2500-usb-vhub",
>                 .data = &ast2400_config,
>         },
> +       {
> +               .compatible = "aspeed,ast2600-usb-vhub",
> +               .data = &ast2600_config,
> +       },
>         { }
>  };
>  MODULE_DEVICE_TABLE(of, ast_vhub_dt_ids);
> --
> 2.17.1
>
Benjamin Herrenschmidt Feb. 10, 2020, 7:29 a.m. UTC | #2
On Mon, 2020-02-10 at 02:48 +0000, Joel Stanley wrote:
> On Fri, 31 Jan 2020 at 22:22, <rentao.bupt@gmail.com> wrote:
> > 
> > From: Tao Ren <rentao.bupt@gmail.com>
> > 
> > Add AST2600 support in aspeed-vhub driver. There are 3 major differences
> > between AST2500 and AST2600 vhub:
> >   - AST2600 supports 7 downstream ports while AST2500 supports 5.
> >   - AST2600 supports 21 generic endpoints while AST2500 supports 15.
> >   - EP0 data buffer's 8-byte DMA alignment restriction is removed from
> >     AST2600.
> > 
> > Signed-off-by: Tao Ren <rentao.bupt@gmail.com>
> > Reviewed-by: Andrew Jeffery <andrew@aj.id.au>

Travelling at the moment so my review might be a bit delayed. Also for
some reason I missed your original submission, sorry about that, please
poke me next time if I don't reply within a couple of days !

One thing to look into as well is the 2600 has revived the "device
controller" which looks like a cut down version of a vhub device, so we
should break a bit more the linkage between vhub and the underlying
devices so the latter can be instanciated standalone...

(Foor for thought, I'm not asking you to do that right now)

Cheers,
Ben.

> Reviewed-by: Joel Stanley <joel@jms.id.au>
> 
> > ---
> >  drivers/usb/gadget/udc/aspeed-vhub/Kconfig | 4 ++--
> >  drivers/usb/gadget/udc/aspeed-vhub/core.c  | 9 +++++++++
> >  2 files changed, 11 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/usb/gadget/udc/aspeed-vhub/Kconfig b/drivers/usb/gadget/udc/aspeed-vhub/Kconfig
> > index 83ba8a2eb6af..605500b19cf3 100644
> > --- a/drivers/usb/gadget/udc/aspeed-vhub/Kconfig
> > +++ b/drivers/usb/gadget/udc/aspeed-vhub/Kconfig
> > @@ -4,5 +4,5 @@ config USB_ASPEED_VHUB
> >         depends on ARCH_ASPEED || COMPILE_TEST
> >         depends on USB_LIBCOMPOSITE
> >         help
> > -         USB peripheral controller for the Aspeed AST2500 family
> > -         SoCs supporting the "vHub" functionality and USB2.0
> > +         USB peripheral controller for the Aspeed AST2400, AST2500 and
> > +         AST2600 family SoCs supporting the "vHub" functionality and USB2.0
> > diff --git a/drivers/usb/gadget/udc/aspeed-vhub/core.c b/drivers/usb/gadget/udc/aspeed-vhub/core.c
> > index 94081cc04113..c827bf420278 100644
> > --- a/drivers/usb/gadget/udc/aspeed-vhub/core.c
> > +++ b/drivers/usb/gadget/udc/aspeed-vhub/core.c
> > @@ -42,6 +42,11 @@ static const struct ast_vhub_config ast2400_config = {
> >         .max_epns = 15,
> >  };
> > 
> > +static const struct ast_vhub_config ast2600_config = {
> > +       .max_ports = 7,
> > +       .max_epns = 21,
> > +};
> > +
> >  static const struct of_device_id ast_vhub_dt_ids[] = {
> >         {
> >                 .compatible = "aspeed,ast2400-usb-vhub",
> > @@ -51,6 +56,10 @@ static const struct of_device_id ast_vhub_dt_ids[] = {
> >                 .compatible = "aspeed,ast2500-usb-vhub",
> >                 .data = &ast2400_config,
> >         },
> > +       {
> > +               .compatible = "aspeed,ast2600-usb-vhub",
> > +               .data = &ast2600_config,
> > +       },
> >         { }
> >  };
> >  MODULE_DEVICE_TABLE(of, ast_vhub_dt_ids);
> > --
> > 2.17.1
> >
Tao Ren Feb. 10, 2020, 7:31 p.m. UTC | #3
On Mon, Feb 10, 2020 at 08:29:22AM +0100, Benjamin Herrenschmidt wrote:
> On Mon, 2020-02-10 at 02:48 +0000, Joel Stanley wrote:
> > On Fri, 31 Jan 2020 at 22:22, <rentao.bupt@gmail.com> wrote:
> > > 
> > > From: Tao Ren <rentao.bupt@gmail.com>
> > > 
> > > Add AST2600 support in aspeed-vhub driver. There are 3 major differences
> > > between AST2500 and AST2600 vhub:
> > >   - AST2600 supports 7 downstream ports while AST2500 supports 5.
> > >   - AST2600 supports 21 generic endpoints while AST2500 supports 15.
> > >   - EP0 data buffer's 8-byte DMA alignment restriction is removed from
> > >     AST2600.
> > > 
> > > Signed-off-by: Tao Ren <rentao.bupt@gmail.com>
> > > Reviewed-by: Andrew Jeffery <andrew@aj.id.au>
> 
> Travelling at the moment so my review might be a bit delayed. Also for
> some reason I missed your original submission, sorry about that, please
> poke me next time if I don't reply within a couple of days !

No worries Ben and thanks for the review. I thought people was too busy
during merge window :)

> 
> One thing to look into as well is the 2600 has revived the "device
> controller" which looks like a cut down version of a vhub device, so we
> should break a bit more the linkage between vhub and the underlying
> devices so the latter can be instanciated standalone...
> 
> (Foor for thought, I'm not asking you to do that right now)

Thanks for sharing your thought. I was actually curious why "device
controller" was back. Anyways I feel it might be easier to break the
linkage when we decide to add driver for the "device controller".


Cheers,

Tao
> 
> Cheers,
> Ben.
> 
> > Reviewed-by: Joel Stanley <joel@jms.id.au>
> > 
> > > ---
> > >  drivers/usb/gadget/udc/aspeed-vhub/Kconfig | 4 ++--
> > >  drivers/usb/gadget/udc/aspeed-vhub/core.c  | 9 +++++++++
> > >  2 files changed, 11 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/drivers/usb/gadget/udc/aspeed-vhub/Kconfig b/drivers/usb/gadget/udc/aspeed-vhub/Kconfig
> > > index 83ba8a2eb6af..605500b19cf3 100644
> > > --- a/drivers/usb/gadget/udc/aspeed-vhub/Kconfig
> > > +++ b/drivers/usb/gadget/udc/aspeed-vhub/Kconfig
> > > @@ -4,5 +4,5 @@ config USB_ASPEED_VHUB
> > >         depends on ARCH_ASPEED || COMPILE_TEST
> > >         depends on USB_LIBCOMPOSITE
> > >         help
> > > -         USB peripheral controller for the Aspeed AST2500 family
> > > -         SoCs supporting the "vHub" functionality and USB2.0
> > > +         USB peripheral controller for the Aspeed AST2400, AST2500 and
> > > +         AST2600 family SoCs supporting the "vHub" functionality and USB2.0
> > > diff --git a/drivers/usb/gadget/udc/aspeed-vhub/core.c b/drivers/usb/gadget/udc/aspeed-vhub/core.c
> > > index 94081cc04113..c827bf420278 100644
> > > --- a/drivers/usb/gadget/udc/aspeed-vhub/core.c
> > > +++ b/drivers/usb/gadget/udc/aspeed-vhub/core.c
> > > @@ -42,6 +42,11 @@ static const struct ast_vhub_config ast2400_config = {
> > >         .max_epns = 15,
> > >  };
> > > 
> > > +static const struct ast_vhub_config ast2600_config = {
> > > +       .max_ports = 7,
> > > +       .max_epns = 21,
> > > +};
> > > +
> > >  static const struct of_device_id ast_vhub_dt_ids[] = {
> > >         {
> > >                 .compatible = "aspeed,ast2400-usb-vhub",
> > > @@ -51,6 +56,10 @@ static const struct of_device_id ast_vhub_dt_ids[] = {
> > >                 .compatible = "aspeed,ast2500-usb-vhub",
> > >                 .data = &ast2400_config,
> > >         },
> > > +       {
> > > +               .compatible = "aspeed,ast2600-usb-vhub",
> > > +               .data = &ast2600_config,
> > > +       },
> > >         { }
> > >  };
> > >  MODULE_DEVICE_TABLE(of, ast_vhub_dt_ids);
> > > --
> > > 2.17.1
> > > 
>
diff mbox series

Patch

diff --git a/drivers/usb/gadget/udc/aspeed-vhub/Kconfig b/drivers/usb/gadget/udc/aspeed-vhub/Kconfig
index 83ba8a2eb6af..605500b19cf3 100644
--- a/drivers/usb/gadget/udc/aspeed-vhub/Kconfig
+++ b/drivers/usb/gadget/udc/aspeed-vhub/Kconfig
@@ -4,5 +4,5 @@  config USB_ASPEED_VHUB
 	depends on ARCH_ASPEED || COMPILE_TEST
 	depends on USB_LIBCOMPOSITE
 	help
-	  USB peripheral controller for the Aspeed AST2500 family
-	  SoCs supporting the "vHub" functionality and USB2.0
+	  USB peripheral controller for the Aspeed AST2400, AST2500 and
+	  AST2600 family SoCs supporting the "vHub" functionality and USB2.0
diff --git a/drivers/usb/gadget/udc/aspeed-vhub/core.c b/drivers/usb/gadget/udc/aspeed-vhub/core.c
index 94081cc04113..c827bf420278 100644
--- a/drivers/usb/gadget/udc/aspeed-vhub/core.c
+++ b/drivers/usb/gadget/udc/aspeed-vhub/core.c
@@ -42,6 +42,11 @@  static const struct ast_vhub_config ast2400_config = {
 	.max_epns = 15,
 };
 
+static const struct ast_vhub_config ast2600_config = {
+	.max_ports = 7,
+	.max_epns = 21,
+};
+
 static const struct of_device_id ast_vhub_dt_ids[] = {
 	{
 		.compatible = "aspeed,ast2400-usb-vhub",
@@ -51,6 +56,10 @@  static const struct of_device_id ast_vhub_dt_ids[] = {
 		.compatible = "aspeed,ast2500-usb-vhub",
 		.data = &ast2400_config,
 	},
+	{
+		.compatible = "aspeed,ast2600-usb-vhub",
+		.data = &ast2600_config,
+	},
 	{ }
 };
 MODULE_DEVICE_TABLE(of, ast_vhub_dt_ids);