* [PATCH v4 0/2] arm64: dts: qcom: nord: add GPI DMA nodes
@ 2026-11-13 9:38 Bartosz Golaszewski
2026-11-13 9:38 ` [PATCH v4 1/2] arm64: dts: qcom: nord: add GPI DMA controller nodes Bartosz Golaszewski
2026-11-13 9:38 ` [PATCH v4 2/2] arm64: dts: qcom: nord: wire up GPI DMA for QUP I2C/SPI engines Bartosz Golaszewski
0 siblings, 2 replies; 4+ messages in thread
From: Bartosz Golaszewski @ 2026-11-13 9:38 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,
Shawn Guo, Mukesh Kumar Savaliya, Konrad Dybcio, Abel Vesa
Add GPI DMA nodes for Nord and reference them from the QUPv3 I2C/SPI
nodes.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
---
Changes in v4:
- Rebase on top of current linux-next and resolve conflicts
- Pick up tags
- Link to v3: https://patch.msgid.link/20260924-nord-gpi-dts-v3-0-74a85134699f@oss.qualcomm.com
Changes in v3:
- Enable GPI nodes by default
- Link to v2: https://patch.msgid.link/20260921-nord-gpi-dts-v2-0-4f297c983b94@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 | 188 +++++++++++++++++++++++++++++++++++++
1 file changed, 188 insertions(+)
---
base-commit: 6d582d78fad9d828e575ca0cdcff8ea47a77220b
change-id: 20260916-nord-gpi-dts-40456500b7b1
Best regards,
--
Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v4 1/2] arm64: dts: qcom: nord: add GPI DMA controller nodes
2026-11-13 9:38 [PATCH v4 0/2] arm64: dts: qcom: nord: add GPI DMA nodes Bartosz Golaszewski
@ 2026-11-13 9:38 ` Bartosz Golaszewski
2026-11-13 9:38 ` [PATCH v4 2/2] arm64: dts: qcom: nord: wire up GPI DMA for QUP I2C/SPI engines Bartosz Golaszewski
1 sibling, 0 replies; 4+ messages in thread
From: Bartosz Golaszewski @ 2026-11-13 9:38 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,
Shawn Guo, Mukesh Kumar Savaliya, Konrad Dybcio, Abel Vesa
Add GPI DMA controller nodes for all three QUPv3 engines.
Reviewed-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
Reviewed-by: Mukesh Kumar Savaliya <mukesh.savaliya@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/nord.dtsi | 64 ++++++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/nord.dtsi b/arch/arm64/boot/dts/qcom/nord.dtsi
index 617e5312f4c4d8a5c4f0ec7a024378bb38d5e252..68787db708f613d61c4b88762bc31259304e7f71 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/firmware/qcom,scm.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/mailbox/qcom-ipcc.h>
@@ -1036,6 +1037,27 @@ 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>;
+ };
+
qupv3_2: geniqup@8c0000 {
compatible = "qcom,geni-se-qup";
reg = <0x0 0x008c0000 0x0 0x2000>;
@@ -1234,6 +1256,27 @@ 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>;
+ };
+
qupv3_0: geniqup@9c0000 {
compatible = "qcom,geni-se-qup";
reg = <0x0 0x009c0000 0x0 0x2000>;
@@ -1405,6 +1448,27 @@ 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>;
+ };
+
qupv3_1: geniqup@ac0000 {
compatible = "qcom,geni-se-qup";
reg = <0x0 0x00ac0000 0x0 0x2000>;
--
2.47.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v4 2/2] arm64: dts: qcom: nord: wire up GPI DMA for QUP I2C/SPI engines
2026-11-13 9:38 [PATCH v4 0/2] arm64: dts: qcom: nord: add GPI DMA nodes Bartosz Golaszewski
2026-11-13 9:38 ` [PATCH v4 1/2] arm64: dts: qcom: nord: add GPI DMA controller nodes Bartosz Golaszewski
@ 2026-11-13 9:38 ` Bartosz Golaszewski
2026-11-13 9:47 ` sashiko-bot
1 sibling, 1 reply; 4+ messages in thread
From: Bartosz Golaszewski @ 2026-11-13 9:38 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,
Shawn Guo, Abel Vesa
Add DMA phandles to I2C and SPI QUPv3 serial engine nodes.
Reviewed-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
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 68787db708f613d61c4b88762bc31259304e7f71..818f6054bcec8b020f25b25a774191942e98edbe 100644
--- a/arch/arm64/boot/dts/qcom/nord.dtsi
+++ b/arch/arm64/boot/dts/qcom/nord.dtsi
@@ -1071,6 +1071,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>;
@@ -1098,6 +1102,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>;
@@ -1125,6 +1133,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>;
@@ -1152,6 +1164,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>;
@@ -1179,6 +1195,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>;
@@ -1206,6 +1226,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>;
@@ -1233,6 +1257,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>;
@@ -1244,6 +1272,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";
};
@@ -1290,6 +1322,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>;
@@ -1309,6 +1345,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";
};
@@ -1317,6 +1357,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>;
@@ -1336,6 +1380,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";
};
@@ -1344,6 +1392,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>;
@@ -1363,6 +1415,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";
};
@@ -1371,6 +1427,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>;
@@ -1390,6 +1450,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";
};
@@ -1398,6 +1462,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>;
@@ -1425,6 +1493,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>;
@@ -1436,6 +1508,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";
};
@@ -1482,6 +1558,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>;
@@ -1501,6 +1581,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";
};
@@ -1509,6 +1593,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>;
@@ -1528,6 +1616,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";
};
@@ -1536,6 +1628,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>;
@@ -1555,6 +1651,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>;
@@ -1574,6 +1674,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>;
@@ -1593,6 +1697,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";
};
@@ -1601,6 +1709,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>;
@@ -1620,6 +1732,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";
};
@@ -1628,6 +1744,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>;
@@ -1639,6 +1759,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 related [flat|nested] 4+ messages in thread
* Re: [PATCH v4 2/2] arm64: dts: qcom: nord: wire up GPI DMA for QUP I2C/SPI engines
2026-11-13 9:38 ` [PATCH v4 2/2] arm64: dts: qcom: nord: wire up GPI DMA for QUP I2C/SPI engines Bartosz Golaszewski
@ 2026-11-13 9:47 ` sashiko-bot
0 siblings, 0 replies; 4+ messages in thread
From: sashiko-bot @ 2026-11-13 9:47 UTC (permalink / raw)
To: Bartosz Golaszewski; +Cc: devicetree, robh, conor+dt
Thank you for your contribution! Sashiko AI review found 2 potential
issues to consider:
- [Medium] arm64: dts: qcom: nord: QCOM_GPI_SPI DMA properties added to
UART nodes
- [Medium] arm64: dts: qcom: nord: missing GPI DMA properties on spi4
and spi14..spi19
--
commit 9c6fd2386259cb23b0a0394993d22bac655549bb
Author: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
arm64: dts: qcom: nord: wire up GPI DMA for QUP I2C/SPI engines
This commit adds GPI DMA channel phandles and dma-names properties to QUPv3
I2C and SPI serial engine nodes in nord.dtsi.
> diff --git a/arch/arm64/boot/dts/qcom/nord.dtsi b/arch/arm64/boot/dts/qcom/nord.dtsi
> index 68787db708f61..818f6054bcec8 100644
> --- a/arch/arm64/boot/dts/qcom/nord.dtsi
> +++ b/arch/arm64/boot/dts/qcom/nord.dtsi
[ ... ]
> @@ -1244,6 +1272,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";
> };
>
[Severity: Medium]
Were the GPI DMA properties for spi14 through spi19 (on gpi_dma2 SE 0..5)
and spi4 (on gpi_dma0 SE 4) accidentally omitted?
All seven I2C nodes in qupv3_2 (i2c14..i2c20) and all six I2C nodes in
qupv3_0 (i2c0..i2c5) are wired up, but among the SPI nodes in qupv3_2 only
spi20 receives gpi_dma2 channels, and spi4 in qupv3_0 is also skipped. In
particular, spi16 (spi@888000) is enabled on Nord Ride and Nord RRD, so
spi_geni_grab_gpi_chan() will fail to acquire the tx and rx DMA channels
when FIFO_IF_DISABLE is set and fall back to FIFO mode.
[ ... ]
> @@ -1309,6 +1345,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";
> };
>
[Severity: Medium]
As reported by Konrad Dybcio on v3 [1], should these QCOM_GPI_SPI DMA
channels be added to spi0..spi3, spi7..spi8, and spi11..spi12 instead of
their sibling UART nodes (uart0..uart3, uart7..uart8, and uart11..uart12)?
Those eight SPI nodes are left without GPI DMA channels, causing
spi_geni_grab_gpi_chan() to fail to acquire tx and rx DMA channels when
FIFO_IF_DISABLE is set, while the UART nodes gain dmas and dma-names
properties that are not permitted by the GENI UART bindings.
[1] https://lore.kernel.org/r/6e91b34f-367e-4835-a7ce-e899953a5bd1@oss.qualcomm.com
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261113-nord-gpi-dts-v4-0-e4a1510687c0@oss.qualcomm.com?part=2
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-11-13 9:47 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-13 9:38 [PATCH v4 0/2] arm64: dts: qcom: nord: add GPI DMA nodes Bartosz Golaszewski
2026-11-13 9:38 ` [PATCH v4 1/2] arm64: dts: qcom: nord: add GPI DMA controller nodes Bartosz Golaszewski
2026-11-13 9:38 ` [PATCH v4 2/2] arm64: dts: qcom: nord: wire up GPI DMA for QUP I2C/SPI engines Bartosz Golaszewski
2026-11-13 9:47 ` sashiko-bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox