RK3399 移植WIFI RTL8822cs

1.背景介紹

  • Platform: Rockchip 3399
  • OS: linux
  • kernel: 4.19
  • WIFI/BT模組: RTL8822CS

2.說(shuō)明

具體的資料包由 WIFI模塊廠商提供。
驅(qū)動(dòng):RTL8822CS_WiFi_linux_v5.12.1.1-0-gf673ce3_COEX20200922-1e1e.20210125.rar

3.編譯內(nèi)核和驅(qū)動(dòng)

  • 將廠商提供的驅(qū)動(dòng)目錄拷貝到 /kernel/drivers/net/wireless/rockchip_wlan/目錄下,并重命名為rtl8822cs。
  • 修改當(dāng)前目錄下的Makefile文件
    增加 obj-$(CONFIG_RTL8822CS) += rtl8822cs/
  • 修改當(dāng)前目錄下的Kconfig文件
    增加source "drivers/net/wireless/rockchip_wlan/rtl8822cs/Kconfig"
  • 修改rtl8822cs/Kconfig
+++ b/kernel_4.19/drivers/net/wireless/rockchip_wlan/rtl8822cs/Kconfig
@@ -1,4 +1,4 @@
-config RTL8822BS
+config RTL8822CS
  • 修改rtl8822cs/Makefile:
CONFIG_PLATFORM_I386_PC=n
CONFIG_PLATFORM_ARM_RK3399= y
ifeq ($(CONFIG_PLATFORM_ARM_RK3399), y)
 EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_ROCKCHIPS
 EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
 EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
 ifeq ($(CONFIG_SDIO_HCI), y)
 EXTRA_CFLAGS += -DRTW_SUPPORT_PLATFORM_SHUTDOWN
 endif
 # default setting for Special function
 ARCH := arm
 CROSS_COMPILE := /home/android_sdk/Rockchip/Rk3188/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-
 KSRC := /home/android_sdk/Rockchip/Rk3188/kernel
 MODULE_NAME := 8822cs
 endif
  • dts中修改wifi_chip_type
        wireless-wlan {
                compatible = "wlan-platdata";
                rockchip,grf = <&grf>;
-               wifi_chip_type = "ap6398s";
+               wifi_chip_type = "rtl8822cs";
                sdio_vref = <1800>;
                pinctrl-0 = <&wlan_pen>;
  • 然后編譯驅(qū)動(dòng)到內(nèi)核,將生成的boot.img燒錄到板子上

4.SDIO初始化異常問(wèn)題

使用Rtl8822cs支持3.0模塊時(shí),初始化不過(guò),異常log如下:

 [    1.951085] mmc0: error -5 whilst initialising SDIO card

解決方法:打上以下補(bǔ)?。?/p>

diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c
index 2046eff..6626752 100644
--- a/drivers/mmc/core/sdio.c
+++ b/drivers/mmc/core/sdio.c
@@ -646,7 +646,7 @@ static int mmc_sdio_init_card(struct mmc_host *host, u32 ocr,
* try to init uhs card. sdio_read_cccr will take over this task
* to make sure which speed mode should work.
*/
- if (!powered_resume && (rocr & ocr & R4_18V_PRESENT)) {
+ /*if (!powered_resume && (rocr & ocr & R4_18V_PRESENT)) {
        err = mmc_set_uhs_voltage(host, ocr_card);
        if (err == -EAGAIN) {
            mmc_sdio_resend_if_cond(host, card);
@@ -655,7 +655,10 @@ static int mmc_sdio_init_card(struct mmc_host *host, u32 
ocr,        } else if (err) {
            ocr &= ~R4_18V_PRESENT;
        }
- }
+ }*/
+
+ ocr &= R4_18V_PRESENT;
/*
* For native busses: set card RCA and quit open drain mode

5. 拿掉p2p0 接口

  • 按照上述配置后會(huì)出現(xiàn)p2p0 和 wlan02個(gè)接口。


    image.png
  • 修改rtl8822cs/Makefile 如下:
CONFIG_AP_MODE = n
CONFIG_P2P = n
-EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE //delete this config

+++ b/kernel_4.19/drivers/net/wireless/rockchip_wlan/rtl8822cs/hal/hal_intf.c
@@ -899,7 +899,7 @@ s32 rtw_hal_mgnt_xmit(_adapter *padapter, struct xmit_frame *pmgntframe)
 #ifdef CONFIG_RTW_MGMT_QUEUE
        if (MLME_IS_AP(padapter) || MLME_IS_MESH(padapter)) {
                _enter_critical_bh(&pxmitpriv->lock, &irqL);
-               ret = mgmt_xmitframe_enqueue_for_sleeping_sta(padapter, pmgntframe);
+               //ret = mgmt_xmitframe_enqueue_for_sleeping_sta(padapter, pmgntframe);

修改后重新編譯,燒錄到板子上結(jié)果如圖:


image.jpeg

參考文檔如下:

Rockchip_Developer_Guide_Linux_WIFI_BT_CN.pdf
Quick_Start_Guide_for_Station_Mode.pdf
Quick_Start_Guide_for_SoftAP.pdf
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、添加內(nèi)核驅(qū)動(dòng) github rtl8821CU driver[https://github.com/brekt...
    Mr_Michael閱讀 6,977評(píng)論 0 1
  • WLAN DONGLE OVERVIEW The Dongle Host Driver (DHD) is the ...
    Lazy_Caaat閱讀 3,954評(píng)論 0 0
  • 學(xué)習(xí)完嵌入式課程,也買了開發(fā)板還有一個(gè)無(wú)名廠商的wifi模塊,想把WiFi模塊移植到開發(fā)板,且支持sta模式與ap...
    江不過(guò)閱讀 3,233評(píng)論 0 1
  • 下圖是RK2108的芯片架構(gòu)圖,這個(gè)MCU內(nèi)含400Mhz的ARM-M4F和600Mhz 的HiFi3 DSP,另...
    SDK搬運(yùn)工閱讀 3,718評(píng)論 0 1
  • 1. 概述 本文檔簡(jiǎn)要介紹基于RK3399實(shí)現(xiàn)充電管理相關(guān)部分,主要包括Typec充電和uboot關(guān)機(jī)充電兩大部分...
    Letcos閱讀 1,995評(píng)論 0 0

友情鏈接更多精彩內(nèi)容