之前买了个newifi mini的路由器,CPU是mt7620a的,有7个led指示灯。现在想要把控制led灯的gpio引出来,方便其他驱动或应用的开发。
一、硬件部分
1、联想路由
现在想要把USB、5G、LAN、INTERNET这四个指示灯引出,原本是打算把WAN指示灯也引出来的,但是WAN指示灯没有被当作普通的gpio使用,所以没办法引出(引出了也没法当作gpio使用)。
2、将路由器拆开,去掉这四个led灯,以及对应的电容(如果不去掉,会影响i2c通讯),并将四个led灯对应的测试点连接杜邦线引出,认真观察电路板可以看出。另外也多引出一条电源线,也就是led灯的正极。
二、软件部分
1、进入/target/linux/ramips/dts/Y1.dts,修改如下
/dts-v1/; /include/ "Y1.dtsi" / {
compatible = "lenovo,Y1", "ralink,mt7620a-soc";
model = "Lenovo Y1"; ethernet@ {
pinctrl-names = "default";
pinctrl- = <&ephy_pins>;
mtd-mac-address = <&factory 0x4>;
ralink,port-map = "llllw";
}; gpio-leds {
compatible = "gpio-leds";
power1 {
label = "lenovo:blue:power";
gpios = <&gpio0 >;
};
wlan1 {
label = "lenovo:blue:wifi";
gpios = <&gpio3 >;
};
};
};
2、编译,重新烧写固件。
三、测试
1、四个led灯对应的gpio如下:
USB:gpio52
5G:gpio50
LAN:gpio55
INTERNET:gpio51
2、依次输入如下
root@OpenWrt:/sys/class/gpio# echo > export
root@OpenWrt:/sys/class/gpio# echo > export
root@OpenWrt:/sys/class/gpio# echo > export
root@OpenWrt:/sys/class/gpio# echo > export
3、将引出来的四个gpio外接led灯,依次输入如下,并观察哪盏led灯亮起:
root@OpenWrt:/sys/class/gpio# echo out >gpio50/direction
root@OpenWrt:/sys/class/gpio# echo out >gpio51/direction
root@OpenWrt:/sys/class/gpio# echo out >gpio52/direction
root@OpenWrt:/sys/class/gpio# echo out >gpio55/direction
就可以知道哪个引线对应哪个gpio。