Zephyr API Documentation 4.3.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
37__subsystem struct mdio_driver_api {
39 int (*read)(const struct device *dev, uint8_t prtad, uint8_t regad,
40 uint16_t *data);
41
43 int (*write)(const struct device *dev, uint8_t prtad, uint8_t regad,
44 uint16_t data);
45
47 int (*read_c45)(const struct device *dev, uint8_t prtad, uint8_t devad,
48 uint16_t regad, uint16_t *data);
49
51 int (*write_c45)(const struct device *dev, uint8_t prtad, uint8_t devad,
52 uint16_t regad, uint16_t data);
53};
57
74__syscall int mdio_read(const struct device *dev, uint8_t prtad, uint8_t regad,
75 uint16_t *data);
76
77static inline int z_impl_mdio_read(const struct device *dev, uint8_t prtad,
78 uint8_t regad, uint16_t *data)
79{
80 if (DEVICE_API_GET(mdio, dev)->read == NULL) {
81 return -ENOSYS;
82 }
83
84 return DEVICE_API_GET(mdio, dev)->read(dev, prtad, regad, data);
85}
86
87
104__syscall int mdio_write(const struct device *dev, uint8_t prtad, uint8_t regad,
105 uint16_t data);
106
107static inline int z_impl_mdio_write(const struct device *dev, uint8_t prtad,
108 uint8_t regad, uint16_t data)
109{
110 if (DEVICE_API_GET(mdio, dev)->write == NULL) {
111 return -ENOSYS;
112 }
113
114 return DEVICE_API_GET(mdio, dev)->write(dev, prtad, regad, data);
115}
116
134__syscall int mdio_read_c45(const struct device *dev, uint8_t prtad,
135 uint8_t devad, uint16_t regad, uint16_t *data);
136
137static inline int z_impl_mdio_read_c45(const struct device *dev, uint8_t prtad,
138 uint8_t devad, uint16_t regad,
139 uint16_t *data)
140{
141 if (DEVICE_API_GET(mdio, dev)->read_c45 == NULL) {
142 return -ENOSYS;
143 }
144
145 return DEVICE_API_GET(mdio, dev)->read_c45(dev, prtad, devad, regad, data);
146}
147
165__syscall int mdio_write_c45(const struct device *dev, uint8_t prtad,
166 uint8_t devad, uint16_t regad, uint16_t data);
167
168static inline int z_impl_mdio_write_c45(const struct device *dev, uint8_t prtad,
169 uint8_t devad, uint16_t regad,
171{
172 if (DEVICE_API_GET(mdio, dev)->write_c45 == NULL) {
173 return -ENOSYS;
174 }
175
176 return DEVICE_API_GET(mdio, dev)->write_c45(dev, prtad, devad, regad, data);
177}
178
179#ifdef __cplusplus
180}
181#endif
182
186
187#include <zephyr/syscalls/mdio.h>
188
189#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:1353
System error numbers.
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_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:513
void * data
Address of the device instance private data.
Definition device.h:523