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
eth_nxp_enet.h
Go to the documentation of this file.
1/*
2 * Copyright 2023 NXP
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_INCLUDE_DRIVERS_ETH_NXP_ENET_H__
8#define ZEPHYR_INCLUDE_DRIVERS_ETH_NXP_ENET_H__
9
10/*
11 * This header is for NXP ENET driver development
12 * and has definitions for internal implementations
13 * not to be used by application
14 */
15
16#include <zephyr/device.h>
17#include <zephyr/kernel.h>
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
23/*
24 * Reasons for callback to a driver:
25 *
26 * Module reset: The ENET module was reset, perhaps because of power management
27 * actions, and subdriver should reinitialize part of the module.
28 * Interrupt: An interrupt of a type relevant to the subdriver occurred.
29 * Interrupt enable: The driver's relevant interrupt was enabled in NVIC
30 */
36
42
44 struct k_sem ptp_ts_sem;
45 struct k_mutex *ptp_mutex; /* created in PTP driver */
46 void *enet; /* enet_handle poiniter used by PTP driver */
47};
48
49extern void nxp_enet_mdio_callback(const struct device *mdio_dev,
50 enum nxp_enet_callback_reason event,
51 void *data);
52
53#ifdef CONFIG_PTP_CLOCK_NXP_ENET
54extern void nxp_enet_ptp_clock_callback(const struct device *dev,
55 enum nxp_enet_callback_reason event,
56 void *data);
57#else
58#define nxp_enet_ptp_clock_callback(...)
59#endif
60
61/*
62 * Internal implementation, inter-driver communication function
63 *
64 * dev: target device to call back
65 * dev_type: which driver to call back
66 * event: reason/cause of callback
67 * data: opaque data, will be interpreted based on reason and target driver
68 */
69extern void nxp_enet_driver_cb(const struct device *dev,
70 enum nxp_enet_driver dev_type,
71 enum nxp_enet_callback_reason event,
72 void *data);
73
74#ifdef __cplusplus
75}
76#endif
77
78
79#endif /* ZEPHYR_INCLUDE_DRIVERS_ETH_NXP_ENET_H__ */
void nxp_enet_mdio_callback(const struct device *mdio_dev, enum nxp_enet_callback_reason event, void *data)
nxp_enet_callback_reason
Definition eth_nxp_enet.h:31
@ NXP_ENET_MODULE_RESET
Definition eth_nxp_enet.h:32
@ NXP_ENET_INTERRUPT
Definition eth_nxp_enet.h:33
@ NXP_ENET_INTERRUPT_ENABLED
Definition eth_nxp_enet.h:34
void nxp_enet_driver_cb(const struct device *dev, enum nxp_enet_driver dev_type, enum nxp_enet_callback_reason event, void *data)
#define nxp_enet_ptp_clock_callback(...)
Definition eth_nxp_enet.h:58
nxp_enet_driver
Definition eth_nxp_enet.h:37
@ NXP_ENET_PTP_CLOCK
Definition eth_nxp_enet.h:40
@ NXP_ENET_MDIO
Definition eth_nxp_enet.h:39
@ NXP_ENET_MAC
Definition eth_nxp_enet.h:38
Public kernel APIs.
Runtime device structure (in ROM) per driver instance.
Definition device.h:504
Mutex Structure.
Definition kernel.h:3070
Definition eth_nxp_enet.h:43
struct k_sem ptp_ts_sem
Definition eth_nxp_enet.h:44
struct k_mutex * ptp_mutex
Definition eth_nxp_enet.h:45
void * enet
Definition eth_nxp_enet.h:46