xref: /openbmc/linux/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.h (revision 7ae9fb1b7ecbb5d85d07857943f677fd1a559b18)
171947923SIoana Ciornei /* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
271947923SIoana Ciornei /* Copyright 2019 NXP */
371947923SIoana Ciornei #ifndef DPAA2_MAC_H
471947923SIoana Ciornei #define DPAA2_MAC_H
571947923SIoana Ciornei 
671947923SIoana Ciornei #include <linux/of.h>
771947923SIoana Ciornei #include <linux/of_mdio.h>
871947923SIoana Ciornei #include <linux/of_net.h>
971947923SIoana Ciornei #include <linux/phylink.h>
1071947923SIoana Ciornei 
1171947923SIoana Ciornei #include "dpmac.h"
1271947923SIoana Ciornei #include "dpmac-cmd.h"
1371947923SIoana Ciornei 
1471947923SIoana Ciornei struct dpaa2_mac {
1571947923SIoana Ciornei 	struct fsl_mc_device *mc_dev;
1671947923SIoana Ciornei 	struct dpmac_link_state state;
1771947923SIoana Ciornei 	struct net_device *net_dev;
1871947923SIoana Ciornei 	struct fsl_mc_io *mc_io;
19095dca16SIoana Ciornei 	struct dpmac_attr attr;
20dff95381SIoana Ciornei 	u16 ver_major, ver_minor;
21dff95381SIoana Ciornei 	unsigned long features;
2271947923SIoana Ciornei 
2371947923SIoana Ciornei 	struct phylink_config phylink_config;
2471947923SIoana Ciornei 	struct phylink *phylink;
2571947923SIoana Ciornei 	phy_interface_t if_mode;
2637556a4aSRussell King 	enum dpmac_link_type if_link_type;
27e7026f15SColin Foster 	struct phylink_pcs *pcs;
283264f599SCalvin Johnson 	struct fwnode_handle *fw_node;
29f978fe85SIoana Ciornei 
30f978fe85SIoana Ciornei 	struct phy *serdes_phy;
3171947923SIoana Ciornei };
3271947923SIoana Ciornei 
dpaa2_mac_is_type_phy(struct dpaa2_mac * mac)33*320fefa9SVladimir Oltean static inline bool dpaa2_mac_is_type_phy(struct dpaa2_mac *mac)
34*320fefa9SVladimir Oltean {
35*320fefa9SVladimir Oltean 	if (!mac)
36*320fefa9SVladimir Oltean 		return false;
37*320fefa9SVladimir Oltean 
38*320fefa9SVladimir Oltean 	return mac->attr.link_type == DPMAC_LINK_TYPE_PHY ||
39*320fefa9SVladimir Oltean 	       mac->attr.link_type == DPMAC_LINK_TYPE_BACKPLANE;
40*320fefa9SVladimir Oltean }
4171947923SIoana Ciornei 
42095dca16SIoana Ciornei int dpaa2_mac_open(struct dpaa2_mac *mac);
43095dca16SIoana Ciornei 
44095dca16SIoana Ciornei void dpaa2_mac_close(struct dpaa2_mac *mac);
45095dca16SIoana Ciornei 
4671947923SIoana Ciornei int dpaa2_mac_connect(struct dpaa2_mac *mac);
4771947923SIoana Ciornei 
4871947923SIoana Ciornei void dpaa2_mac_disconnect(struct dpaa2_mac *mac);
4971947923SIoana Ciornei 
50991df1fbSIoana Ciornei int dpaa2_mac_get_sset_count(void);
51991df1fbSIoana Ciornei 
52991df1fbSIoana Ciornei void dpaa2_mac_get_strings(u8 *data);
53991df1fbSIoana Ciornei 
54991df1fbSIoana Ciornei void dpaa2_mac_get_ethtool_stats(struct dpaa2_mac *mac, u64 *data);
55991df1fbSIoana Ciornei 
56f978fe85SIoana Ciornei void dpaa2_mac_start(struct dpaa2_mac *mac);
57f978fe85SIoana Ciornei 
58f978fe85SIoana Ciornei void dpaa2_mac_stop(struct dpaa2_mac *mac);
59f978fe85SIoana Ciornei 
6071947923SIoana Ciornei #endif /* DPAA2_MAC_H */
61