1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* NXP C45 PHY driver header file 3 * Copyright 2023 NXP 4 * Author: Radu Pirea <radu-nicolae.pirea@oss.nxp.com> 5 */ 6 7 #include <linux/ptp_clock_kernel.h> 8 9 #define VEND1_PORT_FUNC_ENABLES 0x8048 10 11 struct nxp_c45_macsec; 12 13 struct nxp_c45_phy { 14 const struct nxp_c45_phy_data *phy_data; 15 struct phy_device *phydev; 16 struct mii_timestamper mii_ts; 17 struct ptp_clock *ptp_clock; 18 struct ptp_clock_info caps; 19 struct sk_buff_head tx_queue; 20 struct sk_buff_head rx_queue; 21 /* used to access the PTP registers atomic */ 22 struct mutex ptp_lock; 23 int hwts_tx; 24 int hwts_rx; 25 u32 tx_delay; 26 u32 rx_delay; 27 struct timespec64 extts_ts; 28 int extts_index; 29 bool extts; 30 struct nxp_c45_macsec *macsec; 31 }; 32 33 #if IS_ENABLED(CONFIG_MACSEC) 34 int nxp_c45_macsec_config_init(struct phy_device *phydev); 35 int nxp_c45_macsec_probe(struct phy_device *phydev); 36 void nxp_c45_macsec_remove(struct phy_device *phydev); 37 void nxp_c45_handle_macsec_interrupt(struct phy_device *phydev, 38 irqreturn_t *ret); 39 #else 40 static inline 41 int nxp_c45_macsec_config_init(struct phy_device *phydev) 42 { 43 return 0; 44 } 45 46 static inline 47 int nxp_c45_macsec_probe(struct phy_device *phydev) 48 { 49 return 0; 50 } 51 52 static inline 53 void nxp_c45_macsec_remove(struct phy_device *phydev) 54 { 55 } 56 57 static inline 58 void nxp_c45_handle_macsec_interrupt(struct phy_device *phydev, 59 irqreturn_t *ret) 60 { 61 } 62 #endif 63