Commit | Line | Data |
---|---|---|
8585bdad SA |
1 | /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-or-later */ |
2 | /* | |
3 | * Copyright 2008 - 2015 Freescale Semiconductor Inc. | |
39339616 IL |
4 | */ |
5 | ||
6 | #ifndef __MAC_H | |
7 | #define __MAC_H | |
8 | ||
9 | #include <linux/device.h> | |
10 | #include <linux/if_ether.h> | |
11 | #include <linux/phy.h> | |
5d93cfcf | 12 | #include <linux/phylink.h> |
39339616 IL |
13 | #include <linux/list.h> |
14 | ||
15 | #include "fman_port.h" | |
16 | #include "fman.h" | |
17 | #include "fman_mac.h" | |
18 | ||
19 | struct fman_mac; | |
20 | struct mac_priv_s; | |
21 | ||
22 | struct mac_device { | |
262f2b78 | 23 | void __iomem *vaddr; |
7bd63966 | 24 | struct device *dev; |
c99f0f7e | 25 | struct resource *res; |
39339616 IL |
26 | u8 addr[ETH_ALEN]; |
27 | struct fman_port *port[2]; | |
5d93cfcf SA |
28 | struct phylink *phylink; |
29 | struct phylink_config phylink_config; | |
3c38ec67 | 30 | phy_interface_t phy_if; |
39339616 | 31 | |
39339616 | 32 | bool promisc; |
c893238e | 33 | bool allmulti; |
39339616 | 34 | |
5d93cfcf | 35 | const struct phylink_mac_ops *phylink_ops; |
e61406a1 | 36 | int (*enable)(struct fman_mac *mac_dev); |
901bdff2 | 37 | void (*disable)(struct fman_mac *mac_dev); |
39339616 | 38 | int (*set_promisc)(struct fman_mac *mac_dev, bool enable); |
76660757 | 39 | int (*change_addr)(struct fman_mac *mac_dev, const enet_addr_t *enet_addr); |
c893238e | 40 | int (*set_allmulti)(struct fman_mac *mac_dev, bool enable); |
0fab782a | 41 | int (*set_tstamp)(struct fman_mac *mac_dev, bool enable); |
39339616 IL |
42 | int (*set_multi)(struct net_device *net_dev, |
43 | struct mac_device *mac_dev); | |
39339616 IL |
44 | int (*set_exception)(struct fman_mac *mac_dev, |
45 | enum fman_mac_exceptions exception, bool enable); | |
46 | int (*add_hash_mac_addr)(struct fman_mac *mac_dev, | |
47 | enet_addr_t *eth_addr); | |
48 | int (*remove_hash_mac_addr)(struct fman_mac *mac_dev, | |
49 | enet_addr_t *eth_addr); | |
50 | ||
ef2a8d54 SA |
51 | void (*update_speed)(struct mac_device *mac_dev, int speed); |
52 | ||
39339616 IL |
53 | struct fman_mac *fman_mac; |
54 | struct mac_priv_s *priv; | |
55 | }; | |
56 | ||
5d93cfcf SA |
57 | static inline struct mac_device |
58 | *fman_config_to_mac(struct phylink_config *config) | |
59 | { | |
60 | return container_of(config, struct mac_device, phylink_config); | |
61 | } | |
62 | ||
39339616 | 63 | struct dpaa_eth_data { |
39339616 IL |
64 | struct mac_device *mac_dev; |
65 | int mac_hw_id; | |
66 | int fman_hw_id; | |
67 | }; | |
68 | ||
69 | extern const char *mac_driver_description; | |
70 | ||
c496e4d6 | 71 | int fman_set_multi(struct net_device *net_dev, struct mac_device *mac_dev); |
39339616 IL |
72 | |
73 | #endif /* __MAC_H */ |