chip.c (61065fc3e32002ba48aa6bc3816c1f6f9f8daf55) | chip.c (f8b8b1cd5aadd221742b45eb0ee3c8a80abf036a) |
---|---|
1/* 2 * Marvell 88e6xxx Ethernet switch single-chip support 3 * 4 * Copyright (c) 2008 Marvell Semiconductor 5 * 6 * Copyright (c) 2016 Andrew Lunn <andrew@lunn.ch> 7 * 8 * Copyright (c) 2016-2017 Savoir-faire Linux Inc. --- 918 unchanged lines hidden (view full) --- 927 err = chip->info->ops->irl_init_all(chip, port); 928 if (err) 929 return err; 930 } 931 932 return 0; 933} 934 | 1/* 2 * Marvell 88e6xxx Ethernet switch single-chip support 3 * 4 * Copyright (c) 2008 Marvell Semiconductor 5 * 6 * Copyright (c) 2016 Andrew Lunn <andrew@lunn.ch> 7 * 8 * Copyright (c) 2016-2017 Savoir-faire Linux Inc. --- 918 unchanged lines hidden (view full) --- 927 err = chip->info->ops->irl_init_all(chip, port); 928 if (err) 929 return err; 930 } 931 932 return 0; 933} 934 |
935static int mv88e6xxx_mac_setup(struct mv88e6xxx_chip *chip) 936{ 937 if (chip->info->ops->set_switch_mac) { 938 u8 addr[ETH_ALEN]; 939 940 eth_random_addr(addr); 941 942 return chip->info->ops->set_switch_mac(chip, addr); 943 } 944 945 return 0; 946} 947 |
|
935static int mv88e6xxx_pvt_map(struct mv88e6xxx_chip *chip, int dev, int port) 936{ 937 u16 pvlan = 0; 938 939 if (!mv88e6xxx_has_pvt(chip)) 940 return -EOPNOTSUPP; 941 942 /* Skip the local source device, which uses in-chip port VLAN */ --- 176 unchanged lines hidden (view full) --- 1119 1120 if (vlan.vid > vid_end) 1121 break; 1122 1123 for (i = 0; i < mv88e6xxx_num_ports(chip); ++i) { 1124 if (dsa_is_dsa_port(ds, i) || dsa_is_cpu_port(ds, i)) 1125 continue; 1126 | 948static int mv88e6xxx_pvt_map(struct mv88e6xxx_chip *chip, int dev, int port) 949{ 950 u16 pvlan = 0; 951 952 if (!mv88e6xxx_has_pvt(chip)) 953 return -EOPNOTSUPP; 954 955 /* Skip the local source device, which uses in-chip port VLAN */ --- 176 unchanged lines hidden (view full) --- 1132 1133 if (vlan.vid > vid_end) 1134 break; 1135 1136 for (i = 0; i < mv88e6xxx_num_ports(chip); ++i) { 1137 if (dsa_is_dsa_port(ds, i) || dsa_is_cpu_port(ds, i)) 1138 continue; 1139 |
1127 if (!ds->ports[port].netdev) | 1140 if (!ds->ports[port].slave) |
1128 continue; 1129 1130 if (vlan.member[i] == 1131 MV88E6XXX_G1_VTU_DATA_MEMBER_TAG_NON_MEMBER) 1132 continue; 1133 1134 if (ds->ports[i].bridge_dev == 1135 ds->ports[port].bridge_dev) --- 872 unchanged lines hidden (view full) --- 2008 if (err) 2009 goto unlock; 2010 } 2011 2012 err = mv88e6xxx_irl_setup(chip); 2013 if (err) 2014 goto unlock; 2015 | 1141 continue; 1142 1143 if (vlan.member[i] == 1144 MV88E6XXX_G1_VTU_DATA_MEMBER_TAG_NON_MEMBER) 1145 continue; 1146 1147 if (ds->ports[i].bridge_dev == 1148 ds->ports[port].bridge_dev) --- 872 unchanged lines hidden (view full) --- 2021 if (err) 2022 goto unlock; 2023 } 2024 2025 err = mv88e6xxx_irl_setup(chip); 2026 if (err) 2027 goto unlock; 2028 |
2029 err = mv88e6xxx_mac_setup(chip); 2030 if (err) 2031 goto unlock; 2032 |
|
2016 err = mv88e6xxx_phy_setup(chip); 2017 if (err) 2018 goto unlock; 2019 2020 err = mv88e6xxx_vtu_setup(chip); 2021 if (err) 2022 goto unlock; 2023 --- 14 unchanged lines hidden (view full) --- 2038 goto unlock; 2039 2040unlock: 2041 mutex_unlock(&chip->reg_lock); 2042 2043 return err; 2044} 2045 | 2033 err = mv88e6xxx_phy_setup(chip); 2034 if (err) 2035 goto unlock; 2036 2037 err = mv88e6xxx_vtu_setup(chip); 2038 if (err) 2039 goto unlock; 2040 --- 14 unchanged lines hidden (view full) --- 2055 goto unlock; 2056 2057unlock: 2058 mutex_unlock(&chip->reg_lock); 2059 2060 return err; 2061} 2062 |
2046static int mv88e6xxx_set_addr(struct dsa_switch *ds, u8 *addr) 2047{ 2048 struct mv88e6xxx_chip *chip = ds->priv; 2049 int err; 2050 2051 if (!chip->info->ops->set_switch_mac) 2052 return -EOPNOTSUPP; 2053 2054 mutex_lock(&chip->reg_lock); 2055 err = chip->info->ops->set_switch_mac(chip, addr); 2056 mutex_unlock(&chip->reg_lock); 2057 2058 return err; 2059} 2060 | |
2061static int mv88e6xxx_mdio_read(struct mii_bus *bus, int phy, int reg) 2062{ 2063 struct mv88e6xxx_mdio_bus *mdio_bus = bus->priv; 2064 struct mv88e6xxx_chip *chip = mdio_bus->chip; 2065 u16 val; 2066 int err; 2067 2068 if (!chip->info->ops->phy_read) --- 1711 unchanged lines hidden (view full) --- 3780 3781 return err; 3782} 3783 3784static const struct dsa_switch_ops mv88e6xxx_switch_ops = { 3785 .probe = mv88e6xxx_drv_probe, 3786 .get_tag_protocol = mv88e6xxx_get_tag_protocol, 3787 .setup = mv88e6xxx_setup, | 2063static int mv88e6xxx_mdio_read(struct mii_bus *bus, int phy, int reg) 2064{ 2065 struct mv88e6xxx_mdio_bus *mdio_bus = bus->priv; 2066 struct mv88e6xxx_chip *chip = mdio_bus->chip; 2067 u16 val; 2068 int err; 2069 2070 if (!chip->info->ops->phy_read) --- 1711 unchanged lines hidden (view full) --- 3782 3783 return err; 3784} 3785 3786static const struct dsa_switch_ops mv88e6xxx_switch_ops = { 3787 .probe = mv88e6xxx_drv_probe, 3788 .get_tag_protocol = mv88e6xxx_get_tag_protocol, 3789 .setup = mv88e6xxx_setup, |
3788 .set_addr = mv88e6xxx_set_addr, | |
3789 .adjust_link = mv88e6xxx_adjust_link, 3790 .get_strings = mv88e6xxx_get_strings, 3791 .get_ethtool_stats = mv88e6xxx_get_ethtool_stats, 3792 .get_sset_count = mv88e6xxx_get_sset_count, 3793 .port_enable = mv88e6xxx_port_enable, 3794 .port_disable = mv88e6xxx_port_disable, 3795 .get_mac_eee = mv88e6xxx_get_mac_eee, 3796 .set_mac_eee = mv88e6xxx_set_mac_eee, --- 203 unchanged lines hidden --- | 3790 .adjust_link = mv88e6xxx_adjust_link, 3791 .get_strings = mv88e6xxx_get_strings, 3792 .get_ethtool_stats = mv88e6xxx_get_ethtool_stats, 3793 .get_sset_count = mv88e6xxx_get_sset_count, 3794 .port_enable = mv88e6xxx_port_enable, 3795 .port_disable = mv88e6xxx_port_disable, 3796 .get_mac_eee = mv88e6xxx_get_mac_eee, 3797 .set_mac_eee = mv88e6xxx_set_mac_eee, --- 203 unchanged lines hidden --- |