Zephyr API Documentation 4.1.99
A Scalable Open Source RTOS
 4.1.99
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#include <errno.h>
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
36__subsystem struct mdio_driver_api {
38 void (*bus_enable)(const struct device *dev);
39
41 void (*bus_disable)(const struct device *dev);
42
44 int (*read)(const struct device *dev, uint8_t prtad, uint8_t regad,
45 uint16_t *data);
46
48 int (*write)(const struct device *dev, uint8_t prtad, uint8_t regad,
49 uint16_t data);
50
52 int (*read_c45)(const struct device *dev, uint8_t prtad, uint8_t devad,
53 uint16_t regad, uint16_t *data);
54
56 int (*write_c45)(const struct device *dev, uint8_t prtad, uint8_t devad,
57 uint16_t regad, uint16_t data);
58};
69__syscall void mdio_bus_enable(const struct device *dev);
70
71static inline void z_impl_mdio_bus_enable(const struct device *dev)
72{
73 if (DEVICE_API_GET(mdio, dev)->bus_enable != NULL) {
74 DEVICE_API_GET(mdio, dev)->bus_enable(dev);
75 }
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 if (DEVICE_API_GET(mdio, dev)->bus_disable != NULL) {
89 DEVICE_API_GET(mdio, dev)->bus_disable(dev);
90 }
91}
92
109__syscall int mdio_read(const struct device *dev, uint8_t prtad, uint8_t regad,
110 uint16_t *data);
111
112static inline int z_impl_mdio_read(const struct device *dev, uint8_t prtad,
113 uint8_t regad, uint16_t *data)
114{
115 if (DEVICE_API_GET(mdio, dev)->read == NULL) {
116 return -ENOSYS;
117 }
118
119 return DEVICE_API_GET(mdio, dev)->read(dev, prtad, regad, data);
120}
121
122
139__syscall int mdio_write(const struct device *dev, uint8_t prtad, uint8_t regad,
140 uint16_t data);
141
142static inline int z_impl_mdio_write(const struct device *dev, uint8_t prtad,
143 uint8_t regad, uint16_t data)
144{
145 if (DEVICE_API_GET(mdio, dev)->write == NULL) {
146 return -ENOSYS;
147 }
148
149 return DEVICE_API_GET(mdio, dev)->write(dev, prtad, regad, data);
150}
151
169__syscall int mdio_read_c45(const struct device *dev, uint8_t prtad,
170 uint8_t devad, uint16_t regad, uint16_t *data);
171
172static inline int z_impl_mdio_read_c45(const struct device *dev, uint8_t prtad,
173 uint8_t devad, uint16_t regad,
174 uint16_t *data)
175{
176 if (DEVICE_API_GET(mdio, dev)->read_c45 == NULL) {
177 return -ENOSYS;
178 }
179
180 return DEVICE_API_GET(mdio, dev)->read_c45(dev, prtad, devad, regad, data);
181}
182
200__syscall int mdio_write_c45(const struct device *dev, uint8_t prtad,
201 uint8_t devad, uint16_t regad, uint16_t data);
202
203static inline int z_impl_mdio_write_c45(const struct device *dev, uint8_t prtad,
204 uint8_t devad, uint16_t regad,
206{
207 if (DEVICE_API_GET(mdio, dev)->write_c45 == NULL) {
208 return -ENOSYS;
209 }
210
211 return DEVICE_API_GET(mdio, dev)->write_c45(dev, prtad, devad, regad, data);
212}
213
214#ifdef __cplusplus
215}
216#endif
217
222#include <zephyr/syscalls/mdio.h>
223
224#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