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 Olteanstatic 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