QSDK下驱动AR8035

0 概述

  QSDK平台中,我所接触到的版本,能支持MIPS架构的,是基于Openwrt AA版本;虽然CC版本上就已经能很好地支持AR8035了,但是AA版本它自己是不支持的,因而不断有人要求提供补丁方法,通常统一固件开发平台,从而减轻固件维护工做量。架构

  简单看了一下,若是直接将CC版中at803x降级以便适配到AA版本,改动工做量仍是比较多的,怕麻烦,因此就只能另想办法,在百度/谷歌上找了好一番后,发现Matus Ujhelyi的at803x实现最简单,只要将用不到的wol功能砍掉,余下的代码就没几行了;而后再检查现有的ar80xx.c,它是能成功驱动AR8033的;并且,从驱动的角度上看,8033和8035相差不大,所以,适宜以ar80xx结合at803x,组建一个最小代码量的新at803x,来实现此需求了。函数

1 具体实施

  首先下载一份Matus Ujhely最先期的at803x驱动,可直接到百度上找“at803x.c”便可;而后将现有的ar80xx.c和ar80xx.h分别拷贝为at803x.c和at803x.h;将网上下载到的at803x.c中的at803x_enable_rx_delay和at803x_enable_tx_delay拷贝到新at803x.c中,在新at803x.c的ar803x_config_init中,强制使能“RGMII mode”、at803x_enable_rx_delay和at803x_enable_tx_delay;在ar803x_read_status,将uboot/board/ar7240/common/athrsf1_phy.c中athr_phy_speed中配置10M/100M/1000M时寄存器的配置值,经过phy_write函数,配置到对应的寄存器上便可。再其次,修改Kconfig文件,在AR80XX_PHY选项后增长AT803X_PHY选项;在Makefile中增长obj-$(CONFIG_AR80XX_PHY)预编译指令便可;最后,将phy_id修改成0x004dd072。若是phy_id错误,仍是驱动不了该PHY的。开发

     此外,按照网上CC版本驱动AR8035的通用方法,将mach-db120.c中的eth1的注册代码关闭掉;而后,要修改正确eth0的phy_mask值。若是是AR9344,它最多支持5个Port,也就是BIT(0)-BIT(4)而已。若是uboot启动时,串口打印信息没法肯定是哪一个port,则请在确保你的uboot是能正常驱动8035时,直接修改athrsf1_phy.c中athr_auto_neg中的打印信息,将"Neg Success"语句直接printf出来,这样就知道是那个Port了,从而就能够肯定是哪一个BIT(?)了。若是BIT(?)选填错误,网口仍是不能通的,插拔网线串口也不会有打印。故若是实在没有办法,就启用BIT(0)到BIT(4),编译出5个固件,总有一个固件是能成功驱动起来的。it

2 结论

  利用此方法,改动量很是小,且能正常驱动8035;插拔网线串口打印正常;100M/1000M协商正常(无10M口验证);跑流正常;稳定性正常。从而能够放心将原有固件迁移到QSDK平台上。编译

相关文章
相关标签/搜索