net: dsa: microchip: remove KSZ9477 PHY errata handling
authorRobert Hancock <robert.hancock@calian.com>
Mon, 5 Jun 2023 15:39:43 +0000 (09:39 -0600)
committerJakub Kicinski <kuba@kernel.org>
Wed, 7 Jun 2023 04:08:37 +0000 (21:08 -0700)
The KSZ9477 PHY errata handling code has now been moved into the Micrel
PHY driver, so it is no longer needed inside the DSA switch driver.
Remove it.

Signed-off-by: Robert Hancock <robert.hancock@calian.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/dsa/microchip/ksz9477.c
drivers/net/dsa/microchip/ksz_common.c
drivers/net/dsa/microchip/ksz_common.h

index 3019f54049fcdecbef6af14437a945c1d2fa3aa2..fc5157a10af5ad5f0933515b35361d2e3070d598 100644 (file)
@@ -889,62 +889,6 @@ static phy_interface_t ksz9477_get_interface(struct ksz_device *dev, int port)
        return interface;
 }
 
-static void ksz9477_port_mmd_write(struct ksz_device *dev, int port,
-                                  u8 dev_addr, u16 reg_addr, u16 val)
-{
-       ksz_pwrite16(dev, port, REG_PORT_PHY_MMD_SETUP,
-                    MMD_SETUP(PORT_MMD_OP_INDEX, dev_addr));
-       ksz_pwrite16(dev, port, REG_PORT_PHY_MMD_INDEX_DATA, reg_addr);
-       ksz_pwrite16(dev, port, REG_PORT_PHY_MMD_SETUP,
-                    MMD_SETUP(PORT_MMD_OP_DATA_NO_INCR, dev_addr));
-       ksz_pwrite16(dev, port, REG_PORT_PHY_MMD_INDEX_DATA, val);
-}
-
-static void ksz9477_phy_errata_setup(struct ksz_device *dev, int port)
-{
-       /* Apply PHY settings to address errata listed in
-        * KSZ9477, KSZ9897, KSZ9896, KSZ9567, KSZ8565
-        * Silicon Errata and Data Sheet Clarification documents:
-        *
-        * Register settings are needed to improve PHY receive performance
-        */
-       ksz9477_port_mmd_write(dev, port, 0x01, 0x6f, 0xdd0b);
-       ksz9477_port_mmd_write(dev, port, 0x01, 0x8f, 0x6032);
-       ksz9477_port_mmd_write(dev, port, 0x01, 0x9d, 0x248c);
-       ksz9477_port_mmd_write(dev, port, 0x01, 0x75, 0x0060);
-       ksz9477_port_mmd_write(dev, port, 0x01, 0xd3, 0x7777);
-       ksz9477_port_mmd_write(dev, port, 0x1c, 0x06, 0x3008);
-       ksz9477_port_mmd_write(dev, port, 0x1c, 0x08, 0x2001);
-
-       /* Transmit waveform amplitude can be improved
-        * (1000BASE-T, 100BASE-TX, 10BASE-Te)
-        */
-       ksz9477_port_mmd_write(dev, port, 0x1c, 0x04, 0x00d0);
-
-       /* Energy Efficient Ethernet (EEE) feature select must
-        * be manually disabled (except on KSZ8565 which is 100Mbit)
-        */
-       if (dev->info->gbit_capable[port])
-               ksz9477_port_mmd_write(dev, port, 0x07, 0x3c, 0x0000);
-
-       /* Register settings are required to meet data sheet
-        * supply current specifications
-        */
-       ksz9477_port_mmd_write(dev, port, 0x1c, 0x13, 0x6eff);
-       ksz9477_port_mmd_write(dev, port, 0x1c, 0x14, 0xe6ff);
-       ksz9477_port_mmd_write(dev, port, 0x1c, 0x15, 0x6eff);
-       ksz9477_port_mmd_write(dev, port, 0x1c, 0x16, 0xe6ff);
-       ksz9477_port_mmd_write(dev, port, 0x1c, 0x17, 0x00ff);
-       ksz9477_port_mmd_write(dev, port, 0x1c, 0x18, 0x43ff);
-       ksz9477_port_mmd_write(dev, port, 0x1c, 0x19, 0xc3ff);
-       ksz9477_port_mmd_write(dev, port, 0x1c, 0x1a, 0x6fff);
-       ksz9477_port_mmd_write(dev, port, 0x1c, 0x1b, 0x07ff);
-       ksz9477_port_mmd_write(dev, port, 0x1c, 0x1c, 0x0fff);
-       ksz9477_port_mmd_write(dev, port, 0x1c, 0x1d, 0xe7ff);
-       ksz9477_port_mmd_write(dev, port, 0x1c, 0x1e, 0xefff);
-       ksz9477_port_mmd_write(dev, port, 0x1c, 0x20, 0xeeee);
-}
-
 void ksz9477_get_caps(struct ksz_device *dev, int port,
                      struct phylink_config *config)
 {
@@ -1029,20 +973,10 @@ void ksz9477_port_setup(struct ksz_device *dev, int port, bool cpu_port)
        /* enable 802.1p priority */
        ksz_port_cfg(dev, port, P_PRIO_CTRL, PORT_802_1P_PRIO_ENABLE, true);
 
-       if (dev->info->internal_phy[port]) {
-               /* do not force flow control */
-               ksz_port_cfg(dev, port, REG_PORT_CTRL_0,
-                            PORT_FORCE_TX_FLOW_CTRL | PORT_FORCE_RX_FLOW_CTRL,
-                            false);
-
-               if (dev->info->phy_errata_9477)
-                       ksz9477_phy_errata_setup(dev, port);
-       } else {
-               /* force flow control */
-               ksz_port_cfg(dev, port, REG_PORT_CTRL_0,
-                            PORT_FORCE_TX_FLOW_CTRL | PORT_FORCE_RX_FLOW_CTRL,
-                            true);
-       }
+       /* force flow control for non-PHY ports only */
+       ksz_port_cfg(dev, port, REG_PORT_CTRL_0,
+                    PORT_FORCE_TX_FLOW_CTRL | PORT_FORCE_RX_FLOW_CTRL,
+                    !dev->info->internal_phy[port]);
 
        if (cpu_port)
                member = dsa_user_ports(ds);
index 768f649d2f40170f2e060212dd7e46c3ad28870a..813b91a816bbee9c33bb0005b3de424bc04aec29 100644 (file)
@@ -1270,7 +1270,6 @@ const struct ksz_chip_data ksz_switch_chips[] = {
                .tc_cbs_supported = true,
                .tc_ets_supported = true,
                .ops = &ksz9477_dev_ops,
-               .phy_errata_9477 = true,
                .mib_names = ksz9477_mib_names,
                .mib_cnt = ARRAY_SIZE(ksz9477_mib_names),
                .reg_mib_cnt = MIB_COUNTER_NUM,
@@ -1303,7 +1302,6 @@ const struct ksz_chip_data ksz_switch_chips[] = {
                .port_nirqs = 2,
                .num_tx_queues = 4,
                .ops = &ksz9477_dev_ops,
-               .phy_errata_9477 = true,
                .mib_names = ksz9477_mib_names,
                .mib_cnt = ARRAY_SIZE(ksz9477_mib_names),
                .reg_mib_cnt = MIB_COUNTER_NUM,
@@ -1336,7 +1334,6 @@ const struct ksz_chip_data ksz_switch_chips[] = {
                .port_nirqs = 2,
                .num_tx_queues = 4,
                .ops = &ksz9477_dev_ops,
-               .phy_errata_9477 = true,
                .mib_names = ksz9477_mib_names,
                .mib_cnt = ARRAY_SIZE(ksz9477_mib_names),
                .reg_mib_cnt = MIB_COUNTER_NUM,
@@ -1423,7 +1420,6 @@ const struct ksz_chip_data ksz_switch_chips[] = {
                .tc_cbs_supported = true,
                .tc_ets_supported = true,
                .ops = &ksz9477_dev_ops,
-               .phy_errata_9477 = true,
                .mib_names = ksz9477_mib_names,
                .mib_cnt = ARRAY_SIZE(ksz9477_mib_names),
                .reg_mib_cnt = MIB_COUNTER_NUM,
index 5aa58aac3e0748839c54abca68f74c89d187bb82..a66b56857ec6aa4efe8b4a5659f84159598844dd 100644 (file)
@@ -60,7 +60,6 @@ struct ksz_chip_data {
        bool tc_cbs_supported;
        bool tc_ets_supported;
        const struct ksz_dev_ops *ops;
-       bool phy_errata_9477;
        bool ksz87xx_eee_link_erratum;
        const struct ksz_mib_names *mib_names;
        int mib_cnt;