3. 配置说明¶
3.1. 内核配置¶
修改build/boards/{processor_name}/{board_name}/linux/cvitek_{board_name}_defconfig, ex. build/boards/cv1801c_wevb_0009a_spinor/linux/ cvitek_cv1801c_wevb_0009a_spinor_defconfig,使能Wifi相关Configuration(标注红色部分为基本必须开启的Configuration,其他部分则是需求开启)。
由于Wi-Fi接口为SDIO,因此需开启
Build/boards/cv180x/cv1801c_wevb_0009a_spinor/dts_riscv/{board_name}.dtsi 确认wifisd 节点配置如下:
wifisd:wifi-sd@4320000 {
compatible = "cvitek,cv181x-sdio";
bus-width = <4>;
reg = <0x0 0x4320000 0x0 0x1000>;
reg_names = "core_mem";
src-frequency = <375000000>;
min-frequency = <400000>;
max-frequency = <50000000>;
64_addressing;
reset_tx_rx_phy;
non-removable;
pll_index = <0x7>;
pll_reg = <0x300207C>;
no-mmc;
no-sd;
};
另编辑build/boards/default/dts/cv180x/{board_name}_{bga or qfn}.dtsi, ex. build/boards/default/dts/cv180x/cv180x_asic_bga.dtsi 或相对应板型的dtsi文件确认无删除wifi-sd@5000000节点的配置, 示例如下:
/* /delete-node/ wifi-sd@5000000; */ /* 将这行注释或者删除 */
/delete-node/ i2c@04010000;
/delete-node/ i2c@04020000;
/delete-node/ ethernet@04520000;
/delete-node/ i2s@04120000;
…
3.2. 配置SDIO¶
请参考《CVITEK外围设备驱动操作指南》中与SDIO相关章节。SDIO IO电压为3.3V,需确认Wi-Fi模块IO电压和 SDIO电压一致。
3.3. 配置Pinmux¶
若Wi-Fi模块使用的接口为SDIO时, 需配置SDIO的管脚复用。CV180X/1X可以通过在build/boards/{processor_name}/{board_name}/u-boot/cvi_board_init.c文件中添加以下pinmux设置来配置SDIO的pinmux(这里是181h的evb配置,具体配置哪根引脚需要查看电路图中soc到wifi模组processor_en的引脚是哪根):
int cvi_board_init(void)
{
…
//#########WIFI
pinmux_config(PINMUX_SDIO1);
PINMUX_CONFIG(JTAG_CPU_TCK, XGPIOA_18);
…
return 0;
}
相关管脚配置细节,请参考u-boot-2021.10/board/cvitek/cv181x/board.c
3.4. 配置WIFI GPIO¶
由于Wi-Fi模块的processor_en引脚是由SOC上的一根GPIO控制,为了操作这只GPIO,我们专门做了一个简单的模块,在wifi驱动中使用该模块提供的接口对wifi进行上下电。可以通过设备树指定wifi使用的gpio: (其中wakeup的功能没有使用,可以去除;poweron引脚和上一小节设置的pinmux对应)
该配置位于build/boards/default/dts/{processor_name}/{processor_name}_base.dtsi文件中。