1/* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
2/* Copyright 2019 NXP */
3#ifndef DPAA2_MAC_H
4#define DPAA2_MAC_H
5
6#include <linux/of.h>
7#include <linux/of_mdio.h>
8#include <linux/of_net.h>
9#include <linux/phylink.h>
10
11#include "dpmac.h"
12#include "dpmac-cmd.h"
13
14struct dpaa2_mac {
15 struct fsl_mc_device *mc_dev;
16 struct dpmac_link_state state;
17 struct net_device *net_dev;
18 struct fsl_mc_io *mc_io;
19 struct dpmac_attr attr;
20 u16 ver_major, ver_minor;
21 unsigned long features;
22
23 struct phylink_config phylink_config;
24 struct phylink *phylink;
25 phy_interface_t if_mode;
26 enum dpmac_link_type if_link_type;
27 struct phylink_pcs *pcs;
28 struct fwnode_handle *fw_node;
29
30 struct phy *serdes_phy;
31};
32
33static inline bool dpaa2_mac_is_type_phy(struct dpaa2_mac *mac)
34{
35 if (!mac)
36 return false;
37
38 return mac->attr.link_type == DPMAC_LINK_TYPE_PHY ||
39 mac->attr.link_type == DPMAC_LINK_TYPE_BACKPLANE;
40}
41
42int dpaa2_mac_open(struct dpaa2_mac *mac);
43
44void dpaa2_mac_close(struct dpaa2_mac *mac);
45
46int dpaa2_mac_connect(struct dpaa2_mac *mac);
47
48void dpaa2_mac_disconnect(struct dpaa2_mac *mac);
49
50int dpaa2_mac_get_sset_count(void);
51
52void dpaa2_mac_get_strings(u8 *data);
53
54void dpaa2_mac_get_ethtool_stats(struct dpaa2_mac *mac, u64 *data);
55
56void dpaa2_mac_start(struct dpaa2_mac *mac);
57
58void dpaa2_mac_stop(struct dpaa2_mac *mac);
59
60#endif /* DPAA2_MAC_H */
61

source code of linux/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.h