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
25#include <zephyr/types.h>
26#include <zephyr/device.h>
27#include <errno.h>
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
37
42typedef int (*mdio_api_read_t)(const struct device *dev, uint8_t prtad, uint8_t regad,
43 uint16_t *data);
44
49typedef int (*mdio_api_write_t)(const struct device *dev, uint8_t prtad, uint8_t regad,
51
56typedef int (*mdio_api_read_c45_t)(const struct device *dev, uint8_t prtad, uint8_t devad,
57 uint16_t regad, uint16_t *data);
58
63typedef int (*mdio_api_write_c45_t)(const struct device *dev, uint8_t prtad, uint8_t devad,
64 uint16_t regad, uint16_t data);
65
82
86
103__syscall int mdio_read(const struct device *dev, uint8_t prtad, uint8_t regad,
104 uint16_t *data);
105
106static inline int z_impl_mdio_read(const struct device *dev, uint8_t prtad,
107 uint8_t regad, uint16_t *data)
108{
109 if (DEVICE_API_GET(mdio, dev)->read == NULL) {
110 return -ENOSYS;
111 }
112
113 return DEVICE_API_GET(mdio, dev)->read(dev, prtad, regad, data);
114}
115
116
133__syscall int mdio_write(const struct device *dev, uint8_t prtad, uint8_t regad,
134 uint16_t data);
135
136static inline int z_impl_mdio_write(const struct device *dev, uint8_t prtad,
137 uint8_t regad, uint16_t data)
138{
139 if (DEVICE_API_GET(mdio, dev)->write == NULL) {
140 return -ENOSYS;
141 }
142
143 return DEVICE_API_GET(mdio, dev)->write(dev, prtad, regad, data);
144}
145
163__syscall int mdio_read_c45(const struct device *dev, uint8_t prtad,
164 uint8_t devad, uint16_t regad, uint16_t *data);
165
166static inline int z_impl_mdio_read_c45(const struct device *dev, uint8_t prtad,
167 uint8_t devad, uint16_t regad,
168 uint16_t *data)
169{
170 if (DEVICE_API_GET(mdio, dev)->read_c45 == NULL) {
171 return -ENOSYS;
172 }
173
174 return DEVICE_API_GET(mdio, dev)->read_c45(dev, prtad, devad, regad, data);
175}
176
194__syscall int mdio_write_c45(const struct device *dev, uint8_t prtad,
195 uint8_t devad, uint16_t regad, uint16_t data);
196
197static inline int z_impl_mdio_write_c45(const struct device *dev, uint8_t prtad,
198 uint8_t devad, uint16_t regad,
199 uint16_t data)
200{
201 if (DEVICE_API_GET(mdio, dev)->write_c45 == NULL) {
202 return -ENOSYS;
203 }
204
205 return DEVICE_API_GET(mdio, dev)->write_c45(dev, prtad, devad, regad, data);
206}
207
208#ifdef __cplusplus
209}
210#endif
211
215
216#include <zephyr/syscalls/mdio.h>
217
218#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:1449
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:49
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:63
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:56
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:42
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:69
mdio_api_read_t read
@driver_ops_optional Read from MDIO Bus.
Definition mdio.h:71
mdio_api_write_c45_t write_c45
@driver_ops_optional Write to MDIO bus using Clause 45 access.
Definition mdio.h:80
mdio_api_write_t write
@driver_ops_optional Write to MDIO bus.
Definition mdio.h:74
mdio_api_read_c45_t read_c45
@driver_ops_optional Read from MDIO Bus using Clause 45 access.
Definition mdio.h:77