pr_info("found switch: %s, rev %i\n", dev->name, dev->core_rev);
 
-       return dsa_register_switch(dev->ds, dev->ds->dev);
+       return dsa_register_switch(dev->ds);
 }
 EXPORT_SYMBOL(b53_switch_register);
 
 
 
        dev_set_drvdata(&mdiodev->dev, ds);
 
-       return dsa_register_switch(ds, ds->dev);
+       return dsa_register_switch(ds);
 }
 
 static void dsa_loop_drv_remove(struct mdio_device *mdiodev)
 
        chip->ds->ops = &lan9303_switch_ops;
        chip->ds->phys_mii_mask = chip->phy_addr_sel_strap ? 0xe : 0x7;
 
-       return dsa_register_switch(chip->ds, chip->dev);
+       return dsa_register_switch(chip->ds);
 }
 
 static void lan9303_probe_reset_gpio(struct lan9303 *chip,
 
        mutex_init(&priv->reg_mutex);
        dev_set_drvdata(&mdiodev->dev, priv);
 
-       return dsa_register_switch(priv->ds, &mdiodev->dev);
+       return dsa_register_switch(priv->ds);
 }
 
 static void
 
 
        dev_set_drvdata(dev, ds);
 
-       return dsa_register_switch(ds, dev);
+       return dsa_register_switch(ds);
 }
 
 static void mv88e6xxx_unregister_switch(struct mv88e6xxx_chip *chip)
 
        mutex_init(&priv->reg_mutex);
        dev_set_drvdata(&mdiodev->dev, priv);
 
-       return dsa_register_switch(priv->ds, &mdiodev->dev);
+       return dsa_register_switch(priv->ds);
 }
 
 static void
 
 
 struct dsa_switch *dsa_switch_alloc(struct device *dev, size_t n);
 void dsa_unregister_switch(struct dsa_switch *ds);
-int dsa_register_switch(struct dsa_switch *ds, struct device *dev);
+int dsa_register_switch(struct dsa_switch *ds);
 #ifdef CONFIG_PM_SLEEP
 int dsa_switch_suspend(struct dsa_switch *ds);
 int dsa_switch_resume(struct dsa_switch *ds);
 
        return ports;
 }
 
-static int _dsa_register_switch(struct dsa_switch *ds, struct device *dev)
+static int _dsa_register_switch(struct dsa_switch *ds)
 {
-       struct dsa_chip_data *pdata = dev->platform_data;
-       struct device_node *np = dev->of_node;
+       struct dsa_chip_data *pdata = ds->dev->platform_data;
+       struct device_node *np = ds->dev->of_node;
        struct dsa_switch_tree *dst;
        struct device_node *ports;
        u32 tree, index;
 }
 EXPORT_SYMBOL_GPL(dsa_switch_alloc);
 
-int dsa_register_switch(struct dsa_switch *ds, struct device *dev)
+int dsa_register_switch(struct dsa_switch *ds)
 {
        int err;
 
        mutex_lock(&dsa2_mutex);
-       err = _dsa_register_switch(ds, dev);
+       err = _dsa_register_switch(ds);
        mutex_unlock(&dsa2_mutex);
 
        return err;