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; }