From f8494fbeae6bdde1b2f5bf1d93e9c7a2be79354b Mon Sep 17 00:00:00 2001 From: Sean Rhodes Date: Sun, 15 Feb 2026 21:12:13 +0000 Subject: [PATCH] lib: Add devtree_update bootstate hook Provide a weak devtree_update() hook and invoke it early in ramstage at BS_PRE_DEVICE. Mainboards can override devtree_update() to enable/disable devices at runtime based on CMOS/NVRAM settings. Signed-off-by: Sean Rhodes Change-Id: Ic84ddb25e1da050543c230ea457042b8a8a3061f Reviewed-on: https://review.coreboot.org/c/coreboot/+/91250 Tested-by: build bot (Jenkins) Reviewed-by: Matt DeVillier Reviewed-by: Angel Pons --- src/include/devtree_update.h | 14 ++++++++++++++ src/lib/Makefile.mk | 1 + src/lib/devtree_update.c | 16 ++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 src/include/devtree_update.h create mode 100644 src/lib/devtree_update.c diff --git a/src/include/devtree_update.h b/src/include/devtree_update.h new file mode 100644 index 0000000000..b99b689b99 --- /dev/null +++ b/src/include/devtree_update.h @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#ifndef __DEVTREE_UPDATE_H__ +#define __DEVTREE_UPDATE_H__ + +/* + * Optional mainboard hook to update devicetree runtime enable/disable state + * based on CMOS/NVRAM settings. + * + * This function is called early in ramstage at BS_PRE_DEVICE. + */ +void devtree_update(void); + +#endif /* __DEVTREE_UPDATE_H__ */ diff --git a/src/lib/Makefile.mk b/src/lib/Makefile.mk index 3ffdfa807c..0dc41ce921 100644 --- a/src/lib/Makefile.mk +++ b/src/lib/Makefile.mk @@ -155,6 +155,7 @@ ramstage-$(CONFIG_BOOTSPLASH) += bootsplash.c ramstage-$(CONFIG_BOOTSPLASH) += jpeg.c ramstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c ramstage-$(CONFIG_COVERAGE) += libgcov.c +ramstage-y += devtree_update.c ramstage-y += dp_aux.c ramstage-y += framebuffer_info.c ramstage-y += edid.c diff --git a/src/lib/devtree_update.c b/src/lib/devtree_update.c new file mode 100644 index 0000000000..1b454a2580 --- /dev/null +++ b/src/lib/devtree_update.c @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include +#include +#include + +__weak void devtree_update(void) +{ +} + +static void run_devtree_update(void *unused) +{ + devtree_update(); +} + +BOOT_STATE_INIT_ENTRY(BS_PRE_DEVICE, BS_ON_ENTRY, run_devtree_update, NULL);