int deluxe_ub1_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));
		config_pm_gpio_table(wifi_on_pm_gpio_table,
				  ARRAY_SIZE(wifi_on_pm_gpio_table));
	} else {
		config_gpio_table(wifi_off_gpio_table,
				  ARRAY_SIZE(wifi_off_gpio_table));
		config_pm_gpio_table(wifi_off_pm_gpio_table,
				  ARRAY_SIZE(wifi_off_pm_gpio_table));
	}

	mdelay(1); 
	wl_reg_on_gpio.config.output_value = on? 1: 0;
	pm8xxx_gpio_config(wl_reg_on_gpio.gpio, &wl_reg_on_gpio.config);

	mdelay(1); 
	wl_dev_wake_gpio.config.output_value = on? 1: 0;
	pm8xxx_gpio_config(wl_dev_wake_gpio.gpio, &wl_dev_wake_gpio.config);

	mdelay(120);
	return 0;
}
int deluxe_j_wifi_power(int on)
{
	const unsigned SDC3_HDRV_PULL_CTL_ADDR = (unsigned) MSM_TLMM_BASE + 0x20A4;

	printk(KERN_INFO "%s: %d\n", __func__, on);

	if (on) {
		if (system_rev <= XB) {
#if 0
			writel(0x1FDB, SDC3_HDRV_PULL_CTL_ADDR);
#else
			sdc_pad_gpio_config(SDC3_HDRV_PULL_CTL_ADDR,
					BIT_HDRIV_PULL_UP, BIT_HDRIV_PULL_UP,
					HDRIV_STR_8MA, HDRIV_STR_8MA, HDRIV_STR_8MA);
#endif
		} else {
			config_gpio_table(wifi_on_gpio_table,
					  ARRAY_SIZE(wifi_on_gpio_table));
		}
		config_pm_gpio_table(wifi_on_pm_gpio_table,
				  ARRAY_SIZE(wifi_on_pm_gpio_table));
	} else {
		if (system_rev <= XB) {
#if 0
			writel(0x0BDB, SDC3_HDRV_PULL_CTL_ADDR);
#else
			sdc_pad_gpio_config(SDC3_HDRV_PULL_CTL_ADDR,
					BIT_HDRIV_PULL_UP, BIT_HDRIV_PULL_UP,
					HDRIV_STR_2MA, HDRIV_STR_2MA, HDRIV_STR_2MA);
#endif
		} else {
			config_gpio_table(wifi_off_gpio_table,
					  ARRAY_SIZE(wifi_off_gpio_table));
		}
		config_pm_gpio_table(wifi_off_pm_gpio_table,
				  ARRAY_SIZE(wifi_off_pm_gpio_table));
	}

	mdelay(1); /* delay 1 ms, recommanded by hardware */
	wl_reg_on_gpio.config.output_value = on? 1: 0;
	pm8xxx_gpio_config(wl_reg_on_gpio.gpio, &wl_reg_on_gpio.config);

	mdelay(1); /* delay 1 ms, recommanded by hardware */
	wl_dev_wake_gpio.config.output_value = on? 1: 0;
	pm8xxx_gpio_config(wl_dev_wake_gpio.gpio, &wl_dev_wake_gpio.config);

	mdelay(120);
	return 0;
}