int vcc2_power_off(void) { int ret = 0; uint8_t val; axp_gpio_set_io(2,1); ret = axp_gpio_set_io(2, 0); if(ret) { return ret; } return 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); }
static void LCD_bl_close(__u32 sel) { //LCD_BL_EN(sel, 0);//config lcd_bl_en pin to close lcd backlight axp_gpio_set_io(1, 1); axp_gpio_set_value(1, 0); LCD_PWM_EN(sel, 0);//close pwm module }
static void LCD_bl_open(__u32 sel) { LCD_PWM_EN(sel, 1);//open pwm module //LCD_BL_EN(sel, 1);//config lcd_bl_en pin to open lcd backlight axp_gpio_set_io(1, 1); axp_gpio_set_value(1, 1); }
static void power_off_lcd(void) { #ifdef CONFIG_AW_AXP axp_gpio_set_io(3,0); #else //VCCx3_EN: GPIOD_2 WRITE_MPEG_REG(0x2013, READ_MPEG_REG(0x2013) & ~(1 << 18)); //WRITE_MPEG_REG(0x2012, READ_MPEG_REG(0x2012) & ~(1 << 18)); #endif msleep(10); //LCD_PWR_EN: GPIOA_27 WRITE_MPEG_REG(0x200d, READ_MPEG_REG(0x200d) | (1 << 27)); //WRITE_MPEG_REG(0x200c, READ_MPEG_REG(0x200c) & ~(1 << 27)); msleep(10); }
static void power_off_lcd(void) { //printk("\n\nLCD: power off lcd.\n"); //VCCx3_EN WRITE_MPEG_REG(0x2013, READ_MPEG_REG(0x2013) & ~(1 << 2)); //WRITE_MPEG_REG(0x2012, READ_MPEG_REG(0x2012) & ~(1 << 2)); #ifdef CONFIG_AW_AXP axp_gpio_set_io(3,1); axp_gpio_set_value(3, 1); #endif msleep(50); //LCD_PWR_EN WRITE_MPEG_REG(0x200d, READ_MPEG_REG(0x200d) | (1 << 27)); //WRITE_MPEG_REG(0x200c, READ_MPEG_REG(0x200c) & ~(1 << 27)); msleep(10); }
static void power_on_lcd(void) { //LCD_PWR_EN: GPIOA_27 WRITE_MPEG_REG(0x200d, READ_MPEG_REG(0x200d) & ~(1 << 27)); WRITE_MPEG_REG(0x200c, READ_MPEG_REG(0x200c) & ~(1 << 27)); msleep(10); #ifdef CONFIG_AW_AXP axp_gpio_set_io(3,1); axp_gpio_set_value(3, 0); #else //VCCx3_EN: GPIOD_2 WRITE_MPEG_REG(0x202c, READ_MPEG_REG(0x202c) & ~(1 << 22)); WRITE_MPEG_REG(0x202d, READ_MPEG_REG(0x202d) & ~(1 << 19)); WRITE_MPEG_REG(0x2013, READ_MPEG_REG(0x2013) | (1 << 18)); WRITE_MPEG_REG(0x2012, READ_MPEG_REG(0x2012) & ~(1 << 18)); #endif msleep(10); }
static ssize_t set_io(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { struct virtual_gpio_data *data = dev_get_drvdata(dev); long val; int ret; if (strict_strtol(buf, 10, &val) != 0) return count; mutex_lock(&data->lock); data->io = val; ret = axp_gpio_set_io(data->gpio,data->io); mutex_unlock(&data->lock); if(ret) return ret; return count; }
static void LCD_power_off(__u32 sel) { //LCD_POWER_EN(sel, 0);//config lcd_power pin to close lcd power axp_gpio_set_io(0, 1); axp_gpio_set_value(0, 0); }
static void LCD_power_on(__u32 sel) { //LCD_POWER_EN(sel, 1);//config lcd_power pin to open lcd power axp_gpio_set_io(0, 1); axp_gpio_set_value(0, 1); }