1*356c3e9aSEgil Hjelmeland /* Included by drivers/net/dsa/lan9303.h and net/dsa/tag_lan9303.c */ 2*356c3e9aSEgil Hjelmeland #include <linux/if_ether.h> 3*356c3e9aSEgil Hjelmeland 4*356c3e9aSEgil Hjelmeland struct lan9303; 5*356c3e9aSEgil Hjelmeland 6*356c3e9aSEgil Hjelmeland struct lan9303_phy_ops { 7*356c3e9aSEgil Hjelmeland /* PHY 1 and 2 access*/ 8*356c3e9aSEgil Hjelmeland int (*phy_read)(struct lan9303 *chip, int port, int regnum); 9*356c3e9aSEgil Hjelmeland int (*phy_write)(struct lan9303 *chip, int port, 10*356c3e9aSEgil Hjelmeland int regnum, u16 val); 11*356c3e9aSEgil Hjelmeland }; 12*356c3e9aSEgil Hjelmeland 13*356c3e9aSEgil Hjelmeland #define LAN9303_NUM_ALR_RECORDS 512 14*356c3e9aSEgil Hjelmeland struct lan9303_alr_cache_entry { 15*356c3e9aSEgil Hjelmeland u8 mac_addr[ETH_ALEN]; 16*356c3e9aSEgil Hjelmeland u8 port_map; /* Bitmap of ports. Zero if unused entry */ 17*356c3e9aSEgil Hjelmeland u8 stp_override; /* non zero if set ALR_DAT1_AGE_OVERRID */ 18*356c3e9aSEgil Hjelmeland }; 19*356c3e9aSEgil Hjelmeland 20*356c3e9aSEgil Hjelmeland struct lan9303 { 21*356c3e9aSEgil Hjelmeland struct device *dev; 22*356c3e9aSEgil Hjelmeland struct regmap *regmap; 23*356c3e9aSEgil Hjelmeland struct regmap_irq_chip_data *irq_data; 24*356c3e9aSEgil Hjelmeland struct gpio_desc *reset_gpio; 25*356c3e9aSEgil Hjelmeland u32 reset_duration; /* in [ms] */ 26*356c3e9aSEgil Hjelmeland bool phy_addr_sel_strap; 27*356c3e9aSEgil Hjelmeland struct dsa_switch *ds; 28*356c3e9aSEgil Hjelmeland struct mutex indirect_mutex; /* protect indexed register access */ 29*356c3e9aSEgil Hjelmeland const struct lan9303_phy_ops *ops; 30*356c3e9aSEgil Hjelmeland bool is_bridged; /* true if port 1 and 2 are bridged */ 31*356c3e9aSEgil Hjelmeland u32 swe_port_state; /* remember SWE_PORT_STATE while not bridged */ 32*356c3e9aSEgil Hjelmeland /* LAN9303 do not offer reading specific ALR entry. Cache all 33*356c3e9aSEgil Hjelmeland * static entries in a flat table 34*356c3e9aSEgil Hjelmeland **/ 35*356c3e9aSEgil Hjelmeland struct lan9303_alr_cache_entry alr_cache[LAN9303_NUM_ALR_RECORDS]; 36*356c3e9aSEgil Hjelmeland }; 37