GNU Linux-libre 6.8.9-gnu
[releases.git] / drivers / net / phy / nxp-c45-tja11xx.h
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