Hook up the SMMU for doing DMA over i2c. Some peripherals like
touchscreens easily exceed 32-bytes per transfer, causing errors and
lockups without this.

Signed-off-by: Caleb Connolly <[email protected]>
---
Fixes i2c on the OnePlus 7, without this touching the screen with more
than 4 fingers causes the device to lock up and reboot.
---
 arch/arm64/boot/dts/qcom/sm8150.dtsi | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sm8150.dtsi 
b/arch/arm64/boot/dts/qcom/sm8150.dtsi
index 03e05d98daf2..543417d74216 100644
--- a/arch/arm64/boot/dts/qcom/sm8150.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8150.dtsi
@@ -583,6 +583,7 @@ qupv3_id_0: geniqup@8c0000 {
                        clock-names = "m-ahb", "s-ahb";
                        clocks = <&gcc GCC_QUPV3_WRAP_0_M_AHB_CLK>,
                                 <&gcc GCC_QUPV3_WRAP_0_S_AHB_CLK>;
+                       iommus = <&apps_smmu 0xc3 0x0>;
                        #address-cells = <2>;
                        #size-cells = <2>;
                        ranges;
@@ -595,6 +596,7 @@ qupv3_id_1: geniqup@ac0000 {
                        clock-names = "m-ahb", "s-ahb";
                        clocks = <&gcc GCC_QUPV3_WRAP_1_M_AHB_CLK>,
                                 <&gcc GCC_QUPV3_WRAP_1_S_AHB_CLK>;
+                       iommus = <&apps_smmu 0x603 0x0>;
                        #address-cells = <2>;
                        #size-cells = <2>;
                        ranges;
@@ -617,6 +619,7 @@ qupv3_id_2: geniqup@cc0000 {
                        clock-names = "m-ahb", "s-ahb";
                        clocks = <&gcc GCC_QUPV3_WRAP_2_M_AHB_CLK>,
                                 <&gcc GCC_QUPV3_WRAP_2_S_AHB_CLK>;
+                       iommus = <&apps_smmu 0x7a3 0x0>;
                        #address-cells = <2>;
                        #size-cells = <2>;
                        ranges;
-- 
2.29.2


Reply via email to