MDIO

Overview

MDIO is a bus that is commonly used to communicate with ethernet PHY devices. Many ethernet MAC controllers also provide hardware to communicate over MDIO bus with a peripheral device.

This API is intended to be used primarily by PHY drivers but can also be used by user firmware.

API Reference

group mdio_interface

MDIO Interface.

Functions

void mdio_bus_enable(const struct device *dev)

Enable MDIO bus.

Parameters
  • [in] dev: Pointer to the device structure for the controller

void mdio_bus_disable(const struct device *dev)

Disable MDIO bus and tri-state drivers.

Parameters
  • [in] dev: Pointer to the device structure for the controller

int mdio_read(const struct device *dev, uint8_t prtad, uint8_t devad, uint16_t *data)

Read from MDIO Bus.

This routine provides a generic interface to perform a read on the MDIO bus.

Parameters
  • [in] dev: Pointer to the device structure for the controller

  • [in] prtad: Port address

  • [in] devad: Device address

  • data: Pointer to receive read data

Return Value
  • 0: If successful.

  • -EIO: General input / output error.

  • -ETIMEDOUT: If transaction timedout on the bus

int mdio_write(const struct device *dev, uint8_t prtad, uint8_t devad, uint16_t data)

Write to MDIO bus.

This routine provides a generic interface to perform a write on the MDIO bus.

Parameters
  • [in] dev: Pointer to the device structure for the controller

  • [in] prtad: Port address

  • [in] devad: Device address

  • [in] data: Data to write

Return Value
  • 0: If successful.

  • -EIO: General input / output error.

  • -ETIMEDOUT: If transaction timedout on the bus