int ti_wifi_power(int on)
{
	printk(KERN_INFO "[WLAN]%s: %d\n", __func__, on);

	if (on) {
	   config_gpio_table(wifi_on_gpio_table,
				ARRAY_SIZE(wifi_on_gpio_table));
	   /* control osc */
	   htc_wifi_bt_fast_clk_ctl(CLK_ON, ID_WIFI);
	   msleep(100);
	   gpio_set_value(BLISS_GPIO_WIFI_SHUTDOWN_N, 1); /* WIFI_SHUTDOWN */
	   msleep(15);
	   gpio_set_value(BLISS_GPIO_WIFI_SHUTDOWN_N, 0);
	   msleep(1);
	   gpio_set_value(BLISS_GPIO_WIFI_SHUTDOWN_N, 1);
	   msleep(70);
	} else {
   	  gpio_set_value(BLISS_GPIO_WIFI_SHUTDOWN_N,0);
   	  msleep(1);
	  config_gpio_table(wifi_off_gpio_table,
				ARRAY_SIZE(wifi_off_gpio_table));
	  msleep(10);
      /* control osc */
	  htc_wifi_bt_fast_clk_ctl(CLK_OFF, ID_WIFI);
	}
	msleep(250);
	printk(KERN_INFO "[WLAN]%s: ---\n", __func__);
	return 0;
}
示例#2
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 ruby_config_bt_on(void)
{
	config_bt_table(ruby_bt_on_table,
				ARRAY_SIZE(ruby_bt_on_table));
	mdelay(4);

	htc_wifi_bt_fast_clk_ctl(CLK_ON, ID_BT);
	mdelay(4);

	gpio_set_value(RUBY_GPIO_BT_EN, 0);
	mdelay(4);

	gpio_set_value(RUBY_GPIO_BT_EN, 1);

}
static void bliss_config_bt_off(void)
{
	/* BT_EN */
	gpio_set_value(BLISS_GPIO_BT_EN, 0);
	mdelay(4);

	/* control osc */
	htc_wifi_bt_fast_clk_ctl(CLK_OFF, ID_BT);
	mdelay(4);

	/* set bt off configuration*/
	config_bt_table(bliss_bt_off_table,
				ARRAY_SIZE(bliss_bt_off_table));
	mdelay(4);

}
static void ruby_config_bt_off(void)
{
	gpio_set_value(RUBY_GPIO_BT_EN, 0);
	mdelay(4);

	htc_wifi_bt_fast_clk_ctl(CLK_OFF, ID_BT);
	mdelay(4);

	config_bt_table(ruby_bt_off_table,
				ARRAY_SIZE(ruby_bt_off_table));
	mdelay(4);

	gpio_set_value(RUBY_GPIO_BT_UART1_RTS, 1);

	mdelay(4);

	gpio_set_value(RUBY_GPIO_BT_UART1_TX, 1);

	mdelay(4);

}