diff options
Diffstat (limited to 'drivers/pci/controller/dwc')
| -rw-r--r-- | drivers/pci/controller/dwc/pcie-designware-host.c | 13 | ||||
| -rw-r--r-- | drivers/pci/controller/dwc/pcie-designware.c | 20 | ||||
| -rw-r--r-- | drivers/pci/controller/dwc/pcie-designware.h | 1 | 
3 files changed, 11 insertions, 23 deletions
| diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c index cf61733bf78d..9952057c8819 100644 --- a/drivers/pci/controller/dwc/pcie-designware-host.c +++ b/drivers/pci/controller/dwc/pcie-designware-host.c @@ -485,20 +485,15 @@ int dw_pcie_host_init(struct dw_pcie_rp *pp)  	if (ret)  		goto err_remove_edma; -	if (dw_pcie_link_up(pci)) { -		dw_pcie_print_link_status(pci); -	} else { +	if (!dw_pcie_link_up(pci)) {  		ret = dw_pcie_start_link(pci);  		if (ret)  			goto err_remove_edma; - -		if (pci->ops && pci->ops->start_link) { -			ret = dw_pcie_wait_for_link(pci); -			if (ret) -				goto err_stop_link; -		}  	} +	/* Ignore errors, the link may come up later */ +	dw_pcie_wait_for_link(pci); +  	bridge->sysdata = pp;  	ret = pci_host_probe(bridge); diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/controller/dwc/pcie-designware.c index c87848cd8686..1f2ee71da4da 100644 --- a/drivers/pci/controller/dwc/pcie-designware.c +++ b/drivers/pci/controller/dwc/pcie-designware.c @@ -644,20 +644,9 @@ void dw_pcie_disable_atu(struct dw_pcie *pci, u32 dir, int index)  	dw_pcie_writel_atu(pci, dir, index, PCIE_ATU_REGION_CTRL2, 0);  } -void dw_pcie_print_link_status(struct dw_pcie *pci) -{ -	u32 offset, val; - -	offset = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP); -	val = dw_pcie_readw_dbi(pci, offset + PCI_EXP_LNKSTA); - -	dev_info(pci->dev, "PCIe Gen.%u x%u link up\n", -		 FIELD_GET(PCI_EXP_LNKSTA_CLS, val), -		 FIELD_GET(PCI_EXP_LNKSTA_NLW, val)); -} -  int dw_pcie_wait_for_link(struct dw_pcie *pci)  { +	u32 offset, val;  	int retries;  	/* Check if the link is up or not */ @@ -673,7 +662,12 @@ int dw_pcie_wait_for_link(struct dw_pcie *pci)  		return -ETIMEDOUT;  	} -	dw_pcie_print_link_status(pci); +	offset = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP); +	val = dw_pcie_readw_dbi(pci, offset + PCI_EXP_LNKSTA); + +	dev_info(pci->dev, "PCIe Gen.%u x%u link up\n", +		 FIELD_GET(PCI_EXP_LNKSTA_CLS, val), +		 FIELD_GET(PCI_EXP_LNKSTA_NLW, val));  	return 0;  } diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/controller/dwc/pcie-designware.h index 615660640801..79713ce075cc 100644 --- a/drivers/pci/controller/dwc/pcie-designware.h +++ b/drivers/pci/controller/dwc/pcie-designware.h @@ -429,7 +429,6 @@ void dw_pcie_setup(struct dw_pcie *pci);  void dw_pcie_iatu_detect(struct dw_pcie *pci);  int dw_pcie_edma_detect(struct dw_pcie *pci);  void dw_pcie_edma_remove(struct dw_pcie *pci); -void dw_pcie_print_link_status(struct dw_pcie *pci);  static inline void dw_pcie_writel_dbi(struct dw_pcie *pci, u32 reg, u32 val)  { | 
