Zephyr API Documentation  3.5.0
A Scalable Open Source RTOS
3.5.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
mdio.h
Go to the documentation of this file.
1
7/*
8 * Copyright (c) 2021 IP-Logix Inc.
9 * Copyright 2023 NXP
10 *
11 * SPDX-License-Identifier: Apache-2.0
12 */
13#ifndef ZEPHYR_INCLUDE_DRIVERS_MDIO_H_
14#define ZEPHYR_INCLUDE_DRIVERS_MDIO_H_
15
22#include <zephyr/types.h>
23#include <zephyr/device.h>
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
35__subsystem struct mdio_driver_api {
37 void (*bus_enable)(const struct device *dev);
38
40 void (*bus_disable)(const struct device *dev);
41
43 int (*read)(const struct device *dev, uint8_t prtad, uint8_t regad,
44 uint16_t *data);
45
47 int (*write)(const struct device *dev, uint8_t prtad, uint8_t regad,
48 uint16_t data);
49
51 int (*read_c45)(const struct device *dev, uint8_t prtad, uint8_t devad,
52 uint16_t regad, uint16_t *data);
53
55 int (*write_c45)(const struct device *dev, uint8_t prtad, uint8_t devad,
56 uint16_t regad, uint16_t data);
57};
68__syscall void mdio_bus_enable(const struct device *dev);
69
70static inline void z_impl_mdio_bus_enable(const struct device *dev)
71{
72 const struct mdio_driver_api *api =
73 (const struct mdio_driver_api *)dev->api;
74
75 return api->bus_enable(dev);
76}
77
84__syscall void mdio_bus_disable(const struct device *dev);
85
86static inline void z_impl_mdio_bus_disable(const struct device *dev)
87{
88 const struct mdio_driver_api *api =
89 (const struct mdio_driver_api *)dev->api;
90
91 return api->bus_disable(dev);
92}
93
110__syscall int mdio_read(const struct device *dev, uint8_t prtad, uint8_t regad,
111 uint16_t *data);
112
113static inline int z_impl_mdio_read(const struct device *dev, uint8_t prtad,
114 uint8_t regad, uint16_t *data)
115{
116 const struct mdio_driver_api *api =
117 (const struct mdio_driver_api *)dev->api;
118
119 if (api->read == NULL) {
120 return -ENOSYS;
121 }
122
123 return api->read(dev, prtad, regad, data);
124}
125
126
143__syscall int mdio_write(const struct device *dev, uint8_t prtad, uint8_t regad,
144 uint16_t data);
145
146static inline int z_impl_mdio_write(const struct device *dev, uint8_t prtad,
147 uint8_t regad, uint16_t data)
148{
149 const struct mdio_driver_api *api =
150 (const struct mdio_driver_api *)dev->api;
151
152 if (api->write == NULL) {
153 return -ENOSYS;
154 }
155
156 return api->write(dev, prtad, regad, data);
157}
158
176__syscall int mdio_read_c45(const struct device *dev, uint8_t prtad,
177 uint8_t devad, uint16_t regad, uint16_t *data);
178
179static inline int z_impl_mdio_read_c45(const struct device *dev, uint8_t prtad,
180 uint8_t devad, uint16_t regad,
181 uint16_t *data)
182{
183 const struct mdio_driver_api *api =
184 (const struct mdio_driver_api *)dev->api;
185
186 if (api->read_c45 == NULL) {
187 return -ENOSYS;
188 }
189
190 return api->read_c45(dev, prtad, devad, regad, data);
191}
192
210__syscall int mdio_write_c45(const struct device *dev, uint8_t prtad,
211 uint8_t devad, uint16_t regad, uint16_t data);
212
213static inline int z_impl_mdio_write_c45(const struct device *dev, uint8_t prtad,
214 uint8_t devad, uint16_t regad,
215 uint16_t data)
216{
217 const struct mdio_driver_api *api =
218 (const struct mdio_driver_api *)dev->api;
219
220 if (api->write_c45 == NULL) {
221 return -ENOSYS;
222 }
223
224 return api->write_c45(dev, prtad, devad, regad, data);
225}
226
227#ifdef __cplusplus
228}
229#endif
230
235#include <syscalls/mdio.h>
236
237#endif /* ZEPHYR_INCLUDE_DRIVERS_MDIO_H_ */
int mdio_write(const struct device *dev, uint8_t prtad, uint8_t regad, uint16_t data)
Write to MDIO bus.
void mdio_bus_enable(const struct device *dev)
Enable 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.
void mdio_bus_disable(const struct device *dev)
Disable MDIO bus and tri-state drivers.
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_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
__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:381
const void * api
Address of the API structure exposed by the device instance.
Definition: device.h:387