目录
Android 7.1
使用chipid和rev 区分ap6256 、ap6255 模组,模组的pid/vid都是02d0:a9bf,无法使用pid/vid做区分
问题描述:
1、系统通过/sys/module/bcmdhd/parameters/chipid信息进行识别
2、需要系统设置下的WIFI开关打开后/sys/module/bcmdhd/parameters/chipid节点才能生成
3、需要打开一下WIFI开关,系统设置下关于设备界面的WIFI模组型号显示才会刷新
4、WIFI开关打开一次后,以后无论WIFI开关处于什么状态,系统设置下关于设备界面的WIFI模组型号都会与板载WIFI模组型号保持一致
5、恢复出厂设置后,同样要打开一次wifi开关,系统设置下关于设备界面的WIFI模组型号显示才会刷新
6、核心板插入到其它与原有不同模组型号的底板,需要恢复一下出厂设置清除缓存才能正常显示型号
modified: hardware/libhardware_legacy/wifi/rk_wifi_ctrl.c
modified: hardware/libhardware_legacy/wifi/wifi.c
modified: kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_sdio.c
modified: packages/apps/Settings/src/com/android/settings/DeviceInfoSettings.java
diff --git a/hardware/libhardware_legacy/wifi/rk_wifi_ctrl.c b/hardware/libhardware_legacy/wifi/rk_wifi_ctrl.c
index aa22a06..2ca2675 100755
--- a/hardware/libhardware_legacy/wifi/rk_wifi_ctrl.c
+++ b/hardware/libhardware_legacy/wifi/rk_wifi_ctrl.c
@@ -90,6 +90,7 @@ static wifi_device supported_wifi_devices[] = {
{"AP6356S", "02d0:4356"},
{"AP6335", "02d0:4335"},
{"AP6255", "02d0:a9bf"},
+ {"AP6256", "02d0:a9bf"},
{"AP6203BM", "02d0:a804"},
{"RTL8822BE", "10ec:b822"},
{"AIC8800DS", "5449:0145"},
@@ -102,6 +103,7 @@ int get_wifi_device_id(const char *bus_dir, const char *prefix)
{
int idnum;
int i = 0;
+ int is_chipid_6256 = 0;
int ret = invalid_wifi_device_id;
DIR *dir;
struct dirent *next;
@@ -113,6 +115,20 @@ int get_wifi_device_id(const char *bus_dir, const char *prefix)
return invalid_wifi_device_id;
}
+ fp = fopen("/sys/module/bcmdhd/parameters/chipid", "r");
+ if (fp == NULL) {
+ ALOGE("Couldn't open /sys/module/bcmdhd/parameters/chipid");
+ }else {
+ char line[64];
+ while (fgets(line, sizeof(line), fp)) {
+ if ((strstr(line, "Chip:4345") != NULL) && (strstr(line, "Rev:9") != NULL)) {
+ ALOGE( "Wifi chip id is 4345 (ap6256)...");