Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d3b594b9 authored by Saravana Kannan's avatar Saravana Kannan
Browse files

ARM: dts: msm: Change BIMC BWMON interrupts to level triggered



Since the BIMC BWMON IRQ is a shared interrupt across the ports, it needs
to be treated as a level triggered IRQ to avoid races.

Otherwise, the following race can happen:
* IRQ arrives
* Port 0 checks if it caused the IRQ.
* Decides it did not and doesn't do anything.
* Port 1 checks if it caused the IRQ.
* Decides it did cause it and is processing it.
* Port 0 now triggers the IRQ.
* Port 1 handler clear its IRQ source.
* IRQ line remains high throughout this period.
* All IRQ handlers are done processing the rising edge triggered IRQ and
  no more work is done.

If this is instead handled as a level triggered IRQ, then the handlers will
be called again and the Port 0 handler would process its IRQ and then clear
its IRQ source and the IRQ line would go low.

Signed-off-by: default avatarSaravana Kannan <skannan@codeaurora.org>
Change-Id: Ica07f496ee56e67ab8a357e612ff425418869d60
parent e83b06b0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -628,7 +628,7 @@
		compatible = "qcom,bimc-bwmon";
		reg = <0x408000 0x300>, <0x401000 0x200>;
		reg-names = "base", "global_base";
		interrupts = <0 183 1>;
		interrupts = <0 183 4>;
		qcom,mport = <0>;
		qcom,target-dev = <&cpubw>;
	};
+1 −1
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@
		compatible = "qcom,bimc-bwmon";
		reg = <0x00410000 0x300>, <0x00401000 0x200>;
		reg-names = "base", "global_base";
		interrupts = <0 183 1>;
		interrupts = <0 183 4>;
		qcom,mport = <2>;
		qcom,target-dev = <&gpubw>;
	};
+1 −1
Original line number Diff line number Diff line
@@ -38,7 +38,7 @@
		compatible = "qcom,bimc-bwmon";
		reg = <0xfc390000 0x300>, <0xfc381000 0x200>;
		reg-names = "base", "global_base";
		interrupts = <0 183 1>;
		interrupts = <0 183 4>;
		qcom,mport = <2>;
		qcom,target-dev = <&gpubw>;
	};
+1 −1
Original line number Diff line number Diff line
@@ -1739,7 +1739,7 @@
		compatible = "qcom,bimc-bwmon";
		reg = <0xfc388000 0x300>, <0xfc381000 0x200>;
		reg-names = "base", "global_base";
		interrupts = <0 183 1>;
		interrupts = <0 183 4>;
		qcom,mport = <0>;
		qcom,target-dev = <&cpubw>;
	};