arm64: dts: qcom: msm8916: Enable DMA by default
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
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
@@ -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
@@ -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
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_dmais disabled (infinite probe deferral). Avoid this by enablingblsp_dmaby default - it's an integral part of the SoC that is almost always used (even if just for UART).Signed-off-by Stephan Gerhold <[email protected]>---
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@@ -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@@ -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 {
PATCH 2/2 arm64: dts: qcom: msm8916: Add DMA for all I2C controllers
In reply to Stephan Gerholdi2c-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
@@ -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
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.dtsithe 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_qup78b6000.i2c: tx channel not availableSigned-off-by Stephan Gerhold <[email protected]>---
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@@ -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>;
Quoted 9 lines · Stephan Gerhold
Add the DMA channels for all I2C controllers in
msm8916.dtsiand 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: Enableblsp_dmaby 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: 389d2c9926b3a81791e23a25fc1b85928139d40bBest regards,
Signature · 1 line
Bjorn Andersson <[email protected]>