On Thu, Apr 03, 2014 at 11:55:19PM -0700, Peter Crosthwaite wrote: > Phys must respond to address 0 by specification. Implement. > > Signed-off-by: Nathan Rossi <nathan.ro...@xilinx.com> > Signed-off-by: Peter Crosthwaite <peter.crosthwa...@xilinx.com> > --- > > hw/net/cadence_gem.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/hw/net/cadence_gem.c b/hw/net/cadence_gem.c > index 92dc2f2..e34b25e 100644 > --- a/hw/net/cadence_gem.c > +++ b/hw/net/cadence_gem.c > @@ -1093,7 +1093,7 @@ static uint64_t gem_read(void *opaque, hwaddr offset, > unsigned size) > uint32_t phy_addr, reg_num; > > phy_addr = (retval & GEM_PHYMNTNC_ADDR) >> > GEM_PHYMNTNC_ADDR_SHFT; > - if (phy_addr == BOARD_PHY_ADDRESS) { > + if (phy_addr == BOARD_PHY_ADDRESS || phy_addr == 0) { > reg_num = (retval & GEM_PHYMNTNC_REG) >> > GEM_PHYMNTNC_REG_SHIFT; > retval &= 0xFFFF0000; > retval |= gem_phy_read(s, reg_num); > @@ -1193,7 +1193,7 @@ static void gem_write(void *opaque, hwaddr offset, > uint64_t val, > uint32_t phy_addr, reg_num; > > phy_addr = (val & GEM_PHYMNTNC_ADDR) >> GEM_PHYMNTNC_ADDR_SHFT; > - if (phy_addr == BOARD_PHY_ADDRESS) { > + if (phy_addr == BOARD_PHY_ADDRESS || phy_addr == 0) { > reg_num = (val & GEM_PHYMNTNC_REG) >> GEM_PHYMNTNC_REG_SHIFT; > gem_phy_write(s, reg_num, val); > }
Although 802.3 standard dictates that PHYs must always respond to address 0, AFAIK not all PHYs do this. In this case, if the Marvell PHY complies with standard: Reviewed-by: Beniamino Galvani <b.galv...@gmail.com>