WIFI
介绍WIFI的移植和使用方法。
模块介绍
K1平台上主要通过外部WIFI模块来实现WIFI功能,主要支持PCIE,SDIO以及USB等接口的模块。
功能介绍
WIFI框架图可以分为以下几个层次:
源码结构介绍
WIFI相关的源码可以分为三个部分:
- WIFI驱动,由WIFI厂商提供,主要实现WIFI功能。
- 平台相关部分,主要实现模组供电以及使能等相关接口,供WIFI驱动调用。
- 接口驱动,主要实现WIFI数据传输接口功能,如PCIE,SDIO以及USB等接口。
WIFI驱动的源码一般放到以下目录:
drivers/net/wireless
|-- aic8800 #aic厂商驱动
|-- realtek #realtek厂商驱动
|-- rtl8852be #rtl8852be
|-- rtl8852bs #rtl8852bs
|-- wuqi #wuqi厂商驱动
平台相关的源码:
drivers/soc/spacemit/spacemit-rf
|-- spacemit-pwrseq.c #WIFI和蓝牙等公共部分实现
|-- spacemit-wlan.c #WIFI供 电,gpio以及时钟相关接口实现
|-- spacemit-bt.c #bt供电,gpio以及时钟相关接口实现
接口相关的源码参考各个接口驱动说明文档。
关键特性
sdio接口特性
特性 | 特性说明 |
---|---|
兼容SDIO v4.10 | 兼容4bit SDIO 4.10规范 |
支持SD 3.0模式 | 支持SDR12/SDR25/DDR50/SDR50/SDR104模式 |
支持PIO/DMA | 支持PIO,SDMA,ADMA,ADMA2传输模式 |
性能参数
模组型号 | TX(Mb/s) | RX(Mb/s) |
---|---|---|
rtl8852bs | 460 | 480 |
aic8800d80 | 410 | 470 |
测试方法
同一局域网段
服务端:iperf3 -s
客户端:iperf3 -c 192.168.1.xxx -t 72000
配置介绍
主要包括驱动使能配置和dts配置
CONFIG配置
CONFIG_SPACEMIT_RFKILL 为WIFI模组提供平台相关支持,默认情况,此选项为Y
Device Drivers
SOC (System On Chip) specific Drivers
Spacemit rfkill driver (SPACEMIT_RFKILL [=y])
dts配置
sdio pinctrl
方案上一般 slot2 用于 sdio,对应 pinctrl_mmc2。
pinctrl_mmc2: mmc2_grp {
pinctrl-single,pins =<
K1X_PADCONF(GPIO_15, MUX_MODE1, (EDGE_NONE | PULL_UP | PAD_1V8_DS2)) /* mmc2_data3 */
K1X_PADCONF(GPIO_16, MUX_MODE1, (EDGE_NONE | PULL_UP | PAD_1V8_DS2)) /* mmc2_data2 */
K1X_PADCONF(GPIO_17, MUX_MODE1, (EDGE_NONE | PULL_UP | PAD_1V8_DS2)) /* mmc2_data1 */
K1X_PADCONF(GPIO_18, MUX_MODE1, (EDGE_NONE | PULL_UP | PAD_1V8_DS2)) /* mmc2_data0 */
K1X_PADCONF(GPIO_19, MUX_MODE1, (EDGE_NONE | PULL_UP | PAD_1V8_DS2)) /* mmc2_cmd */
K1X_PADCONF(GPIO_20, MUX_MODE1, (EDGE_NONE | PULL_UP | PAD_1V8_DS2)) /* mmc2_clk */
>;
};
如果需要支持WIFI唤醒,需要将wlan_hostwake配置为pinctl模式:
pinctrl_wlan_wakeup: wlan_wakeup_grp {
pinctrl-single,pins =<
K1X_PADCONF(GPIO_66, MUX_MODE0, (EDGE_FALL | PULL_DOWN | PAD_3V_DS2)) /* wifi edge detect */
>;
};
电源配置
sdio 需要配置两个电源,分别是 vmmc-supply 和 vqmmc-supply,分别对应卡的功能和 io 供电,vqmmc-supply 建议1.8v,具体根据sdio卡的模式选择实际电压。
&sdhci1 {
vmmc-supply = <&dcdc_3>;
vqmmc-supply = <&ldo_1>;
};