[coreboot-gerrit] New patch to review for coreboot: 1c9fb53 veyron: Change eMMC enable pin to be pulled (not driven) high

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Fri Apr 10 17:15:30 CEST 2015


Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/9545

-gerrit

commit 1c9fb53d5558dd121b1dcff95ebac4e91708c362
Author: Doug Anderson <dianders at chromium.org>
Date:   Tue Oct 28 14:09:47 2014 -0700

    veyron: Change eMMC enable pin to be pulled (not driven) high
    
    The eMMC enable pin is in a 3.3V IO domain.  Unfortunately the eMMC
    expects this pin to be 1.8V.  The way we were driving this pin would
    cause the eMMC to pull power through this pin and that was causing
    current leaks.
    
    In future revisions of hardware we should move this pin somewhere more
    legit.  However, in the current hardware we can get things working
    pretty well by using a pullup to "drive" this pin.  This will work in
    conjunction with the external 100K pullup to give a somewhat
    reasonable voltage.  The eMMC will also not be able to pull much
    current through this pin, so it can't leak too badly.
    
    BRANCH=none
    BUG=chrome-os-partner:33319
    TEST=Boot a kernel that doesn't touch the mux/pulls and see no leak:
         dut-control --port=${SERVO} vcc_flash_ma -t 5
    
    Change-Id: Ibc25cd090d826c8215be24a0b5c11d97b5281700
    Signed-off-by: Patrick Georgi <pgeorgi at chromium.org>
    Original-Commit-Id: 26e7a9d7e067ed4dd859387ee63bf654ab9dc529
    Original-Change-Id: Iadfc1477cd478773cc9d159e3fbc22b66b8f0f78
    Original-Signed-off-by: Doug Anderson <dianders at chromium.org>
    Original-Reviewed-on: https://chromium-review.googlesource.com/226039
    Original-Reviewed-by: Julius Werner <jwerner at chromium.org>
---
 src/mainboard/google/veyron_jerry/mainboard.c | 7 ++++++-
 src/mainboard/google/veyron_pinky/mainboard.c | 7 ++++++-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/mainboard/google/veyron_jerry/mainboard.c b/src/mainboard/google/veyron_jerry/mainboard.c
index 2442472..0166796 100644
--- a/src/mainboard/google/veyron_jerry/mainboard.c
+++ b/src/mainboard/google/veyron_jerry/mainboard.c
@@ -79,7 +79,12 @@ static void configure_emmc(void)
 	writel(IOMUX_EMMCPWREN, &rk3288_grf->iomux_emmcpwren);
 	writel(IOMUX_EMMCCMD, &rk3288_grf->iomux_emmccmd);
 
-	gpio_output(GPIO(7, B, 4), 1);			/* EMMC_RST_L */
+	/*
+	 * Use a pullup instead of a drive since the output is 3.3V and
+	 * really should be 1.8V (oops).  The external pulldown will help
+	 * bring the voltage down if we only drive with a pullup here.
+	 */
+	gpio_input_pullup(GPIO(7, B, 4));		/* EMMC_RST_L */
 }
 
 static void configure_codec(void)
diff --git a/src/mainboard/google/veyron_pinky/mainboard.c b/src/mainboard/google/veyron_pinky/mainboard.c
index 2442472..0166796 100644
--- a/src/mainboard/google/veyron_pinky/mainboard.c
+++ b/src/mainboard/google/veyron_pinky/mainboard.c
@@ -79,7 +79,12 @@ static void configure_emmc(void)
 	writel(IOMUX_EMMCPWREN, &rk3288_grf->iomux_emmcpwren);
 	writel(IOMUX_EMMCCMD, &rk3288_grf->iomux_emmccmd);
 
-	gpio_output(GPIO(7, B, 4), 1);			/* EMMC_RST_L */
+	/*
+	 * Use a pullup instead of a drive since the output is 3.3V and
+	 * really should be 1.8V (oops).  The external pulldown will help
+	 * bring the voltage down if we only drive with a pullup here.
+	 */
+	gpio_input_pullup(GPIO(7, B, 4));		/* EMMC_RST_L */
 }
 
 static void configure_codec(void)



More information about the coreboot-gerrit mailing list