mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-16 00:46:47 +07:00
d99a86ae83
When both user ports are joined to the same bridge, the normal HW MAC learning is enabled. This means that unicast traffic is forwarded in HW. If one of the user ports leave the bridge, the ports goes back to the initial separated operation. Port separation relies on disabled HW MAC learning. Hence the condition that both ports must join same bridge. Add brigde methods port_bridge_join, port_bridge_leave and port_stp_state_set. Signed-off-by: Egil Hjelmeland <privat@egil-hjelmeland.no> Signed-off-by: David S. Miller <davem@davemloft.net>
33 lines
971 B
C
33 lines
971 B
C
#include <linux/regmap.h>
|
|
#include <linux/device.h>
|
|
#include <net/dsa.h>
|
|
|
|
struct lan9303;
|
|
|
|
struct lan9303_phy_ops {
|
|
/* PHY 1 and 2 access*/
|
|
int (*phy_read)(struct lan9303 *chip, int port, int regnum);
|
|
int (*phy_write)(struct lan9303 *chip, int port,
|
|
int regnum, u16 val);
|
|
};
|
|
|
|
struct lan9303 {
|
|
struct device *dev;
|
|
struct regmap *regmap;
|
|
struct regmap_irq_chip_data *irq_data;
|
|
struct gpio_desc *reset_gpio;
|
|
u32 reset_duration; /* in [ms] */
|
|
bool phy_addr_sel_strap;
|
|
struct dsa_switch *ds;
|
|
struct mutex indirect_mutex; /* protect indexed register access */
|
|
const struct lan9303_phy_ops *ops;
|
|
bool is_bridged; /* true if port 1 and 2 are bridged */
|
|
u32 swe_port_state; /* remember SWE_PORT_STATE while not bridged */
|
|
};
|
|
|
|
extern const struct regmap_access_table lan9303_register_set;
|
|
extern const struct lan9303_phy_ops lan9303_indirect_phy_ops;
|
|
|
|
int lan9303_probe(struct lan9303 *chip, struct device_node *np);
|
|
int lan9303_remove(struct lan9303 *chip);
|