13#ifndef ZEPHYR_INCLUDE_DRIVERS_PHY_H_ 
   14#define ZEPHYR_INCLUDE_DRIVERS_PHY_H_ 
   45#define PHY_LINK_IS_FULL_DUPLEX(x)      (x & (BIT(1) | BIT(3) | BIT(5))) 
   46#define PHY_LINK_IS_SPEED_1000M(x)      (x & (BIT(4) | BIT(5))) 
   47#define PHY_LINK_IS_SPEED_100M(x)       (x & (BIT(2) | BIT(3))) 
   76__subsystem 
struct ethphy_driver_api {
 
   78        int (*get_link)(
const struct device *dev,
 
   82        int (*cfg_link)(
const struct device *dev,
 
  116static inline int z_impl_phy_configure_link(
const struct device *dev,
 
  119        const struct ethphy_driver_api *api =
 
  120                (
const struct ethphy_driver_api *)dev->
api;
 
  122        return api->cfg_link(dev, speeds);
 
  141static inline int z_impl_phy_get_link_state(
const struct device *dev,
 
  144        const struct ethphy_driver_api *api =
 
  145                (
const struct ethphy_driver_api *)dev->
api;
 
  147        return api->get_link(dev, 
state);
 
  168static inline int z_impl_phy_link_callback_set(
const struct device *dev,
 
  172        const struct ethphy_driver_api *api =
 
  173                (
const struct ethphy_driver_api *)dev->
api;
 
  175        return api->link_cb_set(dev, callback, 
user_data);
 
  193static inline int z_impl_phy_read(
const struct device *dev, 
uint16_t reg_addr,
 
  196        const struct ethphy_driver_api *api =
 
  197                (
const struct ethphy_driver_api *)dev->
api;
 
  199        return api->read(dev, reg_addr, value);
 
  217static inline int z_impl_phy_write(
const struct device *dev, 
uint16_t reg_addr,
 
  220        const struct ethphy_driver_api *api =
 
  221                (
const struct ethphy_driver_api *)dev->
api;
 
  223        return api->write(dev, reg_addr, value);
 
  235#include <syscalls/phy.h> 
int phy_get_link_state(const struct device *dev, struct phy_link_state *state)
Get PHY link state.
 
int phy_read(const struct device *dev, uint16_t reg_addr, uint32_t *value)
Read PHY registers.
 
int phy_write(const struct device *dev, uint16_t reg_addr, uint32_t value)
Write PHY register.
 
int phy_configure_link(const struct device *dev, enum phy_link_speed speeds)
Configure PHY link.
 
phy_link_speed
Ethernet link speeds.
Definition phy.h:30
 
void(* phy_callback_t)(const struct device *dev, struct phy_link_state *state, void *user_data)
Define the callback function signature for phy_link_callback_set() function.
Definition phy.h:66
 
int phy_link_callback_set(const struct device *dev, phy_callback_t callback, void *user_data)
Set link state change callback.
 
@ LINK_HALF_100BASE_T
100Base-T Half-Duplex
Definition phy.h:36
 
@ LINK_HALF_10BASE_T
10Base-T Half-Duplex
Definition phy.h:32
 
@ LINK_FULL_1000BASE_T
1000Base-T Full-Duplex
Definition phy.h:42
 
@ LINK_FULL_10BASE_T
10Base-T Full-Duplex
Definition phy.h:34
 
@ LINK_FULL_100BASE_T
100Base-T Full-Duplex
Definition phy.h:38
 
@ LINK_HALF_1000BASE_T
1000Base-T Half-Duplex
Definition phy.h:40
 
#define BIT(n)
Unsigned integer with bit position n set (signed in assembly language).
Definition util_macro.h:44
 
state
Definition parser_state.h:29
 
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
 
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
 
Runtime device structure (in ROM) per driver instance.
Definition device.h:381
 
const void * api
Address of the API structure exposed by the device instance.
Definition device.h:387
 
Link state.
Definition phy.h:50
 
bool is_up
When true the link is active and connected.
Definition phy.h:54
 
enum phy_link_speed speed
Link speed.
Definition phy.h:52
 
static fdata_t data[2]
Definition test_fifo_contexts.c:15
 
static const intptr_t user_data[5]
Definition main.c:588