mediatek/mt8183: Move some initialization into mt8183_early_init

MT8183 only allows booting from eMMC, so we have to do eMMC emulation
from an external source, for example EC, which makes the size of
bootblock very important.

This CL adds a new function mt8183_early_init, which includes all
initializations that should be done in early stages. All mainboards
using MT8183 should manually call it in either bootblock or verstage.

BRANCH=none
BUG=b:120588396
TEST=manually boot into kernel

Change-Id: I35d7ab875395da913b967ae1f7b72359be3e744a
Signed-off-by: You-Cheng Syu <youcheng@google.com>
Reviewed-on: https://review.coreboot.org/c/31024
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
You-Cheng Syu
2019-01-23 19:54:05 +08:00
committed by Patrick Georgi
parent 514363541f
commit 44e9c37f35
5 changed files with 50 additions and 2 deletions

View File

@ -16,6 +16,7 @@
#include <bootblock_common.h>
#include <gpio.h>
#include <soc/gpio.h>
#include <soc/mt8183.h>
#include <soc/spi.h>
#include "gpio.h"
@ -25,6 +26,8 @@
void bootblock_mainboard_init(void)
{
mt8183_early_init();
setup_chromeos_gpios();
/* Turn on real eMMC. */

View File

@ -5,6 +5,7 @@ bootblock-y += bootblock.c
bootblock-y += ../common/gpio.c gpio.c
bootblock-y += ../common/pll.c pll.c
bootblock-$(CONFIG_SPI_FLASH) += ../common/spi.c spi.c
bootblock-y += mt8183.c
bootblock-y += ../common/timer.c
bootblock-y += ../common/uart.c
bootblock-y += ../common/wdt.c
@ -16,6 +17,7 @@ decompressor-y += ../common/timer.c
verstage-y += auxadc.c
verstage-y += ../common/gpio.c gpio.c
verstage-$(CONFIG_SPI_FLASH) += ../common/spi.c spi.c
verstage-y += mt8183.c
verstage-y += ../common/timer.c
verstage-y += ../common/uart.c
verstage-y += ../common/wdt.c

View File

@ -15,10 +15,8 @@
#include <bootblock_common.h>
#include <soc/pll.h>
#include <soc/wdt.h>
void bootblock_soc_init(void)
{
mt_pll_init();
mtk_wdt_init();
}

View File

@ -0,0 +1,23 @@
/*
* This file is part of the coreboot project.
*
* Copyright 2019 Google Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef __SOC_MEDIATEK_MT8183_H__
#define __SOC_MEDIATEK_MT8183_H__
/* Mainboards should manually call this function in early stages (bootblock or
* verstage). */
void mt8183_early_init(void);
#endif /* __SOC_MEDIATEK_MT8183_H__ */

View File

@ -0,0 +1,22 @@
/*
* This file is part of the coreboot project.
*
* Copyright 2019 Google Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <soc/mt8183.h>
#include <soc/wdt.h>
void mt8183_early_init(void)
{
mtk_wdt_init();
}