static void htcsable_set_bl_intensity(int intensity) { printk("htcsable_set_bl_intensity: %d\n", intensity); /* LCD brightness is driven by PWM0. * We'll set the pre-scaler to 8, and the period to 1024, this * means the backlight refresh rate will be 3686400/(8*1024) = * 450 Hz which is quite enough. */ PWM_CTRL0 = 7; /* pre-scaler */ PWM_PWDUTY0 = intensity; /* duty cycle */ PWM_PERVAL0 = HTCSABLE_MAX_INTENSITY; /* period */ if (intensity > 0) { asic3_set_gpio_out_d(&htcsable_asic3.dev, GPIOD_LCD_BACKLIGHT, GPIOD_LCD_BACKLIGHT); mdelay(15); asic3_set_gpio_out_d(&htcsable_asic3.dev, 1<<14, 1<<14); mdelay(15); pxa_set_cken(CKEN0_PWM0, 1); } else { asic3_set_gpio_out_d(&htcsable_asic3.dev, GPIOD_LCD_BACKLIGHT, 0); mdelay(15); asic3_set_gpio_out_d(&htcsable_asic3.dev, 1<<14, 0); mdelay(15); pxa_set_cken(CKEN0_PWM0, 0); } }
static void snd_h4000_audio_set_speaker_power(int mode) { if (mode == 1) { DPM_DEBUG("h4000_audio: Turning speaker on\n"); asic3_set_gpio_out_d(asic3, GPIOD_SPK_EN, GPIOD_SPK_EN); } else { DPM_DEBUG("h4000_audio: Turning speaker off\n"); asic3_set_gpio_out_d(asic3, GPIOD_SPK_EN, 0); } }
static void phone_off(void) { asic3_set_gpio_out_d(&htcuniversal_asic3.dev, 1<<GPIOD_BB_RESET1, 1<<GPIOD_BB_RESET1); mdelay(2000); asic3_set_gpio_out_d(&htcuniversal_asic3.dev, 1<<GPIOD_BB_RESET1, 0); asic3_set_gpio_out_b(&htcuniversal_asic3.dev, 1<<GPIOB_BB_RESET2, 1<<GPIOB_BB_RESET2); SET_HTCUNIVERSAL_GPIO(PHONE_OFF,0); }
int h4000_wlan_stop(void) { printk("h4000_wlan_stop\n"); asic3_set_gpio_out_d(&h4000_asic3.dev, GPIOD_WLAN_MAC_RESET, GPIOD_WLAN_MAC_RESET); mdelay(100); asic3_set_gpio_out_c(&h4000_asic3.dev, GPIOC_WLAN_POWER_ON, 0); asic3_set_gpio_dir_b(&h4000_asic3.dev, 1<<GPIOB_WLAN_SOMETHING, 1); mdelay(100); asic3_set_gpio_out_d(&h4000_asic3.dev, GPIOD_WLAN_MAC_RESET, 0); // MECR &= ~MECR_CIT; return 0; }
int h4000_wlan_start(void) { int timeout; printk("h4000_wlan_start\n"); printk("GPIO_NR_H4000_WLAN_MAC_IRQ_N=%d\n", !!gpio_get_value(GPIO_NR_H4000_WLAN_MAC_IRQ_N)); asic3_set_gpio_out_d(&h4000_asic3.dev, GPIOD_WLAN_MAC_RESET, GPIOD_WLAN_MAC_RESET); // printk("GPIO_NR_H4000_WLAN_MAC_IRQ_N=%d\n", !!gpio_get_value(GPIO_NR_H4000_WLAN_MAC_IRQ_N)); mdelay(100); // printk("GPIO_NR_H4000_WLAN_MAC_IRQ_N=%d\n", !!gpio_get_value(GPIO_NR_H4000_WLAN_MAC_IRQ_N)); asic3_set_gpio_dir_b(&h4000_asic3.dev, 1<<GPIOB_WLAN_SOMETHING, 0); // printk("GPIO_NR_H4000_WLAN_MAC_IRQ_N=%d\n", !!gpio_get_value(GPIO_NR_H4000_WLAN_MAC_IRQ_N)); asic3_set_gpio_out_c(&h4000_asic3.dev, GPIOC_WLAN_POWER_ON, GPIOC_WLAN_POWER_ON); // printk("GPIO_NR_H4000_WLAN_MAC_IRQ_N=%d\n", !!gpio_get_value(GPIO_NR_H4000_WLAN_MAC_IRQ_N)); mdelay(30); // printk("GPIO_NR_H4000_WLAN_MAC_IRQ_N=%d\n", !!gpio_get_value(GPIO_NR_H4000_WLAN_MAC_IRQ_N)); mdelay(100); // MECR |= MECR_CIT; printk("GPIO_NR_H4000_WLAN_MAC_IRQ_N=%d\n", !!gpio_get_value(GPIO_NR_H4000_WLAN_MAC_IRQ_N)); mdelay(100); asic3_set_gpio_out_d(&h4000_asic3.dev, GPIOD_WLAN_MAC_RESET, 0); int val = -1; for (timeout = 250; timeout; timeout--) { int v2 = !!gpio_get_value(GPIO_NR_H4000_WLAN_MAC_IRQ_N); if (v2 != val) { printk("%d: GPIO_NR_H4000_WLAN_MAC_IRQ_N=%d\n", timeout, v2); val = v2; } if (v2) break; mdelay(1); } if (!timeout) printk("Timeout waiting for WLAN\n"); return 0; }