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)
这一类函数的特点主要是直接操作虚拟地址,比如初始化GP