static int __init ls_add_pcie_port(struct ls_pcie *pcie,
                                   struct platform_device *pdev)
 {
-       struct device *dev = &pdev->dev;
        struct pcie_port *pp = &pcie->pp;
+       struct device *dev = pp->dev;
        int ret;
 
-       pp->dev = dev;
-       pp->ops = pcie->drvdata->ops;
-
        ret = dw_pcie_host_init(pp);
        if (ret) {
                dev_err(dev, "failed to initialize host\n");
        struct device *dev = &pdev->dev;
        const struct of_device_id *match;
        struct ls_pcie *pcie;
+       struct pcie_port *pp;
        struct resource *dbi_base;
        int ret;
 
        if (!pcie)
                return -ENOMEM;
 
+       pp = &pcie->pp;
+       pp->dev = dev;
+       pp->ops = pcie->drvdata->ops;
+
        dbi_base = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs");
        pcie->pp.dbi_base = devm_ioremap_resource(dev, dbi_base);
        if (IS_ERR(pcie->pp.dbi_base)) {