From d0a428a6556ea5a006e22e28b0b1cd037885fe20 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 22 Nov 2023 01:07:12 +0000
Subject: [PATCH] add gmac0 read mac form eeprom,pcie30x1

---
 kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dbus.c |   27 ++++++++++++++++++++++++++-
 1 files changed, 26 insertions(+), 1 deletions(-)

diff --git a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dbus.c b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dbus.c
index a3da591..d15b758 100644
--- a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dbus.c
+++ b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dbus.c
@@ -2452,14 +2452,19 @@
 	dhd_pub_t *dhd = (dhd_pub_t *)handle;
 	unsigned long flags;
 	wifi_adapter_info_t *adapter;
+	int wowl_dngldown = 0;
 
 	if (dhd == NULL) {
 		DBUSERR(("%s: dhd is NULL\n", __FUNCTION__));
 		return;
 	}
 	adapter = (wifi_adapter_info_t *)dhd->adapter;
+#ifdef WL_EXT_WOWL
+	wowl_dngldown = dhd_conf_wowl_dngldown(dhd);
+#endif
 
-	if (dhd->busstate == DHD_BUS_SUSPEND && state == DBUS_STATE_DOWN) {
+	if ((dhd->busstate == DHD_BUS_SUSPEND && state == DBUS_STATE_DOWN) ||
+			(dhd->hostsleep && wowl_dngldown)) {
 		DBUSERR(("%s: switch state %d to %d\n", __FUNCTION__, state, DBUS_STATE_SLEEP));
 		state = DBUS_STATE_SLEEP;
 	}
@@ -3059,6 +3064,7 @@
 	}
 
 	DBUSTRACE(("%s: Exit\n", __FUNCTION__));
+	wifi_clr_adapter_status(adapter, WIFI_STATUS_BUS_DISCONNECTED);
 	if (net_attached) {
 		wifi_set_adapter_status(adapter, WIFI_STATUS_NET_ATTACHED);
 		wake_up_interruptible(&adapter->status_event);
@@ -3112,6 +3118,7 @@
 		dhd_dbus_advertise_bus_remove(bus->dhd);
 		dbus_detach(pub->bus);
 		pub->bus = NULL;
+		wifi_set_adapter_status(adapter, WIFI_STATUS_BUS_DISCONNECTED);
 		wake_up_interruptible(&adapter->status_event);
 	} else {
 		osh = pub->osh;
@@ -3133,6 +3140,24 @@
 	DBUSTRACE(("%s: Exit\n", __FUNCTION__));
 }
 
+int
+dhd_bus_sleep(dhd_pub_t *dhdp, bool sleep, uint32 *intstatus)
+{
+	wifi_adapter_info_t *adapter = (wifi_adapter_info_t *)dhdp->adapter;
+	s32 timeout = -1;
+	int err = 0;
+
+	timeout = wait_event_interruptible_timeout(adapter->status_event,
+		wifi_get_adapter_status(adapter, WIFI_STATUS_BUS_DISCONNECTED),
+		msecs_to_jiffies(12000));
+	if (timeout <= 0) {
+		err = -1;
+		DBUSERR(("%s: bus disconnected timeout\n", __FUNCTION__));
+	}
+
+	return err;
+}
+
 #ifdef LINUX_EXTERNAL_MODULE_DBUS
 
 static int __init

--
Gitblit v1.6.2