Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92
用的是AP6335, SDIO接口。
电源相关部分:
rfkill_wlan_init -> rfkill-waln.c
platform_driver_register -> //platform_driver是rfkill_wlan_driver, name是wlan-platdata,dts中配置
rfkill_wlan_probe ->
wlan_platdata_parse_dt //解析dts中关于wifi的配置,dts的说明参考前面一篇文章
gpio_direction_output //默认关闭WiFi电源
rockchip_wifi_voltage_select //设置IO power.
驱动加载:
另外,在dhd_linux.c中有:
get_wifi_chip_type -> 返回AP6335
wifi_init_thread -> //单独一个线程去加载
dhd_module_init ->
dhd_wifi_platform_register_drv -> dhd_linux_platdev.c
wifi_ctrlfunc_register_drv -> //CUSTOMER_HW的定义是在
//kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/Makefile中
bcm_wlan_set_plat_data dhd_gpio.c //设置wifi_platform_data里对应的函数,一会就要用到
bcm_wlan_get_oob_irq //获取irq gpio,在前面的wlan_platdata_parse_dt()从dts获取到的
dhd_wifi_platform_load ->
wl_android_init ->
bcm_strncpy_s //设置iface_name为"wlan"
&
OS: Android 6.0
Kernel: 3.10.92
用的是AP6335, SDIO接口。
电源相关部分:
rfkill_wlan_init -> rfkill-waln.c
platform_driver_register -> //platform_driver是rfkill_wlan_driver, name是wlan-platdata,dts中配置
rfkill_wlan_probe ->
wlan_platdata_parse_dt //解析dts中关于wifi的配置,dts的说明参考前面一篇文章
gpio_direction_output //默认关闭WiFi电源
rockchip_wifi_voltage_select //设置IO power.
驱动加载:
另外,在dhd_linux.c中有:
#ifdef CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP
late_initcall(rockchip_wifi_init_module_rkwifi);
module_exit(rockchip_wifi_exit_module_rkwifi);
#else
EXPORT_SYMBOL(rockchip_wifi_init_module_rkwifi);
EXPORT_SYMBOL(rockchip_wifi_exit_module_rkwifi);
#endif
由于定义了CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP, 那么rockchip_wifi_init_module_rkwifi()也会被调用
rockchip_wifi_init_module_rkwifi -> dhd_linux.cget_wifi_chip_type -> 返回AP6335
wifi_init_thread -> //单独一个线程去加载
dhd_module_init ->
dhd_wifi_platform_register_drv -> dhd_linux_platdev.c
wifi_ctrlfunc_register_drv -> //CUSTOMER_HW的定义是在
//kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/Makefile中
bcm_wlan_set_plat_data dhd_gpio.c //设置wifi_platform_data里对应的函数,一会就要用到
bcm_wlan_get_oob_irq //获取irq gpio,在前面的wlan_platdata_parse_dt()从dts获取到的
dhd_wifi_platform_load ->
wl_android_init ->
bcm_strncpy_s //设置iface_name为"wlan"
&