Skip to content

Commit 3d147da

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 b3316fc commit 3d147da

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
@@ -474,17 +474,21 @@ static int phy_mc_vsc8541_read(const struct device *dev, uint16_t reg_addr, uint
474474
/* mask out lower byte */
475475
reg_addr &= 0x00ff;
476476

477+
mdio_bus_enable(cfg->mdio_dev);
478+
477479
/* select page, given by register upper byte */
478480
if (dev_data->active_page != page) {
479481
ret = mdio_write(cfg->mdio_dev, cfg->addr, PHY_REG_PAGE_SELECTOR, (uint16_t)page);
480482
if (ret) {
483+
mdio_bus_disable(cfg->mdio_dev);
481484
return ret;
482485
}
483486
dev_data->active_page = (int)page;
484487
}
485488

486489
/* select register, given by register lower byte */
487490
ret = mdio_read(cfg->mdio_dev, cfg->addr, reg_addr, (uint16_t *)data);
491+
mdio_bus_disable(cfg->mdio_dev);
488492
if (ret) {
489493
return ret;
490494
}
@@ -512,17 +516,21 @@ static int phy_mc_vsc8541_write(const struct device *dev, uint16_t reg_addr, uin
512516
/* mask out lower byte */
513517
reg_addr &= 0x00ff;
514518

519+
mdio_bus_enable(cfg->mdio_dev);
520+
515521
/* select page, given by register upper byte */
516522
if (dev_data->active_page != page) {
517523
ret = mdio_write(cfg->mdio_dev, cfg->addr, PHY_REG_PAGE_SELECTOR, (uint16_t)page);
518524
if (ret) {
525+
mdio_bus_disable(cfg->mdio_dev);
519526
return ret;
520527
}
521528
dev_data->active_page = (int)page;
522529
}
523530

524531
/* write register, given by lower byte */
525532
ret = mdio_write(cfg->mdio_dev, cfg->addr, reg_addr, (uint16_t)data);
533+
mdio_bus_disable(cfg->mdio_dev);
526534
if (ret) {
527535
return ret;
528536
}

0 commit comments

Comments
 (0)