From 08f87f769b595151be1afeff53e144f543faa614 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 06 Dec 2023 09:51:13 +0000
Subject: [PATCH] add dts config

---
 kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux_platdev.c |   47 +++++++++++++++++++++++------------------------
 1 files changed, 23 insertions(+), 24 deletions(-)

diff --git a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux_platdev.c b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux_platdev.c
old mode 100644
new mode 100755
index 1f630ae..ab67812
--- a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux_platdev.c
+++ b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux_platdev.c
@@ -42,6 +42,9 @@
 #else
 #include <dhd_plat.h>
 #endif /* CONFIG_WIFI_CONTROL_FUNC */
+#ifdef BCMDBUS
+#include <dbus.h>
+#endif
 #ifdef CONFIG_DTS
 #include<linux/regulator/consumer.h>
 #include<linux/of_gpio.h>
@@ -167,7 +170,7 @@
 		return NULL;
 	plat_data = adapter->wifi_plat_data;
 	if (plat_data->mem_prealloc) {
-#if defined(BCMDHD_MDRIVER) && !defined(DHD_STATIC_IN_DRIVER)
+#ifdef BCMDHD_MDRIVER
 		alloc_ptr = plat_data->mem_prealloc(adapter->bus_type, adapter->index, section, size);
 #else
 		alloc_ptr = plat_data->mem_prealloc(section, size);
@@ -566,7 +569,16 @@
 		return -ENOMEM;
 	}
 	adapter->name = "DHD generic adapter";
+	adapter->index = -1;
+#if defined(BCMDHD_MDRIVER) && !defined(DHD_STATIC_IN_DRIVER)
+#ifdef BCMSDIO
 	adapter->index = 0;
+#elif defined(BCMPCIE)
+	adapter->index = 1;
+#elif defined(BCMDBUS)
+	adapter->index = 2;
+#endif
+#endif
 	adapter->bus_type = -1;
 	adapter->bus_num = -1;
 	adapter->slot_num = -1;
@@ -759,11 +771,10 @@
 		err = dhd_bus_register();
 	} else {
 #ifdef DHD_SUPPORT_HDM
-		if (dhd_download_fw_on_driverload || hdm_trigger_init)
+		if (dhd_download_fw_on_driverload || hdm_trigger_init) {
 #else
-		if (dhd_download_fw_on_driverload)
+		if (dhd_download_fw_on_driverload) {
 #endif /* DHD_SUPPORT_HDM */
-		{
 			/* power up all adapters */
 			for (i = 0; i < dhd_wifi_platdata->num_adapters; i++) {
 				int retry = POWERUP_MAX_RETRY;
@@ -885,9 +896,7 @@
 	for (i = 0; i < dhd_wifi_platdata->num_adapters; i++) {
 		bool chip_up = FALSE;
 		int retry = POWERUP_MAX_RETRY;
-#ifndef DHD_INSMOD_NOWAIT
 		struct semaphore dhd_chipup_sem;
-#endif
 
 		adapter = &dhd_wifi_platdata->adapters[i];
 
@@ -898,18 +907,6 @@
 			adapter->bus_type, adapter->bus_num, adapter->slot_num));
 
 		do {
-#ifdef DHD_INSMOD_NOWAIT
-			err = wifi_platform_set_power(adapter, TRUE, WIFI_TURNON_DELAY);
-			if (err) {
-				DHD_ERROR(("%s: wifi pwr on error ! \n", __FUNCTION__));
-				wifi_platform_set_power(adapter, FALSE, WIFI_TURNOFF_DELAY);
-				continue;
-			} else {
-				wifi_platform_bus_enumerate(adapter, TRUE);
-				chip_up = TRUE;
-				break;
-			}
-#else
 			sema_init(&dhd_chipup_sem, 0);
 			err = dhd_bus_reg_sdio_notify(&dhd_chipup_sem);
 			if (err) {
@@ -938,7 +935,6 @@
 			dhd_bus_unreg_sdio_notify();
 			wifi_platform_set_power(adapter, FALSE, WIFI_TURNOFF_DELAY);
 			wifi_platform_bus_enumerate(adapter, FALSE);
-#endif
 		} while (retry--);
 
 		if (!chip_up) {
@@ -955,7 +951,6 @@
 		goto fail;
 	}
 
-#ifndef DHD_INSMOD_NOWAIT
 	/*
 	 * Wait till MMC sdio_register_driver callback called and made driver attach.
 	 * It's needed to make sync up exit from dhd insmod  and
@@ -967,7 +962,6 @@
 		dhd_bus_unregister();
 		goto fail;
 	}
-#endif
 
 	return err;
 
@@ -1000,6 +994,7 @@
 	wifi_adapter_info_t *adapter;
 	s32 timeout = -1;
 	int i;
+	enum wifi_adapter_status wait_status;
 #endif
 
 #if !defined(DHD_PRELOAD)
@@ -1008,7 +1003,7 @@
 		adapter = &dhd_wifi_platdata->adapters[i];
 		wifi_platform_set_power(adapter, FALSE, 0);
 		if (err) {
-			DHD_ERROR(("failed to wifi_platform_set_power off %s\n", adapter->name));
+			DHD_ERROR(("failed to wifi_platform_set_power on %s\n", adapter->name));
 			goto exit;
 		}
 	}
@@ -1035,8 +1030,12 @@
 			DHD_ERROR(("failed to wifi_platform_set_power on %s\n", adapter->name));
 			goto fail;
 		}
+		if (dhd_download_fw_on_driverload)
+			wait_status = WIFI_STATUS_ATTACH;
+		else
+			wait_status = WIFI_STATUS_DETTACH;
 		timeout = wait_event_interruptible_timeout(adapter->status_event,
-			wifi_get_adapter_status(adapter, WIFI_STATUS_NET_ATTACHED),
+			wifi_get_adapter_status(adapter, wait_status),
 			msecs_to_jiffies(DHD_REGISTRATION_TIMEOUT));
 		if (timeout <= 0) {
 			err = -1;
@@ -1068,7 +1067,7 @@
 }
 #endif /* BCMDBUS */
 
-static int dhd_wifi_platform_load()
+static int dhd_wifi_platform_load(void)
 {
 	int err = 0;
 	printf("%s: Enter\n", __FUNCTION__);

--
Gitblit v1.6.2