From 1c055e55a242a33e574e48be530e06770a210dcd Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Mon, 19 Feb 2024 03:26:26 +0000
Subject: [PATCH] add r8169 read mac form eeprom

---
 kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux_platdev.c |   62 ++++++++++++------------------
 1 files changed, 25 insertions(+), 37 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 1de6616..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,12 +42,15 @@
 #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>
 #endif /* CONFIG_DTS */
 
-#if defined(CUSTOMER_HW) || defined(BCMDHD_PLATDEV)
+#if defined(CUSTOMER_HW)
 extern int dhd_wlan_init_plat_data(wifi_adapter_info_t *adapter);
 extern void dhd_wlan_deinit_plat_data(wifi_adapter_info_t *adapter);
 #endif /* CUSTOMER_HW */
@@ -85,7 +88,7 @@
 #pragma GCC diagnostic ignored "-Wmissing-field-initializers"
 #endif
 struct resource dhd_wlan_resources = {0};
-extern struct wifi_platform_data dhd_wlan_control;
+struct wifi_platform_data dhd_wlan_control = {0};
 #if defined(STRICT_GCC_WARNINGS) && defined(__GNUC__)
 #pragma GCC diagnostic pop
 #endif
@@ -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);
@@ -378,14 +381,6 @@
 	adapter->wifi_plat_data = (void *)&dhd_wlan_control;
 #endif
 
-#ifdef BCMDHD_PLATDEV
-	adapter->pdev = pdev;
-	wifi_plat_dev_probe_ret = dhd_wlan_init_plat_data(adapter);
-	if (!wifi_plat_dev_probe_ret)
-		wifi_plat_dev_probe_ret = dhd_wifi_platform_load();
-	return wifi_plat_dev_probe_ret;
-#endif
-
 	resource = platform_get_resource_byname(pdev, IORESOURCE_IRQ, "bcmdhd_wlan_irq");
 	if (resource == NULL)
 		resource = platform_get_resource_byname(pdev, IORESOURCE_IRQ, "bcm4329_wlan_irq");
@@ -457,9 +452,6 @@
 #ifdef CONFIG_DTS
 	regulator_put(wifi_regulator);
 #endif /* CONFIG_DTS */
-#ifdef BCMDHD_PLATDEV
-	dhd_wlan_deinit_plat_data(adapter);
-#endif
 	return 0;
 }
 
@@ -577,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;
@@ -770,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;
@@ -896,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];
 
@@ -909,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) {
@@ -949,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) {
@@ -966,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
@@ -978,7 +962,6 @@
 		dhd_bus_unregister();
 		goto fail;
 	}
-#endif
 
 	return err;
 
@@ -1011,6 +994,7 @@
 	wifi_adapter_info_t *adapter;
 	s32 timeout = -1;
 	int i;
+	enum wifi_adapter_status wait_status;
 #endif
 
 #if !defined(DHD_PRELOAD)
@@ -1019,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;
 		}
 	}
@@ -1046,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;
@@ -1079,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