Skip to content

Commit cdce670

Browse files
shimodaybjorn-helgaas
authored andcommitted
PCI: dwc: Fix PORT_LINK_CONTROL update when CDM check enabled
If CDM_CHECK is enabled (by the DT "snps,enable-cdm-check" property), 'val' is overwritten by PCIE_PL_CHK_REG_CONTROL_STATUS initialization. Commit ec7b952 ("PCI: dwc: Always enable CDM check if "snps,enable-cdm-check" exists") did not account for further usage of 'val', so we wrote improper values to PCIE_PORT_LINK_CONTROL when the CDM check is enabled. Move the PCIE_PORT_LINK_CONTROL update to be completely after the PCIE_PL_CHK_REG_CONTROL_STATUS register initialization. [bhelgaas: commit log adapted from Serge's version] Fixes: ec7b952 ("PCI: dwc: Always enable CDM check if "snps,enable-cdm-check" exists") Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Yoshihiro Shimoda <[email protected]> Signed-off-by: Bjorn Helgaas <[email protected]> Reviewed-by: Serge Semin <[email protected]>
1 parent fe15c26 commit cdce670

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

drivers/pci/controller/dwc/pcie-designware.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1001,18 +1001,18 @@ void dw_pcie_setup(struct dw_pcie *pci)
10011001
dw_pcie_writel_dbi(pci, PCIE_LINK_WIDTH_SPEED_CONTROL, val);
10021002
}
10031003

1004-
val = dw_pcie_readl_dbi(pci, PCIE_PORT_LINK_CONTROL);
1005-
val &= ~PORT_LINK_FAST_LINK_MODE;
1006-
val |= PORT_LINK_DLL_LINK_EN;
1007-
dw_pcie_writel_dbi(pci, PCIE_PORT_LINK_CONTROL, val);
1008-
10091004
if (dw_pcie_cap_is(pci, CDM_CHECK)) {
10101005
val = dw_pcie_readl_dbi(pci, PCIE_PL_CHK_REG_CONTROL_STATUS);
10111006
val |= PCIE_PL_CHK_REG_CHK_REG_CONTINUOUS |
10121007
PCIE_PL_CHK_REG_CHK_REG_START;
10131008
dw_pcie_writel_dbi(pci, PCIE_PL_CHK_REG_CONTROL_STATUS, val);
10141009
}
10151010

1011+
val = dw_pcie_readl_dbi(pci, PCIE_PORT_LINK_CONTROL);
1012+
val &= ~PORT_LINK_FAST_LINK_MODE;
1013+
val |= PORT_LINK_DLL_LINK_EN;
1014+
dw_pcie_writel_dbi(pci, PCIE_PORT_LINK_CONTROL, val);
1015+
10161016
if (!pci->num_lanes) {
10171017
dev_dbg(pci->dev, "Using h/w default number of lanes\n");
10181018
return;

0 commit comments

Comments
 (0)