u-boot中DM9000驱动分析
1. CSRs和PHY reg读写。
1 static u16 2 phy_read(int reg) 3 { 4 u16 val; 5 6 /* Fill the phyxcer register into REG_0C */ 7 DM9000_iow(DM9000_EPAR, DM9000_PHY | reg); 8 DM9000_iow(DM9000_EPCR, 0xc); /* Issue phyxcer read command */ 9 udelay(100); /* Wait read complete */ 10 DM9000_iow(DM9000_EPCR, 0x0); /* Clear phyxcer read command */ 11 val = (DM9000_ior(DM9000_EPDRH) << 8) | DM9000_ior(DM9000_EPDRL); 12 13 /* The read data keeps on REG_0D & REG_0E */ 14 DM9000_DBG("phy_read(%d): %d\n", reg, val); 15 return val; 16 }