AnsweredAssumed Answered

bcmdhd wifi driver not working on imx6solo hw [linux:3.10.17]

Question asked by Anilkumar Hanimanale on Oct 27, 2015

Hello,

 

Environment: Linux:3.10.17, imx6solo processor host

 

I trying to bring WiFi module BCM89335 (similar to bcm 4335) on imx6solo platform.

The wifi module is connected to sd2/mmc2 controller.

The bcm reset(wlreg_on) line is connected to gpio1_30 and bcm driver uses the in-band interrupts.

 

The below changes are in dts file and added mmc rescan patch in mmc host driver.

 

In dts file:

&usdhc2 {

        pinctrl-names = "default";

        pinctrl-0 = <&pinctrl_usdhc2_2>;

        non-removable;

        no-1-8-v;

        keep-clock;

        keep-power-in-suspend;

        status = "okay";

};

 

  wlreg_on: fixedregulator@2 {
            compatible = "regulator-fixed";
            regulator-name = "wlreg_on";
            gpio = <&gpio1 30 0>;
            startup-delay-us = <600000>;
            enable-active-high;
   };
  /* Added a dummy gpio pin as gpio6_28 to keep bcmdhd driver happy */
   bcmdhd_wlan_0: bcmdhd_wlan@0 {
           compatible = "android,bcmdhd_wlan";
           gpios = <&gpio6 28 0>;
           wlreg_on-supply = <&wlreg_on>;
   };

             /* To configure the gpio1_30 */

   &iomuxc {
   pinctrl-names = "default";
   pinctrl-0 = <&pinctrl_hog_1>;
   hog {
           pinctrl_hog_1: hoggrp-1 {
                   fsl,pins = <
  ...
  MX6QDL_PAD_ENET_TXD0__GPIO1_IO30 0x80000000

 

When I try to insert the bcmdhd driver, it fails to load.

The bcmdhd driver will enable the reset line(wlreg_on regulator) while driver loading.

 

The two options tried while loading the wifi driver and collected the logs.

Case 1:  'enable-active-high' set in wlreg_on regulator node in dts;

Here the gpio1_30 line default state is low(0v) on target power up.

The case1_dmesg logs shows the bcm chip power reset fails.

I confirmed that the reset(gpio1_30) line set to 3.3v while driver loading.

 

case 2: no 'enable-active-high' defined in wlreg_on regulator node in dts

IThe gpio1_30 line default state is high(3.3v) on target power up.

The case2_dmesg logs shows the bcm driver fails due bcmsdh_sdmmc probe failed.

 

In either case the wifi driver fails to load and logs are attached(sdhc2 shown as mmc0 node).

Let me know before the bcm driver loading first time, the reset(wlreg_on) line state should be set to high or low?

Please suggest if you have any additional pointers or any reasons for this failure.

 

Original Attachment has been moved to: Logs_nPatch.zip

Outcomes