Merge tag 'dm-pull-9aug22-take2' of https://source.denx.de/u-boot/custodians/u-boot-dm
dtoc fixes with pylint, tests
diff --git a/MAINTAINERS b/MAINTAINERS
index 4d1930f..fa8c13f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1313,7 +1313,7 @@
F: include/spmi/
SQUASHFS
-M: Joao Marcos Costa <joaomarcos.costa@bootlin.com>
+M: Joao Marcos Costa <jmcosta944@gmail.com>
R: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
R: Miquel Raynal <miquel.raynal@bootlin.com>
S: Maintained
diff --git a/Makefile b/Makefile
index df0d64b..1a66f69 100644
--- a/Makefile
+++ b/Makefile
@@ -676,6 +676,9 @@
ifdef CONFIG_CC_OPTIMIZE_FOR_DEBUG
KBUILD_HOSTCFLAGS := -Wall -Wstrict-prototypes -Og -g -fomit-frame-pointer \
$(HOST_LFS_CFLAGS) $(HOSTCFLAGS)
+# Avoid false positives -Wmaybe-uninitialized
+# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78394
+KBUILD_HOSTCFLAGS += -Wno-maybe-uninitialized
KBUILD_HOSTCXXFLAGS := -Og -g $(HOST_LFS_CFLAGS) $(HOSTCXXFLAGS)
endif
@@ -696,7 +699,10 @@
endif
ifdef CONFIG_CC_OPTIMIZE_FOR_DEBUG
-KBUILD_CFLAGS += -Og
+KBUILD_CFLAGS += -Og -Wno-maybe-uninitialized
+# Avoid false positives -Wmaybe-uninitialized
+# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78394
+KBUILD_CFLAGS += -Wno-maybe-uninitialized
endif
LTO_CFLAGS :=
diff --git a/arch/arm/cpu/armv7/s5p-common/cpu_info.c b/arch/arm/cpu/armv7/s5p-common/cpu_info.c
index d910282..fb29209 100644
--- a/arch/arm/cpu/armv7/s5p-common/cpu_info.c
+++ b/arch/arm/cpu/armv7/s5p-common/cpu_info.c
@@ -4,6 +4,7 @@
* Minkyu Kang <mk7.kang@samsung.com>
*/
#include <common.h>
+#include <display_options.h>
#include <fdtdec.h>
#include <init.h>
#include <asm/global_data.h>
diff --git a/arch/arm/mach-at91/arm926ejs/eflash.c b/arch/arm/mach-at91/arm926ejs/eflash.c
index 043f06a..aade13c 100644
--- a/arch/arm/mach-at91/arm926ejs/eflash.c
+++ b/arch/arm/mach-at91/arm926ejs/eflash.c
@@ -43,6 +43,7 @@
* do a read-modify-write for partially programmed pages
*/
#include <common.h>
+#include <display_options.h>
#include <flash.h>
#include <log.h>
#include <asm/io.h>
diff --git a/arch/arm/mach-imx/hab.c b/arch/arm/mach-imx/hab.c
index 55317ab..0d1a776 100644
--- a/arch/arm/mach-imx/hab.c
+++ b/arch/arm/mach-imx/hab.c
@@ -6,6 +6,7 @@
#include <common.h>
#include <command.h>
#include <config.h>
+#include <display_options.h>
#include <fuse.h>
#include <mapmem.h>
#include <image.h>
diff --git a/arch/powerpc/cpu/mpc85xx/cpu.c b/arch/powerpc/cpu/mpc85xx/cpu.c
index ba9736e..ffa8b60 100644
--- a/arch/powerpc/cpu/mpc85xx/cpu.c
+++ b/arch/powerpc/cpu/mpc85xx/cpu.c
@@ -12,6 +12,7 @@
#include <common.h>
#include <cpu_func.h>
#include <clock_legacy.h>
+#include <display_options.h>
#include <init.h>
#include <irq_func.h>
#include <log.h>
diff --git a/arch/powerpc/cpu/mpc85xx/cpu_init.c b/arch/powerpc/cpu/mpc85xx/cpu_init.c
index 5fa4234..92a7e60 100644
--- a/arch/powerpc/cpu/mpc85xx/cpu_init.c
+++ b/arch/powerpc/cpu/mpc85xx/cpu_init.c
@@ -10,6 +10,7 @@
*/
#include <common.h>
+#include <display_options.h>
#include <env.h>
#include <init.h>
#include <net.h>
diff --git a/arch/powerpc/cpu/mpc85xx/tlb.c b/arch/powerpc/cpu/mpc85xx/tlb.c
index 4f6778c..ab61649 100644
--- a/arch/powerpc/cpu/mpc85xx/tlb.c
+++ b/arch/powerpc/cpu/mpc85xx/tlb.c
@@ -7,6 +7,7 @@
*/
#include <common.h>
+#include <display_options.h>
#include <init.h>
#include <asm/bitops.h>
#include <asm/global_data.h>
diff --git a/arch/powerpc/cpu/mpc8xx/cpu.c b/arch/powerpc/cpu/mpc8xx/cpu.c
index 0ccb9f6..9b587fb 100644
--- a/arch/powerpc/cpu/mpc8xx/cpu.c
+++ b/arch/powerpc/cpu/mpc8xx/cpu.c
@@ -18,6 +18,7 @@
#include <common.h>
#include <cpu_func.h>
+#include <display_options.h>
#include <net.h>
#include <time.h>
#include <vsprintf.h>
diff --git a/arch/powerpc/cpu/mpc8xxx/law.c b/arch/powerpc/cpu/mpc8xxx/law.c
index 713ff17..198b5b1 100644
--- a/arch/powerpc/cpu/mpc8xxx/law.c
+++ b/arch/powerpc/cpu/mpc8xxx/law.c
@@ -7,6 +7,7 @@
*/
#include <common.h>
+#include <display_options.h>
#include <asm/bitops.h>
#include <asm/global_data.h>
#include <linux/compiler.h>
diff --git a/arch/x86/cpu/broadwell/refcode.c b/arch/x86/cpu/broadwell/refcode.c
index aced3e5..94c2e05 100644
--- a/arch/x86/cpu/broadwell/refcode.c
+++ b/arch/x86/cpu/broadwell/refcode.c
@@ -7,6 +7,7 @@
*/
#include <common.h>
+#include <display_options.h>
#include <errno.h>
#include <init.h>
#include <log.h>
diff --git a/board/freescale/ls1028a/ls1028a.c b/board/freescale/ls1028a/ls1028a.c
index 1a7806f..faecb60 100644
--- a/board/freescale/ls1028a/ls1028a.c
+++ b/board/freescale/ls1028a/ls1028a.c
@@ -4,6 +4,7 @@
*/
#include <common.h>
+#include <display_options.h>
#include <init.h>
#include <malloc.h>
#include <errno.h>
diff --git a/board/freescale/ls1088a/ls1088a.c b/board/freescale/ls1088a/ls1088a.c
index 5bf13dc..0157377 100644
--- a/board/freescale/ls1088a/ls1088a.c
+++ b/board/freescale/ls1088a/ls1088a.c
@@ -4,6 +4,7 @@
*/
#include <common.h>
#include <clock_legacy.h>
+#include <display_options.h>
#include <env.h>
#include <i2c.h>
#include <init.h>
diff --git a/board/freescale/ls2080aqds/ls2080aqds.c b/board/freescale/ls2080aqds/ls2080aqds.c
index 5bdafeb..5df8572 100644
--- a/board/freescale/ls2080aqds/ls2080aqds.c
+++ b/board/freescale/ls2080aqds/ls2080aqds.c
@@ -5,6 +5,7 @@
*/
#include <common.h>
#include <clock_legacy.h>
+#include <display_options.h>
#include <env.h>
#include <init.h>
#include <malloc.h>
diff --git a/board/freescale/ls2080ardb/ls2080ardb.c b/board/freescale/ls2080ardb/ls2080ardb.c
index f5ebb93..fb0699c 100644
--- a/board/freescale/ls2080ardb/ls2080ardb.c
+++ b/board/freescale/ls2080ardb/ls2080ardb.c
@@ -5,6 +5,7 @@
*/
#include <common.h>
#include <clock_legacy.h>
+#include <display_options.h>
#include <env.h>
#include <init.h>
#include <malloc.h>
diff --git a/board/freescale/lx2160a/lx2160a.c b/board/freescale/lx2160a/lx2160a.c
index a078643..5f0cc9e 100644
--- a/board/freescale/lx2160a/lx2160a.c
+++ b/board/freescale/lx2160a/lx2160a.c
@@ -5,6 +5,7 @@
#include <common.h>
#include <clock_legacy.h>
+#include <display_options.h>
#include <dm.h>
#include <init.h>
#include <asm/global_data.h>
diff --git a/board/freescale/mpc8548cds/mpc8548cds.c b/board/freescale/mpc8548cds/mpc8548cds.c
index cfb5b0b..dac821f 100644
--- a/board/freescale/mpc8548cds/mpc8548cds.c
+++ b/board/freescale/mpc8548cds/mpc8548cds.c
@@ -6,6 +6,7 @@
*/
#include <common.h>
+#include <display_options.h>
#include <init.h>
#include <net.h>
#include <pci.h>
diff --git a/board/kosagi/novena/novena.c b/board/kosagi/novena/novena.c
index 0e1b4a0..815ecf5 100644
--- a/board/kosagi/novena/novena.c
+++ b/board/kosagi/novena/novena.c
@@ -6,6 +6,7 @@
*/
#include <common.h>
+#include <display_options.h>
#include <dm.h>
#include <eeprom.h>
#include <init.h>
diff --git a/board/traverse/ten64/ten64.c b/board/traverse/ten64/ten64.c
index bdabc21..a15b81b 100644
--- a/board/traverse/ten64/ten64.c
+++ b/board/traverse/ten64/ten64.c
@@ -5,6 +5,7 @@
* Copyright 2019-2021 Traverse Technologies
*/
#include <common.h>
+#include <display_options.h>
#include <dm/uclass.h>
#include <env.h>
#include <i2c.h>
diff --git a/boot/image-board.c b/boot/image-board.c
index b846bff..4e4d1c1 100644
--- a/boot/image-board.c
+++ b/boot/image-board.c
@@ -11,6 +11,7 @@
#include <common.h>
#include <bootstage.h>
#include <cpu_func.h>
+#include <display_options.h>
#include <env.h>
#include <fpga.h>
#include <image.h>
diff --git a/boot/image.c b/boot/image.c
index 5dcb55b..a0d0cc2 100644
--- a/boot/image.c
+++ b/boot/image.c
@@ -9,6 +9,7 @@
#ifndef USE_HOSTCC
#include <common.h>
#include <env.h>
+#include <display_options.h>
#include <init.h>
#include <lmb.h>
#include <log.h>
diff --git a/cmd/acpi.c b/cmd/acpi.c
index 0e473b4..d0fc062 100644
--- a/cmd/acpi.c
+++ b/cmd/acpi.c
@@ -5,6 +5,7 @@
*/
#include <common.h>
#include <command.h>
+#include <display_options.h>
#include <mapmem.h>
#include <acpi/acpi_table.h>
#include <asm/acpi_table.h>
diff --git a/cmd/axi.c b/cmd/axi.c
index 0c80fef..b97b43e 100644
--- a/cmd/axi.c
+++ b/cmd/axi.c
@@ -13,6 +13,7 @@
#include <axi.h>
#include <command.h>
#include <console.h>
+#include <display_options.h>
#include <dm.h>
#include <log.h>
diff --git a/cmd/bcb.c b/cmd/bcb.c
index 92f4d27..1bbd1fa 100644
--- a/cmd/bcb.c
+++ b/cmd/bcb.c
@@ -9,6 +9,7 @@
#include <bcb.h>
#include <command.h>
#include <common.h>
+#include <display_options.h>
#include <log.h>
#include <part.h>
#include <malloc.h>
diff --git a/cmd/cpu.c b/cmd/cpu.c
index 2ca4d05..a09736e 100644
--- a/cmd/cpu.c
+++ b/cmd/cpu.c
@@ -8,6 +8,7 @@
#include <common.h>
#include <command.h>
#include <cpu.h>
+#include <display_options.h>
#include <dm.h>
#include <errno.h>
diff --git a/cmd/fpgad.c b/cmd/fpgad.c
index e65441b..dfc6220 100644
--- a/cmd/fpgad.c
+++ b/cmd/fpgad.c
@@ -11,6 +11,7 @@
#include <common.h>
#include <command.h>
#include <console.h>
+#include <display_options.h>
#include <gdsys_fpga.h>
diff --git a/cmd/io.c b/cmd/io.c
index e23ea62..2de1111 100644
--- a/cmd/io.c
+++ b/cmd/io.c
@@ -9,6 +9,7 @@
#include <common.h>
#include <command.h>
+#include <display_options.h>
#include <asm/io.h>
/* Display values from last command */
diff --git a/cmd/mem.c b/cmd/mem.c
index 1f4e3fc..6a7b401 100644
--- a/cmd/mem.c
+++ b/cmd/mem.c
@@ -16,6 +16,7 @@
#include <cli.h>
#include <command.h>
#include <console.h>
+#include <display_options.h>
#ifdef CONFIG_MTD_NOR_FLASH
#include <flash.h>
#endif
diff --git a/cmd/mmc.c b/cmd/mmc.c
index f7b02b3..7bd4cd9 100644
--- a/cmd/mmc.c
+++ b/cmd/mmc.c
@@ -8,6 +8,7 @@
#include <blk.h>
#include <command.h>
#include <console.h>
+#include <display_options.h>
#include <memalign.h>
#include <mmc.h>
#include <part.h>
diff --git a/cmd/rtc.c b/cmd/rtc.c
index 75d4b64..a344cfa 100644
--- a/cmd/rtc.c
+++ b/cmd/rtc.c
@@ -2,6 +2,7 @@
#include <common.h>
#include <command.h>
+#include <display_options.h>
#include <dm.h>
#include <hexdump.h>
#include <i2c.h>
diff --git a/cmd/sf.c b/cmd/sf.c
index 058635c..bd102f5 100644
--- a/cmd/sf.c
+++ b/cmd/sf.c
@@ -7,6 +7,7 @@
#include <common.h>
#include <command.h>
+#include <display_options.h>
#include <div64.h>
#include <dm.h>
#include <log.h>
diff --git a/cmd/version.c b/cmd/version.c
index f83f6af..190ef6a 100644
--- a/cmd/version.c
+++ b/cmd/version.c
@@ -6,6 +6,7 @@
#include <common.h>
#include <command.h>
+#include <display_options.h>
#include <timestamp.h>
#include <version.h>
#include <version_string.h>
diff --git a/common/bloblist.c b/common/bloblist.c
index 406073c..8488663 100644
--- a/common/bloblist.c
+++ b/common/bloblist.c
@@ -9,6 +9,7 @@
#include <common.h>
#include <bloblist.h>
+#include <display_options.h>
#include <log.h>
#include <malloc.h>
#include <mapmem.h>
diff --git a/common/board_f.c b/common/board_f.c
index 5c86fae..18e2246 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -16,6 +16,7 @@
#include <console.h>
#include <cpu.h>
#include <cpu_func.h>
+#include <display_options.h>
#include <dm.h>
#include <env.h>
#include <env_internal.h>
diff --git a/common/board_r.c b/common/board_r.c
index e702f02..56eb60f 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -13,6 +13,7 @@
#include <api.h>
#include <bootstage.h>
#include <cpu_func.h>
+#include <display_options.h>
#include <exports.h>
#ifdef CONFIG_MTD_NOR_FLASH
#include <flash.h>
diff --git a/common/console.c b/common/console.c
index dc071f1..bde9412 100644
--- a/common/console.c
+++ b/common/console.c
@@ -7,6 +7,7 @@
#include <common.h>
#include <console.h>
#include <debug_uart.h>
+#include <display_options.h>
#include <dm.h>
#include <env.h>
#include <stdarg.h>
diff --git a/common/log.c b/common/log.c
index 7254aa7..57b71ed 100644
--- a/common/log.c
+++ b/common/log.c
@@ -7,6 +7,7 @@
*/
#include <common.h>
+#include <display_options.h>
#include <log.h>
#include <malloc.h>
#include <asm/global_data.h>
diff --git a/common/splash.c b/common/splash.c
index 98f0089..0e520cc 100644
--- a/common/splash.c
+++ b/common/splash.c
@@ -21,6 +21,7 @@
*/
#include <common.h>
+#include <display_options.h>
#include <env.h>
#include <splash.h>
#include <lcd.h>
diff --git a/drivers/core/acpi.c b/drivers/core/acpi.c
index 8457733..0ebd288 100644
--- a/drivers/core/acpi.c
+++ b/drivers/core/acpi.c
@@ -9,6 +9,7 @@
#define LOG_CATEOGRY LOGC_ACPI
#include <common.h>
+#include <display_options.h>
#include <dm.h>
#include <log.h>
#include <malloc.h>
diff --git a/drivers/cpu/bmips_cpu.c b/drivers/cpu/bmips_cpu.c
index 172bc99..3dd04fa 100644
--- a/drivers/cpu/bmips_cpu.c
+++ b/drivers/cpu/bmips_cpu.c
@@ -9,6 +9,7 @@
#include <common.h>
#include <cpu.h>
+#include <display_options.h>
#include <dm.h>
#include <errno.h>
#include <init.h>
diff --git a/drivers/ddr/fsl/main.c b/drivers/ddr/fsl/main.c
index f389e5e..1903562 100644
--- a/drivers/ddr/fsl/main.c
+++ b/drivers/ddr/fsl/main.c
@@ -11,6 +11,7 @@
*/
#include <common.h>
+#include <display_options.h>
#include <dm.h>
#include <i2c.h>
#include <fsl_ddr_sdram.h>
diff --git a/drivers/mmc/gen_atmel_mci.c b/drivers/mmc/gen_atmel_mci.c
index da81425..607a223 100644
--- a/drivers/mmc/gen_atmel_mci.c
+++ b/drivers/mmc/gen_atmel_mci.c
@@ -10,6 +10,7 @@
#include <common.h>
#include <clk.h>
+#include <display_options.h>
#include <dm.h>
#include <log.h>
#include <mmc.h>
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index 8efee99..0b7c0be 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -831,6 +831,9 @@
return 0;
}
+ if (!send_status)
+ return 0;
+
/* Finally wait until the card is ready or indicates a failure
* to switch. It doesn't hurt to use CMD13 here even if send_status
* is false, because by now (after 'timeout_ms' ms) the bus should be
diff --git a/drivers/mtd/onenand/onenand_uboot.c b/drivers/mtd/onenand/onenand_uboot.c
index 6893394..3a8c7b8 100644
--- a/drivers/mtd/onenand/onenand_uboot.c
+++ b/drivers/mtd/onenand/onenand_uboot.c
@@ -14,6 +14,7 @@
*/
#include <common.h>
+#include <display_options.h>
#include <linux/compat.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/onenand.h>
diff --git a/drivers/mtd/spi/sf_dataflash.c b/drivers/mtd/spi/sf_dataflash.c
index e19e342..6a0d953 100644
--- a/drivers/mtd/spi/sf_dataflash.c
+++ b/drivers/mtd/spi/sf_dataflash.c
@@ -7,6 +7,7 @@
*/
#include <common.h>
+#include <display_options.h>
#include <dm.h>
#include <errno.h>
#include <fdtdec.h>
diff --git a/drivers/mtd/spi/spi-nor-core.c b/drivers/mtd/spi/spi-nor-core.c
index 26a356b..e3c86e0 100644
--- a/drivers/mtd/spi/spi-nor-core.c
+++ b/drivers/mtd/spi/spi-nor-core.c
@@ -10,6 +10,7 @@
*/
#include <common.h>
+#include <display_options.h>
#include <log.h>
#include <watchdog.h>
#include <dm.h>
diff --git a/drivers/net/xilinx_axi_emac.c b/drivers/net/xilinx_axi_emac.c
index 04277b1..d48e342 100644
--- a/drivers/net/xilinx_axi_emac.c
+++ b/drivers/net/xilinx_axi_emac.c
@@ -9,6 +9,7 @@
#include <config.h>
#include <common.h>
#include <cpu_func.h>
+#include <display_options.h>
#include <dm.h>
#include <log.h>
#include <net.h>
diff --git a/drivers/power/regulator/fan53555.c b/drivers/power/regulator/fan53555.c
index 9d8a235..5681206 100644
--- a/drivers/power/regulator/fan53555.c
+++ b/drivers/power/regulator/fan53555.c
@@ -8,7 +8,6 @@
#include <errno.h>
#include <dm.h>
#include <fdtdec.h>
-#include <i2c.h>
#include <log.h>
#include <asm/gpio.h>
#include <linux/bitops.h>
diff --git a/drivers/power/regulator/gpio-regulator.c b/drivers/power/regulator/gpio-regulator.c
index e5e08a3..9c0a68a 100644
--- a/drivers/power/regulator/gpio-regulator.c
+++ b/drivers/power/regulator/gpio-regulator.c
@@ -8,7 +8,6 @@
#include <fdtdec.h>
#include <errno.h>
#include <dm.h>
-#include <i2c.h>
#include <log.h>
#include <asm/gpio.h>
#include <power/pmic.h>
diff --git a/drivers/power/regulator/lp873x_regulator.c b/drivers/power/regulator/lp873x_regulator.c
index ec1037d..c326f8e 100644
--- a/drivers/power/regulator/lp873x_regulator.c
+++ b/drivers/power/regulator/lp873x_regulator.c
@@ -10,7 +10,6 @@
#include <fdtdec.h>
#include <errno.h>
#include <dm.h>
-#include <i2c.h>
#include <power/pmic.h>
#include <power/regulator.h>
#include <power/lp873x.h>
diff --git a/drivers/power/regulator/lp87565_regulator.c b/drivers/power/regulator/lp87565_regulator.c
index 7214dc1..6bbc831 100644
--- a/drivers/power/regulator/lp87565_regulator.c
+++ b/drivers/power/regulator/lp87565_regulator.c
@@ -10,7 +10,6 @@
#include <fdtdec.h>
#include <errno.h>
#include <dm.h>
-#include <i2c.h>
#include <log.h>
#include <power/pmic.h>
#include <power/regulator.h>
diff --git a/drivers/power/regulator/max77686.c b/drivers/power/regulator/max77686.c
index f05d791..cef20e1 100644
--- a/drivers/power/regulator/max77686.c
+++ b/drivers/power/regulator/max77686.c
@@ -10,7 +10,6 @@
#include <fdtdec.h>
#include <errno.h>
#include <dm.h>
-#include <i2c.h>
#include <power/pmic.h>
#include <power/regulator.h>
#include <power/max77686_pmic.h>
diff --git a/drivers/power/regulator/palmas_regulator.c b/drivers/power/regulator/palmas_regulator.c
index aaa5f3c..3c4eb83 100644
--- a/drivers/power/regulator/palmas_regulator.c
+++ b/drivers/power/regulator/palmas_regulator.c
@@ -10,7 +10,6 @@
#include <fdtdec.h>
#include <errno.h>
#include <dm.h>
-#include <i2c.h>
#include <power/pmic.h>
#include <power/regulator.h>
#include <power/palmas.h>
diff --git a/drivers/power/regulator/pfuze100.c b/drivers/power/regulator/pfuze100.c
index 698a6fa..1d92668 100644
--- a/drivers/power/regulator/pfuze100.c
+++ b/drivers/power/regulator/pfuze100.c
@@ -9,7 +9,6 @@
#include <fdtdec.h>
#include <errno.h>
#include <dm.h>
-#include <i2c.h>
#include <log.h>
#include <power/pmic.h>
#include <power/regulator.h>
diff --git a/drivers/power/regulator/s2mps11_regulator.c b/drivers/power/regulator/s2mps11_regulator.c
index 1c6d835..93fb580 100644
--- a/drivers/power/regulator/s2mps11_regulator.c
+++ b/drivers/power/regulator/s2mps11_regulator.c
@@ -8,7 +8,6 @@
#include <fdtdec.h>
#include <errno.h>
#include <dm.h>
-#include <i2c.h>
#include <linux/delay.h>
#include <power/pmic.h>
#include <power/regulator.h>
diff --git a/drivers/power/regulator/s5m8767.c b/drivers/power/regulator/s5m8767.c
index ad0b986..2357583 100644
--- a/drivers/power/regulator/s5m8767.c
+++ b/drivers/power/regulator/s5m8767.c
@@ -7,7 +7,6 @@
#include <fdtdec.h>
#include <errno.h>
#include <dm.h>
-#include <i2c.h>
#include <power/pmic.h>
#include <power/regulator.h>
#include <power/s5m8767.h>
diff --git a/drivers/power/regulator/sandbox.c b/drivers/power/regulator/sandbox.c
index c52fe3d..e8b66bf 100644
--- a/drivers/power/regulator/sandbox.c
+++ b/drivers/power/regulator/sandbox.c
@@ -8,7 +8,6 @@
#include <fdtdec.h>
#include <errno.h>
#include <dm.h>
-#include <i2c.h>
#include <power/pmic.h>
#include <power/regulator.h>
#include <power/sandbox_pmic.h>
diff --git a/drivers/power/regulator/tps65219_regulator.c b/drivers/power/regulator/tps65219_regulator.c
index 023cf21..f87d07e 100644
--- a/drivers/power/regulator/tps65219_regulator.c
+++ b/drivers/power/regulator/tps65219_regulator.c
@@ -9,7 +9,6 @@
#include <fdtdec.h>
#include <errno.h>
#include <dm.h>
-#include <i2c.h>
#include <log.h>
#include <linux/delay.h>
#include <power/pmic.h>
diff --git a/drivers/power/regulator/tps65941_regulator.c b/drivers/power/regulator/tps65941_regulator.c
index 89918c3..b041126 100644
--- a/drivers/power/regulator/tps65941_regulator.c
+++ b/drivers/power/regulator/tps65941_regulator.c
@@ -10,7 +10,6 @@
#include <fdtdec.h>
#include <errno.h>
#include <dm.h>
-#include <i2c.h>
#include <log.h>
#include <linux/delay.h>
#include <power/pmic.h>
diff --git a/drivers/tpm/tpm_atmel_twi.c b/drivers/tpm/tpm_atmel_twi.c
index c059ea4..fd2a45d 100644
--- a/drivers/tpm/tpm_atmel_twi.c
+++ b/drivers/tpm/tpm_atmel_twi.c
@@ -6,6 +6,7 @@
*/
#include <common.h>
+#include <display_options.h>
#include <dm.h>
#include <tpm-v1.h>
#include <i2c.h>
diff --git a/drivers/tpm/tpm_tis_sandbox.c b/drivers/tpm/tpm_tis_sandbox.c
index efbeb00..7350e1c 100644
--- a/drivers/tpm/tpm_tis_sandbox.c
+++ b/drivers/tpm/tpm_tis_sandbox.c
@@ -4,6 +4,7 @@
*/
#include <common.h>
+#include <display_options.h>
#include <dm.h>
#include <tpm-v1.h>
#include <asm/state.h>
diff --git a/fs/fs.c b/fs/fs.c
index 6de1a3eb6..8324b4a 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -7,6 +7,7 @@
#include <command.h>
#include <config.h>
+#include <display_options.h>
#include <errno.h>
#include <common.h>
#include <env.h>
diff --git a/include/command.h b/include/command.h
index 7fac7e0..966fd23 100644
--- a/include/command.h
+++ b/include/command.h
@@ -229,10 +229,10 @@
* is left unchanged.
* @param ticks If ticks is not null, this function set it to the
* number of ticks the command took to complete.
- * Return: 0 if the command succeeded, 1 if it failed
+ * Return: 0 if command succeeded, else non-zero (CMD_RET_...)
*/
-int cmd_process(int flag, int argc, char *const argv[], int *repeatable,
- unsigned long *ticks);
+enum command_ret_t cmd_process(int flag, int argc, char *const argv[],
+ int *repeatable, unsigned long *ticks);
void fixup_cmdtable(struct cmd_tbl *cmdtp, int size);
diff --git a/include/common.h b/include/common.h
index 71df59b..25c317f 100644
--- a/include/common.h
+++ b/include/common.h
@@ -23,7 +23,6 @@
#include <stdio.h>
#include <linux/kernel.h>
#include <asm/u-boot.h> /* boot information for Linux kernel */
-#include <display_options.h>
#include <vsprintf.h>
#endif /* __ASSEMBLY__ */
diff --git a/include/display_options.h b/include/display_options.h
index 33fcbb8..85dacbc 100644
--- a/include/display_options.h
+++ b/include/display_options.h
@@ -19,6 +19,7 @@
* @size: Size to print
* @suffix String to print after the size
*/
+#include <display_options.h>
void print_size(uint64_t size, const char *suffix);
/**
diff --git a/include/lmb.h b/include/lmb.h
index 1476d78..7298c2c 100644
--- a/include/lmb.h
+++ b/include/lmb.h
@@ -68,7 +68,7 @@
struct lmb {
struct lmb_region memory;
struct lmb_region reserved;
-#if IS_ENABLED(CONFIG_LMB_MEMORY_REGIONS)
+#ifdef CONFIG_LMB_MEMORY_REGIONS
struct lmb_property memory_regions[CONFIG_LMB_MEMORY_REGIONS];
struct lmb_property reserved_regions[CONFIG_LMB_RESERVED_REGIONS];
#endif
diff --git a/lib/aes.c b/lib/aes.c
index 05ec235..4fca85e 100644
--- a/lib/aes.c
+++ b/lib/aes.c
@@ -23,6 +23,7 @@
#ifndef USE_HOSTCC
#include <common.h>
+#include <display_options.h>
#include <log.h>
#else
#include <string.h>
diff --git a/lib/display_options.c b/lib/display_options.c
index 360b01b..7feb446 100644
--- a/lib/display_options.c
+++ b/lib/display_options.c
@@ -7,6 +7,7 @@
#include <common.h>
#include <compiler.h>
#include <console.h>
+#include <display_options.h>
#include <div64.h>
#include <version_string.h>
#include <linux/ctype.h>
diff --git a/lib/fdtdec.c b/lib/fdtdec.c
index ffa78f9..96b6b71 100644
--- a/lib/fdtdec.c
+++ b/lib/fdtdec.c
@@ -6,6 +6,7 @@
#ifndef USE_HOSTCC
#include <common.h>
#include <boot_fit.h>
+#include <display_options.h>
#include <dm.h>
#include <hang.h>
#include <init.h>
diff --git a/lib/lmb.c b/lib/lmb.c
index f21fe67..c599608 100644
--- a/lib/lmb.c
+++ b/lib/lmb.c
@@ -108,7 +108,7 @@
#if IS_ENABLED(CONFIG_LMB_USE_MAX_REGIONS)
lmb->memory.max = CONFIG_LMB_MAX_REGIONS;
lmb->reserved.max = CONFIG_LMB_MAX_REGIONS;
-#elif IS_ENABLED(CONFIG_LMB_MEMORY_REGIONS)
+#elif defined(CONFIG_LMB_MEMORY_REGIONS)
lmb->memory.max = CONFIG_LMB_MEMORY_REGIONS;
lmb->reserved.max = CONFIG_LMB_RESERVED_REGIONS;
lmb->memory.region = lmb->memory_regions;
diff --git a/lib/lz4_wrapper.c b/lib/lz4_wrapper.c
index 0d2a365..67dea2f 100644
--- a/lib/lz4_wrapper.c
+++ b/lib/lz4_wrapper.c
@@ -80,7 +80,7 @@
}
if (block_header & LZ4F_BLOCKUNCOMPRESSED_FLAG) {
- size_t size = min((ptrdiff_t)block_size, end - out);
+ size_t size = min((ptrdiff_t)block_size, (ptrdiff_t)(end - out));
memcpy(out, in, size);
out += size;
if (size < block_size) {
diff --git a/net/nfs.c b/net/nfs.c
index 9f65cfb20..c6a1248 100644
--- a/net/nfs.c
+++ b/net/nfs.c
@@ -28,6 +28,7 @@
#include <common.h>
#include <command.h>
+#include <display_options.h>
#ifdef CONFIG_SYS_DIRECT_FLASH_NFS
#include <flash.h>
#endif
diff --git a/net/tftp.c b/net/tftp.c
index 451d735..dea9c25 100644
--- a/net/tftp.c
+++ b/net/tftp.c
@@ -7,6 +7,7 @@
*/
#include <common.h>
#include <command.h>
+#include <display_options.h>
#include <efi_loader.h>
#include <env.h>
#include <image.h>
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
index 1cfb811..3bafeb4 100644
--- a/scripts/Makefile.spl
+++ b/scripts/Makefile.spl
@@ -358,13 +358,14 @@
$(call if_changed,plat)
# Don't use dts_dir here, since it forces running this expensive rule every time
-$(platdata-hdr) $(u-boot-spl-platdata_c) &: $(obj)/$(SPL_BIN).dtb
+$(platdata-hdr) $(u-boot-spl-platdata_c) &: $(obj)/$(SPL_BIN).dtb FORCE
@[ -d $(obj)/dts ] || mkdir -p $(obj)/dts
@# Remove old files since which ones we generate depends on the setting
@# of OF_PLATDATA_INST and this might change between builds. Leaving old
@# ones around is confusing and it is possible that switching the
@# setting again will use the old one instead of regenerating it.
- @rm -f $(u-boot-spl-all-platdata_c) $(u-boot-spl-all-platdata)
+ @rm -f $(u-boot-spl-old-platdata_c) $(u-boot-spl-platdata_c) \
+ $(u-boot-spl-old-platdata)
$(call if_changed,dtoc)
ifneq ($(CONFIG_ARCH_EXYNOS)$(CONFIG_ARCH_S5PC1XX),)
diff --git a/scripts/config b/scripts/config
new file mode 100755
index 0000000..ff88e2f
--- /dev/null
+++ b/scripts/config
@@ -0,0 +1,230 @@
+#!/usr/bin/env bash
+# SPDX-License-Identifier: GPL-2.0
+# Manipulate options in a .config file from the command line
+
+myname=${0##*/}
+
+# If no prefix forced, use the default CONFIG_
+CONFIG_="${CONFIG_-CONFIG_}"
+
+# We use an uncommon delimiter for sed substitutions
+SED_DELIM=$(echo -en "\001")
+
+usage() {
+ cat >&2 <<EOL
+Manipulate options in a .config file from the command line.
+Usage:
+$myname options command ...
+commands:
+ --enable|-e option Enable option
+ --disable|-d option Disable option
+ --module|-m option Turn option into a module
+ --set-str option string
+ Set option to "string"
+ --set-val option value
+ Set option to value
+ --undefine|-u option Undefine option
+ --state|-s option Print state of option (n,y,m,undef)
+
+ --enable-after|-E beforeopt option
+ Enable option directly after other option
+ --disable-after|-D beforeopt option
+ Disable option directly after other option
+ --module-after|-M beforeopt option
+ Turn option into module directly after other option
+
+ commands can be repeated multiple times
+
+options:
+ --file config-file .config file to change (default .config)
+ --keep-case|-k Keep next symbols' case (dont' upper-case it)
+
+$myname doesn't check the validity of the .config file. This is done at next
+make time.
+
+By default, $myname will upper-case the given symbol. Use --keep-case to keep
+the case of all following symbols unchanged.
+
+$myname uses 'CONFIG_' as the default symbol prefix. Set the environment
+variable CONFIG_ to the prefix to use. Eg.: CONFIG_="FOO_" $myname ...
+EOL
+ exit 1
+}
+
+checkarg() {
+ ARG="$1"
+ if [ "$ARG" = "" ] ; then
+ usage
+ fi
+ case "$ARG" in
+ ${CONFIG_}*)
+ ARG="${ARG/${CONFIG_}/}"
+ ;;
+ esac
+ if [ "$MUNGE_CASE" = "yes" ] ; then
+ ARG="`echo $ARG | tr a-z A-Z`"
+ fi
+}
+
+txt_append() {
+ local anchor="$1"
+ local insert="$2"
+ local infile="$3"
+ local tmpfile="$infile.swp"
+
+ # sed append cmd: 'a\' + newline + text + newline
+ cmd="$(printf "a\\%b$insert" "\n")"
+
+ sed -e "/$anchor/$cmd" "$infile" >"$tmpfile"
+ # replace original file with the edited one
+ mv "$tmpfile" "$infile"
+}
+
+txt_subst() {
+ local before="$1"
+ local after="$2"
+ local infile="$3"
+ local tmpfile="$infile.swp"
+
+ sed -e "s$SED_DELIM$before$SED_DELIM$after$SED_DELIM" "$infile" >"$tmpfile"
+ # replace original file with the edited one
+ mv "$tmpfile" "$infile"
+}
+
+txt_delete() {
+ local text="$1"
+ local infile="$2"
+ local tmpfile="$infile.swp"
+
+ sed -e "/$text/d" "$infile" >"$tmpfile"
+ # replace original file with the edited one
+ mv "$tmpfile" "$infile"
+}
+
+set_var() {
+ local name=$1 new=$2 before=$3
+
+ name_re="^($name=|# $name is not set)"
+ before_re="^($before=|# $before is not set)"
+ if test -n "$before" && grep -Eq "$before_re" "$FN"; then
+ txt_append "^$before=" "$new" "$FN"
+ txt_append "^# $before is not set" "$new" "$FN"
+ elif grep -Eq "$name_re" "$FN"; then
+ txt_subst "^$name=.*" "$new" "$FN"
+ txt_subst "^# $name is not set" "$new" "$FN"
+ else
+ echo "$new" >>"$FN"
+ fi
+}
+
+undef_var() {
+ local name=$1
+
+ txt_delete "^$name=" "$FN"
+ txt_delete "^# $name is not set" "$FN"
+}
+
+if [ "$1" = "--file" ]; then
+ FN="$2"
+ if [ "$FN" = "" ] ; then
+ usage
+ fi
+ shift 2
+else
+ FN=.config
+fi
+
+if [ "$1" = "" ] ; then
+ usage
+fi
+
+MUNGE_CASE=yes
+while [ "$1" != "" ] ; do
+ CMD="$1"
+ shift
+ case "$CMD" in
+ --keep-case|-k)
+ MUNGE_CASE=no
+ continue
+ ;;
+ --refresh)
+ ;;
+ --*-after|-E|-D|-M)
+ checkarg "$1"
+ A=$ARG
+ checkarg "$2"
+ B=$ARG
+ shift 2
+ ;;
+ -*)
+ checkarg "$1"
+ shift
+ ;;
+ esac
+ case "$CMD" in
+ --enable|-e)
+ set_var "${CONFIG_}$ARG" "${CONFIG_}$ARG=y"
+ ;;
+
+ --disable|-d)
+ set_var "${CONFIG_}$ARG" "# ${CONFIG_}$ARG is not set"
+ ;;
+
+ --module|-m)
+ set_var "${CONFIG_}$ARG" "${CONFIG_}$ARG=m"
+ ;;
+
+ --set-str)
+ # sed swallows one level of escaping, so we need double-escaping
+ set_var "${CONFIG_}$ARG" "${CONFIG_}$ARG=\"${1//\"/\\\\\"}\""
+ shift
+ ;;
+
+ --set-val)
+ set_var "${CONFIG_}$ARG" "${CONFIG_}$ARG=$1"
+ shift
+ ;;
+ --undefine|-u)
+ undef_var "${CONFIG_}$ARG"
+ ;;
+
+ --state|-s)
+ if grep -q "# ${CONFIG_}$ARG is not set" $FN ; then
+ echo n
+ else
+ V="$(grep "^${CONFIG_}$ARG=" $FN)"
+ if [ $? != 0 ] ; then
+ echo undef
+ else
+ V="${V/#${CONFIG_}$ARG=/}"
+ V="${V/#\"/}"
+ V="${V/%\"/}"
+ V="${V//\\\"/\"}"
+ echo "${V}"
+ fi
+ fi
+ ;;
+
+ --enable-after|-E)
+ set_var "${CONFIG_}$B" "${CONFIG_}$B=y" "${CONFIG_}$A"
+ ;;
+
+ --disable-after|-D)
+ set_var "${CONFIG_}$B" "# ${CONFIG_}$B is not set" "${CONFIG_}$A"
+ ;;
+
+ --module-after|-M)
+ set_var "${CONFIG_}$B" "${CONFIG_}$B=m" "${CONFIG_}$A"
+ ;;
+
+ # undocumented because it ignores --file (fixme)
+ --refresh)
+ yes "" | make oldconfig
+ ;;
+
+ *)
+ echo "bad command: $CMD" >&2
+ usage
+ ;;
+ esac
+done
diff --git a/test/Kconfig b/test/Kconfig
index 9b283a5..a6b463e 100644
--- a/test/Kconfig
+++ b/test/Kconfig
@@ -20,7 +20,7 @@
config UT_LIB
bool "Unit tests for library functions"
depends on UNIT_TEST
- default y
+ default y if !SANDBOX_VPL
help
Enables the 'ut lib' command which tests library functions like
memcat(), memcyp(), memmove() and ASN1 compiler/decoder.
@@ -99,5 +99,6 @@
source "test/dm/Kconfig"
source "test/env/Kconfig"
+source "test/lib/Kconfig"
source "test/optee/Kconfig"
source "test/overlay/Kconfig"
diff --git a/test/Makefile b/test/Makefile
index 1dfd567..1787736 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -17,6 +17,9 @@
obj-$(CONFIG_$(SPL_)UT_COMPRESSION) += compression.o
obj-y += dm/
obj-$(CONFIG_FUZZ) += fuzz/
+ifndef CONFIG_SANDBOX_VPL
+obj-$(CONFIG_UNIT_TEST) += lib/
+endif
obj-$(CONFIG_$(SPL_)CMDLINE) += print_ut.o
obj-$(CONFIG_$(SPL_)CMDLINE) += str_ut.o
obj-$(CONFIG_UT_TIME) += time_ut.o
@@ -25,7 +28,6 @@
ifeq ($(CONFIG_SPL_BUILD),)
obj-$(CONFIG_UNIT_TEST) += boot/
obj-$(CONFIG_UNIT_TEST) += common/
-obj-$(CONFIG_UNIT_TEST) += lib/
obj-y += log/
obj-$(CONFIG_$(SPL_)UT_UNICODE) += unicode_ut.o
endif
diff --git a/test/lib/Kconfig b/test/lib/Kconfig
new file mode 100644
index 0000000..dbb03e4
--- /dev/null
+++ b/test/lib/Kconfig
@@ -0,0 +1,23 @@
+# SPDX-License-Identifier: GPL-2.0+
+# Copyright 2022 Google LLC
+
+if SANDBOX
+
+config TEST_KCONFIG
+ bool "Enable detection of Kconfig macro errors"
+ help
+ This is used to test that the IF_ENABLED_INT() macro causes a build error
+ if the value is used when the CONFIG Is not enabled.
+
+config TEST_KCONFIG_ENABLE
+ bool "Option to enable"
+ help
+ This is the option that controls whether the value is present.
+
+config TEST_KCONFIG_VALUE
+ int "Value associated with the option"
+ depends on TEST_KCONFIG_ENABLE
+ help
+ This is the value whgch is present if TEST_KCONFIG_ENABLE is enabled.
+
+endif # SANDBOX
diff --git a/test/lib/Makefile b/test/lib/Makefile
index d244bb4..7e7922f 100644
--- a/test/lib/Makefile
+++ b/test/lib/Makefile
@@ -2,11 +2,13 @@
#
# (C) Copyright 2018
# Mario Six, Guntermann & Drunck GmbH, mario.six@gdsys.cc
+ifeq ($(CONFIG_SPL_BUILD),)
obj-y += cmd_ut_lib.o
obj-y += abuf.o
obj-$(CONFIG_EFI_LOADER) += efi_device_path.o
obj-$(CONFIG_EFI_SECURE_BOOT) += efi_image_region.o
obj-y += hexdump.o
+obj-$(CONFIG_SANDBOX) += kconfig.o
obj-y += lmb.o
obj-y += longjmp.o
obj-$(CONFIG_CONSOLE_RECORD) += test_print.o
@@ -19,3 +21,6 @@
obj-$(CONFIG_AES) += test_aes.o
obj-$(CONFIG_GETOPT) += getopt.o
obj-$(CONFIG_UT_LIB_CRYPT) += test_crypt.o
+else
+obj-$(CONFIG_SANDBOX) += kconfig_spl.o
+endif
diff --git a/test/lib/kconfig.c b/test/lib/kconfig.c
new file mode 100644
index 0000000..472d2c5
--- /dev/null
+++ b/test/lib/kconfig.c
@@ -0,0 +1,58 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Test of linux/kconfig.h macros
+ *
+ * Copyright 2022 Google LLC
+ * Written by Simon Glass <sjg@chromium.org>
+ */
+
+#include <common.h>
+#include <test/lib.h>
+#include <test/test.h>
+#include <test/ut.h>
+
+static int lib_test_is_enabled(struct unit_test_state *uts)
+{
+ ulong val;
+
+ ut_asserteq(1, IS_ENABLED(CONFIG_CMDLINE))
+ ut_asserteq(0, IS_ENABLED(CONFIG__UNDEFINED))
+
+ ut_asserteq(1, CONFIG_IS_ENABLED(CMDLINE))
+ ut_asserteq(0, CONFIG_IS_ENABLED(OF_PLATDATA))
+ ut_asserteq(0, CONFIG_IS_ENABLED(_UNDEFINED))
+
+ ut_asserteq(0xc000,
+ IF_ENABLED_INT(CONFIG_BLOBLIST_FIXED, CONFIG_BLOBLIST_ADDR));
+ ut_asserteq(0xc000,
+ CONFIG_IF_ENABLED_INT(BLOBLIST_FIXED, BLOBLIST_ADDR));
+
+ /*
+ * This fails if CONFIG_TEST_KCONFIG_ENABLE is not enabled, since the
+ * value is used. Disable for SPL so that the errors in kconfig_spl.c
+ * are detected, since otherwise a build error when building U-Boot may
+ * cause SPL to not be built.
+ */
+ if (!IS_ENABLED(CONFIG_SANDBOX_SPL) &&
+ IS_ENABLED(CONFIG_TEST_KCONFIG)) {
+ val = IF_ENABLED_INT(CONFIG_TEST_KCONFIG_ENABLE,
+ CONFIG_TEST_KCONFIG_VALUE);
+ printf("value %ld\n", val);
+ }
+
+ /*
+ * This fails if CONFIG_TEST_KCONFIG_ENABLE is not enabled, since the
+ * value is used. Disable for SPL so that the errors in kconfig_spl.c
+ * are detected, since otherwise a build error when building U-Boot may
+ * cause SPL to not be built.
+ */
+ if (!IS_ENABLED(CONFIG_SANDBOX_SPL) &&
+ CONFIG_IS_ENABLED(TEST_KCONFIG)) {
+ val = CONFIG_IF_ENABLED_INT(TEST_KCONFIG_ENABLE,
+ TEST_KCONFIG_VALUE);
+ printf("value2 %ld\n", val);
+ }
+
+ return 0;
+}
+LIB_TEST(lib_test_is_enabled, 0);
diff --git a/test/lib/kconfig_spl.c b/test/lib/kconfig_spl.c
new file mode 100644
index 0000000..c89ceaec
--- /dev/null
+++ b/test/lib/kconfig_spl.c
@@ -0,0 +1,44 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Test of linux/kconfig.h macros for SPL
+ *
+ * Copyright 2022 Google LLC
+ * Written by Simon Glass <sjg@chromium.org>
+ */
+
+#include <common.h>
+#include <test/lib.h>
+#include <test/test.h>
+#include <test/ut.h>
+
+static int lib_test_spl_is_enabled(struct unit_test_state *uts)
+{
+ ulong val;
+
+ ut_asserteq(0, CONFIG_IS_ENABLED(CMDLINE))
+ ut_asserteq(1, CONFIG_IS_ENABLED(OF_PLATDATA))
+ ut_asserteq(0, CONFIG_IS_ENABLED(_UNDEFINED))
+
+ /*
+ * This fails if CONFIG_TEST_KCONFIG_ENABLE is not enabled, since the
+ * value is used.
+ */
+ if (IS_ENABLED(CONFIG_TEST_KCONFIG)) {
+ val = IF_ENABLED_INT(CONFIG_TEST_KCONFIG_ENABLE,
+ CONFIG_TEST_KCONFIG_VALUE);
+ printf("value %ld\n", val);
+ }
+
+ /*
+ * This fails if CONFIG_TEST_KCONFIG_ENABLE is not enabled, since the
+ * value is used.
+ */
+ if (CONFIG_IS_ENABLED(TEST_KCONFIG)) {
+ val = CONFIG_IF_ENABLED_INT(TEST_KCONFIG_ENABLE,
+ TEST_KCONFIG_VALUE);
+ printf("value2 %ld\n", val);
+ }
+
+ return 0;
+}
+LIB_TEST(lib_test_spl_is_enabled, 0);
diff --git a/test/py/tests/test_kconfig.py b/test/py/tests/test_kconfig.py
new file mode 100644
index 0000000..0b9e6bc
--- /dev/null
+++ b/test/py/tests/test_kconfig.py
@@ -0,0 +1,39 @@
+# SPDX-License-Identifier: GPL-2.0
+# Copyright 2022 Google LLC
+# Written by Simon Glass <sjg@chromium.org>
+
+import pytest
+
+import u_boot_utils as util
+
+# This is needed for Azure, since the default '..' directory is not writeable
+TMPDIR = '/tmp/test_kconfig'
+
+@pytest.mark.slow
+@pytest.mark.boardspec('sandbox')
+def test_kconfig(u_boot_console):
+ """Test build failures when IF_ENABLED_INT() option is not enabled"""
+ cons = u_boot_console
+
+ # This detects build errors in test/lib/kconfig.c
+ out = util.run_and_log(
+ cons, ['./tools/buildman/buildman', '-m', '--board', 'sandbox',
+ '-a', 'TEST_KCONFIG', '-o', TMPDIR], ignore_errors=True)
+ assert 'invalid_use_of_IF_ENABLED_INT' in out
+ assert 'invalid_use_of_CONFIG_IF_ENABLED_INT' in out
+
+@pytest.mark.slow
+@pytest.mark.boardspec('sandbox_spl')
+def test_kconfig_spl(u_boot_console):
+ """Test build failures when IF_ENABLED_INT() option is not enabled"""
+ cons = u_boot_console
+
+ # This detects build errors in test/lib/kconfig_spl.c
+ out = util.run_and_log(
+ cons, ['./tools/buildman/buildman', '-m', '--board', 'sandbox_spl',
+ '-a', 'TEST_KCONFIG', '-o', TMPDIR], ignore_errors=True)
+ assert 'invalid_use_of_IF_ENABLED_INT' in out
+
+ # There is no CONFIG_SPL_TEST_KCONFIG, so the CONFIG_IF_ENABLED_INT()
+ # line should not generate an error
+ assert 'invalid_use_of_CONFIG_IF_ENABLED_INT' not in out