1. 程式人生 > >MT7688/28 設定3個串列埠

MT7688/28 設定3個串列埠

需要好好整理一下解決思路。
背景:端午節,沒回家,物件去上課了,留下我就窩屋子裡調驅動,其實本來可以出去逛公園的。
先說一下系統環境:virtualbox,[email protected]
Openwrt版本:Chaos Calmer 15.05-rc2
硬體板卡:MT7688,64MB DDR2,8MB SPI FLASH,某寶LH7688
本次解決的問題:MT7688剩餘兩個串列埠不能通訊,另外UART2埠仍處於analog PAD模式。
未完待續。。。。
好了,抽點時間補充完整。
第一步,改DTS,因為預設的mt7628an.dts缺少uart1和uart2的配置。

第二步,增加pinctrl資訊。

第三步,修改arch/mips/ralink/mt7620.c
首先,看到perst,wdt都是錯的,順便改了他們。

prom_soc_init,add this code to fix AGPIO_MODE:(否則uart2還是網口電平)

這樣子改後,網口只剩下lan0,個人覺得不夠用,又不是去做路由器。
第四步,修改檔案drivers/pinctrl/pinmux_rt2880.c
分析,
line317,pinmux_map_to_setting,group是每一個pinmux註冊時的pin的組group,而groups[i]是mt7620.c中可以看到的所有的pin分組groups。這裡要匹配,也就是輪詢一遍,但是有個問題,num_groups傳進來的一直是1,這就導致了357行for迴圈始終迴圈一遍。究其根本是get_function_groups函式傳的num_groups有問題。

所以真正要修改的是drivers/pinctrl/pinmux-rt2880.c

為什麼改成15呢,因為mt7620.c中看到了有15個groups。
對了,最後一個嚴重問題,請make kernel_menuconfig 找到Device Drivers---->Character devices----->Serial drivers--->Number of 8250/16550 serial ports to register at runtime.由2改為3. 接著來,3個串列埠就都起來了。
對了,最後一個嚴重問題,請make kernel_menuconfig 找到Device Drivers---->Character devices----->Serial drivers--->Number of 8250/16550 serial ports to register at runtime.由2改為3. 這樣修改後,3個串列埠就都起來了。