Hello all,
has anybody already an SDIO Wifi Device with I.MX28, mainline kernel and device tree running?
I' trying to setup a SDIO Wifi Module connected on the SSP2 interface.
Reset of the module is connected to MX28_PAD_SSP0_DATA4__GPIO_2_4 active low when reset.
Power of the module is switched on with MX28_PAD_SSP0_DATA5__GPIO_2_5 high.
I add this in my dts file:
apb@80000000 {
apbh@80000000 {
....
ssp2: ssp@80014000 {
compatible = "fsl,imx28-mmc";
pinctrl-names = "default";
pinctrl-0 = <&mmc2_4bit_pins_atm28 &mmc2_sck_cfg_atm28>;
bus-width = <4>;
cd-gpios = <&gpio2 4 0>;
cd-inverted;
vmmc-supply = <®_vddio_sd2>;
status = "okay";
};
pinctrl@80018000 {
pinctrl-names = "default";
pinctrl-0 = <&hog_pins_a>;
hog_pins_a: hog@0 {
reg = <0>;
fsl,pinmux-ids = <
0x2043 /* MX28_PAD_SSP0_DATA4__GPIO_2_4 WLAN_RESET/DETECT */
0x2053 /* MX28_PAD_SSP0_DATA5__GPIO_2_5 WLAN_PWRDNN */
>;
fsl,drive-strength = <0>;
fsl,voltage = <1>;
fsl,pull-up = <0>;
};
...
...
mmc2_4bit_pins_atm28: mmc2-4bit-atm28@0 {
reg = <0>;
fsl,pinmux-ids = <
0x2110 /* MX28_PAD_SSP2_MOSI__SSP2_CMD */
0x2100 /* MX28_PAD_SSP2_SCK__SSP2_SCK */
0x2120 /* MX28_PAD_SSP2_MISO__SSP2_D0 */
0x2141 /* MX28_PAD_SSP2_SS1__SSP2_D1 */
0x2151 /* MX28_PAD_SSP2_SS2__SSP2_D2 */
0x2130 /* MX28_PAD_SSP2_SS0__SSP2_D3 */
>;
fsl,drive-strength = <1>; /* 8mA */
fsl,voltage = <1>; /* 3.3V */
fsl,pull-up = <1>; /* pull up */
};
mmc2_sck_cfg_atm28: mmc2-sck-cfg-atm28@0 {
fsl,pinmux-ids = <
0x2100 /* MX28_PAD_SSP2_SCK__SSP2_SCK */
>;
fsl,drive-strength = <2>; /* 12mA */
fsl,voltage = <1>; /* 3.3V */
fsl,pull-up = <0>; /* pull up */
};
....
....
regulators {
....
....
reg_vddio_sd2: vddio-sd2 {
compatible = "regulator-fixed";
regulator-name = "vddio-sd2";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&gpio2 5 0>;
startup-delay-us = <70000>;
enable-active-high;
};
....
dmesg
...
...
[ 0.656781] of_get_named_gpio_flags exited with status 124
[ 0.658312] vddio-sd0: 3300 mV
[ 0.662343] reg-fixed-voltage vddio-sd0.7: vddio-sd0 supplying 3300000uV
[ 0.662625] of_get_named_gpio_flags exited with status 69 <<<<<<<
[ 0.663906] vddio-sd2: 3300 mV
[ 0.667468] reg-fixed-voltage vddio-sd2.8: vddio-sd2 supplying 3300000uV
...
...
[ 38.504406] libertas_sdio: Libertas SDIO driver
[ 38.509156] libertas_sdio: Copyright Pierre Ossman
dmesg | grep mmc
[ 0.000000] Kernel command line: console=ttyAMA0,115200 gpmi ubi.mtd=7 root=/dev/mmcblk0p3 rw rootwait
[ 1.731156] mxs-mmc 80010000.ssp: Looking up vmmc-supply from device tree
[ 1.767187] mxs-mmc 80010000.ssp: initialized
[ 1.772562] mxs-mmc 80014000.ssp: Looking up vmmc-supply from device tree
[ 1.887187] mxs-mmc 80014000.ssp: initialized
[ 1.904687] mmc0: new SDHC card at address e624
[ 1.921593] mmcblk0: mmc0:e624 SU04G 3.69 GiB
[ 1.950718] mmcblk0: p1 p2 p3
dmesg | grep sdio
[ 38.504406] libertas_sdio: Libertas SDIO driver
[ 38.509156] libertas_sdio: Copyright Pierre Ossman
cat /sys/kernel/debug/mmc1/ios
clock: 0 Hz
vdd: 0 (invalid)
bus mode: 1 (open drain)
chip select: 0 (don't care)
power mode: 0 (off)
bus width: 0 (1 bits)
timing spec: 0 (legacy)
signal voltage: 0 (3.30 V)
I missed something similar to mmc1: new SDIO card at .. in the system log. Also mmc1/ios didn't show correct data.
mmc0 connected to a MMC card works well.
I cannot enable debug for mmc. it results in to many outputs for mmc0.
Please help me how to setup the dts file correctly.
Thanks in advance.
Johannes