Atheros有线驱动中有一个比较迷惑人的地方:寄存器的操作函数非常多,比如ar7240_reg_wr(), ar7240_reg_wr_nf(), ag7240_reg_wr(), ag7240_mii_write(), s26_wr_phy().....不知如此多的操作函数是由于这套驱动是由多个人完成,每个人均桀骜不驯,不肯使用别人的一点东西,还是出于商业机密的 原因,或者Atheros的芯片方案确实根骨奇特,不同类的寄存器需要不同的函数来操作,才能做到最好的性能。且罢,让我们来给其进行稍微归类,以便在编 写测试代码时能脑子清晰,速度快,用地准。欢迎各种插楼补充~
注:这里仅以write类函数作为代表。
1.直接操作虚拟地址类
ar7240_reg_wr(addr, value)
ar7240_reg_wr_nf(addr, value)
sysRegWrite(addr, value)
这一类函数的特点主要是直接操作虚拟地址,比如初始化GPIO,Flash,Uart,以及以太网大部分寄存器,都是可以使用这类函数进行操作。它的操作也比较简单,直接将DataSheet里面的address填入即可操作。
在Datasheet中,可以用此类