One, Basic Knowledge
1. The brcm80211 drivers are included in the kernel. They are named brcmsmac for PCI cards and brcmfmac for SDIO devices.
2. brcm80211
2.1. The kernel contains two built-in open-source drivers: brcmfmac for native FullMAC and brcmsmac for mac80211-based SoftMAC. They should be automatically loaded when booting.
2.2. brcmfmac supports newer chipsets, and supports AP mode, P2P mode, or hardware encryption.
2.3. brcmsmac only supports old chipsets like BCM4313, BCM43224, BCM43225.
Two, FAQs
1. 如何將wlan-platdata的驅(qū)動(dòng)先于DHD驅(qū)動(dòng)運(yùn)行夺脾?
Wifi load driver when kernel bootup
2. Some Macro
dhd_linux-platdata.c : Macro CUSTOMER_HW is defined. And use Android style wifi platform data (aka wifi control function).
dhd_linux-platdata.c : Marco CONFIG_DTS is not defined.
wifi_ctrlfunc_register_drv
dhd_gpio.c : Macro CUSTOMER_OOB is defined.
3. failed in dhd_linux_platdev.c
882 if (down_timeout(&dhd_chipup_sem, msecs_to_jiffies(POWERUP_WAIT_MS)) == 0) {
883? ? ? ? ? ? ? ? printk("%s: %s ===> %d\n", __FILE__, __func__, __LINE__);
884? ? ? ? ? ? ? ? dhd_bus_unreg_sdio_notify();
885? ? ? ? ? ? ? ? printk("%s: %s ===> %d\n", __FILE__, __func__, __LINE__);
886? ? ? ? ? ? ? ? chip_up = TRUE;? ? ? ? ?
887? ? ? ? ? ? ? ? break;
888? ? ? ? ? ? }
wifi_platform_bus_enumerate()
===calls===>plat_data->set_carddetect(device_present), which is dhd_wlan_set_carddetect()
===calls===>rockchip_wifi_set_carddetect(1) or rockchip_wifi_set_carddetect()
===calls===>mmc_host_rescan()