记录一下
板子MT7620 16+64
最近在弄LTE/4G的移植.当kernel添加了usb cdc-acm rndis以后。发现板子没有发现LTE模块。
在LTE模块上接上串口,没有打印输出。
测量电压发现电压也不对。
于是猜测LTE模块没有上电。
查找MT7620 datasheet 查找GPIO给LTE模块上电的GPIO口。
通过电路图发现,GPIO为 11 低电平 则给模块上电。
于是在/sys/class/gpio 下面 输入如下命令:
echo 11 > export
[ 1572.890000] rt2880-pinmux pinctrl: pin 66 is not set to gpio mux
[ 1572.910000] rt2880-pinmux pinctrl: request() failed for pin 66
[ 1572.920000] rt2880-pinmux pinctrl: pin-66 (pio:66) status -22
ash: write error: Invalid argument
提示如上错误。
这是因为11管脚被复用了.
所以要对它进行解复用.(这块我自已也搞糊涂了,不清楚是要解复用还是要复用。希望清楚的同学帮忙指证一下。)
于是就要想办法把管脚11的GPIO文件给搞出来。于是研究了一下DTS 中GPIO相关的东西。
//这篇文档给了我极大的帮助。
//它详细的解释了,如何解释了GPIO的对应关系,如何设置等方法
http://wiki.wrtnode.com/index.php?title=Released_multiused_GPIO_and_register_gpio-leds/zh-cn
直接把内容贴过来了。
mt7620n.dtsi里对gpio的注册
我们假定$(TOPDIR)为OpenWrt的编译目录。
在$(TOPDIR)/target/linux/ramips/dts/mt7620n.dtsi里有对gpio的注册
注:结合mt7620的datasheet里GPIO pin share schemes以及在mt7620n.dtsi里我们看到有,将GPIO#0到GPIO#72(中间有仅仅做GPO或GPI的)分为四组GPIO0-GPIO3;
对应GPIO0是从GPIO#0开始到GPIO#23,一共有24个;对应GPIO1是从GPIO#24开始到GPIO#39,一共有1