int et131x_xcvr_find(struct et131x_adapter *adapter) { int status = -ENODEV; uint8_t xcvr_addr; MI_IDR1_t idr1; MI_IDR2_t idr2; uint32_t xcvr_id; for (xcvr_addr = 0; xcvr_addr < 32; xcvr_addr++) { PhyMiRead(adapter, xcvr_addr, (uint8_t) offsetof(MI_REGS_t, idr1), &idr1.value); PhyMiRead(adapter, xcvr_addr, (uint8_t) offsetof(MI_REGS_t, idr2), &idr2.value); xcvr_id = (uint32_t) ((idr1.value << 16) | idr2.value); if ((idr1.value != 0) && (idr1.value != 0xffff)) { adapter->Stats.xcvr_id = xcvr_id; adapter->Stats.xcvr_addr = xcvr_addr; status = 0; break; } } return status; }
/** * et131x_xcvr_find - Find the PHY ID * @adapter: pointer to our private adapter structure * * Returns 0 on success, errno on failure (as defined in errno.h) */ int et131x_xcvr_find(struct et131x_adapter *adapter) { int status = -ENODEV; uint8_t xcvr_addr; MI_IDR1_t idr1; MI_IDR2_t idr2; uint32_t xcvr_id; /* We need to get xcvr id and address we just get the first one */ for (xcvr_addr = 0; xcvr_addr < 32; xcvr_addr++) { /* Read the ID from the PHY */ PhyMiRead(adapter, xcvr_addr, (uint8_t) offsetof(MI_REGS_t, idr1), &idr1.value); PhyMiRead(adapter, xcvr_addr, (uint8_t) offsetof(MI_REGS_t, idr2), &idr2.value); xcvr_id = (uint32_t) ((idr1.value << 16) | idr2.value); if ((idr1.value != 0) && (idr1.value != 0xffff)) { adapter->Stats.xcvr_id = xcvr_id; adapter->Stats.xcvr_addr = xcvr_addr; status = 0; break; } } return status; }