aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Kconfig7
-rw-r--r--src/arch/arm/Kconfig6
-rw-r--r--src/arch/arm/armv4/Makefile.inc3
-rw-r--r--src/arch/arm/armv7/Makefile.inc6
-rw-r--r--src/arch/arm64/Kconfig6
-rw-r--r--src/arch/arm64/armv8/Makefile.inc9
-rw-r--r--src/arch/arm64/armv8/bootblock_simple.c60
-rw-r--r--src/arch/arm64/include/bootblock_common.h11
-rw-r--r--src/arch/mips/Kconfig1
-rw-r--r--src/arch/mips/bootblock_simple.c2
-rw-r--r--src/arch/mips/include/arch/bootblock_common.h (renamed from src/arch/mips/include/bootblock_common.h)0
-rw-r--r--src/arch/riscv/Kconfig7
-rw-r--r--src/arch/riscv/bootblock_simple.c1
-rw-r--r--src/arch/riscv/include/bootblock_common.h16
-rw-r--r--src/arch/x86/Kconfig2
-rw-r--r--src/arch/x86/bootblock_normal.c2
-rw-r--r--src/arch/x86/bootblock_simple.c2
-rw-r--r--src/arch/x86/include/arch/bootblock_common.h (renamed from src/arch/x86/include/bootblock_common.h)0
-rw-r--r--src/include/bootblock_common.h (renamed from src/arch/arm/include/bootblock_common.h)6
-rw-r--r--src/lib/Makefile.inc5
-rw-r--r--src/lib/bootblock.c (renamed from src/arch/arm/armv7/bootblock_simple.c)10
-rw-r--r--src/soc/broadcom/cygnus/Kconfig4
-rw-r--r--src/soc/marvell/bg4cd/Kconfig6
-rw-r--r--src/soc/nvidia/tegra124/Kconfig10
-rw-r--r--src/soc/nvidia/tegra132/Kconfig10
-rw-r--r--src/soc/nvidia/tegra210/Kconfig10
-rw-r--r--src/soc/rockchip/rk3288/Kconfig4
27 files changed, 38 insertions, 168 deletions
diff --git a/src/Kconfig b/src/Kconfig
index 865f7f5c5b..35628877f7 100644
--- a/src/Kconfig
+++ b/src/Kconfig
@@ -248,6 +248,7 @@ config FLASHMAP_OFFSET
help
Offset of flash map in firmware image
+# TODO: This doesn't belong here, move to src/arch/x86/Kconfig
choice
prompt "Bootblock behaviour"
default BOOTBLOCK_SIMPLE
@@ -260,6 +261,12 @@ config BOOTBLOCK_NORMAL
endchoice
+# To be selected by arch, SoC or mainboard if it does not want use the normal
+# src/lib/bootblock.c#main() C entry point.
+config BOOTBLOCK_CUSTOM
+ bool
+ default n
+
config BOOTBLOCK_SOURCE
string
default "bootblock_simple.c" if BOOTBLOCK_SIMPLE
diff --git a/src/arch/arm/Kconfig b/src/arch/arm/Kconfig
index 2499d2d075..9f14dda4e7 100644
--- a/src/arch/arm/Kconfig
+++ b/src/arch/arm/Kconfig
@@ -22,12 +22,6 @@ config ARCH_RAMSTAGE_ARM
source src/arch/arm/armv4/Kconfig
source src/arch/arm/armv7/Kconfig
-# If a custom bootblock is necessary, this option should be "select"-ed by
-# the thing that needs it, probably the CPU.
-config ARM_BOOTBLOCK_CUSTOM
- bool
- default n
-
config ARM_LPAE
bool
default n
diff --git a/src/arch/arm/armv4/Makefile.inc b/src/arch/arm/armv4/Makefile.inc
index a8c31c8069..ee1879cf8f 100644
--- a/src/arch/arm/armv4/Makefile.inc
+++ b/src/arch/arm/armv4/Makefile.inc
@@ -24,9 +24,8 @@ armv4_flags = -marm -march=armv4t -I$(src)/arch/arm/include/armv4/ \
ifeq ($(CONFIG_ARCH_BOOTBLOCK_ARMV4),y)
-ifneq ($(CONFIG_ARM_BOOTBLOCK_CUSTOM),y)
+ifneq ($(CONFIG_BOOTBLOCK_CUSTOM),y)
bootblock-y += bootblock.S
-bootblock-y += bootblock_simple.c
endif
bootblock-y += cache.c
diff --git a/src/arch/arm/armv7/Makefile.inc b/src/arch/arm/armv7/Makefile.inc
index a4391e9b3e..3a489cb259 100644
--- a/src/arch/arm/armv7/Makefile.inc
+++ b/src/arch/arm/armv7/Makefile.inc
@@ -31,9 +31,8 @@ ifeq ($(CONFIG_ARCH_BOOTBLOCK_ARMV7),y)
bootblock-c-ccopts += $(armv7-a_flags)
bootblock-S-ccopts += $(armv7-a_asm_flags)
-ifneq ($(CONFIG_ARM_BOOTBLOCK_CUSTOM),y)
+ifneq ($(CONFIG_BOOTBLOCK_CUSTOM),y)
bootblock-y += bootblock.S
-bootblock-$(CONFIG_BOOTBLOCK_SIMPLE) += bootblock_simple.c
endif
bootblock-y += cache.c
@@ -46,9 +45,8 @@ else ifeq ($(CONFIG_ARCH_BOOTBLOCK_ARMV7_M),y)
bootblock-c-ccopts += $(armv7-m_flags)
bootblock-S-ccopts += $(armv7-m_asm_flags)
-ifneq ($(CONFIG_ARM_BOOTBLOCK_CUSTOM),y)
+ifneq ($(CONFIG_BOOTBLOCK_CUSTOM),y)
bootblock-y += bootblock_m.S
-bootblock-y += bootblock_simple.c
endif
bootblock-y += exception_m.c
bootblock-y += cache_m.c
diff --git a/src/arch/arm64/Kconfig b/src/arch/arm64/Kconfig
index 2c8713224c..9b06589f82 100644
--- a/src/arch/arm64/Kconfig
+++ b/src/arch/arm64/Kconfig
@@ -22,12 +22,6 @@ config ARCH_RAMSTAGE_ARM64
source src/arch/arm64/armv8/Kconfig
source src/arch/arm64/cpu/Kconfig
-# If a custom bootblock is necessary, this option should be "select"-ed by
-# the thing that needs it, probably the CPU.
-config ARM64_BOOTBLOCK_CUSTOM
- bool
- default n
-
config ARM64_USE_ARM_TRUSTED_FIRMWARE
bool
default n
diff --git a/src/arch/arm64/armv8/Makefile.inc b/src/arch/arm64/armv8/Makefile.inc
index 357159d6a7..359a368ab9 100644
--- a/src/arch/arm64/armv8/Makefile.inc
+++ b/src/arch/arm64/armv8/Makefile.inc
@@ -26,10 +26,6 @@ armv8_asm_flags = $(armv8_flags)
################################################################################
ifeq ($(CONFIG_ARCH_BOOTBLOCK_ARMV8_64),y)
-ifneq ($(CONFIG_ARM64_BOOTBLOCK_CUSTOM),y)
-bootblock-y += bootblock.S
-bootblock-y += bootblock_simple.c
-endif
bootblock-y += cache.c
bootblock-y += cache_helpers.S
bootblock-y += cpu.S
@@ -38,6 +34,11 @@ bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += exception.c
bootblock-c-ccopts += $(armv8_flags)
bootblock-S-ccopts += $(armv8_asm_flags)
+# Required to access unaligned timestamp struct members before MMU is active
+# (TODO: Maybe use explicit unaligned accesses in timestamp code instead, or
+# evaluate redesigning timestamp data structures to avoid misaligned members.)
+bootblock-c-ccopts += -mstrict-align
+
endif
################################################################################
diff --git a/src/arch/arm64/armv8/bootblock_simple.c b/src/arch/arm64/armv8/bootblock_simple.c
deleted file mode 100644
index e2002f2a3a..0000000000
--- a/src/arch/arm64/armv8/bootblock_simple.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * This file is part of the coreboot project.
- *
- * Copyright 2014 Google Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; version 2 of
- * the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#include <bootblock_common.h>
-#include <arch/cache.h>
-#include <arch/stages.h>
-#include <arch/exception.h>
-#include <cbfs.h>
-#include <console/console.h>
-#include <program_loading.h>
-
-static int boot_cpu(void)
-{
- /*
- * FIXME: This is a stub for now. All non-boot CPUs should be
- * waiting for an interrupt. We could move the chunk of assembly
- * which puts them to sleep in here...
- */
- return 1;
-}
-
-void main(void)
-{
- /* Globally disable MMU, caches, and branch prediction (these should
- * be disabled by default on reset) */
- mmu_disable();
-
- /*
- * Re-enable icache and branch prediction. MMU and dcache will be
- * set up later.
- *
- * Note: If booting from USB, we need to disable branch prediction
- * before copying from USB into RAM (FIXME: why?)
- */
-
- if (boot_cpu()) {
- //bootblock_cpu_init();
- //bootblock_mainboard_init();
- }
-
-#if IS_ENABLED(CONFIG_BOOTBLOCK_CONSOLE)
- console_init();
- exception_init();
-#endif
-
- run_romstage();
-}
diff --git a/src/arch/arm64/include/bootblock_common.h b/src/arch/arm64/include/bootblock_common.h
deleted file mode 100644
index 2fa705f5e1..0000000000
--- a/src/arch/arm64/include/bootblock_common.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifdef CONFIG_BOOTBLOCK_CPU_INIT
-#include CONFIG_BOOTBLOCK_CPU_INIT
-#endif
-
-#ifdef CONFIG_BOOTBLOCK_MAINBOARD_INIT
-#include CONFIG_BOOTBLOCK_MAINBOARD_INIT
-#else
-static void bootblock_mainboard_init(void)
-{
-}
-#endif
diff --git a/src/arch/mips/Kconfig b/src/arch/mips/Kconfig
index b67fa29584..d0489ace4b 100644
--- a/src/arch/mips/Kconfig
+++ b/src/arch/mips/Kconfig
@@ -22,6 +22,7 @@ config ARCH_BOOTBLOCK_MIPS
bool
default n
select ARCH_MIPS
+ select BOOTBLOCK_CUSTOM
config ARCH_VERSTAGE_MIPS
bool
diff --git a/src/arch/mips/bootblock_simple.c b/src/arch/mips/bootblock_simple.c
index c37e40ce7f..c3bd82dbee 100644
--- a/src/arch/mips/bootblock_simple.c
+++ b/src/arch/mips/bootblock_simple.c
@@ -14,7 +14,7 @@
* GNU General Public License for more details.
*/
-#include <bootblock_common.h>
+#include <arch/bootblock_common.h>
#include <console/console.h>
#include <halt.h>
#include <program_loading.h>
diff --git a/src/arch/mips/include/bootblock_common.h b/src/arch/mips/include/arch/bootblock_common.h
index f5c11ba9c5..f5c11ba9c5 100644
--- a/src/arch/mips/include/bootblock_common.h
+++ b/src/arch/mips/include/arch/bootblock_common.h
diff --git a/src/arch/riscv/Kconfig b/src/arch/riscv/Kconfig
index 9618c63577..1849335386 100644
--- a/src/arch/riscv/Kconfig
+++ b/src/arch/riscv/Kconfig
@@ -6,6 +6,7 @@ config ARCH_BOOTBLOCK_RISCV
bool
default n
select ARCH_RISCV
+ select BOOTBLOCK_CUSTOM
config ARCH_VERSTAGE_RISCV
bool
@@ -18,9 +19,3 @@ config ARCH_ROMSTAGE_RISCV
config ARCH_RAMSTAGE_RISCV
bool
default n
-
-# If a custom bootblock is necessary, this option should be "select"-ed by
-# the thing that needs it, probably the CPU.
-config RISCV_BOOTBLOCK_CUSTOM
- bool
- default n
diff --git a/src/arch/riscv/bootblock_simple.c b/src/arch/riscv/bootblock_simple.c
index 3214035bc3..db45ab202a 100644
--- a/src/arch/riscv/bootblock_simple.c
+++ b/src/arch/riscv/bootblock_simple.c
@@ -14,7 +14,6 @@
* GNU General Public License for more details.
*/
-#include <bootblock_common.h>
#include <arch/cache.h>
#include <arch/hlt.h>
#include <arch/stages.h>
diff --git a/src/arch/riscv/include/bootblock_common.h b/src/arch/riscv/include/bootblock_common.h
deleted file mode 100644
index fe2c982dec..0000000000
--- a/src/arch/riscv/include/bootblock_common.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifdef CONFIG_BOOTBLOCK_CPU_INIT
-#include CONFIG_BOOTBLOCK_CPU_INIT
-#endif
-
-// I'm disappointed that we let this kind of thing creep in.
-// we null out functions with this kind of stuff, AND weak symbols,
-// AND empty cpp function defines. What's next? Ouija boards?
-#if 0
-#ifdef CONFIG_BOOTBLOCK_MAINBOARD_INIT
-#include CONFIG_BOOTBLOCK_MAINBOARD_INIT
-#else
-static void bootblock_mainboard_init(void)
-{
-}
-#endif
-#endif
diff --git a/src/arch/x86/Kconfig b/src/arch/x86/Kconfig
index 88b259297c..738e7d1c0a 100644
--- a/src/arch/x86/Kconfig
+++ b/src/arch/x86/Kconfig
@@ -24,6 +24,7 @@ config ARCH_BOOTBLOCK_X86_32
bool
default n
select ARCH_X86
+ select BOOTBLOCK_CUSTOM
config ARCH_VERSTAGE_X86_32
bool
@@ -43,6 +44,7 @@ config ARCH_BOOTBLOCK_X86_64
bool
default n
select ARCH_X86
+ select BOOTBLOCK_CUSTOM
config ARCH_VERSTAGE_X86_64
bool
diff --git a/src/arch/x86/bootblock_normal.c b/src/arch/x86/bootblock_normal.c
index a4dc3c4d25..d5f03b7699 100644
--- a/src/arch/x86/bootblock_normal.c
+++ b/src/arch/x86/bootblock_normal.c
@@ -1,5 +1,5 @@
#include <smp/node.h>
-#include <bootblock_common.h>
+#include <arch/bootblock_common.h>
#include <pc80/mc146818rtc.h>
#include <halt.h>
diff --git a/src/arch/x86/bootblock_simple.c b/src/arch/x86/bootblock_simple.c
index bb0591fb53..4bff360a08 100644
--- a/src/arch/x86/bootblock_simple.c
+++ b/src/arch/x86/bootblock_simple.c
@@ -1,5 +1,5 @@
#include <smp/node.h>
-#include <bootblock_common.h>
+#include <arch/bootblock_common.h>
#include <halt.h>
static void main(unsigned long bist)
diff --git a/src/arch/x86/include/bootblock_common.h b/src/arch/x86/include/arch/bootblock_common.h
index 939ba08a67..939ba08a67 100644
--- a/src/arch/x86/include/bootblock_common.h
+++ b/src/arch/x86/include/arch/bootblock_common.h
diff --git a/src/arch/arm/include/bootblock_common.h b/src/include/bootblock_common.h
index 874e84a709..1acbef4855 100644
--- a/src/arch/arm/include/bootblock_common.h
+++ b/src/include/bootblock_common.h
@@ -13,12 +13,12 @@
* GNU General Public License for more details.
*/
-#ifndef __ARCH_BOOTBLOCK_COMMON_H
-#define __ARCH_BOOTBLOCK_COMMON_H
+#ifndef __BOOTBLOCK_COMMON_H
+#define __BOOTBLOCK_COMMON_H
/* These are defined as weak no-ops that can be overridden by mainboard/SoC. */
void bootblock_mainboard_early_init(void);
void bootblock_mainboard_init(void);
void bootblock_soc_init(void);
-#endif /* __ARCH_BOOTBLOCK_COMMON_H */
+#endif /* __BOOTBLOCK_COMMON_H */
diff --git a/src/lib/Makefile.inc b/src/lib/Makefile.inc
index 7b90819c57..c6e2a5387b 100644
--- a/src/lib/Makefile.inc
+++ b/src/lib/Makefile.inc
@@ -14,6 +14,11 @@
#
subdirs-y += loaders
+
+ifneq ($(CONFIG_BOOTBLOCK_CUSTOM),y)
+bootblock-y += bootblock.c
+endif
+
bootblock-y += assets.c
bootblock-y += prog_loaders.c
bootblock-y += prog_ops.c
diff --git a/src/arch/arm/armv7/bootblock_simple.c b/src/lib/bootblock.c
index 0f4965af04..d7d0bb56f4 100644
--- a/src/arch/arm/armv7/bootblock_simple.c
+++ b/src/lib/bootblock.c
@@ -15,12 +15,10 @@
*/
#include <arch/exception.h>
-#include <arch/stages.h>
#include <bootblock_common.h>
#include <console/console.h>
#include <delay.h>
#include <program_loading.h>
-#include <smp/node.h>
#include <timestamp.h>
__attribute__((weak)) void bootblock_mainboard_early_init(void) { /* no-op */ }
@@ -35,10 +33,10 @@ void main(void)
bootblock_mainboard_early_init();
-#if CONFIG_BOOTBLOCK_CONSOLE
- console_init();
- exception_init();
-#endif
+ if (IS_ENABLED(CONFIG_BOOTBLOCK_CONSOLE)) {
+ console_init();
+ exception_init();
+ }
bootblock_soc_init();
bootblock_mainboard_init();
diff --git a/src/soc/broadcom/cygnus/Kconfig b/src/soc/broadcom/cygnus/Kconfig
index 871d84c208..8cafc4bc64 100644
--- a/src/soc/broadcom/cygnus/Kconfig
+++ b/src/soc/broadcom/cygnus/Kconfig
@@ -33,10 +33,6 @@ config CHROMEOS
select SEPARATE_VERSTAGE
select RETURN_FROM_VERSTAGE
-config BOOTBLOCK_CPU_INIT
- string
- default "soc/broadcom/cygnus/bootblock.c"
-
config CONSOLE_SERIAL_UART_ADDRESS
hex
depends on DRIVERS_UART
diff --git a/src/soc/marvell/bg4cd/Kconfig b/src/soc/marvell/bg4cd/Kconfig
index 255ce57302..2e5b15c5bc 100644
--- a/src/soc/marvell/bg4cd/Kconfig
+++ b/src/soc/marvell/bg4cd/Kconfig
@@ -17,10 +17,10 @@ config SOC_MARVELL_BG4CD
bool
default n
select ARCH_BOOTBLOCK_ARMV7_M
+ select BOOTBLOCK_CUSTOM if VBOOT_VERIFY_FIRMWARE
select ARCH_RAMSTAGE_ARMV7
select ARCH_ROMSTAGE_ARMV7
select ARCH_VERSTAGE_ARMV7_M
- select ARM_BOOTBLOCK_CUSTOM if VBOOT_VERIFY_FIRMWARE
select BOOTBLOCK_CONSOLE
select GENERIC_UDELAY
select HAVE_MONOTONIC_TIMER
@@ -31,8 +31,4 @@ if SOC_MARVELL_BG4CD
config CHROMEOS
select VBOOT_STARTS_IN_BOOTBLOCK
-config BOOTBLOCK_CPU_INIT
- string
- default "soc/marvell/bg4cd/bootblock.c"
-
endif
diff --git a/src/soc/nvidia/tegra124/Kconfig b/src/soc/nvidia/tegra124/Kconfig
index c35e2c200c..bd38d7619a 100644
--- a/src/soc/nvidia/tegra124/Kconfig
+++ b/src/soc/nvidia/tegra124/Kconfig
@@ -2,6 +2,7 @@ config SOC_NVIDIA_TEGRA124
bool
default n
select ARCH_BOOTBLOCK_ARMV4
+ select BOOTBLOCK_CUSTOM
select ARCH_VERSTAGE_ARMV7
select ARCH_ROMSTAGE_ARMV7
select ARCH_RAMSTAGE_ARMV7
@@ -10,20 +11,11 @@ config SOC_NVIDIA_TEGRA124
select HAVE_MONOTONIC_TIMER
select GENERIC_UDELAY
select BOOTBLOCK_CONSOLE
- select ARM_BOOTBLOCK_CUSTOM
select ARM_LPAE
select GENERIC_GPIO_LIB
if SOC_NVIDIA_TEGRA124
-config BOOTBLOCK_CPU_INIT
- string
- default "soc/nvidia/tegra124/bootblock.c"
- help
- CPU/SoC-specific bootblock code. This is useful if the
- bootblock must load microcode or copy data from ROM before
- searching for the bootblock.
-
config TEGRA124_MODEL_TD570D
bool "TD570D"
diff --git a/src/soc/nvidia/tegra132/Kconfig b/src/soc/nvidia/tegra132/Kconfig
index cb6798c8ac..4be9a4c2a8 100644
--- a/src/soc/nvidia/tegra132/Kconfig
+++ b/src/soc/nvidia/tegra132/Kconfig
@@ -2,6 +2,7 @@ config SOC_NVIDIA_TEGRA132
bool
default n
select ARCH_BOOTBLOCK_ARMV4
+ select BOOTBLOCK_CUSTOM
select ARCH_VERSTAGE_ARMV4
select ARCH_ROMSTAGE_ARMV4
select ARCH_RAMSTAGE_ARMV8_64
@@ -11,7 +12,6 @@ config SOC_NVIDIA_TEGRA132
select GENERIC_UDELAY
select HAVE_HARD_RESET
select HAVE_UART_SPECIAL
- select ARM_BOOTBLOCK_CUSTOM
select GENERIC_GPIO_LIB
select HAS_PRECBMEM_TIMESTAMP_REGION
@@ -31,14 +31,6 @@ config MAINBOARD_DO_SOR_INIT
help
Initialize dp display
-config BOOTBLOCK_CPU_INIT
- string
- default "soc/nvidia/tegra132/bootblock.c"
- help
- CPU/SoC-specific bootblock code. This is useful if the
- bootblock must load microcode or copy data from ROM before
- searching for the bootblock.
-
config MAX_CPUS
int
default 2
diff --git a/src/soc/nvidia/tegra210/Kconfig b/src/soc/nvidia/tegra210/Kconfig
index 2d910bec6e..e70cdc6517 100644
--- a/src/soc/nvidia/tegra210/Kconfig
+++ b/src/soc/nvidia/tegra210/Kconfig
@@ -2,6 +2,7 @@ config SOC_NVIDIA_TEGRA210
bool
default n
select ARCH_BOOTBLOCK_ARMV4
+ select BOOTBLOCK_CUSTOM
select ARCH_VERSTAGE_ARMV4
select ARCH_ROMSTAGE_ARMV4
select ARCH_RAMSTAGE_ARMV8_64
@@ -12,7 +13,6 @@ config SOC_NVIDIA_TEGRA210
select GENERIC_UDELAY
select HAVE_HARD_RESET
select HAVE_UART_SPECIAL
- select ARM_BOOTBLOCK_CUSTOM
select ARM64_USE_ARM_TRUSTED_FIRMWARE
select HAS_PRECBMEM_TIMESTAMP_REGION
select GENERIC_GPIO_LIB
@@ -36,14 +36,6 @@ config MAINBOARD_DO_SOR_INIT
help
Initialize dp display
-config BOOTBLOCK_CPU_INIT
- string
- default "soc/nvidia/tegra210/bootblock.c"
- help
- CPU/SoC-specific bootblock code. This is useful if the
- bootblock must load microcode or copy data from ROM before
- searching for the bootblock.
-
config MAX_CPUS
int
default 4
diff --git a/src/soc/rockchip/rk3288/Kconfig b/src/soc/rockchip/rk3288/Kconfig
index c3ff7cfc66..65e6dc32f8 100644
--- a/src/soc/rockchip/rk3288/Kconfig
+++ b/src/soc/rockchip/rk3288/Kconfig
@@ -36,10 +36,6 @@ config CHROMEOS
select SEPARATE_VERSTAGE
select RETURN_FROM_VERSTAGE
-config BOOTBLOCK_CPU_INIT
- string
- default "soc/rockchip/rk3288/bootblock.c"
-
config PMIC_BUS
int
default -1