xref: /linux/drivers/net/phy/nxp-c45-tja11xx.h (revision 4b660dbd9ee2059850fd30e0df420ca7a38a1856)
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