AnsweredAssumed Answered

WIFI Device on i.MX28 with mainline Linux 3.8.2 and Device Tree

Question asked by joilg on Mar 13, 2013
Latest reply on Mar 13, 2013 by Fabio Estevam

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 = <&reg_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







 

 

 




 

     


Outcomes