openwrt版本:18.06.2
為了將mt7628網口對應的引腳設置成通用GPIO模式,需要如下兩個步驟:
1. 將EPHY_APGIO_AIO_EN寄存器中[20:17]對應的位設置為1
2. 修改設備樹,將引腳復用功能改為gpio
Mt7628有5個網口,p0~p5。p1~p4這4個網口對應的引腳都受到兩個寄存器的控制,比如,網口p3和p4的引腳受到EPHY_APGIO_AIO_EN[4:1]和SD_MODE兩個寄存器的控制。
EPHY_APGIO_AIO_EN這個寄存器如下,地址為0x3c,寄存器位含義如下圖所示,[20:17]這4位對應p1~p4這4個網口引腳的模式,為1表示對應網口引腳為數字模式,為0表示對應網口引腳為模擬模式,默認情況下[20:17]位都為0,因此對應模擬模式,也就是只能當網口使用。要想將某個網口的引腳設置成通用GPIO,就需要將[20:17]對應的位設置為1。
綜上所述,比如我們需要將GPIO29設置成通用的GPIO,
首先,我們需要將GPIO29所在的網口p4網口的引腳設置為數字模式,即設置EPHY_APGIO_AIO_EN第20位設置為1,如下,寫一個內核模塊設置EPHY_APGIO_AIO_EN寄存器
u32 cfg; cfg = __raw_readl(sysc + 0x3c); cfg |= 0x08 << 17; __raw_writel(cfg, sysc + 0x3c);
然后,p4網口對應的引腳在mt7620.c文件中默認被設置為sdxc模式,因此需要在設備樹文件中將引腳所在分組(sdmode)設置成gpio模式
參考博客,如有侵權,請聯系刪除
http://blog.chinaunix.net/uid-22547469-id-5091963.html