| From 9be63ab64057d7450d9201429a34add28104a0f9 Mon Sep 17 00:00:00 2001 |
| From: Phil Edworthy <phil.edworthy@renesas.com> |
| Date: Mon, 30 Jun 2014 08:54:22 +0100 |
| Subject: PCI: rcar: Use correct initial HW settings |
| |
| Although the R-Car PCIe driver works as it is, there are a number of |
| incorrect settings that this patch corrects. It corrects: |
| - enabling the PCI Express Extended Cap ID. |
| - setting Data Link Layer Link Active Reporting Capable. |
| - terminating list of capabilities. |
| |
| It also removes enabling the MAC data scrambling as this is the default HW |
| setting, and removes incorrect code to enable slave bus mastering as this |
| is done by the PCI core. |
| |
| Signed-off-by: Phil Edworthy <phil.edworthy@renesas.com> |
| Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> |
| Acked-by: Simon Horman <horms+renesas@verge.net.au> |
| (cherry picked from commit 2c3fd4c935880d756cb57f4bcdb35bb4b8348ec8) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| drivers/pci/host/pcie-rcar.c | 15 ++++----------- |
| 1 file changed, 4 insertions(+), 11 deletions(-) |
| |
| diff --git a/drivers/pci/host/pcie-rcar.c b/drivers/pci/host/pcie-rcar.c |
| index c06b88846764..680a8ccdcc24 100644 |
| --- a/drivers/pci/host/pcie-rcar.c |
| +++ b/drivers/pci/host/pcie-rcar.c |
| @@ -483,14 +483,15 @@ static int rcar_pcie_hw_init(struct rcar_pcie *pcie) |
| rcar_rmw32(pcie, RCONF(PCI_SUBORDINATE_BUS), 0xff, 1); |
| |
| /* Initialize default capabilities. */ |
| - rcar_rmw32(pcie, REXPCAP(0), 0, PCI_CAP_ID_EXP); |
| + rcar_rmw32(pcie, REXPCAP(0), 0xff, PCI_CAP_ID_EXP); |
| rcar_rmw32(pcie, REXPCAP(PCI_EXP_FLAGS), |
| PCI_EXP_FLAGS_TYPE, PCI_EXP_TYPE_ROOT_PORT << 4); |
| rcar_rmw32(pcie, RCONF(PCI_HEADER_TYPE), 0x7f, |
| PCI_HEADER_TYPE_BRIDGE); |
| |
| /* Enable data link layer active state reporting */ |
| - rcar_rmw32(pcie, REXPCAP(PCI_EXP_LNKCAP), 0, PCI_EXP_LNKCAP_DLLLARC); |
| + rcar_rmw32(pcie, REXPCAP(PCI_EXP_LNKCAP), PCI_EXP_LNKCAP_DLLLARC, |
| + PCI_EXP_LNKCAP_DLLLARC); |
| |
| /* Write out the physical slot number = 0 */ |
| rcar_rmw32(pcie, REXPCAP(PCI_EXP_SLTCAP), PCI_EXP_SLTCAP_PSN, 0); |
| @@ -499,10 +500,7 @@ static int rcar_pcie_hw_init(struct rcar_pcie *pcie) |
| rcar_rmw32(pcie, TLCTLR+1, 0x3f, 50); |
| |
| /* Terminate list of capabilities (Next Capability Offset=0) */ |
| - rcar_rmw32(pcie, RVCCAP(0), 0xfff0, 0); |
| - |
| - /* Enable MAC data scrambling. */ |
| - rcar_rmw32(pcie, MACCTLR, SCRAMBLE_DISABLE, 0); |
| + rcar_rmw32(pcie, RVCCAP(0), 0xfff00000, 0); |
| |
| /* Enable MSI */ |
| if (IS_ENABLED(CONFIG_PCI_MSI)) |
| @@ -519,11 +517,6 @@ static int rcar_pcie_hw_init(struct rcar_pcie *pcie) |
| /* Enable INTx interrupts */ |
| rcar_rmw32(pcie, PCIEINTXR, 0, 0xF << 8); |
| |
| - /* Enable slave Bus Mastering */ |
| - rcar_rmw32(pcie, RCONF(PCI_STATUS), PCI_STATUS_DEVSEL_MASK, |
| - PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER | |
| - PCI_STATUS_CAP_LIST | PCI_STATUS_DEVSEL_FAST); |
| - |
| wmb(); |
| |
| return 0; |
| -- |
| 2.1.2 |
| |