0134-PCI-qcom-Fixing-broken-pcie-enumeration-for-2_3_3-co.patch 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. From f92c2f22197b7beed59b81f2aa179e16987c02e4 Mon Sep 17 00:00:00 2001
  2. From: Sricharan Ramabadhran <[email protected]>
  3. Date: Mon, 24 Jul 2023 12:04:29 +0530
  4. Subject: [PATCH] PCI: qcom: Fixing broken pcie enumeration for 2_3_3 configs
  5. ops
  6. PARF_SLV_ADDR_SPACE_SIZE_2_3_3 macro is used for IPQ8074 2_3_3 post_init.
  7. PCIe slave addr register offset is 0x358, but was wrongly changed to
  8. 0x168 as a part of commit 39171b33f652 ("PCI: qcom: Remove PCIE20_ prefix
  9. from register definitions"). Fixing it, by using the right macro and remove
  10. the unused PARF_SLV_ADDR_SPACE_SIZE_2_3_3.
  11. Without this access to the registers of slave addr space like iATU etc
  12. are broken leading to pcie enumeration failure.
  13. Fixes: 39171b33f652 ("PCI: qcom: Remove PCIE20_ prefix from register definitions")
  14. Cc: <[email protected]>
  15. Reviewed-by: Manivannan Sadhasivam <[email protected]>
  16. Reviewed-by: Konrad Dybcio <[email protected]>
  17. Signed-off-by: Sricharan Ramabadhran <[email protected]>
  18. ---
  19. drivers/pci/controller/dwc/pcie-qcom.c | 4 +---
  20. 1 file changed, 1 insertion(+), 3 deletions(-)
  21. --- a/drivers/pci/controller/dwc/pcie-qcom.c
  22. +++ b/drivers/pci/controller/dwc/pcie-qcom.c
  23. @@ -40,7 +40,6 @@
  24. #define PARF_PHY_REFCLK 0x4c
  25. #define PARF_CONFIG_BITS 0x50
  26. #define PARF_DBI_BASE_ADDR 0x168
  27. -#define PARF_SLV_ADDR_SPACE_SIZE_2_3_3 0x16c /* Register offset specific to IP ver 2.3.3 */
  28. #define PARF_MHI_CLOCK_RESET_CTRL 0x174
  29. #define PARF_AXI_MSTR_WR_ADDR_HALT 0x178
  30. #define PARF_AXI_MSTR_WR_ADDR_HALT_V2 0x1a8
  31. @@ -1148,8 +1147,7 @@ static int qcom_pcie_post_init_2_3_3(str
  32. u16 offset = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP);
  33. u32 val;
  34. - writel(SLV_ADDR_SPACE_SZ,
  35. - pcie->parf + PARF_SLV_ADDR_SPACE_SIZE_2_3_3);
  36. + writel(SLV_ADDR_SPACE_SZ, pcie->parf + PARF_SLV_ADDR_SPACE_SIZE);
  37. val = readl(pcie->parf + PARF_PHY_CTRL);
  38. val &= ~BIT(0);