- u16 phy_reg;\r
- u32 phy_addr;\r
-\r
- for (phy_addr = 31; phy_addr > 0; phy_addr--) {\r
- XEmacPs_PhyRead(xemacpsp, phy_addr, PHY_DETECT_REG,\r
- &phy_reg);\r
-\r
- if ((phy_reg != 0xFFFF) &&\r
- ((phy_reg & PHY_DETECT_MASK) == PHY_DETECT_MASK)) {\r
- /* Found a valid PHY address */\r
- FreeRTOS_printf( ("XEmacPs detect_phy: PHY detected at address %d.\r\n",\r
- phy_addr));\r
- FreeRTOS_printf( ("XEmacPs detect_phy: PHY detected.\n" ) );\r
+ u16 id_lower, id_upper;\r
+ u32 phy_addr, id;\r
+\r
+ for (phy_addr = 0; phy_addr < 32; phy_addr++) {\r
+ XEmacPs_PhyRead(xemacpsp, phy_addr, IEEE_PHYSID1_OFFSET, &id_lower);\r
+\r
+ if ((id_lower != ( u16 )0xFFFFu) && (id_lower != ( u16 )0x0u)) {\r
+\r
+ XEmacPs_PhyRead(xemacpsp, phy_addr, IEEE_PHYSID2_OFFSET, &id_upper);\r
+ id = ( ( ( uint32_t ) id_upper ) << 16 ) | ( id_lower & 0xFFF0 );\r
+ FreeRTOS_printf( ("XEmacPs detect_phy: %04lX at address %d.\n", id, phy_addr ) );\r