The next patch will add basic interrupt support. Chip reset must be
performed before requesting the IRQ, so move this from ksz9477_setup()
to ksz9477_init().

Signed-off-by: Christian Eggers <cegg...@arri.de>
Reviewed-by: Vladimir Oltean <olte...@gmail.com>
---
 drivers/net/dsa/microchip/ksz9477_main.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/drivers/net/dsa/microchip/ksz9477_main.c 
b/drivers/net/dsa/microchip/ksz9477_main.c
index abfd3802bb51..c0b4cf66c904 100644
--- a/drivers/net/dsa/microchip/ksz9477_main.c
+++ b/drivers/net/dsa/microchip/ksz9477_main.c
@@ -1345,19 +1345,12 @@ static void ksz9477_config_cpu_port(struct dsa_switch 
*ds)
 static int ksz9477_setup(struct dsa_switch *ds)
 {
        struct ksz_device *dev = ds->priv;
-       int ret = 0;
 
        dev->vlan_cache = devm_kcalloc(dev->dev, sizeof(struct vlan_table),
                                       dev->num_vlans, GFP_KERNEL);
        if (!dev->vlan_cache)
                return -ENOMEM;
 
-       ret = ksz9477_reset_switch(dev);
-       if (ret) {
-               dev_err(ds->dev, "failed to reset switch\n");
-               return ret;
-       }
-
        /* Required for port partitioning. */
        ksz9477_cfg32(dev, REG_SW_QM_CTRL__4, UNICAST_VLAN_BOUNDARY,
                      true);
@@ -1537,10 +1530,16 @@ static const struct ksz_chip_data 
ksz9477_switch_chips[] = {
 
 static int ksz9477_switch_init(struct ksz_device *dev)
 {
-       int i;
+       int i, ret;
 
        dev->ds->ops = &ksz9477_switch_ops;
 
+       ret = ksz9477_reset_switch(dev);
+       if (ret) {
+               dev_err(dev->dev, "failed to reset switch\n");
+               return ret;
+       }
+
        for (i = 0; i < ARRAY_SIZE(ksz9477_switch_chips); i++) {
                const struct ksz_chip_data *chip = &ksz9477_switch_chips[i];
 
-- 
Christian Eggers
Embedded software developer

Arnold & Richter Cine Technik GmbH & Co. Betriebs KG
Sitz: Muenchen - Registergericht: Amtsgericht Muenchen - Handelsregisternummer: 
HRA 57918
Persoenlich haftender Gesellschafter: Arnold & Richter Cine Technik GmbH
Sitz: Muenchen - Registergericht: Amtsgericht Muenchen - Handelsregisternummer: 
HRB 54477
Geschaeftsfuehrer: Dr. Michael Neuhaeuser; Stephan Schenk; Walter Trauninger; 
Markus Zeiler

Reply via email to