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)