Line data Source code
1 0 : /*
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
20 : extern "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 : */
31 0 : enum nxp_enet_callback_reason {
32 : NXP_ENET_MODULE_RESET,
33 : NXP_ENET_INTERRUPT,
34 : NXP_ENET_INTERRUPT_ENABLED,
35 : };
36 :
37 0 : enum nxp_enet_driver {
38 : NXP_ENET_MAC,
39 : NXP_ENET_MDIO,
40 : NXP_ENET_PTP_CLOCK,
41 : };
42 :
43 0 : extern void nxp_enet_mdio_callback(const struct device *mdio_dev,
44 : enum nxp_enet_callback_reason event,
45 : void *data);
46 :
47 : #ifdef CONFIG_PTP_CLOCK_NXP_ENET
48 : extern void nxp_enet_ptp_clock_callback(const struct device *dev,
49 : enum nxp_enet_callback_reason event,
50 : void *data);
51 : #else
52 0 : #define nxp_enet_ptp_clock_callback(...)
53 : #endif
54 :
55 : /*
56 : * Internal implementation, inter-driver communication function
57 : *
58 : * dev: target device to call back
59 : * dev_type: which driver to call back
60 : * event: reason/cause of callback
61 : * data: opaque data, will be interpreted based on reason and target driver
62 : */
63 0 : extern void nxp_enet_driver_cb(const struct device *dev,
64 : enum nxp_enet_driver dev_type,
65 : enum nxp_enet_callback_reason event,
66 : void *data);
67 :
68 : #ifdef __cplusplus
69 : }
70 : #endif
71 :
72 :
73 : #endif /* ZEPHYR_INCLUDE_DRIVERS_ETH_NXP_ENET_H__ */
|