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

source code of linux/drivers/net/phy/nxp-c45-tja11xx.h