summaryrefslogtreecommitdiffstats
path: root/drivers/net/phy/nxp-c45-tja11xx.h
blob: f364fca68f0bedef7dd727b23460ddc78e906432 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/* SPDX-License-Identifier: GPL-2.0 */
/* NXP C45 PHY driver header file
 * Copyright 2023 NXP
 * Author: Radu Pirea <radu-nicolae.pirea@oss.nxp.com>
 */

#include <linux/ptp_clock_kernel.h>

#define VEND1_PORT_FUNC_ENABLES		0x8048

struct nxp_c45_macsec;

struct nxp_c45_phy {
	const struct nxp_c45_phy_data *phy_data;
	struct phy_device *phydev;
	struct mii_timestamper mii_ts;
	struct ptp_clock *ptp_clock;
	struct ptp_clock_info caps;
	struct sk_buff_head tx_queue;
	struct sk_buff_head rx_queue;
	/* used to access the PTP registers atomic */
	struct mutex ptp_lock;
	int hwts_tx;
	int hwts_rx;
	u32 tx_delay;
	u32 rx_delay;
	struct timespec64 extts_ts;
	int extts_index;
	bool extts;
	struct nxp_c45_macsec *macsec;
};

#if IS_ENABLED(CONFIG_MACSEC)
int nxp_c45_macsec_config_init(struct phy_device *phydev);
int nxp_c45_macsec_probe(struct phy_device *phydev);
void nxp_c45_macsec_remove(struct phy_device *phydev);
void nxp_c45_handle_macsec_interrupt(struct phy_device *phydev,
				     irqreturn_t *ret);
#else
static inline
int nxp_c45_macsec_config_init(struct phy_device *phydev)
{
	return 0;
}

static inline
int nxp_c45_macsec_probe(struct phy_device *phydev)
{
	return 0;
}

static inline
void nxp_c45_macsec_remove(struct phy_device *phydev)
{
}

static inline
void nxp_c45_handle_macsec_interrupt(struct phy_device *phydev,
				     irqreturn_t *ret)
{
}
#endif