Skip to contentSkip to conversation

arm64: dts: qcom: msm8916: Enable DMA by default

PATCH Applied Stephan Gerhold 3 participants 6 messages Jan 7, 2023 – Jan 11, 2023

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

cover arm64: dts: qcom: msm8916: Enable DMA by default

Add the DMA channels for all I2C controllers in msm8916.dtsi and enable the DMA controller by default (this is necessary because otherwise the i2c-qup driver will no longer probe with the DMAs added).

Stephan Gerhold (2):
arm64: dts: qcom: msm8916: Enable blsp_dma by default
arm64: dts: qcom: msm8916: Add DMA for all I2C controllers

 arch/arm64/boot/dts/qcom/apq8016-sbc.dts |  4 ----
 arch/arm64/boot/dts/qcom/msm8916.dtsi    | 13 ++++++++++++-
 2 files changed, 12 insertions(+), 5 deletions(-)
Signature · 1 line
2.39.0
#1 lore raw

PATCH 1/2 arm64: dts: qcom: msm8916: Enable blsp_dma by default

Adding the "dmas" to the I2C controllers prevents probing them if blsp_dma is disabled (infinite probe deferral). Avoid this by enabling blsp_dma by default - it's an integral part of the SoC that is almost always used (even if just for UART).

---
 arch/arm64/boot/dts/qcom/apq8016-sbc.dts | 4 ----
 arch/arm64/boot/dts/qcom/msm8916.dtsi    | 1 -
 2 files changed, 5 deletions(-)
arch/arm64/boot/dts/qcom/apq8016-sbc.dts +0 -4
index ef5b39ba1238..c52d79a55d80 100644
@@ -169,10 +169,6 @@ led@6 {
 	};
 };
 
-&blsp_dma {
-	status = "okay";
-};
-
 &blsp_i2c2 {
 	/* On Low speed expansion */
 	status = "okay";
arch/arm64/boot/dts/qcom/msm8916.dtsi +0 -1
index ffb4ce8935b3..98da982548a1 100644
@@ -1522,7 +1522,6 @@ blsp_dma: dma-controller@7884000 {
 			clock-names = "bam_clk";
 			#dma-cells = <1>;
 			qcom,ee = <0>;
-			status = "disabled";
 		};
 
 		blsp1_uart1: serial@78af000 {
Signature · 1 line
2.39.0
Reviewed-by on v1 1/2
#2 lore raw

Re: [PATCH 1/2] arm64: dts: qcom: msm8916: Enable blsp_dma by default

Quoted 7 lines · Stephan Gerhold

Adding the "dmas" to the I2C controllers prevents probing them if blsp_dma is disabled (infinite probe deferral). Avoid this by enabling blsp_dma by default - it's an integral part of the SoC that is almost always used (even if just for UART).

---

Konrad

Quoted 31 lines
 arch/arm64/boot/dts/qcom/apq8016-sbc.dts | 4 ----
 arch/arm64/boot/dts/qcom/msm8916.dtsi    | 1 -
 2 files changed, 5 deletions(-)
arch/arm64/boot/dts/qcom/apq8016-sbc.dts +0 -4
index ef5b39ba1238..c52d79a55d80 100644
@@ -169,10 +169,6 @@ led@6 {
 	};
 };
 
-&blsp_dma {
-	status = "okay";
-};
-
 &blsp_i2c2 {
 	/* On Low speed expansion */
 	status = "okay";
arch/arm64/boot/dts/qcom/msm8916.dtsi +0 -1
index ffb4ce8935b3..98da982548a1 100644
@@ -1522,7 +1522,6 @@ blsp_dma: dma-controller@7884000 {
 			clock-names = "bam_clk";
 			#dma-cells = <1>;
 			qcom,ee = <0>;
-			status = "disabled";
 		};
 
 		blsp1_uart1: serial@78af000 {
#3 lore raw

PATCH 2/2 arm64: dts: qcom: msm8916: Add DMA for all I2C controllers

In reply to Stephan Gerhold

i2c-qup allows using DMA to speed up larger transfers. In msm8916.dtsi the DMA channels are already assigned to the SPI controllers but missing for I2C. Add them there as well.

This also fixes confusing errors in dmesg for each I2C controller:
i2c_qup 78b6000.i2c: tx channel not available

---
 arch/arm64/boot/dts/qcom/msm8916.dtsi | 12 ++++++++++++
 1 file changed, 12 insertions(+)
arch/arm64/boot/dts/qcom/msm8916.dtsi +12 -0
index 98da982548a1..daece6b9e932 100644
@@ -1559,6 +1559,8 @@ blsp_i2c1: i2c@78b5000 {
 			clocks = <&gcc GCC_BLSP1_QUP1_I2C_APPS_CLK>,
 				 <&gcc GCC_BLSP1_AHB_CLK>;
 			clock-names = "core", "iface";
+			dmas = <&blsp_dma 4>, <&blsp_dma 5>;
+			dma-names = "tx", "rx";
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&i2c1_default>;
 			pinctrl-1 = <&i2c1_sleep>;
@@ -1591,6 +1593,8 @@ blsp_i2c2: i2c@78b6000 {
 			clocks = <&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>,
 				 <&gcc GCC_BLSP1_AHB_CLK>;
 			clock-names = "core", "iface";
+			dmas = <&blsp_dma 6>, <&blsp_dma 7>;
+			dma-names = "tx", "rx";
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&i2c2_default>;
 			pinctrl-1 = <&i2c2_sleep>;
@@ -1623,6 +1627,8 @@ blsp_i2c3: i2c@78b7000 {
 			clocks = <&gcc GCC_BLSP1_QUP3_I2C_APPS_CLK>,
 				 <&gcc GCC_BLSP1_AHB_CLK>;
 			clock-names = "core", "iface";
+			dmas = <&blsp_dma 8>, <&blsp_dma 9>;
+			dma-names = "tx", "rx";
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&i2c3_default>;
 			pinctrl-1 = <&i2c3_sleep>;
@@ -1655,6 +1661,8 @@ blsp_i2c4: i2c@78b8000 {
 			clocks = <&gcc GCC_BLSP1_QUP4_I2C_APPS_CLK>,
 				 <&gcc GCC_BLSP1_AHB_CLK>;
 			clock-names = "core", "iface";
+			dmas = <&blsp_dma 10>, <&blsp_dma 11>;
+			dma-names = "tx", "rx";
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&i2c4_default>;
 			pinctrl-1 = <&i2c4_sleep>;
@@ -1687,6 +1695,8 @@ blsp_i2c5: i2c@78b9000 {
 			clocks = <&gcc GCC_BLSP1_QUP5_I2C_APPS_CLK>,
 				 <&gcc GCC_BLSP1_AHB_CLK>;
 			clock-names = "core", "iface";
+			dmas = <&blsp_dma 12>, <&blsp_dma 13>;
+			dma-names = "tx", "rx";
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&i2c5_default>;
 			pinctrl-1 = <&i2c5_sleep>;
@@ -1719,6 +1729,8 @@ blsp_i2c6: i2c@78ba000 {
 			clocks = <&gcc GCC_BLSP1_QUP6_I2C_APPS_CLK>,
 				 <&gcc GCC_BLSP1_AHB_CLK>;
 			clock-names = "core", "iface";
+			dmas = <&blsp_dma 14>, <&blsp_dma 15>;
+			dma-names = "tx", "rx";
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&i2c6_default>;
 			pinctrl-1 = <&i2c6_sleep>;
Signature · 1 line
2.39.0
Reviewed-by on v1 2/2
#4 lore raw

Re: [PATCH 2/2] arm64: dts: qcom: msm8916: Add DMA for all I2C controllers

Quoted 9 lines · Stephan Gerhold

i2c-qup allows using DMA to speed up larger transfers. In msm8916.dtsi the DMA channels are already assigned to the SPI controllers but missing for I2C. Add them there as well.

This also fixes confusing errors in dmesg for each I2C controller:
i2c_qup 78b6000.i2c: tx channel not available

---

Konrad

Quoted 61 lines
 arch/arm64/boot/dts/qcom/msm8916.dtsi | 12 ++++++++++++
 1 file changed, 12 insertions(+)
arch/arm64/boot/dts/qcom/msm8916.dtsi +12 -0
index 98da982548a1..daece6b9e932 100644
@@ -1559,6 +1559,8 @@ blsp_i2c1: i2c@78b5000 {
 			clocks = <&gcc GCC_BLSP1_QUP1_I2C_APPS_CLK>,
 				 <&gcc GCC_BLSP1_AHB_CLK>;
 			clock-names = "core", "iface";
+			dmas = <&blsp_dma 4>, <&blsp_dma 5>;
+			dma-names = "tx", "rx";
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&i2c1_default>;
 			pinctrl-1 = <&i2c1_sleep>;
@@ -1591,6 +1593,8 @@ blsp_i2c2: i2c@78b6000 {
 			clocks = <&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>,
 				 <&gcc GCC_BLSP1_AHB_CLK>;
 			clock-names = "core", "iface";
+			dmas = <&blsp_dma 6>, <&blsp_dma 7>;
+			dma-names = "tx", "rx";
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&i2c2_default>;
 			pinctrl-1 = <&i2c2_sleep>;
@@ -1623,6 +1627,8 @@ blsp_i2c3: i2c@78b7000 {
 			clocks = <&gcc GCC_BLSP1_QUP3_I2C_APPS_CLK>,
 				 <&gcc GCC_BLSP1_AHB_CLK>;
 			clock-names = "core", "iface";
+			dmas = <&blsp_dma 8>, <&blsp_dma 9>;
+			dma-names = "tx", "rx";
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&i2c3_default>;
 			pinctrl-1 = <&i2c3_sleep>;
@@ -1655,6 +1661,8 @@ blsp_i2c4: i2c@78b8000 {
 			clocks = <&gcc GCC_BLSP1_QUP4_I2C_APPS_CLK>,
 				 <&gcc GCC_BLSP1_AHB_CLK>;
 			clock-names = "core", "iface";
+			dmas = <&blsp_dma 10>, <&blsp_dma 11>;
+			dma-names = "tx", "rx";
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&i2c4_default>;
 			pinctrl-1 = <&i2c4_sleep>;
@@ -1687,6 +1695,8 @@ blsp_i2c5: i2c@78b9000 {
 			clocks = <&gcc GCC_BLSP1_QUP5_I2C_APPS_CLK>,
 				 <&gcc GCC_BLSP1_AHB_CLK>;
 			clock-names = "core", "iface";
+			dmas = <&blsp_dma 12>, <&blsp_dma 13>;
+			dma-names = "tx", "rx";
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&i2c5_default>;
 			pinctrl-1 = <&i2c5_sleep>;
@@ -1719,6 +1729,8 @@ blsp_i2c6: i2c@78ba000 {
 			clocks = <&gcc GCC_BLSP1_QUP6_I2C_APPS_CLK>,
 				 <&gcc GCC_BLSP1_AHB_CLK>;
 			clock-names = "core", "iface";
+			dmas = <&blsp_dma 14>, <&blsp_dma 15>;
+			dma-names = "tx", "rx";
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&i2c6_default>;
 			pinctrl-1 = <&i2c6_sleep>;
maintainer Applied
#5 lore raw
In reply to Stephan Gerhold
Quoted 9 lines · Stephan Gerhold

Add the DMA channels for all I2C controllers in msm8916.dtsi and enable the DMA controller by default (this is necessary because otherwise the i2c-qup driver will no longer probe with the DMAs added).

Stephan Gerhold (2):
arm64: dts: qcom: msm8916: Enable blsp_dma by default
arm64: dts: qcom: msm8916: Add DMA for all I2C controllers

[...]

Applied, thanks!

[1/2] arm64: dts: qcom: msm8916: Enable blsp_dma by default

      commit: 0154d3594af3c198532ac7b4ab70f50fb5207a15
[2/2] arm64: dts: qcom: msm8916: Add DMA for all I2C controllers
      commit: 389d2c9926b3a81791e23a25fc1b85928139d40b

Best regards,

Signature · 1 line
Bjorn Andersson <[email protected]>