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 }
phy_read

相关文章: