Platform: RK3288
OS: Android 6.0
Kernel: 3.10.92
背景:
RK3288 Android6.0平台对AP6356S的支持不是很完善,直接修改wifi chip type后,会出现如下error:
[ 9.169008] dhdsdio_download_nvram: Open nvram file failed /system/etc/firmware/nvram_ap6356s.txt
[ 9.169016] _dhdsdio_download_firmware: dongle nvram file download failed
[ 9.169039] dhd_net_bus_devreset: dhd_bus_devreset: -35
[ 9.169045] dhd_prot_ioctl : bus is down. we have nothing to do
[ 9.169048] dhd_net_bus_devreset: dhd_bus_devreset: -35
也就是说对应的bin文件和nvram文件缺失,需要更新固件和驱动。
解决方法:
1. 更新驱动
diff --git a/arch/arm/boot/dts/rk3288-ben.dts b/arch/arm/boot/dts/rk3288-ben.dts
index c6faa65..d903a36 100644
@@ -17,19 +17,19 @@
* rtl8188eu, rtl8723bs, rtl8723bu
* esp8089
*/
- wifi_chip_type = "ap6335";
+ wifi_chip_type = "ap6354";
sdio_vref = <1800>; //1800mv or 3300mv
//keep_wifi_power_on;
//power_ctrl_by_pmu;
- power_pmu_regulator = "act_ldo3";
+ power_pmu_regulator = "rk818_ldo8";
power_pmu_enable_level = <1>; //1->HIGH, 0->LOW
//vref_ctrl_enable;
//vref_ctrl_gpio = <&gpio0 GPIO_A2 GPIO_ACTIVE_HIGH>;
- vref_pmu_regulator = "act_ldo3";
+ vref_pmu_regulator = "rk818_ldo8";
vref_pmu_enable_level = <1>; //1->HIGH, 0->LOW
WIFI,poweren_gpio = <&gpio4 GPIO_D4 GPIO_ACTIVE_HIGH>;
@@ -742,8 +742,8 @@
rk818_ldo8_reg: regulator@11 {
regulator-name= "rk818_ldo8";
- regulator-min-microvolt = <3300000>;
- regulator-max-microvolt = <3300000>;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
regulator-initial-state = <3>;
regulator-state-mem {
regulator-state-enabled;
diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_config.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_config.c
index 5f7e44c..2735b80 100755
--- a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_config.c
+++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_config.c
@@ -5,7 +5,7 @@
#include <bcmutils.h>
#include <hndsoc.h>
#include <bcmsdbus.h>
-#if defined(HW_OOB) || defined(FORCE_WOWLAN)
+#if defined(HW_OOB) || defined(FORCE_WOWLAN)
#include <bcmdefs.h>
#include <bcmsdh.h>
#include <sdio.h>
@@ -15,26 +15,25 @@
#include <dhd_config.h>
#include <dhd_dbg.h>
-/* message levels */
+/* message levels */
#define CONFIG_ERROR_LEVEL 0x0001
#define CONFIG_TRACE_LEVEL 0x0002
-#define USER_CONFIG_PATH "/data/misc/roam/config.properties"
-
+
uint config_msg_level = CONFIG_ERROR_LEVEL;
-
+
#define CONFIG_ERROR(x) \
- do { \
+ do