AnsweredAssumed Answered

[IMX6Q] bcmdhd wifi driver got kernel panic when insert the module driver

Question asked by Kai Wang on Jan 5, 2016

Hello,

 

We have our own board designed after the SabreSD-6Q and I am trying to bring WiFi module BCM43438 (similar to BCM43430) on imx6 quad platform.

 

Environment:

Platform: IMX6 quad

Codebase: Android 5.0.2 1.0.0-ga-rc4

Linux base: 3.10.53

 

The wifi module is connected to sd2/mmc2 controller.

The bcm reset (wlreg_on) line is connected to gpio_5(GPIO1_IO05) and interrupt(WL_WAKE_HOST) line is connected to gpio_16 (GPIO7_IO11)

The below changes are in dts file.

 

dts setting

wlreg_on: fixedregulator {

compatible = "regulator-fixed";

regulator-name = "wlreg_on";

gpio = <&gpio1 5 0>;

startup-delay-us = <600000>;

enable-active-high;

regulator-boot-on;

//regulator-always-on;

};

};

 

           bcmdhd_wlan{

                     compatible = "android,bcmdhd_wlan";

                     wlreg_on-supply = <&wlreg_on>;

                     gpios = <&gpio7 11 0>;//WL_WAKE_HOST

                     interrupt-names = "bcmdhd_wlan_irq";//interrupts name

                     interrupt-parent = <&gpio7>;

                     interrupts = <11 1>;

                     interrupt-controller;

           };

&iomuxc {

….

MX6QDL_PAD_GPIO_5__GPIO1_IO05   0x80000000 //wlreg_on

MX6QDL_PAD_GPIO_16__GPIO7_IO11 0x80000000 //WL_WAKE_HOST

 

 

&usdhc2 {

pinctrl-names = "default";

pinctrl-0 = <&pinctrl_usdhc2_2>;

no-1-8-v;

keep-power-in-suspend;

enable-sdio-wakeup;

status = "okay";

};

 

-----------------------------------------------------------------------------------

pinctrl_usdhc2_2: usdhc2grp-2 {

fsl,pins = <

MX6QDL_PAD_SD2_CMD__SD2_CMD    0x17059

MX6QDL_PAD_SD2_CLK__SD2_CLK    0x10059

MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x17059

MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x17059

MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x17059

MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x17059

>;

};

 

When I try to insert the bcmdhd driver, the system got panic.

 

There are two failures while loading the wifi driver and collected the logs.

 

Case 1: The system stack at module driver bring up. As the log “case_1”, the stack point is the function “bcmsdh_oob_intr_register” (line 572).

It seems the panic happens when the function “request_irq” has been called.

 

Case 2: Add “interrupt-controller“ in the dts setting, the module is unstable when it has been brought up. It can pass the case 1 at sometimes, and it got another panic as “Workqueue: kmmcd mmc_rescan”(line 593).

 

Let me know Is there something wrong with the dts setting if it is wrong?

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

 

 

 

 

 

 

Original Attachment has been moved to: case_1.log.zip

Original Attachment has been moved to: case_2.log.zip

Outcomes