| .. | .. |
|---|
| 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 | } |
|---|
| .. | .. |
|---|
| 342 | 345 | * Wifi Sdio Detect Func |
|---|
| 343 | 346 | * |
|---|
| 344 | 347 | *************************************************************************/ |
|---|
| 345 | | -extern int mmc_host_rescan(struct mmc_host *host, int val, int irq_type); |
|---|
| 346 | 348 | int rockchip_wifi_set_carddetect(int val) |
|---|
| 347 | 349 | { |
|---|
| 348 | | - return mmc_host_rescan(NULL, val, 1); |
|---|
| 350 | + return 0; |
|---|
| 349 | 351 | } |
|---|
| 350 | 352 | EXPORT_SYMBOL(rockchip_wifi_set_carddetect); |
|---|
| 351 | 353 | |
|---|
| .. | .. |
|---|
| 439 | 441 | addr[5]); |
|---|
| 440 | 442 | ret = rk_vendor_write(WIFI_MAC_ID, addr, 6); |
|---|
| 441 | 443 | if (ret != 0) { |
|---|
| 442 | | - LOG("%s: rk_vendor_write failed %d\n" |
|---|
| 444 | + LOG("%s: rk_vendor_write failed %d\n", |
|---|
| 443 | 445 | __func__, ret); |
|---|
| 444 | 446 | memset(addr, 0, 6); |
|---|
| 445 | 447 | return -1; |
|---|
| .. | .. |
|---|
| 562 | 564 | __func__); |
|---|
| 563 | 565 | strcpy(wifi_chip_type_string, "rkwifi"); |
|---|
| 564 | 566 | } else { |
|---|
| 565 | | - strcpy(wifi_chip_type_string, strings); |
|---|
| 567 | + if (strings && strlen(strings) < 64) |
|---|
| 568 | + strcpy(wifi_chip_type_string, strings); |
|---|
| 566 | 569 | } |
|---|
| 567 | 570 | LOG("%s: wifi_chip_type = %s\n", __func__, wifi_chip_type_string); |
|---|
| 568 | 571 | |
|---|
| .. | .. |
|---|
| 860 | 863 | if (ret) |
|---|
| 861 | 864 | goto fail_alloc; |
|---|
| 862 | 865 | |
|---|
| 863 | | - ret = rfkill_rk_setup_gpio(&pdata->power_n, wlan_name, |
|---|
| 864 | | - "wlan_poweren"); |
|---|
| 865 | | - if (ret) |
|---|
| 866 | | - goto fail_alloc; |
|---|
| 867 | | - |
|---|
| 868 | 866 | ret = rfkill_rk_setup_gpio(&pdata->reset_n, wlan_name, |
|---|
| 869 | 867 | "wlan_reset"); |
|---|
| 870 | 868 | if (ret) |
|---|
| .. | .. |
|---|
| 878 | 876 | |
|---|
| 879 | 877 | #ifdef CONFIG_SDIO_KEEPALIVE |
|---|
| 880 | 878 | if (gpio_is_valid(pdata->power_n.io) && |
|---|
| 881 | | - primary_sdio_host && primary_sdio_host->support_chip_alive) |
|---|
| 882 | 879 | 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 | 880 | #endif |
|---|
| 887 | 881 | |
|---|
| 888 | 882 | |
|---|
| .. | .. |
|---|
| 935 | 929 | return 0; |
|---|
| 936 | 930 | } |
|---|
| 937 | 931 | |
|---|
| 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 | + |
|---|
| 938 | 940 | static int rfkill_wlan_suspend(struct platform_device *pdev, pm_message_t state) |
|---|
| 939 | 941 | { |
|---|
| 940 | 942 | LOG("Enter %s\n", __func__); |
|---|
| .. | .. |
|---|
| 958 | 960 | static struct platform_driver rfkill_wlan_driver = { |
|---|
| 959 | 961 | .probe = rfkill_wlan_probe, |
|---|
| 960 | 962 | .remove = rfkill_wlan_remove, |
|---|
| 963 | + .shutdown = rfkill_wlan_shutdown, |
|---|
| 961 | 964 | .suspend = rfkill_wlan_suspend, |
|---|
| 962 | 965 | .resume = rfkill_wlan_resume, |
|---|
| 963 | 966 | .driver = { |
|---|