/* * Copyright 2023 NXP * * SPDX-License-Identifier: Apache-2.0 */ #ifndef ZEPHYR_INCLUDE_DRIVERS_ETH_NXP_ENET_H__ #define ZEPHYR_INCLUDE_DRIVERS_ETH_NXP_ENET_H__ /* * This header is for NXP ENET driver development * and has definitions for internal implementations * not to be used by application */ #include #include #ifdef __cplusplus extern "C" { #endif /* * Reasons for callback to a driver: * * Module reset: The ENET module was reset, perhaps because of power management * actions, and subdriver should reinitialize part of the module. * Interrupt: An interrupt of a type relevant to the subdriver occurred. * Interrupt enable: The driver's relevant interrupt was enabled in NVIC */ enum nxp_enet_callback_reason { NXP_ENET_MODULE_RESET, NXP_ENET_INTERRUPT, NXP_ENET_INTERRUPT_ENABLED, }; enum nxp_enet_driver { NXP_ENET_MAC, NXP_ENET_MDIO, NXP_ENET_PTP_CLOCK, }; extern void nxp_enet_mdio_callback(const struct device *mdio_dev, enum nxp_enet_callback_reason event, void *data); #ifdef CONFIG_PTP_CLOCK_NXP_ENET extern void nxp_enet_ptp_clock_callback(const struct device *dev, enum nxp_enet_callback_reason event, void *data); #else #define nxp_enet_ptp_clock_callback(...) #endif /* * Internal implementation, inter-driver communication function * * dev: target device to call back * dev_type: which driver to call back * event: reason/cause of callback * data: opaque data, will be interpreted based on reason and target driver */ extern void nxp_enet_driver_cb(const struct device *dev, enum nxp_enet_driver dev_type, enum nxp_enet_callback_reason event, void *data); #ifdef __cplusplus } #endif #endif /* ZEPHYR_INCLUDE_DRIVERS_ETH_NXP_ENET_H__ */