diff mbox series

[2/3] arm64: dts: qcom: sm8150: add iommus to qups

Message ID 20210310163024.393578-3-caleb@connolly.tech
State New
Headers show
Series [1/3] arm64: dts: qcom: sm8150: add other QUP nodes | expand

Commit Message

Caleb Connolly March 10, 2021, 4:31 p.m. UTC
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 <caleb@connolly.tech>
---
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(+)

Comments

Bhupesh Sharma March 15, 2021, 7:07 p.m. UTC | #1
Hello Caleb,

Thanks for the patch. Some nitpicks inline:

On Wed, 10 Mar 2021 at 22:02, Caleb Connolly <caleb@connolly.tech> wrote:
>

> 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 <caleb@connolly.tech>

> ---

> 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>;


I think we also need to add the new iommu property to the binding documentation?
<https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/soc/qcom/qcom%2Cgeni-se.yaml>

Thanks,
Bhupesh

>                         #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

>

>
Vinod Koul March 16, 2021, 6:15 a.m. UTC | #2
On 10-03-21, 16:31, Caleb Connolly wrote:
> 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.

Why not squash this to patch 1..?

> 
> Signed-off-by: Caleb Connolly <caleb@connolly.tech>
> ---
> 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
>
Caleb Connolly March 20, 2021, 5:16 p.m. UTC | #3
Hi Vinod,

On 16/03/2021 6:15 am, Vinod Koul wrote:
> On 10-03-21, 16:31, Caleb Connolly wrote:

>> 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.

> Why not squash this to patch 1..?


I thought it made more sense to separate these patches to keep the 
history a bit cleaner. I can squash them if you'd prefer.

     Caleb

>

>> Signed-off-by: Caleb Connolly <caleb@connolly.tech>

>> ---

>> 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

>>

> --

> ~Vinod
Vinod Koul March 22, 2021, 6:01 a.m. UTC | #4
On 20-03-21, 17:16, Caleb Connolly wrote:
> Hi Vinod,

> 

> On 16/03/2021 6:15 am, Vinod Koul wrote:

> > On 10-03-21, 16:31, Caleb Connolly wrote:

> >> 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.

> > Why not squash this to patch 1..?

> 

> I thought it made more sense to separate these patches to keep the 

> history a bit cleaner. I can squash them if you'd prefer.


The nodes should be typically added in a single patch, maybe Bjorn is
fine with this ;-)

-- 
~Vinod
diff mbox series

Patch

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;