diff --git a/atoll/wpa_supplicant_overlay.conf b/atoll/wpa_supplicant_overlay.conf
index c263fe35dfe3f61d9638a1a7d6e5834c060be415..8bd7139c62f0534dc94c1f7cda91d333f7705fb1 100644
--- a/atoll/wpa_supplicant_overlay.conf
+++ b/atoll/wpa_supplicant_overlay.conf
@@ -4,3 +4,4 @@ tdls_external_control=1
 wowlan_triggers=magic_pkt
 bss_max_count=400
 interworking=1
+config_methods=virtual_display virtual_push_button keypad
diff --git a/bengal/wpa_supplicant_overlay.conf b/bengal/wpa_supplicant_overlay.conf
index c263fe35dfe3f61d9638a1a7d6e5834c060be415..8bd7139c62f0534dc94c1f7cda91d333f7705fb1 100644
--- a/bengal/wpa_supplicant_overlay.conf
+++ b/bengal/wpa_supplicant_overlay.conf
@@ -4,3 +4,4 @@ tdls_external_control=1
 wowlan_triggers=magic_pkt
 bss_max_count=400
 interworking=1
+config_methods=virtual_display virtual_push_button keypad
diff --git a/default/wpa_supplicant_overlay.conf b/default/wpa_supplicant_overlay.conf
index c263fe35dfe3f61d9638a1a7d6e5834c060be415..8bd7139c62f0534dc94c1f7cda91d333f7705fb1 100644
--- a/default/wpa_supplicant_overlay.conf
+++ b/default/wpa_supplicant_overlay.conf
@@ -4,3 +4,4 @@ tdls_external_control=1
 wowlan_triggers=magic_pkt
 bss_max_count=400
 interworking=1
+config_methods=virtual_display virtual_push_button keypad
diff --git a/kona/BoardConfigWlan.mk b/kona/BoardConfigWlan.mk
index 4032171269e59accde5c88491310302b33733c94..4300f0538b55fc7db309c4719023eb2c3cece9f0 100644
--- a/kona/BoardConfigWlan.mk
+++ b/kona/BoardConfigWlan.mk
@@ -1,4 +1,4 @@
-BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/qca_cld3_wlan.ko
+BOARD_VENDOR_KERNEL_MODULES += $(foreach chip, $(TARGET_WLAN_CHIP), $(KERNEL_MODULES_OUT)/$(WLAN_CHIPSET)_$(chip).ko)
 
 WIFI_DRIVER_STATE_CTRL_PARAM := "/dev/wlan"
 WIFI_DRIVER_STATE_ON := "ON"
diff --git a/kona/wlan.mk b/kona/wlan.mk
index 50fd7eaafe9b8a3c88294ae2a7cc8fd9ac251c10..c8c713f436ebbcc81446fc868bf17756980abe74 100644
--- a/kona/wlan.mk
+++ b/kona/wlan.mk
@@ -1,9 +1,11 @@
+# Add supported chips for autodetection
+TARGET_WLAN_CHIP := qca6390
+
 WLAN_CHIPSET := qca_cld3
 
 #WPA
 WPA := wpa_cli
 
-PRODUCT_PACKAGES += $(WLAN_CHIPSET)_wlan.ko
 PRODUCT_PACKAGES += wifilearner
 PRODUCT_PACKAGES += $(WPA)
 
@@ -11,13 +13,12 @@ PRODUCT_PACKAGES += $(WPA)
 WIFI_HIDL_FEATURE_AWARE := true
 
 PRODUCT_COPY_FILES += \
-    device/qcom/wlan/kona/WCNSS_qcom_cfg.ini:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/WCNSS_qcom_cfg.ini \
-				device/qcom/wlan/kona/wpa_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant_overlay.conf \
-				device/qcom/wlan/kona/p2p_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/p2p_supplicant_overlay.conf \
-				device/qcom/wlan/kona/icm.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/icm.conf \
-                                frameworks/native/data/etc/android.hardware.wifi.aware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.aware.xml \
-                                frameworks/native/data/etc/android.hardware.wifi.rtt.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.rtt.xml \
-                                frameworks/native/data/etc/android.hardware.wifi.passpoint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.passpoint.xml
+			device/qcom/wlan/kona/wpa_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant_overlay.conf \
+			device/qcom/wlan/kona/p2p_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/p2p_supplicant_overlay.conf \
+			device/qcom/wlan/kona/icm.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/icm.conf \
+			frameworks/native/data/etc/android.hardware.wifi.aware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.aware.xml \
+			frameworks/native/data/etc/android.hardware.wifi.rtt.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.rtt.xml \
+			frameworks/native/data/etc/android.hardware.wifi.passpoint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.passpoint.xml
 
 # Enable STA + SAP Concurrency.
 WIFI_HIDL_FEATURE_DUAL_INTERFACE := true
@@ -27,3 +28,24 @@ QC_WIFI_HIDL_FEATURE_DUAL_AP := true
 
 # Enable STA + STA Feature.
 QC_WIFI_HIDL_FEATURE_DUAL_STA := true
+
+######## For multiple ko support ########
+
+# WLAN driver configuration file
+PRODUCT_COPY_FILES += \
+		      $(foreach chip, $(TARGET_WLAN_CHIP), \
+		      device/qcom/wlan/kona/WCNSS_qcom_cfg_$(chip).ini:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/$(chip)/WCNSS_qcom_cfg.ini)
+
+
+PRODUCT_PACKAGES += $(foreach chip, $(TARGET_WLAN_CHIP), $(WLAN_CHIPSET)_$(chip).ko)
+
+# Override WLAN configurations
+# Usage:
+# To disable WLAN_CFG_1/WLAN_CFG_3 and enable WLAN_CFG_2 for <wlan_chip>
+# (<wlan_chip> is from $TARGET_WLAN_CHIP).
+#  WLAN_CFG_OVERRIDE_<wlan_chip> := WLAN_CFG_1=n WLAN_CFG_2=y WLAN_CFG_3=n
+
+WLAN_CFG_OVERRIDE_qca6390 := CONFIG_CNSS_QCA6390=y
+
+# Use default_config for all chips. Used with TARGET_WLAN_CHIP.
+WLAN_CFG_USE_DEFAULT := true
diff --git a/kona/wpa_supplicant_overlay.conf b/kona/wpa_supplicant_overlay.conf
index c263fe35dfe3f61d9638a1a7d6e5834c060be415..8bd7139c62f0534dc94c1f7cda91d333f7705fb1 100644
--- a/kona/wpa_supplicant_overlay.conf
+++ b/kona/wpa_supplicant_overlay.conf
@@ -4,3 +4,4 @@ tdls_external_control=1
 wowlan_triggers=magic_pkt
 bss_max_count=400
 interworking=1
+config_methods=virtual_display virtual_push_button keypad
diff --git a/lahaina/wpa_supplicant_overlay.conf b/lahaina/wpa_supplicant_overlay.conf
index c263fe35dfe3f61d9638a1a7d6e5834c060be415..8bd7139c62f0534dc94c1f7cda91d333f7705fb1 100644
--- a/lahaina/wpa_supplicant_overlay.conf
+++ b/lahaina/wpa_supplicant_overlay.conf
@@ -4,3 +4,4 @@ tdls_external_control=1
 wowlan_triggers=magic_pkt
 bss_max_count=400
 interworking=1
+config_methods=virtual_display virtual_push_button keypad
diff --git a/lito/wpa_supplicant_overlay.conf b/lito/wpa_supplicant_overlay.conf
index c263fe35dfe3f61d9638a1a7d6e5834c060be415..8bd7139c62f0534dc94c1f7cda91d333f7705fb1 100644
--- a/lito/wpa_supplicant_overlay.conf
+++ b/lito/wpa_supplicant_overlay.conf
@@ -4,3 +4,4 @@ tdls_external_control=1
 wowlan_triggers=magic_pkt
 bss_max_count=400
 interworking=1
+config_methods=virtual_display virtual_push_button keypad
diff --git a/msmnile/wpa_supplicant_overlay.conf b/msmnile/wpa_supplicant_overlay.conf
index c263fe35dfe3f61d9638a1a7d6e5834c060be415..8bd7139c62f0534dc94c1f7cda91d333f7705fb1 100644
--- a/msmnile/wpa_supplicant_overlay.conf
+++ b/msmnile/wpa_supplicant_overlay.conf
@@ -4,3 +4,4 @@ tdls_external_control=1
 wowlan_triggers=magic_pkt
 bss_max_count=400
 interworking=1
+config_methods=virtual_display virtual_push_button keypad
diff --git a/msmnile_au/WCNSS_qcom_cfg_qcn7605.ini b/msmnile_au/WCNSS_qcom_cfg_qcn7605.ini
index 76b55404f698b5973a39d588310080fa53fbf3b8..44232f0de750f320b93c293ea80a0ba8ea55be22 100644
--- a/msmnile_au/WCNSS_qcom_cfg_qcn7605.ini
+++ b/msmnile_au/WCNSS_qcom_cfg_qcn7605.ini
@@ -474,7 +474,6 @@ gInterfaceChangeWait=20
 gBpfFilterEnable=0
 gActiveMcBcBpfMode=0 
 gSoftApMaxPeers=10
-gNumVdevs=3
 gRuntimePM=0
 
 gSetAntennaIsolation=30
diff --git a/msmnile_au/wpa_supplicant_overlay.conf b/msmnile_au/wpa_supplicant_overlay.conf
index c263fe35dfe3f61d9638a1a7d6e5834c060be415..8bd7139c62f0534dc94c1f7cda91d333f7705fb1 100644
--- a/msmnile_au/wpa_supplicant_overlay.conf
+++ b/msmnile_au/wpa_supplicant_overlay.conf
@@ -4,3 +4,4 @@ tdls_external_control=1
 wowlan_triggers=magic_pkt
 bss_max_count=400
 interworking=1
+config_methods=virtual_display virtual_push_button keypad
diff --git a/sdm710/wpa_supplicant_overlay.conf b/sdm710/wpa_supplicant_overlay.conf
index b12fd69f3012eef6a065a30819d7984acf50f040..e7dbe482c28db8ed02e8d5b9295c208d6102f479 100644
--- a/sdm710/wpa_supplicant_overlay.conf
+++ b/sdm710/wpa_supplicant_overlay.conf
@@ -3,3 +3,4 @@ p2p_disabled=1
 tdls_external_control=1
 wowlan_triggers=magic_pkt
 bss_max_count=400
+config_methods=virtual_display virtual_push_button keypad
diff --git a/sdmshrike_au/WCNSS_qcom_cfg_qcn7605.ini b/sdmshrike_au/WCNSS_qcom_cfg_qcn7605.ini
index f8df50481e271e1940f9964c1e6d7943297092e7..c35f386dc893356b53804b33118e8f480bce8517 100644
--- a/sdmshrike_au/WCNSS_qcom_cfg_qcn7605.ini
+++ b/sdmshrike_au/WCNSS_qcom_cfg_qcn7605.ini
@@ -473,7 +473,6 @@ gInterfaceChangeWait=20
 gBpfFilterEnable=0
 gActiveMcBcBpfMode=0 
 gSoftApMaxPeers=10
-gNumVdevs=3
 gRuntimePM=0
 END
 
diff --git a/sdmshrike_au/wpa_supplicant_overlay.conf b/sdmshrike_au/wpa_supplicant_overlay.conf
index c263fe35dfe3f61d9638a1a7d6e5834c060be415..8bd7139c62f0534dc94c1f7cda91d333f7705fb1 100644
--- a/sdmshrike_au/wpa_supplicant_overlay.conf
+++ b/sdmshrike_au/wpa_supplicant_overlay.conf
@@ -4,3 +4,4 @@ tdls_external_control=1
 wowlan_triggers=magic_pkt
 bss_max_count=400
 interworking=1
+config_methods=virtual_display virtual_push_button keypad
diff --git a/skunk/wpa_supplicant_overlay.conf b/skunk/wpa_supplicant_overlay.conf
index b12fd69f3012eef6a065a30819d7984acf50f040..e7dbe482c28db8ed02e8d5b9295c208d6102f479 100644
--- a/skunk/wpa_supplicant_overlay.conf
+++ b/skunk/wpa_supplicant_overlay.conf
@@ -3,3 +3,4 @@ p2p_disabled=1
 tdls_external_control=1
 wowlan_triggers=magic_pkt
 bss_max_count=400
+config_methods=virtual_display virtual_push_button keypad
diff --git a/sm6150_au/WCNSS_qcom_cfg_qcn7605.ini b/sm6150_au/WCNSS_qcom_cfg_qcn7605.ini
index 1c75e75aa3b76378618af304b7968880c8f5c3d3..8896bf5fe3cec42d258e6e73057ff9fd09e8bea3 100644
--- a/sm6150_au/WCNSS_qcom_cfg_qcn7605.ini
+++ b/sm6150_au/WCNSS_qcom_cfg_qcn7605.ini
@@ -473,7 +473,6 @@ gInterfaceChangeWait=20
 gBpfFilterEnable=0
 gActiveMcBcBpfMode=0 
 gSoftApMaxPeers=10
-gNumVdevs=3
 gRuntimePM=0
 
 gSetAntennaIsolation=30
diff --git a/sm6150_au/wpa_supplicant_overlay.conf b/sm6150_au/wpa_supplicant_overlay.conf
index 4eeca28c6dfca7ae0d4f6a8c494b32bf9c92d1aa..01ecbdb6b90b14ecba46492831a71839a0160862 100644
--- a/sm6150_au/wpa_supplicant_overlay.conf
+++ b/sm6150_au/wpa_supplicant_overlay.conf
@@ -1,3 +1,4 @@
 disable_scan_offload=1
 p2p_disabled=1
 wowlan_triggers=magic_pkt
+config_methods=virtual_display virtual_push_button keypad
diff --git a/talos/wpa_supplicant_overlay.conf b/talos/wpa_supplicant_overlay.conf
index c263fe35dfe3f61d9638a1a7d6e5834c060be415..8bd7139c62f0534dc94c1f7cda91d333f7705fb1 100644
--- a/talos/wpa_supplicant_overlay.conf
+++ b/talos/wpa_supplicant_overlay.conf
@@ -4,3 +4,4 @@ tdls_external_control=1
 wowlan_triggers=magic_pkt
 bss_max_count=400
 interworking=1
+config_methods=virtual_display virtual_push_button keypad
diff --git a/trinket/wpa_supplicant_overlay.conf b/trinket/wpa_supplicant_overlay.conf
index c263fe35dfe3f61d9638a1a7d6e5834c060be415..8bd7139c62f0534dc94c1f7cda91d333f7705fb1 100644
--- a/trinket/wpa_supplicant_overlay.conf
+++ b/trinket/wpa_supplicant_overlay.conf
@@ -4,3 +4,4 @@ tdls_external_control=1
 wowlan_triggers=magic_pkt
 bss_max_count=400
 interworking=1
+config_methods=virtual_display virtual_push_button keypad