About errata ENGcm09152 of i.MX25

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

About errata ENGcm09152 of i.MX25

590 次查看
yuuki
Senior Contributor II

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,

标签 (1)
标记 (1)
0 项奖励
2 回复数

432 次查看
Yuri
NXP Employee
NXP Employee

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.

0 项奖励

432 次查看
fabio_estevam
NXP Employee
NXP Employee

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:

https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/tree/arch/arm/boot/dts/imx25-eukrea...

(Check the usbotg node)

Regards,

Fabio Estevam

0 项奖励