| .. | .. |
|---|
| 216 | 216 | |
|---|
| 217 | 217 | return 0; |
|---|
| 218 | 218 | } |
|---|
| 219 | +EXPORT_SYMBOL(rfkill_get_wifi_power_state); |
|---|
| 219 | 220 | |
|---|
| 220 | 221 | /************************************************************************** |
|---|
| 221 | 222 | * |
|---|
| .. | .. |
|---|
| 233 | 234 | bool toggle = false; |
|---|
| 234 | 235 | |
|---|
| 235 | 236 | LOG("%s: %d\n", __func__, on); |
|---|
| 236 | | - |
|---|
| 237 | | - if (!on && primary_sdio_host) |
|---|
| 238 | | - mmc_pwrseq_power_off(primary_sdio_host); |
|---|
| 239 | 237 | |
|---|
| 240 | 238 | if (!mrfkill) { |
|---|
| 241 | 239 | LOG("%s: rfkill-wlan driver has not Successful initialized\n", |
|---|
| .. | .. |
|---|
| 271 | 269 | regulator_set_voltage(ldo, 3000000, 3000000); |
|---|
| 272 | 270 | LOG("%s: %s enabled\n", __func__, ldostr); |
|---|
| 273 | 271 | ret = regulator_enable(ldo); |
|---|
| 272 | + if (ret) |
|---|
| 273 | + LOG("ldo enable failed\n"); |
|---|
| 274 | 274 | wifi_power_state = 1; |
|---|
| 275 | 275 | LOG("wifi turn on power.\n"); |
|---|
| 276 | 276 | } else { |
|---|
| 277 | 277 | LOG("%s: %s disabled\n", __func__, ldostr); |
|---|
| 278 | | - while (regulator_is_enabled(ldo) > 0) |
|---|
| 278 | + while (regulator_is_enabled(ldo) > 0) { |
|---|
| 279 | 279 | ret = regulator_disable(ldo); |
|---|
| 280 | + if (ret) |
|---|
| 281 | + LOG("ldo disable failed\n"); |
|---|
| 282 | + } |
|---|
| 280 | 283 | wifi_power_state = 0; |
|---|
| 281 | 284 | LOG("wifi shut off power.\n"); |
|---|
| 282 | 285 | } |
|---|
| .. | .. |
|---|
| 316 | 319 | } |
|---|
| 317 | 320 | |
|---|
| 318 | 321 | 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 | | - |
|---|
| 324 | 322 | if (toggle) { |
|---|
| 325 | 323 | if (!bt_power) { |
|---|
| 326 | 324 | LOG("%s: wifi will set vbat to low\n", __func__); |
|---|
| .. | .. |
|---|
| 342 | 340 | * Wifi Sdio Detect Func |
|---|
| 343 | 341 | * |
|---|
| 344 | 342 | *************************************************************************/ |
|---|
| 345 | | -extern int mmc_host_rescan(struct mmc_host *host, int val, int irq_type); |
|---|
| 346 | 343 | int rockchip_wifi_set_carddetect(int val) |
|---|
| 347 | 344 | { |
|---|
| 348 | | - return mmc_host_rescan(NULL, val, 1); |
|---|
| 345 | + return 0; |
|---|
| 349 | 346 | } |
|---|
| 350 | 347 | EXPORT_SYMBOL(rockchip_wifi_set_carddetect); |
|---|
| 351 | 348 | |
|---|
| .. | .. |
|---|
| 439 | 436 | addr[5]); |
|---|
| 440 | 437 | ret = rk_vendor_write(WIFI_MAC_ID, addr, 6); |
|---|
| 441 | 438 | if (ret != 0) { |
|---|
| 442 | | - LOG("%s: rk_vendor_write failed %d\n" |
|---|
| 439 | + LOG("%s: rk_vendor_write failed %d\n", |
|---|
| 443 | 440 | __func__, ret); |
|---|
| 444 | 441 | memset(addr, 0, 6); |
|---|
| 445 | 442 | return -1; |
|---|
| .. | .. |
|---|
| 562 | 559 | __func__); |
|---|
| 563 | 560 | strcpy(wifi_chip_type_string, "rkwifi"); |
|---|
| 564 | 561 | } else { |
|---|
| 565 | | - strcpy(wifi_chip_type_string, strings); |
|---|
| 562 | + if (strings && strlen(strings) < 64) |
|---|
| 563 | + strcpy(wifi_chip_type_string, strings); |
|---|
| 566 | 564 | } |
|---|
| 567 | 565 | LOG("%s: wifi_chip_type = %s\n", __func__, wifi_chip_type_string); |
|---|
| 568 | 566 | |
|---|
| .. | .. |
|---|
| 860 | 858 | if (ret) |
|---|
| 861 | 859 | goto fail_alloc; |
|---|
| 862 | 860 | |
|---|
| 863 | | - ret = rfkill_rk_setup_gpio(&pdata->power_n, wlan_name, |
|---|
| 864 | | - "wlan_poweren"); |
|---|
| 865 | | - if (ret) |
|---|
| 866 | | - goto fail_alloc; |
|---|
| 867 | | - |
|---|
| 868 | 861 | ret = rfkill_rk_setup_gpio(&pdata->reset_n, wlan_name, |
|---|
| 869 | 862 | "wlan_reset"); |
|---|
| 870 | 863 | if (ret) |
|---|
| .. | .. |
|---|
| 878 | 871 | |
|---|
| 879 | 872 | #ifdef CONFIG_SDIO_KEEPALIVE |
|---|
| 880 | 873 | if (gpio_is_valid(pdata->power_n.io) && |
|---|
| 881 | | - primary_sdio_host && primary_sdio_host->support_chip_alive) |
|---|
| 882 | 874 | 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); |
|---|
| 886 | 875 | #endif |
|---|
| 887 | 876 | |
|---|
| 888 | 877 | |
|---|
| .. | .. |
|---|
| 935 | 924 | return 0; |
|---|
| 936 | 925 | } |
|---|
| 937 | 926 | |
|---|
| 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 | + |
|---|
| 938 | 935 | static int rfkill_wlan_suspend(struct platform_device *pdev, pm_message_t state) |
|---|
| 939 | 936 | { |
|---|
| 940 | 937 | LOG("Enter %s\n", __func__); |
|---|
| .. | .. |
|---|
| 958 | 955 | static struct platform_driver rfkill_wlan_driver = { |
|---|
| 959 | 956 | .probe = rfkill_wlan_probe, |
|---|
| 960 | 957 | .remove = rfkill_wlan_remove, |
|---|
| 958 | + .shutdown = rfkill_wlan_shutdown, |
|---|
| 961 | 959 | .suspend = rfkill_wlan_suspend, |
|---|
| 962 | 960 | .resume = rfkill_wlan_resume, |
|---|
| 963 | 961 | .driver = { |
|---|