On Tue, May 19, 2015 at 09:10:05PM -0500, Rob Herring wrote: > The Marvell 28nm HSIC PHY requires the port to be forced to HS mode after > the port power is applied. This is done using the test mode in the PORTSC > register. > > As HSIC is always HS, this work-around should be safe to do with all HSIC > PHYs. If not, a flag can also be added. I think a flag is needed, not sure all vendors can work well with that. > > Signed-off-by: Rob Herring <robh@xxxxxxxxxx> > Cc: Peter Chen <Peter.Chen@xxxxxxxxxxxxx> > Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > Cc: linux-usb@xxxxxxxxxxxxxxx > --- > drivers/usb/chipidea/host.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c > index 21fe1a3..6cf87b8 100644 > --- a/drivers/usb/chipidea/host.c > +++ b/drivers/usb/chipidea/host.c > @@ -37,12 +37,14 @@ static int (*orig_bus_suspend)(struct usb_hcd *hcd); > > struct ehci_ci_priv { > struct regulator *reg_vbus; > + struct ci_hdrc *ci; > }; > > static int ehci_ci_portpower(struct usb_hcd *hcd, int portnum, bool enable) > { > struct ehci_hcd *ehci = hcd_to_ehci(hcd); > struct ehci_ci_priv *priv = (struct ehci_ci_priv *)ehci->priv; > + struct ci_hdrc *ci = priv->ci; > struct device *dev = hcd->self.controller; > int ret = 0; > int port = HCS_N_PORTS(ehci->hcs_params); > @@ -64,6 +66,15 @@ static int ehci_ci_portpower(struct usb_hcd *hcd, int portnum, bool enable) > return ret; > } > } > + > + if (enable && (ci->platdata->phy_mode == USBPHY_INTERFACE_MODE_HSIC)) { > + /* > + * Marvell 28nm HSIC PHY requires forcing the port to HS mode. > + * As HSIC is always HS, this should be safe for others. > + */ > + hw_port_test_set(ci, 5); > + hw_port_test_set(ci, 0); > + } > return 0; > }; > > @@ -112,6 +123,7 @@ static int host_start(struct ci_hdrc *ci) > > priv = (struct ehci_ci_priv *)ehci->priv; > priv->reg_vbus = NULL; > + priv->ci = ci; > > if (ci->platdata->reg_vbus && !ci_otg_is_fsm_mode(ci)) { > if (ci->platdata->flags & CI_HDRC_TURN_VBUS_EARLY_ON) { > -- > 2.1.0 > -- Best Regards, Peter Chen -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html