This is the documentation for the latest (main) development branch of Zephyr. If you are looking for the documentation of previous releases, use the drop-down menu on the left and select the desired version.

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
  • dev[in] Pointer to the device structure for the controller

void mdio_bus_disable(const struct device *dev)

Disable MDIO bus and tri-state drivers.

Parameters
  • dev[in] 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
  • dev[in] Pointer to the device structure for the controller

  • prtad[in] Port address

  • devad[in] Device address

  • data – Pointer to receive read data

Returns

  • 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
  • dev[in] Pointer to the device structure for the controller

  • prtad[in] Port address

  • devad[in] Device address

  • data[in] Data to write

Returns

  • 0 – If successful.

  • -EIO – General input / output error.

  • -ETIMEDOUT – If transaction timedout on the bus