MT7688/28 设置3个串口

原文http://blog.chinaunix.net/uid-22547469-id-5091963.html

分类: LINUX

需要好好整理一下解决思路。
背景:端午节,没回家,对象去上课了,留下我就窝屋子里调驱动,其实本来可以出去逛公园的。
先说一下系统环境:virtualbox, ubuntu15.04@64bit
Openwrt版本:Chaos Calmer 15.05-rc2
硬件板卡:MT7688,64MB DDR2,8MB SPI FLASH,某宝LH7688
本次解决的问题:MT7688剩余两个串口不能通信,另外UART2端口仍处于analog PAD模式。
未完待续。。。。
好了,抽点时间补充完整。
第一步,改DTS,因为默认的mt7628an.dts缺少uart1和uart2的配置。
MT7688/28 设置3个串口_第1张图片
第二步,增加pinctrl信息。
MT7688/28 设置3个串口_第2张图片
第三步,修改arch/mips/ralink/mt7620.c
首先,看到perst,wdt都是错的,顺便改了他们。
MT7688/28 设置3个串口_第3张图片
prom_soc_init,add this code to fix AGPIO_MODE:(否则uart2还是网口电平)
MT7688/28 设置3个串口_第4张图片
这样子改后,网口只剩下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
MT7688/28 设置3个串口_第5张图片
为什么改成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个串口就都起来了。

你可能感兴趣的:(linux)