add / enable TI's WiLink8 WLAN module on SDIO2. Notes: * power is always enabled (because of bluetooth) * the downstream delay of 70ms after power-on doesn't seem to reliably work, hence it was bumped to 700ms Signed-off-by: André Draszik <git@xxxxxxxxxx> Cc: Ilya Ledvich <ilya@xxxxxxxxxxxxxx> Cc: Igor Grinberg <grinberg@xxxxxxxxxxxxxx> Cc: Rob Herring <robh+dt@xxxxxxxxxx> Cc: Mark Rutland <mark.rutland@xxxxxxx> Cc: Shawn Guo <shawnguo@xxxxxxxxxx> Cc: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> Cc: Pengutronix Kernel Team <kernel@xxxxxxxxxxxxxx> Cc: Fabio Estevam <festevam@xxxxxxxxx> Cc: NXP Linux Team <linux-imx@xxxxxxx> Cc: devicetree@xxxxxxxxxxxxxxx Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx --- arch/arm/boot/dts/imx7d-cl-som-imx7.dts | 60 +++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/arch/arm/boot/dts/imx7d-cl-som-imx7.dts b/arch/arm/boot/dts/imx7d-cl-som-imx7.dts index a16cbb070a12..4cb36decef3d 100644 --- a/arch/arm/boot/dts/imx7d-cl-som-imx7.dts +++ b/arch/arm/boot/dts/imx7d-cl-som-imx7.dts @@ -28,6 +28,24 @@ compatible = "smsc,usb3503"; reset-gpios = <&pca9555 6 GPIO_ACTIVE_LOW>; }; + + pwrseq_ti_wifi: ti-wifi-pwrseq { + compatible = "mmc-pwrseq-simple"; + reset-gpios = <&pca9555 0 GPIO_ACTIVE_LOW>; + post-power-on-delay-ms = <700>; + /* 10μs during shutdown, but 60μs between two enables */ + power-off-delay-us = "60"; + }; + + reg_ti_wifi: regulator-ti-wifi { + compatible = "regulator-fixed"; + regulator-name = "wilink-regulator"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpio = <&pca9555 9 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-always-on; + }; }; &cpu0 { @@ -232,6 +250,31 @@ status = "okay"; }; +&usdhc2 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_usdhc2>; + bus-width = <4>; + no-1-8-v; + keep-power-in-suspend; + wakeup-source; + vmmc-supply = <®_ti_wifi>; + mmc-pwrseq = <&pwrseq_ti_wifi>; + non-removable; + cap-power-off-card; + status = "okay"; + + #address-cells = <1>; + #size-cells = <0>; + wlcore: wlcore@2 { + compatible = "ti,wl1835"; + reg = <2>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_usdhc2_wlcore>; + interrupt-parent = <&gpio1>; + interrupts = <15 IRQ_TYPE_LEVEL_HIGH>; + }; +}; + &usdhc3 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usdhc3>; @@ -308,6 +351,23 @@ >; }; + pinctrl_usdhc2: usdhc2grp { + fsl,pins = < + MX7D_PAD_SD2_CMD__SD2_CMD 0x59 + MX7D_PAD_SD2_CLK__SD2_CLK 0x19 + MX7D_PAD_SD2_DATA0__SD2_DATA0 0x59 + MX7D_PAD_SD2_DATA1__SD2_DATA1 0x59 + MX7D_PAD_SD2_DATA2__SD2_DATA2 0x59 + MX7D_PAD_SD2_DATA3__SD2_DATA3 0x59 + >; + }; + + pinctrl_usdhc2_wlcore: usdhc2wlcoregrp { + fsl,pins = < + MX7D_PAD_GPIO1_IO15__GPIO1_IO15 0x34 + >; + }; + pinctrl_usdhc3: usdhc3grp { fsl,pins = < MX7D_PAD_SD3_CMD__SD3_CMD 0x59 -- 2.23.0.rc1