63 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* 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
 |