本文记录添加imx6 otg host支持的过程。

参考链接

http://www.cnblogs.com/helloworldtoyou/p/6108560.html

https://community.nxp.com/thread/328351

https://community.nxp.com/thread/305646

https://community.nxp.com/thread/387529

设备配置

  • 配置引脚复用

这里遇到的问题主要是USB OTG POWER的引脚不能输出高电平,所以进行了一些修改。

arch/arm/mach-mx6/board-mx6dl_sabresd.h

#define MX6DL_ENET_PAD_CTRL_PD (PAD_CTL_PKE | PAD_CTL_PUE  |        \
PAD_CTL_PUS_100K_DOWN | PAD_CTL_SPEED_MED | \
PAD_CTL_DSE_40ohm | PAD_CTL_HYS) MX6DL_PAD_KEY_COL4__USBOH3_USBOTG_OC,
// GPIO
IOMUX_PAD(0x0650, 0x0268, 5, 0x0000, 0, MX6DL_ENET_PAD_CTRL_PD), //USB OTG POWER
MX6DL_PAD_ENET_RX_ER__ANATOP_USBOTG_ID,
  • 设备初始化

arch/arm/mach-mx6/board-mx6q_sabresd.c

#define SABRESD_USB_OTG_PWR IMX_GPIO_NR(4, 15)
#define SABRESD_USB_H1_PWR IMX_GPIO_NR(7, 0) static void imx6q_sabresd_usbotg_vbus(bool on)
{
if (on)
gpio_set_value(SABRESD_USB_OTG_PWR, 1);
else
gpio_set_value(SABRESD_USB_OTG_PWR, 0);
} static void imx6q_sabresd_host1_vbus(bool on)
{
if (on)
gpio_set_value(SABRESD_USB_H1_PWR, 1);
else
gpio_set_value(SABRESD_USB_H1_PWR, 0);
} static void __init imx6q_sabresd_init_usb(void)
{
int ret = 0; imx_otg_base = MX6_IO_ADDRESS(MX6Q_USB_OTG_BASE_ADDR);
/* disable external charger detect,
* or it will affect signal quality at dp .
*/
ret = gpio_request(SABRESD_USB_OTG_PWR, "usb-pwr");
if (ret) {
pr_err("failed to get GPIO SABRESD_USB_OTG_PWR: %d\n",
ret);
return;
}
gpio_direction_output(SABRESD_USB_OTG_PWR, 0);
// USB host1 VBUS 在我这边得硬件上直连电源,所以就不需要控制
/* keep USB host1 VBUS always on */
/*
ret = gpio_request(SABRESD_USB_H1_PWR, "usb-h1-pwr");
if (ret) {
pr_err("failed to get GPIO SABRESD_USB_H1_PWR: %d\n",
ret);
return;
}
gpio_direction_output(SABRESD_USB_H1_PWR, 0);
*/ if (board_is_mx6_reva())
mxc_iomux_set_gpr_register(1, 13, 1, 1);
else
mxc_iomux_set_gpr_register(1, 13, 1, 0); mx6_set_otghost_vbus_func(imx6q_sabresd_usbotg_vbus);
//mx6_set_host1_vbus_func(imx6q_sabresd_host1_vbus);
}

kernel config配置

这里只记录部分,配置完成,usb host就可以使用,不过slave还需要调试。

CONFIG_USB_EHCI_ARC_OTG=y
CONFIG_USB_EHCI_ARC_HSIC=y CONFIG_USB_OTG=y
CONFIG_MXC_OTG=y CONFIG_USB_SUSPEND=n

Tony Liu

2016-11-28, Shenzhen

最新文章

  1. 期权定价公式:BS公式推导——从高数和概率论角度
  2. 深入理解javascript原型和闭包(3)——prototype原型
  3. Ubuntu常用软件安装
  4. extjs学习之Ext.selection.CheckboxModel
  5. Linux_rsylogd日志
  6. linux中怎样从底部向上查看log文件
  7. 数据库中join的用法(on、left。right)
  8. YII安装smarty-view-renderer扩展
  9. STL中的Traits编程技法
  10. CKEditor + CKFinder 实现编辑上传图片配置 (二)
  11. Spring - bean的autowire属性(自动装配)
  12. #20175204 张湲祯 2018-2019-2《Java程序设计》第五周学习总结
  13. css,html备忘录
  14. 浅谈java中bigInteger用法
  15. PHP 设计模式(一)
  16. 自学Zabbix3.12.4-动作Action-Operation配置
  17. sql的sp存储过程详解
  18. SRAM、DRAM、SDRAM、DDR、DDR2、DDR3
  19. convertView&setTag方法的一点理解
  20. 详细说明php的4中开源框架(TP,CI,Laravel,Yii)

热门文章

  1. Marching Cube
  2. javascript 数据类型 变量 类型转换运算符
  3. Apache和mysql的安装设置
  4. [转]动态调用webservice时 ServiceDescriptionImporter类在vs2010无法引用的解决方法
  5. 分布式架构高可用架构篇_04_Keepalived+Nginx实现高可用Web负载均衡
  6. myBatis应用
  7. Markdown基本用法
  8. Apache Spark源码走读之8 -- Spark on Yarn
  9. Linux 计划任务 Crontab 笔记与总结(1)
  10. 将Asset中的数据库文件拷贝出来使用