* [PATCH v2 0/2] arm64: dts: qcom: nord: add GPI DMA nodes
@ 2026-09-21 14:46 Bartosz Golaszewski
2026-09-21 14:46 ` [PATCH v2 1/2] arm64: dts: qcom: nord: add GPI DMA controller nodes Bartosz Golaszewski
2026-09-21 14:46 ` [PATCH v2 2/2] arm64: dts: qcom: nord: wire up GPI DMA for QUP I2C/SPI engines Bartosz Golaszewski
0 siblings, 2 replies; 11+ messages in thread
From: Bartosz Golaszewski @ 2026-09-21 14:46 UTC (permalink / raw)
To: Shawn Guo, Bjorn Andersson, Konrad Dybcio, Abel Vesa,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, brgl
Cc: linux-arm-msm, devicetree, linux-kernel, Bartosz Golaszewski
Add GPI DMA nodes for Nord and reference them from the QUPv3 I2C/SPI
nodes.
The DT bindings patch was sent separately[1].
This series is rebased on top of current linux-next.
[1] https://lore.kernel.org/all/20260916-nord-gpi-dt-bindings-v1-1-857bf9e84999@oss.qualcomm.com/
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
---
Changes in v2:
- Remove dmas and dma-names from uart nodes
- Link to v1: https://patch.msgid.link/20260916-nord-gpi-dts-v1-0-073e3f9c19d0@oss.qualcomm.com
---
Bartosz Golaszewski (2):
arm64: dts: qcom: nord: add GPI DMA controller nodes
arm64: dts: qcom: nord: wire up GPI DMA for QUP I2C/SPI engines
arch/arm64/boot/dts/qcom/nord.dtsi | 191 +++++++++++++++++++++++++++++++++++++
1 file changed, 191 insertions(+)
---
base-commit: 6abfe1f0063dc103de5be76c09cea2a25e332c20
change-id: 20260916-nord-gpi-dts-40456500b7b1
Best regards,
--
Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH v2 1/2] arm64: dts: qcom: nord: add GPI DMA controller nodes 2026-09-21 14:46 [PATCH v2 0/2] arm64: dts: qcom: nord: add GPI DMA nodes Bartosz Golaszewski @ 2026-09-21 14:46 ` Bartosz Golaszewski 2026-09-22 2:51 ` Shawn Guo 2026-09-22 5:34 ` Mukesh Savaliya 2026-09-21 14:46 ` [PATCH v2 2/2] arm64: dts: qcom: nord: wire up GPI DMA for QUP I2C/SPI engines Bartosz Golaszewski 1 sibling, 2 replies; 11+ messages in thread From: Bartosz Golaszewski @ 2026-09-21 14:46 UTC (permalink / raw) To: Shawn Guo, Bjorn Andersson, Konrad Dybcio, Abel Vesa, Rob Herring, Krzysztof Kozlowski, Conor Dooley, brgl Cc: linux-arm-msm, devicetree, linux-kernel, Bartosz Golaszewski Add GPI DMA controller nodes for all three QUPv3 engines. Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> --- arch/arm64/boot/dts/qcom/nord.dtsi | 67 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/nord.dtsi b/arch/arm64/boot/dts/qcom/nord.dtsi index e0496fd40c3087a168416ac56c60655bd13b124b..9f4e0e1498c329eb7134fbc725f1dc05ffb1677d 100644 --- a/arch/arm64/boot/dts/qcom/nord.dtsi +++ b/arch/arm64/boot/dts/qcom/nord.dtsi @@ -3,6 +3,7 @@ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. */ +#include <dt-bindings/dma/qcom-gpi.h> #include <dt-bindings/interrupt-controller/arm-gic.h> / { @@ -909,6 +910,28 @@ soc: soc@0 { dma-ranges = <0 0 0 0 0x10 0>; ranges = <0 0 0 0 0x10 0>; + gpi_dma2: dma-controller@800000 { + compatible = "qcom,nord-gpi-dma", "qcom,sm6350-gpi-dma"; + reg = <0x0 0x00800000 0x0 0x60000>; + #dma-cells = <3>; + interrupts = <GIC_SPI 588 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 589 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 590 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 591 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 592 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 593 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 594 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 595 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 596 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 597 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 359 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 360 IRQ_TYPE_LEVEL_HIGH>; + dma-channels = <12>; + dma-channel-mask = <0xfff>; + iommus = <&apps_smmu_0 0x15b6 0x0>; + status = "disabled"; + }; + qupv3_2: geniqup@8c0000 { compatible = "qcom,geni-se-qup"; reg = <0x0 0x008c0000 0x0 0x2000>; @@ -1107,6 +1130,28 @@ uart20: serial@898000 { }; }; + gpi_dma0: dma-controller@900000 { + compatible = "qcom,nord-gpi-dma", "qcom,sm6350-gpi-dma"; + reg = <0x0 0x00900000 0x0 0x60000>; + #dma-cells = <3>; + interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 219 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 220 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>; + dma-channels = <12>; + dma-channel-mask = <0xfff>; + iommus = <&apps_smmu_2 0x1016 0x0>; + status = "disabled"; + }; + qupv3_0: geniqup@9c0000 { compatible = "qcom,geni-se-qup"; reg = <0x0 0x009c0000 0x0 0x2000>; @@ -1278,6 +1323,28 @@ uart5: serial@994000 { }; }; + gpi_dma1: dma-controller@a00000 { + compatible = "qcom,nord-gpi-dma", "qcom,sm6350-gpi-dma"; + reg = <0x0 0x00a00000 0x0 0x60000>; + #dma-cells = <3>; + interrupts = <GIC_SPI 279 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 280 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 281 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 284 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 293 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 294 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 295 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 296 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 297 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>; + dma-channels = <12>; + dma-channel-mask = <0xfff>; + iommus = <&apps_smmu_2 0x1056 0x0>; + status = "disabled"; + }; + qupv3_1: geniqup@ac0000 { compatible = "qcom,geni-se-qup"; reg = <0x0 0x00ac0000 0x0 0x2000>; -- 2.47.3 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 1/2] arm64: dts: qcom: nord: add GPI DMA controller nodes 2026-09-21 14:46 ` [PATCH v2 1/2] arm64: dts: qcom: nord: add GPI DMA controller nodes Bartosz Golaszewski @ 2026-09-22 2:51 ` Shawn Guo 2026-09-22 5:34 ` Mukesh Savaliya 1 sibling, 0 replies; 11+ messages in thread From: Shawn Guo @ 2026-09-22 2:51 UTC (permalink / raw) To: Bartosz Golaszewski Cc: Shawn Guo, Bjorn Andersson, Konrad Dybcio, Abel Vesa, Rob Herring, Krzysztof Kozlowski, Conor Dooley, brgl, linux-arm-msm, devicetree, linux-kernel On Mon, Sep 21, 2026 at 04:46:58PM +0200, Bartosz Golaszewski wrote: > Add GPI DMA controller nodes for all three QUPv3 engines. > > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> Reviewed-by: Shawn Guo <shengchao.guo@oss.qualcomm.com> ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 1/2] arm64: dts: qcom: nord: add GPI DMA controller nodes 2026-09-21 14:46 ` [PATCH v2 1/2] arm64: dts: qcom: nord: add GPI DMA controller nodes Bartosz Golaszewski 2026-09-22 2:51 ` Shawn Guo @ 2026-09-22 5:34 ` Mukesh Savaliya 2026-09-22 8:24 ` Bartosz Golaszewski 1 sibling, 1 reply; 11+ messages in thread From: Mukesh Savaliya @ 2026-09-22 5:34 UTC (permalink / raw) To: Bartosz Golaszewski, Shawn Guo, Bjorn Andersson, Konrad Dybcio, Abel Vesa, Rob Herring, Krzysztof Kozlowski, Conor Dooley, brgl Cc: linux-arm-msm, devicetree, linux-kernel On 9/21/2026 8:16 PM, Bartosz Golaszewski wrote: [...] > +#include <dt-bindings/dma/qcom-gpi.h> > #include <dt-bindings/interrupt-controller/arm-gic.h> > > / { > @@ -909,6 +910,28 @@ soc: soc@0 { > dma-ranges = <0 0 0 0 0x10 0>; > ranges = <0 0 0 0 0x10 0>; > > + gpi_dma2: dma-controller@800000 { > + compatible = "qcom,nord-gpi-dma", "qcom,sm6350-gpi-dma"; > + reg = <0x0 0x00800000 0x0 0x60000>; > + #dma-cells = <3>; > + interrupts = <GIC_SPI 588 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 589 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 590 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 591 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 592 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 593 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 594 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 595 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 596 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 597 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 359 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 360 IRQ_TYPE_LEVEL_HIGH>; > + dma-channels = <12>; > + dma-channel-mask = <0xfff>; > + iommus = <&apps_smmu_0 0x15b6 0x0>; > + status = "disabled"; we should be keeping GPI node default enabled similar to common QUPv3 wrapper node. status = "ok" for all the nodes. > + }; > + > qupv3_2: geniqup@8c0000 { > compatible = "qcom,geni-se-qup"; > reg = <0x0 0x008c0000 0x0 0x2000>; > @@ -1107,6 +1130,28 @@ uart20: serial@898000 { > }; > }; > > + gpi_dma0: dma-controller@900000 { > + compatible = "qcom,nord-gpi-dma", "qcom,sm6350-gpi-dma"; > + reg = <0x0 0x00900000 0x0 0x60000>; > + #dma-cells = <3>; > + interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 219 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 220 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>; > + dma-channels = <12>; > + dma-channel-mask = <0xfff>; > + iommus = <&apps_smmu_2 0x1016 0x0>; > + status = "disabled"; same> + }; > + > qupv3_0: geniqup@9c0000 { > compatible = "qcom,geni-se-qup"; > reg = <0x0 0x009c0000 0x0 0x2000>; > @@ -1278,6 +1323,28 @@ uart5: serial@994000 { > }; > }; > > + gpi_dma1: dma-controller@a00000 { > + compatible = "qcom,nord-gpi-dma", "qcom,sm6350-gpi-dma"; > + reg = <0x0 0x00a00000 0x0 0x60000>; > + #dma-cells = <3>; > + interrupts = <GIC_SPI 279 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 280 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 281 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 284 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 293 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 294 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 295 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 296 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 297 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>; > + dma-channels = <12>; > + dma-channel-mask = <0xfff>; > + iommus = <&apps_smmu_2 0x1056 0x0>; > + status = "disabled"; same> + }; > + > qupv3_1: geniqup@ac0000 { > compatible = "qcom,geni-se-qup"; > reg = <0x0 0x00ac0000 0x0 0x2000>; > ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 1/2] arm64: dts: qcom: nord: add GPI DMA controller nodes 2026-09-22 5:34 ` Mukesh Savaliya @ 2026-09-22 8:24 ` Bartosz Golaszewski 2026-09-23 12:40 ` Konrad Dybcio 0 siblings, 1 reply; 11+ messages in thread From: Bartosz Golaszewski @ 2026-09-22 8:24 UTC (permalink / raw) To: Mukesh Savaliya Cc: linux-arm-msm, devicetree, linux-kernel, Bartosz Golaszewski, Shawn Guo, Bjorn Andersson, Konrad Dybcio, Abel Vesa, Rob Herring, Krzysztof Kozlowski, Conor Dooley, brgl On Tue, 22 Sep 2026 07:34:25 +0200, Mukesh Savaliya <mukesh.savaliya@oss.qualcomm.com> said: > > > On 9/21/2026 8:16 PM, Bartosz Golaszewski wrote: > [...] > >> +#include <dt-bindings/dma/qcom-gpi.h> >> #include <dt-bindings/interrupt-controller/arm-gic.h> >> >> / { >> @@ -909,6 +910,28 @@ soc: soc@0 { >> dma-ranges = <0 0 0 0 0x10 0>; >> ranges = <0 0 0 0 0x10 0>; >> >> + gpi_dma2: dma-controller@800000 { >> + compatible = "qcom,nord-gpi-dma", "qcom,sm6350-gpi-dma"; >> + reg = <0x0 0x00800000 0x0 0x60000>; >> + #dma-cells = <3>; >> + interrupts = <GIC_SPI 588 IRQ_TYPE_LEVEL_HIGH>, >> + <GIC_SPI 589 IRQ_TYPE_LEVEL_HIGH>, >> + <GIC_SPI 590 IRQ_TYPE_LEVEL_HIGH>, >> + <GIC_SPI 591 IRQ_TYPE_LEVEL_HIGH>, >> + <GIC_SPI 592 IRQ_TYPE_LEVEL_HIGH>, >> + <GIC_SPI 593 IRQ_TYPE_LEVEL_HIGH>, >> + <GIC_SPI 594 IRQ_TYPE_LEVEL_HIGH>, >> + <GIC_SPI 595 IRQ_TYPE_LEVEL_HIGH>, >> + <GIC_SPI 596 IRQ_TYPE_LEVEL_HIGH>, >> + <GIC_SPI 597 IRQ_TYPE_LEVEL_HIGH>, >> + <GIC_SPI 359 IRQ_TYPE_LEVEL_HIGH>, >> + <GIC_SPI 360 IRQ_TYPE_LEVEL_HIGH>; >> + dma-channels = <12>; >> + dma-channel-mask = <0xfff>; >> + iommus = <&apps_smmu_0 0x15b6 0x0>; >> + status = "disabled"; > > we should be keeping GPI node default enabled similar to common QUPv3 > wrapper node. > status = "ok" for all the nodes. > The pattern across Qualcomm platforms seems to disable the GPI DMA nodes at SoC-level and only enable them at board-level. Bart ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 1/2] arm64: dts: qcom: nord: add GPI DMA controller nodes 2026-09-22 8:24 ` Bartosz Golaszewski @ 2026-09-23 12:40 ` Konrad Dybcio 2026-09-24 8:50 ` Mukesh Savaliya 0 siblings, 1 reply; 11+ messages in thread From: Konrad Dybcio @ 2026-09-23 12:40 UTC (permalink / raw) To: Bartosz Golaszewski, Mukesh Savaliya Cc: linux-arm-msm, devicetree, linux-kernel, Bartosz Golaszewski, Shawn Guo, Bjorn Andersson, Konrad Dybcio, Abel Vesa, Rob Herring, Krzysztof Kozlowski, Conor Dooley On 9/22/26 10:24 AM, Bartosz Golaszewski wrote: > On Tue, 22 Sep 2026 07:34:25 +0200, Mukesh Savaliya > <mukesh.savaliya@oss.qualcomm.com> said: >> >> >> On 9/21/2026 8:16 PM, Bartosz Golaszewski wrote: >> [...] >> >>> +#include <dt-bindings/dma/qcom-gpi.h> >>> #include <dt-bindings/interrupt-controller/arm-gic.h> >>> >>> / { >>> @@ -909,6 +910,28 @@ soc: soc@0 { >>> dma-ranges = <0 0 0 0 0x10 0>; >>> ranges = <0 0 0 0 0x10 0>; >>> >>> + gpi_dma2: dma-controller@800000 { >>> + compatible = "qcom,nord-gpi-dma", "qcom,sm6350-gpi-dma"; >>> + reg = <0x0 0x00800000 0x0 0x60000>; >>> + #dma-cells = <3>; >>> + interrupts = <GIC_SPI 588 IRQ_TYPE_LEVEL_HIGH>, >>> + <GIC_SPI 589 IRQ_TYPE_LEVEL_HIGH>, >>> + <GIC_SPI 590 IRQ_TYPE_LEVEL_HIGH>, >>> + <GIC_SPI 591 IRQ_TYPE_LEVEL_HIGH>, >>> + <GIC_SPI 592 IRQ_TYPE_LEVEL_HIGH>, >>> + <GIC_SPI 593 IRQ_TYPE_LEVEL_HIGH>, >>> + <GIC_SPI 594 IRQ_TYPE_LEVEL_HIGH>, >>> + <GIC_SPI 595 IRQ_TYPE_LEVEL_HIGH>, >>> + <GIC_SPI 596 IRQ_TYPE_LEVEL_HIGH>, >>> + <GIC_SPI 597 IRQ_TYPE_LEVEL_HIGH>, >>> + <GIC_SPI 359 IRQ_TYPE_LEVEL_HIGH>, >>> + <GIC_SPI 360 IRQ_TYPE_LEVEL_HIGH>; >>> + dma-channels = <12>; >>> + dma-channel-mask = <0xfff>; >>> + iommus = <&apps_smmu_0 0x15b6 0x0>; >>> + status = "disabled"; >> >> we should be keeping GPI node default enabled similar to common QUPv3 >> wrapper node. >> status = "ok" for all the nodes. >> > > The pattern across Qualcomm platforms seems to disable the GPI DMA nodes at > SoC-level and only enable them at board-level. For no reason - the DMA engines may be reserved through TZ config, but for the past (high) N years that hasn't been the case Konrad ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 1/2] arm64: dts: qcom: nord: add GPI DMA controller nodes 2026-09-23 12:40 ` Konrad Dybcio @ 2026-09-24 8:50 ` Mukesh Savaliya 2026-09-24 8:55 ` Bartosz Golaszewski 0 siblings, 1 reply; 11+ messages in thread From: Mukesh Savaliya @ 2026-09-24 8:50 UTC (permalink / raw) To: Konrad Dybcio, Bartosz Golaszewski Cc: linux-arm-msm, devicetree, linux-kernel, Bartosz Golaszewski, Shawn Guo, Bjorn Andersson, Konrad Dybcio, Abel Vesa, Rob Herring, Krzysztof Kozlowski, Conor Dooley Thanks Konrad, Bartosz ! On 9/23/2026 6:10 PM, Konrad Dybcio wrote: > On 9/22/26 10:24 AM, Bartosz Golaszewski wrote: >> On Tue, 22 Sep 2026 07:34:25 +0200, Mukesh Savaliya >> <mukesh.savaliya@oss.qualcomm.com> said: >>> >>> >>> On 9/21/2026 8:16 PM, Bartosz Golaszewski wrote: >>> [...] >>> >>>> +#include <dt-bindings/dma/qcom-gpi.h> >>>> #include <dt-bindings/interrupt-controller/arm-gic.h> >>>> >>>> / { >>>> @@ -909,6 +910,28 @@ soc: soc@0 { >>>> dma-ranges = <0 0 0 0 0x10 0>; >>>> ranges = <0 0 0 0 0x10 0>; >>>> >>>> + gpi_dma2: dma-controller@800000 { >>>> + compatible = "qcom,nord-gpi-dma", "qcom,sm6350-gpi-dma"; >>>> + reg = <0x0 0x00800000 0x0 0x60000>; >>>> + #dma-cells = <3>; >>>> + interrupts = <GIC_SPI 588 IRQ_TYPE_LEVEL_HIGH>, >>>> + <GIC_SPI 589 IRQ_TYPE_LEVEL_HIGH>, >>>> + <GIC_SPI 590 IRQ_TYPE_LEVEL_HIGH>, >>>> + <GIC_SPI 591 IRQ_TYPE_LEVEL_HIGH>, >>>> + <GIC_SPI 592 IRQ_TYPE_LEVEL_HIGH>, >>>> + <GIC_SPI 593 IRQ_TYPE_LEVEL_HIGH>, >>>> + <GIC_SPI 594 IRQ_TYPE_LEVEL_HIGH>, >>>> + <GIC_SPI 595 IRQ_TYPE_LEVEL_HIGH>, >>>> + <GIC_SPI 596 IRQ_TYPE_LEVEL_HIGH>, >>>> + <GIC_SPI 597 IRQ_TYPE_LEVEL_HIGH>, >>>> + <GIC_SPI 359 IRQ_TYPE_LEVEL_HIGH>, >>>> + <GIC_SPI 360 IRQ_TYPE_LEVEL_HIGH>; >>>> + dma-channels = <12>; >>>> + dma-channel-mask = <0xfff>; >>>> + iommus = <&apps_smmu_0 0x15b6 0x0>; >>>> + status = "disabled"; >>> >>> we should be keeping GPI node default enabled similar to common QUPv3 >>> wrapper node. >>> status = "ok" for all the nodes. >>> >> >> The pattern across Qualcomm platforms seems to disable the GPI DMA nodes at >> SoC-level and only enable them at board-level. > > For no reason - the DMA engines may be reserved through TZ config, > but for the past (high) N years that hasn't been the case > There is a reason to reserve this from TZ. Some use cases require GPI to be available during early boot, before Linux is up and running, which necessitates keeping the GPI instance enabled. Also, GPII is allocated per SE, while the GPI instance itself is shared across all SEs within a QUP. Given that a QUP typically contains eight SEs, it is likely that at least one SE will require GPI operation. For that reason, my preference is to keep the GPI node enabled by default. However, if there is a strong preference to make this board-specific and enable it only where required, I can work with that approach as well. I think it would be better to align on the expected default behavior now, rather than revisiting it later once additional users start depending on it. > Konrad ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 1/2] arm64: dts: qcom: nord: add GPI DMA controller nodes 2026-09-24 8:50 ` Mukesh Savaliya @ 2026-09-24 8:55 ` Bartosz Golaszewski 2026-09-24 9:16 ` Konrad Dybcio 0 siblings, 1 reply; 11+ messages in thread From: Bartosz Golaszewski @ 2026-09-24 8:55 UTC (permalink / raw) To: Mukesh Savaliya Cc: Konrad Dybcio, linux-arm-msm, devicetree, linux-kernel, Bartosz Golaszewski, Shawn Guo, Bjorn Andersson, Konrad Dybcio, Abel Vesa, Rob Herring, Krzysztof Kozlowski, Conor Dooley On Thu, Sep 24, 2026 at 10:50 AM Mukesh Savaliya <mukesh.savaliya@oss.qualcomm.com> wrote: > >>> > >>> we should be keeping GPI node default enabled similar to common QUPv3 > >>> wrapper node. > >>> status = "ok" for all the nodes. > >>> > >> > >> The pattern across Qualcomm platforms seems to disable the GPI DMA nodes at > >> SoC-level and only enable them at board-level. > > > > For no reason - the DMA engines may be reserved through TZ config, > > but for the past (high) N years that hasn't been the case > > > > There is a reason to reserve this from TZ. Some use cases require GPI to > be available during early boot, before Linux is up and running, which > necessitates keeping the GPI instance enabled. > > Also, GPII is allocated per SE, while the GPI instance itself is shared > across all SEs within a QUP. Given that a QUP typically contains eight > SEs, it is likely that at least one SE will require GPI operation. > > For that reason, my preference is to keep the GPI node enabled by > default. However, if there is a strong preference to make this > board-specific and enable it only where required, I can work with that > approach as well. > > I think it would be better to align on the expected default behavior > now, rather than revisiting it later once additional users start > depending on it. If I understood Konrad correctly, he too is in favor of enabling the GPI nodes. I was about to resend v3 with that changed. Bart ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 1/2] arm64: dts: qcom: nord: add GPI DMA controller nodes 2026-09-24 8:55 ` Bartosz Golaszewski @ 2026-09-24 9:16 ` Konrad Dybcio 0 siblings, 0 replies; 11+ messages in thread From: Konrad Dybcio @ 2026-09-24 9:16 UTC (permalink / raw) To: Bartosz Golaszewski, Mukesh Savaliya Cc: linux-arm-msm, devicetree, linux-kernel, Bartosz Golaszewski, Shawn Guo, Bjorn Andersson, Konrad Dybcio, Abel Vesa, Rob Herring, Krzysztof Kozlowski, Conor Dooley On 9/24/26 10:55 AM, Bartosz Golaszewski wrote: > On Thu, Sep 24, 2026 at 10:50 AM Mukesh Savaliya > <mukesh.savaliya@oss.qualcomm.com> wrote: >>>>> >>>>> we should be keeping GPI node default enabled similar to common QUPv3 >>>>> wrapper node. >>>>> status = "ok" for all the nodes. >>>>> >>>> >>>> The pattern across Qualcomm platforms seems to disable the GPI DMA nodes at >>>> SoC-level and only enable them at board-level. >>> >>> For no reason - the DMA engines may be reserved through TZ config, >>> but for the past (high) N years that hasn't been the case >>> >> >> There is a reason to reserve this from TZ. Some use cases require GPI to >> be available during early boot, before Linux is up and running, which >> necessitates keeping the GPI instance enabled. >> >> Also, GPII is allocated per SE, while the GPI instance itself is shared >> across all SEs within a QUP. Given that a QUP typically contains eight >> SEs, it is likely that at least one SE will require GPI operation. >> >> For that reason, my preference is to keep the GPI node enabled by >> default. However, if there is a strong preference to make this >> board-specific and enable it only where required, I can work with that >> approach as well. >> >> I think it would be better to align on the expected default behavior >> now, rather than revisiting it later once additional users start >> depending on it. > > If I understood Konrad correctly, he too is in favor of enabling the > GPI nodes. I was about to resend v3 with that changed. Yes please Konrad ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v2 2/2] arm64: dts: qcom: nord: wire up GPI DMA for QUP I2C/SPI engines 2026-09-21 14:46 [PATCH v2 0/2] arm64: dts: qcom: nord: add GPI DMA nodes Bartosz Golaszewski 2026-09-21 14:46 ` [PATCH v2 1/2] arm64: dts: qcom: nord: add GPI DMA controller nodes Bartosz Golaszewski @ 2026-09-21 14:46 ` Bartosz Golaszewski 2026-09-22 2:52 ` Shawn Guo 1 sibling, 1 reply; 11+ messages in thread From: Bartosz Golaszewski @ 2026-09-21 14:46 UTC (permalink / raw) To: Shawn Guo, Bjorn Andersson, Konrad Dybcio, Abel Vesa, Rob Herring, Krzysztof Kozlowski, Conor Dooley, brgl Cc: linux-arm-msm, devicetree, linux-kernel, Bartosz Golaszewski Add DMA phandles to I2C and SPI QUPv3 serial engine nodes. Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> --- arch/arm64/boot/dts/qcom/nord.dtsi | 124 +++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/nord.dtsi b/arch/arm64/boot/dts/qcom/nord.dtsi index 9f4e0e1498c329eb7134fbc725f1dc05ffb1677d..906e4e67f03c70965bd2c588f740dd86f0b8b798 100644 --- a/arch/arm64/boot/dts/qcom/nord.dtsi +++ b/arch/arm64/boot/dts/qcom/nord.dtsi @@ -945,6 +945,10 @@ i2c14: i2c@880000 { reg = <0x0 0x00880000 0x0 0x4000>; interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma2 0 0 QCOM_GPI_I2C>, + <&gpi_dma2 1 0 QCOM_GPI_I2C>; + dma-names = "tx", "rx"; + #address-cells = <1>; #size-cells = <0>; @@ -972,6 +976,10 @@ i2c15: i2c@884000 { reg = <0x0 0x00884000 0x0 0x4000>; interrupts = <GIC_SPI 583 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma2 0 1 QCOM_GPI_I2C>, + <&gpi_dma2 1 1 QCOM_GPI_I2C>; + dma-names = "tx", "rx"; + #address-cells = <1>; #size-cells = <0>; @@ -999,6 +1007,10 @@ i2c16: i2c@888000 { reg = <0x0 0x00888000 0x0 0x4000>; interrupts = <GIC_SPI 584 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma2 0 2 QCOM_GPI_I2C>, + <&gpi_dma2 1 2 QCOM_GPI_I2C>; + dma-names = "tx", "rx"; + #address-cells = <1>; #size-cells = <0>; @@ -1026,6 +1038,10 @@ i2c17: i2c@88c000 { reg = <0x0 0x0088c000 0x0 0x4000>; interrupts = <GIC_SPI 585 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma2 0 3 QCOM_GPI_I2C>, + <&gpi_dma2 1 3 QCOM_GPI_I2C>; + dma-names = "tx", "rx"; + #address-cells = <1>; #size-cells = <0>; @@ -1053,6 +1069,10 @@ i2c18: i2c@890000 { reg = <0x0 0x00890000 0x0 0x4000>; interrupts = <GIC_SPI 586 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma2 0 4 QCOM_GPI_I2C>, + <&gpi_dma2 1 4 QCOM_GPI_I2C>; + dma-names = "tx", "rx"; + #address-cells = <1>; #size-cells = <0>; @@ -1080,6 +1100,10 @@ i2c19: i2c@894000 { reg = <0x0 0x00894000 0x0 0x4000>; interrupts = <GIC_SPI 587 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma2 0 5 QCOM_GPI_I2C>, + <&gpi_dma2 1 5 QCOM_GPI_I2C>; + dma-names = "tx", "rx"; + #address-cells = <1>; #size-cells = <0>; @@ -1107,6 +1131,10 @@ i2c20: i2c@898000 { reg = <0x0 0x00898000 0x0 0x4000>; interrupts = <GIC_SPI 461 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma2 0 6 QCOM_GPI_I2C>, + <&gpi_dma2 1 6 QCOM_GPI_I2C>; + dma-names = "tx", "rx"; + #address-cells = <1>; #size-cells = <0>; @@ -1118,6 +1146,10 @@ spi20: spi@898000 { reg = <0x0 0x00898000 0x0 0x4000>; interrupts = <GIC_SPI 461 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma2 0 6 QCOM_GPI_SPI>, + <&gpi_dma2 1 6 QCOM_GPI_SPI>; + dma-names = "tx", "rx"; + status = "disabled"; }; @@ -1165,6 +1197,10 @@ i2c0: i2c@980000 { reg = <0x0 0x00980000 0x0 0x4000>; interrupts = <GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma0 0 0 QCOM_GPI_I2C>, + <&gpi_dma0 1 0 QCOM_GPI_I2C>; + dma-names = "tx", "rx"; + #address-cells = <1>; #size-cells = <0>; @@ -1184,6 +1220,10 @@ uart0: serial@980000 { reg = <0x0 0x00980000 0x0 0x4000>; interrupts = <GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma0 0 0 QCOM_GPI_SPI>, + <&gpi_dma0 1 0 QCOM_GPI_SPI>; + dma-names = "tx", "rx"; + status = "disabled"; }; @@ -1192,6 +1232,10 @@ i2c1: i2c@984000 { reg = <0x0 0x00984000 0x0 0x4000>; interrupts = <GIC_SPI 513 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma0 0 1 QCOM_GPI_I2C>, + <&gpi_dma0 1 1 QCOM_GPI_I2C>; + dma-names = "tx", "rx"; + #address-cells = <1>; #size-cells = <0>; @@ -1211,6 +1255,10 @@ uart1: serial@984000 { reg = <0x0 0x00984000 0x0 0x4000>; interrupts = <GIC_SPI 513 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma0 0 1 QCOM_GPI_SPI>, + <&gpi_dma0 1 1 QCOM_GPI_SPI>; + dma-names = "tx", "rx"; + status = "disabled"; }; @@ -1219,6 +1267,10 @@ i2c2: i2c@988000 { reg = <0x0 0x00988000 0x0 0x4000>; interrupts = <GIC_SPI 514 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma0 0 2 QCOM_GPI_I2C>, + <&gpi_dma0 1 2 QCOM_GPI_I2C>; + dma-names = "tx", "rx"; + #address-cells = <1>; #size-cells = <0>; @@ -1238,6 +1290,10 @@ uart2: serial@988000 { reg = <0x0 0x00988000 0x0 0x4000>; interrupts = <GIC_SPI 514 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma0 0 2 QCOM_GPI_SPI>, + <&gpi_dma0 1 2 QCOM_GPI_SPI>; + dma-names = "tx", "rx"; + status = "disabled"; }; @@ -1246,6 +1302,10 @@ i2c3: i2c@98c000 { reg = <0x0 0x0098c000 0x0 0x4000>; interrupts = <GIC_SPI 515 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma0 0 3 QCOM_GPI_I2C>, + <&gpi_dma0 1 3 QCOM_GPI_I2C>; + dma-names = "tx", "rx"; + #address-cells = <1>; #size-cells = <0>; @@ -1265,6 +1325,10 @@ uart3: serial@98c000 { reg = <0x0 0x0098c000 0x0 0x4000>; interrupts = <GIC_SPI 515 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma0 0 3 QCOM_GPI_SPI>, + <&gpi_dma0 1 3 QCOM_GPI_SPI>; + dma-names = "tx", "rx"; + status = "disabled"; }; @@ -1273,6 +1337,10 @@ i2c4: i2c@990000 { reg = <0x0 0x00990000 0x0 0x4000>; interrupts = <GIC_SPI 516 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma0 0 4 QCOM_GPI_I2C>, + <&gpi_dma0 1 4 QCOM_GPI_I2C>; + dma-names = "tx", "rx"; + #address-cells = <1>; #size-cells = <0>; @@ -1300,6 +1368,10 @@ i2c5: i2c@994000 { reg = <0x0 0x00994000 0x0 0x4000>; interrupts = <GIC_SPI 517 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma0 0 5 QCOM_GPI_I2C>, + <&gpi_dma0 1 5 QCOM_GPI_I2C>; + dma-names = "tx", "rx"; + #address-cells = <1>; #size-cells = <0>; @@ -1311,6 +1383,10 @@ spi5: spi@994000 { reg = <0x0 0x00994000 0x0 0x4000>; interrupts = <GIC_SPI 517 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma0 0 5 QCOM_GPI_SPI>, + <&gpi_dma0 1 5 QCOM_GPI_SPI>; + dma-names = "tx", "rx"; + status = "disabled"; }; @@ -1358,6 +1434,10 @@ i2c7: i2c@a80000 { reg = <0x0 0x00a80000 0x0 0x4000>; interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma1 0 0 QCOM_GPI_I2C>, + <&gpi_dma1 1 0 QCOM_GPI_I2C>; + dma-names = "tx", "rx"; + #address-cells = <1>; #size-cells = <0>; @@ -1377,6 +1457,10 @@ uart7: serial@a80000 { reg = <0x0 0x00a80000 0x0 0x4000>; interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma1 0 0 QCOM_GPI_SPI>, + <&gpi_dma1 1 0 QCOM_GPI_SPI>; + dma-names = "tx", "rx"; + status = "disabled"; }; @@ -1385,6 +1469,10 @@ i2c8: i2c@a84000 { reg = <0x0 0x00a84000 0x0 0x4000>; interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma1 0 1 QCOM_GPI_I2C>, + <&gpi_dma1 1 1 QCOM_GPI_I2C>; + dma-names = "tx", "rx"; + #address-cells = <1>; #size-cells = <0>; @@ -1404,6 +1492,10 @@ uart8: serial@a84000 { reg = <0x0 0x00a84000 0x0 0x4000>; interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma1 0 1 QCOM_GPI_SPI>, + <&gpi_dma1 1 1 QCOM_GPI_SPI>; + dma-names = "tx", "rx"; + status = "disabled"; }; @@ -1412,6 +1504,10 @@ i2c9: i2c@a88000 { reg = <0x0 0x00a88000 0x0 0x4000>; interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma1 0 2 QCOM_GPI_I2C>, + <&gpi_dma1 1 2 QCOM_GPI_I2C>; + dma-names = "tx", "rx"; + #address-cells = <1>; #size-cells = <0>; @@ -1431,6 +1527,10 @@ i2c10: i2c@a8c000 { reg = <0x0 0x00a8c000 0x0 0x4000>; interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma1 0 3 QCOM_GPI_I2C>, + <&gpi_dma1 1 3 QCOM_GPI_I2C>; + dma-names = "tx", "rx"; + #address-cells = <1>; #size-cells = <0>; @@ -1450,6 +1550,10 @@ i2c11: i2c@a90000 { reg = <0x0 0x00a90000 0x0 0x4000>; interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma1 0 4 QCOM_GPI_I2C>, + <&gpi_dma1 1 4 QCOM_GPI_I2C>; + dma-names = "tx", "rx"; + #address-cells = <1>; #size-cells = <0>; @@ -1469,6 +1573,10 @@ uart11: serial@a90000 { reg = <0x0 0x00a90000 0x0 0x4000>; interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma1 0 4 QCOM_GPI_SPI>, + <&gpi_dma1 1 4 QCOM_GPI_SPI>; + dma-names = "tx", "rx"; + status = "disabled"; }; @@ -1477,6 +1585,10 @@ i2c12: i2c@a94000 { reg = <0x0 0x00a94000 0x0 0x4000>; interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma1 0 5 QCOM_GPI_I2C>, + <&gpi_dma1 1 5 QCOM_GPI_I2C>; + dma-names = "tx", "rx"; + #address-cells = <1>; #size-cells = <0>; @@ -1496,6 +1608,10 @@ uart12: serial@a94000 { reg = <0x0 0x00a94000 0x0 0x4000>; interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma1 0 5 QCOM_GPI_SPI>, + <&gpi_dma1 1 5 QCOM_GPI_SPI>; + dma-names = "tx", "rx"; + status = "disabled"; }; @@ -1504,6 +1620,10 @@ i2c13: i2c@a98000 { reg = <0x0 0x00a98000 0x0 0x4000>; interrupts = <GIC_SPI 363 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma1 0 6 QCOM_GPI_I2C>, + <&gpi_dma1 1 6 QCOM_GPI_I2C>; + dma-names = "tx", "rx"; + #address-cells = <1>; #size-cells = <0>; @@ -1515,6 +1635,10 @@ spi13: spi@a98000 { reg = <0x0 0x00a98000 0x0 0x4000>; interrupts = <GIC_SPI 363 IRQ_TYPE_LEVEL_HIGH>; + dmas = <&gpi_dma1 0 6 QCOM_GPI_SPI>, + <&gpi_dma1 1 6 QCOM_GPI_SPI>; + dma-names = "tx", "rx"; + status = "disabled"; }; -- 2.47.3 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 2/2] arm64: dts: qcom: nord: wire up GPI DMA for QUP I2C/SPI engines 2026-09-21 14:46 ` [PATCH v2 2/2] arm64: dts: qcom: nord: wire up GPI DMA for QUP I2C/SPI engines Bartosz Golaszewski @ 2026-09-22 2:52 ` Shawn Guo 0 siblings, 0 replies; 11+ messages in thread From: Shawn Guo @ 2026-09-22 2:52 UTC (permalink / raw) To: Bartosz Golaszewski Cc: Shawn Guo, Bjorn Andersson, Konrad Dybcio, Abel Vesa, Rob Herring, Krzysztof Kozlowski, Conor Dooley, brgl, linux-arm-msm, devicetree, linux-kernel On Mon, Sep 21, 2026 at 04:46:59PM +0200, Bartosz Golaszewski wrote: > Add DMA phandles to I2C and SPI QUPv3 serial engine nodes. > > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> Reviewed-by: Shawn Guo <shengchao.guo@oss.qualcomm.com> ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2026-09-24 9:16 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2026-09-21 14:46 [PATCH v2 0/2] arm64: dts: qcom: nord: add GPI DMA nodes Bartosz Golaszewski 2026-09-21 14:46 ` [PATCH v2 1/2] arm64: dts: qcom: nord: add GPI DMA controller nodes Bartosz Golaszewski 2026-09-22 2:51 ` Shawn Guo 2026-09-22 5:34 ` Mukesh Savaliya 2026-09-22 8:24 ` Bartosz Golaszewski 2026-09-23 12:40 ` Konrad Dybcio 2026-09-24 8:50 ` Mukesh Savaliya 2026-09-24 8:55 ` Bartosz Golaszewski 2026-09-24 9:16 ` Konrad Dybcio 2026-09-21 14:46 ` [PATCH v2 2/2] arm64: dts: qcom: nord: wire up GPI DMA for QUP I2C/SPI engines Bartosz Golaszewski 2026-09-22 2:52 ` Shawn Guo
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®