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,
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