On Tue, Jun 05, 2012 at 12:04:34PM +0300, Mieshkov, Volodymyr wrote: > Its observed with some PHY, the 60Mhz clock gets > cut too soon for OMAP EHCI, leaving OMAP-EHCI in a bad state. > > So on starting port suspend, make sure the 60Mhz clock to EHCI > is kept alive using an internal clock, so that EHCi can cleanly > transition its hw state machine on a port suspend. > > Its not proven if this is the issue hit on USB3333, > but the symptoms look very similar. > > Signed-off-by: Anand Gadiyar <gadiyar@xxxxxx> > Signed-off-by: Vikram Pandita <vikram.pandita@xxxxxx> > Signed-off-by: Volodymyr Mieshkov <x0182794@xxxxxx> > > diff --git a/drivers/usb/host/ehci-omap.c b/drivers/usb/host/ehci-omap.c > index 5c78f9e..cb0de0e 100644 > --- a/drivers/usb/host/ehci-omap.c > +++ b/drivers/usb/host/ehci-omap.c > @@ -43,6 +43,7 @@ > #include <linux/regulator/consumer.h> > #include <linux/pm_runtime.h> > #include <linux/gpio.h> > +#include <linux/clk.h> > > /* EHCI Register Set */ > #define EHCI_INSNREG04 (0xA0) > @@ -55,6 +56,15 @@ > #define EHCI_INSNREG05_ULPI_EXTREGADD_SHIFT 8 > #define EHCI_INSNREG05_ULPI_WRDATA_SHIFT 0 > > +/* Errata i693 */ > +static struct clk *utmi_p1_fck; > +static struct clk *utmi_p2_fck; > +static struct clk *xclk60mhsp1_ck; > +static struct clk *xclk60mhsp2_ck; > +static struct clk *usbhost_p1_fck; > +static struct clk *usbhost_p2_fck; > +static struct clk *init_60m_fclk; > + > /*-------------------------------------------------------------------------*/ > > static const struct hc_driver ehci_omap_hc_driver; > @@ -70,6 +80,41 @@ static inline u32 ehci_read(void __iomem *base, u32 reg) > return __raw_readl(base + reg); > } > > +/* Erratum i693 workaround sequence */ > +static void omap_ehci_erratum_i693(struct ehci_hcd *ehci) > +{ > + int ret = 0; tabs got converted into spaces... -- balbi
Attachment:
signature.asc
Description: Digital signature