* [v2,02/10] usb: host: xhci: mvebu: add reset on resume quirk
@ 2019-01-11 13:31 Miquel Raynal
0 siblings, 0 replies; 3+ messages in thread
From: Miquel Raynal @ 2019-01-11 13:31 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Gregory Clement, Jason Cooper,
Andrew Lunn, Sebastian Hesselbarth, Rob Herring, Mark Rutland,
Greg Kroah-Hartman, Mathias Nyman, Alan Stern
Cc: devicetree, linux-arm-kernel, linux-usb, Thomas Petazzoni,
Antoine Tenart, Maxime Chevallier, Nadav Haklai, Ofer Heifetz,
Miquel Raynal
From: Ofer Heifetz <oferh@marvell.com>
The mvebu xHCI host driver does not have suspend/resume support. Use of
the XHCI_RESET_ON_RESUME quirk is mandatory in order to avoid failures
after resume. This will work only if no USB device is plugged-in.
While at it, mention in the Kconfig file that this IP is also present
on the A3700 SoC.
Signed-off-by: Ofer Heifetz <oferh@marvell.com>
[miquel.raynal@bootlin.com: Reword the commit message]
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
drivers/usb/host/Kconfig | 4 ++--
drivers/usb/host/xhci-mvebu.c | 11 +++++++++++
drivers/usb/host/xhci-mvebu.h | 6 ++++++
drivers/usb/host/xhci-plat.c | 7 +++++++
4 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
index 16758b12a5e9..13d59be6a6aa 100644
--- a/drivers/usb/host/Kconfig
+++ b/drivers/usb/host/Kconfig
@@ -69,13 +69,13 @@ config USB_XHCI_MTK
If unsure, say N.
config USB_XHCI_MVEBU
- tristate "xHCI support for Marvell Armada 375/38x"
+ tristate "xHCI support for Marvell Armada 375/38x/3700"
select USB_XHCI_PLATFORM
depends on HAS_IOMEM
depends on ARCH_MVEBU || COMPILE_TEST
---help---
Say 'Y' to enable the support for the xHCI host controller
- found in Marvell Armada 375/38x ARM SOCs.
+ found in Marvell Armada 375/38x/3700 ARM SOCs.
config USB_XHCI_RCAR
tristate "xHCI support for Renesas R-Car SoCs"
diff --git a/drivers/usb/host/xhci-mvebu.c b/drivers/usb/host/xhci-mvebu.c
index 32e158568788..60651a50770f 100644
--- a/drivers/usb/host/xhci-mvebu.c
+++ b/drivers/usb/host/xhci-mvebu.c
@@ -13,6 +13,7 @@
#include <linux/usb/hcd.h>
#include "xhci-mvebu.h"
+#include "xhci.h"
#define USB3_MAX_WINDOWS 4
#define USB3_WIN_CTRL(w) (0x0 + ((w) * 8))
@@ -72,3 +73,13 @@ int xhci_mvebu_mbus_init_quirk(struct usb_hcd *hcd)
return 0;
}
+
+int xhci_mvebu_a3700_init_quirk(struct usb_hcd *hcd)
+{
+ struct xhci_hcd *xhci = hcd_to_xhci(hcd);
+
+ /* Without reset on resume, the HC won't work at all */
+ xhci->quirks |= XHCI_RESET_ON_RESUME;
+
+ return 0;
+}
diff --git a/drivers/usb/host/xhci-mvebu.h b/drivers/usb/host/xhci-mvebu.h
index 09791df2cec0..ca0a3a5721dd 100644
--- a/drivers/usb/host/xhci-mvebu.h
+++ b/drivers/usb/host/xhci-mvebu.h
@@ -12,10 +12,16 @@ struct usb_hcd;
#if IS_ENABLED(CONFIG_USB_XHCI_MVEBU)
int xhci_mvebu_mbus_init_quirk(struct usb_hcd *hcd);
+int xhci_mvebu_a3700_init_quirk(struct usb_hcd *hcd);
#else
static inline int xhci_mvebu_mbus_init_quirk(struct usb_hcd *hcd)
{
return 0;
}
+
+static inline int xhci_mvebu_a3700_init_quirk(struct usb_hcd *hcd)
+{
+ return 0;
+}
#endif
#endif /* __LINUX_XHCI_MVEBU_H */
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
index ef09cb06212f..0ac4ec975547 100644
--- a/drivers/usb/host/xhci-plat.c
+++ b/drivers/usb/host/xhci-plat.c
@@ -98,6 +98,10 @@ static const struct xhci_plat_priv xhci_plat_marvell_armada = {
.init_quirk = xhci_mvebu_mbus_init_quirk,
};
+static const struct xhci_plat_priv xhci_plat_marvell_armada3700 = {
+ .init_quirk = xhci_mvebu_a3700_init_quirk,
+};
+
static const struct xhci_plat_priv xhci_plat_renesas_rcar_gen2 = {
.firmware_name = XHCI_RCAR_FIRMWARE_NAME_V1,
.init_quirk = xhci_rcar_init_quirk,
@@ -123,6 +127,9 @@ static const struct of_device_id usb_xhci_of_match[] = {
}, {
.compatible = "marvell,armada-380-xhci",
.data = &xhci_plat_marvell_armada,
+ }, {
+ .compatible = "marvell,armada3700-xhci",
+ .data = &xhci_plat_marvell_armada3700,
}, {
.compatible = "renesas,xhci-r8a7790",
.data = &xhci_plat_renesas_rcar_gen2,
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [v2,02/10] usb: host: xhci: mvebu: add reset on resume quirk
@ 2019-01-18 16:04 Gregory CLEMENT
0 siblings, 0 replies; 3+ messages in thread
From: Gregory CLEMENT @ 2019-01-18 16:04 UTC (permalink / raw)
To: Miquel Raynal
Cc: Kishon Vijay Abraham I, Jason Cooper, Andrew Lunn,
Sebastian Hesselbarth, Rob Herring, Mark Rutland,
Greg Kroah-Hartman, Mathias Nyman, Alan Stern, devicetree,
linux-arm-kernel, linux-usb, Thomas Petazzoni, Antoine Tenart,
Maxime Chevallier, Nadav Haklai, Ofer Heifetz
Hi Miquel,
On ven., janv. 11 2019, Miquel Raynal <miquel.raynal@bootlin.com> wrote:
> From: Ofer Heifetz <oferh@marvell.com>
>
> The mvebu xHCI host driver does not have suspend/resume support. Use of
> the XHCI_RESET_ON_RESUME quirk is mandatory in order to avoid failures
> after resume. This will work only if no USB device is plugged-in.
>
> While at it, mention in the Kconfig file that this IP is also present
> on the A3700 SoC.
>
> Signed-off-by: Ofer Heifetz <oferh@marvell.com>
> [miquel.raynal@bootlin.com: Reword the commit message]
> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
> ---
> drivers/usb/host/Kconfig | 4 ++--
> drivers/usb/host/xhci-mvebu.c | 11 +++++++++++
> drivers/usb/host/xhci-mvebu.h | 6 ++++++
> drivers/usb/host/xhci-plat.c | 7 +++++++
> 4 files changed, 26 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
> index 16758b12a5e9..13d59be6a6aa 100644
> --- a/drivers/usb/host/Kconfig
> +++ b/drivers/usb/host/Kconfig
> @@ -69,13 +69,13 @@ config USB_XHCI_MTK
> If unsure, say N.
>
> config USB_XHCI_MVEBU
> - tristate "xHCI support for Marvell Armada 375/38x"
> + tristate "xHCI support for Marvell Armada 375/38x/3700"
I would name it 37xx to be consistent with 38x
> select USB_XHCI_PLATFORM
> depends on HAS_IOMEM
> depends on ARCH_MVEBU || COMPILE_TEST
> ---help---
> Say 'Y' to enable the support for the xHCI host controller
> - found in Marvell Armada 375/38x ARM SOCs.
> + found in Marvell Armada 375/38x/3700 ARM SOCs.
same here
>
> config USB_XHCI_RCAR
> tristate "xHCI support for Renesas R-Car SoCs"
> diff --git a/drivers/usb/host/xhci-mvebu.c b/drivers/usb/host/xhci-mvebu.c
> index 32e158568788..60651a50770f 100644
> --- a/drivers/usb/host/xhci-mvebu.c
> +++ b/drivers/usb/host/xhci-mvebu.c
> @@ -13,6 +13,7 @@
> #include <linux/usb/hcd.h>
>
> #include "xhci-mvebu.h"
> +#include "xhci.h"
>
> #define USB3_MAX_WINDOWS 4
> #define USB3_WIN_CTRL(w) (0x0 + ((w) * 8))
> @@ -72,3 +73,13 @@ int xhci_mvebu_mbus_init_quirk(struct usb_hcd *hcd)
>
> return 0;
> }
> +
> +int xhci_mvebu_a3700_init_quirk(struct usb_hcd *hcd)
> +{
> + struct xhci_hcd *xhci = hcd_to_xhci(hcd);
> +
> + /* Without reset on resume, the HC won't work at all */
> + xhci->quirks |= XHCI_RESET_ON_RESUME;
> +
> + return 0;
> +}
> diff --git a/drivers/usb/host/xhci-mvebu.h b/drivers/usb/host/xhci-mvebu.h
> index 09791df2cec0..ca0a3a5721dd 100644
> --- a/drivers/usb/host/xhci-mvebu.h
> +++ b/drivers/usb/host/xhci-mvebu.h
> @@ -12,10 +12,16 @@ struct usb_hcd;
>
> #if IS_ENABLED(CONFIG_USB_XHCI_MVEBU)
> int xhci_mvebu_mbus_init_quirk(struct usb_hcd *hcd);
> +int xhci_mvebu_a3700_init_quirk(struct usb_hcd *hcd);
> #else
> static inline int xhci_mvebu_mbus_init_quirk(struct usb_hcd *hcd)
> {
> return 0;
> }
> +
> +static inline int xhci_mvebu_a3700_init_quirk(struct usb_hcd *hcd)
> +{
> + return 0;
> +}
> #endif
> #endif /* __LINUX_XHCI_MVEBU_H */
> diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
> index ef09cb06212f..0ac4ec975547 100644
> --- a/drivers/usb/host/xhci-plat.c
> +++ b/drivers/usb/host/xhci-plat.c
> @@ -98,6 +98,10 @@ static const struct xhci_plat_priv xhci_plat_marvell_armada = {
> .init_quirk = xhci_mvebu_mbus_init_quirk,
> };
>
> +static const struct xhci_plat_priv xhci_plat_marvell_armada3700 = {
> + .init_quirk = xhci_mvebu_a3700_init_quirk,
> +};
> +
> static const struct xhci_plat_priv xhci_plat_renesas_rcar_gen2 = {
> .firmware_name = XHCI_RCAR_FIRMWARE_NAME_V1,
> .init_quirk = xhci_rcar_init_quirk,
> @@ -123,6 +127,9 @@ static const struct of_device_id usb_xhci_of_match[] = {
> }, {
> .compatible = "marvell,armada-380-xhci",
> .data = &xhci_plat_marvell_armada,
> + }, {
> + .compatible = "marvell,armada3700-xhci",
> + .data = &xhci_plat_marvell_armada3700,
Reviewed-by: Gregory CLEMENT <gregory.clement@bootlin.com>
Thanks,
Gregory
^ permalink raw reply [flat|nested] 3+ messages in thread
* [v2,02/10] usb: host: xhci: mvebu: add reset on resume quirk
@ 2019-01-21 10:54 Miquel Raynal
0 siblings, 0 replies; 3+ messages in thread
From: Miquel Raynal @ 2019-01-21 10:54 UTC (permalink / raw)
To: Gregory CLEMENT
Cc: Kishon Vijay Abraham I, Jason Cooper, Andrew Lunn,
Sebastian Hesselbarth, Rob Herring, Mark Rutland,
Greg Kroah-Hartman, Mathias Nyman, Alan Stern, devicetree,
linux-arm-kernel, linux-usb, Thomas Petazzoni, Antoine Tenart,
Maxime Chevallier, Nadav Haklai, Ofer Heifetz
Hi Gregory,
Gregory CLEMENT <gregory.clement@bootlin.com> wrote on Fri, 18 Jan 2019
17:04:01 +0100:
> Hi Miquel,
>
> On ven., janv. 11 2019, Miquel Raynal <miquel.raynal@bootlin.com> wrote:
>
> > From: Ofer Heifetz <oferh@marvell.com>
> >
> > The mvebu xHCI host driver does not have suspend/resume support. Use of
> > the XHCI_RESET_ON_RESUME quirk is mandatory in order to avoid failures
> > after resume. This will work only if no USB device is plugged-in.
> >
> > While at it, mention in the Kconfig file that this IP is also present
> > on the A3700 SoC.
> >
> > Signed-off-by: Ofer Heifetz <oferh@marvell.com>
> > [miquel.raynal@bootlin.com: Reword the commit message]
> > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
> > ---
> > drivers/usb/host/Kconfig | 4 ++--
> > drivers/usb/host/xhci-mvebu.c | 11 +++++++++++
> > drivers/usb/host/xhci-mvebu.h | 6 ++++++
> > drivers/usb/host/xhci-plat.c | 7 +++++++
> > 4 files changed, 26 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
> > index 16758b12a5e9..13d59be6a6aa 100644
> > --- a/drivers/usb/host/Kconfig
> > +++ b/drivers/usb/host/Kconfig
> > @@ -69,13 +69,13 @@ config USB_XHCI_MTK
> > If unsure, say N.
> >
> > config USB_XHCI_MVEBU
> > - tristate "xHCI support for Marvell Armada 375/38x"
> > + tristate "xHCI support for Marvell Armada 375/38x/3700"
>
> I would name it 37xx to be consistent with 38x
>
> > select USB_XHCI_PLATFORM
> > depends on HAS_IOMEM
> > depends on ARCH_MVEBU || COMPILE_TEST
> > ---help---
> > Say 'Y' to enable the support for the xHCI host controller
> > - found in Marvell Armada 375/38x ARM SOCs.
> > + found in Marvell Armada 375/38x/3700 ARM SOCs.
> same here
>
Sure!
Thanks,
Miquèl
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-01-21 10:54 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-01-21 10:54 [v2,02/10] usb: host: xhci: mvebu: add reset on resume quirk Miquel Raynal
-- strict thread matches above, loose matches on Subject: below --
2019-01-18 16:04 Gregory CLEMENT
2019-01-11 13:31 Miquel Raynal
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).