[DSA_TAG_PROTO_NONE] = &none_ops,
 };
 
-int dsa_cpu_dsa_setup(struct dsa_switch *ds, struct device *dev,
-                     struct dsa_port *dport, int port)
+int dsa_cpu_dsa_setup(struct dsa_port *port)
 {
-       struct device_node *port_dn = dport->dn;
+       struct device_node *port_dn = port->dn;
+       struct dsa_switch *ds = port->ds;
        struct phy_device *phydev;
        int ret, mode;
 
        if (of_phy_is_fixed_link(port_dn)) {
                ret = of_phy_register_fixed_link(port_dn);
                if (ret) {
-                       dev_err(dev, "failed to register fixed PHY\n");
+                       dev_err(ds->dev, "failed to register fixed PHY\n");
                        return ret;
                }
                phydev = of_phy_find_device(port_dn);
                genphy_config_init(phydev);
                genphy_read_status(phydev);
                if (ds->ops->adjust_link)
-                       ds->ops->adjust_link(ds, port, phydev);
+                       ds->ops->adjust_link(ds, port->index, phydev);
 
                put_device(&phydev->mdio.dev);
        }
 
        struct dsa_switch *ds = port->ds;
        int err;
 
-       err = dsa_cpu_dsa_setup(ds, ds->dev, port, port->index);
+       err = dsa_cpu_dsa_setup(port);
        if (err) {
                dev_warn(ds->dev, "Failed to setup dsa port %d: %d\n",
                         port->index, err);
        struct dsa_switch *ds = port->ds;
        int err;
 
-       err = dsa_cpu_dsa_setup(ds, ds->dev, port, port->index);
+       err = dsa_cpu_dsa_setup(port);
        if (err) {
                dev_warn(ds->dev, "Failed to setup cpu port %d: %d\n",
                         port->index, err);
 
 };
 
 /* dsa.c */
-int dsa_cpu_dsa_setup(struct dsa_switch *ds, struct device *dev,
-                     struct dsa_port *dport, int port);
+int dsa_cpu_dsa_setup(struct dsa_port *port);
 void dsa_cpu_dsa_destroy(struct dsa_port *dport);
 const struct dsa_device_ops *dsa_resolve_tag_protocol(int tag_protocol);
 int dsa_cpu_port_ethtool_setup(struct dsa_port *cpu_dp);
 
 /* basic switch operations **************************************************/
 static int dsa_cpu_dsa_setups(struct dsa_switch *ds)
 {
-       struct dsa_port *dport;
        int ret, port;
 
        for (port = 0; port < ds->num_ports; port++) {
                if (!(dsa_is_cpu_port(ds, port) || dsa_is_dsa_port(ds, port)))
                        continue;
 
-               dport = &ds->ports[port];
-               ret = dsa_cpu_dsa_setup(ds, ds->dev, dport, port);
+               ret = dsa_cpu_dsa_setup(&ds->ports[port]);
                if (ret)
                        return ret;
        }