int m7wl_wifi_power(int on) { const unsigned SDC3_HDRV_PULL_CTL_ADDR = (unsigned) MSM_TLMM_BASE + 0x20A4; #ifdef ENABLE_4335BT_WAR int lock_cookie_wifi = 'W' | 'i'<<8 | 'F'<<16 | 'i'<<24; printk("WiFi: trying to acquire BT lock\n"); if (bcm_bt_lock(lock_cookie_wifi) != 0) printk("** WiFi: timeout in acquiring bt lock**\n"); else printk("** WiFi: btlock acquired**\n"); #endif printk(KERN_INFO "%s: %d\n", __func__, on); if (on) { #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_14MA, HDRIV_STR_12MA, HDRIV_STR_12MA); #endif config_gpio_table(wifi_on_gpio_table, ARRAY_SIZE(wifi_on_gpio_table)); } else { #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 config_gpio_table(wifi_off_gpio_table, ARRAY_SIZE(wifi_off_gpio_table)); } mdelay(1); htc_BCM4335_wl_reg_ctl((on)?BCM4335_WL_REG_ON:BCM4335_WL_REG_OFF, ID_WIFI); mdelay(1); #if 0 wl_dev_wake_gpio.config.output_value = on? 1: 0; pm8xxx_gpio_config(wl_dev_wake_gpio.gpio, &wl_dev_wake_gpio.config); #endif mdelay(120); #ifdef ENABLE_4335BT_WAR bcm_bt_unlock(lock_cookie_wifi); #endif 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; }