summaryrefslogtreecommitdiffstats
path: root/drivers/net/dsa/mv88e6xxx/global1.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/dsa/mv88e6xxx/global1.c')
-rw-r--r--drivers/net/dsa/mv88e6xxx/global1.c89
1 files changed, 0 insertions, 89 deletions
diff --git a/drivers/net/dsa/mv88e6xxx/global1.c b/drivers/net/dsa/mv88e6xxx/global1.c
index 9820cd596..49444a72f 100644
--- a/drivers/net/dsa/mv88e6xxx/global1.c
+++ b/drivers/net/dsa/mv88e6xxx/global1.c
@@ -75,95 +75,6 @@ static int mv88e6xxx_g1_wait_init_ready(struct mv88e6xxx_chip *chip)
return mv88e6xxx_g1_wait_bit(chip, MV88E6XXX_G1_STS, bit, 1);
}
-static int mv88e6250_g1_eeprom_reload(struct mv88e6xxx_chip *chip)
-{
- /* MV88E6185_G1_CTL1_RELOAD_EEPROM is also valid for 88E6250 */
- int bit = __bf_shf(MV88E6185_G1_CTL1_RELOAD_EEPROM);
- u16 val;
- int err;
-
- err = mv88e6xxx_g1_read(chip, MV88E6XXX_G1_CTL1, &val);
- if (err)
- return err;
-
- val |= MV88E6185_G1_CTL1_RELOAD_EEPROM;
-
- err = mv88e6xxx_g1_write(chip, MV88E6XXX_G1_CTL1, val);
- if (err)
- return err;
-
- return mv88e6xxx_g1_wait_bit(chip, MV88E6XXX_G1_CTL1, bit, 0);
-}
-
-/* Returns 0 when done, -EBUSY when waiting, other negative codes on error */
-static int mv88e6xxx_g1_is_eeprom_done(struct mv88e6xxx_chip *chip)
-{
- u16 val;
- int err;
-
- err = mv88e6xxx_g1_read(chip, MV88E6XXX_G1_STS, &val);
- if (err < 0) {
- dev_err(chip->dev, "Error reading status");
- return err;
- }
-
- /* If the switch is still resetting, it may not
- * respond on the bus, and so MDIO read returns
- * 0xffff. Differentiate between that, and waiting for
- * the EEPROM to be done by bit 0 being set.
- */
- if (val == 0xffff || !(val & BIT(MV88E6XXX_G1_STS_IRQ_EEPROM_DONE)))
- return -EBUSY;
-
- return 0;
-}
-
-/* As the EEInt (EEPROM done) flag clears on read if the status register, this
- * function must be called directly after a hard reset or EEPROM ReLoad request,
- * or the done condition may have been missed
- */
-int mv88e6xxx_g1_wait_eeprom_done(struct mv88e6xxx_chip *chip)
-{
- const unsigned long timeout = jiffies + 1 * HZ;
- int ret;
-
- /* Wait up to 1 second for the switch to finish reading the
- * EEPROM.
- */
- while (time_before(jiffies, timeout)) {
- ret = mv88e6xxx_g1_is_eeprom_done(chip);
- if (ret != -EBUSY)
- return ret;
- }
-
- dev_err(chip->dev, "Timeout waiting for EEPROM done");
- return -ETIMEDOUT;
-}
-
-int mv88e6250_g1_wait_eeprom_done_prereset(struct mv88e6xxx_chip *chip)
-{
- int ret;
-
- ret = mv88e6xxx_g1_is_eeprom_done(chip);
- if (ret != -EBUSY)
- return ret;
-
- /* Pre-reset, we don't know the state of the switch - when
- * mv88e6xxx_g1_is_eeprom_done() returns -EBUSY, that may be because
- * the switch is actually busy reading the EEPROM, or because
- * MV88E6XXX_G1_STS_IRQ_EEPROM_DONE has been cleared by an unrelated
- * status register read already.
- *
- * To account for the latter case, trigger another EEPROM reload for
- * another chance at seeing the done flag.
- */
- ret = mv88e6250_g1_eeprom_reload(chip);
- if (ret)
- return ret;
-
- return mv88e6xxx_g1_wait_eeprom_done(chip);
-}
-
/* Offset 0x01: Switch MAC Address Register Bytes 0 & 1
* Offset 0x02: Switch MAC Address Register Bytes 2 & 3
* Offset 0x03: Switch MAC Address Register Bytes 4 & 5