google/gru: Add config for scarlet-derived boards
There is merit in having new boards use the pinouts and controls in scarlet. This adds a config so new scarlet-derived boards can easily use scarlet structure without going through every file and adding new logic. TEST=Run "emerge-scarlet coreboot" Signed-off-by: egemih@chromium.org Change-Id: I5808f93f4563033ce93050e1eedb6eac2b52c3b3 Reviewed-on: https://review.coreboot.org/22517 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
parent
21573e9f4e
commit
75b154334d
|
@ -35,6 +35,11 @@ config GRU_HAS_WLAN_RESET
|
|||
default y if BOARD_GOOGLE_GRU || BOARD_GOOGLE_KEVIN || BOARD_GOOGLE_BOB
|
||||
default n
|
||||
|
||||
config GRU_BASEBOARD_SCARLET
|
||||
bool
|
||||
default y if BOARD_GOOGLE_SCARLET
|
||||
default n
|
||||
|
||||
config BOARD_SPECIFIC_OPTIONS
|
||||
def_bool y
|
||||
select BOARD_ID_AUTO
|
||||
|
|
|
@ -24,15 +24,15 @@
|
|||
#define GPIO_RESET GPIO(0, B, 3)
|
||||
#define GPIO_SDMMC_PWR GPIO(4, D, 5)
|
||||
|
||||
#if IS_ENABLED(CONFIG_BOARD_GOOGLE_SCARLET)
|
||||
#if IS_ENABLED(CONFIG_GRU_BASEBOARD_SCARLET)
|
||||
#define GPIO_BACKLIGHT GPIO(4, C, 5)
|
||||
#define GPIO_EC_IN_RW GPIO(0, A, 1)
|
||||
#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_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 GPIO(0, B, 1)
|
||||
#define GPIO_SPK_PA_EN GPIO(0, A, 2)
|
||||
#define GPIO_TP_RST_L dead_code_t(gpio_t, "don't need TP_RST_L on Scarlet")
|
||||
#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)
|
||||
#else
|
||||
|
|
|
@ -44,8 +44,8 @@ void bootblock_mainboard_early_init(void)
|
|||
*/
|
||||
write32(&rk3399_grf->io_vsel, RK_SETBITS(1 << 0));
|
||||
|
||||
/* Scarlet gpio4cd iodomain is 1.8V */
|
||||
if (IS_ENABLED(CONFIG_BOARD_GOOGLE_SCARLET))
|
||||
/* Scarlet-based gpio4cd iodomain is 1.8V */
|
||||
if (IS_ENABLED(CONFIG_GRU_BASEBOARD_SCARLET))
|
||||
write32(&rk3399_grf->io_vsel, RK_SETBITS(1 << 3));
|
||||
|
||||
/* Reconfigure GPIO1 from dynamic voltage selection through GPIO0_B1 to
|
||||
|
@ -56,7 +56,7 @@ void bootblock_mainboard_early_init(void)
|
|||
|
||||
/* Enable rails powering GPIO blocks, among other things. */
|
||||
gpio_output(GPIO_P30V_EN, 1);
|
||||
if (!IS_ENABLED(CONFIG_BOARD_GOOGLE_SCARLET))
|
||||
if (!IS_ENABLED(CONFIG_GRU_BASEBOARD_SCARLET))
|
||||
gpio_output(GPIO_P15V_EN, 1); /* Scarlet: EC-controlled */
|
||||
|
||||
#if IS_ENABLED(CONFIG_DRIVERS_UART)
|
||||
|
@ -102,7 +102,7 @@ static void configure_tpm(void)
|
|||
if (IS_ENABLED(CONFIG_GRU_HAS_TPM2)) {
|
||||
rockchip_spi_init(CONFIG_DRIVER_TPM_SPI_BUS, 1500*KHz);
|
||||
|
||||
if (IS_ENABLED(CONFIG_BOARD_GOOGLE_SCARLET)) {
|
||||
if (IS_ENABLED(CONFIG_GRU_BASEBOARD_SCARLET)) {
|
||||
gpio_input(GPIO(2, B, 1)); /* SPI2_MISO no-pull */
|
||||
gpio_input(GPIO(2, B, 2)); /* SPI2_MOSI no-pull */
|
||||
gpio_input(GPIO(2, B, 3)); /* SPI2_CLK no-pull */
|
||||
|
|
|
@ -34,7 +34,8 @@
|
|||
|
||||
/*
|
||||
* We have to drive the stronger pull-up within 1 second of powering up the
|
||||
* touchpad to prevent its firmware from falling into recovery. Not on Scarlet.
|
||||
* touchpad to prevent its firmware from falling into recovery. Not on
|
||||
* Scarlet-based boards.
|
||||
*/
|
||||
static void configure_touchpad(void)
|
||||
{
|
||||
|
@ -90,9 +91,10 @@ 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.
|
||||
* 1.5V and 1.8V are EC-controlled on Scarlet derivatives,
|
||||
* so we skip them.
|
||||
*/
|
||||
if (!IS_ENABLED(CONFIG_BOARD_GOOGLE_SCARLET)) {
|
||||
if (!IS_ENABLED(CONFIG_GRU_BASEBOARD_SCARLET)) {
|
||||
static struct bl31_gpio_param param_p15_en = {
|
||||
.h = { .type = PARAM_SUSPEND_GPIO },
|
||||
.gpio = { .polarity = BL31_GPIO_LEVEL_LOW },
|
||||
|
@ -159,7 +161,7 @@ static void configure_sdmmc(void)
|
|||
gpio_output(GPIO(2, A, 2), 1); /* SDMMC_SDIO_PWR_EN */
|
||||
|
||||
/* set SDMMC_DET_L pin */
|
||||
if (IS_ENABLED(CONFIG_BOARD_GOOGLE_SCARLET))
|
||||
if (IS_ENABLED(CONFIG_GRU_BASEBOARD_SCARLET))
|
||||
/*
|
||||
* do not have external pull up, so need to
|
||||
* set this pin internal pull up
|
||||
|
@ -170,10 +172,10 @@ static void configure_sdmmc(void)
|
|||
|
||||
/*
|
||||
* Keep sd card io domain 3v
|
||||
* In Scarlet this GPIO set to high will get 3v,
|
||||
* In Scarlet derivatives, this GPIO set to high will get 3v,
|
||||
* With other board variants setting this GPIO low results in 3V.
|
||||
*/
|
||||
if (IS_ENABLED(CONFIG_BOARD_GOOGLE_SCARLET))
|
||||
if (IS_ENABLED(CONFIG_GRU_BASEBOARD_SCARLET))
|
||||
gpio_output(GPIO(2, D, 4), 1);
|
||||
else
|
||||
gpio_output(GPIO(2, D, 4), 0);
|
||||
|
@ -226,7 +228,7 @@ static void configure_codec(void)
|
|||
/* AUDIO IO domain 1.8V voltage selection */
|
||||
write32(&rk3399_grf->io_vsel, RK_SETBITS(1 << 1));
|
||||
|
||||
if (!IS_ENABLED(CONFIG_BOARD_GOOGLE_SCARLET))
|
||||
if (!IS_ENABLED(CONFIG_GRU_BASEBOARD_SCARLET))
|
||||
gpio_output(GPIO_P18V_AUDIO_PWREN, 1);
|
||||
gpio_output(GPIO_SPK_PA_EN, 0);
|
||||
|
||||
|
@ -235,7 +237,7 @@ static void configure_codec(void)
|
|||
|
||||
static void configure_display(void)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_BOARD_GOOGLE_SCARLET)) {
|
||||
if (IS_ENABLED(CONFIG_GRU_BASEBOARD_SCARLET)) {
|
||||
gpio_output(GPIO(4, D, 1), 0); /* DISPLAY_RST_L */
|
||||
gpio_output(GPIO(4, D, 3), 1); /* PPVARP_LCD */
|
||||
mdelay(10);
|
||||
|
@ -340,7 +342,7 @@ static void mainboard_init(device_t dev)
|
|||
setup_usb(0);
|
||||
if (IS_ENABLED(CONFIG_GRU_HAS_WLAN_RESET))
|
||||
assert_wifi_reset();
|
||||
if (!IS_ENABLED(CONFIG_BOARD_GOOGLE_SCARLET)) {
|
||||
if (!IS_ENABLED(CONFIG_GRU_BASEBOARD_SCARLET)) {
|
||||
configure_touchpad(); /* Scarlet: works differently */
|
||||
setup_usb(1); /* Scarlet: only one USB port */
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ int pwm_design_voltage[][2] = {
|
|||
[PWM_REGULATOR_CENTERLOG] = {7994, 10499}
|
||||
};
|
||||
|
||||
/* Applies for Scarlet */
|
||||
/* Applies for Scarlet-based boards. */
|
||||
int scarlet_pwm_design_voltage[][2] = {
|
||||
[PWM_REGULATOR_GPU] = {7996, 10990},
|
||||
[PWM_REGULATOR_BIG] = {8000, 12992},
|
||||
|
@ -63,7 +63,7 @@ int pwm_enum_to_pwm_number[] = {
|
|||
#else
|
||||
[PWM_REGULATOR_CENTERLOG] = -1,
|
||||
#endif
|
||||
#if IS_ENABLED(CONFIG_BOARD_GOOGLE_SCARLET)
|
||||
#if IS_ENABLED(CONFIG_GRU_BASEBOARD_SCARLET)
|
||||
[PWM_REGULATOR_BIG] = 3,
|
||||
#else
|
||||
[PWM_REGULATOR_BIG] = 1,
|
||||
|
@ -85,7 +85,7 @@ void pwm_regulator_configure(enum pwm_regulator pwm, int millivolt)
|
|||
} else if (IS_ENABLED(CONFIG_BOARD_GOOGLE_KEVIN) && board_id() >= 6) {
|
||||
voltage_min = kevin6_pwm_design_voltage[pwm][0];
|
||||
voltage_max = kevin6_pwm_design_voltage[pwm][1];
|
||||
} else if (IS_ENABLED(CONFIG_BOARD_GOOGLE_SCARLET)) {
|
||||
} else if (IS_ENABLED(CONFIG_GRU_BASEBOARD_SCARLET)) {
|
||||
voltage_min = scarlet_pwm_design_voltage[pwm][0];
|
||||
voltage_max = scarlet_pwm_design_voltage[pwm][1];
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue