hc
2023-12-08 01573e231f18eb2d99162747186f59511f56b64d
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 }
....@@ -316,11 +319,6 @@
316319 }
317320
318321 wifi_power_state = 0;
319
-
320
- if (!rfkill_get_bt_power_state(&bt_power, &toggle)) {
321
- LOG("%s: toggle = %s\n", __func__, toggle ? "true" : "false");
322
- }
323
-
324322 if (toggle) {
325323 if (!bt_power) {
326324 LOG("%s: wifi will set vbat to low\n", __func__);
....@@ -342,10 +340,9 @@
342340 * Wifi Sdio Detect Func
343341 *
344342 *************************************************************************/
345
-extern int mmc_host_rescan(struct mmc_host *host, int val, int irq_type);
346343 int rockchip_wifi_set_carddetect(int val)
347344 {
348
- return mmc_host_rescan(NULL, val, 1);
345
+ return 0;
349346 }
350347 EXPORT_SYMBOL(rockchip_wifi_set_carddetect);
351348
....@@ -439,7 +436,7 @@
439436 addr[5]);
440437 ret = rk_vendor_write(WIFI_MAC_ID, addr, 6);
441438 if (ret != 0) {
442
- LOG("%s: rk_vendor_write failed %d\n"
439
+ LOG("%s: rk_vendor_write failed %d\n",
443440 __func__, ret);
444441 memset(addr, 0, 6);
445442 return -1;
....@@ -562,7 +559,8 @@
562559 __func__);
563560 strcpy(wifi_chip_type_string, "rkwifi");
564561 } else {
565
- strcpy(wifi_chip_type_string, strings);
562
+ if (strings && strlen(strings) < 64)
563
+ strcpy(wifi_chip_type_string, strings);
566564 }
567565 LOG("%s: wifi_chip_type = %s\n", __func__, wifi_chip_type_string);
568566
....@@ -860,11 +858,6 @@
860858 if (ret)
861859 goto fail_alloc;
862860
863
- ret = rfkill_rk_setup_gpio(&pdata->power_n, wlan_name,
864
- "wlan_poweren");
865
- if (ret)
866
- goto fail_alloc;
867
-
868861 ret = rfkill_rk_setup_gpio(&pdata->reset_n, wlan_name,
869862 "wlan_reset");
870863 if (ret)
....@@ -878,11 +871,7 @@
878871
879872 #ifdef CONFIG_SDIO_KEEPALIVE
880873 if (gpio_is_valid(pdata->power_n.io) &&
881
- primary_sdio_host && primary_sdio_host->support_chip_alive)
882874 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);
886875 #endif
887876
888877
....@@ -935,6 +924,14 @@
935924 return 0;
936925 }
937926
927
+static void rfkill_wlan_shutdown(struct platform_device *pdev)
928
+{
929
+ LOG("Enter %s\n", __func__);
930
+
931
+ rockchip_wifi_power(0);
932
+ rfkill_set_wifi_bt_power(0);
933
+}
934
+
938935 static int rfkill_wlan_suspend(struct platform_device *pdev, pm_message_t state)
939936 {
940937 LOG("Enter %s\n", __func__);
....@@ -958,6 +955,7 @@
958955 static struct platform_driver rfkill_wlan_driver = {
959956 .probe = rfkill_wlan_probe,
960957 .remove = rfkill_wlan_remove,
958
+ .shutdown = rfkill_wlan_shutdown,
961959 .suspend = rfkill_wlan_suspend,
962960 .resume = rfkill_wlan_resume,
963961 .driver = {