OSDN Git Service

ARM: dts: Improve omap l4per idling with wlcore edge sensitive interrupt
authorTony Lindgren <tony@atomide.com>
Tue, 3 Jul 2018 06:57:20 +0000 (23:57 -0700)
committerTony Lindgren <tony@atomide.com>
Tue, 3 Jul 2018 06:57:20 +0000 (23:57 -0700)
The wl1835mod.pdf data sheet says this pretty clearly for WL_IRQ line:

"WLAN SDIO out-of-band interrupt line. Set to rising edge (active high)
by default."

And it seems this interrupt can be optionally configured to use falling
edge too since commit bd763482c82e ("wl18xx: wlan_irq: support platform
dependent interrupt types").

On omap4, if the wlcore interrupt is configured as level instead of edge,
L4PER will stop doing hardware based idling after ifconfig wlan0 down is
done and the WL_EN line is pulled down.

The symptoms show up with L4PER status registers no longer showing the
IDLEST bits as 2 but as 0 for all the active GPIO banks and for
L4PER_CLKCTRL. Also the l4per_pwrdm RET count stops increasing in
the /sys/kernel/debug/pm_debug/count.

While there is also probably a GPIO related issue that needs to be
still fixed, this change gets us to the point where we can have L4PER
idling.

I'm guessing wlcore was at some point configured to use level interrupts
because of edge handling issues in gpio-omap. However, with the recent
fixes to gpio-omap the edge interrupts seem to be working just fine.

Let's change it for all omap boards with wlcore interrupt set as level.

Cc: Dave Gerlach <d-gerlach@ti.com>
Cc: Eyal Reizer <eyalr@ti.com>
Cc: Grygorii Strashko <grygorii.strashko@ti.com>
Cc: Kalle Valo <kvalo@codeaurora.org>
Cc: Nishanth Menon <nm@ti.com>
Cc: Tero Kristo <t-kristo@ti.com>
[tony@atomide.com updated comments a bit for gpio issue]
Signed-off-by: Tony Lindgren <tony@atomide.com>
17 files changed:
arch/arm/boot/dts/am335x-baltos.dtsi
arch/arm/boot/dts/am335x-evm.dts
arch/arm/boot/dts/am335x-evmsk.dts
arch/arm/boot/dts/am437x-gp-evm.dts
arch/arm/boot/dts/logicpd-som-lv.dtsi
arch/arm/boot/dts/logicpd-torpedo-37xx-devkit.dts
arch/arm/boot/dts/omap3-cm-t3517.dts
arch/arm/boot/dts/omap3-cm-t3730.dts
arch/arm/boot/dts/omap3-evm-common.dtsi
arch/arm/boot/dts/omap3-igep0020-rev-f.dts
arch/arm/boot/dts/omap3-igep0030-rev-g.dts
arch/arm/boot/dts/omap3-zoom3.dts
arch/arm/boot/dts/omap4-droid4-xt894.dts
arch/arm/boot/dts/omap4-panda-common.dtsi
arch/arm/boot/dts/omap4-sdp.dts
arch/arm/boot/dts/omap4-var-som-om44-wlan.dtsi
arch/arm/boot/dts/omap5-board-common.dtsi

index ed7a5a3..8c6fc41 100644 (file)
                compatible = "ti,wl1835";
                reg = <2>;
                interrupt-parent = <&gpio3>;
-               interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
+               interrupts = <7 IRQ_TYPE_EDGE_RISING>;
        };
 };
 
index 1356fd6..c87d012 100644 (file)
                compatible = "ti,wl1835";
                reg = <2>;
                interrupt-parent = <&gpio3>;
-               interrupts = <17 IRQ_TYPE_LEVEL_HIGH>;
+               interrupts = <17 IRQ_TYPE_EDGE_RISING>;
        };
 };
 
index 0c096a7..bf1a40e 100644 (file)
                compatible = "ti,wl1271";
                reg = <2>;
                interrupt-parent = <&gpio0>;
-               interrupts = <31 IRQ_TYPE_LEVEL_HIGH>; /* gpio 31 */
+               interrupts = <31 IRQ_TYPE_EDGE_RISING>; /* gpio 31 */
                ref-clock-frequency = <38400000>;
        };
 };
index 60414b1..5b97c20 100644 (file)
                compatible = "ti,wl1835";
                reg = <2>;
                interrupt-parent = <&gpio1>;
-               interrupts = <23 IRQ_TYPE_LEVEL_HIGH>;
+               interrupts = <23 IRQ_TYPE_EDGE_RISING>;
        };
 };
 
index 3bb28c0..ac34333 100644 (file)
                compatible = "ti,wl1273";
                reg = <2>;
                interrupt-parent = <&gpio1>;
-               interrupts = <2 IRQ_TYPE_LEVEL_HIGH>; /* gpio 2 */
+               interrupts = <2 IRQ_TYPE_EDGE_RISING>; /* gpio 2 */
                ref-clock-frequency = <26000000>;
        };
 };
index 234afd6..9d5d53f 100644 (file)
@@ -48,7 +48,7 @@
                compatible = "ti,wl1283";
                reg = <2>;
                interrupt-parent = <&gpio5>;
-               interrupts = <24 IRQ_TYPE_LEVEL_HIGH>; /* gpio 152 */
+               interrupts = <24 IRQ_TYPE_EDGE_RISING>; /* gpio 152 */
                ref-clock-frequency = <26000000>;
                tcxo-clock-frequency = <26000000>;
        };
index 4994e33..632f52e 100644 (file)
                compatible = "ti,wl1271";
                reg = <2>;
                interrupt-parent = <&gpio5>;
-               interrupts = <17 IRQ_TYPE_LEVEL_HIGH>; /* gpio 145 */
+               interrupts = <17 IRQ_TYPE_EDGE_RISING>; /* gpio 145 */
                ref-clock-frequency = <38400000>;
        };
 };
index 8c63ac5..6e944df 100644 (file)
@@ -81,7 +81,7 @@
                compatible = "ti,wl1271";
                reg = <2>;
                interrupt-parent = <&gpio5>;
-               interrupts = <8 IRQ_TYPE_LEVEL_HIGH>; /* gpio 136 */
+               interrupts = <8 IRQ_TYPE_EDGE_RISING>; /* gpio 136 */
                ref-clock-frequency = <38400000>;
        };
 };
index ee64191..4c1227d 100644 (file)
                compatible = "ti,wl1271";
                reg = <2>;
                interrupt-parent = <&gpio5>;
-               interrupts = <21 IRQ_TYPE_LEVEL_HIGH>; /* gpio 149 */
+               interrupts = <21 IRQ_TYPE_EDGE_RISING>; /* gpio 149 */
                ref-clock-frequency = <38400000>;
        };
 };
index 321c2b7..285681d 100644 (file)
@@ -49,6 +49,6 @@
                compatible = "ti,wl1835";
                reg = <2>;
                interrupt-parent = <&gpio6>;
-               interrupts = <17 IRQ_TYPE_LEVEL_HIGH>; /* gpio 177 */
+               interrupts = <17 IRQ_TYPE_EDGE_RISING>; /* gpio 177 */
        };
 };
index 76dc088..1adc73b 100644 (file)
@@ -71,6 +71,6 @@
                compatible = "ti,wl1835";
                reg = <2>;
                interrupt-parent = <&gpio5>;
-               interrupts = <8 IRQ_TYPE_LEVEL_HIGH>; /* gpio 136 */
+               interrupts = <8 IRQ_TYPE_EDGE_RISING>; /* gpio 136 */
        };
 };
index 96d0301..aac27a4 100644 (file)
                compatible = "ti,wl1271";
                reg = <2>;
                interrupt-parent = <&gpio6>;
-               interrupts = <2 IRQ_TYPE_LEVEL_HIGH>; /* gpio 162 */
+               interrupts = <2 IRQ_TYPE_EDGE_RISING>; /* gpio 162 */
                ref-clock-frequency = <26000000>;
        };
 };
index bdf73cb..4f00559 100644 (file)
                compatible = "ti,wl1285", "ti,wl1283";
                reg = <2>;
                interrupt-parent = <&gpio4>;
-               interrupts = <4 IRQ_TYPE_LEVEL_HIGH>; /* gpio100 */
+               interrupts = <4 IRQ_TYPE_EDGE_RISING>; /* gpio100 */
                ref-clock-frequency = <26000000>;
                tcxo-clock-frequency = <26000000>;
        };
index 5501d1b..563b47c 100644 (file)
                compatible = "ti,wl1271";
                reg = <2>;
                interrupt-parent = <&gpio2>;
-               interrupts = <21 IRQ_TYPE_LEVEL_HIGH>; /* gpio 53 */
+               interrupts = <21 IRQ_TYPE_EDGE_RISING>; /* gpio 53 */
                ref-clock-frequency = <38400000>;
        };
 };
index 280d92d..490726b 100644 (file)
                compatible = "ti,wl1281";
                reg = <2>;
                interrupt-parent = <&gpio1>;
-               interrupts = <21 IRQ_TYPE_LEVEL_HIGH>; /* gpio 53 */
+               interrupts = <21 IRQ_TYPE_EDGE_RISING>; /* gpio 53 */
                ref-clock-frequency = <26000000>;
                tcxo-clock-frequency = <26000000>;
        };
index 1c5f6f3..8789234 100644 (file)
@@ -72,7 +72,7 @@
                compatible = "ti,wl1271";
                reg = <2>;
                interrupt-parent = <&gpio2>;
-               interrupts = <9 IRQ_TYPE_LEVEL_HIGH>; /* gpio 41 */
+               interrupts = <9 IRQ_TYPE_EDGE_RISING>; /* gpio 41 */
                ref-clock-frequency = <38400000>;
        };
 };
index 3b22445..ab6f640 100644 (file)
                pinctrl-names = "default";
                pinctrl-0 = <&wlcore_irq_pin>;
                interrupt-parent = <&gpio1>;
-               interrupts = <14 IRQ_TYPE_LEVEL_HIGH>;  /* gpio 14 */
+               interrupts = <14 IRQ_TYPE_EDGE_RISING>; /* gpio 14 */
                ref-clock-frequency = <26000000>;
        };
 };