18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
28c2ecf20Sopenharmony_ci/* Copyright 2019 NXP */
38c2ecf20Sopenharmony_ci#ifndef DPAA2_MAC_H
48c2ecf20Sopenharmony_ci#define DPAA2_MAC_H
58c2ecf20Sopenharmony_ci
68c2ecf20Sopenharmony_ci#include <linux/of.h>
78c2ecf20Sopenharmony_ci#include <linux/of_mdio.h>
88c2ecf20Sopenharmony_ci#include <linux/of_net.h>
98c2ecf20Sopenharmony_ci#include <linux/phylink.h>
108c2ecf20Sopenharmony_ci#include <linux/pcs-lynx.h>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci#include "dpmac.h"
138c2ecf20Sopenharmony_ci#include "dpmac-cmd.h"
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_cistruct dpaa2_mac {
168c2ecf20Sopenharmony_ci	struct fsl_mc_device *mc_dev;
178c2ecf20Sopenharmony_ci	struct dpmac_link_state state;
188c2ecf20Sopenharmony_ci	struct net_device *net_dev;
198c2ecf20Sopenharmony_ci	struct fsl_mc_io *mc_io;
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci	struct phylink_config phylink_config;
228c2ecf20Sopenharmony_ci	struct phylink *phylink;
238c2ecf20Sopenharmony_ci	phy_interface_t if_mode;
248c2ecf20Sopenharmony_ci	enum dpmac_link_type if_link_type;
258c2ecf20Sopenharmony_ci	struct lynx_pcs *pcs;
268c2ecf20Sopenharmony_ci};
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_cibool dpaa2_mac_is_type_fixed(struct fsl_mc_device *dpmac_dev,
298c2ecf20Sopenharmony_ci			     struct fsl_mc_io *mc_io);
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ciint dpaa2_mac_connect(struct dpaa2_mac *mac);
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_civoid dpaa2_mac_disconnect(struct dpaa2_mac *mac);
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ciint dpaa2_mac_get_sset_count(void);
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_civoid dpaa2_mac_get_strings(u8 *data);
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_civoid dpaa2_mac_get_ethtool_stats(struct dpaa2_mac *mac, u64 *data);
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ci#endif /* DPAA2_MAC_H */
42