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 |