Skip to content

Commit 3ed64ec

Browse files
committed
drivers: ethernet: phy: 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 6ea6865 commit 3ed64ec

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

drivers/ethernet/phy/phy_microchip_vsc8541.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,7 @@ static int phy_mc_vsc8541_read(const struct device *dev, uint16_t reg_addr, uint
427427
reg_addr &= 0x00ff;
428428

429429
k_mutex_lock(&dev_data->mutex, K_FOREVER);
430+
mdio_bus_enable(cfg->mdio_dev);
430431

431432
/* select page, given by register upper byte */
432433
if (dev_data->active_page != page) {
@@ -441,6 +442,7 @@ static int phy_mc_vsc8541_read(const struct device *dev, uint16_t reg_addr, uint
441442
ret = mdio_read(cfg->mdio_dev, cfg->addr, reg_addr, (uint16_t *)data);
442443

443444
read_end:
445+
mdio_bus_disable(cfg->mdio_dev);
444446
k_mutex_unlock(&dev_data->mutex);
445447

446448
return ret;
@@ -467,6 +469,7 @@ static int phy_mc_vsc8541_write(const struct device *dev, uint16_t reg_addr, uin
467469
reg_addr &= 0x00ff;
468470

469471
k_mutex_lock(&dev_data->mutex, K_FOREVER);
472+
mdio_bus_enable(cfg->mdio_dev);
470473

471474
/* select page, given by register upper byte */
472475
if (dev_data->active_page != page) {
@@ -481,6 +484,7 @@ static int phy_mc_vsc8541_write(const struct device *dev, uint16_t reg_addr, uin
481484
ret = mdio_write(cfg->mdio_dev, cfg->addr, reg_addr, (uint16_t)data);
482485

483486
write_end:
487+
mdio_bus_disable(cfg->mdio_dev);
484488
k_mutex_unlock(&dev_data->mutex);
485489

486490
return ret;

0 commit comments

Comments
 (0)