* [PATCH v2 1/3] PCI: qcom: Enable cache coherency for SA8775P RC
2023-11-11 3:54 [PATCH v2 0/3] arm64: qcom: sa8775p: add cache coherency support for SA8775P Mrinmay Sarkar
@ 2023-11-11 3:54 ` Mrinmay Sarkar
2023-11-11 3:54 ` [PATCH v2 2/3] PCI: qcom-ep: Enable cache coherency for SA8775P EP Mrinmay Sarkar
2023-11-11 3:54 ` [PATCH v2 3/3] arm64: dts: qcom: sa8775p: Mark PCIe controller as cache coherent Mrinmay Sarkar
2 siblings, 0 replies; 4+ messages in thread
From: Mrinmay Sarkar @ 2023-11-11 3:54 UTC (permalink / raw)
To: agross, andersson, krzysztof.kozlowski+dt, conor+dt,
konrad.dybcio, mani, robh+dt
Cc: quic_shazhuss, quic_nitegupt, quic_ramkri, quic_nayiluri,
dmitry.baryshkov, robh, quic_krichai, quic_vbadigan, quic_parass,
quic_schintav, quic_shijjose, Mrinmay Sarkar, Lorenzo Pieralisi,
Krzysztof Wilczyński, Bjorn Helgaas, linux-arm-msm,
devicetree, linux-kernel, linux-pci
This change will enable cache snooping logic to support
cache coherency for 8755 RC platform.
Signed-off-by: Mrinmay Sarkar <quic_msarkar@quicinc.com>
---
drivers/pci/controller/dwc/pcie-qcom.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c
index 6902e97..b82ccd1 100644
--- a/drivers/pci/controller/dwc/pcie-qcom.c
+++ b/drivers/pci/controller/dwc/pcie-qcom.c
@@ -51,6 +51,7 @@
#define PARF_SID_OFFSET 0x234
#define PARF_BDF_TRANSLATE_CFG 0x24c
#define PARF_SLV_ADDR_SPACE_SIZE 0x358
+#define PCIE_PARF_NO_SNOOP_OVERIDE 0x3d4
#define PARF_DEVICE_TYPE 0x1000
#define PARF_BDF_TO_SID_TABLE_N 0x2000
@@ -117,6 +118,10 @@
/* PARF_LTSSM register fields */
#define LTSSM_EN BIT(8)
+/* PARF_NO_SNOOP_OVERIDE register fields */
+#define WR_NO_SNOOP_OVERIDE_EN BIT(1)
+#define RD_NO_SNOOP_OVERIDE_EN BIT(3)
+
/* PARF_DEVICE_TYPE register fields */
#define DEVICE_TYPE_RC 0x4
@@ -961,6 +966,14 @@ static int qcom_pcie_init_2_7_0(struct qcom_pcie *pcie)
static int qcom_pcie_post_init_2_7_0(struct qcom_pcie *pcie)
{
+ struct dw_pcie *pci = pcie->pci;
+ struct device *dev = pci->dev;
+
+ /* Enable cache snooping for SA8775P */
+ if (of_device_is_compatible(dev->of_node, "qcom,pcie-sa8775p"))
+ writel(WR_NO_SNOOP_OVERIDE_EN | RD_NO_SNOOP_OVERIDE_EN,
+ pcie->parf + PCIE_PARF_NO_SNOOP_OVERIDE);
+
qcom_pcie_clear_hpc(pcie->pci);
return 0;
--
2.7.4
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH v2 2/3] PCI: qcom-ep: Enable cache coherency for SA8775P EP
2023-11-11 3:54 [PATCH v2 0/3] arm64: qcom: sa8775p: add cache coherency support for SA8775P Mrinmay Sarkar
2023-11-11 3:54 ` [PATCH v2 1/3] PCI: qcom: Enable cache coherency for SA8775P RC Mrinmay Sarkar
@ 2023-11-11 3:54 ` Mrinmay Sarkar
2023-11-11 3:54 ` [PATCH v2 3/3] arm64: dts: qcom: sa8775p: Mark PCIe controller as cache coherent Mrinmay Sarkar
2 siblings, 0 replies; 4+ messages in thread
From: Mrinmay Sarkar @ 2023-11-11 3:54 UTC (permalink / raw)
To: agross, andersson, krzysztof.kozlowski+dt, conor+dt,
konrad.dybcio, mani, robh+dt
Cc: quic_shazhuss, quic_nitegupt, quic_ramkri, quic_nayiluri,
dmitry.baryshkov, robh, quic_krichai, quic_vbadigan, quic_parass,
quic_schintav, quic_shijjose, Mrinmay Sarkar, Lorenzo Pieralisi,
Krzysztof Wilczyński, Bjorn Helgaas, linux-arm-msm,
devicetree, linux-kernel, linux-pci
This change will enable cache snooping logic to support
cache coherency for 8755 EP platform.
Signed-off-by: Mrinmay Sarkar <quic_msarkar@quicinc.com>
---
drivers/pci/controller/dwc/pcie-qcom-ep.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/pci/controller/dwc/pcie-qcom-ep.c b/drivers/pci/controller/dwc/pcie-qcom-ep.c
index 3a53d97..ee99fb1 100644
--- a/drivers/pci/controller/dwc/pcie-qcom-ep.c
+++ b/drivers/pci/controller/dwc/pcie-qcom-ep.c
@@ -47,6 +47,7 @@
#define PARF_DBI_BASE_ADDR_HI 0x354
#define PARF_SLV_ADDR_SPACE_SIZE 0x358
#define PARF_SLV_ADDR_SPACE_SIZE_HI 0x35c
+#define PCIE_PARF_NO_SNOOP_OVERIDE 0x3d4
#define PARF_ATU_BASE_ADDR 0x634
#define PARF_ATU_BASE_ADDR_HI 0x638
#define PARF_SRIS_MODE 0x644
@@ -86,6 +87,10 @@
#define PARF_DEBUG_INT_CFG_BUS_MASTER_EN BIT(2)
#define PARF_DEBUG_INT_RADM_PM_TURNOFF BIT(3)
+/* PARF_NO_SNOOP_OVERIDE register fields */
+#define WR_NO_SNOOP_OVERIDE_EN BIT(1)
+#define RD_NO_SNOOP_OVERIDE_EN BIT(3)
+
/* PARF_DEVICE_TYPE register fields */
#define PARF_DEVICE_TYPE_EP 0x0
@@ -489,6 +494,11 @@ static int qcom_pcie_perst_deassert(struct dw_pcie *pci)
val |= BIT(8);
writel_relaxed(val, pcie_ep->parf + PARF_LTSSM);
+ /* Enable cache snooping for SA8775P */
+ if (of_device_is_compatible(dev->of_node, "qcom,sa8775p-pcie-ep"))
+ writel_relaxed(WR_NO_SNOOP_OVERIDE_EN | RD_NO_SNOOP_OVERIDE_EN,
+ pcie_ep->parf + PCIE_PARF_NO_SNOOP_OVERIDE);
+
return 0;
err_disable_resources:
--
2.7.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v2 3/3] arm64: dts: qcom: sa8775p: Mark PCIe controller as cache coherent
2023-11-11 3:54 [PATCH v2 0/3] arm64: qcom: sa8775p: add cache coherency support for SA8775P Mrinmay Sarkar
2023-11-11 3:54 ` [PATCH v2 1/3] PCI: qcom: Enable cache coherency for SA8775P RC Mrinmay Sarkar
2023-11-11 3:54 ` [PATCH v2 2/3] PCI: qcom-ep: Enable cache coherency for SA8775P EP Mrinmay Sarkar
@ 2023-11-11 3:54 ` Mrinmay Sarkar
2 siblings, 0 replies; 4+ messages in thread
From: Mrinmay Sarkar @ 2023-11-11 3:54 UTC (permalink / raw)
To: agross, andersson, krzysztof.kozlowski+dt, conor+dt,
konrad.dybcio, mani, robh+dt
Cc: quic_shazhuss, quic_nitegupt, quic_ramkri, quic_nayiluri,
dmitry.baryshkov, robh, quic_krichai, quic_vbadigan, quic_parass,
quic_schintav, quic_shijjose, Mrinmay Sarkar, Lorenzo Pieralisi,
Krzysztof Wilczyński, Bjorn Helgaas, linux-arm-msm,
devicetree, linux-kernel, linux-pci
The PCIe controller on SA8775P supports cache coherency, hence add the
"dma-coherent" property to mark it as such.
Signed-off-by: Mrinmay Sarkar <quic_msarkar@quicinc.com>
---
arch/arm64/boot/dts/qcom/sa8775p.dtsi | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm64/boot/dts/qcom/sa8775p.dtsi b/arch/arm64/boot/dts/qcom/sa8775p.dtsi
index 7eab458..ab01efe 100644
--- a/arch/arm64/boot/dts/qcom/sa8775p.dtsi
+++ b/arch/arm64/boot/dts/qcom/sa8775p.dtsi
@@ -3620,6 +3620,7 @@
<&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_PCIE_0 0>;
interconnect-names = "pcie-mem", "cpu-pcie";
+ dma-coherent;
iommus = <&pcie_smmu 0x0000 0x7f>;
resets = <&gcc GCC_PCIE_0_BCR>;
reset-names = "core";
--
2.7.4
^ permalink raw reply related [flat|nested] 4+ messages in thread