diff options
Diffstat (limited to 'src/mainboard/google/pit/mainboard.c')
-rw-r--r-- | src/mainboard/google/pit/mainboard.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/mainboard/google/pit/mainboard.c b/src/mainboard/google/pit/mainboard.c index 3ffb824216..9aa8d5cd30 100644 --- a/src/mainboard/google/pit/mainboard.c +++ b/src/mainboard/google/pit/mainboard.c @@ -330,6 +330,19 @@ static void disable_usb30_pll(void) gpio_direction_output(usb3_pll_l, 0); } +static void setup_storage(void) +{ + /* MMC0: Fixed, 8 bit mode, connected with GPIO. */ + if (clock_set_dwmci(PERIPH_ID_SDMMC0)) + printk(BIOS_CRIT, "%s: Failed to set MMC0 clock.\n", __func__); + exynos_pinmux_sdmmc0(); + + /* MMC2: Removable, 4 bit mode, no GPIO. */ + /* (Must be after romstage to avoid breaking SDMMC boot.) */ + clock_set_dwmci(PERIPH_ID_SDMMC2); + exynos_pinmux_sdmmc2(); +} + static void gpio_init(void) { /* Set up the I2C busses. */ @@ -370,6 +383,12 @@ static void backlight_vdd(void) tps65090_thru_ec_fet_set(1); } +static void sdmmc_vdd(void) +{ + /* Enable FET4, P3.3V_SDCARD */ + tps65090_thru_ec_fet_set(4); +} + /* this happens after cpu_init where exynos resources are set */ static void mainboard_init(device_t dev) { @@ -380,6 +399,7 @@ static void mainboard_init(device_t dev) void *fb_addr = (void *)(get_fb_base_kb() * KiB); gpio_init(); + setup_storage(); tmu_init(&exynos5420_tmu_info); /* Clock Gating all the unused IP's to save power */ @@ -388,6 +408,8 @@ static void mainboard_init(device_t dev) /* Disable USB3.0 PLL to save 250mW of power */ disable_usb30_pll(); + sdmmc_vdd(); + set_vbe_mode_info_valid(&edid, (uintptr_t)fb_addr); /* |