From ea1b01cc13628033b85251dbb44407f075efdc85 Mon Sep 17 00:00:00 2001 From: Caesar Wang Date: Mon, 27 Feb 2017 17:55:39 +0800 Subject: [PATCH] Gru: change the sd power sequency In the safety considerations, we should make sure the slot of SD is enabled first, since we want to the power switch of corresponding is powered up. The different boards have the different power switch for sdmmc. Some power switch IC need turn on delay for long time. let's move the slot power of SD to romstage and avoid explicit delays or per-board. BRANCH=none BUG=b:35813418, b:35573103 TEST=check the signal for children of gru, and boot up from sd card. Change-Id: I48ab543143d3de9be46608fc12d78e09decf8d79 Signed-off-by: Caesar Wang Reviewed-on: https://chromium-review.googlesource.com/447076 Reviewed-by: Julius Werner --- src/mainboard/google/gru/mainboard.c | 1 - src/mainboard/google/gru/romstage.c | 9 +++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/mainboard/google/gru/mainboard.c b/src/mainboard/google/gru/mainboard.c index bb9b6fca98..57f1c0e946 100644 --- a/src/mainboard/google/gru/mainboard.c +++ b/src/mainboard/google/gru/mainboard.c @@ -155,7 +155,6 @@ static void register_poweroff_to_bl31(void) static void configure_sdmmc(void) { - gpio_output(GPIO(4, D, 5), 1); /* SDMMC_PWR_EN */ gpio_output(GPIO(2, A, 2), 1); /* SDMMC_SDIO_PWR_EN */ /* SDMMC_DET_L is different on Kevin board revision 0. */ diff --git a/src/mainboard/google/gru/romstage.c b/src/mainboard/google/gru/romstage.c index 7f84a2a2a1..b0b004a16e 100644 --- a/src/mainboard/google/gru/romstage.c +++ b/src/mainboard/google/gru/romstage.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -40,6 +41,13 @@ static void init_dvs_outputs(void) pwm_regulator_configure(PWM_REGULATOR_CENTERLOG, 950); } +static void prepare_sdmmc(void) +{ + /* Enable main SD rail early to allow ramp time before enabling SDIO + * rail. */ + gpio_output(GPIO(4, D, 5), 1); /* SDMMC_PWR_EN */ +} + static void prepare_usb(void) { /* @@ -59,6 +67,7 @@ void main(void) /* Init DVS to conservative values. */ init_dvs_outputs(); + prepare_sdmmc(); prepare_usb(); sdram_init(get_sdram_config());