Hi, On Thu, Jul 5, 2012 at 2:12 PM, Ruslan Bilovol <ruslan.bilovol@xxxxxx> wrote: > Charger detection feature is not correctly used > and thus makes some regressions if OTG was used in > the host mode. Charger detection takes 500 ms so > if some device is attached to the host after 500 ms > it will be suddenly resetted. > > This feature is enabled by default after reset/cold boot > so always affects PHY usage. So finally this was wrongly > interpreted as "phy requires 200ms to start". > After fixing this we can safely remove uggly mdelay after > powering on the PHY. > > Signed-off-by: Ruslan Bilovol <ruslan.bilovol@xxxxxx> > --- > arch/arm/mach-omap2/omap_phy_internal.c | 9 +++++++++ > 1 files changed, 9 insertions(+), 0 deletions(-) > > diff --git a/arch/arm/mach-omap2/omap_phy_internal.c b/arch/arm/mach-omap2/omap_phy_internal.c > index d52651a..a13a37c 100644 > --- a/arch/arm/mach-omap2/omap_phy_internal.c > +++ b/arch/arm/mach-omap2/omap_phy_internal.c > @@ -42,12 +42,16 @@ > #define SESSEND BIT(3) > #define IDDIG BIT(4) > > +#define CONTROL_USB2PHYCORE 0x620 > +#define USB2PHY_DISCHGDET BIT(30) > + > static struct clk *phyclk, *clk48m, *clk32k; > static void __iomem *ctrl_base; > static int usbotghs_control; > > int omap4430_phy_init(struct device *dev) > { > + u32 usb2phycore; > ctrl_base = ioremap(OMAP443X_SCM_BASE, SZ_1K); > if (!ctrl_base) { > pr_err("control module ioremap failed\n"); > @@ -56,6 +60,11 @@ int omap4430_phy_init(struct device *dev) > /* Power down the phy */ > __raw_writel(PHY_PD, ctrl_base + CONTROL_DEV_CONF); > > + /* Disable charger detection by default */ > + usb2phycore = omap4_ctrl_pad_readl(CONTROL_USB2PHYCORE); > + usb2phycore |= USB2PHY_DISCHGDET; > + omap4_ctrl_pad_writel(usb2phycore, CONTROL_USB2PHYCORE); Maybe I failed to understand correctly but the $subject says it *fixes* charger detection but the patch *disables* charger detection. -Kishon -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html