Commit 9ef9633a authored by David S. Miller's avatar David S. Miller

Merge branch 'dsa-lan9303-phy_addr_sel_strap-rename-and-retype'

Egil Hjelmeland says:

====================
net: dsa: lan9303: phy_addr_sel_strap rename and retype

Non functional cleanups involving chip->phy_addr_sel_strap.
As promised in https://lkml.org/lkml/2017/11/6/273
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 4b24dd80 589d1976
...@@ -479,7 +479,8 @@ static int lan9303_detect_phy_setup(struct lan9303 *chip) ...@@ -479,7 +479,8 @@ static int lan9303_detect_phy_setup(struct lan9303 *chip)
{ {
int reg; int reg;
/* depending on the 'phy_addr_sel_strap' setting, the three phys are /* Calculate chip->phy_addr_base:
* Depending on the 'phy_addr_sel_strap' setting, the three phys are
* using IDs 0-1-2 or IDs 1-2-3. We cannot read back the * using IDs 0-1-2 or IDs 1-2-3. We cannot read back the
* 'phy_addr_sel_strap' setting directly, so we need a test, which * 'phy_addr_sel_strap' setting directly, so we need a test, which
* configuration is active: * configuration is active:
...@@ -494,13 +495,10 @@ static int lan9303_detect_phy_setup(struct lan9303 *chip) ...@@ -494,13 +495,10 @@ static int lan9303_detect_phy_setup(struct lan9303 *chip)
return reg; return reg;
} }
if ((reg != 0) && (reg != 0xffff)) chip->phy_addr_base = reg != 0 && reg != 0xffff;
chip->phy_addr_sel_strap = 1;
else
chip->phy_addr_sel_strap = 0;
dev_dbg(chip->dev, "Phy setup '%s' detected\n", dev_dbg(chip->dev, "Phy setup '%s' detected\n",
chip->phy_addr_sel_strap ? "1-2-3" : "0-1-2"); chip->phy_addr_base ? "1-2-3" : "0-1-2");
return 0; return 0;
} }
...@@ -1019,7 +1017,7 @@ static int lan9303_get_sset_count(struct dsa_switch *ds) ...@@ -1019,7 +1017,7 @@ static int lan9303_get_sset_count(struct dsa_switch *ds)
static int lan9303_phy_read(struct dsa_switch *ds, int phy, int regnum) static int lan9303_phy_read(struct dsa_switch *ds, int phy, int regnum)
{ {
struct lan9303 *chip = ds->priv; struct lan9303 *chip = ds->priv;
int phy_base = chip->phy_addr_sel_strap; int phy_base = chip->phy_addr_base;
if (phy == phy_base) if (phy == phy_base)
return lan9303_virt_phy_reg_read(chip, regnum); return lan9303_virt_phy_reg_read(chip, regnum);
...@@ -1033,7 +1031,7 @@ static int lan9303_phy_write(struct dsa_switch *ds, int phy, int regnum, ...@@ -1033,7 +1031,7 @@ static int lan9303_phy_write(struct dsa_switch *ds, int phy, int regnum,
u16 val) u16 val)
{ {
struct lan9303 *chip = ds->priv; struct lan9303 *chip = ds->priv;
int phy_base = chip->phy_addr_sel_strap; int phy_base = chip->phy_addr_base;
if (phy == phy_base) if (phy == phy_base)
return lan9303_virt_phy_reg_write(chip, regnum, val); return lan9303_virt_phy_reg_write(chip, regnum, val);
...@@ -1070,7 +1068,7 @@ static void lan9303_adjust_link(struct dsa_switch *ds, int port, ...@@ -1070,7 +1068,7 @@ static void lan9303_adjust_link(struct dsa_switch *ds, int port,
res = lan9303_phy_write(ds, port, MII_BMCR, ctl); res = lan9303_phy_write(ds, port, MII_BMCR, ctl);
if (port == chip->phy_addr_sel_strap) { if (port == chip->phy_addr_base) {
/* Virtual Phy: Remove Turbo 200Mbit mode */ /* Virtual Phy: Remove Turbo 200Mbit mode */
lan9303_read(chip->regmap, LAN9303_VIRT_SPECIAL_CTRL, &ctl); lan9303_read(chip->regmap, LAN9303_VIRT_SPECIAL_CTRL, &ctl);
...@@ -1094,8 +1092,7 @@ static void lan9303_port_disable(struct dsa_switch *ds, int port, ...@@ -1094,8 +1092,7 @@ static void lan9303_port_disable(struct dsa_switch *ds, int port,
struct lan9303 *chip = ds->priv; struct lan9303 *chip = ds->priv;
lan9303_disable_processing_port(chip, port); lan9303_disable_processing_port(chip, port);
lan9303_phy_write(ds, chip->phy_addr_sel_strap + port, lan9303_phy_write(ds, chip->phy_addr_base + port, MII_BMCR, BMCR_PDOWN);
MII_BMCR, BMCR_PDOWN);
} }
static int lan9303_port_bridge_join(struct dsa_switch *ds, int port, static int lan9303_port_bridge_join(struct dsa_switch *ds, int port,
...@@ -1283,13 +1280,16 @@ static const struct dsa_switch_ops lan9303_switch_ops = { ...@@ -1283,13 +1280,16 @@ static const struct dsa_switch_ops lan9303_switch_ops = {
static int lan9303_register_switch(struct lan9303 *chip) static int lan9303_register_switch(struct lan9303 *chip)
{ {
int base;
chip->ds = dsa_switch_alloc(chip->dev, LAN9303_NUM_PORTS); chip->ds = dsa_switch_alloc(chip->dev, LAN9303_NUM_PORTS);
if (!chip->ds) if (!chip->ds)
return -ENOMEM; return -ENOMEM;
chip->ds->priv = chip; chip->ds->priv = chip;
chip->ds->ops = &lan9303_switch_ops; chip->ds->ops = &lan9303_switch_ops;
chip->ds->phys_mii_mask = chip->phy_addr_sel_strap ? 0xe : 0x7; base = chip->phy_addr_base;
chip->ds->phys_mii_mask = GENMASK(LAN9303_NUM_PORTS - 1 + base, base);
return dsa_register_switch(chip->ds); return dsa_register_switch(chip->ds);
} }
......
...@@ -23,7 +23,7 @@ struct lan9303 { ...@@ -23,7 +23,7 @@ struct lan9303 {
struct regmap_irq_chip_data *irq_data; struct regmap_irq_chip_data *irq_data;
struct gpio_desc *reset_gpio; struct gpio_desc *reset_gpio;
u32 reset_duration; /* in [ms] */ u32 reset_duration; /* in [ms] */
bool phy_addr_sel_strap; int phy_addr_base;
struct dsa_switch *ds; struct dsa_switch *ds;
struct mutex indirect_mutex; /* protect indexed register access */ struct mutex indirect_mutex; /* protect indexed register access */
struct mutex alr_mutex; /* protect ALR access */ struct mutex alr_mutex; /* protect ALR access */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment