mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
net: dsa: microchip: bypass dev_ops for port_setup()
port_setup() is handled through a common function that redirects the treatment to ksz_dev_ops callbacks. This layer of indirection isn't needed since we now have a dsa_switch_ops for each switch family Remove one indirection layer for KSZ switches, by connecting the ksz_dev_ops :: port_setup() operations directly to dsa_switch_ops. Make ksz9477_set_default_prio_queue_mapping() non-static since it's used by ksz_common for tc operations and by ksz9477.c for this port_setup(). Remove the now unused port_setup() callback from ksz_dev_ops. Signed-off-by: Bastien Curutchet (Schneider Electric) <bastien.curutchet@bootlin.com> Link: https://patch.msgid.link/20260521-clean-ksz-2nd-series-v3-6-75c38971c19a@bootlin.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
df478153cb
commit
aa69020989
|
|
@ -1692,6 +1692,17 @@ static void ksz8_port_setup(struct ksz_device *dev, int port, bool cpu_port)
|
|||
ksz8_pme_pwrite8(dev, port, regs[REG_PORT_PME_CTRL], 0);
|
||||
}
|
||||
|
||||
static int ksz8_dsa_port_setup(struct dsa_switch *ds, int port)
|
||||
{
|
||||
struct ksz_device *dev = ds->priv;
|
||||
|
||||
if (!dsa_is_user_port(ds, port))
|
||||
return 0;
|
||||
|
||||
ksz8_port_setup(dev, port, false);
|
||||
return ksz_dcb_init_port(dev, port);
|
||||
}
|
||||
|
||||
static void ksz88x3_config_rmii_clk(struct ksz_device *dev)
|
||||
{
|
||||
struct dsa_port *cpu_dp = dsa_to_port(dev->ds, dev->cpu_port);
|
||||
|
|
@ -2319,7 +2330,6 @@ const struct phylink_mac_ops ksz8_phylink_mac_ops = {
|
|||
const struct ksz_dev_ops ksz8463_dev_ops = {
|
||||
.get_port_addr = ksz8463_get_port_addr,
|
||||
.cfg_port_member = ksz8_cfg_port_member,
|
||||
.port_setup = ksz8_port_setup,
|
||||
.r_phy = ksz8463_r_phy,
|
||||
.w_phy = ksz8463_w_phy,
|
||||
.r_mib_cnt = ksz8_r_mib_cnt,
|
||||
|
|
@ -2333,7 +2343,6 @@ const struct ksz_dev_ops ksz8463_dev_ops = {
|
|||
const struct ksz_dev_ops ksz87xx_dev_ops = {
|
||||
.get_port_addr = ksz8_get_port_addr,
|
||||
.cfg_port_member = ksz8_cfg_port_member,
|
||||
.port_setup = ksz8_port_setup,
|
||||
.r_phy = ksz8_r_phy,
|
||||
.w_phy = ksz8_w_phy,
|
||||
.r_mib_cnt = ksz8_r_mib_cnt,
|
||||
|
|
@ -2350,7 +2359,6 @@ const struct ksz_dev_ops ksz87xx_dev_ops = {
|
|||
const struct ksz_dev_ops ksz88xx_dev_ops = {
|
||||
.get_port_addr = ksz8_get_port_addr,
|
||||
.cfg_port_member = ksz8_cfg_port_member,
|
||||
.port_setup = ksz8_port_setup,
|
||||
.r_phy = ksz8_r_phy,
|
||||
.w_phy = ksz8_w_phy,
|
||||
.r_mib_cnt = ksz8_r_mib_cnt,
|
||||
|
|
@ -2373,7 +2381,7 @@ const struct dsa_switch_ops ksz8463_switch_ops = {
|
|||
.phy_read = ksz_phy_read16,
|
||||
.phy_write = ksz_phy_write16,
|
||||
.phylink_get_caps = ksz8_phylink_get_caps,
|
||||
.port_setup = ksz_port_setup,
|
||||
.port_setup = ksz8_dsa_port_setup,
|
||||
.get_strings = ksz_get_strings,
|
||||
.get_ethtool_stats = ksz_get_ethtool_stats,
|
||||
.get_sset_count = ksz_sset_count,
|
||||
|
|
@ -2433,7 +2441,7 @@ const struct dsa_switch_ops ksz87xx_switch_ops = {
|
|||
.phy_read = ksz_phy_read16,
|
||||
.phy_write = ksz_phy_write16,
|
||||
.phylink_get_caps = ksz8_phylink_get_caps,
|
||||
.port_setup = ksz_port_setup,
|
||||
.port_setup = ksz8_dsa_port_setup,
|
||||
.get_strings = ksz_get_strings,
|
||||
.get_ethtool_stats = ksz_get_ethtool_stats,
|
||||
.get_sset_count = ksz_sset_count,
|
||||
|
|
@ -2493,7 +2501,7 @@ const struct dsa_switch_ops ksz88xx_switch_ops = {
|
|||
.phy_read = ksz_phy_read16,
|
||||
.phy_write = ksz_phy_write16,
|
||||
.phylink_get_caps = ksz8_phylink_get_caps,
|
||||
.port_setup = ksz_port_setup,
|
||||
.port_setup = ksz8_dsa_port_setup,
|
||||
.get_strings = ksz_get_strings,
|
||||
.get_ethtool_stats = ksz_get_ethtool_stats,
|
||||
.get_sset_count = ksz_sset_count,
|
||||
|
|
|
|||
|
|
@ -1309,6 +1309,23 @@ static void ksz9477_port_setup(struct ksz_device *dev, int port, bool cpu_port)
|
|||
ksz_pwrite8(dev, port, regs[REG_PORT_PME_CTRL], 0);
|
||||
}
|
||||
|
||||
static int ksz9477_dsa_port_setup(struct dsa_switch *ds, int port)
|
||||
{
|
||||
struct ksz_device *dev = ds->priv;
|
||||
int ret;
|
||||
|
||||
if (!dsa_is_user_port(ds, port))
|
||||
return 0;
|
||||
|
||||
ksz9477_port_setup(dev, port, false);
|
||||
|
||||
ret = ksz9477_set_default_prio_queue_mapping(dev, port);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return ksz_dcb_init_port(dev, port);
|
||||
}
|
||||
|
||||
static void ksz9477_config_cpu_port(struct dsa_switch *ds)
|
||||
{
|
||||
struct ksz_device *dev = ds->priv;
|
||||
|
|
@ -1895,7 +1912,6 @@ const struct phylink_mac_ops ksz9477_phylink_mac_ops = {
|
|||
const struct ksz_dev_ops ksz9477_dev_ops = {
|
||||
.get_port_addr = ksz9477_get_port_addr,
|
||||
.cfg_port_member = ksz9477_cfg_port_member,
|
||||
.port_setup = ksz9477_port_setup,
|
||||
.r_phy = ksz9477_r_phy,
|
||||
.w_phy = ksz9477_w_phy,
|
||||
.r_mib_cnt = ksz9477_r_mib_cnt,
|
||||
|
|
@ -1919,7 +1935,7 @@ const struct dsa_switch_ops ksz9477_switch_ops = {
|
|||
.phy_read = ksz_phy_read16,
|
||||
.phy_write = ksz_phy_write16,
|
||||
.phylink_get_caps = ksz9477_phylink_get_caps,
|
||||
.port_setup = ksz_port_setup,
|
||||
.port_setup = ksz9477_dsa_port_setup,
|
||||
.set_ageing_time = ksz9477_set_ageing_time,
|
||||
.get_strings = ksz_get_strings,
|
||||
.get_ethtool_stats = ksz_get_ethtool_stats,
|
||||
|
|
|
|||
|
|
@ -2947,8 +2947,7 @@ void ksz_port_bridge_leave(struct dsa_switch *ds, int port,
|
|||
*/
|
||||
}
|
||||
|
||||
static int ksz9477_set_default_prio_queue_mapping(struct ksz_device *dev,
|
||||
int port)
|
||||
int ksz9477_set_default_prio_queue_mapping(struct ksz_device *dev, int port)
|
||||
{
|
||||
u32 queue_map = 0;
|
||||
int ipm;
|
||||
|
|
@ -2970,30 +2969,6 @@ static int ksz9477_set_default_prio_queue_mapping(struct ksz_device *dev,
|
|||
return ksz_pwrite32(dev, port, KSZ9477_PORT_MRI_TC_MAP__4, queue_map);
|
||||
}
|
||||
|
||||
int ksz_port_setup(struct dsa_switch *ds, int port)
|
||||
{
|
||||
struct ksz_device *dev = ds->priv;
|
||||
int ret;
|
||||
|
||||
if (!dsa_is_user_port(ds, port))
|
||||
return 0;
|
||||
|
||||
/* setup user port */
|
||||
dev->dev_ops->port_setup(dev, port, false);
|
||||
|
||||
if (!is_ksz8(dev)) {
|
||||
ret = ksz9477_set_default_prio_queue_mapping(dev, port);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* port_stp_state_set() will be called after to enable the port so
|
||||
* there is no need to do anything.
|
||||
*/
|
||||
|
||||
return ksz_dcb_init_port(dev, port);
|
||||
}
|
||||
|
||||
void ksz_port_stp_state_set(struct dsa_switch *ds, int port, u8 state)
|
||||
{
|
||||
struct ksz_device *dev = ds->priv;
|
||||
|
|
|
|||
|
|
@ -361,7 +361,6 @@ struct alu_struct {
|
|||
struct ksz_dev_ops {
|
||||
u32 (*get_port_addr)(int port, int offset);
|
||||
void (*cfg_port_member)(struct ksz_device *dev, int port, u8 member);
|
||||
void (*port_setup)(struct ksz_device *dev, int port, bool cpu_port);
|
||||
|
||||
/**
|
||||
* @mdio_bus_preinit: Function pointer to pre-initialize the MDIO bus
|
||||
|
|
@ -427,7 +426,6 @@ int ksz_switch_suspend(struct device *dev);
|
|||
int ksz_switch_resume(struct device *dev);
|
||||
|
||||
void ksz_teardown(struct dsa_switch *ds);
|
||||
int ksz_port_setup(struct dsa_switch *ds, int port);
|
||||
void ksz_port_teardown(struct dsa_switch *ds, int port);
|
||||
|
||||
void ksz_init_mib_timer(struct ksz_device *dev);
|
||||
|
|
@ -515,6 +513,7 @@ int ksz_pirq_setup(struct ksz_device *dev, u8 p);
|
|||
int ksz_girq_setup(struct ksz_device *dev);
|
||||
void ksz_irq_free(struct ksz_irq *kirq);
|
||||
int ksz_parse_drive_strength(struct ksz_device *dev);
|
||||
int ksz9477_set_default_prio_queue_mapping(struct ksz_device *dev, int port);
|
||||
|
||||
/* Common register access functions */
|
||||
static inline struct regmap *ksz_regmap_8(struct ksz_device *dev)
|
||||
|
|
|
|||
|
|
@ -411,6 +411,23 @@ static void lan937x_port_setup(struct ksz_device *dev, int port, bool cpu_port)
|
|||
dev->dev_ops->cfg_port_member(dev, port, member);
|
||||
}
|
||||
|
||||
static int lan937x_dsa_port_setup(struct dsa_switch *ds, int port)
|
||||
{
|
||||
struct ksz_device *dev = ds->priv;
|
||||
int ret;
|
||||
|
||||
if (!dsa_is_user_port(ds, port))
|
||||
return 0;
|
||||
|
||||
lan937x_port_setup(dev, port, false);
|
||||
|
||||
ret = ksz9477_set_default_prio_queue_mapping(dev, port);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return ksz_dcb_init_port(dev, port);
|
||||
}
|
||||
|
||||
static void lan937x_config_cpu_port(struct dsa_switch *ds)
|
||||
{
|
||||
struct ksz_device *dev = ds->priv;
|
||||
|
|
@ -799,7 +816,6 @@ const struct phylink_mac_ops lan937x_phylink_mac_ops = {
|
|||
const struct ksz_dev_ops lan937x_dev_ops = {
|
||||
.get_port_addr = ksz9477_get_port_addr,
|
||||
.cfg_port_member = ksz9477_cfg_port_member,
|
||||
.port_setup = lan937x_port_setup,
|
||||
.mdio_bus_preinit = lan937x_mdio_bus_preinit,
|
||||
.create_phy_addr_map = lan937x_create_phy_addr_map,
|
||||
.r_phy = lan937x_r_phy,
|
||||
|
|
@ -823,7 +839,7 @@ const struct dsa_switch_ops lan937x_switch_ops = {
|
|||
.phy_read = ksz_phy_read16,
|
||||
.phy_write = ksz_phy_write16,
|
||||
.phylink_get_caps = lan937x_phylink_get_caps,
|
||||
.port_setup = ksz_port_setup,
|
||||
.port_setup = lan937x_dsa_port_setup,
|
||||
.set_ageing_time = lan937x_set_ageing_time,
|
||||
.get_strings = ksz_get_strings,
|
||||
.get_ethtool_stats = ksz_get_ethtool_stats,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user