static struct gpio_external aquila_external_powerdown_modes[] = {
{ /* S5PC110_GPIO_H0_OFFSET */
CON_OUTPUT(0) | CON_INPUT(1) | CON_OUTPUT(2) | CON_OUTPUT(3) |
- CON_OUTPUT(4) | CON_OUTPUT(5) | CON_INPUT(6) | CON_INPUT(7),
+ CON_OUTPUT(4) | CON_OUTPUT(5) | CON_INPUT(6) | CON_IRQ(7),
DAT_SET(0) | DAT_CLEAR(2) | DAT_CLEAR(3) |
DAT_CLEAR(4) | DAT_CLEAR(5),
PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
static struct gpio_external aries_external_powerdown_modes[] = {
{ /* S5PC110(ARIES)_GPIO_H0_OFFSET */
CON_OUTPUT(0) | CON_INPUT(1) | CON_OUTPUT(2) | CON_OUTPUT(3) |
- CON_OUTPUT(4) | CON_OUTPUT(5) | CON_INPUT(6) | CON_INPUT(7),
+ CON_OUTPUT(4) | CON_OUTPUT(5) | CON_INPUT(6) | CON_IRQ(7),
DAT_SET(0) | DAT_CLEAR(2) | DAT_CLEAR(3) |
DAT_CLEAR(4) | DAT_CLEAR(5),
PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
return 0;
}
+static int max8998_has_ext_power_source(void)
+{
+ unsigned char addr, val[2];
+ i2c_set_bus_num(I2C_PMIC);
+ addr = 0xCC >> 1;
+ if (i2c_probe(addr)) {
+ printf("Can't found max8998\n");
+ return 0;
+ }
+
+ /* Accessing STATUS2 register */
+ i2c_read(addr, 0x09, 1, val, 1);
+ if (val[0] & (1 << 5))
+ return 1;
+
+ return 0;
+}
+
extern void lcd_display_clear(void);
extern int lcd_display_bitmap(ulong bmp_image, int x, int y);
i2c_read(addr, 0x0C, 1, val, 1);
val[0] &= ~(0x7 << 0);
+ val[0] &= ~(0x7 << 5);
val[0] |= 5; /* 600mA */
+ val[0] |= (3 << 5); /* Stop at 150mA(25%) */
i2c_write(addr, 0x0C, 1, val, 1);
#ifdef CONFIG_S5PC1XXFB
for (k = 0; k < 10; k++)
if (max8998_power_key()) {
lcd_display_clear();
- /* FIXME don't use static function */
- /* draw_samsung_logo(lcd_base); */
+ return;
+ } else if (!max8998_has_ext_power_source()) {
+ lcd_display_clear();
return;
} else
udelay(100 * 1000);