* [PATCH v7 1/4] dt-bindings: PCI: qcom-ep: Add support for SA8775P SoC
2023-11-07 12:50 [PATCH v7 0/4] arm64: qcom: sa8775p: add support for EP PCIe Mrinmay Sarkar
@ 2023-11-07 12:50 ` Mrinmay Sarkar
2023-11-07 12:50 ` [PATCH v7 2/4] PCI: qcom-ep: Add support for SA8775P SOC Mrinmay Sarkar
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Mrinmay Sarkar @ 2023-11-07 12:50 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, Kishon Vijay Abraham I,
linux-arm-msm, linux-pci, devicetree, linux-kernel, mhi
Add devicetree bindings support for SA8775P SoC. It has DMA register
space and dma interrupt to support HDMA.
Signed-off-by: Mrinmay Sarkar <quic_msarkar@quicinc.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
.../devicetree/bindings/pci/qcom,pcie-ep.yaml | 64 +++++++++++++++++++++-
1 file changed, 62 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/pci/qcom,pcie-ep.yaml b/Documentation/devicetree/bindings/pci/qcom,pcie-ep.yaml
index a223ce0..46802f7 100644
--- a/Documentation/devicetree/bindings/pci/qcom,pcie-ep.yaml
+++ b/Documentation/devicetree/bindings/pci/qcom,pcie-ep.yaml
@@ -13,6 +13,7 @@ properties:
compatible:
oneOf:
- enum:
+ - qcom,sa8775p-pcie-ep
- qcom,sdx55-pcie-ep
- qcom,sm8450-pcie-ep
- items:
@@ -20,6 +21,7 @@ properties:
- const: qcom,sdx55-pcie-ep
reg:
+ minItems: 6
items:
- description: Qualcomm-specific PARF configuration registers
- description: DesignWare PCIe registers
@@ -27,8 +29,10 @@ properties:
- description: Address Translation Unit (ATU) registers
- description: Memory region used to map remote RC address space
- description: BAR memory region
+ - description: DMA register space
reg-names:
+ minItems: 6
items:
- const: parf
- const: dbi
@@ -36,13 +40,14 @@ properties:
- const: atu
- const: addr_space
- const: mmio
+ - const: dma
clocks:
- minItems: 7
+ minItems: 5
maxItems: 8
clock-names:
- minItems: 7
+ minItems: 5
maxItems: 8
qcom,perst-regs:
@@ -57,14 +62,18 @@ properties:
- description: Perst separation enable offset
interrupts:
+ minItems: 2
items:
- description: PCIe Global interrupt
- description: PCIe Doorbell interrupt
+ - description: DMA interrupt
interrupt-names:
+ minItems: 2
items:
- const: global
- const: doorbell
+ - const: dma
reset-gpios:
description: GPIO used as PERST# input signal
@@ -125,6 +134,10 @@ allOf:
- qcom,sdx55-pcie-ep
then:
properties:
+ reg:
+ maxItems: 6
+ reg-names:
+ maxItems: 6
clocks:
items:
- description: PCIe Auxiliary clock
@@ -143,6 +156,10 @@ allOf:
- const: slave_q2a
- const: sleep
- const: ref
+ interrupts:
+ maxItems: 2
+ interrupt-names:
+ maxItems: 2
- if:
properties:
@@ -152,6 +169,10 @@ allOf:
- qcom,sm8450-pcie-ep
then:
properties:
+ reg:
+ maxItems: 6
+ reg-names:
+ maxItems: 6
clocks:
items:
- description: PCIe Auxiliary clock
@@ -172,6 +193,45 @@ allOf:
- const: ref
- const: ddrss_sf_tbu
- const: aggre_noc_axi
+ interrupts:
+ maxItems: 2
+ interrupt-names:
+ maxItems: 2
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - qcom,sa8775p-pcie-ep
+ then:
+ properties:
+ reg:
+ minItems: 7
+ maxItems: 7
+ reg-names:
+ minItems: 7
+ maxItems: 7
+ clocks:
+ items:
+ - description: PCIe Auxiliary clock
+ - description: PCIe CFG AHB clock
+ - description: PCIe Master AXI clock
+ - description: PCIe Slave AXI clock
+ - description: PCIe Slave Q2A AXI clock
+ clock-names:
+ items:
+ - const: aux
+ - const: cfg
+ - const: bus_master
+ - const: bus_slave
+ - const: slave_q2a
+ interrupts:
+ minItems: 3
+ maxItems: 3
+ interrupt-names:
+ minItems: 3
+ maxItems: 3
unevaluatedProperties: false
--
2.7.4
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH v7 2/4] PCI: qcom-ep: Add support for SA8775P SOC
2023-11-07 12:50 [PATCH v7 0/4] arm64: qcom: sa8775p: add support for EP PCIe Mrinmay Sarkar
2023-11-07 12:50 ` [PATCH v7 1/4] dt-bindings: PCI: qcom-ep: Add support for SA8775P SoC Mrinmay Sarkar
@ 2023-11-07 12:50 ` Mrinmay Sarkar
2023-11-07 12:50 ` [PATCH v7 3/4] PCI: epf-mhi: Add support for SA8775P Mrinmay Sarkar
2023-11-07 12:50 ` [PATCH v7 4/4] arm64: dts: qcom: sa8775p: Add ep pcie0 controller node Mrinmay Sarkar
3 siblings, 0 replies; 6+ messages in thread
From: Mrinmay Sarkar @ 2023-11-07 12:50 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, Bjorn Helgaas,
Lorenzo Pieralisi, Krzysztof Wilczyński,
Kishon Vijay Abraham I, linux-pci, linux-arm-msm, devicetree,
linux-kernel, mhi
Add support for SA8775P SoC to the Qualcomm PCIe Endpoint Controller
driver. Adding new compatible string as it has different set of clocks
compared to other SoCs.
Signed-off-by: Mrinmay Sarkar <quic_msarkar@quicinc.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
---
drivers/pci/controller/dwc/pcie-qcom-ep.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/pci/controller/dwc/pcie-qcom-ep.c b/drivers/pci/controller/dwc/pcie-qcom-ep.c
index 9e58f05..3a53d97 100644
--- a/drivers/pci/controller/dwc/pcie-qcom-ep.c
+++ b/drivers/pci/controller/dwc/pcie-qcom-ep.c
@@ -875,6 +875,7 @@ static void qcom_pcie_ep_remove(struct platform_device *pdev)
}
static const struct of_device_id qcom_pcie_ep_match[] = {
+ { .compatible = "qcom,sa8775p-pcie-ep", },
{ .compatible = "qcom,sdx55-pcie-ep", },
{ .compatible = "qcom,sm8450-pcie-ep", },
{ }
--
2.7.4
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH v7 3/4] PCI: epf-mhi: Add support for SA8775P
2023-11-07 12:50 [PATCH v7 0/4] arm64: qcom: sa8775p: add support for EP PCIe Mrinmay Sarkar
2023-11-07 12:50 ` [PATCH v7 1/4] dt-bindings: PCI: qcom-ep: Add support for SA8775P SoC Mrinmay Sarkar
2023-11-07 12:50 ` [PATCH v7 2/4] PCI: qcom-ep: Add support for SA8775P SOC Mrinmay Sarkar
@ 2023-11-07 12:50 ` Mrinmay Sarkar
2023-11-07 14:44 ` Manivannan Sadhasivam
2023-11-07 12:50 ` [PATCH v7 4/4] arm64: dts: qcom: sa8775p: Add ep pcie0 controller node Mrinmay Sarkar
3 siblings, 1 reply; 6+ messages in thread
From: Mrinmay Sarkar @ 2023-11-07 12:50 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, Bjorn Helgaas,
Lorenzo Pieralisi, Krzysztof Wilczyński,
Kishon Vijay Abraham I, linux-pci, linux-arm-msm, devicetree,
linux-kernel, mhi
Add support for Qualcomm Snapdragon SA8775P SoC to the EPF driver.
Reusing PID (0x0306) as dedicated PID for SA8775P EP is yet to decide
and it supports HDMA. Currently, it has no fixed PCI class, so it is
being advertised as "PCI_CLASS_OTHERS".
Signed-off-by: Mrinmay Sarkar <quic_msarkar@quicinc.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
---
drivers/pci/endpoint/functions/pci-epf-mhi.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/drivers/pci/endpoint/functions/pci-epf-mhi.c b/drivers/pci/endpoint/functions/pci-epf-mhi.c
index b7b9d3e..23ea94e 100644
--- a/drivers/pci/endpoint/functions/pci-epf-mhi.c
+++ b/drivers/pci/endpoint/functions/pci-epf-mhi.c
@@ -114,6 +114,22 @@ static const struct pci_epf_mhi_ep_info sm8450_info = {
.flags = MHI_EPF_USE_DMA,
};
+static struct pci_epf_header sa8775p_header = {
+ .vendorid = PCI_VENDOR_ID_QCOM,
+ .deviceid = 0x0306, /* FIXME: Update deviceid for sa8775p EP */
+ .baseclass_code = PCI_CLASS_OTHERS,
+ .interrupt_pin = PCI_INTERRUPT_INTA,
+};
+
+static const struct pci_epf_mhi_ep_info sa8775p_info = {
+ .config = &mhi_v1_config,
+ .epf_header = &sa8775p_header,
+ .bar_num = BAR_0,
+ .epf_flags = PCI_BASE_ADDRESS_MEM_TYPE_32,
+ .msi_count = 32,
+ .mru = 0x8000,
+};
+
struct pci_epf_mhi {
const struct pci_epc_features *epc_features;
const struct pci_epf_mhi_ep_info *info;
@@ -677,6 +693,7 @@ static int pci_epf_mhi_probe(struct pci_epf *epf,
}
static const struct pci_epf_device_id pci_epf_mhi_ids[] = {
+ { .name = "sa8775p", .driver_data = (kernel_ulong_t)&sa8775p_info },
{ .name = "sdx55", .driver_data = (kernel_ulong_t)&sdx55_info },
{ .name = "sm8450", .driver_data = (kernel_ulong_t)&sm8450_info },
{},
--
2.7.4
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH v7 3/4] PCI: epf-mhi: Add support for SA8775P
2023-11-07 12:50 ` [PATCH v7 3/4] PCI: epf-mhi: Add support for SA8775P Mrinmay Sarkar
@ 2023-11-07 14:44 ` Manivannan Sadhasivam
0 siblings, 0 replies; 6+ messages in thread
From: Manivannan Sadhasivam @ 2023-11-07 14:44 UTC (permalink / raw)
To: Mrinmay Sarkar
Cc: agross, andersson, krzysztof.kozlowski+dt, conor+dt,
konrad.dybcio, mani, robh+dt, quic_shazhuss, quic_nitegupt,
quic_ramkri, quic_nayiluri, dmitry.baryshkov, robh, quic_krichai,
quic_vbadigan, quic_parass, quic_schintav, quic_shijjose,
Bjorn Helgaas, Lorenzo Pieralisi, Krzysztof Wilczyński,
Kishon Vijay Abraham I, linux-pci, linux-arm-msm, devicetree,
linux-kernel, mhi
On Tue, Nov 07, 2023 at 06:20:27PM +0530, Mrinmay Sarkar wrote:
> Add support for Qualcomm Snapdragon SA8775P SoC to the EPF driver.
> Reusing PID (0x0306) as dedicated PID for SA8775P EP is yet to decide
> and it supports HDMA.
"SA8775P is currently reusing the PID 0x0306 (the default one hardcoded in the
config space header) as the unique PID is not yet allocated. But the host side
stack works fine with the default PID. It will get updated once the PID is
finalized."
> Currently, it has no fixed PCI class, so it is
> being advertised as "PCI_CLASS_OTHERS".
>
> Signed-off-by: Mrinmay Sarkar <quic_msarkar@quicinc.com>
> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
> ---
> drivers/pci/endpoint/functions/pci-epf-mhi.c | 17 +++++++++++++++++
> 1 file changed, 17 insertions(+)
>
> diff --git a/drivers/pci/endpoint/functions/pci-epf-mhi.c b/drivers/pci/endpoint/functions/pci-epf-mhi.c
> index b7b9d3e..23ea94e 100644
> --- a/drivers/pci/endpoint/functions/pci-epf-mhi.c
> +++ b/drivers/pci/endpoint/functions/pci-epf-mhi.c
> @@ -114,6 +114,22 @@ static const struct pci_epf_mhi_ep_info sm8450_info = {
> .flags = MHI_EPF_USE_DMA,
> };
>
> +static struct pci_epf_header sa8775p_header = {
> + .vendorid = PCI_VENDOR_ID_QCOM,
> + .deviceid = 0x0306, /* FIXME: Update deviceid for sa8775p EP */
> + .baseclass_code = PCI_CLASS_OTHERS,
> + .interrupt_pin = PCI_INTERRUPT_INTA,
> +};
> +
> +static const struct pci_epf_mhi_ep_info sa8775p_info = {
> + .config = &mhi_v1_config,
> + .epf_header = &sa8775p_header,
> + .bar_num = BAR_0,
> + .epf_flags = PCI_BASE_ADDRESS_MEM_TYPE_32,
> + .msi_count = 32,
> + .mru = 0x8000,
> +};
> +
> struct pci_epf_mhi {
> const struct pci_epc_features *epc_features;
> const struct pci_epf_mhi_ep_info *info;
> @@ -677,6 +693,7 @@ static int pci_epf_mhi_probe(struct pci_epf *epf,
> }
>
> static const struct pci_epf_device_id pci_epf_mhi_ids[] = {
> + { .name = "sa8775p", .driver_data = (kernel_ulong_t)&sa8775p_info },
The ID should be changed to "pci_epf_mhi_sa8775p". I know that you followed the
existing pattern, but it was my fault to ignore the prefix "pci_epf_mhi" and now
the function name would appear as "functions/sa8775p/" and it would create issue
if we happen to support multiple functions for this EP.
I will share the patch with you for changing the names for other functions as
well. Please apply it on top this series and send it together. Even though it is
an ABI breakage if we change the function name, luckily there isn't anyone (to
my knowledge) using this driver outside Qcom and myself yet.
- Mani
> { .name = "sdx55", .driver_data = (kernel_ulong_t)&sdx55_info },
> { .name = "sm8450", .driver_data = (kernel_ulong_t)&sm8450_info },
> {},
> --
> 2.7.4
>
>
--
மணிவண்ணன் சதாசிவம்
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v7 4/4] arm64: dts: qcom: sa8775p: Add ep pcie0 controller node
2023-11-07 12:50 [PATCH v7 0/4] arm64: qcom: sa8775p: add support for EP PCIe Mrinmay Sarkar
` (2 preceding siblings ...)
2023-11-07 12:50 ` [PATCH v7 3/4] PCI: epf-mhi: Add support for SA8775P Mrinmay Sarkar
@ 2023-11-07 12:50 ` Mrinmay Sarkar
3 siblings, 0 replies; 6+ messages in thread
From: Mrinmay Sarkar @ 2023-11-07 12:50 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, Bjorn Helgaas,
Lorenzo Pieralisi, Krzysztof Wilczyński,
Kishon Vijay Abraham I, linux-arm-msm, linux-pci, devicetree,
linux-kernel, mhi
Add ep pcie dtsi node for pcie0 controller found on sa8775p platform.
It supports gen4 and x2 link width. Limiting the speed to Gen3 due to
stability issues.
Signed-off-by: Mrinmay Sarkar <quic_msarkar@quicinc.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
---
arch/arm64/boot/dts/qcom/sa8775p.dtsi | 46 +++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sa8775p.dtsi b/arch/arm64/boot/dts/qcom/sa8775p.dtsi
index 13dd44d..7eab458 100644
--- a/arch/arm64/boot/dts/qcom/sa8775p.dtsi
+++ b/arch/arm64/boot/dts/qcom/sa8775p.dtsi
@@ -3586,6 +3586,52 @@
status = "disabled";
};
+ pcie0_ep: pcie-ep@1c00000 {
+ compatible = "qcom,sa8775p-pcie-ep";
+ reg = <0x0 0x01c00000 0x0 0x3000>,
+ <0x0 0x40000000 0x0 0xf20>,
+ <0x0 0x40000f20 0x0 0xa8>,
+ <0x0 0x40001000 0x0 0x4000>,
+ <0x0 0x40200000 0x0 0x100000>,
+ <0x0 0x01c03000 0x0 0x1000>,
+ <0x0 0x40005000 0x0 0x2000>;
+ reg-names = "parf", "dbi", "elbi", "atu", "addr_space",
+ "mmio", "dma";
+
+ clocks = <&gcc GCC_PCIE_0_AUX_CLK>,
+ <&gcc GCC_PCIE_0_CFG_AHB_CLK>,
+ <&gcc GCC_PCIE_0_MSTR_AXI_CLK>,
+ <&gcc GCC_PCIE_0_SLV_AXI_CLK>,
+ <&gcc GCC_PCIE_0_SLV_Q2A_AXI_CLK>;
+
+ clock-names = "aux",
+ "cfg",
+ "bus_master",
+ "bus_slave",
+ "slave_q2a";
+
+ interrupts = <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 630 IRQ_TYPE_LEVEL_HIGH>;
+
+ interrupt-names = "global", "doorbell", "dma";
+
+ interconnects = <&pcie_anoc MASTER_PCIE_0 0 &mc_virt SLAVE_EBI1 0>,
+ <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_PCIE_0 0>;
+ interconnect-names = "pcie-mem", "cpu-pcie";
+
+ iommus = <&pcie_smmu 0x0000 0x7f>;
+ resets = <&gcc GCC_PCIE_0_BCR>;
+ reset-names = "core";
+ power-domains = <&gcc PCIE_0_GDSC>;
+ phys = <&pcie0_phy>;
+ phy-names = "pciephy";
+ max-link-speed = <3>; /* FIXME: Limiting the Gen speed due to stability issues */
+ num-lanes = <2>;
+
+ status = "disabled";
+ };
+
pcie0_phy: phy@1c04000 {
compatible = "qcom,sa8775p-qmp-gen4x2-pcie-phy";
reg = <0x0 0x1c04000 0x0 0x2000>;
--
2.7.4
^ permalink raw reply related [flat|nested] 6+ messages in thread