根据datasheet得到该网卡的PHY ID,目前一般有两个16位寄存器的组合而成。比如此款LAN8710,根据其datasheet第41页的Register2 -PHY Identifier 1【15:0】 default:0007h,Register 3 -PHY Identifier 2【15:10】30h,【9:4】0fh,【3:0】Device Rev. 则可以计算出来PHY ID=0x0007c0fXu,因为后三位不确定因素,故可以通过以下方法做比较: #define LAN8710_PHY_ID 0x0007c0f0u #define LAN8710_PHY_ID_MASK 0xfffffff0u if((id & LAN8710_PHY_ID_MASK) == LAN8710_PHY_ID) { printf(STMAC "LAN8710 found/n"); return phyaddr; } id为实际读出来的PHY ID值。id的获取代码如下: unsigned int id1 = stmac_mii_read (phyaddr, MII_PHYSID1); unsigned int id2 = stmac_mii_read (phyaddr, MII_PHYSID2); id = (id1 << 16) | (id2); |
|