hc
2023-12-06 08f87f769b595151be1afeff53e144f543faa614
kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux_platdev.c
old mode 100644new mode 100755
....@@ -42,12 +42,15 @@
4242 #else
4343 #include <dhd_plat.h>
4444 #endif /* CONFIG_WIFI_CONTROL_FUNC */
45
+#ifdef BCMDBUS
46
+#include <dbus.h>
47
+#endif
4548 #ifdef CONFIG_DTS
4649 #include<linux/regulator/consumer.h>
4750 #include<linux/of_gpio.h>
4851 #endif /* CONFIG_DTS */
4952
50
-#if defined(CUSTOMER_HW) || defined(BCMDHD_PLATDEV)
53
+#if defined(CUSTOMER_HW)
5154 extern int dhd_wlan_init_plat_data(wifi_adapter_info_t *adapter);
5255 extern void dhd_wlan_deinit_plat_data(wifi_adapter_info_t *adapter);
5356 #endif /* CUSTOMER_HW */
....@@ -85,7 +88,7 @@
8588 #pragma GCC diagnostic ignored "-Wmissing-field-initializers"
8689 #endif
8790 struct resource dhd_wlan_resources = {0};
88
-extern struct wifi_platform_data dhd_wlan_control;
91
+struct wifi_platform_data dhd_wlan_control = {0};
8992 #if defined(STRICT_GCC_WARNINGS) && defined(__GNUC__)
9093 #pragma GCC diagnostic pop
9194 #endif
....@@ -167,7 +170,7 @@
167170 return NULL;
168171 plat_data = adapter->wifi_plat_data;
169172 if (plat_data->mem_prealloc) {
170
-#if defined(BCMDHD_MDRIVER) && !defined(DHD_STATIC_IN_DRIVER)
173
+#ifdef BCMDHD_MDRIVER
171174 alloc_ptr = plat_data->mem_prealloc(adapter->bus_type, adapter->index, section, size);
172175 #else
173176 alloc_ptr = plat_data->mem_prealloc(section, size);
....@@ -378,14 +381,6 @@
378381 adapter->wifi_plat_data = (void *)&dhd_wlan_control;
379382 #endif
380383
381
-#ifdef BCMDHD_PLATDEV
382
- adapter->pdev = pdev;
383
- wifi_plat_dev_probe_ret = dhd_wlan_init_plat_data(adapter);
384
- if (!wifi_plat_dev_probe_ret)
385
- wifi_plat_dev_probe_ret = dhd_wifi_platform_load();
386
- return wifi_plat_dev_probe_ret;
387
-#endif
388
-
389384 resource = platform_get_resource_byname(pdev, IORESOURCE_IRQ, "bcmdhd_wlan_irq");
390385 if (resource == NULL)
391386 resource = platform_get_resource_byname(pdev, IORESOURCE_IRQ, "bcm4329_wlan_irq");
....@@ -457,9 +452,6 @@
457452 #ifdef CONFIG_DTS
458453 regulator_put(wifi_regulator);
459454 #endif /* CONFIG_DTS */
460
-#ifdef BCMDHD_PLATDEV
461
- dhd_wlan_deinit_plat_data(adapter);
462
-#endif
463455 return 0;
464456 }
465457
....@@ -577,7 +569,16 @@
577569 return -ENOMEM;
578570 }
579571 adapter->name = "DHD generic adapter";
572
+ adapter->index = -1;
573
+#if defined(BCMDHD_MDRIVER) && !defined(DHD_STATIC_IN_DRIVER)
574
+#ifdef BCMSDIO
580575 adapter->index = 0;
576
+#elif defined(BCMPCIE)
577
+ adapter->index = 1;
578
+#elif defined(BCMDBUS)
579
+ adapter->index = 2;
580
+#endif
581
+#endif
581582 adapter->bus_type = -1;
582583 adapter->bus_num = -1;
583584 adapter->slot_num = -1;
....@@ -770,11 +771,10 @@
770771 err = dhd_bus_register();
771772 } else {
772773 #ifdef DHD_SUPPORT_HDM
773
- if (dhd_download_fw_on_driverload || hdm_trigger_init)
774
+ if (dhd_download_fw_on_driverload || hdm_trigger_init) {
774775 #else
775
- if (dhd_download_fw_on_driverload)
776
+ if (dhd_download_fw_on_driverload) {
776777 #endif /* DHD_SUPPORT_HDM */
777
- {
778778 /* power up all adapters */
779779 for (i = 0; i < dhd_wifi_platdata->num_adapters; i++) {
780780 int retry = POWERUP_MAX_RETRY;
....@@ -896,9 +896,7 @@
896896 for (i = 0; i < dhd_wifi_platdata->num_adapters; i++) {
897897 bool chip_up = FALSE;
898898 int retry = POWERUP_MAX_RETRY;
899
-#ifndef DHD_INSMOD_NOWAIT
900899 struct semaphore dhd_chipup_sem;
901
-#endif
902900
903901 adapter = &dhd_wifi_platdata->adapters[i];
904902
....@@ -909,18 +907,6 @@
909907 adapter->bus_type, adapter->bus_num, adapter->slot_num));
910908
911909 do {
912
-#ifdef DHD_INSMOD_NOWAIT
913
- err = wifi_platform_set_power(adapter, TRUE, WIFI_TURNON_DELAY);
914
- if (err) {
915
- DHD_ERROR(("%s: wifi pwr on error ! \n", __FUNCTION__));
916
- wifi_platform_set_power(adapter, FALSE, WIFI_TURNOFF_DELAY);
917
- continue;
918
- } else {
919
- wifi_platform_bus_enumerate(adapter, TRUE);
920
- chip_up = TRUE;
921
- break;
922
- }
923
-#else
924910 sema_init(&dhd_chipup_sem, 0);
925911 err = dhd_bus_reg_sdio_notify(&dhd_chipup_sem);
926912 if (err) {
....@@ -949,7 +935,6 @@
949935 dhd_bus_unreg_sdio_notify();
950936 wifi_platform_set_power(adapter, FALSE, WIFI_TURNOFF_DELAY);
951937 wifi_platform_bus_enumerate(adapter, FALSE);
952
-#endif
953938 } while (retry--);
954939
955940 if (!chip_up) {
....@@ -966,7 +951,6 @@
966951 goto fail;
967952 }
968953
969
-#ifndef DHD_INSMOD_NOWAIT
970954 /*
971955 * Wait till MMC sdio_register_driver callback called and made driver attach.
972956 * It's needed to make sync up exit from dhd insmod and
....@@ -978,7 +962,6 @@
978962 dhd_bus_unregister();
979963 goto fail;
980964 }
981
-#endif
982965
983966 return err;
984967
....@@ -1011,6 +994,7 @@
1011994 wifi_adapter_info_t *adapter;
1012995 s32 timeout = -1;
1013996 int i;
997
+ enum wifi_adapter_status wait_status;
1014998 #endif
1015999
10161000 #if !defined(DHD_PRELOAD)
....@@ -1019,7 +1003,7 @@
10191003 adapter = &dhd_wifi_platdata->adapters[i];
10201004 wifi_platform_set_power(adapter, FALSE, 0);
10211005 if (err) {
1022
- DHD_ERROR(("failed to wifi_platform_set_power off %s\n", adapter->name));
1006
+ DHD_ERROR(("failed to wifi_platform_set_power on %s\n", adapter->name));
10231007 goto exit;
10241008 }
10251009 }
....@@ -1046,8 +1030,12 @@
10461030 DHD_ERROR(("failed to wifi_platform_set_power on %s\n", adapter->name));
10471031 goto fail;
10481032 }
1033
+ if (dhd_download_fw_on_driverload)
1034
+ wait_status = WIFI_STATUS_ATTACH;
1035
+ else
1036
+ wait_status = WIFI_STATUS_DETTACH;
10491037 timeout = wait_event_interruptible_timeout(adapter->status_event,
1050
- wifi_get_adapter_status(adapter, WIFI_STATUS_NET_ATTACHED),
1038
+ wifi_get_adapter_status(adapter, wait_status),
10511039 msecs_to_jiffies(DHD_REGISTRATION_TIMEOUT));
10521040 if (timeout <= 0) {
10531041 err = -1;
....@@ -1079,7 +1067,7 @@
10791067 }
10801068 #endif /* BCMDBUS */
10811069
1082
-static int dhd_wifi_platform_load()
1070
+static int dhd_wifi_platform_load(void)
10831071 {
10841072 int err = 0;
10851073 printf("%s: Enter\n", __FUNCTION__);