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