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 11struct nxp_c45_macsec; 12 13struct 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) 34int nxp_c45_macsec_config_init(struct phy_device *phydev); 35int nxp_c45_macsec_probe(struct phy_device *phydev); 36void nxp_c45_macsec_remove(struct phy_device *phydev); 37void nxp_c45_handle_macsec_interrupt(struct phy_device *phydev, 38 irqreturn_t *ret); 39#else 40static inline 41int nxp_c45_macsec_config_init(struct phy_device *phydev) 42{ 43 return 0; 44} 45 46static inline 47int nxp_c45_macsec_probe(struct phy_device *phydev) 48{ 49 return 0; 50} 51 52static inline 53void nxp_c45_macsec_remove(struct phy_device *phydev) 54{ 55} 56 57static inline 58void nxp_c45_handle_macsec_interrupt(struct phy_device *phydev, 59 irqreturn_t *ret) 60{ 61} 62#endif 63