bcmdhd wifi driver got kernel panic when insmod the module

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

bcmdhd wifi driver got kernel panic when insmod the module

2,496 Views
zengzhaoping
Contributor II

Hello,

We have our own board designed after the SabreSD-6D and I am trying to bring WiFi module BCM43353 on imx6 dual platform.

Environment:

Platform: IMX6 dual

Codebase: Android 4.4.3

Linux base: 3.10.53

The wifi module is connected to usdhc1 controller.

The bcm reset (wlreg_on) line is connected to (GPIO3_IO23) and interrupt(WL_WAKE_HOST) line is connected to (GPIO1_IO05)

The below changes are in dts file.

dts setting:

wlreg_on: fixedregulator@2 {

                compatible = "regulator-fixed";

                regulator-name = "wlreg_on";

                gpio = <&gpio3 23 0>;                                    //wifi_regon

                startup-delay-us = <600000>;

                enable-active-high;

        };

        bcmdhd_wlan_0: bcmdhd_wlan@0 {

                compatible = "android,bcmdhd_wlan";

                gpios = <&gpio1 5 1>;                                  //oob_irq即wifi_wake_host

                wlreg_on-supply = <&wlreg_on>;

        };

&usdhc1 {

  pinctrl-names = "default";

  pinctrl-0 = <&pinctrl_usdhc1_1>;

  keep-power-in-suspend;

  no-1-8-v;

  cap-power-off-card;

  status = "okay";

};

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

usdhc1 {

  pinctrl_usdhc1_1: usdhc1grp-1 {

  fsl,pins = <

  MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17071

  MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10071

  MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17071

  MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17071

  MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17071

  MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17071

  >;

  };

  };

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

log:

dhd_module_init in

======irq_flags:IRQF_TRIGGER_FALLING

Power-up adapter 'DHD generic adapter'

mmc0: queuing unknown CIS tuple 0x80 (2 bytes)

mmc0: queuing unknown CIS tuple 0x80 (7 bytes)

mmc0: queuing unknown CIS tuple 0x80 (6 bytes)

mmc0: queuing unknown CIS tuple 0x91 (3 bytes)

mmc0: new high speed SDIO card at address 0001

F1 signature OK, socitype:0x1 chip:0x4339 rev:0x1 pkg:0x2

DHD: dongle ram size is set to 786432(orig 786432) at 0x180000

wifi_platform_get_mac_addr

wl_create_event_handler(): thread:wl_event_handler:3b0 started

CFG80211-ERROR) wl_event_handler : tsk Enter, tsk = 0x9884147c

dhd_attach(): thread:dhd_watchdog_thread:3b1 started

dhd_attach(): thread:dhd_dpc:3b2 started

dhd_deferred_work_init: work queue initialized

dhdsdio_write_vars: Download, Upload and compare of NVRAM succeeded.

dhd_bus_init: enable 0x06, ready 0x06 (waited 0us)

wifi_platform_get_mac_addr

Firmware up: op_mode=0x0005, MAC=00:ae:fa:84:20:57

Firmware version = wl0: Mar  7 2016 21:01:51 version 6.37.39.38 (r623336)

dhd_wlfc_init(): successfully enabled bdcv2 tlv signaling, 79

dhd_wlfc_init(): wlfc_mode=0x0, ret=-23

Dongle Host Driver, version 1.141.91 (r)

Compiled in drivers/net/wireless/bcmdhd on Jul 19 2016 at 12:17:49

Register interface [wlan0]  MAC: 00:ae:fa:84:20:57

root@sabresd_6dq:/ # Unable to handle kernel NULL pointer dereference at virtual address 00000200

pgd = 80004000

[00000200] *pgd=00000000

Internal error: Oops: 17 [#1] PREEMPT SMP ARM

Modules linked in: bcmdhd cfg80211 [last unloaded: cfg80211]

CPU: 0 PID: 892 Comm: kworker/u4:1 Not tainted 3.10.53 #259

Workqueue: kmmcd mmc_rescan

task: bc09c500 ti: 981f8000 task.ti: 981f8000

PC is at _raw_spin_lock_irqsave+0x18/0x58

LR is at _raw_spin_lock_irqsave+0x18/0x58

[<807c0dcc>] (_raw_spin_lock_irqsave+0x18/0x58) from [<8004b728>] (add_wait_queue+0x20/0x48)

[<8004b728>] (add_wait_queue+0x20/0x48) from [<8054bad8>] (__mmc_claim_host+0x54/0x194)

[<8054bad8>] (__mmc_claim_host+0x54/0x194) from [<7f1765a0>] (sdioh_request_byte+0x1c0/0x2a4 [bcmdhd

])

[<7f1765a0>] (sdioh_request_byte+0x1c0/0x2a4 [bcmdhd]) from [<7f1766a8>] (sdioh_cfg_write+0x24/0x2c

[bcmdhd])

[<7f1766a8>] (sdioh_cfg_write+0x24/0x2c [bcmdhd]) from [<7f175578>] (bcmsdh_cfg_write+0x44/0xc0 [bcm

dhd])

[<7f175578>] (bcmsdh_cfg_write+0x44/0xc0 [bcmdhd]) from [<7f17ed64>] (dhdsdio_clk_kso_enab+0x38/0x16

4 [bcmdhd])

[<7f17ed64>] (dhdsdio_clk_kso_enab+0x38/0x164 [bcmdhd]) from [<7f181ec4>] (dhdsdio_clk_devsleep_iova

r+0xec/0x5c8 [bcmdhd])

[<7f181ec4>] (dhdsdio_clk_devsleep_iovar+0xec/0x5c8 [bcmdhd]) from [<7f182678>] (dhdsdio_bussleep+0x

2d8/0x498 [bcmdhd])

[<7f182678>] (dhdsdio_bussleep+0x2d8/0x498 [bcmdhd]) from [<7f1886c8>] (dhd_bus_stop+0x2e4/0x3f8 [bc

mdhd])

[<7f1886c8>] (dhd_bus_stop+0x2e4/0x3f8 [bcmdhd]) from [<7f13bb68>] (dhd_bus_detach+0x58/0x78 [bcmdhd

])

[<7f13bb68>] (dhd_bus_detach+0x58/0x78 [bcmdhd]) from [<7f13ce04>] (dhd_detach+0x33c/0x4e0 [bcmdhd])

[<7f13ce04>] (dhd_detach+0x33c/0x4e0 [bcmdhd]) from [<7f182958>] (dhdsdio_release+0x3c/0x1bc [bcmdhd

])

[<7f182958>] (dhdsdio_release+0x3c/0x1bc [bcmdhd]) from [<7f183160>] (dhdsdio_disconnect+0x38/0x94 [

bcmdhd])

[<7f183160>] (dhdsdio_disconnect+0x38/0x94 [bcmdhd]) from [<7f176014>] (bcmsdh_remove+0x20/0x44 [bcm

dhd])

[<7f176014>] (bcmsdh_remove+0x20/0x44 [bcmdhd]) from [<7f177724>] (bcmsdh_sdmmc_remove+0x4c/0x64 [bc

mdhd])

[<7f177724>] (bcmsdh_sdmmc_remove+0x4c/0x64 [bcmdhd]) from [<80556398>] (sdio_bus_remove+0x30/0xf8)

[<80556398>] (sdio_bus_remove+0x30/0xf8) from [<80393950>] (__device_release_driver+0x90/0xf0)

[<80393950>] (__device_release_driver+0x90/0xf0) from [<803939cc>] (device_release_driver+0x1c/0x28)

[<803939cc>] (device_release_driver+0x1c/0x28) from [<803934d0>] (bus_remove_device+0x108/0x128)

[<803934d0>] (bus_remove_device+0x108/0x128) from [<80390d34>] (device_del+0xf4/0x178)

[<80390d34>] (device_del+0xf4/0x178) from [<80556724>] (sdio_remove_func+0x1c/0x28)

[<80556724>] (sdio_remove_func+0x1c/0x28) from [<80554788>] (mmc_sdio_remove+0x40/0x74)

[<80554788>] (mmc_sdio_remove+0x40/0x74) from [<80554830>] (mmc_sdio_detect+0x74/0x10c)

[<80554830>] (mmc_sdio_detect+0x74/0x10c) from [<8054e0dc>] (mmc_rescan+0x1c0/0x320)

[<8054e0dc>] (mmc_rescan+0x1c0/0x320) from [<8004510c>] (process_one_work+0xfc/0x34c)

[<8004510c>] (process_one_work+0xfc/0x34c) from [<8004549c>] (worker_thread+0x140/0x3f0)

[<8004549c>] (worker_thread+0x140/0x3f0) from [<8004afac>] (kthread+0xa4/0xb0)

[<8004afac>] (kthread+0xa4/0xb0) from [<8000e158>] (ret_from_fork+0x14/0x3c)

Labels (4)
0 Kudos
3 Replies

1,519 Views
karltsou
Contributor I

Hi,

I noticed that Dongle Host Driver, version is 1.141.91, this is very new bcmdhd and cannot be there in kernel L3.10.53.

Can you add below debugs in file dhd_linux_platdev.c, function wifi_plat_dev_drv_probe I think wifi_plat_data is "null"

DHD_ERR(("%s wifi platform data %p\n", __FUNCTION__, adapter->wifi_plat_data));

0 Kudos

1,519 Views
igorpadykov
NXP Employee
NXP Employee

Hi

kernel panic may be caused by driver version incompatibilty, as

L3.10.53 nxp bsp does not support bcm modules, it uses silex wifi modules.

It may be recommended to ask 3.10.53 drivers from vendor support

http:/ /wireless.murata.com/eng/products/rf-modules-1/wi-fi-bluetooth-for-nxp-i-mx.html

Best regards

igor

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

Note: If this post answers your question, please click the Correct Answer button. Thank you!

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

0 Kudos

1,519 Views
zengzhaoping
Contributor II

hi igorpadykov

     L3.10.53是支持bcm43353 模块的;有imx6平台调通了的

0 Kudos