From 24d13e9751ba1ba59a8e7e741c87f027640811e9 Mon Sep 17 00:00:00 2001 From: Tony Truong Date: Thu, 23 Jul 2020 11:30:29 -0700 Subject: [PATCH 1/4] ARM: qcom: enable PCI for sdxlemur Enable PCI by selecting HAVE_PCI and PCI for sdxlemur. Change-Id: I3b10df842e774e1347c9edde54d6719dfe5897cb Signed-off-by: Tony Truong --- arch/arm/mach-qcom/Kconfig | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm/mach-qcom/Kconfig b/arch/arm/mach-qcom/Kconfig index 710c1a062fbe..0caf2b97d70d 100644 --- a/arch/arm/mach-qcom/Kconfig +++ b/arch/arm/mach-qcom/Kconfig @@ -49,7 +49,9 @@ config ARCH_SDXLEMUR select CPU_V7 select ARM_GIC select HAVE_ARM_ARCH_TIMER + select HAVE_PCI select MSM_CORTEX_A7 + select PCI select PINCTRL select QCOM_SCM if SMP select MSM_JTAG_MM if CORESIGHT_ETM From 01363fc77ec16895a2c7816f1f4529989bfe8ab8 Mon Sep 17 00:00:00 2001 From: Tony Truong Date: Thu, 23 Jul 2020 11:37:48 -0700 Subject: [PATCH 2/4] msm: pcie: check return value when enabling PCIe GDSC When enabling GDSC, it is required to check the return value of the API. Add a proper check and print for the return value. Change-Id: I4d5a1a660bed6a7f6d72a5d728c36fc54fec7c68 Signed-off-by: Tony Truong --- drivers/pci/controller/pci-msm.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/pci-msm.c b/drivers/pci/controller/pci-msm.c index 0816e343af89..4e4c905722bd 100644 --- a/drivers/pci/controller/pci-msm.c +++ b/drivers/pci/controller/pci-msm.c @@ -6640,7 +6640,11 @@ static int msm_pcie_drv_resume(struct msm_pcie_dev_t *pcie_dev) msm_pcie_vreg_init(pcie_dev); - regulator_enable(pcie_dev->gdsc); + ret = regulator_enable(pcie_dev->gdsc); + if (ret) + PCIE_ERR(pcie_dev, + "PCIe: RC%d: failed to enable GDSC: ret %d\n", + pcie_dev->rc_idx, ret); if (pcie_dev->icc_path) { ret = icc_set_bw(pcie_dev->icc_path, ICC_AVG_BW, ICC_PEAK_BW); From 1ea7b1815a5efb1e8d50c824777424b9c43e3bad Mon Sep 17 00:00:00 2001 From: Tony Truong Date: Thu, 31 Jan 2019 16:00:12 -0800 Subject: [PATCH 3/4] msm: pcie: remove legacy arm32 IRQ support Specific arm32 support for PCIe INTX interrupts is now legacy and no longer exists. Therefore remove all arm32 IRQ support from PCIe driver. Change-Id: I92df6084184d2d4310a6903dda12e3b27e840a79 Signed-off-by: Tony Truong --- drivers/pci/controller/pci-msm.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/drivers/pci/controller/pci-msm.c b/drivers/pci/controller/pci-msm.c index 4e4c905722bd..f7d8828c8071 100644 --- a/drivers/pci/controller/pci-msm.c +++ b/drivers/pci/controller/pci-msm.c @@ -958,17 +958,6 @@ static void msm_pcie_check_l1ss_support_all(struct msm_pcie_dev_t *dev); static void msm_pcie_config_link_pm(struct msm_pcie_dev_t *dev, bool enable); -#ifdef CONFIG_ARM -static void msm_pcie_fixup_irqs(struct msm_pcie_dev_t *dev) -{ - pci_fixup_irqs(pci_common_swizzle, of_irq_parse_and_map_pci); -} -#else -static void msm_pcie_fixup_irqs(struct msm_pcie_dev_t *dev) -{ -} -#endif - static void msm_pcie_write_reg(void __iomem *base, u32 offset, u32 value) { writel_relaxed(value, base + offset); @@ -4257,7 +4246,6 @@ int msm_pcie_enumerate(u32 rc_idx) bus = bridge->bus; - msm_pcie_fixup_irqs(dev); pci_assign_unassigned_bus_resources(bus); pci_bus_add_devices(bus); From e2ad3554985c73c75846348d4e9e18b2292b4180 Mon Sep 17 00:00:00 2001 From: Tony Truong Date: Thu, 23 Jul 2020 11:35:30 -0700 Subject: [PATCH 4/4] defconfig: sdxlemur: enable QCOM PCIe drivers Enable PCIe root complex driver to establish communication between sdxlemur and external peripherals through PCIe ports and interfaces. Enable PCIe MSI driver to provide PCIe clients MSI/MSI-X support. With MSI/MSI-X, external peripherals connected to PCIe can interrupt sdxlemur. Change-Id: Ic2aa16206daf7076dd02a0f07477560a6a368828 Signed-off-by: Tony Truong --- arch/arm/configs/vendor/sdxlemur.config | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm/configs/vendor/sdxlemur.config b/arch/arm/configs/vendor/sdxlemur.config index 29377c23df5a..6d5635987395 100644 --- a/arch/arm/configs/vendor/sdxlemur.config +++ b/arch/arm/configs/vendor/sdxlemur.config @@ -62,3 +62,4 @@ CONFIG_QTI_RPM_STATS_LOG=y CONFIG_QTI_DDR_STATS_LOG=y CONFIG_QCOM_SOC_SLEEP_STATS=y CONFIG_QCOM_PDC=y +CONFIG_PCI_MSM=y