I am referring to ENGcm09152 of i.MX25.
http://cache.freescale.com/files/dsp/doc/errata/IMX25CE.pdf
- ENGcm09152 USB: UTMI_USBPHY VBUS input impedance implementation error(P.48)
In Case 2, "Disable internal divider." is indicated.
Would you teach this concrete register setting method?
Best Regards,
In addition to Fabio :
Please use bit EVDO of OTG UTMI PHY Function Control Register.
Refer to section 47.3.1.3 "OTG UTMI PHY Function Control Register (USB_PHY_CTRL_FUNC)"
of the i.MX25 Reference Manual.
This is how we deal with this erratum in the mainline kernel:
static int usbmisc_imx25_post(struct imx_usbmisc_data *data)
{
void __iomem *reg;
unsigned long flags;
u32 val;
if (data->index > 2)
return -EINVAL;
reg = usbmisc->base + MX25_USB_PHY_CTRL_OFFSET;
if (data->evdo) {
spin_lock_irqsave(&usbmisc->lock, flags);
val = readl(reg);
writel(val | MX25_BM_EXTERNAL_VBUS_DIVIDER, reg);
spin_unlock_irqrestore(&usbmisc->lock, flags);
usleep_range(5000, 10000); /* needed to stabilize voltage */
}
return 0;
}
Then in the device tree you just need to pass 'external-vbus-divider' property.
Here is an example for a mx25 board dts:
(Check the usbotg node)
Regards,
Fabio Estevam