wireless-wlan {
compatible = "wlan-platdata";
- wifi_chip_type = "";
+ wifi_chip_type = "rkwifi"; // rkwifi, like ap6xxx, rk90x
+ // rtl8188eu
+ // esp8089
+ // other, for other wifi
sdio_vref = <1800>; //1800mv or 3300mv
//power_ctrl_by_pmu;
CONFIG_USB_NET_INT51X1=y
CONFIG_USB_IPHETH=y
CONFIG_USB_SIERRA_NET=y
+CONFIG_RTL8188EU=y
+CONFIG_ESP8089=y
CONFIG_RKWIFI=y
CONFIG_AP6335=y
# CONFIG_INPUT_MOUSEDEV is not set
if WLAN
-choice
- prompt "WiFi device driver support"
- default WIFI_NONE
-
- config WIFI_NONE
- bool "No WiFi"
-
- config RDA5990
- depends on WLAN_80211 && MMC
- select WIRELESS_EXT
- select WEXT_PRIV
- select IEEE80211
- bool "rda 5990p"
- ---help---
- rda5990P fm bt wifi
+# config RDA5990
+# depends on WLAN_80211 && MMC
+# select WIRELESS_EXT
+# select WEXT_PRIV
+# select IEEE80211
+# bool "rda 5990p"
+# ---help---
+# rda5990P fm bt wifi
-source "drivers/net/wireless/rockchip_wlan/mt5931/Kconfig"
-source "drivers/net/wireless/rockchip_wlan/rtl8192cu/Kconfig"
-source "drivers/net/wireless/rockchip_wlan/rtl8192du/Kconfig"
+#source "drivers/net/wireless/rockchip_wlan/mt5931/Kconfig"
+#source "drivers/net/wireless/rockchip_wlan/rtl8192cu/Kconfig"
+#source "drivers/net/wireless/rockchip_wlan/rtl8192du/Kconfig"
source "drivers/net/wireless/rockchip_wlan/rtl8188eu/Kconfig"
-source "drivers/net/wireless/rockchip_wlan/rtl8723au/Kconfig"
-source "drivers/net/wireless/rockchip_wlan/rtl8723as/Kconfig"
-source "drivers/net/wireless/rockchip_wlan/rtl8723bs/Kconfig"
+#source "drivers/net/wireless/rockchip_wlan/rtl8723au/Kconfig"
+#source "drivers/net/wireless/rockchip_wlan/rtl8723as/Kconfig"
+#source "drivers/net/wireless/rockchip_wlan/rtl8723bs/Kconfig"
source "drivers/net/wireless/rockchip_wlan/esp8089/Kconfig"
source "drivers/net/wireless/rockchip_wlan/rkwifi/Kconfig"
-endchoice
choice
depends on RKWIFI
endchoice
-menuconfig MTK_WIRELESS_SOLUTION
- bool "MTK wireless chip configuration"
- help
- "enable/disable and config MTK wireless solution"
+#menuconfig MTK_WIRELESS_SOLUTION
+# bool "MTK wireless chip configuration"
+# help
+# "enable/disable and config MTK wireless solution"
-if MTK_WIRELESS_SOLUTION
-source "drivers/net/wireless/rockchip_wlan/combo_mt66xx/Kconfig"
-source "drivers/net/wireless/rockchip_wlan/mt5931_kk/Kconfig"
-endif # MTK_WIRELESS_SOLUTION
+#if MTK_WIRELESS_SOLUTION
+#source "drivers/net/wireless/rockchip_wlan/combo_mt66xx/Kconfig"
+#source "drivers/net/wireless/rockchip_wlan/mt5931_kk/Kconfig"
+#endif # MTK_WIRELESS_SOLUTION
endif
extern void esp_sdio_exit(void) ;
#if 1
-int rockchip_wifi_init_module(void)
+int rockchip_wifi_init_module_esp8089(void)
{
return esp_sdio_init();
}
-void rockchip_wifi_exit_module(void)
+void rockchip_wifi_exit_module_esp8089(void)
{
esp_sdio_exit();
}
#endif //ESP_ACK_INTERRUPT
-EXPORT_SYMBOL(rockchip_wifi_init_module);
-EXPORT_SYMBOL(rockchip_wifi_exit_module);
+EXPORT_SYMBOL(rockchip_wifi_init_module_esp8089);
+EXPORT_SYMBOL(rockchip_wifi_exit_module_esp8089);
//module_init(esp_sdio_init);
//module_exit(esp_sdio_exit);
extern char WIFI_MODULE_NAME[];
extern char RKWIFI_DRV_VERSION[];
-int rockchip_wifi_init_module(void)
+int rockchip_wifi_init_module_rkwifi(void)
{
printk("=======================================================\n");
printk("==== Launching Wi-Fi driver! (Powered by Rockchip) ====\n");
return dhd_module_init();
}
-void rockchip_wifi_exit_module(void)
+void rockchip_wifi_exit_module_rkwifi(void)
{
printk("=======================================================\n");
printk("== Dis-launching Wi-Fi driver! (Powered by Rockchip) ==\n");
dhd_module_cleanup();
}
-EXPORT_SYMBOL(rockchip_wifi_init_module);
-EXPORT_SYMBOL(rockchip_wifi_exit_module);
+EXPORT_SYMBOL(rockchip_wifi_init_module_rkwifi);
+EXPORT_SYMBOL(rockchip_wifi_exit_module_rkwifi);
//late_initcall(rockchip_wifi_init_module);
//module_exit(rockchip_wifi_exit_module);
/*
#include "wifi_version.h"
#include <linux/rfkill-wlan.h>
-int rockchip_wifi_init_module(void)
+int rockchip_wifi_init_module_rtl8188eu(void)
{
printk("\n");
printk("=======================================================\n");
return rtw_drv_entry();
}
-void rockchip_wifi_exit_module(void)
+void rockchip_wifi_exit_module_rtl8188eu(void)
{
printk("\n");
printk("=======================================================\n");
rockchip_wifi_power(0);
}
-EXPORT_SYMBOL(rockchip_wifi_init_module);
-EXPORT_SYMBOL(rockchip_wifi_exit_module);
+EXPORT_SYMBOL(rockchip_wifi_init_module_rtl8188eu);
+EXPORT_SYMBOL(rockchip_wifi_exit_module_rtl8188eu);
//module_init(rtw_drv_entry);
//module_exit(rtw_drv_halt);
#include <asm/uaccess.h>
#include <linux/rfkill-wlan.h>
+extern int get_wifi_chip_type(void);
+
static ssize_t wifi_chip_read(struct class *cls, struct class_attribute *attr, char *_buf)
{
int count = 0;
+ int type = get_wifi_chip_type();
#ifdef CONFIG_RTL8192CU
count = sprintf(_buf, "%s", "RTL8188CU");
printk("Current WiFi chip is RTL8192DU.\n");
#endif
+if(type == WIFI_RTL8188EU) {
#ifdef CONFIG_RTL8188EU
count = sprintf(_buf, "%s", "RTL8188EU");
printk("Current WiFi chip is RTL8188EU.\n");
#endif
+}
#ifdef CONFIG_RTL8723AU
count = sprintf(_buf, "%s", "RTL8723AU");
printk("Current WiFi chip is RTL8723BS.\n");
#endif
+if(type == WIFI_RKWIFI) {
#ifdef CONFIG_BCM4330
count = sprintf(_buf, "%s", "BCM4330");
printk("Current WiFi chip is BCM4330.\n");
count = sprintf(_buf, "%s", "RK903");
printk("Current WiFi chip is GB86302I.\n");
#endif
+}
#ifdef CONFIG_MTK_COMBO
count = sprintf(_buf, "%s", "MT6620");
printk("Current WiFi chip is MT7601.\n");
#endif
+if(type == WIFI_ESP8089) {
#ifdef CONFIG_ESP8089
count = sprintf(_buf, "%s", "ESP8089");
printk("Current WiFi chip is ESP8089.\n");
#endif
+}
return count;
}
#else
extern int rockchip_wifi_init_module(void);
extern void rockchip_wifi_exit_module(void);
+extern int rockchip_wifi_init_module_rkwifi(void);
+extern void rockchip_wifi_exit_module_rkwifi(void);
+extern int rockchip_wifi_init_module_rtl8188eu(void);
+extern void rockchip_wifi_exit_module_rtl8188eu(void);
+extern int rockchip_wifi_init_module_esp8089(void);
+extern void rockchip_wifi_exit_module_esp8089(void);
#endif
static struct semaphore driver_sem;
static int wifi_driver_insmod = 0;
+static int wifi_init_exit_module(int enable)
+{
+ int ret = 0;
+ int type = get_wifi_chip_type();
+#ifdef CONFIG_RKWIFI
+ if (type == WIFI_RKWIFI) {
+ if (enable > 0)
+ ret = rockchip_wifi_init_module_rkwifi();
+ else
+ rockchip_wifi_exit_module_rkwifi();
+ return ret;
+ }
+#endif
+#ifdef CONFIG_RTL8188EU
+ if (type == WIFI_RTL8188EU) {
+ if (enable > 0)
+ ret = rockchip_wifi_init_module_rtl8188eu();
+ else
+ rockchip_wifi_exit_module_rtl8188eu();
+ return ret;
+ }
+#endif
+#ifdef CONFIG_ESP8089
+ if (type == WIFI_ESP8089) {
+ if (enable > 0)
+ ret = rockchip_wifi_init_module_esp8089();
+ else
+ rockchip_wifi_exit_module_esp8089();
+ return ret;
+ }
+#endif
+
+#if !defined(CONFIG_RKWIFI) && !defined(CONFIG_RTL8188EU) && !defined(CONFIG_ESP8089)
+ {
+ if (enable > 0)
+ ret = rockchip_wifi_init_module();
+ else
+ rockchip_wifi_exit_module();
+ }
+#endif
+
+ return ret;
+}
+
static ssize_t wifi_driver_write(struct class *cls, struct class_attribute *attr, const char *_buf, size_t _count)
{
int enable = 0, ret = 0;
return _count;
}
if(enable > 0) {
- ret = rockchip_wifi_init_module();
+ ret = wifi_init_exit_module(enable);
if (ret >= 0)
wifi_driver_insmod = enable;
} else {
- rockchip_wifi_exit_module();
+ wifi_init_exit_module(enable);
wifi_driver_insmod = enable;
}
struct rksdmmc_gpio GPS_LAN; //pin33--GPS_LAN
};
+enum {
+ WIFI_RKWIFI,
+ WIFI_RTL8188EU,
+ WIFI_ESP8089
+};
+
int rfkill_get_wifi_power_state(int *power, int *vref_ctrl_enable);
void *rockchip_mem_prealloc(int section, unsigned long size);
int rockchip_wifi_ref_voltage(int on);
#endif
;
+static char wifi_chip_type_string[64];
+int get_wifi_chip_type(void)
+{
+ int type;
+ if (strcmp(wifi_chip_type_string, "rkwifi") == 0) {
+ type = WIFI_RKWIFI;
+ } else if (strcmp(wifi_chip_type_string, "rtl8188eu") == 0) {
+ type = WIFI_RTL8188EU;
+ } else if (strcmp(wifi_chip_type_string, "esp8089") == 0) {
+ type = WIFI_ESP8089;
+ } else {
+ type = WIFI_RKWIFI;
+ }
+ return type;
+}
+EXPORT_SYMBOL(get_wifi_chip_type);
+
/***********************************************************
*
* Broadcom Wifi Static Memory
memset(data, 0, sizeof(*data));
+ ret = of_property_read_string(node, "wifi_chip_type", &strings);
+ if (ret) {
+ printk("%s: Can not read wifi_chip_type, set default to rkwifi.\n", __func__);
+ strcpy(wifi_chip_type_string, "rkwifi");
+ }
+ strcpy(wifi_chip_type_string, strings);
+ printk("%s: wifi_chip_type = %s\n", __func__, wifi_chip_type_string);
+
if(cpu_is_rk3036()){
/* ret = of_property_read_u32(node, "sdio_vref", &value);
if (ret < 0) {