rtl8821cu-wifibluetooth驱动链接见上方适配rtl8821cu wifi1. 修改设备树将默认板载wifi芯片节点sdio_pwrseq和sdmmc2注释掉添加wireless_wlan节点diff --git a/arch/arm64/boot/dts/rockchip/OK3568-C-common.dtsi b/arch/arm64/boot/dts/rockchip/OK3568-C-common.dtsi index 31ffd6024..ee36adb40 100644 --- a/arch/arm64/boot/dts/rockchip/OK3568-C-common.dtsi b/arch/arm64/boot/dts/rockchip/OK3568-C-common.dtsi -334,7 334,7 regulator-off-in-suspend; }; }; - /* sdio_pwrseq: sdio-pwrseq { compatible mmc-pwrseq-simple; clocks rk809 1; -342,16 342,10 pinctrl-names default; pinctrl-0 wifi_enable_h; - /* - * On the module itself this is one of these (depending - * on the actual card populated): - * - SDIO_RESET_L_WL_REG_ON - * - PDN (power down when low) - */ post-power-on-delay-ms 200; reset-gpios gpio3 RK_PD4 GPIO_ACTIVE_LOW; }; - */ vcc2v5_sys: vcc2v5-ddr { compatible regulator-fixed; regulator-name vcc2v5-sys; -553,6 547,14 ; default-brightness-level 200; }; wireless_wlan: wireless-wlan { compatible wlan-platdata; rockchip,grf grf; wifi_chip_type RTL8821CU; //rtl8821cu WIFI,vbat_gpio gpio3 RK_PA6 GPIO_ACTIVE_LOW; //电源引脚 status okay; }; }; reserved_memory { -826,7 828,7 }; }; }; - /* sdmmc2 { max-frequency 150000000; supports-sdio; -842,7 844,7 sd-uhs-sdr104; status okay; }; - */ uart8 { status okay; pinctrl-names default;2. 编译驱动成ko模块将板载wifi芯片驱动注释掉diff --git a/arch/arm64/configs/OK3568-C-android_defconfig b/arch/arm64/configs/OK3568-C-android_defconfig index 1d2438c84..2b3ab11c6 100644 --- a/arch/arm64/configs/OK3568-C-android_defconfig b/arch/arm64/configs/OK3568-C-android_defconfig -419,10 419,12 CONFIG_USB_SIERRA_NETy # CONFIG_WLAN_VENDOR_QUANTENNA is not set CONFIG_WL_ROCKCHIPy CONFIG_WIFI_BUILD_MODULEy -CONFIG_MVL88W8987m # CONFIG_MVL88W8987m # CONFIG_MXMWIFIEX is not set CONFIG_RTL8723CSm -CONFIG_RTL8821CSm # CONFIG_RTL8821CSm CONFIG_BT_RTKBTUSBy CONFIG_RTL8821CUm CONFIG_RTL8822BSm CONFIG_LTEy CONFIG_LTE_RM310y3. android层修改diff --git a/frameworks/opt/net/wifi/libwifi_hal/rk_wifi_ctrl.cpp b/frameworks/opt/net/wifi/libwifi_hal/rk_wifi_ctrl.cpp index 8e2dc3a3db..a99a1552e0 100755 --- a/frameworks/opt/net/wifi/libwifi_hal/rk_wifi_ctrl.cpp b/frameworks/opt/net/wifi/libwifi_hal/rk_wifi_ctrl.cpp -61,6 61,7 static wifi_device supported_wifi_devices[] { {RTL8192DU, 0bda:8194}, {RTL8812AU, 0bda:8812}, {RTL8821CS, 024c:c821}, {RTL8821CU, 0bda:c820}, {RTL8822CU, 0bda:c82c}, {RTL8822CS, 024c:c822}, {SSV6051, 3030:3030}, -153,7 154,7 int check_wifi_chip_type_string(char *type) PLOG(DEBUG) PCIE WIFI identify sucess; else { PLOG(DEBUG) maybe there is no usb wifi or sdio or pcie wifi,set default wifi module Brocom APXXX; - strcpy(recoginze_wifi_chip, APXXX); strcpy(recoginze_wifi_chip, RTL8821CU); identify_sucess 1 ; } } diff --git a/frameworks/opt/net/wifi/libwifi_hal/wifi_hal_common.cpp b/frameworks/opt/net/wifi/libwifi_hal/wifi_hal_common.cpp index 69f3ed3e27..67082398ee 100755 --- a/frameworks/opt/net/wifi/libwifi_hal/wifi_hal_common.cpp b/frameworks/opt/net/wifi/libwifi_hal/wifi_hal_common.cpp -47,6 47,7 extern C int delete_module(const char *, unsigned int); #define RTL8812AU_DRIVER_MODULE_PATH WIFI_MODULE_PATH8812au.ko #define RTL8822BE_DRIVER_MODULE_PATH WIFI_MODULE_PATH8822be.ko #define RTL8821CS_DRIVER_MODULE_PATH WIFI_MODULE_PATH8821cs.ko #define RTL8821CU_DRIVER_MODULE_PATH WIFI_MODULE_PATH8821cu.ko #define RTL8822CU_DRIVER_MODULE_PATH WIFI_MODULE_PATH8822cu.ko #define RTL8822CS_DRIVER_MODULE_PATH WIFI_MODULE_PATH8822cs.ko #define SSV6051_DRIVER_MODULE_PATH WIFI_MODULE_PATHssv6051.ko -76,6 77,7 extern C int delete_module(const char *, unsigned int); #define RTL8812AU_DRIVER_MODULE_NAME 8812au #define RTL8822BE_DRIVER_MODULE_NAME 8822be #define RTL8821CS_DRIVER_MODULE_NAME 8821cs #define RTL8821CU_DRIVER_MODULE_NAME 8821cu #define RTL8822CU_DRIVER_MODULE_NAME 8822cu #define RTL8822CS_DRIVER_MODULE_NAME 8822cs #define SSV6051_DRIVER_MODULE_NAME ssv6051 -158,6 160,7 wifi_ko_file_name module_list[] {RTL8189FS, RTL8189FS_DRIVER_MODULE_NAME, RTL8189FS_DRIVER_MODULE_PATH, UNKKOWN_DRIVER_MODULE_ARG}, {RTL8822BE, RTL8822BE_DRIVER_MODULE_NAME, RTL8822BE_DRIVER_MODULE_PATH, UNKKOWN_DRIVER_MODULE_ARG}, {RTL8821CS, RTL8821CS_DRIVER_MODULE_NAME, RTL8821CS_DRIVER_MODULE_PATH, UNKKOWN_DRIVER_MODULE_ARG}, {RTL8821CU, RTL8821CU_DRIVER_MODULE_NAME, RTL8821CU_DRIVER_MODULE_PATH, UNKKOWN_DRIVER_MODULE_ARG}, {RTL8822CU, RTL8822CU_DRIVER_MODULE_NAME, RTL8822CU_DRIVER_MODULE_PATH, UNKKOWN_DRIVER_MODULE_ARG}, {RTL8822CS, RTL8822CS_DRIVER_MODULE_NAME, RTL8822CS_DRIVER_MODULE_PATH, UNKKOWN_DRIVER_MODULE_ARG}, {SSV6051, SSV6051_DRIVER_MODULE_NAME, SSV6051_DRIVER_MODULE_PATH, SSV6051_DRIVER_MODULE_ARG}, -353,7 356,7 int wifi_load_driver() { char* wifi_ko_path NULL ; char* wifi_ko_arg NULL; int i 0; - int count 100; //int count 100; if (is_wifi_driver_loaded()) { return 0; } -378,6 381,9 int wifi_load_driver() { } if (strstr(wifi_ko_path, CM358_DRIVER_MODULE_NAME)) { insmod(MLAN_DRIVER_MODULE_PATH, ); } if (strstr(wifi_ko_path, RTL8821CU_DRIVER_MODULE_NAME)) { insmod(RTL8821CU_DRIVER_MODULE_PATH, ); } if (insmod(wifi_ko_path, wifi_ko_arg) 0) { -392,12 398,12 int wifi_load_driver() { if (wifi_change_driver_state(WIFI_DRIVER_STATE_ON) 0) return -1; #endif - while (count-- 0) { while (1) { if (is_wifi_driver_loaded()) { property_set(DRIVER_PROP_NAME, ok); return 0; } - usleep(200000); usleep(1000000); } property_set(DRIVER_PROP_NAME, timeout); return -1; -467,10 473,11 int wifi_change_fw_path(const char *fwpath) { int len; int fd; int ret 0; - return ret; if (wifi_type[0] 0) check_wifi_chip_type_string(wifi_type); - if (0 ! strncmp(wifi_type, AP, 2)) return ret; if (0 ! strncmp(wifi_type, RTL, 3)) return ret; if (!fwpath) return ret; fd TEMP_FAILURE_RETRY(open(WIFI_DRIVER_FW_PATH_PARAM, O_WRONLY)); if (fd 0) {适配rtl8821cu蓝牙1. 驱动源码见资源链接2. android层修改diff --git a/device/rockchip/common/init.connectivity.rc b/device/rockchip/common/init.connectivity.rc index 1a345f009c..35c97ae115 100755 --- a/device/rockchip/common/init.connectivity.rc b/device/rockchip/common/init.connectivity.rc -8,6 8,7 on zygote-start chown bluetooth net_bt /proc/bluetooth/sleep/lpm chown bluetooth net_bt /proc/bluetooth/sleep/btwrite insmod /vendor/lib/modules/rtk_btusb.ko chmod 0660 /dev/rtk_btusb chown bluetooth net_bt /dev/rtk_btusb chmod 0660 /dev/rtkbt_dev diff --git a/device/rockchip/common/sepolicy/vendor/file_contexts b/device/rockchip/common/sepolicy/vendor/file_contexts index df2a46abdc..ea5db7f235 100644 --- a/device/rockchip/common/sepolicy/vendor/file_contexts b/device/rockchip/common/sepolicy/vendor/file_contexts -204,6 204,7 /sys/devices/virtual/power_supply(/.*)? u:object_r:sysfs_power:s0 /dev/rtkbt_dev u:object_r:rtkbt_device:s0 /dev/rtk_btusb u:object_r:rtkbt_device:s0 #weaver hal /vendor/bin/hw/android\.hardware\.weaver1\.0-service u:object_r:weaver-hal-1-0_exec:s0 diff --git a/device/rockchip/common/wifi_bt_common.mk b/device/rockchip/common/wifi_bt_common.mk index d446b9cb3a..92f2ef90e4 100644 --- a/device/rockchip/common/wifi_bt_common.mk b/device/rockchip/common/wifi_bt_common.mk -20,7 20,7 endif # bluetooth support ifeq ($(strip $(BOARD_CONNECTIVITY_VENDOR)), Broadcom) BOARD_HAVE_BLUETOOTH : true -BOARD_HAVE_BLUETOOTH_BCM : true BOARD_HAVE_BLUETOOTH_BCM : false BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR ? device/rockchip/$(TARGET_BOARD_PLATFORM)/bluetooth ifeq ($(strip $(PRODUCT_BUILD_MODULE)), px5car) -40,7 40,7 endif BOARD_HAVE_BLUETOOTH_RTK : true BOARD_CONNECTIVITY_VENDOR: nxp -BOARD_HAVE_BLUETOOTH_NXP : true BOARD_HAVE_BLUETOOTH_NXP : false BOARD_WLAN_DEVICE : nxp ifeq ($(strip $(BOARD_CONNECTIVITY_VENDOR)), nxp) BOARD_HAVE_BLUETOOTH_NXP : true diff --git a/device/rockchip/rk356x/bluetooth/bdroid_buildcfg.h b/device/rockchip/rk356x/bluetooth/bdroid_buildcfg.h index a3d1e28900..e9d183d9d6 100644 --- a/device/rockchip/rk356x/bluetooth/bdroid_buildcfg.h b/device/rockchip/rk356x/bluetooth/bdroid_buildcfg.h -17,7 17,7 #ifndef _BDROID_BUILDCFG_H #define _BDROID_BUILDCFG_H -#define BTM_DEF_LOCAL_NAME rk3566 #define BTM_DEF_LOCAL_NAME rk3568 #define BTA_DM_COD {0x1A, 0x01, 0x10} #define BLE_PRIVACY_SPT FALSE diff --git a/hardware/realtek/rtkbt/code/libbt-vendor/src/bt_vendor_rtk.c b/hardware/realtek/rtkbt/code/libbt-vendor/src/bt_vendor_rtk.c index b14a297d41..16ab8c4594 100755 --- a/hardware/realtek/rtkbt/code/libbt-vendor/src/bt_vendor_rtk.c b/hardware/realtek/rtkbt/code/libbt-vendor/src/bt_vendor_rtk.c -255,7 255,7 static void load_rtkbt_conf() FILE *fp fopen(RTKBT_CONF_FILE, rt); if (!fp) { ALOGE(%s unable to open file %s: %s, __func__, RTKBT_CONF_FILE, strerror(errno)); - strcpy(rtkbt_device_node,/dev/rtkbt_dev); strcpy(rtkbt_device_node,/dev/rtk_btusb); return; } -272,7 272,7 static void load_rtkbt_conf() split strchr(line_ptr, ); if (!split) { ALOGE(%s no key/value separator found on line %d., __func__, line_num); - strcpy(rtkbt_device_node,/dev/rtkbt_dev); strcpy(rtkbt_device_node,/dev/rtk_btusb); fclose(fp); return; } -289,7 289,7 static void load_rtkbt_conf() if(rtkbt_device_node[0]?){ /*1.Scan_Usb_Device*/ if(Scan_Usb_Devices_For_RTK(USB_DEVICE_DIR) 0x01) { - strcpy(rtkbt_device_node,/dev/rtkbt_dev); strcpy(rtkbt_device_node,/dev/rtk_btusb); } else{ int i 0; -309,18 309,22 static void load_rtkbt_conf() rtkbt_transtype | RTKBT_TRANS_H4; } } - else if(strcmp(rtkbt_device_node, /dev/rtkbt_dev)) { else if(strcmp(rtkbt_device_node, /dev/rtk_btusb)) { //default use h5 rtkbt_transtype | RTKBT_TRANS_H5; } - if(strcmp(rtkbt_device_node, /dev/rtkbt_dev)) { if(strcmp(rtkbt_device_node, /dev/rtk_btusb)) { rtkbt_transtype | RTKBT_TRANS_UART; } else { rtkbt_transtype | RTKBT_TRANS_USB; rtkbt_transtype | RTKBT_TRANS_H4; } if(!strcmp(rtkbt_device_node, /dev/rtk_btusb)) { rtkbt_transtype | RTKBT_TRANS_USB; rtkbt_transtype | RTKBT_TRANS_H4; } } static void byte_reverse(unsigned char* data, int len) diff --git a/hardware/realtek/rtkbt/rtkbt.mk b/hardware/realtek/rtkbt/rtkbt.mk index 620a0f298a..68b9a93400 100755 --- a/hardware/realtek/rtkbt/rtkbt.mk b/hardware/realtek/rtkbt/rtkbt.mk -16,7 16,8 PRODUCT_COPY_FILES \ else PRODUCT_COPY_FILES \ - $(CUR_PATH)/vendor/etc/bluetooth/rtkbt.conf:vendor/etc/bluetooth/rtkbt.conf $(CUR_PATH)/vendor/etc/bluetooth/rtkbt.conf:vendor/etc/bluetooth/rtkbt.conf \ $(CUR_PATH)/vendor/etc/bluetooth/rtk_btusb.ko:vendor/lib/modules/rtk_btusb.ko endif diff --git a/hardware/realtek/rtkbt/vendor/etc/bluetooth/rtk_btusb.ko b/hardware/realtek/rtkbt/vendor/etc/bluetooth/rtk_btusb.ko new file mode 100755 index 0000000000..4e61567375 Binary files /dev/null and b/hardware/realtek/rtkbt/vendor/etc/bluetooth/rtk_btusb.ko differ diff --git a/hardware/realtek/rtkbt/vendor/etc/bluetooth/rtkbt.conf b/hardware/realtek/rtkbt/vendor/etc/bluetooth/rtkbt.conf index a1e9b39361..6de4399b2c 100755 --- a/hardware/realtek/rtkbt/vendor/etc/bluetooth/rtkbt.conf b/hardware/realtek/rtkbt/vendor/etc/bluetooth/rtkbt.conf -8,8 8,8 DevClassMajorClass0x01 DevClassMinorClass0x1C #Indicate USB or UART driver bluetooth -#BtDeviceNode/dev/rtkbt_dev -BtDeviceNode?/dev/ttyS1:H5 BtDeviceNode/dev/rtk_btusb #BtDeviceNode?/dev/ttyS1:H5 # BtSnoop log output file BtSnoopFileName/data/misc/bluedroid/btsnoop_hci.cfa