Zephyr Project API 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
mdio.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2021 IP-Logix Inc.
3 * Copyright 2023 NXP
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
13
14#ifndef ZEPHYR_INCLUDE_DRIVERS_MDIO_H_
15#define ZEPHYR_INCLUDE_DRIVERS_MDIO_H_
16
23#include <zephyr/types.h>
24#include <zephyr/device.h>
25#include <errno.h>
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30
35
40typedef int (*mdio_api_read_t)(const struct device *dev, uint8_t prtad, uint8_t regad,
41 uint16_t *data);
42
47typedef int (*mdio_api_write_t)(const struct device *dev, uint8_t prtad, uint8_t regad,
49
54typedef int (*mdio_api_read_c45_t)(const struct device *dev, uint8_t prtad, uint8_t devad,
55 uint16_t regad, uint16_t *data);
56
61typedef int (*mdio_api_write_c45_t)(const struct device *dev, uint8_t prtad, uint8_t devad,
62 uint16_t regad, uint16_t data);
63
80
84
101__syscall int mdio_read(const struct device *dev, uint8_t prtad, uint8_t regad,
102 uint16_t *data);
103
104static inline int z_impl_mdio_read(const struct device *dev, uint8_t prtad,
105 uint8_t regad, uint16_t *data)
106{
107 if (DEVICE_API_GET(mdio, dev)->read == NULL) {
108 return -ENOSYS;
109 }
110
111 return DEVICE_API_GET(mdio, dev)->read(dev, prtad, regad, data);
112}
113
114
131__syscall int mdio_write(const struct device *dev, uint8_t prtad, uint8_t regad,
132 uint16_t data);
133
134static inline int z_impl_mdio_write(const struct device *dev, uint8_t prtad,
135 uint8_t regad, uint16_t data)
136{
137 if (DEVICE_API_GET(mdio, dev)->write == NULL) {
138 return -ENOSYS;
139 }
140
141 return DEVICE_API_GET(mdio, dev)->write(dev, prtad, regad, data);
142}
143
161__syscall int mdio_read_c45(const struct device *dev, uint8_t prtad,
162 uint8_t devad, uint16_t regad, uint16_t *data);
163
164static inline int z_impl_mdio_read_c45(const struct device *dev, uint8_t prtad,
165 uint8_t devad, uint16_t regad,
166 uint16_t *data)
167{
168 if (DEVICE_API_GET(mdio, dev)->read_c45 == NULL) {
169 return -ENOSYS;
170 }
171
172 return DEVICE_API_GET(mdio, dev)->read_c45(dev, prtad, devad, regad, data);
173}
174
192__syscall int mdio_write_c45(const struct device *dev, uint8_t prtad,
193 uint8_t devad, uint16_t regad, uint16_t data);
194
195static inline int z_impl_mdio_write_c45(const struct device *dev, uint8_t prtad,
196 uint8_t devad, uint16_t regad,
197 uint16_t data)
198{
199 if (DEVICE_API_GET(mdio, dev)->write_c45 == NULL) {
200 return -ENOSYS;
201 }
202
203 return DEVICE_API_GET(mdio, dev)->write_c45(dev, prtad, devad, regad, data);
204}
205
206#ifdef __cplusplus
207}
208#endif
209
213
214#include <zephyr/syscalls/mdio.h>
215
216#endif /* ZEPHYR_INCLUDE_DRIVERS_MDIO_H_ */
#define DEVICE_API_GET(_class, _dev)
Expands to the pointer of a device's API for a given class.
Definition device.h:1425
System error numbers.
int(* mdio_api_write_t)(const struct device *dev, uint8_t prtad, uint8_t regad, uint16_t data)
Write data to MDIO bus.
Definition mdio.h:47
int mdio_write(const struct device *dev, uint8_t prtad, uint8_t regad, uint16_t data)
Write to MDIO bus.
int mdio_read_c45(const struct device *dev, uint8_t prtad, uint8_t devad, uint16_t regad, uint16_t *data)
Read from MDIO Bus using Clause 45 access.
int(* mdio_api_write_c45_t)(const struct device *dev, uint8_t prtad, uint8_t devad, uint16_t regad, uint16_t data)
Write data to MDIO bus using Clause 45 access.
Definition mdio.h:61
int(* mdio_api_read_c45_t)(const struct device *dev, uint8_t prtad, uint8_t devad, uint16_t regad, uint16_t *data)
Read data from MDIO bus using Clause 45 access.
Definition mdio.h:54
int mdio_write_c45(const struct device *dev, uint8_t prtad, uint8_t devad, uint16_t regad, uint16_t data)
Write to MDIO bus using Clause 45 access.
int(* mdio_api_read_t)(const struct device *dev, uint8_t prtad, uint8_t regad, uint16_t *data)
@def_driverbackendgroup{MDIO,mdio_interface}
Definition mdio.h:40
int mdio_read(const struct device *dev, uint8_t prtad, uint8_t regad, uint16_t *data)
Read from MDIO Bus.
#define ENOSYS
Function not implemented.
Definition errno.h:83
#define NULL
Definition iar_missing_defs.h:20
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
Runtime device structure (in ROM) per driver instance.
Definition device.h:513
void * data
Address of the device instance private data.
Definition device.h:523
@driver_ops{MDIO}
Definition mdio.h:67
mdio_api_read_t read
@driver_ops_optional Read from MDIO Bus.
Definition mdio.h:69
mdio_api_write_c45_t write_c45
@driver_ops_optional Write to MDIO bus using Clause 45 access.
Definition mdio.h:78
mdio_api_write_t write
@driver_ops_optional Write to MDIO bus.
Definition mdio.h:72
mdio_api_read_c45_t read_c45
@driver_ops_optional Read from MDIO Bus using Clause 45 access.
Definition mdio.h:75