先看板子的原理图,usb用的usb2184芯片,只用了两组usb口和一个otg
USB原理图 USB原理图
OTG原理图
如图,只有两处和芯片IO有关系,一个是GPIO1_20(SD1_CLK)一个是GPIO7_1(SD3_DAT4)。
看下imx6的设备树文件
设备树源码
可以看出和官方默认设置的两个GPIO对不上,所以这里需要修改,并且保证其他地方没有用到你所修改的引脚。
i.MX_6_BSP_Porting_Guide.pdf
通过官方文档我们得知OTG和usb的工作条件,这些在默认设置里面都是正确的,解释一下regulator-min-microvolt = <5000000>代表最低电压是5V,这里是一个字符串,如果是3.3V则是regulator-min-microvolt = <3300000>。若设置的不正确或没有设置,你的USB芯片是不可能正常工作的。
再解释一下gpio = <&gpio 1 20 0>,这个意思是gpio1组里的第20pin的电平为低。
我们需要确认一下到底是输出高还是低,看别人的文章是0,所以我也就先试试0了,懒得查芯片手册了。
改完之后还要确认一下这两个新的引脚是否在别处被用过,有可能导致你的设置失效。
正确的修改
注意,需要注释掉vin-supply = <&swbst_reg>,这个参数和上面的电压设置冲突了
设备树解析失败
然后就可以编译设备树重新烧录了。
image.png
image.png
image.png
image.png
image.png
上面是内核驱动设置
网友评论