diff --git a/src/mainboard/google/gru/board.h b/src/mainboard/google/gru/board.h index cc7581da65..7237d46d2c 100644 --- a/src/mainboard/google/gru/board.h +++ b/src/mainboard/google/gru/board.h @@ -30,7 +30,7 @@ #define GPIO_EC_IRQ GPIO(1, C, 2) #define GPIO_P15V_EN dead_code_t(gpio_t, "PP1500 doesn't exist on Scarlet") #define GPIO_P18V_AUDIO_PWREN dead_code_t(gpio_t, "doesn't exist on Scarlet") -#define GPIO_P30V_EN dead_code_t(gpio_t, "PP3000 doesn't exist on Scarlet") +#define GPIO_P30V_EN GPIO(0, B, 1) #define GPIO_TP_RST_L dead_code_t(gpio_t, "don't need TP_RST_L on Scarlet") #define GPIO_TPM_IRQ GPIO(1, C, 1) #define GPIO_WP GPIO(0, B, 5) diff --git a/src/mainboard/google/gru/bootblock.c b/src/mainboard/google/gru/bootblock.c index 01aa4bf47a..a3d31212c2 100644 --- a/src/mainboard/google/gru/bootblock.c +++ b/src/mainboard/google/gru/bootblock.c @@ -48,12 +48,10 @@ void bootblock_mainboard_early_init(void) if (IS_ENABLED(CONFIG_BOARD_GOOGLE_SCARLET)) write32(&rk3399_grf->io_vsel, RK_SETBITS(1 << 3)); - if (!IS_ENABLED(CONFIG_BOARD_GOOGLE_SCARLET)) { - /* Enable rails powering GPIO blocks, among other things. - These are EC-controlled on Scarlet and already on. */ - gpio_output(GPIO_P15V_EN, 1); - gpio_output(GPIO_P30V_EN, 1); - } + /* Enable rails powering GPIO blocks, among other things. */ + gpio_output(GPIO_P30V_EN, 1); + if (!IS_ENABLED(CONFIG_BOARD_GOOGLE_SCARLET)) + gpio_output(GPIO_P15V_EN, 1); /* Scarlet: EC-controlled */ #if IS_ENABLED(CONFIG_DRIVERS_UART) _Static_assert(CONFIG_CONSOLE_SERIAL_UART_ADDRESS == UART2_BASE, diff --git a/src/mainboard/google/gru/mainboard.c b/src/mainboard/google/gru/mainboard.c index df3df4fcae..43fbb71183 100644 --- a/src/mainboard/google/gru/mainboard.c +++ b/src/mainboard/google/gru/mainboard.c @@ -90,36 +90,27 @@ static void register_gpio_suspend(void) * with highest voltage first. * Since register_bl31() appends to the front of the list, we need to * register them backwards, with 1.5V coming first. + * 1.5V and 1.8V are EC-controlled on Scarlet, so we skip them. */ - static struct bl31_gpio_param param_p15_en = { - .h = { - .type = PARAM_SUSPEND_GPIO, - }, - .gpio = { - .polarity = BL31_GPIO_LEVEL_LOW, - }, - }; - param_p15_en.gpio.index = GPIO_P15V_EN.raw; - register_bl31_param(¶m_p15_en.h); + if (!IS_ENABLED(CONFIG_BOARD_GOOGLE_SCARLET)) { + static struct bl31_gpio_param param_p15_en = { + .h = { .type = PARAM_SUSPEND_GPIO }, + .gpio = { .polarity = BL31_GPIO_LEVEL_LOW }, + }; + param_p15_en.gpio.index = GPIO_P15V_EN.raw; + register_bl31_param(¶m_p15_en.h); - static struct bl31_gpio_param param_p18_audio_en = { - .h = { - .type = PARAM_SUSPEND_GPIO, - }, - .gpio = { - .polarity = BL31_GPIO_LEVEL_LOW, - }, - }; - param_p18_audio_en.gpio.index = GPIO_P18V_AUDIO_PWREN.raw; - register_bl31_param(¶m_p18_audio_en.h); + static struct bl31_gpio_param param_p18_audio_en = { + .h = { .type = PARAM_SUSPEND_GPIO }, + .gpio = { .polarity = BL31_GPIO_LEVEL_LOW }, + }; + param_p18_audio_en.gpio.index = GPIO_P18V_AUDIO_PWREN.raw; + register_bl31_param(¶m_p18_audio_en.h); + } static struct bl31_gpio_param param_p30_en = { - .h = { - .type = PARAM_SUSPEND_GPIO, - }, - .gpio = { - .polarity = BL31_GPIO_LEVEL_LOW, - }, + .h = { .type = PARAM_SUSPEND_GPIO }, + .gpio = { .polarity = BL31_GPIO_LEVEL_LOW }, }; param_p30_en.gpio.index = GPIO_P30V_EN.raw; register_bl31_param(¶m_p30_en.h); @@ -354,8 +345,8 @@ static void mainboard_init(device_t dev) if (!IS_ENABLED(CONFIG_BOARD_GOOGLE_SCARLET)) { configure_touchpad(); /* Scarlet: works differently */ setup_usb(1); /* Scarlet: only one USB port */ - register_gpio_suspend(); /* Scarlet: all EC-controlled */ } + register_gpio_suspend(); register_reset_to_bl31(); register_poweroff_to_bl31(); register_apio_suspend();