Exemple #1
0
static void lcd_power_ctrl(Bool_t status)
{
	mutex_lock(&lcd_power_mutex);
	printk(KERN_INFO "%s() Power %s\n", __FUNCTION__, (status ? "ON" : "OFF"));
    if (status) {
        //GPIOA27 -> LCD_PWR_EN#: 0  lcd 3.3v
		gpio_out(PAD_GPIOA_27, 1);        
        lcd_mdelay(20);
		
		gpio_out(PAD_GPIOD_8, 1);
		
        //GPIOC2 -> VCCx3_EN: 0
        gpio_out(PAD_GPIOC_2, 1);
#ifdef CONFIG_AW_AXP
		axp_gpio_set_io(3,1);     
		axp_gpio_set_value(3, 0); 
#endif			
		lcd_mdelay(20);			
		
        lcd_signals_ports_ctrl(ON);
		lcd_mdelay(10);	
		
		gpio_out(PAD_GPIOD_6, 1);
		lcd_mdelay(200);
		data_status = status;
    }
    else {
		data_status = status;
		lcd_mdelay(30);
		gpio_out(PAD_GPIOD_6, 0);
        lcd_signals_ports_ctrl(OFF);
		lcd_mdelay(20);
		
        //GPIOC2 -> VCCx3_EN: 1        
        gpio_out(PAD_GPIOC_2, 0);
#ifdef CONFIG_AW_AXP
		axp_gpio_set_io(3,0);
#endif
		lcd_mdelay(20);
		gpio_out(PAD_GPIOD_8, 0);
        //GPIOA27 -> LCD_PWR_EN#: 1  lcd 3.3v
        gpio_out(PAD_GPIOA_27, 0);
		lcd_mdelay(100);        //power down sequence, needed
    }
	printk(KERN_INFO "%s() Power %s finished\n", __FUNCTION__, (status ? "ON" : "OFF"));
	mutex_unlock(&lcd_power_mutex);
}
Exemple #2
0
static inline void _power_on_backlight(void)
{
	mutex_lock(&bl_power_mutex);
	if (bl_real_status) {
		mutex_unlock(&bl_power_mutex);
		return;
	}
    aml_set_reg32_bits(P_LED_PWM_REG0, 1, 12, 2);
    lcd_mdelay(20); 
		
#if (BL_CTL==BL_CTL_GPIO)
	//BL_EN -> GPIOD_1: 1
	gpio_out(PAD_GPIOD_1, 1);
#elif (BL_CTL==BL_CTL_PWM)
	gpio_out(PAD_GPIOC_8, 1);
	aml_set_reg32_bits(P_PWM_MISC_REG_CD, PWM_PRE_DIV, 16, 7);
	aml_set_reg32_bits(P_PWM_MISC_REG_CD, 1, 23, 1);
	aml_set_reg32_bits(P_PWM_MISC_REG_CD, 1, 1, 1);  //enable pwm_d		
	aml_write_reg32(P_PERIPHS_PIN_MUX_2, aml_read_reg32(P_PERIPHS_PIN_MUX_2) | (1<<3));  //enable pwm pinmux
#endif
	bl_real_status = 1;
	mutex_unlock(&bl_power_mutex);
}
static void backlight_power_ctrl(Bool_t status)
{ 
	mutex_lock(&bl_power_mutex);
	PRINT_INFO("%s(): bl_status=%s, data_status=%s, bl_level=%u\n", __FUNCTION__, (bl_status ? "ON" : "OFF"), (data_status ? "ON" : "OFF"), bl_level);
    if( status == ON ){
		if ((bl_status == ON) || (data_status == OFF) || (bl_level == 0)) {
			mutex_unlock(&bl_power_mutex);
			return;
		}	
        aml_set_reg32_bits(P_LED_PWM_REG0, 1, 12, 2);
        lcd_mdelay(20); 
		
#if (BL_CTL==BL_CTL_GPIO)	
		//BL_EN -> GPIOD_1: 1
		gpio_out(PAD_GPIOD_1, 1);		
#elif (BL_CTL==BL_CTL_PWM)		 		
		aml_set_reg32_bits(P_PWM_MISC_REG_CD, PWM_PRE_DIV, 16, 7);
		aml_set_reg32_bits(P_PWM_MISC_REG_CD, 1, 23, 1);
		aml_set_reg32_bits(P_PWM_MISC_REG_CD, 1, 1, 1);  //enable pwm_d		
		aml_write_reg32(P_PERIPHS_PIN_MUX_2, aml_read_reg32(P_PERIPHS_PIN_MUX_2) | (1<<3));  //enable pwm pinmux
#endif
    }
    else{
		if (bl_status == OFF) {
			mutex_unlock(&bl_power_mutex);
			return;
		}
#if (BL_CTL==BL_CTL_GPIO)		
		gpio_out(PAD_GPIOD_1, 0);		
#elif (BL_CTL==BL_CTL_PWM)		
		aml_set_reg32_bits(P_PWM_MISC_REG_CD, 0, 1, 1);	//disable pwm_d		
#endif		
    }
	bl_status = status;
	printk(KERN_INFO "%s() Power %s\n", __FUNCTION__, (status ? "ON" : "OFF"));
	mutex_unlock(&bl_power_mutex);
}