mediatek/mt8183: Enable bootblock self-decompression
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. A fully functional bootblock (that can boot into verstage or romstage) is about 38000 bytes. If self decompression (CONFIG_COMPRESS_BOOTBLOCK) is enabled, only 25088 (66%) bytes are needed. Inspired from crosreview.com/1070018. BUG=b:80501386 TEST=manually flashed into kukui and boots into romstage. Change-Id: I7a739866a4ea3bcafe2ff7b9e88d5ed00f3f3e40 Signed-off-by: Hung-Te Lin <hungte@chromium.org> Reviewed-on: https://review.coreboot.org/27599 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
parent
4c067c8550
commit
03e9cb9b35
|
@ -1,4 +1,5 @@
|
||||||
bootblock-y += memlayout.ld
|
bootblock-y += memlayout.ld
|
||||||
|
decompressor-y += memlayout.ld
|
||||||
|
|
||||||
verstage-y += chromeos.c
|
verstage-y += chromeos.c
|
||||||
verstage-y += memlayout.ld
|
verstage-y += memlayout.ld
|
||||||
|
|
|
@ -10,6 +10,7 @@ config SOC_MEDIATEK_MT8183
|
||||||
select GENERIC_UDELAY
|
select GENERIC_UDELAY
|
||||||
select HAVE_UART_SPECIAL
|
select HAVE_UART_SPECIAL
|
||||||
select HAVE_MONOTONIC_TIMER
|
select HAVE_MONOTONIC_TIMER
|
||||||
|
select COMPRESS_BOOTBLOCK
|
||||||
|
|
||||||
if SOC_MEDIATEK_MT8183
|
if SOC_MEDIATEK_MT8183
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,10 @@ bootblock-$(CONFIG_DRIVERS_UART) += ../common/uart.c
|
||||||
endif
|
endif
|
||||||
bootblock-y += ../common/wdt.c
|
bootblock-y += ../common/wdt.c
|
||||||
|
|
||||||
|
decompressor-y += decompressor.c
|
||||||
|
decompressor-y += ../common/mmu_operations.c
|
||||||
|
decompressor-y += ../common/timer.c
|
||||||
|
|
||||||
verstage-y += ../common/gpio.c gpio.c
|
verstage-y += ../common/gpio.c gpio.c
|
||||||
verstage-$(CONFIG_SPI_FLASH) += spi.c
|
verstage-$(CONFIG_SPI_FLASH) += spi.c
|
||||||
verstage-y += ../common/timer.c
|
verstage-y += ../common/timer.c
|
||||||
|
|
|
@ -20,7 +20,6 @@
|
||||||
|
|
||||||
void bootblock_soc_init(void)
|
void bootblock_soc_init(void)
|
||||||
{
|
{
|
||||||
mtk_mmu_init();
|
|
||||||
mt_pll_init();
|
mt_pll_init();
|
||||||
mtk_wdt_init();
|
mtk_wdt_init();
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
/*
|
||||||
|
* This file is part of the coreboot project.
|
||||||
|
*
|
||||||
|
* Copyright 2018 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 <bootblock_common.h>
|
||||||
|
#include <soc/mmu_operations.h>
|
||||||
|
|
||||||
|
void decompressor_soc_init(void)
|
||||||
|
{
|
||||||
|
mtk_mmu_init();
|
||||||
|
}
|
|
@ -39,9 +39,9 @@ SECTIONS
|
||||||
SRAM_END(0x00120000)
|
SRAM_END(0x00120000)
|
||||||
|
|
||||||
SRAM_L2C_START(0x00200000)
|
SRAM_L2C_START(0x00200000)
|
||||||
BOOTBLOCK(0x00201000, 85K)
|
OVERLAP_DECOMPRESSOR_ROMSTAGE(0x000201000, 92K)
|
||||||
VERSTAGE(0x00217000, 114K)
|
BOOTBLOCK(0x00227000, 89K)
|
||||||
ROMSTAGE(0x00233800, 92K)
|
VERSTAGE(0x0023E000, 114K)
|
||||||
SRAM_L2C_END(0x00280000)
|
SRAM_L2C_END(0x00280000)
|
||||||
|
|
||||||
DRAM_START(0x40000000)
|
DRAM_START(0x40000000)
|
||||||
|
|
Loading…
Reference in New Issue