2019-07-31 11:19:07

by Srinath Mannam

[permalink] [raw]
Subject: [PATCH v2 0/4] Reset xHCI port PHY on disconnect

This patch set adds a quirk in xHCI driver to reset PHY of xHCI port on
its disconnect event.

This patch set is based on Linux-5.2-rc4.

Changes from v1:
- Addressed Mathias's comments
- Modified mapping of HC ports and their corresponding PHYs
- Addressed Rob's comments
- Removed usb-phy-port-reset DT property.
- Added quirk in platform data using HCI compatible string.
- Add phy ports in phy attr structure to have enabled ports bitmask.
- Modified #phy-cells of sr-phy to pass phy ports bitmask.

Srinath Mannam (4):
phy: Add phy ports in attrs
dt-bindings: phy: Modify Stingray USB PHY #phy-cells
phy: sr-usb: Set phy ports
dt-bindings: usb-xhci: Add platform specific compatible for Stingray
xHCI
drivers: xhci: Add quirk to reset xHCI port PHY

.../devicetree/bindings/phy/brcm,stingray-usb-phy.txt | 14 ++++++++------
Documentation/devicetree/bindings/usb/usb-xhci.txt | 1 +
drivers/phy/broadcom/phy-bcm-sr-usb.c | 9 ++++++++-
drivers/usb/core/hcd.c | 6 ++++++
drivers/usb/core/phy.c | 19 +++++++++++++++++++
drivers/usb/core/phy.h | 1 +
drivers/usb/host/xhci-plat.c | 10 ++++++++++
drivers/usb/host/xhci-plat.h | 1 +
drivers/usb/host/xhci-ring.c | 9 ++++++---
drivers/usb/host/xhci.h | 1 +
include/linux/phy/phy.h | 10 ++++++++++
include/linux/usb/hcd.h | 1 +
12 files changed, 72 insertions(+), 10 deletions(-)

--
2.7.4


2019-07-31 11:20:42

by Srinath Mannam

[permalink] [raw]
Subject: [PATCH v2 5/5] drivers: xhci: Add quirk to reset xHCI port PHY

Stingray USB HS PHY has an issue, that USB High Speed device detects
at Full Speed if the same port was connected to Full speed device.
This problem can be resolved by resetting that port's PHY on disconnect.
Add a quirk to reset xHCI port PHY on port disconnect event.
XHCI_RESET_PHY_ON_DISCONNECT quirk is introduced with xhci_plat_brcm_sr
platform data. New quirks parameter added in xhci_plat_priv structure to
assign platform specific quirks.

Signed-off-by: Srinath Mannam <[email protected]>
---
drivers/usb/core/hcd.c | 6 ++++++
drivers/usb/core/phy.c | 19 +++++++++++++++++++
drivers/usb/core/phy.h | 1 +
drivers/usb/host/xhci-plat.c | 10 ++++++++++
drivers/usb/host/xhci-plat.h | 1 +
drivers/usb/host/xhci-ring.c | 9 ++++++---
drivers/usb/host/xhci.h | 1 +
include/linux/usb/hcd.h | 1 +
8 files changed, 45 insertions(+), 3 deletions(-)

diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
index 94d2255..a23441b 100644
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
@@ -2675,6 +2675,12 @@ int usb_hcd_find_raw_port_number(struct usb_hcd *hcd, int port1)
return hcd->driver->find_raw_port_number(hcd, port1);
}

+int usb_hcd_phy_port_reset(struct usb_hcd *hcd, int port)
+{
+ return usb_phy_roothub_port_reset(hcd->phy_roothub, port);
+}
+EXPORT_SYMBOL_GPL(usb_hcd_phy_port_reset);
+
static int usb_hcd_request_irqs(struct usb_hcd *hcd,
unsigned int irqnum, unsigned long irqflags)
{
diff --git a/drivers/usb/core/phy.c b/drivers/usb/core/phy.c
index 7580493..4d1ac31 100644
--- a/drivers/usb/core/phy.c
+++ b/drivers/usb/core/phy.c
@@ -190,6 +190,25 @@ void usb_phy_roothub_power_off(struct usb_phy_roothub *phy_roothub)
}
EXPORT_SYMBOL_GPL(usb_phy_roothub_power_off);

+int usb_phy_roothub_port_reset(struct usb_phy_roothub *phy_roothub, int port)
+{
+ struct usb_phy_roothub *roothub_entry;
+ struct list_head *head;
+
+ if (!phy_roothub)
+ return -EINVAL;
+
+ head = &phy_roothub->list;
+
+ list_for_each_entry(roothub_entry, head, list) {
+ if (phy_get_phy_ports(roothub_entry->phy) & BIT(port))
+ return phy_reset(roothub_entry->phy);
+ }
+
+ return -ENODEV;
+}
+EXPORT_SYMBOL_GPL(usb_phy_roothub_port_reset);
+
int usb_phy_roothub_suspend(struct device *controller_dev,
struct usb_phy_roothub *phy_roothub)
{
diff --git a/drivers/usb/core/phy.h b/drivers/usb/core/phy.h
index dad564e..3f682e8 100644
--- a/drivers/usb/core/phy.h
+++ b/drivers/usb/core/phy.h
@@ -20,6 +20,7 @@ int usb_phy_roothub_set_mode(struct usb_phy_roothub *phy_roothub,
enum phy_mode mode);
int usb_phy_roothub_power_on(struct usb_phy_roothub *phy_roothub);
void usb_phy_roothub_power_off(struct usb_phy_roothub *phy_roothub);
+int usb_phy_roothub_port_reset(struct usb_phy_roothub *phy_roothub, int port);

int usb_phy_roothub_suspend(struct device *controller_dev,
struct usb_phy_roothub *phy_roothub);
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
index 998241f..af23e92 100644
--- a/drivers/usb/host/xhci-plat.c
+++ b/drivers/usb/host/xhci-plat.c
@@ -47,6 +47,9 @@ static void xhci_priv_plat_start(struct usb_hcd *hcd)
static int xhci_priv_init_quirk(struct usb_hcd *hcd)
{
struct xhci_plat_priv *priv = hcd_to_xhci_priv(hcd);
+ struct xhci_hcd *xhci = hcd_to_xhci(hcd);
+
+ xhci->quirks |= priv->quirks;

if (!priv->init_quirk)
return 0;
@@ -116,6 +119,10 @@ static const struct xhci_plat_priv xhci_plat_renesas_rcar_gen3 = {
.resume_quirk = xhci_rcar_resume_quirk,
};

+static const struct xhci_plat_priv xhci_plat_brcm_sr = {
+ .quirks = XHCI_RESET_PHY_ON_DISCONNECT,
+};
+
static const struct of_device_id usb_xhci_of_match[] = {
{
.compatible = "generic-xhci",
@@ -151,6 +158,9 @@ static const struct of_device_id usb_xhci_of_match[] = {
}, {
.compatible = "renesas,rcar-gen3-xhci",
.data = &xhci_plat_renesas_rcar_gen3,
+ }, {
+ .compatible = "brcm,sr-xhci",
+ .data = &xhci_plat_brcm_sr,
},
{},
};
diff --git a/drivers/usb/host/xhci-plat.h b/drivers/usb/host/xhci-plat.h
index ae29f22..0cd61c6 100644
--- a/drivers/usb/host/xhci-plat.h
+++ b/drivers/usb/host/xhci-plat.h
@@ -15,6 +15,7 @@ struct xhci_plat_priv {
void (*plat_start)(struct usb_hcd *);
int (*init_quirk)(struct usb_hcd *);
int (*resume_quirk)(struct usb_hcd *);
+ unsigned long long quirks;
};

#define hcd_to_xhci_priv(h) ((struct xhci_plat_priv *)hcd_to_xhci(h)->priv)
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index feffceb..77e94e8 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -1696,9 +1696,12 @@ static void handle_port_status(struct xhci_hcd *xhci,

if (hcd->speed < HCD_USB3) {
xhci_test_and_clear_bit(xhci, port, PORT_PLC);
- if ((xhci->quirks & XHCI_RESET_PLL_ON_DISCONNECT) &&
- (portsc & PORT_CSC) && !(portsc & PORT_CONNECT))
- xhci_cavium_reset_phy_quirk(xhci);
+ if ((portsc & PORT_CSC) && !(portsc & PORT_CONNECT)) {
+ if (xhci->quirks & XHCI_RESET_PLL_ON_DISCONNECT)
+ xhci_cavium_reset_phy_quirk(xhci);
+ else if (xhci->quirks & XHCI_RESET_PHY_ON_DISCONNECT)
+ usb_hcd_phy_port_reset(hcd, port_id - 1);
+ }
}

cleanup:
diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
index 7f8b950..f3b336b 100644
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1856,6 +1856,7 @@ struct xhci_hcd {
#define XHCI_DEFAULT_PM_RUNTIME_ALLOW BIT_ULL(33)
#define XHCI_RESET_PLL_ON_DISCONNECT BIT_ULL(34)
#define XHCI_SNPS_BROKEN_SUSPEND BIT_ULL(35)
+#define XHCI_RESET_PHY_ON_DISCONNECT BIT_ULL(36)

unsigned int num_active_eps;
unsigned int limit_active_eps;
diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h
index bb57b5a..2590666 100644
--- a/include/linux/usb/hcd.h
+++ b/include/linux/usb/hcd.h
@@ -461,6 +461,7 @@ extern int usb_add_hcd(struct usb_hcd *hcd,
unsigned int irqnum, unsigned long irqflags);
extern void usb_remove_hcd(struct usb_hcd *hcd);
extern int usb_hcd_find_raw_port_number(struct usb_hcd *hcd, int port1);
+extern int usb_hcd_phy_port_reset(struct usb_hcd *hcd, int port);

struct platform_device;
extern void usb_hcd_platform_shutdown(struct platform_device *dev);
--
2.7.4

2019-07-31 12:17:59

by Srinath Mannam

[permalink] [raw]
Subject: [PATCH v2 4/5] dt-bindings: usb-xhci: Add platform specific compatible for Stingray xHCI

Add Platform specific compatible, because xHCI of this SoC has an issue
with HS port which has to reset on disconnect event.

Signed-off-by: Srinath Mannam <[email protected]>
---
Documentation/devicetree/bindings/usb/usb-xhci.txt | 1 +
1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/usb/usb-xhci.txt b/Documentation/devicetree/bindings/usb/usb-xhci.txt
index 97400e8..ee1f051 100644
--- a/Documentation/devicetree/bindings/usb/usb-xhci.txt
+++ b/Documentation/devicetree/bindings/usb/usb-xhci.txt
@@ -22,6 +22,7 @@ Required properties:
device
- "renesas,rcar-gen3-xhci" for a generic R-Car Gen3 or RZ/G2 compatible
device
+ - "brcm,sr-xhci" for Stingray SoC
- "xhci-platform" (deprecated)

When compatible with the generic version, nodes must list the
--
2.7.4

2019-07-31 12:18:50

by Srinath Mannam

[permalink] [raw]
Subject: [PATCH v2 2/5] dt-bindings: phy: Modify Stingray USB PHY #phy-cells

Increase #phy-cells from 1 to 2 to have bitmask of PHY enabled ports.

Signed-off-by: Srinath Mannam <[email protected]>
---
.../devicetree/bindings/phy/brcm,stingray-usb-phy.txt | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/Documentation/devicetree/bindings/phy/brcm,stingray-usb-phy.txt b/Documentation/devicetree/bindings/phy/brcm,stingray-usb-phy.txt
index 4ba2989..aeb0568 100644
--- a/Documentation/devicetree/bindings/phy/brcm,stingray-usb-phy.txt
+++ b/Documentation/devicetree/bindings/phy/brcm,stingray-usb-phy.txt
@@ -6,9 +6,11 @@ Required properties:
- "brcm,sr-usb-hs-phy" is a single HS PHY.
- reg: offset and length of the PHY blocks registers
- #phy-cells:
- - Must be 1 for brcm,sr-usb-combo-phy as it expects one argument to indicate
- the PHY number of two PHYs. 0 for HS PHY and 1 for SS PHY.
- - Must be 0 for brcm,sr-usb-hs-phy.
+ - Must be 2 for brcm,sr-usb-combo-phy.
+ - Cell 1 - PHY Number, 0 for HS PHY and 1 for SS PHY.
+ - Cell 2 - Bitmask of enabled ports connected to USB Host controller.
+ - Must be 1 for brcm,sr-usb-hs-phy to indicate Bit mask of ports connected
+ to USB Host controller.

Refer to phy/phy-bindings.txt for the generic PHY binding properties

@@ -16,17 +18,17 @@ Example:
usbphy0: usb-phy@0 {
compatible = "brcm,sr-usb-combo-phy";
reg = <0x00000000 0x100>;
- #phy-cells = <1>;
+ #phy-cells = <2>;
};

usbphy1: usb-phy@10000 {
compatible = "brcm,sr-usb-combo-phy";
reg = <0x00010000 0x100>,
- #phy-cells = <1>;
+ #phy-cells = <2>;
};

usbphy2: usb-phy@20000 {
compatible = "brcm,sr-usb-hs-phy";
reg = <0x00020000 0x100>,
- #phy-cells = <0>;
+ #phy-cells = <1>;
};
--
2.7.4

2019-07-31 12:30:14

by Srinath Mannam

[permalink] [raw]
Subject: [PATCH v2 1/5] phy: Add phy ports in attrs

Add phy ports bitmask to contain enabled PHY ports.
set and get APIs added to set and get phy ports value.

Signed-off-by: Srinath Mannam <[email protected]>
---
include/linux/phy/phy.h | 10 ++++++++++
1 file changed, 10 insertions(+)

diff --git a/include/linux/phy/phy.h b/include/linux/phy/phy.h
index 15032f14..b8bca1d 100644
--- a/include/linux/phy/phy.h
+++ b/include/linux/phy/phy.h
@@ -109,10 +109,12 @@ struct phy_ops {
/**
* struct phy_attrs - represents phy attributes
* @bus_width: Data path width implemented by PHY
+ * @phy_ports: Bitmask of enabled ports
* @mode: PHY mode
*/
struct phy_attrs {
u32 bus_width;
+ u32 phy_ports;
enum phy_mode mode;
};

@@ -225,6 +227,14 @@ static inline void phy_set_bus_width(struct phy *phy, int bus_width)
{
phy->attrs.bus_width = bus_width;
}
+static inline int phy_get_phy_ports(struct phy *phy)
+{
+ return phy->attrs.phy_ports;
+}
+static inline void phy_set_phy_ports(struct phy *phy, int phy_ports)
+{
+ phy->attrs.phy_ports |= phy_ports;
+}
struct phy *phy_get(struct device *dev, const char *string);
struct phy *phy_optional_get(struct device *dev, const char *string);
struct phy *devm_phy_get(struct device *dev, const char *string);
--
2.7.4

2019-07-31 12:38:52

by Srinath Mannam

[permalink] [raw]
Subject: [PATCH v2 3/5] phy: sr-usb: Set phy ports

set phy ports value in xlate handler which is taken from second argument
of PHY phandle.

Signed-off-by: Srinath Mannam <[email protected]>
---
drivers/phy/broadcom/phy-bcm-sr-usb.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/phy/broadcom/phy-bcm-sr-usb.c b/drivers/phy/broadcom/phy-bcm-sr-usb.c
index fe6c589..5274e45 100644
--- a/drivers/phy/broadcom/phy-bcm-sr-usb.c
+++ b/drivers/phy/broadcom/phy-bcm-sr-usb.c
@@ -278,9 +278,16 @@ static struct phy *bcm_usb_phy_xlate(struct device *dev,
if (WARN_ON(phy_idx > 1))
return ERR_PTR(-ENODEV);

+ if (args->args[1])
+ phy_set_phy_ports(phy_cfg[phy_idx].phy, args->args[1]);
+
return phy_cfg[phy_idx].phy;
- } else
+ } else {
+ if (args->args[0])
+ phy_set_phy_ports(phy_cfg->phy, args->args[0]);
+
return phy_cfg->phy;
+ }
}

static int bcm_usb_phy_create(struct device *dev, struct device_node *node,
--
2.7.4

2019-08-21 18:36:29

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v2 4/5] dt-bindings: usb-xhci: Add platform specific compatible for Stingray xHCI

On Wed, 31 Jul 2019 15:49:54 +0530, Srinath Mannam wrote:
> Add Platform specific compatible, because xHCI of this SoC has an issue
> with HS port which has to reset on disconnect event.
>
> Signed-off-by: Srinath Mannam <[email protected]>
> ---
> Documentation/devicetree/bindings/usb/usb-xhci.txt | 1 +
> 1 file changed, 1 insertion(+)
>

Reviewed-by: Rob Herring <[email protected]>

2019-08-21 18:37:07

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v2 2/5] dt-bindings: phy: Modify Stingray USB PHY #phy-cells

On Wed, Jul 31, 2019 at 03:49:52PM +0530, Srinath Mannam wrote:
> Increase #phy-cells from 1 to 2 to have bitmask of PHY enabled ports.

And from 0 to 1...

Are you going to update all the dts files so when we convert this to
schema we don't get a bunch of warnings? (Feel free to convert this
to schema too).

>
> Signed-off-by: Srinath Mannam <[email protected]>
> ---
> .../devicetree/bindings/phy/brcm,stingray-usb-phy.txt | 14 ++++++++------
> 1 file changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/phy/brcm,stingray-usb-phy.txt b/Documentation/devicetree/bindings/phy/brcm,stingray-usb-phy.txt
> index 4ba2989..aeb0568 100644
> --- a/Documentation/devicetree/bindings/phy/brcm,stingray-usb-phy.txt
> +++ b/Documentation/devicetree/bindings/phy/brcm,stingray-usb-phy.txt
> @@ -6,9 +6,11 @@ Required properties:
> - "brcm,sr-usb-hs-phy" is a single HS PHY.
> - reg: offset and length of the PHY blocks registers
> - #phy-cells:
> - - Must be 1 for brcm,sr-usb-combo-phy as it expects one argument to indicate
> - the PHY number of two PHYs. 0 for HS PHY and 1 for SS PHY.
> - - Must be 0 for brcm,sr-usb-hs-phy.
> + - Must be 2 for brcm,sr-usb-combo-phy.
> + - Cell 1 - PHY Number, 0 for HS PHY and 1 for SS PHY.
> + - Cell 2 - Bitmask of enabled ports connected to USB Host controller.
> + - Must be 1 for brcm,sr-usb-hs-phy to indicate Bit mask of ports connected
> + to USB Host controller.
>
> Refer to phy/phy-bindings.txt for the generic PHY binding properties
>
> @@ -16,17 +18,17 @@ Example:
> usbphy0: usb-phy@0 {
> compatible = "brcm,sr-usb-combo-phy";
> reg = <0x00000000 0x100>;
> - #phy-cells = <1>;
> + #phy-cells = <2>;
> };
>
> usbphy1: usb-phy@10000 {
> compatible = "brcm,sr-usb-combo-phy";
> reg = <0x00010000 0x100>,
> - #phy-cells = <1>;
> + #phy-cells = <2>;
> };
>
> usbphy2: usb-phy@20000 {
> compatible = "brcm,sr-usb-hs-phy";
> reg = <0x00020000 0x100>,
> - #phy-cells = <0>;
> + #phy-cells = <1>;
> };
> --
> 2.7.4
>

2019-08-28 05:56:07

by Srinath Mannam

[permalink] [raw]
Subject: Re: [PATCH v2 2/5] dt-bindings: phy: Modify Stingray USB PHY #phy-cells

Hi Rob,

Thanks for the review.
I will modify commit message and send new patch set.
We have a plan to upstream DTS files. We will send DTS changes in
different patch set once this is done.

Regards,
Srinath.

On Wed, Aug 21, 2019 at 11:51 PM Rob Herring <[email protected]> wrote:
>
> On Wed, Jul 31, 2019 at 03:49:52PM +0530, Srinath Mannam wrote:
> > Increase #phy-cells from 1 to 2 to have bitmask of PHY enabled ports.
>
> And from 0 to 1...
>
> Are you going to update all the dts files so when we convert this to
> schema we don't get a bunch of warnings? (Feel free to convert this
> to schema too).
>
> >
> > Signed-off-by: Srinath Mannam <[email protected]>
> > ---
> > .../devicetree/bindings/phy/brcm,stingray-usb-phy.txt | 14 ++++++++------
> > 1 file changed, 8 insertions(+), 6 deletions(-)
> >
> > diff --git a/Documentation/devicetree/bindings/phy/brcm,stingray-usb-phy.txt b/Documentation/devicetree/bindings/phy/brcm,stingray-usb-phy.txt
> > index 4ba2989..aeb0568 100644
> > --- a/Documentation/devicetree/bindings/phy/brcm,stingray-usb-phy.txt
> > +++ b/Documentation/devicetree/bindings/phy/brcm,stingray-usb-phy.txt
> > @@ -6,9 +6,11 @@ Required properties:
> > - "brcm,sr-usb-hs-phy" is a single HS PHY.
> > - reg: offset and length of the PHY blocks registers
> > - #phy-cells:
> > - - Must be 1 for brcm,sr-usb-combo-phy as it expects one argument to indicate
> > - the PHY number of two PHYs. 0 for HS PHY and 1 for SS PHY.
> > - - Must be 0 for brcm,sr-usb-hs-phy.
> > + - Must be 2 for brcm,sr-usb-combo-phy.
> > + - Cell 1 - PHY Number, 0 for HS PHY and 1 for SS PHY.
> > + - Cell 2 - Bitmask of enabled ports connected to USB Host controller.
> > + - Must be 1 for brcm,sr-usb-hs-phy to indicate Bit mask of ports connected
> > + to USB Host controller.
> >
> > Refer to phy/phy-bindings.txt for the generic PHY binding properties
> >
> > @@ -16,17 +18,17 @@ Example:
> > usbphy0: usb-phy@0 {
> > compatible = "brcm,sr-usb-combo-phy";
> > reg = <0x00000000 0x100>;
> > - #phy-cells = <1>;
> > + #phy-cells = <2>;
> > };
> >
> > usbphy1: usb-phy@10000 {
> > compatible = "brcm,sr-usb-combo-phy";
> > reg = <0x00010000 0x100>,
> > - #phy-cells = <1>;
> > + #phy-cells = <2>;
> > };
> >
> > usbphy2: usb-phy@20000 {
> > compatible = "brcm,sr-usb-hs-phy";
> > reg = <0x00020000 0x100>,
> > - #phy-cells = <0>;
> > + #phy-cells = <1>;
> > };
> > --
> > 2.7.4
> >

2019-09-03 15:01:03

by Srinath Mannam

[permalink] [raw]
Subject: Re: [PATCH v2 0/4] Reset xHCI port PHY on disconnect

Hi Mathias,

Could you please help to review this patch series?

Regards,
Srinath.

On Wed, Jul 31, 2019 at 3:50 PM Srinath Mannam
<[email protected]> wrote:
>
> This patch set adds a quirk in xHCI driver to reset PHY of xHCI port on
> its disconnect event.
>
> This patch set is based on Linux-5.2-rc4.
>
> Changes from v1:
> - Addressed Mathias's comments
> - Modified mapping of HC ports and their corresponding PHYs
> - Addressed Rob's comments
> - Removed usb-phy-port-reset DT property.
> - Added quirk in platform data using HCI compatible string.
> - Add phy ports in phy attr structure to have enabled ports bitmask.
> - Modified #phy-cells of sr-phy to pass phy ports bitmask.
>
> Srinath Mannam (4):
> phy: Add phy ports in attrs
> dt-bindings: phy: Modify Stingray USB PHY #phy-cells
> phy: sr-usb: Set phy ports
> dt-bindings: usb-xhci: Add platform specific compatible for Stingray
> xHCI
> drivers: xhci: Add quirk to reset xHCI port PHY
>
> .../devicetree/bindings/phy/brcm,stingray-usb-phy.txt | 14 ++++++++------
> Documentation/devicetree/bindings/usb/usb-xhci.txt | 1 +
> drivers/phy/broadcom/phy-bcm-sr-usb.c | 9 ++++++++-
> drivers/usb/core/hcd.c | 6 ++++++
> drivers/usb/core/phy.c | 19 +++++++++++++++++++
> drivers/usb/core/phy.h | 1 +
> drivers/usb/host/xhci-plat.c | 10 ++++++++++
> drivers/usb/host/xhci-plat.h | 1 +
> drivers/usb/host/xhci-ring.c | 9 ++++++---
> drivers/usb/host/xhci.h | 1 +
> include/linux/phy/phy.h | 10 ++++++++++
> include/linux/usb/hcd.h | 1 +
> 12 files changed, 72 insertions(+), 10 deletions(-)
>
> --
> 2.7.4
>