Commit ee5a7191 authored by Robert Hancock's avatar Robert Hancock Committed by Benjamin Cabé
Browse files

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: default avatarRobert Hancock <robert.hancock@calian.com>
parent c20d197c
Loading
Loading
Loading
Loading
+4 −0
Changes for drivers/ethernet/phy/phy_microchip_vsc8541.c: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -427,6 +427,7 @@ static int phy_mc_vsc8541_read(const struct device *dev, uint16_t reg_addr, uint
	reg_addr &= 0x00ff;

	k_mutex_lock(&dev_data->mutex, K_FOREVER);
	mdio_bus_enable(cfg->mdio_dev);

	/* select page, given by register upper byte */
	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
	ret = mdio_read(cfg->mdio_dev, cfg->addr, reg_addr, (uint16_t *)data);

read_end:
	mdio_bus_disable(cfg->mdio_dev);
	k_mutex_unlock(&dev_data->mutex);

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

	k_mutex_lock(&dev_data->mutex, K_FOREVER);
	mdio_bus_enable(cfg->mdio_dev);

	/* select page, given by register upper byte */
	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
	ret = mdio_write(cfg->mdio_dev, cfg->addr, reg_addr, (uint16_t)data);

write_end:
	mdio_bus_disable(cfg->mdio_dev);
	k_mutex_unlock(&dev_data->mutex);

	return ret;