int k2_ul_wifi_power(int on) { printk(KERN_INFO "%s: %d\n", __func__, on); if (on) { config_gpio_table(wifi_on_gpio_table, ARRAY_SIZE(wifi_on_gpio_table)); } else { config_gpio_table(wifi_off_gpio_table, ARRAY_SIZE(wifi_off_gpio_table)); } htc_wifi_bt_sleep_clk_ctl(on, ID_WIFI); mdelay(1);/*Delay 1 ms, Recommand by Hardware*/ gpio_set_value(MSM_WL_REG_ON, on); /* WIFI_SHUTDOWN */ mdelay(1); gpio_set_value(MSM_WL_DEV_WAKE, on); /* mdelay(1); gpio_set_value(MSM_V_WL_IO_1V8_EN, on); */ mdelay(120); return 0; }
int k2_plc_cl_wifi_power(int on) { printk(KERN_INFO "%s: %d\n", __func__, on); if (on) { config_gpio_table(wifi_on_gpio_table, ARRAY_SIZE(wifi_on_gpio_table)); } else { config_gpio_table(wifi_off_gpio_table, ARRAY_SIZE(wifi_off_gpio_table)); } htc_wifi_bt_sleep_clk_ctl(on, ID_WIFI); mdelay(1); gpio_set_value(MSM_WL_REG_ON, on); mdelay(1); gpio_set_value(MSM_WL_DEV_WAKE, on); mdelay(1); gpio_set_value(MSM_V_WL_IO_1V8_EN, on); mdelay(120); return 0; }
static void pyramid_config_bt_off(void) { /* BT_RESET_N */ gpio_set_value(PYRAMID_GPIO_BT_RESET_N, 0); mdelay(1); /* BT_SHUTDOWN_N */ gpio_set_value(PYRAMID_GPIO_BT_SHUTDOWN_N, 0); mdelay(1); /* set bt off configuration*/ config_bt_table(pyramid_bt_off_table, ARRAY_SIZE(pyramid_bt_off_table)); mdelay(2); /* BT_RTS */ gpio_set_value(PYRAMID_GPIO_BT_UART1_RTS, 1); /* BT_CTS */ /* BT_TX */ gpio_set_value(PYRAMID_GPIO_BT_UART1_TX, 0); /* BT_RX */ /* BT_HOST_WAKE */ /* BT_CHIP_WAKE */ gpio_set_value(PYRAMID_GPIO_BT_CHIP_WAKE, 0); htc_wifi_bt_sleep_clk_ctl(CLK_OFF, ID_BT); mdelay(2); }
static int pico_rfkill_probe(struct platform_device *pdev) { int rc = 0; bool default_state = true; /* off */ /* always turn on clock */ htc_wifi_bt_sleep_clk_ctl(CLK_ON, ID_BT); mdelay(2); bluetooth_set_power(NULL, default_state); bt_rfk = rfkill_alloc(bt_name, &pdev->dev, RFKILL_TYPE_BLUETOOTH, &pico_rfkill_ops, NULL); if (!bt_rfk) { rc = -ENOMEM; goto err_rfkill_alloc; } rfkill_set_states(bt_rfk, default_state, false); /* userspace cannot take exclusive control */ rc = rfkill_register(bt_rfk); if (rc) goto err_rfkill_reg; return 0; err_rfkill_reg: rfkill_destroy(bt_rfk); err_rfkill_alloc: return rc; }
int ti_wifi_power(int on) { const unsigned SDC4_HDRV_PULL_CTL_ADDR = (unsigned) MSM_TLMM_BASE + 0x20A0; printk(KERN_INFO "%s: %d\n", __func__, on); if (on) { htc_wifi_bt_fast_clk_ctl(on, ID_WIFI); mdelay(100); htc_wifi_bt_sleep_clk_ctl(on, ID_WIFI); mdelay(100); gpio_set_value(RUBY_GPIO_WIFI_SHUTDOWN_N, 1); msleep(15); gpio_set_value(RUBY_GPIO_WIFI_SHUTDOWN_N, 0); msleep(1); gpio_set_value(RUBY_GPIO_WIFI_SHUTDOWN_N, 1); msleep(70); config_gpio_table(wifi_on_gpio_table, ARRAY_SIZE(wifi_on_gpio_table)); mdelay(200); writel(0x1FDB, SDC4_HDRV_PULL_CTL_ADDR); } else { writel(0x1FDB, SDC4_HDRV_PULL_CTL_ADDR); config_gpio_table(wifi_off_gpio_table, ARRAY_SIZE(wifi_off_gpio_table)); gpio_set_value(RUBY_GPIO_WIFI_SHUTDOWN_N, on); mdelay(1); htc_wifi_bt_sleep_clk_ctl(on, ID_WIFI); mdelay(1); htc_wifi_bt_fast_clk_ctl(on, ID_WIFI); } mdelay(120); return 0; }
static void m4_config_bt_on(void) { printk(KERN_INFO "[BT]== R ON ==\n"); htc_wifi_bt_sleep_clk_ctl(CLK_ON, ID_BT); mdelay(2); config_bt_table(m4_bt_on_table, ARRAY_SIZE(m4_bt_on_table)); mdelay(2); gpio_set_value(MSM_BT_REG_ON, 0); mdelay(5); gpio_set_value(MSM_BT_REG_ON, 1); mdelay(50); }
static int shooter_rfkill_probe(struct platform_device *pdev) { int rc = 0; bool default_state = true; /* off */ rc = gpio_request(SHOOTER_GPIO_BT_RESET_N, "bt_reset"); if (rc) goto err_gpio_reset; rc = gpio_request(SHOOTER_GPIO_BT_SHUTDOWN_N, "bt_shutdown"); if (rc) goto err_gpio_shutdown; /* always turn on clock? */ htc_wifi_bt_sleep_clk_ctl(CLK_ON, ID_BT); mdelay(2); bluetooth_set_power(NULL, default_state); bt_rfk = rfkill_alloc(bt_name, &pdev->dev, RFKILL_TYPE_BLUETOOTH, &shooter_rfkill_ops, NULL); if (!bt_rfk) { rc = -ENOMEM; goto err_rfkill_alloc; } rfkill_set_states(bt_rfk, default_state, false); /* userspace cannot take exclusive control */ rc = rfkill_register(bt_rfk); if (rc) goto err_rfkill_reg; return 0; err_rfkill_reg: rfkill_destroy(bt_rfk); err_rfkill_alloc: gpio_free(SHOOTER_GPIO_BT_SHUTDOWN_N); err_gpio_shutdown: gpio_free(SHOOTER_GPIO_BT_RESET_N); err_gpio_reset: return rc; }
static void pyramid_config_bt_on(void) { htc_wifi_bt_sleep_clk_ctl(CLK_ON, ID_BT); mdelay(2); /* set bt on configuration*/ config_bt_table(pyramid_bt_on_table, ARRAY_SIZE(pyramid_bt_on_table)); mdelay(2); /* BT_SHUTDOWN_N */ gpio_set_value(PYRAMID_GPIO_BT_SHUTDOWN_N, 1); mdelay(1); /* BT_RESET_N */ gpio_set_value(PYRAMID_GPIO_BT_RESET_N, 1); mdelay(1); }
static void m4_config_bt_off(void) { gpio_set_value(MSM_BT_REG_ON, 0); mdelay(2); config_bt_table(m4_bt_off_table, ARRAY_SIZE(m4_bt_off_table)); mdelay(2); gpio_set_value(MSM_BT_UART_TX, 0); gpio_set_value(MSM_BT_UART_RTSz, 0); gpio_set_value(MSM_BT_REG_ON, 0); gpio_set_value(MSM_BT_DEV_WAKE, 1); htc_wifi_bt_sleep_clk_ctl(CLK_OFF, ID_BT); mdelay(2); printk(KERN_INFO "[BT]== R OFF ==\n"); }
int shooter_u_wifi_power(int on) { const unsigned SDC4_HDRV_PULL_CTL_ADDR = (unsigned) MSM_TLMM_BASE + 0x20A0; printk(KERN_INFO "%s: %d\n", __func__, on); if (on) { writel(0x1FDB, SDC4_HDRV_PULL_CTL_ADDR); config_gpio_table(wifi_on_gpio_table, ARRAY_SIZE(wifi_on_gpio_table)); } else { writel(0x0BDB, SDC4_HDRV_PULL_CTL_ADDR); config_gpio_table(wifi_off_gpio_table, ARRAY_SIZE(wifi_off_gpio_table)); } htc_wifi_bt_sleep_clk_ctl(on, ID_WIFI); mdelay(1);//Delay 1 ms, Recommand by Hardware gpio_set_value(SHOOTER_U_GPIO_WIFI_SHUTDOWN_N, on); /* WIFI_SHUTDOWN */ mdelay(120); return 0; }
int vigor_wifi_power(int on) { const unsigned SDC4_HDRV_PULL_CTL_ADDR = (unsigned) MSM_TLMM_BASE + 0x20A0; printk(KERN_INFO "%s: %d\n", __func__, on); if (on) { /* SDC4_CMD_PULL = Pull Up, SDC4_DATA_PULL = Pull up */ writel(0x1FDB, SDC4_HDRV_PULL_CTL_ADDR); config_gpio_table(wifi_on_gpio_table, ARRAY_SIZE(wifi_on_gpio_table)); } else { /* SDC4_CMD_PULL = Pull Down, SDC4_DATA_PULL = Pull Down */ writel(0x0BDB, SDC4_HDRV_PULL_CTL_ADDR); config_gpio_table(wifi_off_gpio_table, ARRAY_SIZE(wifi_off_gpio_table)); } htc_wifi_bt_sleep_clk_ctl(on, ID_WIFI); mdelay(1); /* Delay 1 ms, Recommand by Hardware */ gpio_set_value(VIGOR_GPIO_WIFI_SHUTDOWN_N, on); /* WIFI_SHUTDOWN */ mdelay(120); return 0; }
static int ruby_rfkill_probe(struct platform_device *pdev) { int rc = 0; bool default_state = true; rc = gpio_request(RUBY_GPIO_BT_EN, "bt_en"); if (rc) goto err_gpio_en; htc_wifi_bt_sleep_clk_ctl(CLK_ON, ID_BT); mdelay(2); bluetooth_set_power(NULL, default_state); bt_rfk = rfkill_alloc(bt_name, &pdev->dev, RFKILL_TYPE_BLUETOOTH, &ruby_rfkill_ops, NULL); if (!bt_rfk) { rc = -ENOMEM; goto err_rfkill_alloc; } rfkill_set_states(bt_rfk, default_state, false); rc = rfkill_register(bt_rfk); if (rc) goto err_rfkill_reg; return 0; err_rfkill_reg: rfkill_destroy(bt_rfk); err_rfkill_alloc: gpio_free(RUBY_GPIO_BT_EN); err_gpio_en: return rc; }