diff options
Diffstat (limited to 'drivers/pci/controller/pci-aardvark.c')
| -rw-r--r-- | drivers/pci/controller/pci-aardvark.c | 9 | 
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c index 0be485a25327..f742da2a20ee 100644 --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c @@ -259,7 +259,14 @@ static void advk_pcie_issue_perst(struct advk_pcie *pcie)  	if (!pcie->reset_gpio)  		return; -	/* PERST does not work for some cards when link training is enabled */ +	/* +	 * As required by PCI Express spec (PCI Express Base Specification, REV. +	 * 4.0 PCI Express, February 19 2014, 6.6.1 Conventional Reset) a delay +	 * for at least 100ms after de-asserting PERST# signal is needed before +	 * link training is enabled. So ensure that link training is disabled +	 * prior de-asserting PERST# signal to fulfill that PCI Express spec +	 * requirement. +	 */  	reg = advk_readl(pcie, PCIE_CORE_CTRL0_REG);  	reg &= ~LINK_TRAINING_EN;  	advk_writel(pcie, reg, PCIE_CORE_CTRL0_REG);  | 
