hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/net/rfkill/rfkill-wlan.c
....@@ -216,6 +216,7 @@
216216
217217 return 0;
218218 }
219
+EXPORT_SYMBOL(rfkill_get_wifi_power_state);
219220
220221 /**************************************************************************
221222 *
....@@ -233,9 +234,6 @@
233234 bool toggle = false;
234235
235236 LOG("%s: %d\n", __func__, on);
236
-
237
- if (!on && primary_sdio_host)
238
- mmc_pwrseq_power_off(primary_sdio_host);
239237
240238 if (!mrfkill) {
241239 LOG("%s: rfkill-wlan driver has not Successful initialized\n",
....@@ -271,12 +269,17 @@
271269 regulator_set_voltage(ldo, 3000000, 3000000);
272270 LOG("%s: %s enabled\n", __func__, ldostr);
273271 ret = regulator_enable(ldo);
272
+ if (ret)
273
+ LOG("ldo enable failed\n");
274274 wifi_power_state = 1;
275275 LOG("wifi turn on power.\n");
276276 } else {
277277 LOG("%s: %s disabled\n", __func__, ldostr);
278
- while (regulator_is_enabled(ldo) > 0)
278
+ while (regulator_is_enabled(ldo) > 0) {
279279 ret = regulator_disable(ldo);
280
+ if (ret)
281
+ LOG("ldo disable failed\n");
282
+ }
280283 wifi_power_state = 0;
281284 LOG("wifi shut off power.\n");
282285 }
....@@ -342,10 +345,9 @@
342345 * Wifi Sdio Detect Func
343346 *
344347 *************************************************************************/
345
-extern int mmc_host_rescan(struct mmc_host *host, int val, int irq_type);
346348 int rockchip_wifi_set_carddetect(int val)
347349 {
348
- return mmc_host_rescan(NULL, val, 1);
350
+ return 0;
349351 }
350352 EXPORT_SYMBOL(rockchip_wifi_set_carddetect);
351353
....@@ -439,7 +441,7 @@
439441 addr[5]);
440442 ret = rk_vendor_write(WIFI_MAC_ID, addr, 6);
441443 if (ret != 0) {
442
- LOG("%s: rk_vendor_write failed %d\n"
444
+ LOG("%s: rk_vendor_write failed %d\n",
443445 __func__, ret);
444446 memset(addr, 0, 6);
445447 return -1;
....@@ -562,7 +564,8 @@
562564 __func__);
563565 strcpy(wifi_chip_type_string, "rkwifi");
564566 } else {
565
- strcpy(wifi_chip_type_string, strings);
567
+ if (strings && strlen(strings) < 64)
568
+ strcpy(wifi_chip_type_string, strings);
566569 }
567570 LOG("%s: wifi_chip_type = %s\n", __func__, wifi_chip_type_string);
568571
....@@ -860,11 +863,6 @@
860863 if (ret)
861864 goto fail_alloc;
862865
863
- ret = rfkill_rk_setup_gpio(&pdata->power_n, wlan_name,
864
- "wlan_poweren");
865
- if (ret)
866
- goto fail_alloc;
867
-
868866 ret = rfkill_rk_setup_gpio(&pdata->reset_n, wlan_name,
869867 "wlan_reset");
870868 if (ret)
....@@ -878,11 +876,7 @@
878876
879877 #ifdef CONFIG_SDIO_KEEPALIVE
880878 if (gpio_is_valid(pdata->power_n.io) &&
881
- primary_sdio_host && primary_sdio_host->support_chip_alive)
882879 gpio_direction_output(pdata->power_n.io, pdata->power_n.enable);
883
-#else
884
- if (gpio_is_valid(pdata->power_n.io))
885
- gpio_direction_output(pdata->power_n.io, !pdata->power_n.enable);
886880 #endif
887881
888882
....@@ -935,6 +929,14 @@
935929 return 0;
936930 }
937931
932
+static void rfkill_wlan_shutdown(struct platform_device *pdev)
933
+{
934
+ LOG("Enter %s\n", __func__);
935
+
936
+ rockchip_wifi_power(0);
937
+ rfkill_set_wifi_bt_power(0);
938
+}
939
+
938940 static int rfkill_wlan_suspend(struct platform_device *pdev, pm_message_t state)
939941 {
940942 LOG("Enter %s\n", __func__);
....@@ -958,6 +960,7 @@
958960 static struct platform_driver rfkill_wlan_driver = {
959961 .probe = rfkill_wlan_probe,
960962 .remove = rfkill_wlan_remove,
963
+ .shutdown = rfkill_wlan_shutdown,
961964 .suspend = rfkill_wlan_suspend,
962965 .resume = rfkill_wlan_resume,
963966 .driver = {