x86: Add a minimal example SoC along with a board
The min86 example SoC code along with the example mainboard should serve as a minimal example how a buildable x86 SoC code base can look like. This can serve, for instance, as a basis to add new SoCs to coreboot. Starting with a buildable commit should help with the review of the actual code, and also avoid any regressions when common coreboot code changes. As the example code itself is build-tested, it should advance with coreboot and can't rot like documentation might. It also serves as a check what APIs need to be implemented with the default Kconfig settings. Change-Id: Id76ab15fe77ae3e405c43f9c8677694f178be112 Signed-off-by: Nico Huber <nico.h@gmx.de> Reviewed-on: https://review.coreboot.org/c/coreboot/+/45710 Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
8661fe220d
commit
1fa72d5fe1
|
@ -0,0 +1,15 @@
|
|||
if VENDOR_EXAMPLE
|
||||
|
||||
choice
|
||||
prompt "Mainboard model"
|
||||
|
||||
source "src/mainboard/example/*/Kconfig.name"
|
||||
|
||||
endchoice
|
||||
|
||||
source "src/mainboard/example/*/Kconfig"
|
||||
|
||||
config MAINBOARD_VENDOR
|
||||
default "Example"
|
||||
|
||||
endif # VENDOR_EXAMPLE
|
|
@ -0,0 +1,2 @@
|
|||
config VENDOR_EXAMPLE
|
||||
bool "Example boards"
|
|
@ -0,0 +1,14 @@
|
|||
if BOARD_EXAMPLE_MIN86
|
||||
|
||||
config BOARD_SPECIFIC_OPTIONS
|
||||
def_bool y
|
||||
select SOC_EXAMPLE_MIN86
|
||||
select MISSING_BOARD_RESET
|
||||
|
||||
config MAINBOARD_DIR
|
||||
default "example/min86"
|
||||
|
||||
config MAINBOARD_PART_NUMBER
|
||||
default "Min86"
|
||||
|
||||
endif
|
|
@ -0,0 +1,11 @@
|
|||
config BOARD_EXAMPLE_MIN86
|
||||
bool "Minimal x86 fake board"
|
||||
help
|
||||
This example mainboard code along with the example/min86 SoC
|
||||
should serve as a minimal example how a buildable x86 SoC code
|
||||
base can look like.
|
||||
|
||||
This can serve, for instance, as a basis to add new SoCs to
|
||||
coreboot. Starting with a buildable commit should help with
|
||||
the review of the actual code, and also avoid any regressions
|
||||
when common coreboot code changes.
|
|
@ -0,0 +1 @@
|
|||
Category: misc
|
|
@ -0,0 +1,6 @@
|
|||
chip soc/example/min86
|
||||
|
||||
device domain 0 on
|
||||
end
|
||||
|
||||
end
|
|
@ -0,0 +1 @@
|
|||
source "src/soc/example/*/Kconfig"
|
|
@ -0,0 +1,25 @@
|
|||
config SOC_EXAMPLE_MIN86
|
||||
bool
|
||||
help
|
||||
This example SoC code along with the example/min86 mainboard
|
||||
should serve as a minimal example how a buildable x86 SoC code
|
||||
base can look like.
|
||||
|
||||
This can serve, for instance, as a basis to add new SoCs to
|
||||
coreboot. Starting with a buildable commit should help with
|
||||
the review of the actual code, and also avoid any regressions
|
||||
when common coreboot code changes.
|
||||
|
||||
if SOC_EXAMPLE_MIN86
|
||||
|
||||
config SOC_SPECIFIC_OPTIONS
|
||||
def_bool y
|
||||
select ARCH_ALL_STAGES_X86_32
|
||||
select NO_MONOTONIC_TIMER
|
||||
select NO_MMCONF_SUPPORT
|
||||
select UNKNOWN_TSC_RATE
|
||||
|
||||
config DCACHE_BSP_STACK_SIZE # required by arch/x86/car.ld
|
||||
default 0x100
|
||||
|
||||
endif
|
|
@ -0,0 +1,15 @@
|
|||
ifeq ($(CONFIG_SOC_EXAMPLE_MIN86),y)
|
||||
|
||||
bootblock-y += cache_as_ram.S
|
||||
bootblock-y += ../../../cpu/intel/car/bootblock.c
|
||||
|
||||
postcar-y += exit_car.S
|
||||
|
||||
romstage-y += romstage.c
|
||||
|
||||
ramstage-y += chip.c
|
||||
ramstage-y += timer.c
|
||||
|
||||
subdirs-y += ../../../cpu/x86/mtrr
|
||||
|
||||
endif
|
|
@ -0,0 +1,11 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
.global bootblock_pre_c_entry
|
||||
|
||||
.code32
|
||||
bootblock_pre_c_entry:
|
||||
call bootblock_c_entry_bist
|
||||
|
||||
.Lhlt:
|
||||
hlt
|
||||
jmp .Lhlt
|
|
@ -0,0 +1,3 @@
|
|||
#include <device/device.h>
|
||||
|
||||
struct chip_operations soc_example_min86_ops = { NULL };
|
|
@ -0,0 +1,8 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
.global chipset_teardown_car
|
||||
|
||||
.code32
|
||||
chipset_teardown_car:
|
||||
/* Return to caller. */
|
||||
jmp *%esp
|
|
@ -0,0 +1,7 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <arch/cpu.h>
|
||||
|
||||
asmlinkage void car_stage_entry(void)
|
||||
{
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <delay.h>
|
||||
|
||||
void init_timer(void)
|
||||
{
|
||||
}
|
Loading…
Reference in New Issue