Zephyr Project API 4.2.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
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
37__subsystem struct mdio_driver_api {
39 void (*bus_enable)(const struct device *dev);
40
42 void (*bus_disable)(const struct device *dev);
43
45 int (*read)(const struct device *dev, uint8_t prtad, uint8_t regad,
46 uint16_t *data);
47
49 int (*write)(const struct device *dev, uint8_t prtad, uint8_t regad,
50 uint16_t data);
51
53 int (*read_c45)(const struct device *dev, uint8_t prtad, uint8_t devad,
54 uint16_t regad, uint16_t *data);
55
57 int (*write_c45)(const struct device *dev, uint8_t prtad, uint8_t devad,
58 uint16_t regad, uint16_t data);
59};
70__syscall void mdio_bus_enable(const struct device *dev);
71
72static inline void z_impl_mdio_bus_enable(const struct device *dev)
73{
74 if (DEVICE_API_GET(mdio, dev)->bus_enable != NULL) {
75 DEVICE_API_GET(mdio, dev)->bus_enable(dev);
76 }
77}
78
85__syscall void mdio_bus_disable(const struct device *dev);
86
87static inline void z_impl_mdio_bus_disable(const struct device *dev)
88{
89 if (DEVICE_API_GET(mdio, dev)->bus_disable != NULL) {
90 DEVICE_API_GET(mdio, dev)->bus_disable(dev);
91 }
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 if (DEVICE_API_GET(mdio, dev)->read == NULL) {
117 return -ENOSYS;
118 }
119
120 return DEVICE_API_GET(mdio, dev)->read(dev, prtad, regad, data);
121}
122
123
140__syscall int mdio_write(const struct device *dev, uint8_t prtad, uint8_t regad,
141 uint16_t data);
142
143static inline int z_impl_mdio_write(const struct device *dev, uint8_t prtad,
144 uint8_t regad, uint16_t data)
145{
146 if (DEVICE_API_GET(mdio, dev)->write == NULL) {
147 return -ENOSYS;
148 }
149
150 return DEVICE_API_GET(mdio, dev)->write(dev, prtad, regad, data);
151}
152
170__syscall int mdio_read_c45(const struct device *dev, uint8_t prtad,
171 uint8_t devad, uint16_t regad, uint16_t *data);
172
173static inline int z_impl_mdio_read_c45(const struct device *dev, uint8_t prtad,
174 uint8_t devad, uint16_t regad,
175 uint16_t *data)
176{
177 if (DEVICE_API_GET(mdio, dev)->read_c45 == NULL) {
178 return -ENOSYS;
179 }
180
181 return DEVICE_API_GET(mdio, dev)->read_c45(dev, prtad, devad, regad, data);
182}
183
201__syscall int mdio_write_c45(const struct device *dev, uint8_t prtad,
202 uint8_t devad, uint16_t regad, uint16_t data);
203
204static inline int z_impl_mdio_write_c45(const struct device *dev, uint8_t prtad,
205 uint8_t devad, uint16_t regad,
207{
208 if (DEVICE_API_GET(mdio, dev)->write_c45 == NULL) {
209 return -ENOSYS;
210 }
211
212 return DEVICE_API_GET(mdio, dev)->write_c45(dev, prtad, devad, regad, data);
213}
214
215#ifdef __cplusplus
216}
217#endif
218
223#include <zephyr/syscalls/mdio.h>
224
225#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:1350
System error numbers.
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:82
#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:510
void * data
Address of the device instance private data.
Definition device.h:520