提交 bcd4e6f3 编写于 作者: S Simon Glass

x86: Change how selection of ROMs works

Most x86 boards build a u-boot.rom which is programmed into SPI flash. But
this is not unique to x86. For example some rockchip boards can also boot
from SPI flash.

Also, at least on x86, binary blobs are sadly quite common. It is not
possible to build a functional image without them, and U-Boot needs to
know this at build time.

Introduce a new CONFIG_HAS_ROM option which selects whether u-boot.rom is
built and a new CONFIG_ROM_NEEDS_BLOBS option to indicate whether binary
blobs are also needed. If they are not needed, it is safe to build the ROM
always. Otherwise we still require the BUILD_ROM environment variable.

For now this affects only x86, but future patches will enable this for
rockchip too.
Signed-off-by: NSimon Glass <sjg@chromium.org>
上级 38f159c0
...@@ -276,9 +276,25 @@ config PHYS_64BIT ...@@ -276,9 +276,25 @@ config PHYS_64BIT
This can be used not only for 64bit SoCs, but also for This can be used not only for 64bit SoCs, but also for
large physical address extension on 32bit SoCs. large physical address extension on 32bit SoCs.
config HAS_ROM
bool
select BINMAN
help
Enables building of a u-boot.rom target. This collects U-Boot and
any necessary binary blobs.
config ROM_NEEDS_BLOBS
bool
depends on HAS_ROM
help
Enable this if building the u-boot.rom target needs binary blobs, and
so cannot be done normally. In this case, pass BUILD_ROM=1 to make
to tell U-Boot to build the ROM.
config BUILD_ROM config BUILD_ROM
bool "Build U-Boot as BIOS replacement" bool "Build U-Boot as BIOS replacement"
depends on X86 depends on HAS_ROM
default y if !ROM_NEEDS_BLOBS
help help
This option allows to build a ROM version of U-Boot. This option allows to build a ROM version of U-Boot.
The build process generally requires several binary blobs The build process generally requires several binary blobs
......
...@@ -921,9 +921,12 @@ ALL-$(CONFIG_REMAKE_ELF) += u-boot.elf ...@@ -921,9 +921,12 @@ ALL-$(CONFIG_REMAKE_ELF) += u-boot.elf
ALL-$(CONFIG_EFI_APP) += u-boot-app.efi ALL-$(CONFIG_EFI_APP) += u-boot-app.efi
ALL-$(CONFIG_EFI_STUB) += u-boot-payload.efi ALL-$(CONFIG_EFI_STUB) += u-boot-payload.efi
ifneq ($(CONFIG_HAS_ROM),)
ifneq ($(BUILD_ROM)$(CONFIG_BUILD_ROM),) ifneq ($(BUILD_ROM)$(CONFIG_BUILD_ROM),)
ALL-$(CONFIG_X86_RESET_VECTOR) += u-boot.rom ALL-y += u-boot.rom
endif endif
endif
ifeq ($(CONFIG_SYS_COREBOOT)$(CONFIG_SPL),yy) ifeq ($(CONFIG_SYS_COREBOOT)$(CONFIG_SPL),yy)
ALL-$(CONFIG_BINMAN) += u-boot-x86-with-spl.bin ALL-$(CONFIG_BINMAN) += u-boot-x86-with-spl.bin
endif endif
...@@ -1585,7 +1588,7 @@ endif ...@@ -1585,7 +1588,7 @@ endif
# reset vector) at the top, Intel ME descriptor at the bottom, and U-Boot in # reset vector) at the top, Intel ME descriptor at the bottom, and U-Boot in
# the middle. This is handled by binman based on an image description in the # the middle. This is handled by binman based on an image description in the
# board's device tree. # board's device tree.
ifneq ($(CONFIG_X86_RESET_VECTOR),) ifneq ($(CONFIG_HAS_ROM),)
rom: u-boot.rom FORCE rom: u-boot.rom FORCE
refcode.bin: $(srctree)/board/$(BOARDDIR)/refcode.bin FORCE refcode.bin: $(srctree)/board/$(BOARDDIR)/refcode.bin FORCE
...@@ -1595,11 +1598,12 @@ quiet_cmd_ldr = LD $@ ...@@ -1595,11 +1598,12 @@ quiet_cmd_ldr = LD $@
cmd_ldr = $(LD) $(LDFLAGS_$(@F)) \ cmd_ldr = $(LD) $(LDFLAGS_$(@F)) \
$(filter-out FORCE,$^) -o $@ $(filter-out FORCE,$^) -o $@
u-boot.rom: u-boot-x86-start16.bin u-boot-x86-reset16.bin u-boot.bin \ rom-deps := u-boot.bin
ifdef CONFIG_X86
rom-deps += u-boot-x86-start16.bin u-boot-x86-reset16.bin \
$(if $(CONFIG_SPL_X86_16BIT_INIT),spl/u-boot-spl.bin) \ $(if $(CONFIG_SPL_X86_16BIT_INIT),spl/u-boot-spl.bin) \
$(if $(CONFIG_TPL_X86_16BIT_INIT),tpl/u-boot-tpl.bin) \ $(if $(CONFIG_TPL_X86_16BIT_INIT),tpl/u-boot-tpl.bin) \
$(if $(CONFIG_HAVE_REFCODE),refcode.bin) FORCE $(if $(CONFIG_HAVE_REFCODE),refcode.bin)
$(call if_changed,binman)
OBJCOPYFLAGS_u-boot-x86-start16.bin := -O binary -j .start16 OBJCOPYFLAGS_u-boot-x86-start16.bin := -O binary -j .start16
u-boot-x86-start16.bin: u-boot FORCE u-boot-x86-start16.bin: u-boot FORCE
...@@ -1610,6 +1614,10 @@ u-boot-x86-reset16.bin: u-boot FORCE ...@@ -1610,6 +1614,10 @@ u-boot-x86-reset16.bin: u-boot FORCE
$(call if_changed,objcopy) $(call if_changed,objcopy)
endif endif
u-boot.rom: $(rom-deps) FORCE
$(call if_changed,binman)
endif
ifneq ($(CONFIG_ARCH_SUNXI),) ifneq ($(CONFIG_ARCH_SUNXI),)
ifeq ($(CONFIG_ARM64),) ifeq ($(CONFIG_ARM64),)
u-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.img u-boot.dtb FORCE u-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.img u-boot.dtb FORCE
......
...@@ -160,6 +160,7 @@ config X86 ...@@ -160,6 +160,7 @@ config X86
select TIMER select TIMER
select USE_PRIVATE_LIBGCC select USE_PRIVATE_LIBGCC
select X86_TSC_TIMER select X86_TSC_TIMER
imply HAS_ROM if X86_RESET_VECTOR
imply BLK imply BLK
imply CMD_DM imply CMD_DM
imply CMD_FPGA_LOADMK imply CMD_FPGA_LOADMK
......
...@@ -360,6 +360,8 @@ config HAVE_FSP ...@@ -360,6 +360,8 @@ config HAVE_FSP
bool "Add an Firmware Support Package binary" bool "Add an Firmware Support Package binary"
depends on !EFI depends on !EFI
select USE_HOB select USE_HOB
select HAS_ROM
select ROM_NEEDS_BLOBS
help help
Select this option to add an Firmware Support Package binary to Select this option to add an Firmware Support Package binary to
the resulting U-Boot image. It is a binary blob which U-Boot uses the resulting U-Boot image. It is a binary blob which U-Boot uses
...@@ -519,6 +521,8 @@ config ENABLE_MRC_CACHE ...@@ -519,6 +521,8 @@ config ENABLE_MRC_CACHE
config HAVE_MRC config HAVE_MRC
bool "Add a System Agent binary" bool "Add a System Agent binary"
select HAS_ROM
select ROM_NEEDS_BLOBS
depends on !HAVE_FSP depends on !HAVE_FSP
help help
Select this option to add a System Agent binary to Select this option to add a System Agent binary to
......
...@@ -24,6 +24,7 @@ if INTEL_QUARK ...@@ -24,6 +24,7 @@ if INTEL_QUARK
config HAVE_RMU config HAVE_RMU
bool "Add a Remote Management Unit (RMU) binary" bool "Add a Remote Management Unit (RMU) binary"
select ROM_NEEDS_BLOBS
help help
Select this option to add a Remote Management Unit (RMU) binary Select this option to add a Remote Management Unit (RMU) binary
to the resulting U-Boot image. It is a data block (up to 64K) of to the resulting U-Boot image. It is a data block (up to 64K) of
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册