struct mii_bus                  *imdio;
        struct phylink_pcs              **pcs;
        resource_size_t                 switch_base;
-       resource_size_t                 imdio_base;
        enum dsa_tag_protocol           tag_proto;
        const struct felix_tag_proto_ops *tag_proto_ops;
        struct kthread_worker           *xmit_worker;
 
 
 static int vsc9959_mdio_bus_alloc(struct ocelot *ocelot)
 {
+       struct pci_dev *pdev = to_pci_dev(ocelot->dev);
        struct felix *felix = ocelot_to_felix(ocelot);
        struct enetc_mdio_priv *mdio_priv;
        struct device *dev = ocelot->dev;
+       resource_size_t imdio_base;
        void __iomem *imdio_regs;
        struct resource res;
        struct enetc_hw *hw;
                return -ENOMEM;
        }
 
+       imdio_base = pci_resource_start(pdev, VSC9959_IMDIO_PCI_BAR);
+
        memcpy(&res, &vsc9959_imdio_res, sizeof(res));
        res.flags = IORESOURCE_MEM;
-       res.start += felix->imdio_base;
-       res.end += felix->imdio_base;
+       res.start += imdio_base;
+       res.end += imdio_base;
 
        imdio_regs = devm_ioremap_resource(dev, &res);
        if (IS_ERR(imdio_regs))
        ocelot->num_flooding_pgids = OCELOT_NUM_TC;
        felix->info = &felix_info_vsc9959;
        felix->switch_base = pci_resource_start(pdev, VSC9959_SWITCH_PCI_BAR);
-       felix->imdio_base = pci_resource_start(pdev, VSC9959_IMDIO_PCI_BAR);
 
        pci_set_master(pdev);