summaryrefslogtreecommitdiff
path: root/src/mainboard
diff options
context:
space:
mode:
authorCaesar Wang <wxt@rock-chips.com>2017-02-27 17:55:39 +0800
committerPatrick Georgi <pgeorgi@google.com>2017-04-25 10:51:28 +0200
commit01cbe3b75ae6325d3f9b0de0d56d72d82286940e (patch)
treea8e4bf7e3c0076ed4b49e1d280ffec4829851d1a /src/mainboard
parent7e438af99575365a97f87f59e83e1224571ac5c2 (diff)
downloadcoreboot-01cbe3b75ae6325d3f9b0de0d56d72d82286940e.tar.xz
google/gru: change the sd power sequence
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: Id164e4c4c900c6b1ca0251fc27db4cd36c56f6ff Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Original-Commit-Id: ea1b01cc13628033b85251dbb44407f075efdc85 Original-Change-Id: I48ab543143d3de9be46608fc12d78e09decf8d79 Original-Signed-off-by: Caesar Wang <wxt@rock-chips.com> Original-Reviewed-on: https://chromium-review.googlesource.com/447076 Original-Reviewed-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://review.coreboot.org/19430 Tested-by: build bot (Jenkins) Reviewed-by: Martin Roth <martinroth@google.com>
Diffstat (limited to 'src/mainboard')
-rw-r--r--src/mainboard/google/gru/mainboard.c1
-rw-r--r--src/mainboard/google/gru/romstage.c9
2 files changed, 9 insertions, 1 deletions
diff --git a/src/mainboard/google/gru/mainboard.c b/src/mainboard/google/gru/mainboard.c
index 1c823f3e7c..b8a3e5521a 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 7c0dfd0594..d644f7d7c2 100644
--- a/src/mainboard/google/gru/romstage.c
+++ b/src/mainboard/google/gru/romstage.c
@@ -20,6 +20,7 @@
#include <arch/mmu.h>
#include <cbfs.h>
#include <cbmem.h>
+#include <gpio.h>
#include <console/console.h>
#include <delay.h>
#include <program_loading.h>
@@ -49,6 +50,13 @@ static void init_dvs_outputs(void)
udelay(500);
}
+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)
{
/*
@@ -68,6 +76,7 @@ void main(void)
/* Init DVS to conservative values. */
init_dvs_outputs();
+ prepare_sdmmc();
prepare_usb();
sdram_init(get_sdram_config());