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,其他部分则是需求开启)。

    _images/im-code.png

由于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对应)

_images/wifi_pin.png

该配置位于build/boards/default/dts/{processor_name}/{processor_name}_base.dtsi文件中。