diff options
Diffstat (limited to 'drivers/pci/controller/dwc/pci-imx6.c')
| -rw-r--r-- | drivers/pci/controller/dwc/pci-imx6.c | 39 | 
1 files changed, 6 insertions, 33 deletions
diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c index 5cf1ef12fb9b..0cf1333c0440 100644 --- a/drivers/pci/controller/dwc/pci-imx6.c +++ b/drivers/pci/controller/dwc/pci-imx6.c @@ -745,9 +745,9 @@ static void imx6_pcie_ltssm_enable(struct device *dev)  	}  } -static int imx6_pcie_establish_link(struct imx6_pcie *imx6_pcie) +static int imx6_pcie_start_link(struct dw_pcie *pci)  { -	struct dw_pcie *pci = imx6_pcie->pci; +	struct imx6_pcie *imx6_pcie = to_imx6_pcie(pci);  	struct device *dev = pci->dev;  	u8 offset = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP);  	u32 tmp; @@ -834,9 +834,6 @@ static int imx6_pcie_host_init(struct pcie_port *pp)  	imx6_pcie_init_phy(imx6_pcie);  	imx6_pcie_deassert_core_reset(imx6_pcie);  	imx6_setup_phy_mpll(imx6_pcie); -	dw_pcie_setup_rc(pp); -	imx6_pcie_establish_link(imx6_pcie); -	dw_pcie_msi_init(pp);  	return 0;  } @@ -845,33 +842,8 @@ static const struct dw_pcie_host_ops imx6_pcie_host_ops = {  	.host_init = imx6_pcie_host_init,  }; -static int imx6_add_pcie_port(struct imx6_pcie *imx6_pcie, -			      struct platform_device *pdev) -{ -	struct dw_pcie *pci = imx6_pcie->pci; -	struct pcie_port *pp = &pci->pp; -	struct device *dev = &pdev->dev; -	int ret; - -	if (IS_ENABLED(CONFIG_PCI_MSI)) { -		pp->msi_irq = platform_get_irq_byname(pdev, "msi"); -		if (pp->msi_irq < 0) -			return pp->msi_irq; -	} - -	pp->ops = &imx6_pcie_host_ops; - -	ret = dw_pcie_host_init(pp); -	if (ret) { -		dev_err(dev, "failed to initialize host\n"); -		return ret; -	} - -	return 0; -} -  static const struct dw_pcie_ops dw_pcie_ops = { -	/* No special ops needed, but pcie-designware still expects this struct */ +	.start_link = imx6_pcie_start_link,  };  #ifdef CONFIG_PM_SLEEP @@ -980,7 +952,7 @@ static int imx6_pcie_resume_noirq(struct device *dev)  	imx6_pcie_deassert_core_reset(imx6_pcie);  	dw_pcie_setup_rc(pp); -	ret = imx6_pcie_establish_link(imx6_pcie); +	ret = imx6_pcie_start_link(imx6_pcie->pci);  	if (ret < 0)  		dev_info(dev, "pcie link is down after resume.\n"); @@ -1014,6 +986,7 @@ static int imx6_pcie_probe(struct platform_device *pdev)  	pci->dev = dev;  	pci->ops = &dw_pcie_ops; +	pci->pp.ops = &imx6_pcie_host_ops;  	imx6_pcie->pci = pci;  	imx6_pcie->drvdata = of_device_get_match_data(dev); @@ -1163,7 +1136,7 @@ static int imx6_pcie_probe(struct platform_device *pdev)  	if (ret)  		return ret; -	ret = imx6_add_pcie_port(imx6_pcie, pdev); +	ret = dw_pcie_host_init(&pci->pp);  	if (ret < 0)  		return ret;  |