[coreboot] Patch set updated for coreboot: a576674 Auto-generate bootblock initialisation
Kyösti Mälkki (kyosti.malkki@gmail.com)
gerrit at coreboot.org
Wed Nov 14 21:46:37 CET 2012
Kyösti Mälkki (kyosti.malkki at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/473
-gerrit
commit a576674b90767c48a54f89f6ab6da7964d751483
Author: Kyösti Mälkki <kyosti.malkki at gmail.com>
Date: Thu Feb 23 14:17:53 2012 +0200
Auto-generate bootblock initialisation
Add toolchain rule to create bootblock_devices.h file with function
static void bootblock_mainboard_init(void);
This calls the bootblock_xx_init() functions for all the chips listed
in mainboard/x/y/devtree.cb, in the order the chips are listed.
To create mainboard-specific override, one can copy the generated file
as mainboard/x/y/bootblock.c, make necessary changes there and select
HAS_MAINBOARD_BOOTBLOCK in the board Kconfig.
NOTE: A follow-up patch is required to actually use the generated
file instead of separate CONFIG_BOOTBLOCK_xx_INIT entries.
Change-Id: Ib1d101cdd68993530c9c7a653ac000a01de52ac2
Signed-off-by: Kyösti Mälkki <kyosti.malkki at gmail.com>
---
src/arch/x86/Kconfig | 3 +++
src/arch/x86/Makefile.inc | 5 +++++
src/mainboard/hp/dl165_g6_fam10/Kconfig | 1 +
util/sconfig/main.c | 16 +++++++++-------
4 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/src/arch/x86/Kconfig b/src/arch/x86/Kconfig
index 5a79516..0d58403 100644
--- a/src/arch/x86/Kconfig
+++ b/src/arch/x86/Kconfig
@@ -70,6 +70,9 @@ config PC80_SYSTEM
bool
default y
+config HAS_MAINBOARD_BOOTBLOCK
+ def_bool n
+
config BOOTBLOCK_MAINBOARD_INIT
string
diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc
index abc71de..6ac1fc9 100644
--- a/src/arch/x86/Makefile.inc
+++ b/src/arch/x86/Makefile.inc
@@ -326,6 +326,11 @@ $(objgenerated)/bootblock.inc: $(src)/arch/x86/init/$(subst ",,$(CONFIG_BOOTBLOC
$< > $(objgenerated)/bootblock.inc.d
$(ROMCC) -c -S $(bootblock_romccflags) $(ROMCCFLAGS) -I. $(INCLUDES) $< -o $@
+$(objgenerated)/bootblock_devices.h: $(src)/mainboard/$(MAINBOARDDIR)/devicetree.cb $(objutil)/sconfig/sconfig
+ @printf " SCONFIG $(subst $(src)/,,$(<)) (bootblock)\n"
+ mkdir -p $(dir $@)
+ $(objutil)/sconfig/sconfig $(MAINBOARDDIR) $(dir $@) -b $(notdir $@)
+
$(objcbfs)/bootblock.debug: $(objgenerated)/bootblock.o $(objgenerated)/bootblock.ld
@printf " LINK $(subst $(obj)/,,$(@))\n"
ifeq ($(CONFIG_COMPILER_LLVM_CLANG),y)
diff --git a/src/mainboard/hp/dl165_g6_fam10/Kconfig b/src/mainboard/hp/dl165_g6_fam10/Kconfig
index 43c4243..21353b7 100644
--- a/src/mainboard/hp/dl165_g6_fam10/Kconfig
+++ b/src/mainboard/hp/dl165_g6_fam10/Kconfig
@@ -15,6 +15,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
select HAVE_BUS_CONFIG
select HAVE_PIRQ_TABLE
select HAVE_MP_TABLE
+ select HAS_MAINBOARD_BOOTBLOCK
select LIFT_BSP_APIC_ID
select BOARD_ROMSIZE_KB_1024
select RAMINIT_SYSINFO
diff --git a/util/sconfig/main.c b/util/sconfig/main.c
index 43b083e..cdf54bc 100644
--- a/util/sconfig/main.c
+++ b/util/sconfig/main.c
@@ -544,7 +544,7 @@ static void usage(void)
{
printf("usage: sconfig vendor/mainboard outputdir [-{s|b|k} outputfile]\n");
printf("\t-s file\tcreate ramstage static device map\n");
- printf("\t-b file\tcreate bootblock init_mainboard()\n");
+ printf("\t-b file\tcreate bootblock initialisation\n");
printf("\t-k file\tcreate Kconfig devicetree section\n");
printf("Defaults to \"-s static.c\" if no {s|b|k} specified.\n");
exit (1);
@@ -662,25 +662,27 @@ int main(int argc, char** argv) {
h = &headers;
while (h->next) {
h = h->next;
+ if (!h->chiph_exists)
+ continue;
fprintf(autogen, "#include \"%s/bootblock.c\"\n", h->name);
}
fprintf(autogen, "\n#if CONFIG_HAS_MAINBOARD_BOOTBLOCK\n");
fprintf(autogen, "#include \"mainboard/%s/bootblock.c\"\n", mainboard);
fprintf(autogen, "#else\n");
- fprintf(autogen, "static unsigned long init_mainboard(int bsp_cpu)\n{\n");
- fprintf(autogen, "\tif (! bsp_cpu) return 0;\n");
+ fprintf(autogen, "static void bootblock_mainboard_init(void)\n{\n");
h = &headers;
while (h->next) {
h = h->next;
- char * buf = translate_name(h->name, UNSLASH);
+ if (!h->chiph_exists)
+ continue;
+ char * buf = translate_name(h->name, SPLIT_1ST);
if (buf) {
- fprintf(autogen, "\tinit_%s();\n", buf);
+ fprintf(autogen, "\tbootblock_%s_init();\n", buf);
free(buf);
}
}
-
- fprintf(autogen, "\treturn 0;\n}\n");
+ fprintf(autogen, "}\n");
fprintf(autogen, "#endif\n");
} else if (scan_mode == KCONFIG_MODE) {
More information about the coreboot
mailing list