void epdc_power_on(void) { unsigned int reg; struct gpio_regs *gpio_regs = (struct gpio_regs *)GPIO2_BASE_ADDR; /* Set EPD_PWR_CTL0 to high - enable EINK_VDD (3.15) */ gpio_set_value(IMX_GPIO_NR(2, 20), 1); udelay(1000); /* Enable epdc signal pin */ epdc_enable_pins(); /* Set PMIC Wakeup to high - enable Display power */ gpio_set_value(IMX_GPIO_NR(3, 20), 1); /* Wait for PWRGOOD == 1 */ while (1) { reg = readl(&gpio_regs->gpio_psr); if (!(reg & (1 << 21))) break; udelay(100); } /* Enable VCOM */ gpio_set_value(IMX_GPIO_NR(3, 17), 1); udelay(500); }
void epdc_power_on(void) { unsigned int reg; /* Set EPD_PWR_CTL0 to high - enable EINK_VDD (3.15) */ gpio_set_value(IMX_GPIO_NR(2, 7), 1); udelay(1000); /* Enable epdc signal pin */ epdc_enable_pins(); /* Set PMIC Wakeup to high - enable Display power */ gpio_set_value(IMX_GPIO_NR(2, 14), 1); /* Wait for PWRGOOD == 1 */ while (1) { reg = readl(GPIO2_BASE_ADDR + GPIO_PSR); if (!(reg & (1 << 13))) break; udelay(100); } /* Enable VCOM */ gpio_set_value(IMX_GPIO_NR(2, 3), 1); udelay(500); }
void epdc_power_on(void) { unsigned int reg; /* Set EPD_PWR_CTL0 to high - enable EINK_VDD (3.15) */ reg = readl(GPIO2_BASE_ADDR + GPIO_DR); reg |= (1 << 7); writel(reg, GPIO2_BASE_ADDR + GPIO_DR); udelay(1000); /* Enable epdc signal pin */ epdc_enable_pins(); /* Set PMIC Wakeup to high - enable Display power */ reg = readl(GPIO2_BASE_ADDR + GPIO_DR); reg |= (1 << 14); writel(reg, GPIO2_BASE_ADDR + GPIO_DR); /* Wait for PWRGOOD == 1 */ while (1) { reg = readl(GPIO2_BASE_ADDR + GPIO_DR); if (!(reg & (1 << 13))) break; udelay(100); } /* Enable VCOM */ reg = readl(GPIO2_BASE_ADDR + GPIO_DR); reg |= (1 << 3); writel(reg, GPIO2_BASE_ADDR + GPIO_DR); reg = readl(GPIO2_BASE_ADDR + GPIO_DR); udelay(500); }