(原创作品,转载请标明转载路径)
近日在mstar 786平台上有个需求,即把usb otg转换成host接U盘。
开始调试时,以为只要把OTG的配置去掉,即CONFIG_USB_MS_OTG屏蔽掉即可,但编译烧录后,插入和拨出U盘时发现提示
android_work: did not send uevent (0 0 (null))
U盘的灯也不亮,说明没有上电。
后来搜索了有关资料,才发现需要把USB_CID脚拉低,拉低表示工作在HOST模式下。
有2种方式拉低该引脚:
1)硬件上把它强制拉低。
2)软件上拉低,在kernel目录下的drivers\usb\otg\ms_otg.c 中的ms_otg_init_irq函数,把如下代码屏蔽掉:
// OTG id pin pull-up
/* reg_t = readl(&msotg->op_regs->usbc_regs->port_ctrl);
reg_t |= IDPULLUP_CTRL;
writel(reg_t, &msotg->op_regs->usbc_regs->port_ctrl);*/
编译烧录后,开机插入U盘,有如下LOG,表示识别成功:
[ 1374.141871] hub_events
[ 1374.144655] hub_port_connect_change
[ 1374.303911] hub_port_init
[ 1374.306911] ==13==> hub