Lines Matching +full:wifi +full:- +full:2

5  * License version 2, as published by the Free Software Foundation, and
14 /* Rock-chips rfkill driver for wifi
25 #include <linux/rfkill-wlan.h>
26 #include <linux/rfkill-bt.h>
34 #include <dt-bindings/gpio/gpio.h>
74 * Broadcom Wifi Static Memory
119 dev_alloc_skb(((i < (WLAN_SKB_BUF_NUM / 2)) ? in rockchip_init_wifi_mem()
121 (PAGE_SIZE * 2))); in rockchip_init_wifi_mem()
151 return -ENOMEM; in rockchip_init_wifi_mem()
183 LOG("%s: rfkill-wlan driver has not Successful initialized\n", in rfkill_set_wifi_bt_power()
185 return -1; in rfkill_set_wifi_bt_power()
188 vbat = &mrfkill->pdata->vbat_n; in rfkill_set_wifi_bt_power()
190 if (gpio_is_valid(vbat->io)) in rfkill_set_wifi_bt_power()
191 gpio_direction_output(vbat->io, vbat->enable); in rfkill_set_wifi_bt_power()
193 if (gpio_is_valid(vbat->io)) in rfkill_set_wifi_bt_power()
194 gpio_direction_output(vbat->io, !(vbat->enable)); in rfkill_set_wifi_bt_power()
202 * get wifi power state Func
210 LOG("%s: rfkill-wlan driver has not Successful initialized\n", in rfkill_get_wifi_power_state()
212 return -1; in rfkill_get_wifi_power_state()
223 * Wifi Power Control Func
224 * 0 -> power off
225 * 1 -> power on
239 LOG("%s: rfkill-wlan driver has not Successful initialized\n", in rockchip_wifi_power()
241 return -1; in rockchip_wifi_power()
244 if (mrfkill->pdata->wifi_power_remain && power_set_time) { in rockchip_wifi_power()
245 LOG("%s: wifi power is setted to be remain on.", __func__); in rockchip_wifi_power()
254 if (mrfkill->pdata->mregulator.power_ctrl_by_pmu) { in rockchip_wifi_power()
255 int ret = -1; in rockchip_wifi_power()
257 int level = mrfkill->pdata->mregulator.enable; in rockchip_wifi_power()
259 ldostr = mrfkill->pdata->mregulator.pmu_regulator; in rockchip_wifi_power()
261 return -1; in rockchip_wifi_power()
266 return -1; in rockchip_wifi_power()
275 LOG("wifi turn on power.\n"); in rockchip_wifi_power()
284 LOG("wifi shut off power.\n"); in rockchip_wifi_power()
289 poweron = &mrfkill->pdata->power_n; in rockchip_wifi_power()
290 reset = &mrfkill->pdata->reset_n; in rockchip_wifi_power()
298 if (gpio_is_valid(poweron->io)) { in rockchip_wifi_power()
299 gpio_direction_output(poweron->io, poweron->enable); in rockchip_wifi_power()
303 if (gpio_is_valid(reset->io)) { in rockchip_wifi_power()
304 gpio_direction_output(reset->io, reset->enable); in rockchip_wifi_power()
309 LOG("wifi turn on power [GPIO%d-%d]\n", poweron->io, poweron->enable); in rockchip_wifi_power()
311 if (gpio_is_valid(poweron->io)) { in rockchip_wifi_power()
312 printk("wifi power off\n"); in rockchip_wifi_power()
313 gpio_direction_output(poweron->io, !(poweron->enable)); in rockchip_wifi_power()
317 if (gpio_is_valid(reset->io)) { in rockchip_wifi_power()
318 gpio_direction_output(reset->io, !(reset->enable)); in rockchip_wifi_power()
324 LOG("%s: wifi will set vbat to low\n", __func__); in rockchip_wifi_power()
327 LOG("%s: wifi shouldn't control the vbat\n", __func__); in rockchip_wifi_power()
330 LOG("wifi shut off power [GPIO%d-%d]\n", poweron->io, !poweron->enable); in rockchip_wifi_power()
340 * Wifi Sdio Detect Func
351 * Wifi Get Interrupt irq Func
362 LOG("%s: rfkill-wlan driver has not Successful initialized\n", in rockchip_wifi_get_oob_irq()
364 return -1; in rockchip_wifi_get_oob_irq()
367 wifi_int_irq = &mrfkill->pdata->wifi_int_b; in rockchip_wifi_get_oob_irq()
368 if (gpio_is_valid(wifi_int_irq->io)) { in rockchip_wifi_get_oob_irq()
369 return gpio_to_irq(wifi_int_irq->io); in rockchip_wifi_get_oob_irq()
370 //return wifi_int_irq->io; in rockchip_wifi_get_oob_irq()
372 LOG("%s: wifi OOB pin isn't defined.\n", __func__); in rockchip_wifi_get_oob_irq()
375 return -1; in rockchip_wifi_get_oob_irq()
383 int gpio_flags = -1; in rockchip_wifi_get_oob_irq_flag()
386 wifi_int_irq = &mrfkill->pdata->wifi_int_b; in rockchip_wifi_get_oob_irq_flag()
387 if (gpio_is_valid(wifi_int_irq->io)) in rockchip_wifi_get_oob_irq_flag()
388 gpio_flags = wifi_int_irq->enable; in rockchip_wifi_get_oob_irq_flag()
397 * Wifi Reset Func
408 * Wifi MAC custom Func
421 while (count-- > 0) { in get_wifi_addr_vendor()
429 LOG("%s: rk_vendor_read wifi mac address failed (%d)\n", in get_wifi_addr_vendor()
433 LOG("%s: generate random wifi mac address: " in get_wifi_addr_vendor()
435 __func__, addr[0], addr[1], addr[2], addr[3], addr[4], in get_wifi_addr_vendor()
442 return -1; in get_wifi_addr_vendor()
445 return -1; in get_wifi_addr_vendor()
448 LOG("%s: rk_vendor_read wifi mac address: " in get_wifi_addr_vendor()
450 __func__, addr[0], addr[1], addr[2], addr[3], addr[4], in get_wifi_addr_vendor()
465 return -1; in rockchip_wifi_mac_addr()
470 wifi_custom_mac_addr[2], wifi_custom_mac_addr[3], in rockchip_wifi_mac_addr()
479 return -1; in rockchip_wifi_mac_addr()
490 * wifi get country code func
494 char iso_abbrev[4]; /* ISO 3166-1 country abbreviation */
496 int custom_locale_rev; /* Custom local revisin default -1 */
507 memcpy(mcloc->custom_locale, ccode, 4); in rockchip_wifi_country_code()
508 mcloc->custom_locale_rev = 0; in rockchip_wifi_country_code()
518 if (gpio_is_valid(gpio->io)) { in rfkill_rk_setup_gpio()
521 sprintf(gpio->name, "%s_%s", prefix, name); in rfkill_rk_setup_gpio()
522 ret = gpio_request(gpio->io, gpio->name); in rfkill_rk_setup_gpio()
524 LOG("Failed to get %s gpio.\n", gpio->name); in rfkill_rk_setup_gpio()
525 return -1; in rfkill_rk_setup_gpio()
536 struct device_node *node = dev->of_node; in wlan_platdata_parse_dt()
544 return -ENODEV; in wlan_platdata_parse_dt()
549 data->grf = syscon_regmap_lookup_by_phandle(node, "rockchip,grf"); in wlan_platdata_parse_dt()
550 if (IS_ERR(data->grf)) { in wlan_platdata_parse_dt()
552 //return -1; in wlan_platdata_parse_dt()
568 data->wifi_power_remain = true; in wlan_platdata_parse_dt()
569 LOG("%s: wifi power remain\n", __func__); in wlan_platdata_parse_dt()
571 data->wifi_power_remain = false; in wlan_platdata_parse_dt()
572 LOG("%s: enable wifi power control.\n", __func__); in wlan_platdata_parse_dt()
576 data->mregulator.power_ctrl_by_pmu = true; in wlan_platdata_parse_dt()
582 data->mregulator.power_ctrl_by_pmu = false; in wlan_platdata_parse_dt()
584 LOG("%s: wifi power controlled by pmu(%s).\n", __func__, in wlan_platdata_parse_dt()
586 sprintf(data->mregulator.pmu_regulator, "%s", strings); in wlan_platdata_parse_dt()
593 data->mregulator.power_ctrl_by_pmu = false; in wlan_platdata_parse_dt()
595 LOG("%s: wifi power controlled by pmu(level = %s).\n", in wlan_platdata_parse_dt()
597 data->mregulator.enable = value; in wlan_platdata_parse_dt()
600 data->mregulator.power_ctrl_by_pmu = false; in wlan_platdata_parse_dt()
601 LOG("%s: wifi power controled by gpio.\n", __func__); in wlan_platdata_parse_dt()
602 gpio = of_get_named_gpio_flags(node, "WIFI,poweren_gpio", 0, in wlan_platdata_parse_dt()
605 data->power_n.io = gpio; in wlan_platdata_parse_dt()
606 data->power_n.enable = in wlan_platdata_parse_dt()
608 LOG("%s: WIFI,poweren_gpio = %d flags = %d.\n", in wlan_platdata_parse_dt()
611 data->power_n.io = -1; in wlan_platdata_parse_dt()
613 gpio = of_get_named_gpio_flags(node, "WIFI,vbat_gpio", 0, in wlan_platdata_parse_dt()
616 data->vbat_n.io = gpio; in wlan_platdata_parse_dt()
617 data->vbat_n.enable = in wlan_platdata_parse_dt()
619 LOG("%s: WIFI,vbat_gpio = %d, flags = %d.\n", in wlan_platdata_parse_dt()
622 data->vbat_n.io = -1; in wlan_platdata_parse_dt()
624 gpio = of_get_named_gpio_flags(node, "WIFI,reset_gpio", 0, in wlan_platdata_parse_dt()
627 data->reset_n.io = gpio; in wlan_platdata_parse_dt()
628 data->reset_n.enable = in wlan_platdata_parse_dt()
630 LOG("%s: WIFI,reset_gpio = %d, flags = %d.\n", in wlan_platdata_parse_dt()
633 data->reset_n.io = -1; in wlan_platdata_parse_dt()
635 gpio = of_get_named_gpio_flags(node, "WIFI,host_wake_irq", 0, in wlan_platdata_parse_dt()
638 data->wifi_int_b.io = gpio; in wlan_platdata_parse_dt()
639 data->wifi_int_b.enable = !flags; in wlan_platdata_parse_dt()
640 LOG("%s: WIFI,host_wake_irq = %d, flags = %d.\n", in wlan_platdata_parse_dt()
643 data->wifi_int_b.io = -1; in wlan_platdata_parse_dt()
647 data->ext_clk = devm_clk_get(dev, "clk_wifi"); in wlan_platdata_parse_dt()
648 if (IS_ERR(data->ext_clk)) { in wlan_platdata_parse_dt()
651 of_property_read_u32(node, "ref-clock-frequency", in wlan_platdata_parse_dt()
654 ret = clk_set_rate(data->ext_clk, ext_clk_value); in wlan_platdata_parse_dt()
659 ret = clk_prepare_enable(data->ext_clk); in wlan_platdata_parse_dt()
663 /* WIFI clock (REF_CLKOUT) output enable. in wlan_platdata_parse_dt()
668 regmap_write(data->grf, 0x0314, 0x00020002); in wlan_platdata_parse_dt()
693 .level = EARLY_SUSPEND_LEVEL_BLANK_SCREEN - 20;
718 int blank_mode = *((int *)event->data); in rfkill_wlan_fb_event_notify()
749 return -EINVAL; in wifi_power_store()
773 return -EINVAL; in wifi_bt_vbat_store()
792 return -EINVAL; in wifi_set_carddetect_store()
823 struct rksdmmc_gpio_wifi_moudle *pdata = pdev->dev.platform_data; in rfkill_wlan_probe()
824 int ret = -1; in rfkill_wlan_probe()
834 return -ENOMEM; in rfkill_wlan_probe()
836 ret = wlan_platdata_parse_dt(&pdev->dev, pdata); in rfkill_wlan_probe()
850 rfkill->pdata = pdata; in rfkill_wlan_probe()
855 if (!pdata->mregulator.power_ctrl_by_pmu) { in rfkill_wlan_probe()
856 ret = rfkill_rk_setup_gpio(&pdata->vbat_n, wlan_name, in rfkill_wlan_probe()
861 ret = rfkill_rk_setup_gpio(&pdata->reset_n, wlan_name, in rfkill_wlan_probe()
867 wake_lock_init(&rfkill->wlan_irq_wl, WAKE_LOCK_SUSPEND, in rfkill_wlan_probe()
873 if (gpio_is_valid(pdata->power_n.io) && in rfkill_wlan_probe()
874 gpio_direction_output(pdata->power_n.io, pdata->power_n.enable); in rfkill_wlan_probe()
878 if (pdata->wifi_power_remain) in rfkill_wlan_probe()
911 wake_lock_destroy(&rfkill->wlan_irq_wl);
915 if (gpio_is_valid(rfkill->pdata->power_n.io))
916 gpio_free(rfkill->pdata->power_n.io);
918 if (gpio_is_valid(rfkill->pdata->reset_n.io))
919 gpio_free(rfkill->pdata->reset_n.io);
949 { .compatible = "wlan-platdata" },
962 .name = "wlan-platdata",
980 MODULE_DESCRIPTION("rock-chips rfkill for wifi v0.1");
981 MODULE_AUTHOR("gwl@rock-chips.com");