Commit 0efc898a authored by Tony Lindgren's avatar Tony Lindgren

ARM: dts: Fix WLAN regression on omap5-uevm

Commit 99f84cae ("ARM: dts: add wl12xx/wl18xx bindings") added
device tree bindings for the TI WLAN SDIO on many omap variants.

I recall wondering how come omap5-uevm did not have the WLAN
added and this issue has been bugging me for a while now, and
I finally tracked it down to a bad pinmux regression, and a missing
deferred probe handling for the 32k clock from palmas that's
requested by twl6040.

Basically 392adaf7 ("ARM: dts: omap5-evm: Add mcspi data")
added pin muxing for mcspi4 that conflicts with the onboard
WLAN. While some omap5-uevm don't have WLAN populated, the
pins are not reused for other devices. And as the SDIO bus
should be probed, let's try to enable WLAN by default.

Let's fix the regression and add the WLAN configuration as
done for the other boards in 99f84cae ("ARM: dts: add
wl12xx/wl18xx bindings"). And let's use the new MMC pwrseq for
the 32k clock as suggested by Javier Martinez Canillas
<javier@dowhile0.org>.

Note that without a related deferred probe fix for twl6040,
the 32k clock is not initialized if palmas-clk is a module
and twl6040 is built-in.

Let's also use the generic "non-removable" instead of the
legacy "ti,non-removable" property while at it.

And finally, note that omap5 seems to require WAKEUP_EN for
the WLAN GPIO interrupt.

Fixes: 392adaf7 ("ARM: dts: omap5-evm: Add mcspi data")
Cc: Sourav Poddar <sourav.poddar@ti.com>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent be146412
...@@ -31,6 +31,24 @@ vmmcsd_fixed: fixedregulator-mmcsd { ...@@ -31,6 +31,24 @@ vmmcsd_fixed: fixedregulator-mmcsd {
regulator-max-microvolt = <3000000>; regulator-max-microvolt = <3000000>;
}; };
mmc3_pwrseq: sdhci0_pwrseq {
compatible = "mmc-pwrseq-simple";
clocks = <&clk32kgaudio>;
clock-names = "ext_clock";
};
vmmcsdio_fixed: fixedregulator-mmcsdio {
compatible = "regulator-fixed";
regulator-name = "vmmcsdio_fixed";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
gpio = <&gpio5 12 GPIO_ACTIVE_HIGH>; /* gpio140 WLAN_EN */
enable-active-high;
startup-delay-us = <70000>;
pinctrl-names = "default";
pinctrl-0 = <&wlan_pins>;
};
/* HS USB Host PHY on PORT 2 */ /* HS USB Host PHY on PORT 2 */
hsusb2_phy: hsusb2_phy { hsusb2_phy: hsusb2_phy {
compatible = "usb-nop-xceiv"; compatible = "usb-nop-xceiv";
...@@ -197,12 +215,20 @@ mcspi3_pins: pinmux_mcspi3_pins { ...@@ -197,12 +215,20 @@ mcspi3_pins: pinmux_mcspi3_pins {
>; >;
}; };
mcspi4_pins: pinmux_mcspi4_pins { mmc3_pins: pinmux_mmc3_pins {
pinctrl-single,pins = <
OMAP5_IOPAD(0x01a4, PIN_INPUT_PULLUP | MUX_MODE0) /* wlsdio_clk */
OMAP5_IOPAD(0x01a6, PIN_INPUT_PULLUP | MUX_MODE0) /* wlsdio_cmd */
OMAP5_IOPAD(0x01a8, PIN_INPUT_PULLUP | MUX_MODE0) /* wlsdio_data0 */
OMAP5_IOPAD(0x01aa, PIN_INPUT_PULLUP | MUX_MODE0) /* wlsdio_data1 */
OMAP5_IOPAD(0x01ac, PIN_INPUT_PULLUP | MUX_MODE0) /* wlsdio_data2 */
OMAP5_IOPAD(0x01ae, PIN_INPUT_PULLUP | MUX_MODE0) /* wlsdio_data3 */
>;
};
wlan_pins: pinmux_wlan_pins {
pinctrl-single,pins = < pinctrl-single,pins = <
0x164 (PIN_INPUT | MUX_MODE1) /* mcspi4_clk */ OMAP5_IOPAD(0x1bc, PIN_OUTPUT | MUX_MODE6) /* mcspi1_clk.gpio5_140 */
0x168 (PIN_INPUT | MUX_MODE1) /* mcspi4_simo */
0x16a (PIN_INPUT | MUX_MODE1) /* mcspi4_somi */
0x16c (PIN_INPUT | MUX_MODE1) /* mcspi4_cs0 */
>; >;
}; };
...@@ -276,6 +302,12 @@ usbhost_wkup_pins: pinmux_usbhost_wkup_pins { ...@@ -276,6 +302,12 @@ usbhost_wkup_pins: pinmux_usbhost_wkup_pins {
0x1A (PIN_OUTPUT | MUX_MODE0) /* fref_clk1_out, USB hub clk */ 0x1A (PIN_OUTPUT | MUX_MODE0) /* fref_clk1_out, USB hub clk */
>; >;
}; };
wlcore_irq_pin: pinmux_wlcore_irq_pin {
pinctrl-single,pins = <
OMAP5_IOPAD(0x040, WAKEUP_EN | PIN_INPUT_PULLUP | MUX_MODE6) /* llia_wakereqin.gpio1_wk14 */
>;
};
}; };
&mmc1 { &mmc1 {
...@@ -290,8 +322,25 @@ &mmc2 { ...@@ -290,8 +322,25 @@ &mmc2 {
}; };
&mmc3 { &mmc3 {
vmmc-supply = <&vmmcsdio_fixed>;
mmc-pwrseq = <&mmc3_pwrseq>;
bus-width = <4>; bus-width = <4>;
ti,non-removable; non-removable;
cap-power-off-card;
pinctrl-names = "default";
pinctrl-0 = <&mmc3_pins &wlcore_irq_pin>;
interrupts-extended = <&gic GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH
&omap5_pmx_core 0x168>;
#address-cells = <1>;
#size-cells = <0>;
wlcore: wlcore@2 {
compatible = "ti,wl1271";
reg = <2>;
interrupt-parent = <&gpio1>;
interrupts = <14 IRQ_TYPE_LEVEL_HIGH>; /* gpio 14 */
ref-clock-frequency = <26000000>;
};
}; };
&mmc4 { &mmc4 {
...@@ -598,11 +647,6 @@ &mcspi3 { ...@@ -598,11 +647,6 @@ &mcspi3 {
pinctrl-0 = <&mcspi3_pins>; pinctrl-0 = <&mcspi3_pins>;
}; };
&mcspi4 {
pinctrl-names = "default";
pinctrl-0 = <&mcspi4_pins>;
};
&uart1 { &uart1 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&uart1_pins>; pinctrl-0 = <&uart1_pins>;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment