Skip to content

Commit 2a996cf

Browse files
committed
drivers: ethernet: vsc8541: add MDIO enable/disable
The driver was not enabling the MDIO bus before trying to access registers. Added enabling and disabling the bus around PHY register accesses. Signed-off-by: Robert Hancock <robert.hancock@calian.com>
1 parent c4ed1c0 commit 2a996cf

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

drivers/ethernet/phy/phy_microchip_vsc8541.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -484,17 +484,21 @@ static int phy_mc_vsc8541_read(const struct device *dev, uint16_t reg_addr, uint
484484
/* mask out lower byte */
485485
reg_addr &= 0x00ff;
486486

487+
mdio_bus_enable(cfg->mdio_dev);
488+
487489
/* select page, given by register upper byte */
488490
if (dev_data->active_page != page) {
489491
ret = mdio_write(cfg->mdio_dev, cfg->addr, PHY_REG_PAGE_SELECTOR, (uint16_t)page);
490492
if (ret) {
493+
mdio_bus_disable(cfg->mdio_dev);
491494
return ret;
492495
}
493496
dev_data->active_page = (int)page;
494497
}
495498

496499
/* select register, given by register lower byte */
497500
ret = mdio_read(cfg->mdio_dev, cfg->addr, reg_addr, (uint16_t *)data);
501+
mdio_bus_disable(cfg->mdio_dev);
498502
if (ret) {
499503
return ret;
500504
}
@@ -522,17 +526,21 @@ static int phy_mc_vsc8541_write(const struct device *dev, uint16_t reg_addr, uin
522526
/* mask out lower byte */
523527
reg_addr &= 0x00ff;
524528

529+
mdio_bus_enable(cfg->mdio_dev);
530+
525531
/* select page, given by register upper byte */
526532
if (dev_data->active_page != page) {
527533
ret = mdio_write(cfg->mdio_dev, cfg->addr, PHY_REG_PAGE_SELECTOR, (uint16_t)page);
528534
if (ret) {
535+
mdio_bus_disable(cfg->mdio_dev);
529536
return ret;
530537
}
531538
dev_data->active_page = (int)page;
532539
}
533540

534541
/* write register, given by lower byte */
535542
ret = mdio_write(cfg->mdio_dev, cfg->addr, reg_addr, (uint16_t)data);
543+
mdio_bus_disable(cfg->mdio_dev);
536544
if (ret) {
537545
return ret;
538546
}

0 commit comments

Comments
 (0)