Esempio n. 1
0
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);
	}
}
Esempio n. 2
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);
}
Esempio n. 4
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;
}
Esempio n. 5
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;
}