Zephyr API Documentation 4.3.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
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
45 struct k_mutex *ptp_mutex; /* created in PTP driver */
46 void *enet; /* enet_handle poiniter used by PTP driver */
47};
48
49#ifdef CONFIG_MDIO_NXP_ENET
50extern void nxp_enet_mdio_callback(const struct device *mdio_dev,
51 enum nxp_enet_callback_reason event,
52 void *data);
53#else
54#define nxp_enet_mdio_callback(...)
55#endif
56
57#ifdef CONFIG_PTP_CLOCK_NXP_ENET
58extern void nxp_enet_ptp_clock_callback(const struct device *dev,
59 enum nxp_enet_callback_reason event,
60 void *data);
61#else
62#define nxp_enet_ptp_clock_callback(...)
63#endif
64
65/*
66 * Internal implementation, inter-driver communication function
67 *
68 * dev: target device to call back
69 * dev_type: which driver to call back
70 * event: reason/cause of callback
71 * data: opaque data, will be interpreted based on reason and target driver
72 */
73extern void nxp_enet_driver_cb(const struct device *dev,
74 enum nxp_enet_driver dev_type,
75 enum nxp_enet_callback_reason event,
76 void *data);
77
78#ifdef __cplusplus
79}
80#endif
81
82
83#endif /* ZEPHYR_INCLUDE_DRIVERS_ETH_NXP_ENET_H__ */
#define nxp_enet_mdio_callback(...)
Definition eth_nxp_enet.h:54
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:62
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:513
Mutex Structure.
Definition kernel.h:3336
Semaphore structure.
Definition kernel.h:3541
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