Пример #1
0
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;
}
Пример #2
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);
}
Пример #4
0
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;
}
Пример #5
0
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");
}
Пример #10
0
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;
}
Пример #12
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;
}