OpenSBI Kconfig Support
Subsystems (3)
v2 cover OpenSBI Kconfig Support
In future, we will see more drivers in OpenSBI for system reset, serial port, power management, etc platform specific devices. We need platform specific compile time configuration to allow users control the size of OpenSBI generic firmware binaries by only enabling desired drivers. In other words, users should be allowed to restrict the set of RISC-V platforms on which OpenSBI generic firmwares built by them can run.
To address above, we add Kconfig support for OpenSBI platforms using the kconfig-frontends project which is a standalone kconfig parser.
The kconfig-frontends is available as a package/receipe on various distros (such as Debian, UBuntu, OpenSUSE, etc) and Yocto project.
To try OpenSBI Kconfig support with generic platform, here are few example commands:
make PLATFORM=generic <-- builds OpenSBI using "defconfig"
make PLATFORM=generic menuconfig <-- launches graphical interface for changes
These patches can also be found in the kconfig_v2 branch at:
https://github.com/avpatel/opensbi.git
Changes since v1:
- Fix SPDX license specifier in new Kconfig files
Anup Patel (14):
Makefile: Add initial kconfig support for each platform
Makefile: Compile lib/utils sources separately for each platform
lib: utils/serial: Use kconfig for enabling/disabling drivers
lib: utils/reset: Use kconfig for enabling/disabling drivers
lib: utils/sys: Use kconfig for enabling/disabling drivers
lib: utils/timer: Use kconfig for enabling/disabling drivers
lib: utils/ipi: Use kconfig for enabling/disabling drivers
lib: utils/irqchip: Use kconfig for enabling/disabling drivers
lib: utils/i2c: Use kconfig for enabling/disabling drivers
lib: utils/gpio: Use kconfig for enabling/disabling drivers
lib: utils/fdt: Use kconfig for enabling/disabling
platform: generic: Use kconfig for enabling/disabling overrides
platform: Remove redundant config.mk from all platforms
docs: Update documentation for kconfig support
Kconfig | 23 +++++ Makefile | 102 ++++++++++++++++------ README.md | 25 +++++- docs/firmware/fw_dynamic.md | 2 +- docs/firmware/fw_jump.md | 4 +- docs/firmware/fw_payload.md | 4 +- docs/library_usage.md | 6 +- docs/platform/platform.md | 4 +- docs/platform_guide.md | 9 +- firmware/Kconfig | 1 + include/sbi_utils/fdt/fdt_domain.h | 9 ++ include/sbi_utils/fdt/fdt_pmu.h | 10 +++ include/sbi_utils/ipi/fdt_ipi.h | 9 ++ include/sbi_utils/irqchip/fdt_irqchip.h | 10 +++ include/sbi_utils/irqchip/imsic.h | 10 +++ include/sbi_utils/reset/fdt_reset.h | 12 +++ include/sbi_utils/serial/fdt_serial.h | 8 ++ include/sbi_utils/timer/fdt_timer.h | 9 ++ lib/utils/Kconfig | 25 ++++++ lib/utils/fdt/Kconfig | 18 ++++ lib/utils/fdt/objects.mk | 8 +- lib/utils/gpio/Kconfig | 23 +++++ lib/utils/gpio/objects.mk | 10 +-- lib/utils/i2c/Kconfig | 23 +++++ lib/utils/i2c/objects.mk | 10 +-- lib/utils/ipi/Kconfig | 23 +++++ lib/utils/ipi/objects.mk | 10 +-- lib/utils/irqchip/Kconfig | 41 +++++++++ lib/utils/irqchip/objects.mk | 22 ++--- lib/utils/libfdt/Kconfig | 5 ++ lib/utils/libfdt/objects.mk | 4 +- lib/utils/reset/Kconfig | 37 ++++++++ lib/utils/reset/objects.mk | 28 +++--- lib/utils/serial/Kconfig | 73 ++++++++++++++++ lib/utils/serial/objects.mk | 44 +++++----- lib/utils/sys/Kconfig | 13 +++ lib/utils/sys/objects.mk | 4 +- lib/utils/timer/Kconfig | 23 +++++ lib/utils/timer/objects.mk | 10 +-- platform/andes/ae350/Kconfig | 8 ++ platform/andes/ae350/config.mk | 36 -------- platform/andes/ae350/configs/defconfig | 0 platform/andes/ae350/objects.mk | 29 ++++++ platform/fpga/ariane/Kconfig | 10 +++ platform/fpga/ariane/config.mk | 36 -------- platform/fpga/ariane/configs/defconfig | 0 platform/fpga/ariane/objects.mk | 35 ++++++++ platform/fpga/openpiton/Kconfig | 10 +++ platform/fpga/openpiton/config.mk | 35 -------- platform/fpga/openpiton/configs/defconfig | 0 platform/fpga/openpiton/objects.mk | 35 ++++++++ platform/generic/Kconfig | 26 ++++++ platform/generic/allwinner/objects.mk | 4 +- platform/generic/config.mk | 40 --------- platform/generic/configs/defconfig | 29 ++++++ platform/generic/objects.mk | 33 +++++++ platform/generic/sifive/objects.mk | 8 +- platform/kendryte/k210/Kconfig | 10 +++ platform/kendryte/k210/config.mk | 19 ---- platform/kendryte/k210/configs/defconfig | 0 platform/kendryte/k210/objects.mk | 12 +++ platform/nuclei/ux600/Kconfig | 10 +++ platform/nuclei/ux600/config.mk | 30 ------- platform/nuclei/ux600/configs/defconfig | 0 platform/nuclei/ux600/objects.mk | 22 +++++ platform/nuclei/ux600/platform.c | 1 - platform/template/Kconfig | 9 ++ platform/template/config.mk | 77 ---------------- platform/template/configs/defconfig | 0 platform/template/objects.mk | 72 +++++++++++++++ platform/template/platform.c | 2 +- scripts/create-binary-archive.sh | 2 +- 72 files changed, 948 insertions(+), 403 deletions(-) create mode 100644 Kconfig create mode 100644 firmware/Kconfig create mode 100644 lib/utils/Kconfig create mode 100644 lib/utils/fdt/Kconfig create mode 100644 lib/utils/gpio/Kconfig create mode 100644 lib/utils/i2c/Kconfig create mode 100644 lib/utils/ipi/Kconfig create mode 100644 lib/utils/irqchip/Kconfig create mode 100644 lib/utils/libfdt/Kconfig create mode 100644 lib/utils/reset/Kconfig create mode 100644 lib/utils/serial/Kconfig create mode 100644 lib/utils/sys/Kconfig create mode 100644 lib/utils/timer/Kconfig create mode 100644 platform/andes/ae350/Kconfig delete mode 100644 platform/andes/ae350/config.mk create mode 100644 platform/andes/ae350/configs/defconfig create mode 100644 platform/fpga/ariane/Kconfig delete mode 100644 platform/fpga/ariane/config.mk create mode 100644 platform/fpga/ariane/configs/defconfig create mode 100644 platform/fpga/openpiton/Kconfig delete mode 100644 platform/fpga/openpiton/config.mk create mode 100644 platform/fpga/openpiton/configs/defconfig create mode 100644 platform/generic/Kconfig delete mode 100644 platform/generic/config.mk create mode 100644 platform/generic/configs/defconfig create mode 100644 platform/kendryte/k210/Kconfig delete mode 100644 platform/kendryte/k210/config.mk create mode 100644 platform/kendryte/k210/configs/defconfig create mode 100644 platform/nuclei/ux600/Kconfig delete mode 100644 platform/nuclei/ux600/config.mk create mode 100644 platform/nuclei/ux600/configs/defconfig create mode 100644 platform/template/Kconfig delete mode 100644 platform/template/config.mk create mode 100644 platform/template/configs/defconfig
Signature · 1 line
2.34.1
PATCH v2 1/14 Makefile: Add initial kconfig support for each platform
We extend the top-level makefile to allow kconfig based configuration for each platform where each platform has it's own set of configs with "defconfig" being the default config.
--- Kconfig | 23 ++++++++++ Makefile | 54 +++++++++++++++++++++-- firmware/Kconfig | 1 + lib/utils/Kconfig | 1 + platform/andes/ae350/Kconfig | 5 +++ platform/andes/ae350/configs/defconfig | 0 platform/fpga/ariane/Kconfig | 5 +++ platform/fpga/ariane/configs/defconfig | 0 platform/fpga/openpiton/Kconfig | 5 +++ platform/fpga/openpiton/configs/defconfig | 0 platform/generic/Kconfig | 5 +++ platform/generic/configs/defconfig | 0 platform/kendryte/k210/Kconfig | 5 +++ platform/kendryte/k210/configs/defconfig | 0 platform/nuclei/ux600/Kconfig | 5 +++ platform/nuclei/ux600/configs/defconfig | 0 platform/template/Kconfig | 5 +++ platform/template/configs/defconfig | 0 18 files changed, 111 insertions(+), 3 deletions(-) create mode 100644 Kconfig create mode 100644 firmware/Kconfig create mode 100644 lib/utils/Kconfig create mode 100644 platform/andes/ae350/Kconfig create mode 100644 platform/andes/ae350/configs/defconfig create mode 100644 platform/fpga/ariane/Kconfig create mode 100644 platform/fpga/ariane/configs/defconfig create mode 100644 platform/fpga/openpiton/Kconfig create mode 100644 platform/fpga/openpiton/configs/defconfig create mode 100644 platform/generic/Kconfig create mode 100644 platform/generic/configs/defconfig create mode 100644 platform/kendryte/k210/Kconfig create mode 100644 platform/kendryte/k210/configs/defconfig create mode 100644 platform/nuclei/ux600/Kconfig create mode 100644 platform/nuclei/ux600/configs/defconfig create mode 100644 platform/template/Kconfig create mode 100644 platform/template/configs/defconfig
Kconfig new file +23 -0
@@ -0,0 +1,23 @@ +# SPDX-License-Identifier: BSD-2-Clause + +mainmenu "OpenSBI $OPENSBI_PLATFORM Configuration" + +config OPENSBI_SRC_DIR + string + option env="OPENSBI_SRC_DIR" + +config OPENSBI_PLATFORM + string + option env="OPENSBI_PLATFORM" + +config OPENSBI_PLATFORM_SRC_DIR + string + option env="OPENSBI_PLATFORM_SRC_DIR" + +menu "Platform Options" +source "$OPENSBI_PLATFORM_SRC_DIR/Kconfig" +endmenu + +source "$OPENSBI_SRC_DIR/lib/utils/Kconfig" + +source "$OPENSBI_SRC_DIR/firmware/Kconfig"
Makefile +51 -3
97 lines not on this page · raw message
firmware/Kconfig new file +1 -0
@@ -0,0 +1 @@ +# SPDX-License-Identifier: BSD-2-Clause
lib/utils/Kconfig new file +1 -0
@@ -0,0 +1 @@ +# SPDX-License-Identifier: BSD-2-Clause
platform/andes/ae350/Kconfig new file +5 -0
@@ -0,0 +1,5 @@ +# SPDX-License-Identifier: BSD-2-Clause + +config PLATFORM_ANDES_AE350 + bool + default y
platform/andes/ae350/configs/defconfig new file +0 -0
platform/fpga/ariane/Kconfig new file +5 -0
@@ -0,0 +1,5 @@ +# SPDX-License-Identifier: BSD-2-Clause + +config PLATFORM_ARIANE_FPGA + bool + default y
platform/fpga/ariane/configs/defconfig new file +0 -0
platform/fpga/openpiton/Kconfig new file +5 -0
@@ -0,0 +1,5 @@ +# SPDX-License-Identifier: BSD-2-Clause + +config PLATFORM_OPENPITON_FPGA + bool + default y
platform/fpga/openpiton/configs/defconfig new file +0 -0
platform/generic/Kconfig new file +5 -0
@@ -0,0 +1,5 @@ +# SPDX-License-Identifier: BSD-2-Clause + +config PLATFORM_GENERIC + bool + default y
platform/generic/configs/defconfig new file +0 -0
platform/kendryte/k210/Kconfig new file +5 -0
@@ -0,0 +1,5 @@ +# SPDX-License-Identifier: BSD-2-Clause + +config PLATFORM_KENDRYTE_K210 + bool + default y
platform/kendryte/k210/configs/defconfig new file +0 -0
platform/nuclei/ux600/Kconfig new file +5 -0
@@ -0,0 +1,5 @@ +# SPDX-License-Identifier: BSD-2-Clause + +config PLATFORM_NUCLEI_UX600 + bool + default y
platform/nuclei/ux600/configs/defconfig new file +0 -0
platform/template/Kconfig new file +5 -0
@@ -0,0 +1,5 @@ +# SPDX-License-Identifier: BSD-2-Clause + +config PLATFORM_TEMPLATE + bool + default y
platform/template/configs/defconfig new file +0 -0
Signature · 1 line
2.34.1
PATCH v2 2/14 Makefile: Compile lib/utils sources separately for each platform
In reply to Anup PatelCurrently, if same build directory is used to compile two different platforms then lib/utils objects are shared for these platforms.
We will be having platform specific configs to enable/disable drivers in lib/utils and select compile time options for lib/utils sources. This means lib/utils sources will now be compiled in a platform specific way.
To tackle above, we update top-level Makefile as follows:
1) Don't create libsbiutils.a anymore because this can't be shared between platforms.
2) Compile lib/utils sources separately for each platform.
3) Add comments showing which make rules are for lib/sbi, lib/utils, firmware, and platform sources.
--- Makefile | 48 ++++++++++++++++---------------- docs/library_usage.md | 6 +--- scripts/create-binary-archive.sh | 2 +- 3 files changed, 26 insertions(+), 30 deletions(-)
Makefile +24 -24
@@ -240,8 +240,8 @@ include $(firmware-object-mks) # Setup list of objects libsbi-objs-path-y=$(foreach obj,$(libsbi-objs-y),$(build_dir)/lib/sbi/$(obj)) -libsbiutils-objs-path-y=$(foreach obj,$(libsbiutils-objs-y),$(build_dir)/lib/utils/$(obj)) ifdef PLATFORM +libsbiutils-objs-path-y=$(foreach obj,$(libsbiutils-objs-y),$(platform_build_dir)/lib/utils/$(obj)) platform-objs-path-y=$(foreach obj,$(platform-objs-y),$(platform_build_dir)/$(obj)) firmware-bins-path-y=$(foreach bin,$(firmware-bins-y),$(platform_build_dir)/firmware/$(bin)) endif
@@ -458,7 +458,6 @@ compile_gen_dep = $(CMD_PREFIX)mkdir -p `dirname $(1)`; \ echo "$(1:.dep=$(2)): $(3)" >> $(1) targets-y = $(build_dir)/lib/libsbi.a -targets-y += $(build_dir)/lib/libsbiutils.a ifdef PLATFORM targets-y += $(platform_build_dir)/lib/libplatsbi.a endif
@@ -471,12 +470,10 @@ all: $(targets-y) # Preserve all intermediate files .SECONDARY: +# Rules for lib/sbi sources $(build_dir)/lib/libsbi.a: $(libsbi-objs-path-y) $(call compile_ar,$@,$^) -$(build_dir)/lib/libsbiutils.a: $(libsbi-objs-path-y) $(libsbiutils-objs-path-y) - $(call compile_ar,$@,$^) - $(platform_build_dir)/lib/libplatsbi.a: $(libsbi-objs-path-y) $(libsbiutils-objs-path-y) $(platform-objs-path-y) $(call compile_ar,$@,$^)
@@ -500,22 +497,14 @@ $(build_dir)/%.dep: $(src_dir)/%.S $(build_dir)/%.o: $(src_dir)/%.S $(call compile_as,$@,$<) -$(build_dir)/%.dep: $(src_dir)/%.carray +# Rules for platform sources +$(platform_build_dir)/%.dep: $(platform_src_dir)/%.carray $(call compile_gen_dep,$@,.c,$< $(KCONFIG_CONFIG)) $(call compile_gen_dep,$@,.o,$(@:.dep=.c)) -$(build_dir)/%.c: $(src_dir)/%.carray +$(platform_build_dir)/%.c: $(platform_src_dir)/%.carray $(call compile_carray,$@,$<) -$(platform_build_dir)/%.bin: $(platform_build_dir)/%.elf - $(call compile_objcopy,$@,$<) - -$(platform_build_dir)/%.elf: $(platform_build_dir)/%.o $(platform_build_dir)/%.elf.ld $(platform_build_dir)/lib/libplatsbi.a - $(call compile_elf,$@,[email protected],$< $(platform_build_dir)/lib/libplatsbi.a) - -$(platform_build_dir)/%.ld: $(src_dir)/%.ldS - $(call compile_cpp,$@,$<) - $(platform_build_dir)/%.dep: $(platform_src_dir)/%.c $(call compile_cc_dep,$@,$<)
@@ -539,6 +528,23 @@ $(platform_build_dir)/%.c: $(platform_build_dir)/%.dtb $(platform_build_dir)/%.dtb: $(platform_src_dir)/%.dts $(call compile_dts,$@,$<) +# Rules for lib/utils and firmware sources +$(platform_build_dir)/%.bin: $(platform_build_dir)/%.elf + $(call compile_objcopy,$@,$<) + +$(platform_build_dir)/%.elf: $(platform_build_dir)/%.o $(platform_build_dir)/%.elf.ld $(platform_build_dir)/lib/libplatsbi.a + $(call compile_elf,$@,[email protected],$< $(platform_build_dir)/lib/libplatsbi.a) + +$(platform_build_dir)/%.ld: $(src_dir)/%.ldS + $(call compile_cpp,$@,$<) + +$(platform_build_dir)/%.dep: $(src_dir)/%.carray + $(call compile_gen_dep,$@,.c,$< $(KCONFIG_CONFIG)) + $(call compile_gen_dep,$@,.o,$(@:.dep=.c)) + +$(platform_build_dir)/%.c: $(src_dir)/%.carray + $(call compile_carray,$@,$<) + $(platform_build_dir)/%.dep: $(src_dir)/%.c $(call compile_cc_dep,$@,$<)
@@ -592,7 +598,6 @@ endif endif install_targets-y = install_libsbi -install_targets-y += install_libsbiutils ifdef PLATFORM install_targets-y += install_libplatsbi install_targets-y += install_firmwares
@@ -607,17 +612,12 @@ install_libsbi: $(build_dir)/lib/libsbi.a $(call inst_header_dir,$(install_root_dir)/$(install_include_path),$(include_dir)/sbi) $(call inst_file,$(install_root_dir)/$(install_lib_path)/libsbi.a,$(build_dir)/lib/libsbi.a) -.PHONY: install_libsbiutils -install_libsbiutils: $(build_dir)/lib/libsbiutils.a - $(call inst_header_dir,$(install_root_dir)/$(install_include_path),$(include_dir)/sbi_utils) - $(call inst_file,$(install_root_dir)/$(install_lib_path)/libsbiutils.a,$(build_dir)/lib/libsbiutils.a) - .PHONY: install_libplatsbi -install_libplatsbi: $(platform_build_dir)/lib/libplatsbi.a $(build_dir)/lib/libsbi.a $(build_dir)/lib/libsbiutils.a +install_libplatsbi: $(platform_build_dir)/lib/libplatsbi.a $(build_dir)/lib/libsbi.a $(call inst_file,$(install_root_dir)/$(install_lib_path)/opensbi/$(platform_subdir)/lib/libplatsbi.a,$(platform_build_dir)/lib/libplatsbi.a) .PHONY: install_firmwares -install_firmwares: $(platform_build_dir)/lib/libplatsbi.a $(build_dir)/lib/libsbi.a $(build_dir)/lib/libsbiutils.a $(firmware-bins-path-y) +install_firmwares: $(platform_build_dir)/lib/libplatsbi.a $(build_dir)/lib/libsbi.a $(firmware-bins-path-y) $(call inst_file_list,$(install_root_dir),$(build_dir),$(install_firmware_path)/$(platform_subdir)/firmware,$(firmware-elfs-path-y)) $(call inst_file_list,$(install_root_dir),$(build_dir),$(install_firmware_path)/$(platform_subdir)/firmware,$(firmware-bins-path-y))
docs/library_usage.md +1 -5
@@ -8,11 +8,7 @@ OpenSBI provides two types of static libraries: hooks for the execution of this interface must be provided by the firmware or bootloader linking with this library. This library is installed as *<install_directory>/lib/libsbi.a* -2. *libsbiutils.a* - A static library that will contain all common code required - by any platform supported in OpenSBI. It will be built by default and included - in libplatsbi.a. This library is installed as - *<install_directory>/lib/libsbiutils.a*. -3. *libplatsbi.a* - An example platform-specific static library integrating +2. *libplatsbi.a* - An example platform-specific static library integrating *libsbi.a* with platform-specific hooks. This library is available only for the platforms supported by OpenSBI. This library is installed as *<install_directory>/platform/<platform_subdir>/lib/libplatsbi.a*
scripts/create-binary-archive.sh +1 -1
@@ -118,7 +118,7 @@ build_opensbi() { # Build and install generic library echo "Build and install generic library XLEN=${BUILD_RISCV_XLEN}" echo "" - make -C "${BUILD_OPENSBI_SOURCE_PATH}" O="${BUILD_OUTPUT_PATH}/${BUILD_NAME}" I="${BUILD_OUTPUT_PATH}/${BUILD_ARCHIVE_NAME}" PLATFORM_RISCV_XLEN="${BUILD_RISCV_XLEN}" install_libsbi install_libsbiutils -j "${BUILD_NUM_THREADS}" + make -C "${BUILD_OPENSBI_SOURCE_PATH}" O="${BUILD_OUTPUT_PATH}/${BUILD_NAME}" I="${BUILD_OUTPUT_PATH}/${BUILD_ARCHIVE_NAME}" PLATFORM_RISCV_XLEN="${BUILD_RISCV_XLEN}" install_libsbi -j "${BUILD_NUM_THREADS}" echo "" # Build and install relevant platforms
Signature · 1 line
2.34.1
PATCH v2 3/14 lib: utils/serial: Use kconfig for enabling/disabling drivers
In reply to Anup PatelWe update serial drivers makefile to use kconfig for enabling/disabling drivers. To avoid compile errors, we also enable appropriate serial drivers for each platform.
--- include/sbi_utils/serial/fdt_serial.h | 8 +++ lib/utils/Kconfig | 6 +++ lib/utils/serial/Kconfig | 71 +++++++++++++++++++++++++++ lib/utils/serial/objects.mk | 44 ++++++++--------- platform/andes/ae350/Kconfig | 1 + platform/fpga/ariane/Kconfig | 1 + platform/fpga/openpiton/Kconfig | 1 + platform/generic/configs/defconfig | 8 +++ platform/kendryte/k210/Kconfig | 1 + platform/nuclei/ux600/Kconfig | 1 + platform/template/Kconfig | 1 + 11 files changed, 121 insertions(+), 22 deletions(-) create mode 100644 lib/utils/serial/Kconfig
include/sbi_utils/serial/fdt_serial.h +8 -0
@@ -12,6 +12,8 @@#include <sbi/sbi_types.h> +#ifdef CONFIG_FDT_SERIAL + struct fdt_serial { const struct fdt_match *match_table; int (*init)(void *fdt, int nodeoff, const struct fdt_match *match);
@@ -19,4 +21,10 @@ struct fdt_serial {int fdt_serial_init (void ); +#else + +static inline int fdt_serial_init (void ) {return 0 ; } + +#endif +#endif
lib/utils/Kconfig +6 -0
@@ -1 +1,7 @@ # SPDX-License-Identifier: BSD-2-Clause + +menu "Utils and Drivers Support" + +source "$OPENSBI_SRC_DIR/lib/utils/serial/Kconfig" + +endmenu
lib/utils/serial/Kconfig new file +71 -0
71 lines not on this page · raw message
lib/utils/serial/objects.mk +22 -22
55 lines not on this page · raw message
platform/andes/ae350/Kconfig +1 -0
@@ -2,4 +2,5 @@ config PLATFORM_ANDES_AE350 bool + select SERIAL_UART8250 default y
platform/fpga/ariane/Kconfig +1 -0
@@ -2,4 +2,5 @@ config PLATFORM_ARIANE_FPGA bool + select SERIAL_UART8250 default y
platform/fpga/openpiton/Kconfig +1 -0
@@ -2,4 +2,5 @@ config PLATFORM_OPENPITON_FPGA bool + select SERIAL_UART8250 default y
platform/generic/configs/defconfig +8 -0
@@ -0,0 +1,8 @@ +CONFIG_FDT_SERIAL=y +CONFIG_FDT_SERIAL_GAISLER=y +CONFIG_FDT_SERIAL_HTIF=y +CONFIG_FDT_SERIAL_SHAKTI=y +CONFIG_FDT_SERIAL_SIFIVE=y +CONFIG_FDT_SERIAL_LITEX=y +CONFIG_FDT_SERIAL_UART8250=y +CONFIG_FDT_SERIAL_XILINX_UARTLITE=y
platform/kendryte/k210/Kconfig +1 -0
@@ -2,4 +2,5 @@ config PLATFORM_KENDRYTE_K210 bool + select SERIAL_SIFIVE default y
platform/nuclei/ux600/Kconfig +1 -0
@@ -2,4 +2,5 @@ config PLATFORM_NUCLEI_UX600 bool + select SERIAL_SIFIVE default y
platform/template/Kconfig +1 -0
@@ -2,4 +2,5 @@ config PLATFORM_TEMPLATE bool + select SERIAL_UART8250 default y
Signature · 1 line
2.34.1
PATCH v2 4/14 lib: utils/reset: Use kconfig for enabling/disabling drivers
In reply to Anup PatelWe update reset drivers makefile to use kconfig for enabling/disabling drivers. To avoid compile errors, we also enable appropriate reset drivers for each platform.
--- include/sbi_utils/reset/fdt_reset.h | 12 +++++++++++ lib/utils/Kconfig | 2 ++ lib/utils/reset/Kconfig | 33 +++++++++++++++++++++++++++++ lib/utils/reset/objects.mk | 28 ++++++++++++------------ platform/generic/configs/defconfig | 6 ++++++ 5 files changed, 67 insertions(+), 14 deletions(-) create mode 100644 lib/utils/reset/Kconfig
include/sbi_utils/reset/fdt_reset.h +12 -0
@@ -17,6 +17,8 @@ struct fdt_reset {int (*init)(void *fdt,int nodeoff,const struct fdt_match *match); }; +#ifdef CONFIG_FDT_RESET +/** * fdt_reset_driver_init() - initialize reset driver based on the device-tree */
@@ -29,4 +31,14 @@ int fdt_reset_driver_init(void *fdt, struct fdt_reset *drv);*/ void fdt_reset_init (void ); +#else + +static inline int fdt_reset_driver_init (void *fdt,struct fdt_reset *drv) +{ +return 0 ; +} +static inline void fdt_reset_init (void ) { } + +#endif +#endif
lib/utils/Kconfig +2 -0
@@ -2,6 +2,8 @@ menu "Utils and Drivers Support" +source "$OPENSBI_SRC_DIR/lib/utils/reset/Kconfig" + source "$OPENSBI_SRC_DIR/lib/utils/serial/Kconfig" endmenu
lib/utils/reset/Kconfig new file +33 -0
@@ -0,0 +1,33 @@ +# SPDX-License-Identifier: BSD-2-Clause + +menu "System Reset Support" + +config FDT_RESET + bool "FDT based reset drivers" + default n + +if FDT_RESET + +config FDT_RESET_GPIO + bool "GPIO FDT reset driver" + default n + +config FDT_RESET_HTIF + bool "Host transfer interface (HTIF) FDT reset driver" + default n + +config FDT_RESET_SIFIVE_TEST + bool "SiFive Test FDT reset driver" + default n + +config FDT_RESET_SUNXI_WDT + bool "Sunxi WDT FDT reset driver" + default n + +config FDT_RESET_THEAD + bool "T-HEAD FDT reset driver" + default n + +endif + +endmenu
lib/utils/reset/objects.mk +14 -14
@@ -7,22 +7,22 @@ # Anup Patel <[email protected]> # -libsbiutils-objs-y += reset/fdt_reset.o -libsbiutils-objs-y += reset/fdt_reset_drivers.o +libsbiutils-objs-$(CONFIG_FDT_RESET) += reset/fdt_reset.o +libsbiutils-objs-$(CONFIG_FDT_RESET) += reset/fdt_reset_drivers.o -carray-fdt_reset_drivers-y += fdt_poweroff_gpio -carray-fdt_reset_drivers-y += fdt_reset_gpio -libsbiutils-objs-y += reset/fdt_reset_gpio.o +carray-fdt_reset_drivers-$(CONFIG_FDT_RESET_GPIO) += fdt_poweroff_gpio +carray-fdt_reset_drivers-$(CONFIG_FDT_RESET_GPIO) += fdt_reset_gpio +libsbiutils-objs-$(CONFIG_FDT_RESET_GPIO) += reset/fdt_reset_gpio.o -carray-fdt_reset_drivers-y += fdt_reset_htif -libsbiutils-objs-y += reset/fdt_reset_htif.o +carray-fdt_reset_drivers-$(CONFIG_FDT_RESET_HTIF) += fdt_reset_htif +libsbiutils-objs-$(CONFIG_FDT_RESET_HTIF) += reset/fdt_reset_htif.o -carray-fdt_reset_drivers-y += fdt_reset_sifive_test -libsbiutils-objs-y += reset/fdt_reset_sifive_test.o +carray-fdt_reset_drivers-$(CONFIG_FDT_RESET_SIFIVE_TEST) += fdt_reset_sifive_test +libsbiutils-objs-$(CONFIG_FDT_RESET_SIFIVE_TEST) += reset/fdt_reset_sifive_test.o -carray-fdt_reset_drivers-y += fdt_reset_sunxi_wdt -libsbiutils-objs-y += reset/fdt_reset_sunxi_wdt.o +carray-fdt_reset_drivers-$(CONFIG_FDT_RESET_SUNXI_WDT) += fdt_reset_sunxi_wdt +libsbiutils-objs-$(CONFIG_FDT_RESET_SUNXI_WDT) += reset/fdt_reset_sunxi_wdt.o -carray-fdt_reset_drivers-y += fdt_reset_thead -libsbiutils-objs-y += reset/fdt_reset_thead.o -libsbiutils-objs-y += reset/fdt_reset_thead_asm.o +carray-fdt_reset_drivers-$(CONFIG_FDT_RESET_THEAD) += fdt_reset_thead +libsbiutils-objs-$(CONFIG_FDT_RESET_THEAD) += reset/fdt_reset_thead.o +libsbiutils-objs-$(CONFIG_FDT_RESET_THEAD) += reset/fdt_reset_thead_asm.o
platform/generic/configs/defconfig +6 -0
@@ -1,3 +1,9 @@ +CONFIG_FDT_RESET=y +CONFIG_FDT_RESET_GPIO=y +CONFIG_FDT_RESET_HTIF=y +CONFIG_FDT_RESET_SIFIVE_TEST=y +CONFIG_FDT_RESET_SUNXI_WDT=y +CONFIG_FDT_RESET_THEAD=y CONFIG_FDT_SERIAL=y CONFIG_FDT_SERIAL_GAISLER=y CONFIG_FDT_SERIAL_HTIF=y
Signature · 1 line
2.34.1
PATCH v2 5/14 lib: utils/sys: Use kconfig for enabling/disabling drivers
In reply to Anup PatelWe update system drivers makefile to use kconfig for enabling/disabling drivers. To avoid compile errors, we also enable appropriate system drivers for each platform.
--- lib/utils/Kconfig | 2 ++ lib/utils/reset/Kconfig | 2 ++ lib/utils/serial/Kconfig | 1 + lib/utils/sys/Kconfig | 13 +++++++++++++ lib/utils/sys/objects.mk | 4 ++-- 5 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 lib/utils/sys/Kconfig
lib/utils/Kconfig +2 -0
@@ -6,4 +6,6 @@ source "$OPENSBI_SRC_DIR/lib/utils/reset/Kconfig" source "$OPENSBI_SRC_DIR/lib/utils/serial/Kconfig" +source "$OPENSBI_SRC_DIR/lib/utils/sys/Kconfig" + endmenu
lib/utils/reset/Kconfig +2 -0
@@ -14,10 +14,12 @@ config FDT_RESET_GPIO config FDT_RESET_HTIF bool "Host transfer interface (HTIF) FDT reset driver" + select SYS_HTIF default n config FDT_RESET_SIFIVE_TEST bool "SiFive Test FDT reset driver" + select SYS_SIFIVE_TEST default n config FDT_RESET_SUNXI_WDT
lib/utils/serial/Kconfig +1 -0
@@ -15,6 +15,7 @@ config FDT_SERIAL_GAISLER config FDT_SERIAL_HTIF bool "Host transfer interface (HTIF) UART FDT driver" + select SYS_HTIF default n config FDT_SERIAL_SHAKTI
lib/utils/sys/Kconfig new file +13 -0
@@ -0,0 +1,13 @@ +# SPDX-License-Identifier: BSD-2-Clause + +menu "System Device Support" + +config SYS_HTIF + bool "Host transfere interface (HTIF) support" + default n + +config SYS_SIFIVE_TEST + bool "SiFive test support" + default n + +endmenu
lib/utils/sys/objects.mk +2 -2
@@ -7,5 +7,5 @@ # Anup Patel <[email protected]> # -libsbiutils-objs-y += sys/htif.o -libsbiutils-objs-y += sys/sifive_test.o +libsbiutils-objs-$(CONFIG_SYS_HTIF) += sys/htif.o +libsbiutils-objs-$(CONFIG_SYS_SIFIVE_TEST) += sys/sifive_test.o
Signature · 1 line
2.34.1
PATCH v2 6/14 lib: utils/timer: Use kconfig for enabling/disabling drivers
In reply to Anup PatelWe update timer drivers makefile to use kconfig for enabling/disabling drivers. To avoid compile errors, we also enable appropriate timer drivers for each platform.
--- include/sbi_utils/timer/fdt_timer.h | 9 +++++++++ lib/utils/Kconfig | 2 ++ lib/utils/timer/Kconfig | 22 ++++++++++++++++++++++ lib/utils/timer/objects.mk | 10 +++++----- platform/fpga/ariane/Kconfig | 1 + platform/fpga/openpiton/Kconfig | 1 + platform/generic/configs/defconfig | 2 ++ platform/kendryte/k210/Kconfig | 1 + platform/nuclei/ux600/Kconfig | 1 + platform/template/Kconfig | 1 + 10 files changed, 45 insertions(+), 5 deletions(-) create mode 100644 lib/utils/timer/Kconfig
include/sbi_utils/timer/fdt_timer.h +9 -0
@@ -12,6 +12,8 @@#include <sbi/sbi_types.h> +#ifdef CONFIG_FDT_TIMER + struct fdt_timer { const struct fdt_match *match_table; int (*cold_init)(void *fdt, int nodeoff, const struct fdt_match *match);
@@ -23,4 +25,11 @@ void fdt_timer_exit(void);int fdt_timer_init (bool cold_boot); +#else + +static inline void fdt_timer_exit (void ) { } +static inline int fdt_timer_init (bool cold_boot) {return 0 ; } + +#endif +#endif
lib/utils/Kconfig +2 -0
@@ -8,4 +8,6 @@ source "$OPENSBI_SRC_DIR/lib/utils/serial/Kconfig" source "$OPENSBI_SRC_DIR/lib/utils/sys/Kconfig" +source "$OPENSBI_SRC_DIR/lib/utils/timer/Kconfig" + endmenu
lib/utils/timer/Kconfig new file +22 -0
@@ -0,0 +1,22 @@ +# SPDX-License-Identifier: BSD-2-Clause + +menu "Timer Device Support" + +config FDT_TIMER + bool "FDT based timer drivers" + default n + +if FDT_TIMER + +config FDT_TIMER_MTIMER + bool "ACLINT MTIMER FDT driver" + select TIMER_MTIMER + default n + +endif + +config TIMER_MTIMER + bool "ACLINT MTIMER support" + default n + +endmenu
lib/utils/timer/objects.mk +5 -5
@@ -7,10 +7,10 @@ # Anup Patel <[email protected]> # -libsbiutils-objs-y += timer/aclint_mtimer.o +libsbiutils-objs-$(CONFIG_TIMER_MTIMER) += timer/aclint_mtimer.o -libsbiutils-objs-y += timer/fdt_timer.o -libsbiutils-objs-y += timer/fdt_timer_drivers.o +libsbiutils-objs-$(CONFIG_FDT_TIMER) += timer/fdt_timer.o +libsbiutils-objs-$(CONFIG_FDT_TIMER) += timer/fdt_timer_drivers.o -carray-fdt_timer_drivers-y += fdt_timer_mtimer -libsbiutils-objs-y += timer/fdt_timer_mtimer.o +carray-fdt_timer_drivers-$(CONFIG_FDT_TIMER_MTIMER) += fdt_timer_mtimer +libsbiutils-objs-$(CONFIG_FDT_TIMER_MTIMER) += timer/fdt_timer_mtimer.o
platform/fpga/ariane/Kconfig +1 -0
@@ -3,4 +3,5 @@ config PLATFORM_ARIANE_FPGA bool select SERIAL_UART8250 + select TIMER_MTIMER default y
platform/fpga/openpiton/Kconfig +1 -0
@@ -3,4 +3,5 @@ config PLATFORM_OPENPITON_FPGA bool select SERIAL_UART8250 + select TIMER_MTIMER default y
platform/generic/configs/defconfig +2 -0
@@ -12,3 +12,5 @@ CONFIG_FDT_SERIAL_SIFIVE=y CONFIG_FDT_SERIAL_LITEX=y CONFIG_FDT_SERIAL_UART8250=y CONFIG_FDT_SERIAL_XILINX_UARTLITE=y +CONFIG_FDT_TIMER=y +CONFIG_FDT_TIMER_MTIMER=y
platform/kendryte/k210/Kconfig +1 -0
@@ -3,4 +3,5 @@ config PLATFORM_KENDRYTE_K210 bool select SERIAL_SIFIVE + select TIMER_MTIMER default y
platform/nuclei/ux600/Kconfig +1 -0
@@ -3,4 +3,5 @@ config PLATFORM_NUCLEI_UX600 bool select SERIAL_SIFIVE + select TIMER_MTIMER default y
platform/template/Kconfig +1 -0
@@ -3,4 +3,5 @@ config PLATFORM_TEMPLATE bool select SERIAL_UART8250 + select TIMER_MTIMER default y
Signature · 1 line
2.34.1
PATCH v2 7/14 lib: utils/ipi: Use kconfig for enabling/disabling drivers
In reply to Anup PatelWe update ipi drivers makefile to use kconfig for enabling/disabling drivers. To avoid compile errors, we also enable appropriate ipi drivers for each platform.
--- include/sbi_utils/ipi/fdt_ipi.h | 9 +++++++++ lib/utils/Kconfig | 2 ++ lib/utils/ipi/Kconfig | 22 ++++++++++++++++++++++ lib/utils/ipi/objects.mk | 10 +++++----- platform/fpga/ariane/Kconfig | 1 + platform/fpga/openpiton/Kconfig | 1 + platform/generic/configs/defconfig | 2 ++ platform/kendryte/k210/Kconfig | 1 + platform/nuclei/ux600/Kconfig | 1 + platform/template/Kconfig | 1 + 10 files changed, 45 insertions(+), 5 deletions(-) create mode 100644 lib/utils/ipi/Kconfig
include/sbi_utils/ipi/fdt_ipi.h +9 -0
@@ -12,6 +12,8 @@#include <sbi/sbi_types.h> +#ifdef CONFIG_FDT_IPI + struct fdt_ipi { const struct fdt_match *match_table; int (*cold_init)(void *fdt, int nodeoff, const struct fdt_match *match);
@@ -23,4 +25,11 @@ void fdt_ipi_exit(void);int fdt_ipi_init (bool cold_boot); +#else + +static inline void fdt_ipi_exit (void ) { } +static inline int fdt_ipi_init (bool cold_boot) {return 0 ; } + +#endif +#endif
lib/utils/Kconfig +2 -0
@@ -2,6 +2,8 @@ menu "Utils and Drivers Support" +source "$OPENSBI_SRC_DIR/lib/utils/ipi/Kconfig" + source "$OPENSBI_SRC_DIR/lib/utils/reset/Kconfig" source "$OPENSBI_SRC_DIR/lib/utils/serial/Kconfig"
lib/utils/ipi/Kconfig new file +22 -0
@@ -0,0 +1,22 @@ +# SPDX-License-Identifier: BSD-2-Clause + +menu "IPI Device Support" + +config FDT_IPI + bool "FDT based ipi drivers" + default n + +if FDT_IPI + +config FDT_IPI_MSWI + bool "ACLINT MSWI FDT driver" + select IPI_MSWI + default n + +endif + +config IPI_MSWI + bool "ACLINT MSWI support" + default n + +endmenu
lib/utils/ipi/objects.mk +5 -5
@@ -7,10 +7,10 @@ # Anup Patel <[email protected]> # -libsbiutils-objs-y += ipi/aclint_mswi.o +libsbiutils-objs-$(CONFIG_IPI_MSWI) += ipi/aclint_mswi.o -libsbiutils-objs-y += ipi/fdt_ipi.o -libsbiutils-objs-y += ipi/fdt_ipi_drivers.o +libsbiutils-objs-$(CONFIG_FDT_IPI) += ipi/fdt_ipi.o +libsbiutils-objs-$(CONFIG_FDT_IPI) += ipi/fdt_ipi_drivers.o -carray-fdt_ipi_drivers-y += fdt_ipi_mswi -libsbiutils-objs-y += ipi/fdt_ipi_mswi.o +carray-fdt_ipi_drivers-$(CONFIG_FDT_IPI_MSWI) += fdt_ipi_mswi +libsbiutils-objs-$(CONFIG_FDT_IPI_MSWI) += ipi/fdt_ipi_mswi.o
platform/fpga/ariane/Kconfig +1 -0
@@ -2,6 +2,7 @@ config PLATFORM_ARIANE_FPGA bool + select IPI_MSWI select SERIAL_UART8250 select TIMER_MTIMER default y
platform/fpga/openpiton/Kconfig +1 -0
@@ -2,6 +2,7 @@ config PLATFORM_OPENPITON_FPGA bool + select IPI_MSWI select SERIAL_UART8250 select TIMER_MTIMER default y
platform/generic/configs/defconfig +2 -0
@@ -1,3 +1,5 @@ +CONFIG_FDT_IPI=y +CONFIG_FDT_IPI_MSWI=y CONFIG_FDT_RESET=y CONFIG_FDT_RESET_GPIO=y CONFIG_FDT_RESET_HTIF=y
platform/kendryte/k210/Kconfig +1 -0
@@ -2,6 +2,7 @@ config PLATFORM_KENDRYTE_K210 bool + select IPI_MSWI select SERIAL_SIFIVE select TIMER_MTIMER default y
platform/nuclei/ux600/Kconfig +1 -0
@@ -2,6 +2,7 @@ config PLATFORM_NUCLEI_UX600 bool + select IPI_MSWI select SERIAL_SIFIVE select TIMER_MTIMER default y
platform/template/Kconfig +1 -0
@@ -2,6 +2,7 @@ config PLATFORM_TEMPLATE bool + select IPI_MSWI select SERIAL_UART8250 select TIMER_MTIMER default y
Signature · 1 line
2.34.1
PATCH v2 8/14 lib: utils/irqchip: Use kconfig for enabling/disabling drivers
In reply to Anup PatelWe update irqchip drivers makefile to use kconfig for enabling/disabling drivers. To avoid compile errors, we also enable appropriate irqchip drivers for each platform.
--- include/sbi_utils/irqchip/fdt_irqchip.h | 10 +++++++ include/sbi_utils/irqchip/imsic.h | 10 +++++++ lib/utils/Kconfig | 2 ++ lib/utils/irqchip/Kconfig | 40 +++++++++++++++++++++++++ lib/utils/irqchip/objects.mk | 22 +++++++------- platform/andes/ae350/Kconfig | 1 + platform/fpga/ariane/Kconfig | 1 + platform/fpga/openpiton/Kconfig | 1 + platform/generic/configs/defconfig | 4 +++ platform/kendryte/k210/Kconfig | 1 + platform/nuclei/ux600/Kconfig | 1 + platform/template/Kconfig | 1 + 12 files changed, 83 insertions(+), 11 deletions(-) create mode 100644 lib/utils/irqchip/Kconfig
include/sbi_utils/irqchip/fdt_irqchip.h +10 -0
@@ -12,6 +12,8 @@#include <sbi/sbi_types.h> +#ifdef CONFIG_FDT_IRQCHIP + struct fdt_irqchip { const struct fdt_match *match_table; int (*cold_init)(void *fdt, int nodeoff, const struct fdt_match *match);
@@ -23,4 +25,12 @@ void fdt_irqchip_exit(void);int fdt_irqchip_init (bool cold_boot); +#else + +static inline void fdt_irqchip_exit (void ) { } + +static inline int fdt_irqchip_init (bool cold_boot) {return 0 ; } + +#endif +#endif
include/sbi_utils/irqchip/imsic.h +10 -0
@@ -33,6 +33,8 @@ struct imsic_data {struct imsic_regs regs[IMSIC_MAX_REGS ]; }; +#ifdef CONFIG_IRQCHIP_IMSIC +int imsic_map_hartid_to_data (u32 hartid,struct imsic_data *imsic,int file);struct imsic_data *imsic_get_data (u32 hartid);
@@ -47,4 +49,12 @@ int imsic_data_check(struct imsic_data *imsic);int imsic_cold_irqchip_init (struct imsic_data *imsic); +#else + +static inline void imsic_local_irqchip_init (void ) { } + +static inline int imsic_data_check (struct imsic_data *imsic) {return 0 ; } + +#endif +#endif
lib/utils/Kconfig +2 -0
@@ -4,6 +4,8 @@ menu "Utils and Drivers Support" source "$OPENSBI_SRC_DIR/lib/utils/ipi/Kconfig" +source "$OPENSBI_SRC_DIR/lib/utils/irqchip/Kconfig" + source "$OPENSBI_SRC_DIR/lib/utils/reset/Kconfig" source "$OPENSBI_SRC_DIR/lib/utils/serial/Kconfig"
lib/utils/irqchip/Kconfig new file +40 -0
@@ -0,0 +1,40 @@ +# SPDX-License-Identifier: BSD-2-Clause + +menu "Interrupt Controller Support" + +config FDT_IRQCHIP + bool "FDT based interrupt controller drivers" + default n + +if FDT_IRQCHIP + +config FDT_IRQCHIP_APLIC + bool "Advanced Platform Level Interrupt Controller (APLIC) FDT driver" + select IRQCHIP_APLIC + default n + +config FDT_IRQCHIP_IMSIC + bool "Incoming Message Signalled Interrupt Controller (IMSIC) FDT driver" + select IRQCHIP_IMSIC + default n + +config FDT_IRQCHIP_PLIC + bool "Platform Level Interrupt Controller (PLIC) FDT driver" + select IRQCHIP_PLIC + default n + +endif + +config IRQCHIP_APLIC + bool "Advanced Platform Level Interrupt Controller (APLIC) support" + default n + +config IRQCHIP_IMSIC + bool "Incoming Message Signalled Interrupt Controller (IMSIC) support" + default n + +config IRQCHIP_PLIC + bool "Platform Level Interrupt Controller (PLIC) support" + default n + +endmenu
lib/utils/irqchip/objects.mk +11 -11
@@ -7,18 +7,18 @@ # Anup Patel <[email protected]> # -libsbiutils-objs-y += irqchip/fdt_irqchip.o -libsbiutils-objs-y += irqchip/fdt_irqchip_drivers.o +libsbiutils-objs-$(CONFIG_FDT_IRQCHIP) += irqchip/fdt_irqchip.o +libsbiutils-objs-$(CONFIG_FDT_IRQCHIP) += irqchip/fdt_irqchip_drivers.o -carray-fdt_irqchip_drivers-y += fdt_irqchip_aplic -libsbiutils-objs-y += irqchip/fdt_irqchip_aplic.o +carray-fdt_irqchip_drivers-$(CONFIG_FDT_IRQCHIP_APLIC) += fdt_irqchip_aplic +libsbiutils-objs-$(CONFIG_FDT_IRQCHIP_APLIC) += irqchip/fdt_irqchip_aplic.o -carray-fdt_irqchip_drivers-y += fdt_irqchip_imsic -libsbiutils-objs-y += irqchip/fdt_irqchip_imsic.o +carray-fdt_irqchip_drivers-$(CONFIG_FDT_IRQCHIP_IMSIC) += fdt_irqchip_imsic +libsbiutils-objs-$(CONFIG_FDT_IRQCHIP_IMSIC) += irqchip/fdt_irqchip_imsic.o -carray-fdt_irqchip_drivers-y += fdt_irqchip_plic -libsbiutils-objs-y += irqchip/fdt_irqchip_plic.o +carray-fdt_irqchip_drivers-$(CONFIG_FDT_IRQCHIP_PLIC) += fdt_irqchip_plic +libsbiutils-objs-$(CONFIG_FDT_IRQCHIP_PLIC) += irqchip/fdt_irqchip_plic.o -libsbiutils-objs-y += irqchip/aplic.o -libsbiutils-objs-y += irqchip/imsic.o -libsbiutils-objs-y += irqchip/plic.o +libsbiutils-objs-$(CONFIG_IRQCHIP_APLIC) += irqchip/aplic.o +libsbiutils-objs-$(CONFIG_IRQCHIP_IMSIC) += irqchip/imsic.o +libsbiutils-objs-$(CONFIG_IRQCHIP_PLIC) += irqchip/plic.o
platform/andes/ae350/Kconfig +1 -0
@@ -2,5 +2,6 @@ config PLATFORM_ANDES_AE350 bool + select IRQCHIP_PLIC select SERIAL_UART8250 default y
platform/fpga/ariane/Kconfig +1 -0
@@ -3,6 +3,7 @@ config PLATFORM_ARIANE_FPGA bool select IPI_MSWI + select IRQCHIP_PLIC select SERIAL_UART8250 select TIMER_MTIMER default y
platform/fpga/openpiton/Kconfig +1 -0
@@ -3,6 +3,7 @@ config PLATFORM_OPENPITON_FPGA bool select IPI_MSWI + select IRQCHIP_PLIC select SERIAL_UART8250 select TIMER_MTIMER default y
platform/generic/configs/defconfig +4 -0
@@ -1,5 +1,9 @@ CONFIG_FDT_IPI=y CONFIG_FDT_IPI_MSWI=y +CONFIG_FDT_IRQCHIP=y +CONFIG_FDT_IRQCHIP_APLIC=y +CONFIG_FDT_IRQCHIP_IMSIC=y +CONFIG_FDT_IRQCHIP_PLIC=y CONFIG_FDT_RESET=y CONFIG_FDT_RESET_GPIO=y CONFIG_FDT_RESET_HTIF=y
platform/kendryte/k210/Kconfig +1 -0
@@ -3,6 +3,7 @@ config PLATFORM_KENDRYTE_K210 bool select IPI_MSWI + select IRQCHIP_PLIC select SERIAL_SIFIVE select TIMER_MTIMER default y
platform/nuclei/ux600/Kconfig +1 -0
@@ -3,6 +3,7 @@ config PLATFORM_NUCLEI_UX600 bool select IPI_MSWI + select IRQCHIP_PLIC select SERIAL_SIFIVE select TIMER_MTIMER default y
platform/template/Kconfig +1 -0
@@ -3,6 +3,7 @@ config PLATFORM_TEMPLATE bool select IPI_MSWI + select IRQCHIP_PLIC select SERIAL_UART8250 select TIMER_MTIMER default y
Signature · 1 line
2.34.1
PATCH v2 9/14 lib: utils/i2c: Use kconfig for enabling/disabling drivers
In reply to Anup PatelWe update i2c drivers makefile to use kconfig for enabling/disabling drivers. To avoid compile errors, we also enable appropriate i2c drivers for each platform.
--- lib/utils/Kconfig | 2 ++ lib/utils/i2c/Kconfig | 22 ++++++++++++++++++++++ lib/utils/i2c/objects.mk | 10 +++++----- platform/generic/configs/defconfig | 2 ++ 4 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 lib/utils/i2c/Kconfig
lib/utils/Kconfig +2 -0
@@ -2,6 +2,8 @@ menu "Utils and Drivers Support" +source "$OPENSBI_SRC_DIR/lib/utils/i2c/Kconfig" + source "$OPENSBI_SRC_DIR/lib/utils/ipi/Kconfig" source "$OPENSBI_SRC_DIR/lib/utils/irqchip/Kconfig"
lib/utils/i2c/Kconfig new file +22 -0
@@ -0,0 +1,22 @@ +# SPDX-License-Identifier: BSD-2-Clause + +menu "I2C Support" + +config FDT_I2C + bool "FDT based I2C drivers" + select I2C + default n + +if FDT_I2C + +config FDT_I2C_SIFIVE + bool "SiFive I2C FDT driver" + default n + +endif + +config I2C + bool "I2C support" + default n + +endmenu
lib/utils/i2c/objects.mk +5 -5
@@ -7,10 +7,10 @@ # Nikita Shubin <[email protected]> # -libsbiutils-objs-y += i2c/i2c.o +libsbiutils-objs-$(CONFIG_I2C) += i2c/i2c.o -libsbiutils-objs-y += i2c/fdt_i2c.o -libsbiutils-objs-y += i2c/fdt_i2c_adapter_drivers.o +libsbiutils-objs-$(CONFIG_FDT_I2C) += i2c/fdt_i2c.o +libsbiutils-objs-$(CONFIG_FDT_I2C) += i2c/fdt_i2c_adapter_drivers.o -carray-fdt_i2c_adapter_drivers-y += fdt_i2c_adapter_sifive -libsbiutils-objs-y += i2c/fdt_i2c_sifive.o +carray-fdt_i2c_adapter_drivers-$(CONFIG_FDT_I2C_SIFIVE) += fdt_i2c_adapter_sifive +libsbiutils-objs-$(CONFIG_FDT_I2C_SIFIVE) += i2c/fdt_i2c_sifive.o
platform/generic/configs/defconfig +2 -0
@@ -1,3 +1,5 @@ +CONFIG_FDT_I2C=y +CONFIG_FDT_I2C_SIFIVE=y CONFIG_FDT_IPI=y CONFIG_FDT_IPI_MSWI=y CONFIG_FDT_IRQCHIP=y
Signature · 1 line
2.34.1
PATCH v2 10/14 lib: utils/gpio: Use kconfig for enabling/disabling drivers
In reply to Anup PatelWe update gpio drivers makefile to use kconfig for enabling/disabling drivers. To avoid compile errors, we also enable appropriate gpio drivers for each platform.
--- lib/utils/Kconfig | 2 ++ lib/utils/gpio/Kconfig | 22 ++++++++++++++++++++++ lib/utils/gpio/objects.mk | 10 +++++----- lib/utils/reset/Kconfig | 1 + platform/generic/configs/defconfig | 2 ++ 5 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 lib/utils/gpio/Kconfig
lib/utils/Kconfig +2 -0
@@ -2,6 +2,8 @@ menu "Utils and Drivers Support" +source "$OPENSBI_SRC_DIR/lib/utils/gpio/Kconfig" + source "$OPENSBI_SRC_DIR/lib/utils/i2c/Kconfig" source "$OPENSBI_SRC_DIR/lib/utils/ipi/Kconfig"
lib/utils/gpio/Kconfig new file +22 -0
@@ -0,0 +1,22 @@ +# SPDX-License-Identifier: BSD-2-Clause + +menu "GPIO Support" + +config FDT_GPIO + bool "FDT based GPIO drivers" + select GPIO + default n + +if FDT_GPIO + +config FDT_GPIO_SIFIVE + bool "SiFive GPIO FDT driver" + default n + +endif + +config GPIO + bool "GPIO support" + default n + +endmenu
lib/utils/gpio/objects.mk +5 -5
@@ -7,10 +7,10 @@ # Anup Patel <[email protected]> # -libsbiutils-objs-y += gpio/fdt_gpio.o -libsbiutils-objs-y += gpio/fdt_gpio_drivers.o +libsbiutils-objs-$(CONFIG_FDT_GPIO) += gpio/fdt_gpio.o +libsbiutils-objs-$(CONFIG_FDT_GPIO) += gpio/fdt_gpio_drivers.o -carray-fdt_gpio_drivers-y += fdt_gpio_sifive -libsbiutils-objs-y += gpio/fdt_gpio_sifive.o +carray-fdt_gpio_drivers-$(CONFIG_FDT_GPIO_SIFIVE) += fdt_gpio_sifive +libsbiutils-objs-$(CONFIG_FDT_GPIO_SIFIVE) += gpio/fdt_gpio_sifive.o -libsbiutils-objs-y += gpio/gpio.o +libsbiutils-objs-$(CONFIG_GPIO) += gpio/gpio.o
lib/utils/reset/Kconfig +1 -0
@@ -10,6 +10,7 @@ if FDT_RESET config FDT_RESET_GPIO bool "GPIO FDT reset driver" + depends on FDT_GPIO default n config FDT_RESET_HTIF
platform/generic/configs/defconfig +2 -0
@@ -1,3 +1,5 @@ +CONFIG_FDT_GPIO=y +CONFIG_FDT_GPIO_SIFIVE=y CONFIG_FDT_I2C=y CONFIG_FDT_I2C_SIFIVE=y CONFIG_FDT_IPI=y
Signature · 1 line
2.34.1
PATCH v2 11/14 lib: utils/fdt: Use kconfig for enabling/disabling
In reply to Anup PatelWe update FDT support makefile to use kconfig for enabling/disabling. To avoid compilation errors, we also enable FDT for each platform.
---
include/sbi_utils/fdt/fdt_domain.h | 9 +++++++++
include/sbi_utils/fdt/fdt_pmu.h | 10 ++++++++++
lib/utils/Kconfig | 4 ++++
lib/utils/fdt/Kconfig | 18 ++++++++++++++++++
lib/utils/fdt/objects.mk | 8 ++++----
lib/utils/gpio/Kconfig | 1 +
lib/utils/i2c/Kconfig | 1 +
lib/utils/ipi/Kconfig | 1 +
lib/utils/irqchip/Kconfig | 1 +
{platform/generic => lib/utils/libfdt}/Kconfig | 4 ++--
lib/utils/libfdt/objects.mk | 4 ++--
lib/utils/reset/Kconfig | 1 +
lib/utils/serial/Kconfig | 1 +
lib/utils/timer/Kconfig | 1 +
platform/andes/ae350/Kconfig | 1 +
platform/fpga/ariane/Kconfig | 1 +
platform/fpga/openpiton/Kconfig | 1 +
platform/generic/Kconfig | 3 +++
platform/kendryte/k210/Kconfig | 1 +
platform/nuclei/ux600/Kconfig | 1 +
platform/nuclei/ux600/platform.c | 1 -
21 files changed, 64 insertions(+), 9 deletions(-)
create mode 100644 lib/utils/fdt/Kconfig
copy {platform/generic => lib/utils/libfdt}/Kconfig (57%)include/sbi_utils/fdt/fdt_domain.h +9 -0
@@ -13,6 +13,8 @@#include <sbi/sbi_types.h> +#ifdef CONFIG_FDT_DOMAIN +struct sbi_domain ;/**
@@ -70,4 +72,11 @@ void fdt_domain_fixup(void *fdt);*/ int fdt_domains_populate (void *fdt); +#else + +static inline void fdt_domain_fixup (void *fdt) { } +static inline int fdt_domains_populate (void *fdt) {return 0 ; } + +#endif +#endif /* __FDT_DOMAIN_H__ */
include/sbi_utils/fdt/fdt_pmu.h +10 -0
@@ -13,6 +13,8 @@#include <sbi/sbi_types.h> +#ifdef CONFIG_FDT_PMU +/** * Fix up the PMU node in the device tree *
@@ -43,4 +45,12 @@ int fdt_pmu_setup(void *fdt);*/ uint64_t fdt_pmu_get_select_value (uint32_t event_idx); +#else + +static inline void fdt_pmu_fixup (void *fdt) { } +static inline int fdt_pmu_setup (void *fdt) {return 0 ; } +static inline uint64_t fdt_pmu_get_select_value (uint32_t event_idx) {return 0 ; } + +#endif +#endif
lib/utils/Kconfig +4 -0
@@ -2,6 +2,8 @@ menu "Utils and Drivers Support" +source "$OPENSBI_SRC_DIR/lib/utils/fdt/Kconfig" + source "$OPENSBI_SRC_DIR/lib/utils/gpio/Kconfig" source "$OPENSBI_SRC_DIR/lib/utils/i2c/Kconfig"
@@ -10,6 +12,8 @@ source "$OPENSBI_SRC_DIR/lib/utils/ipi/Kconfig" source "$OPENSBI_SRC_DIR/lib/utils/irqchip/Kconfig" +source "$OPENSBI_SRC_DIR/lib/utils/libfdt/Kconfig" + source "$OPENSBI_SRC_DIR/lib/utils/reset/Kconfig" source "$OPENSBI_SRC_DIR/lib/utils/serial/Kconfig"
lib/utils/fdt/Kconfig new file +18 -0
@@ -0,0 +1,18 @@ +# SPDX-License-Identifier: BSD-2-Clause + +menuconfig FDT + bool "Flattened Device Tree (FDT) support" + select LIBFDT + default n + +if FDT + +config FDT_DOMAIN + bool "FDT domain support" + default n + +config FDT_PMU + bool "FDT performance monitoring unit (PMU) support" + default n + +endif
lib/utils/fdt/objects.mk +4 -4
@@ -4,7 +4,7 @@ # Copyright (C) 2020 Bin Meng <[email protected]> # -libsbiutils-objs-y += fdt/fdt_domain.o -libsbiutils-objs-y += fdt/fdt_pmu.o -libsbiutils-objs-y += fdt/fdt_helper.o -libsbiutils-objs-y += fdt/fdt_fixup.o +libsbiutils-objs-$(CONFIG_FDT_DOMAIN) += fdt/fdt_domain.o +libsbiutils-objs-$(CONFIG_FDT_PMU) += fdt/fdt_pmu.o +libsbiutils-objs-$(CONFIG_FDT) += fdt/fdt_helper.o +libsbiutils-objs-$(CONFIG_FDT) += fdt/fdt_fixup.o
lib/utils/gpio/Kconfig +1 -0
@@ -4,6 +4,7 @@ menu "GPIO Support" config FDT_GPIO bool "FDT based GPIO drivers" + depends on FDT select GPIO default n
lib/utils/i2c/Kconfig +1 -0
@@ -4,6 +4,7 @@ menu "I2C Support" config FDT_I2C bool "FDT based I2C drivers" + depends on FDT select I2C default n
lib/utils/ipi/Kconfig +1 -0
@@ -4,6 +4,7 @@ menu "IPI Device Support" config FDT_IPI bool "FDT based ipi drivers" + depends on FDT default n if FDT_IPI
lib/utils/irqchip/Kconfig +1 -0
@@ -4,6 +4,7 @@ menu "Interrupt Controller Support" config FDT_IRQCHIP bool "FDT based interrupt controller drivers" + depends on FDT default n if FDT_IRQCHIP
lib/utils/libfdt/Kconfig renamed from platform/generic/Kconfig +2 -2
@@ -1,5 +1,5 @@ # SPDX-License-Identifier: BSD-2-Clause -config PLATFORM_GENERIC +config LIBFDT bool - default y + default n
lib/utils/libfdt/objects.mk +2 -2
@@ -12,5 +12,5 @@ libfdt_files = fdt.o fdt_addresses.o fdt_check.o fdt_empty_tree.o fdt_ro.o fdt_r $(foreach file, $(libfdt_files), \ $(eval CFLAGS_$(file) = -I$(src)/../../utils/libfdt)) -libsbiutils-objs-y += $(addprefix libfdt/,$(libfdt_files)) -libsbiutils-genflags-y += -I$(libsbiutils_dir)/libfdt/ +libsbiutils-objs-$(CONFIG_LIBFDT) += $(addprefix libfdt/,$(libfdt_files)) +libsbiutils-genflags-$(CONFIG_LIBFDT) += -I$(libsbiutils_dir)/libfdt/
lib/utils/reset/Kconfig +1 -0
@@ -4,6 +4,7 @@ menu "System Reset Support" config FDT_RESET bool "FDT based reset drivers" + depends on FDT default n if FDT_RESET
lib/utils/serial/Kconfig +1 -0
@@ -4,6 +4,7 @@ menu "Serial Device Support" config FDT_SERIAL bool "FDT based serial drivers" + depends on FDT default n if FDT_SERIAL
lib/utils/timer/Kconfig +1 -0
@@ -4,6 +4,7 @@ menu "Timer Device Support" config FDT_TIMER bool "FDT based timer drivers" + depends on FDT default n if FDT_TIMER
platform/andes/ae350/Kconfig +1 -0
@@ -2,6 +2,7 @@ config PLATFORM_ANDES_AE350 bool + select FDT select IRQCHIP_PLIC select SERIAL_UART8250 default y
platform/fpga/ariane/Kconfig +1 -0
@@ -2,6 +2,7 @@ config PLATFORM_ARIANE_FPGA bool + select FDT select IPI_MSWI select IRQCHIP_PLIC select SERIAL_UART8250
platform/fpga/openpiton/Kconfig +1 -0
@@ -2,6 +2,7 @@ config PLATFORM_OPENPITON_FPGA bool + select FDT select IPI_MSWI select IRQCHIP_PLIC select SERIAL_UART8250
platform/generic/Kconfig +3 -0
@@ -2,4 +2,7 @@ config PLATFORM_GENERIC bool + select FDT + select FDT_DOMAIN + select FDT_PMU default y
platform/kendryte/k210/Kconfig +1 -0
@@ -2,6 +2,7 @@ config PLATFORM_KENDRYTE_K210 bool + select FDT select IPI_MSWI select IRQCHIP_PLIC select SERIAL_SIFIVE
platform/nuclei/ux600/Kconfig +1 -0
@@ -2,6 +2,7 @@ config PLATFORM_NUCLEI_UX600 bool + select FDT select IPI_MSWI select IRQCHIP_PLIC select SERIAL_SIFIVE
platform/nuclei/ux600/platform.c +0 -1
@@ -8,7 +8,6 @@* hqfang <[email protected]> */ -#include <libfdt.h> #include <sbi/riscv_asm.h> #include <sbi/riscv_io.h> #include <sbi/riscv_encoding.h>
Signature · 1 line
2.34.1
PATCH v2 12/14 platform: generic: Use kconfig for enabling/disabling overrides
In reply to Anup PatelWe update generic platform to use kconfig for enabling/disabling platform overrides. We also enable all platform overrides in generic platform defconfig.
--- platform/generic/Kconfig | 18 ++++++++++++++++++ platform/generic/allwinner/objects.mk | 4 ++-- platform/generic/configs/defconfig | 3 +++ platform/generic/sifive/objects.mk | 8 ++++---- 4 files changed, 27 insertions(+), 6 deletions(-)
platform/generic/Kconfig +18 -0
@@ -6,3 +6,21 @@ config PLATFORM_GENERIC select FDT_DOMAIN select FDT_PMU default y + +if PLATFORM_GENERIC + +config PLATFORM_ALLWINNER_D1 + bool "Allwinner D1 support" + depends on FDT_IRQCHIP_PLIC + default n + +config PLATFORM_SIFIVE_FU540 + bool "SiFive FU540 support" + default n + +config PLATFORM_SIFIVE_FU740 + bool "SiFive FU740 support" + depends on FDT_RESET && FDT_I2C + default n + +endif
platform/generic/allwinner/objects.mk +2 -2
@@ -2,5 +2,5 @@ # SPDX-License-Identifier: BSD-2-Clause # -carray-platform_override_modules-y += sun20i_d1 -platform-objs-y += allwinner/sun20i-d1.o +carray-platform_override_modules-$(CONFIG_PLATFORM_ALLWINNER_D1) += sun20i_d1 +platform-objs-$(CONFIG_PLATFORM_ALLWINNER_D1) += allwinner/sun20i-d1.o
platform/generic/configs/defconfig +3 -0
@@ -1,3 +1,6 @@ +CONFIG_PLATFORM_ALLWINNER_D1=y +CONFIG_PLATFORM_SIFIVE_FU540=y +CONFIG_PLATFORM_SIFIVE_FU740=y CONFIG_FDT_GPIO=y CONFIG_FDT_GPIO_SIFIVE=y CONFIG_FDT_I2C=y
platform/generic/sifive/objects.mk +4 -4
@@ -2,8 +2,8 @@ # SPDX-License-Identifier: BSD-2-Clause # -carray-platform_override_modules-y += sifive_fu540 -platform-objs-y += sifive/fu540.o +carray-platform_override_modules-$(CONFIG_PLATFORM_SIFIVE_FU540) += sifive_fu540 +platform-objs-$(CONFIG_PLATFORM_SIFIVE_FU540) += sifive/fu540.o -carray-platform_override_modules-y += sifive_fu740 -platform-objs-y += sifive/fu740.o +carray-platform_override_modules-$(CONFIG_PLATFORM_SIFIVE_FU740) += sifive_fu740 +platform-objs-$(CONFIG_PLATFORM_SIFIVE_FU740) += sifive/fu740.o
Signature · 1 line
2.34.1
PATCH v2 13/14 platform: Remove redundant config.mk from all platforms
In reply to Anup PatelThe options defined in config.mk can be specified in objects.mk of each platform so let us remove config.mk from all platforms.
--- Makefile | 4 +- platform/andes/ae350/config.mk | 36 -------------- platform/andes/ae350/objects.mk | 29 +++++++++++ platform/fpga/ariane/config.mk | 36 -------------- platform/fpga/ariane/objects.mk | 35 ++++++++++++++ platform/fpga/openpiton/config.mk | 35 -------------- platform/fpga/openpiton/objects.mk | 35 ++++++++++++++ platform/generic/config.mk | 40 ---------------- platform/generic/objects.mk | 33 +++++++++++++ platform/kendryte/k210/config.mk | 19 -------- platform/kendryte/k210/objects.mk | 12 +++++ platform/nuclei/ux600/config.mk | 30 ------------ platform/nuclei/ux600/objects.mk | 22 +++++++++ platform/template/config.mk | 77 ------------------------------ platform/template/objects.mk | 72 ++++++++++++++++++++++++++++ platform/template/platform.c | 2 +- 16 files changed, 240 insertions(+), 277 deletions(-) delete mode 100644 platform/andes/ae350/config.mk delete mode 100644 platform/fpga/ariane/config.mk delete mode 100644 platform/fpga/openpiton/config.mk delete mode 100644 platform/generic/config.mk delete mode 100644 platform/kendryte/k210/config.mk delete mode 100644 platform/nuclei/ux600/config.mk delete mode 100644 platform/template/config.mk
Makefile +1 -3
@@ -203,7 +203,7 @@ firmware-object-mks=$(shell if [ -d $(firmware_dir) ]; then find $(firmware_dir) .PHONY: all all: -# Include platform specific .config and config.mk +# Include platform specific .config ifdef PLATFORM .PHONY: menuconfig menuconfig: $(platform_src_dir)/Kconfig $(src_dir)/Kconfig
@@ -226,8 +226,6 @@ $(KCONFIG_CONFIG): $(platform_src_dir)/configs/$(PLATFORM_DEFCONFIG) $(platform_ $(KCONFIG_AUTOCONF_CMD): $(KCONFIG_CONFIG) include $(KCONFIG_CONFIG) include $(KCONFIG_AUTOCONF_CMD) - -include $(platform_src_dir)/config.mk endif # Include all object.mk files
platform/andes/ae350/config.mk deleted +0 -36
@@ -1,36 +0,0 @@ -# -# SPDX-License-Identifier: BSD-2-Clause -# -# Copyright (c) 2019 Andes Technology Corporation -# -# Authors: -# Zong Li <[email protected]> -# Nylon Chen <[email protected]> - -# Compiler flags -platform-cppflags-y = -platform-cflags-y = -platform-asflags-y = -platform-ldflags-y = - -# Blobs to build -FW_TEXT_START=0x00000000 - -FW_DYNAMIC=y - -FW_JUMP=y -ifeq ($(PLATFORM_RISCV_XLEN), 32) - FW_JUMP_ADDR=0x400000 -else - FW_JUMP_ADDR=0x200000 -endif -FW_JUMP_FDT_ADDR=0x2000000 - -FW_PAYLOAD=y -ifeq ($(PLATFORM_RISCV_XLEN), 32) - FW_PAYLOAD_OFFSET=0x400000 -else - FW_PAYLOAD_OFFSET=0x200000 -endif - -FW_PAYLOAD_FDT_ADDR=0x2000000
platform/andes/ae350/objects.mk +29 -0
@@ -8,4 +8,33 @@ # Nylon Chen <[email protected]> # +# Compiler flags +platform-cppflags-y = +platform-cflags-y = +platform-asflags-y = +platform-ldflags-y = + +# Objects to build platform-objs-y += cache.o platform.o plicsw.o plmt.o + +# Blobs to build +FW_TEXT_START=0x00000000 + +FW_DYNAMIC=y + +FW_JUMP=y +ifeq ($(PLATFORM_RISCV_XLEN), 32) + FW_JUMP_ADDR=0x400000 +else + FW_JUMP_ADDR=0x200000 +endif +FW_JUMP_FDT_ADDR=0x2000000 + +FW_PAYLOAD=y +ifeq ($(PLATFORM_RISCV_XLEN), 32) + FW_PAYLOAD_OFFSET=0x400000 +else + FW_PAYLOAD_OFFSET=0x200000 +endif + +FW_PAYLOAD_FDT_ADDR=0x2000000
platform/fpga/ariane/config.mk deleted +0 -36
@@ -1,36 +0,0 @@ -# -# SPDX-License-Identifier: BSD-2-Clause -# -# Copyright (C) 2019 FORTH-ICS/CARV -# Panagiotis Peristerakis <[email protected]> -# - -#for more infos, check out /platform/template/config.mk - -PLATFORM_RISCV_XLEN = 64 - -# Blobs to build -FW_TEXT_START=0x80000000 -FW_JUMP=n - -ifeq ($(PLATFORM_RISCV_XLEN), 32) - # This needs to be 4MB aligned for 32-bit support - FW_JUMP_ADDR=0x80400000 - else - # This needs to be 2MB aligned for 64-bit support - FW_JUMP_ADDR=0x80200000 - endif -FW_JUMP_FDT_ADDR=0x82200000 - -# Firmware with payload configuration. -FW_PAYLOAD=y - -ifeq ($(PLATFORM_RISCV_XLEN), 32) -# This needs to be 4MB aligned for 32-bit support - FW_PAYLOAD_OFFSET=0x400000 -else -# This needs to be 2MB aligned for 64-bit support - FW_PAYLOAD_OFFSET=0x200000 -endif -FW_PAYLOAD_FDT_ADDR=0x82200000 -FW_PAYLOAD_ALIGN=0x1000
platform/fpga/ariane/objects.mk +35 -0
@@ -5,4 +5,39 @@ # Panagiotis Peristerakis <[email protected]> # +# Compiler flags +platform-cppflags-y = +platform-cflags-y = +platform-asflags-y = +platform-ldflags-y = + +# Object to build platform-objs-y += platform.o + +PLATFORM_RISCV_XLEN = 64 + +# Blobs to build +FW_TEXT_START=0x80000000 +FW_JUMP=n + +ifeq ($(PLATFORM_RISCV_XLEN), 32) + # This needs to be 4MB aligned for 32-bit support + FW_JUMP_ADDR=0x80400000 + else + # This needs to be 2MB aligned for 64-bit support + FW_JUMP_ADDR=0x80200000 + endif +FW_JUMP_FDT_ADDR=0x82200000 + +# Firmware with payload configuration. +FW_PAYLOAD=y + +ifeq ($(PLATFORM_RISCV_XLEN), 32) +# This needs to be 4MB aligned for 32-bit support + FW_PAYLOAD_OFFSET=0x400000 +else +# This needs to be 2MB aligned for 64-bit support + FW_PAYLOAD_OFFSET=0x200000 +endif +FW_PAYLOAD_FDT_ADDR=0x82200000 +FW_PAYLOAD_ALIGN=0x1000
platform/fpga/openpiton/config.mk deleted +0 -35
@@ -1,35 +0,0 @@ -# -# SPDX-License-Identifier: BSD-2-Clause -# -# Copyright (c) 2020 Western Digital Corporation or its affiliates. -# - -#for more infos, check out /platform/template/config.mk - -PLATFORM_RISCV_XLEN = 64 - -# Blobs to build -FW_TEXT_START=0x80000000 -FW_JUMP=n - -ifeq ($(PLATFORM_RISCV_XLEN), 32) - # This needs to be 4MB aligned for 32-bit support - FW_JUMP_ADDR=0x80400000 - else - # This needs to be 2MB aligned for 64-bit support - FW_JUMP_ADDR=0x80200000 - endif -FW_JUMP_FDT_ADDR=0x82200000 - -# Firmware with payload configuration. -FW_PAYLOAD=y - -ifeq ($(PLATFORM_RISCV_XLEN), 32) -# This needs to be 4MB aligned for 32-bit support - FW_PAYLOAD_OFFSET=0x400000 -else -# This needs to be 2MB aligned for 64-bit support - FW_PAYLOAD_OFFSET=0x200000 -endif -FW_PAYLOAD_FDT_ADDR=0x82200000 -FW_PAYLOAD_ALIGN=0x1000
platform/fpga/openpiton/objects.mk +35 -0
@@ -4,4 +4,39 @@ # Copyright (c) 2020 Western Digital Corporation or its affiliates. # +# Compiler flags +platform-cppflags-y = +platform-cflags-y = +platform-asflags-y = +platform-ldflags-y = + +# Objects to build platform-objs-y += platform.o + +PLATFORM_RISCV_XLEN = 64 + +# Blobs to build +FW_TEXT_START=0x80000000 +FW_JUMP=n + +ifeq ($(PLATFORM_RISCV_XLEN), 32) + # This needs to be 4MB aligned for 32-bit support + FW_JUMP_ADDR=0x80400000 + else + # This needs to be 2MB aligned for 64-bit support + FW_JUMP_ADDR=0x80200000 + endif +FW_JUMP_FDT_ADDR=0x82200000 + +# Firmware with payload configuration. +FW_PAYLOAD=y + +ifeq ($(PLATFORM_RISCV_XLEN), 32) +# This needs to be 4MB aligned for 32-bit support + FW_PAYLOAD_OFFSET=0x400000 +else +# This needs to be 2MB aligned for 64-bit support + FW_PAYLOAD_OFFSET=0x200000 +endif +FW_PAYLOAD_FDT_ADDR=0x82200000 +FW_PAYLOAD_ALIGN=0x1000
platform/generic/config.mk deleted +0 -40
@@ -1,40 +0,0 @@ -# -# SPDX-License-Identifier: BSD-2-Clause -# -# Copyright (c) 2020 Western Digital Corporation or its affiliates. -# -# Authors: -# Anup Patel <[email protected]> -# - -# Compiler flags -platform-cppflags-y = -platform-cflags-y = -platform-asflags-y = -platform-ldflags-y = - -# Command for platform specific "make run" -platform-runcmd = qemu-system-riscv$(PLATFORM_RISCV_XLEN) -M virt -m 256M \ - -nographic -bios $(build_dir)/platform/generic/firmware/fw_payload.elf - -# Blobs to build -FW_TEXT_START=0x80000000 -FW_DYNAMIC=y -FW_JUMP=y -ifeq ($(PLATFORM_RISCV_XLEN), 32) - # This needs to be 4MB aligned for 32-bit system - FW_JUMP_ADDR=$(shell printf "0x%X" $$(($(FW_TEXT_START) + 0x400000))) -else - # This needs to be 2MB aligned for 64-bit system - FW_JUMP_ADDR=$(shell printf "0x%X" $$(($(FW_TEXT_START) + 0x200000))) -endif -FW_JUMP_FDT_ADDR=$(shell printf "0x%X" $$(($(FW_TEXT_START) + 0x2200000))) -FW_PAYLOAD=y -ifeq ($(PLATFORM_RISCV_XLEN), 32) - # This needs to be 4MB aligned for 32-bit system - FW_PAYLOAD_OFFSET=0x400000 -else - # This needs to be 2MB aligned for 64-bit system - FW_PAYLOAD_OFFSET=0x200000 -endif -FW_PAYLOAD_FDT_ADDR=$(FW_JUMP_FDT_ADDR)
platform/generic/objects.mk +33 -0
@@ -7,5 +7,38 @@ # Anup Patel <[email protected]> # +# Compiler flags +platform-cppflags-y = +platform-cflags-y = +platform-asflags-y = +platform-ldflags-y = + +# Command for platform specific "make run" +platform-runcmd = qemu-system-riscv$(PLATFORM_RISCV_XLEN) -M virt -m 256M \ + -nographic -bios $(build_dir)/platform/generic/firmware/fw_payload.elf + +# Objects to build platform-objs-y += platform.o platform-objs-y += platform_override_modules.o + +# Blobs to build +FW_TEXT_START=0x80000000 +FW_DYNAMIC=y +FW_JUMP=y +ifeq ($(PLATFORM_RISCV_XLEN), 32) + # This needs to be 4MB aligned for 32-bit system + FW_JUMP_ADDR=$(shell printf "0x%X" $$(($(FW_TEXT_START) + 0x400000))) +else + # This needs to be 2MB aligned for 64-bit system + FW_JUMP_ADDR=$(shell printf "0x%X" $$(($(FW_TEXT_START) + 0x200000))) +endif +FW_JUMP_FDT_ADDR=$(shell printf "0x%X" $$(($(FW_TEXT_START) + 0x2200000))) +FW_PAYLOAD=y +ifeq ($(PLATFORM_RISCV_XLEN), 32) + # This needs to be 4MB aligned for 32-bit system + FW_PAYLOAD_OFFSET=0x400000 +else + # This needs to be 2MB aligned for 64-bit system + FW_PAYLOAD_OFFSET=0x200000 +endif +FW_PAYLOAD_FDT_ADDR=$(FW_JUMP_FDT_ADDR)
platform/kendryte/k210/config.mk deleted +0 -19
@@ -1,19 +0,0 @@ -# -# SPDX-License-Identifier: BSD-2-Clause -# -# Copyright (c) 2019 Western Digital Corporation or its affiliates. -# -# Authors: -# Damien Le Moal <[email protected]> -# - -# Compiler flags -platform-cppflags-y = -platform-cflags-y = -platform-asflags-y = -platform-ldflags-y = - -# Blobs to build -FW_TEXT_START=0x80000000 -FW_PAYLOAD=y -FW_PAYLOAD_ALIGN=0x1000
platform/kendryte/k210/objects.mk +12 -0
@@ -7,8 +7,20 @@ # Damien Le Moal <[email protected]> # +# Compiler flags +platform-cppflags-y = +platform-cflags-y = +platform-asflags-y = +platform-ldflags-y = + +# Objects to build platform-objs-y += platform.o platform-objs-y += k210.o platform-varprefix-k210.o = dt_k210 platform-padding-k210.o = 2048 + +# Blobs to build +FW_TEXT_START=0x80000000 +FW_PAYLOAD=y +FW_PAYLOAD_ALIGN=0x1000
platform/nuclei/ux600/config.mk deleted +0 -30
@@ -1,30 +0,0 @@ -# -# SPDX-License-Identifier: BSD-2-Clause -# -# Copyright (c) 2020 Nuclei Corporation or its affiliates. -# -# Authors: -# lujun <[email protected]> -# hqfang <[email protected]> -# - -# Compiler flags -platform-cppflags-y = -platform-cflags-y = -platform-asflags-y = -platform-ldflags-y = - -# Command for platform specific "make run" -platform-runcmd = xl_spike \ - $(build_dir)/platform/nuclei/ux600/firmware/fw_payload.elf - -# Blobs to build -FW_TEXT_START=0xA0000000 -FW_DYNAMIC=y -FW_JUMP=y - -FW_JUMP_ADDR=0xA0200000 -FW_JUMP_FDT_ADDR=0xA8000000 -FW_PAYLOAD=y -FW_PAYLOAD_OFFSET=0x200000 -FW_PAYLOAD_FDT_ADDR=0xA8000000
platform/nuclei/ux600/objects.mk +22 -0
@@ -8,4 +8,26 @@ # hqfang <[email protected]> # +# Compiler flags +platform-cppflags-y = +platform-cflags-y = +platform-asflags-y = +platform-ldflags-y = + +# Command for platform specific "make run" +platform-runcmd = xl_spike \ + $(build_dir)/platform/nuclei/ux600/firmware/fw_payload.elf + +# Objects to build platform-objs-y += platform.o + +# Blobs to build +FW_TEXT_START=0xA0000000 +FW_DYNAMIC=y +FW_JUMP=y + +FW_JUMP_ADDR=0xA0200000 +FW_JUMP_FDT_ADDR=0xA8000000 +FW_PAYLOAD=y +FW_PAYLOAD_OFFSET=0x200000 +FW_PAYLOAD_FDT_ADDR=0xA8000000
platform/template/config.mk deleted +0 -77
77 lines not on this page · raw message
platform/template/objects.mk +72 -0
81 lines not on this page · raw message
platform/template/platform.c +1 -1
@@ -11,7 +11,7 @@/* * Include these files as needed. -* See config.mk PLATFORM_xxx configuration parameters. +* See objects.mk PLATFORM_xxx configuration parameters. */ #include <sbi_utils/ipi/aclint_mswi.h> #include <sbi_utils/irqchip/plic.h>
Signature · 1 line
2.34.1
PATCH v2 14/14 docs: Update documentation for kconfig support
In reply to Anup PatelWe update all documentation files to:
1) Remove references to platform specific config.mk file since it is has been removed.
2) Add details about platform specific configs/defconfig and Kconfig files mandatory for each platform.
3) Add required packages in top-level README.md
--- README.md | 25 +++++++++++++++++++++++-- docs/firmware/fw_dynamic.md | 2 +- docs/firmware/fw_jump.md | 4 ++-- docs/firmware/fw_payload.md | 4 ++-- docs/platform/platform.md | 4 ++-- docs/platform_guide.md | 9 +++++---- 6 files changed, 35 insertions(+), 13 deletions(-)
README.md +23 -2
@@ -92,8 +92,8 @@ N.B. Any S-mode boot loader (i.e. U-Boot) doesn't need to support HSM extension, as it doesn't need to boot all the harts. The operating system should be capable enough to bring up all other non-booting harts using HSM extension. -Required Toolchain ------------------- +Required Toolchain and Packages +------------------------------- OpenSBI can be compiled natively or cross-compiled on a x86 host. For cross-compilation, you can build your own toolchain, download a prebuilt one
@@ -115,6 +115,14 @@ triple is used (e.g. *-target riscv64-unknown-elf*). Please note that only a 64-bit version of the toolchain is available in the Bootlin toolchain repository for now. +In addition to a toolchain, OpenSBI also requires following packages on +the host: + +1. device-tree-compiler: The device tree compiler for compiling device + tree sources (DTS files). +2. kconfig-frontends: A standalone implementation of the Linux Kconfig + parser and frontends for OpenSBI platform configuration management. + Building and Installing the OpenSBI Platform-Independent Library ----------------------------------------------------------------
@@ -196,6 +204,19 @@ top-level make command line. These options, such as *PLATFORM_<xyz>* or *docs/platform/<platform_name>.md* files and *docs/firmware/<firmware_name>.md* files. +All OpenSBI platforms support Kconfig style build-time configuration. Users +can change the build-time configuration of a platform using a graphical +interface as follows: +``` +make PLATFORM=<platform_subdir> menuconfig +``` + +Alternately, an OpenSBI platform can have multiple default configurations +and users can select a custom default configuration as follows: +``` +make PLATFORM=<platform_subdir> PLATFORM_DEFCONFIG=<platform_custom_defconfig> +``` + Building 32-bit / 64-bit OpenSBI Images --------------------------------------- By default, building OpenSBI generates 32-bit or 64-bit images based on the
docs/firmware/fw_dynamic.md +1 -1
@@ -20,7 +20,7 @@ the booting stage binary to follow OpenSBI firmware. A platform can enable *FW_DYNAMIC* firmware using any of the following methods. 1. Specifying `FW_DYNAMIC=y` on the top level `make` command line. -2. Specifying `FW_DYNAMIC=y` in the target platform *config.mk* configuration +2. Specifying `FW_DYNAMIC=y` in the target platform *objects.mk* configuration file. The compiled *FW_DYNAMIC* firmware ELF file is named *fw_dynamic.elf*. It's
docs/firmware/fw_jump.md +2 -2
@@ -15,7 +15,7 @@ and the booting stage binary to follow the OpenSBI firmware. A platform *FW_JUMP* firmware can be enabled by any of the following methods: 1. Specifying `FW_JUMP=y` on the top level `make` command line. -2. Specifying `FW_JUMP=y` in the target platform *config.mk* configuration file. +2. Specifying `FW_JUMP=y` in the target platform *objects.mk* configuration file. The compiled *FW_JUMP* firmware ELF file is named *fw_jump.elf*. Its expanded image file is *fw_jump.bin*. Both files are created in the platform-specific
@@ -26,7 +26,7 @@ build directory under the *build/platform/<platform_subdir>/firmware* directory. To operate correctly, a *FW_JUMP* firmware requires some configuration parameters to be defined using either the top level `make` command line or the -target platform *config.mk* configuration file. The possible parameters are as +target platform *objects.mk* configuration file. The possible parameters are as follows: * **FW_JUMP_ADDR** - Address of the entry point of the booting stage to be
docs/firmware/fw_payload.md +2 -2
@@ -20,7 +20,7 @@ Enabling *FW_PAYLOAD* compilation The *FW_PAYLOAD* firmware can be enabled by any of the following methods: 1. Specifying `FW_PAYLOAD=y` on the top level `make` command line. -2. Specifying `FW_PAYLOAD=y` in the target platform *config.mk* configuration +2. Specifying `FW_PAYLOAD=y` in the target platform *objects.mk* configuration file. The compiled *FW_PAYLOAD* firmware ELF file is named *fw_jump.elf*. Its
@@ -33,7 +33,7 @@ Configuration Options A *FW_PAYLOAD* firmware is built according to configuration parameters and options. These configuration parameters can be defined using either the top -level `make` command line or the target platform *config.mk* configuration +level `make` command line or the target platform *objects.mk* configuration file. The parameters currently defined are as follows: * **FW_PAYLOAD_OFFSET** - Offset from *FW_TEXT_BASE* where the payload binary
docs/platform/platform.md +2 -2
@@ -42,8 +42,8 @@ OpenSBI currently supports the following virtual and hardware platforms: The code for these supported platforms can be used as example to implement support for other platforms. The *platform/template* directory also provides template files for implementing support for a new platform. The *object.mk*, -*config.mk* and *platform.c* template files provides enough comments to -facilitate the implementation. +*Kconfig*, *configs/defconfig* and *platform.c* template files provides enough +comments to facilitate the implementation. [generic.md]: generic.md [qemu_virt.md]: qemu_virt.md
docs/platform_guide.md +5 -4
@@ -28,11 +28,12 @@ Adding support for a new platform Support for a new platform named *<xyz>* can be added as follows: 1. Create a directory named *<xyz>* under the *platform/* directory. -2. Create a platform configuration file named *config.mk* under the - *platform/<xyz>/* directory. This configuration file will provide +2. Create a platform configuration files named *Kconfig* and *configs/defconfig* + under the *platform/<xyz>/* directory. This configuration files will + provide the build time configuration for the sources to be compiled. +3. Create a *platform/<xyz>/objects.mk* file for listing the platform + object files to be compiled. This file also provides platform-specific compiler flags, and select firmware options. -3. Create a *platform/<xyz>/objects.mk* file for listing the - platform-specific object files to be compiled. 4. Create a *platform/<xyz>/platform.c* file providing a *struct sbi_platform* instance.
Signature · 1 line
2.34.1
v2 cover OpenSBI Kconfig Support
In reply to Anup PatelQuoted 7 lines · Anup Patel
In future, we will see more drivers in OpenSBI for system reset, serial port, power management, etc platform specific devices. We need platform specific compile time configuration to allow users control the size of OpenSBI generic firmware binaries by only enabling desired drivers. In other words, users should be allowed to restrict the set of RISC-V platforms on which OpenSBI generic firmwares built by them can run.
Quoted 5 lines
To address above, we add
Kconfigsupport for OpenSBI platforms using the kconfig-frontends project which is a standalone kconfig parser.The kconfig-frontends is available as a package/receipe on various distros (such as Debian, UBuntu, OpenSUSE, etc) and Yocto project.
Hi Anup,
It doesn't look like Fedora provides that package. Also, is the source for the packages of those other distros maintained? If I found the correct source, then it's [1], which hasn't had any attention in five years, even though there have been hundreds of commits to Linux's scripts/kconfig. I wonder if we shouldn't consider adopting scripts/minikconf.py from the QEMU sources and sticking to the kconfig language subset that parser supports?
[1] http://ymorin.is-a-geek.org/projects/kconfig-frontends
Thanks,
drew
Quoted 144 lines
To try OpenSBI
Kconfigsupport with generic platform, here are few example commands:
make PLATFORM=generic <-- builds OpenSBI using "defconfig"
make PLATFORM=generic menuconfig <-- launches graphical interface for changesThese patches can also be found in the
kconfig_v2branch at:
https://github.com/avpatel/opensbi.gitChanges since v1:
- Fix SPDX license specifier in newKconfigfilesAnup Patel (14):
Makefile: Add initial kconfig support for each platform
Makefile: Compile lib/utils sources separately for each platform
lib: utils/serial: Use kconfig for enabling/disabling drivers
lib: utils/reset: Use kconfig for enabling/disabling drivers
lib: utils/sys: Use kconfig for enabling/disabling drivers
lib: utils/timer: Use kconfig for enabling/disabling drivers
lib: utils/ipi: Use kconfig for enabling/disabling drivers
lib: utils/irqchip: Use kconfig for enabling/disabling drivers
lib: utils/i2c: Use kconfig for enabling/disabling drivers
lib: utils/gpio: Use kconfig for enabling/disabling drivers
lib: utils/fdt: Use kconfig for enabling/disabling
platform: generic: Use kconfig for enabling/disabling overrides
platform: Remove redundant config.mk from all platforms
docs: Update documentation for kconfig supportKconfig | 23 +++++ Makefile | 102 ++++++++++++++++------ README.md | 25 +++++- docs/firmware/fw_dynamic.md | 2 +- docs/firmware/fw_jump.md | 4 +- docs/firmware/fw_payload.md | 4 +- docs/library_usage.md | 6 +- docs/platform/platform.md | 4 +- docs/platform_guide.md | 9 +- firmware/Kconfig | 1 + include/sbi_utils/fdt/fdt_domain.h | 9 ++ include/sbi_utils/fdt/fdt_pmu.h | 10 +++ include/sbi_utils/ipi/fdt_ipi.h | 9 ++ include/sbi_utils/irqchip/fdt_irqchip.h | 10 +++ include/sbi_utils/irqchip/imsic.h | 10 +++ include/sbi_utils/reset/fdt_reset.h | 12 +++ include/sbi_utils/serial/fdt_serial.h | 8 ++ include/sbi_utils/timer/fdt_timer.h | 9 ++ lib/utils/Kconfig | 25 ++++++ lib/utils/fdt/Kconfig | 18 ++++ lib/utils/fdt/objects.mk | 8 +- lib/utils/gpio/Kconfig | 23 +++++ lib/utils/gpio/objects.mk | 10 +-- lib/utils/i2c/Kconfig | 23 +++++ lib/utils/i2c/objects.mk | 10 +-- lib/utils/ipi/Kconfig | 23 +++++ lib/utils/ipi/objects.mk | 10 +-- lib/utils/irqchip/Kconfig | 41 +++++++++ lib/utils/irqchip/objects.mk | 22 ++--- lib/utils/libfdt/Kconfig | 5 ++ lib/utils/libfdt/objects.mk | 4 +- lib/utils/reset/Kconfig | 37 ++++++++ lib/utils/reset/objects.mk | 28 +++--- lib/utils/serial/Kconfig | 73 ++++++++++++++++ lib/utils/serial/objects.mk | 44 +++++----- lib/utils/sys/Kconfig | 13 +++ lib/utils/sys/objects.mk | 4 +- lib/utils/timer/Kconfig | 23 +++++ lib/utils/timer/objects.mk | 10 +-- platform/andes/ae350/Kconfig | 8 ++ platform/andes/ae350/config.mk | 36 -------- platform/andes/ae350/configs/defconfig | 0 platform/andes/ae350/objects.mk | 29 ++++++ platform/fpga/ariane/Kconfig | 10 +++ platform/fpga/ariane/config.mk | 36 -------- platform/fpga/ariane/configs/defconfig | 0 platform/fpga/ariane/objects.mk | 35 ++++++++ platform/fpga/openpiton/Kconfig | 10 +++ platform/fpga/openpiton/config.mk | 35 -------- platform/fpga/openpiton/configs/defconfig | 0 platform/fpga/openpiton/objects.mk | 35 ++++++++ platform/generic/Kconfig | 26 ++++++ platform/generic/allwinner/objects.mk | 4 +- platform/generic/config.mk | 40 --------- platform/generic/configs/defconfig | 29 ++++++ platform/generic/objects.mk | 33 +++++++ platform/generic/sifive/objects.mk | 8 +- platform/kendryte/k210/Kconfig | 10 +++ platform/kendryte/k210/config.mk | 19 ---- platform/kendryte/k210/configs/defconfig | 0 platform/kendryte/k210/objects.mk | 12 +++ platform/nuclei/ux600/Kconfig | 10 +++ platform/nuclei/ux600/config.mk | 30 ------- platform/nuclei/ux600/configs/defconfig | 0 platform/nuclei/ux600/objects.mk | 22 +++++ platform/nuclei/ux600/platform.c | 1 - platform/template/Kconfig | 9 ++ platform/template/config.mk | 77 ---------------- platform/template/configs/defconfig | 0 platform/template/objects.mk | 72 +++++++++++++++ platform/template/platform.c | 2 +- scripts/create-binary-archive.sh | 2 +- 72 files changed, 948 insertions(+), 403 deletions(-) create mode 100644 Kconfig create mode 100644 firmware/Kconfig create mode 100644 lib/utils/Kconfig create mode 100644 lib/utils/fdt/Kconfig create mode 100644 lib/utils/gpio/Kconfig create mode 100644 lib/utils/i2c/Kconfig create mode 100644 lib/utils/ipi/Kconfig create mode 100644 lib/utils/irqchip/Kconfig create mode 100644 lib/utils/libfdt/Kconfig create mode 100644 lib/utils/reset/Kconfig create mode 100644 lib/utils/serial/Kconfig create mode 100644 lib/utils/sys/Kconfig create mode 100644 lib/utils/timer/Kconfig create mode 100644 platform/andes/ae350/Kconfig delete mode 100644 platform/andes/ae350/config.mk create mode 100644 platform/andes/ae350/configs/defconfig create mode 100644 platform/fpga/ariane/Kconfig delete mode 100644 platform/fpga/ariane/config.mk create mode 100644 platform/fpga/ariane/configs/defconfig create mode 100644 platform/fpga/openpiton/Kconfig delete mode 100644 platform/fpga/openpiton/config.mk create mode 100644 platform/fpga/openpiton/configs/defconfig create mode 100644 platform/generic/Kconfig delete mode 100644 platform/generic/config.mk create mode 100644 platform/generic/configs/defconfig create mode 100644 platform/kendryte/k210/Kconfig delete mode 100644 platform/kendryte/k210/config.mk create mode 100644 platform/kendryte/k210/configs/defconfig create mode 100644 platform/nuclei/ux600/Kconfig delete mode 100644 platform/nuclei/ux600/config.mk create mode 100644 platform/nuclei/ux600/configs/defconfig create mode 100644 platform/template/Kconfig delete mode 100644 platform/template/config.mk create mode 100644 platform/template/configs/defconfigSignature · 7 lines
2.34.1 -- opensbi mailing list opensbi at lists.infradead.org http://lists.infradead.org/mailman/listinfo/opensbi
v2 cover OpenSBI Kconfig Support
Quoted 17 lines · Andrew Jones
Quoted 7 lines · Anup Patel
In future, we will see more drivers in OpenSBI for system reset, serial port, power management, etc platform specific devices. We need platform specific compile time configuration to allow users control the size of OpenSBI generic firmware binaries by only enabling desired drivers. In other words, users should be allowed to restrict the set of RISC-V platforms on which OpenSBI generic firmwares built by them can run.
Quoted 5 lines
To address above, we add
Kconfigsupport for OpenSBI platforms using the kconfig-frontends project which is a standalone kconfig parser.The kconfig-frontends is available as a package/receipe on various distros (such as Debian, UBuntu, OpenSUSE, etc) and Yocto project.
Hi Anup,
Quoted 7 lines
It doesn't look like Fedora provides that package. Also, is the source for the packages of those other distros maintained? If I found the correct source, then it's [1], which hasn't had any attention in five years, even though there have been hundreds of commits to Linux's
scripts/kconfig. I wonder if we shouldn't consider adoptingscripts/minikconf.pyfrom the QEMU sources and sticking to the kconfig language subset that parser supports?
After spending a bit of time googling about kconfig-frontends it seems to be a dead project.
Would kconfiglib work? That seems to be alive. While not directly available in Fedora too it's on pip.
Quoted 155 lines
[1] http://ymorin.is-a-geek.org/projects/kconfig-frontends
Thanks,
drewQuoted 136 lines
To try OpenSBI
Kconfigsupport with generic platform, here are few example commands:
make PLATFORM=generic <-- builds OpenSBI using "defconfig"
make PLATFORM=generic menuconfig <-- launches graphical interface for changesThese patches can also be found in the
kconfig_v2branch at:
https://github.com/avpatel/opensbi.gitChanges since v1:
- Fix SPDX license specifier in newKconfigfilesAnup Patel (14):
Makefile: Add initial kconfig support for each platform
Makefile: Compile lib/utils sources separately for each platform
lib: utils/serial: Use kconfig for enabling/disabling drivers
lib: utils/reset: Use kconfig for enabling/disabling drivers
lib: utils/sys: Use kconfig for enabling/disabling drivers
lib: utils/timer: Use kconfig for enabling/disabling drivers
lib: utils/ipi: Use kconfig for enabling/disabling drivers
lib: utils/irqchip: Use kconfig for enabling/disabling drivers
lib: utils/i2c: Use kconfig for enabling/disabling drivers
lib: utils/gpio: Use kconfig for enabling/disabling drivers
lib: utils/fdt: Use kconfig for enabling/disabling
platform: generic: Use kconfig for enabling/disabling overrides
platform: Remove redundant config.mk from all platforms
docs: Update documentation for kconfig supportKconfig | 23 +++++ Makefile | 102 ++++++++++++++++------ README.md | 25 +++++- docs/firmware/fw_dynamic.md | 2 +- docs/firmware/fw_jump.md | 4 +- docs/firmware/fw_payload.md | 4 +- docs/library_usage.md | 6 +- docs/platform/platform.md | 4 +- docs/platform_guide.md | 9 +- firmware/Kconfig | 1 + include/sbi_utils/fdt/fdt_domain.h | 9 ++ include/sbi_utils/fdt/fdt_pmu.h | 10 +++ include/sbi_utils/ipi/fdt_ipi.h | 9 ++ include/sbi_utils/irqchip/fdt_irqchip.h | 10 +++ include/sbi_utils/irqchip/imsic.h | 10 +++ include/sbi_utils/reset/fdt_reset.h | 12 +++ include/sbi_utils/serial/fdt_serial.h | 8 ++ include/sbi_utils/timer/fdt_timer.h | 9 ++ lib/utils/Kconfig | 25 ++++++ lib/utils/fdt/Kconfig | 18 ++++ lib/utils/fdt/objects.mk | 8 +- lib/utils/gpio/Kconfig | 23 +++++ lib/utils/gpio/objects.mk | 10 +-- lib/utils/i2c/Kconfig | 23 +++++ lib/utils/i2c/objects.mk | 10 +-- lib/utils/ipi/Kconfig | 23 +++++ lib/utils/ipi/objects.mk | 10 +-- lib/utils/irqchip/Kconfig | 41 +++++++++ lib/utils/irqchip/objects.mk | 22 ++--- lib/utils/libfdt/Kconfig | 5 ++ lib/utils/libfdt/objects.mk | 4 +- lib/utils/reset/Kconfig | 37 ++++++++ lib/utils/reset/objects.mk | 28 +++--- lib/utils/serial/Kconfig | 73 ++++++++++++++++ lib/utils/serial/objects.mk | 44 +++++----- lib/utils/sys/Kconfig | 13 +++ lib/utils/sys/objects.mk | 4 +- lib/utils/timer/Kconfig | 23 +++++ lib/utils/timer/objects.mk | 10 +-- platform/andes/ae350/Kconfig | 8 ++ platform/andes/ae350/config.mk | 36 -------- platform/andes/ae350/configs/defconfig | 0 platform/andes/ae350/objects.mk | 29 ++++++ platform/fpga/ariane/Kconfig | 10 +++ platform/fpga/ariane/config.mk | 36 -------- platform/fpga/ariane/configs/defconfig | 0 platform/fpga/ariane/objects.mk | 35 ++++++++ platform/fpga/openpiton/Kconfig | 10 +++ platform/fpga/openpiton/config.mk | 35 -------- platform/fpga/openpiton/configs/defconfig | 0 platform/fpga/openpiton/objects.mk | 35 ++++++++ platform/generic/Kconfig | 26 ++++++ platform/generic/allwinner/objects.mk | 4 +- platform/generic/config.mk | 40 --------- platform/generic/configs/defconfig | 29 ++++++ platform/generic/objects.mk | 33 +++++++ platform/generic/sifive/objects.mk | 8 +- platform/kendryte/k210/Kconfig | 10 +++ platform/kendryte/k210/config.mk | 19 ---- platform/kendryte/k210/configs/defconfig | 0 platform/kendryte/k210/objects.mk | 12 +++ platform/nuclei/ux600/Kconfig | 10 +++ platform/nuclei/ux600/config.mk | 30 ------- platform/nuclei/ux600/configs/defconfig | 0 platform/nuclei/ux600/objects.mk | 22 +++++ platform/nuclei/ux600/platform.c | 1 - platform/template/Kconfig | 9 ++ platform/template/config.mk | 77 ---------------- platform/template/configs/defconfig | 0 platform/template/objects.mk | 72 +++++++++++++++ platform/template/platform.c | 2 +- scripts/create-binary-archive.sh | 2 +- 72 files changed, 948 insertions(+), 403 deletions(-) create mode 100644 Kconfig create mode 100644 firmware/Kconfig create mode 100644 lib/utils/Kconfig create mode 100644 lib/utils/fdt/Kconfig create mode 100644 lib/utils/gpio/Kconfig create mode 100644 lib/utils/i2c/Kconfig create mode 100644 lib/utils/ipi/Kconfig create mode 100644 lib/utils/irqchip/Kconfig create mode 100644 lib/utils/libfdt/Kconfig create mode 100644 lib/utils/reset/Kconfig create mode 100644 lib/utils/serial/Kconfig create mode 100644 lib/utils/sys/Kconfig create mode 100644 lib/utils/timer/Kconfig create mode 100644 platform/andes/ae350/Kconfig delete mode 100644 platform/andes/ae350/config.mk create mode 100644 platform/andes/ae350/configs/defconfig create mode 100644 platform/fpga/ariane/Kconfig delete mode 100644 platform/fpga/ariane/config.mk create mode 100644 platform/fpga/ariane/configs/defconfig create mode 100644 platform/fpga/openpiton/Kconfig delete mode 100644 platform/fpga/openpiton/config.mk create mode 100644 platform/fpga/openpiton/configs/defconfig create mode 100644 platform/generic/Kconfig delete mode 100644 platform/generic/config.mk create mode 100644 platform/generic/configs/defconfig create mode 100644 platform/kendryte/k210/Kconfig delete mode 100644 platform/kendryte/k210/config.mk create mode 100644 platform/kendryte/k210/configs/defconfig create mode 100644 platform/nuclei/ux600/Kconfig delete mode 100644 platform/nuclei/ux600/config.mk create mode 100644 platform/nuclei/ux600/configs/defconfig create mode 100644 platform/template/Kconfig delete mode 100644 platform/template/config.mk create mode 100644 platform/template/configs/defconfigQuoted 8 lines
--
2.34.1--
opensbi mailing list
opensbi at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/opensbi--
opensbi mailing list
opensbi at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/opensbi
v2 cover OpenSBI Kconfig Support
+Heinrich
Quoted 27 lines · David Abdurachmanov
Quoted 17 lines · Andrew Jones
Quoted 7 lines · Anup Patel
In future, we will see more drivers in OpenSBI for system reset, serial port, power management, etc platform specific devices. We need platform specific compile time configuration to allow users control the size of OpenSBI generic firmware binaries by only enabling desired drivers. In other words, users should be allowed to restrict the set of RISC-V platforms on which OpenSBI generic firmwares built by them can run.
Quoted 5 lines
To address above, we add
Kconfigsupport for OpenSBI platforms using the kconfig-frontends project which is a standalone kconfig parser.The kconfig-frontends is available as a package/receipe on various distros (such as Debian, UBuntu, OpenSUSE, etc) and Yocto project.
Hi Anup,
Quoted 7 lines
It doesn't look like Fedora provides that package. Also, is the source for the packages of those other distros maintained? If I found the correct source, then it's [1], which hasn't had any attention in five years, even though there have been hundreds of commits to Linux's
scripts/kconfig. I wonder if we shouldn't consider adoptingscripts/minikconf.pyfrom the QEMU sources and sticking to the kconfig language subset that parser supports?
Quoted 2 lines
After spending a bit of time googling about kconfig-frontends it seems to be a dead project.
Yes, the kconfig-frontends project is not being developed but there are forks of this project since quite a few distros and yocto have support for it.
Is there a requirement that Fedora only adds packages for active projects ?
Quoted 3 lines
Would kconfiglib work? That seems to be alive. While not directly available in Fedora too it's on pip.
I explored the kconfiglib project. It is only a library and we will endup maintaining our own tools for menuconfig, defconfig, etc in the OpenSBI sources.
The best thing would be if we can avoid adding more tools and scripts in OpenSBI for kconfig. The kconfig-frontends allows us to do that.
If we have to add some tool/script in OpenSBI then I would prefer something (like QEMU scripts/minikconf.py) which is minimalistic and does not add maintenance burden.
Regards,
Anup
Quoted 156 lines
Quoted 156 lines
[1] http://ymorin.is-a-geek.org/projects/kconfig-frontends
Thanks,
drewQuoted 136 lines
To try OpenSBI
Kconfigsupport with generic platform, here are few example commands:
make PLATFORM=generic <-- builds OpenSBI using "defconfig"
make PLATFORM=generic menuconfig <-- launches graphical interface for changesThese patches can also be found in the
kconfig_v2branch at:
https://github.com/avpatel/opensbi.gitChanges since v1:
- Fix SPDX license specifier in newKconfigfilesAnup Patel (14):
Makefile: Add initial kconfig support for each platform
Makefile: Compile lib/utils sources separately for each platform
lib: utils/serial: Use kconfig for enabling/disabling drivers
lib: utils/reset: Use kconfig for enabling/disabling drivers
lib: utils/sys: Use kconfig for enabling/disabling drivers
lib: utils/timer: Use kconfig for enabling/disabling drivers
lib: utils/ipi: Use kconfig for enabling/disabling drivers
lib: utils/irqchip: Use kconfig for enabling/disabling drivers
lib: utils/i2c: Use kconfig for enabling/disabling drivers
lib: utils/gpio: Use kconfig for enabling/disabling drivers
lib: utils/fdt: Use kconfig for enabling/disabling
platform: generic: Use kconfig for enabling/disabling overrides
platform: Remove redundant config.mk from all platforms
docs: Update documentation for kconfig supportKconfig | 23 +++++ Makefile | 102 ++++++++++++++++------ README.md | 25 +++++- docs/firmware/fw_dynamic.md | 2 +- docs/firmware/fw_jump.md | 4 +- docs/firmware/fw_payload.md | 4 +- docs/library_usage.md | 6 +- docs/platform/platform.md | 4 +- docs/platform_guide.md | 9 +- firmware/Kconfig | 1 + include/sbi_utils/fdt/fdt_domain.h | 9 ++ include/sbi_utils/fdt/fdt_pmu.h | 10 +++ include/sbi_utils/ipi/fdt_ipi.h | 9 ++ include/sbi_utils/irqchip/fdt_irqchip.h | 10 +++ include/sbi_utils/irqchip/imsic.h | 10 +++ include/sbi_utils/reset/fdt_reset.h | 12 +++ include/sbi_utils/serial/fdt_serial.h | 8 ++ include/sbi_utils/timer/fdt_timer.h | 9 ++ lib/utils/Kconfig | 25 ++++++ lib/utils/fdt/Kconfig | 18 ++++ lib/utils/fdt/objects.mk | 8 +- lib/utils/gpio/Kconfig | 23 +++++ lib/utils/gpio/objects.mk | 10 +-- lib/utils/i2c/Kconfig | 23 +++++ lib/utils/i2c/objects.mk | 10 +-- lib/utils/ipi/Kconfig | 23 +++++ lib/utils/ipi/objects.mk | 10 +-- lib/utils/irqchip/Kconfig | 41 +++++++++ lib/utils/irqchip/objects.mk | 22 ++--- lib/utils/libfdt/Kconfig | 5 ++ lib/utils/libfdt/objects.mk | 4 +- lib/utils/reset/Kconfig | 37 ++++++++ lib/utils/reset/objects.mk | 28 +++--- lib/utils/serial/Kconfig | 73 ++++++++++++++++ lib/utils/serial/objects.mk | 44 +++++----- lib/utils/sys/Kconfig | 13 +++ lib/utils/sys/objects.mk | 4 +- lib/utils/timer/Kconfig | 23 +++++ lib/utils/timer/objects.mk | 10 +-- platform/andes/ae350/Kconfig | 8 ++ platform/andes/ae350/config.mk | 36 -------- platform/andes/ae350/configs/defconfig | 0 platform/andes/ae350/objects.mk | 29 ++++++ platform/fpga/ariane/Kconfig | 10 +++ platform/fpga/ariane/config.mk | 36 -------- platform/fpga/ariane/configs/defconfig | 0 platform/fpga/ariane/objects.mk | 35 ++++++++ platform/fpga/openpiton/Kconfig | 10 +++ platform/fpga/openpiton/config.mk | 35 -------- platform/fpga/openpiton/configs/defconfig | 0 platform/fpga/openpiton/objects.mk | 35 ++++++++ platform/generic/Kconfig | 26 ++++++ platform/generic/allwinner/objects.mk | 4 +- platform/generic/config.mk | 40 --------- platform/generic/configs/defconfig | 29 ++++++ platform/generic/objects.mk | 33 +++++++ platform/generic/sifive/objects.mk | 8 +- platform/kendryte/k210/Kconfig | 10 +++ platform/kendryte/k210/config.mk | 19 ---- platform/kendryte/k210/configs/defconfig | 0 platform/kendryte/k210/objects.mk | 12 +++ platform/nuclei/ux600/Kconfig | 10 +++ platform/nuclei/ux600/config.mk | 30 ------- platform/nuclei/ux600/configs/defconfig | 0 platform/nuclei/ux600/objects.mk | 22 +++++ platform/nuclei/ux600/platform.c | 1 - platform/template/Kconfig | 9 ++ platform/template/config.mk | 77 ---------------- platform/template/configs/defconfig | 0 platform/template/objects.mk | 72 +++++++++++++++ platform/template/platform.c | 2 +- scripts/create-binary-archive.sh | 2 +- 72 files changed, 948 insertions(+), 403 deletions(-) create mode 100644 Kconfig create mode 100644 firmware/Kconfig create mode 100644 lib/utils/Kconfig create mode 100644 lib/utils/fdt/Kconfig create mode 100644 lib/utils/gpio/Kconfig create mode 100644 lib/utils/i2c/Kconfig create mode 100644 lib/utils/ipi/Kconfig create mode 100644 lib/utils/irqchip/Kconfig create mode 100644 lib/utils/libfdt/Kconfig create mode 100644 lib/utils/reset/Kconfig create mode 100644 lib/utils/serial/Kconfig create mode 100644 lib/utils/sys/Kconfig create mode 100644 lib/utils/timer/Kconfig create mode 100644 platform/andes/ae350/Kconfig delete mode 100644 platform/andes/ae350/config.mk create mode 100644 platform/andes/ae350/configs/defconfig create mode 100644 platform/fpga/ariane/Kconfig delete mode 100644 platform/fpga/ariane/config.mk create mode 100644 platform/fpga/ariane/configs/defconfig create mode 100644 platform/fpga/openpiton/Kconfig delete mode 100644 platform/fpga/openpiton/config.mk create mode 100644 platform/fpga/openpiton/configs/defconfig create mode 100644 platform/generic/Kconfig delete mode 100644 platform/generic/config.mk create mode 100644 platform/generic/configs/defconfig create mode 100644 platform/kendryte/k210/Kconfig delete mode 100644 platform/kendryte/k210/config.mk create mode 100644 platform/kendryte/k210/configs/defconfig create mode 100644 platform/nuclei/ux600/Kconfig delete mode 100644 platform/nuclei/ux600/config.mk create mode 100644 platform/nuclei/ux600/configs/defconfig create mode 100644 platform/template/Kconfig delete mode 100644 platform/template/config.mk create mode 100644 platform/template/configs/defconfigQuoted 8 lines
--
2.34.1--
opensbi mailing list
opensbi at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/opensbi--
opensbi mailing list
opensbi at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/opensbi
v2 cover OpenSBI Kconfig Support
Quoted 42 lines · Anup Patel
+Heinrich
Quoted 27 lines · David Abdurachmanov
Quoted 17 lines · Andrew Jones
Quoted 7 lines · Anup Patel
In future, we will see more drivers in OpenSBI for system reset, serial port, power management, etc platform specific devices. We need platform specific compile time configuration to allow users control the size of OpenSBI generic firmware binaries by only enabling desired drivers. In other words, users should be allowed to restrict the set of RISC-V platforms on which OpenSBI generic firmwares built by them can run.
Quoted 5 lines
To address above, we add
Kconfigsupport for OpenSBI platforms using the kconfig-frontends project which is a standalone kconfig parser.The kconfig-frontends is available as a package/receipe on various distros (such as Debian, UBuntu, OpenSUSE, etc) and Yocto project.
Hi Anup,
Quoted 7 lines
It doesn't look like Fedora provides that package. Also, is the source for the packages of those other distros maintained? If I found the correct source, then it's [1], which hasn't had any attention in five years, even though there have been hundreds of commits to Linux's
scripts/kconfig. I wonder if we shouldn't consider adoptingscripts/minikconf.pyfrom the QEMU sources and sticking to the kconfig language subset that parser supports?Quoted 2 lines
After spending a bit of time googling about kconfig-frontends it seems to be a dead project.
Yes, the kconfig-frontends project is not being developed but there are forks of this project since quite a few distros and yocto have support for it.
Is there a requirement that Fedora only adds packages for active projects ?
Quoted 1 line
Quoted 6 lines
Quoted 2 lines
Would kconfiglib work? That seems to be alive. While not directly available in Fedora too it's on pip.
I explored the kconfiglib project. It is only a library and we will endup maintaining our own tools for menuconfig, defconfig, etc in the OpenSBI sources.
I stand corrected. The kconfiglib project when installed using python-pip will install various tools menuconfig, defconfig, etc along with it which is very nice.
If we go with the kconfiglib project then we should expect users to install the kconfiglib package before building OpenSBI. Is this a reasonable requirement for Fedora and UBuntu ?
@Heinrich are you okay with this ?
Regards,
Anup
Quoted 167 lines
The best thing would be if we can avoid adding more tools and scripts in OpenSBI for kconfig. The kconfig-frontends allows us to do that.
If we have to add some tool/script in OpenSBI then I would prefer something (like QEMU
scripts/minikconf.py) which is minimalistic and does not add maintenance burden.Regards,
AnupQuoted 156 lines
Quoted 156 lines
[1] http://ymorin.is-a-geek.org/projects/kconfig-frontends
Thanks,
drewQuoted 136 lines
To try OpenSBI
Kconfigsupport with generic platform, here are few example commands:
make PLATFORM=generic <-- builds OpenSBI using "defconfig"
make PLATFORM=generic menuconfig <-- launches graphical interface for changesThese patches can also be found in the
kconfig_v2branch at:
https://github.com/avpatel/opensbi.gitChanges since v1:
- Fix SPDX license specifier in newKconfigfilesAnup Patel (14):
Makefile: Add initial kconfig support for each platform
Makefile: Compile lib/utils sources separately for each platform
lib: utils/serial: Use kconfig for enabling/disabling drivers
lib: utils/reset: Use kconfig for enabling/disabling drivers
lib: utils/sys: Use kconfig for enabling/disabling drivers
lib: utils/timer: Use kconfig for enabling/disabling drivers
lib: utils/ipi: Use kconfig for enabling/disabling drivers
lib: utils/irqchip: Use kconfig for enabling/disabling drivers
lib: utils/i2c: Use kconfig for enabling/disabling drivers
lib: utils/gpio: Use kconfig for enabling/disabling drivers
lib: utils/fdt: Use kconfig for enabling/disabling
platform: generic: Use kconfig for enabling/disabling overrides
platform: Remove redundant config.mk from all platforms
docs: Update documentation for kconfig supportKconfig | 23 +++++ Makefile | 102 ++++++++++++++++------ README.md | 25 +++++- docs/firmware/fw_dynamic.md | 2 +- docs/firmware/fw_jump.md | 4 +- docs/firmware/fw_payload.md | 4 +- docs/library_usage.md | 6 +- docs/platform/platform.md | 4 +- docs/platform_guide.md | 9 +- firmware/Kconfig | 1 + include/sbi_utils/fdt/fdt_domain.h | 9 ++ include/sbi_utils/fdt/fdt_pmu.h | 10 +++ include/sbi_utils/ipi/fdt_ipi.h | 9 ++ include/sbi_utils/irqchip/fdt_irqchip.h | 10 +++ include/sbi_utils/irqchip/imsic.h | 10 +++ include/sbi_utils/reset/fdt_reset.h | 12 +++ include/sbi_utils/serial/fdt_serial.h | 8 ++ include/sbi_utils/timer/fdt_timer.h | 9 ++ lib/utils/Kconfig | 25 ++++++ lib/utils/fdt/Kconfig | 18 ++++ lib/utils/fdt/objects.mk | 8 +- lib/utils/gpio/Kconfig | 23 +++++ lib/utils/gpio/objects.mk | 10 +-- lib/utils/i2c/Kconfig | 23 +++++ lib/utils/i2c/objects.mk | 10 +-- lib/utils/ipi/Kconfig | 23 +++++ lib/utils/ipi/objects.mk | 10 +-- lib/utils/irqchip/Kconfig | 41 +++++++++ lib/utils/irqchip/objects.mk | 22 ++--- lib/utils/libfdt/Kconfig | 5 ++ lib/utils/libfdt/objects.mk | 4 +- lib/utils/reset/Kconfig | 37 ++++++++ lib/utils/reset/objects.mk | 28 +++--- lib/utils/serial/Kconfig | 73 ++++++++++++++++ lib/utils/serial/objects.mk | 44 +++++----- lib/utils/sys/Kconfig | 13 +++ lib/utils/sys/objects.mk | 4 +- lib/utils/timer/Kconfig | 23 +++++ lib/utils/timer/objects.mk | 10 +-- platform/andes/ae350/Kconfig | 8 ++ platform/andes/ae350/config.mk | 36 -------- platform/andes/ae350/configs/defconfig | 0 platform/andes/ae350/objects.mk | 29 ++++++ platform/fpga/ariane/Kconfig | 10 +++ platform/fpga/ariane/config.mk | 36 -------- platform/fpga/ariane/configs/defconfig | 0 platform/fpga/ariane/objects.mk | 35 ++++++++ platform/fpga/openpiton/Kconfig | 10 +++ platform/fpga/openpiton/config.mk | 35 -------- platform/fpga/openpiton/configs/defconfig | 0 platform/fpga/openpiton/objects.mk | 35 ++++++++ platform/generic/Kconfig | 26 ++++++ platform/generic/allwinner/objects.mk | 4 +- platform/generic/config.mk | 40 --------- platform/generic/configs/defconfig | 29 ++++++ platform/generic/objects.mk | 33 +++++++ platform/generic/sifive/objects.mk | 8 +- platform/kendryte/k210/Kconfig | 10 +++ platform/kendryte/k210/config.mk | 19 ---- platform/kendryte/k210/configs/defconfig | 0 platform/kendryte/k210/objects.mk | 12 +++ platform/nuclei/ux600/Kconfig | 10 +++ platform/nuclei/ux600/config.mk | 30 ------- platform/nuclei/ux600/configs/defconfig | 0 platform/nuclei/ux600/objects.mk | 22 +++++ platform/nuclei/ux600/platform.c | 1 - platform/template/Kconfig | 9 ++ platform/template/config.mk | 77 ---------------- platform/template/configs/defconfig | 0 platform/template/objects.mk | 72 +++++++++++++++ platform/template/platform.c | 2 +- scripts/create-binary-archive.sh | 2 +- 72 files changed, 948 insertions(+), 403 deletions(-) create mode 100644 Kconfig create mode 100644 firmware/Kconfig create mode 100644 lib/utils/Kconfig create mode 100644 lib/utils/fdt/Kconfig create mode 100644 lib/utils/gpio/Kconfig create mode 100644 lib/utils/i2c/Kconfig create mode 100644 lib/utils/ipi/Kconfig create mode 100644 lib/utils/irqchip/Kconfig create mode 100644 lib/utils/libfdt/Kconfig create mode 100644 lib/utils/reset/Kconfig create mode 100644 lib/utils/serial/Kconfig create mode 100644 lib/utils/sys/Kconfig create mode 100644 lib/utils/timer/Kconfig create mode 100644 platform/andes/ae350/Kconfig delete mode 100644 platform/andes/ae350/config.mk create mode 100644 platform/andes/ae350/configs/defconfig create mode 100644 platform/fpga/ariane/Kconfig delete mode 100644 platform/fpga/ariane/config.mk create mode 100644 platform/fpga/ariane/configs/defconfig create mode 100644 platform/fpga/openpiton/Kconfig delete mode 100644 platform/fpga/openpiton/config.mk create mode 100644 platform/fpga/openpiton/configs/defconfig create mode 100644 platform/generic/Kconfig delete mode 100644 platform/generic/config.mk create mode 100644 platform/generic/configs/defconfig create mode 100644 platform/kendryte/k210/Kconfig delete mode 100644 platform/kendryte/k210/config.mk create mode 100644 platform/kendryte/k210/configs/defconfig create mode 100644 platform/nuclei/ux600/Kconfig delete mode 100644 platform/nuclei/ux600/config.mk create mode 100644 platform/nuclei/ux600/configs/defconfig create mode 100644 platform/template/Kconfig delete mode 100644 platform/template/config.mk create mode 100644 platform/template/configs/defconfigQuoted 8 lines
--
2.34.1--
opensbi mailing list
opensbi at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/opensbi--
opensbi mailing list
opensbi at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/opensbi
v2 cover OpenSBI Kconfig Support
Quoted 33 lines · Anup Patel
Quoted 32 lines · Anup Patel
+Heinrich
Quoted 27 lines · David Abdurachmanov
Quoted 24 lines · Andrew Jones
Quoted 7 lines · Anup Patel
In future, we will see more drivers in OpenSBI for system reset, serial port, power management, etc platform specific devices. We need platform specific compile time configuration to allow users control the size of OpenSBI generic firmware binaries by only enabling desired drivers. In other words, users should be allowed to restrict the set of RISC-V platforms on which OpenSBI generic firmwares built by them can run.
Quoted 5 lines
To address above, we add
Kconfigsupport for OpenSBI platforms using the kconfig-frontends project which is a standalone kconfig parser.The kconfig-frontends is available as a package/receipe on various distros (such as Debian, UBuntu, OpenSUSE, etc) and Yocto project.
Hi Anup,
It doesn't look like Fedora provides that package. Also, is the source for the packages of those other distros maintained? If I found the correct source, then it's [1], which hasn't had any attention in five years, even though there have been hundreds of commits to Linux's
scripts/kconfig. I wonder if we shouldn't consider adoptingscripts/minikconf.pyfrom the QEMU sources and sticking to the kconfig language subset that parser supports?
Quoted 6 lines
Quoted 6 lines
Quoted 2 lines
After spending a bit of time googling about kconfig-frontends it seems to be a dead project.
Yes, the kconfig-frontends project is not being developed but there are forks of this project since quite a few distros and yocto have support for it.
Ubuntu's package is based on
https://salsa.debian.org/philou/kconfig-frontends which has not seen a code update for four years. The upstream project is obviously also dead.
Quoted 7 lines
Quoted 7 lines
Is there a requirement that Fedora only adds packages for active projects ?
Quoted 3 lines
Would kconfiglib work? That seems to be alive. While not directly available in Fedora too it's on pip.
Quoted 7 lines
Quoted 3 lines
I explored the kconfiglib project. It is only a library and we will endup maintaining our own tools for menuconfig, defconfig, etc in the OpenSBI sources.
I stand corrected. The kconfiglib project when installed using python-pip will install various tools menuconfig, defconfig, etc along with it which is very nice.
Securitywise pip is a not recommendable. There is no code review required before uploading to the Python package repository.
Quoted 6 lines
If we go with the kconfiglib project then we should expect users to install the kconfiglib package before building OpenSBI. Is this a reasonable requirement for Fedora and UBuntu ?
@Heinrich are you okay with this
Ubuntu provides OpenSBI as a package. So it is package maintainers not users that are concerned. kconfig-frontends currently is in the Universe repository (community supported). This would have to change since OpenSBI is in the main repository (Canonical supported). Putting software based on a a dead project into main is not preferred.
Maintaining OpenSBI for a distro is easier with a single version of the the software instead of maintaining a package for each board. So I was quite happy with PLATFORM=generic ruling them all.
Kconfig is licensed under GPL. It will not be available in BSD distributions. Please, include BSD distros in your considerations.
Best regards
Heinrich
Quoted 171 lines
Regards,
AnupQuoted 167 lines
The best thing would be if we can avoid adding more tools and scripts in OpenSBI for kconfig. The kconfig-frontends allows us to do that.
If we have to add some tool/script in OpenSBI then I would prefer something (like QEMU
scripts/minikconf.py) which is minimalistic and does not add maintenance burden.Regards,
AnupQuoted 156 lines
Quoted 156 lines
[1] http://ymorin.is-a-geek.org/projects/kconfig-frontends
Thanks,
drewQuoted 136 lines
To try OpenSBI
Kconfigsupport with generic platform, here are few example commands:
make PLATFORM=generic <-- builds OpenSBI using "defconfig"
make PLATFORM=generic menuconfig <-- launches graphical interface for changesThese patches can also be found in the
kconfig_v2branch at:
https://github.com/avpatel/opensbi.gitChanges since v1:
- Fix SPDX license specifier in newKconfigfilesAnup Patel (14):
Makefile: Add initial kconfig support for each platform
Makefile: Compile lib/utils sources separately for each platform
lib: utils/serial: Use kconfig for enabling/disabling drivers
lib: utils/reset: Use kconfig for enabling/disabling drivers
lib: utils/sys: Use kconfig for enabling/disabling drivers
lib: utils/timer: Use kconfig for enabling/disabling drivers
lib: utils/ipi: Use kconfig for enabling/disabling drivers
lib: utils/irqchip: Use kconfig for enabling/disabling drivers
lib: utils/i2c: Use kconfig for enabling/disabling drivers
lib: utils/gpio: Use kconfig for enabling/disabling drivers
lib: utils/fdt: Use kconfig for enabling/disabling
platform: generic: Use kconfig for enabling/disabling overrides
platform: Remove redundant config.mk from all platforms
docs: Update documentation for kconfig supportKconfig | 23 +++++ Makefile | 102 ++++++++++++++++------ README.md | 25 +++++- docs/firmware/fw_dynamic.md | 2 +- docs/firmware/fw_jump.md | 4 +- docs/firmware/fw_payload.md | 4 +- docs/library_usage.md | 6 +- docs/platform/platform.md | 4 +- docs/platform_guide.md | 9 +- firmware/Kconfig | 1 + include/sbi_utils/fdt/fdt_domain.h | 9 ++ include/sbi_utils/fdt/fdt_pmu.h | 10 +++ include/sbi_utils/ipi/fdt_ipi.h | 9 ++ include/sbi_utils/irqchip/fdt_irqchip.h | 10 +++ include/sbi_utils/irqchip/imsic.h | 10 +++ include/sbi_utils/reset/fdt_reset.h | 12 +++ include/sbi_utils/serial/fdt_serial.h | 8 ++ include/sbi_utils/timer/fdt_timer.h | 9 ++ lib/utils/Kconfig | 25 ++++++ lib/utils/fdt/Kconfig | 18 ++++ lib/utils/fdt/objects.mk | 8 +- lib/utils/gpio/Kconfig | 23 +++++ lib/utils/gpio/objects.mk | 10 +-- lib/utils/i2c/Kconfig | 23 +++++ lib/utils/i2c/objects.mk | 10 +-- lib/utils/ipi/Kconfig | 23 +++++ lib/utils/ipi/objects.mk | 10 +-- lib/utils/irqchip/Kconfig | 41 +++++++++ lib/utils/irqchip/objects.mk | 22 ++--- lib/utils/libfdt/Kconfig | 5 ++ lib/utils/libfdt/objects.mk | 4 +- lib/utils/reset/Kconfig | 37 ++++++++ lib/utils/reset/objects.mk | 28 +++--- lib/utils/serial/Kconfig | 73 ++++++++++++++++ lib/utils/serial/objects.mk | 44 +++++----- lib/utils/sys/Kconfig | 13 +++ lib/utils/sys/objects.mk | 4 +- lib/utils/timer/Kconfig | 23 +++++ lib/utils/timer/objects.mk | 10 +-- platform/andes/ae350/Kconfig | 8 ++ platform/andes/ae350/config.mk | 36 -------- platform/andes/ae350/configs/defconfig | 0 platform/andes/ae350/objects.mk | 29 ++++++ platform/fpga/ariane/Kconfig | 10 +++ platform/fpga/ariane/config.mk | 36 -------- platform/fpga/ariane/configs/defconfig | 0 platform/fpga/ariane/objects.mk | 35 ++++++++ platform/fpga/openpiton/Kconfig | 10 +++ platform/fpga/openpiton/config.mk | 35 -------- platform/fpga/openpiton/configs/defconfig | 0 platform/fpga/openpiton/objects.mk | 35 ++++++++ platform/generic/Kconfig | 26 ++++++ platform/generic/allwinner/objects.mk | 4 +- platform/generic/config.mk | 40 --------- platform/generic/configs/defconfig | 29 ++++++ platform/generic/objects.mk | 33 +++++++ platform/generic/sifive/objects.mk | 8 +- platform/kendryte/k210/Kconfig | 10 +++ platform/kendryte/k210/config.mk | 19 ---- platform/kendryte/k210/configs/defconfig | 0 platform/kendryte/k210/objects.mk | 12 +++ platform/nuclei/ux600/Kconfig | 10 +++ platform/nuclei/ux600/config.mk | 30 ------- platform/nuclei/ux600/configs/defconfig | 0 platform/nuclei/ux600/objects.mk | 22 +++++ platform/nuclei/ux600/platform.c | 1 - platform/template/Kconfig | 9 ++ platform/template/config.mk | 77 ---------------- platform/template/configs/defconfig | 0 platform/template/objects.mk | 72 +++++++++++++++ platform/template/platform.c | 2 +- scripts/create-binary-archive.sh | 2 +- 72 files changed, 948 insertions(+), 403 deletions(-)create mode 100644
Kconfig
create mode 100644firmware/Kconfig
create mode 100644lib/utils/Kconfig
create mode 100644lib/utils/fdt/Kconfig
create mode 100644lib/utils/gpio/Kconfig
create mode 100644lib/utils/i2c/Kconfig
create mode 100644lib/utils/ipi/Kconfig
create mode 100644lib/utils/irqchip/Kconfigcreate mode 100644lib/utils/libfdt/Kconfig
create mode 100644lib/utils/reset/Kconfig
create mode 100644lib/utils/serial/Kconfig
create mode 100644lib/utils/sys/Kconfig
create mode 100644lib/utils/timer/Kconfig
create mode 100644 platform/andes/ae350/Kconfig delete mode 100644platform/andes/ae350/config.mkcreate mode 100644 platform/andes/ae350/configs/defconfig create mode 100644 platform/fpga/ariane/Kconfig delete mode 100644platform/fpga/ariane/config.mkcreate mode 100644 platform/fpga/ariane/configs/defconfig create mode 100644 platform/fpga/openpiton/Kconfig delete mode 100644platform/fpga/openpiton/config.mkcreate mode 100644 platform/fpga/openpiton/configs/defconfig create mode 100644 platform/generic/Kconfig
delete mode 100644platform/generic/config.mkcreate mode 100644 platform/generic/configs/defconfig create mode 100644 platform/kendryte/k210/Kconfig delete mode 100644platform/kendryte/k210/config.mkcreate mode 100644 platform/kendryte/k210/configs/defconfig create mode 100644 platform/nuclei/ux600/Kconfig delete mode 100644platform/nuclei/ux600/config.mkcreate mode 100644 platform/nuclei/ux600/configs/defconfig create mode 100644 platform/template/Kconfig delete mode 100644platform/template/config.mkcreate mode 100644 platform/template/configs/defconfigQuoted 8 lines
--
2.34.1--
opensbi mailing list
opensbi at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/opensbi--
opensbi mailing list
opensbi at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/opensbi
v2 cover OpenSBI Kconfig Support
Quoted 5 lines · Heinrich Schuchardt
Ubuntu provides OpenSBI as a package. So it is package maintainers not users that are concerned. kconfig-frontends currently is in the Universe repository (community supported). This would have to change since OpenSBI is in the main repository (Canonical supported). Putting software based on a a dead project into main is not preferred.
kconfig-frontends is not available on openSUSE Factory either.
Signature · 3 lines
Andreas Schwab, SUSE Labs, schwab at suse.de GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different."
v2 cover OpenSBI Kconfig Support
Quoted 10 lines · Andreas Schwab
Quoted 5 lines · Heinrich Schuchardt
Ubuntu provides OpenSBI as a package. So it is package maintainers not users that are concerned. kconfig-frontends currently is in the Universe repository (community supported). This would have to change since OpenSBI is in the main repository (Canonical supported). Putting software based on a a dead project into main is not preferred.
kconfig-frontends is not available on openSUSE Factory either.
Fair enough. We should use something else.
Kconfiglib seems to be a good option except the issues pointed by Heinrich:
1) Python pip is not recommended security wise
2) The LICENSE of Kconfiglib needs to be compatible with BSD distros
The Kconfiglib LICENSE is definitely not GPL and seems compatible with BSD-2-clause and MIT licenses.
(Refer, https://github.com/ulfalizer/Kconfiglib/blob/master/LICENSE.txt)
To address security concerns, we can do one of the following:
A) Include Kconfiglib source under scripts/ directory.
B) Recommend that OpenSBI users, install Kconfiglib as distro package instead of python-pip3 installer (e.g. python3-kconfiglib package available on Ubuntu)
IMO, the option A mentioned above has a maintenance burden and if possible we should avoid it.
Regards,
Anup
Quoted 5 lines
--
Andreas Schwab, SUSE Labs, schwab at suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different."
v2 cover OpenSBI Kconfig Support
Quoted 10 lines · Anup Patel
Quoted 9 lines · Andreas Schwab
Quoted 5 lines · Heinrich Schuchardt
Ubuntu provides OpenSBI as a package. So it is package maintainers not users that are concerned. kconfig-frontends currently is in the Universe repository (community supported). This would have to change since OpenSBI is in the main repository (Canonical supported). Putting software based on a a dead project into main is not preferred.
Quoted 7 lines
Quoted 1 line
kconfig-frontends is not available on openSUSE Factory either.
Fair enough. We should use something else.
Kconfiglib seems to be a good option except the issues pointed by Heinrich:
1) Python pip is not recommended security wise
2) The LICENSE of Kconfiglib needs to be compatible with BSD distros
Bugs in kconfiglib are not fixed in a timely manner. See
https://github.com/ulfalizer/Kconfiglib/issues/105
The last commit was in Jan 2020. So another dead project.
Best regards
Heinrich
Quoted 25 lines
The Kconfiglib LICENSE is definitely not GPL and seems compatible with BSD-2-clause and MIT licenses.
(Refer, https://github.com/ulfalizer/Kconfiglib/blob/master/LICENSE.txt)To address security concerns, we can do one of the following:
A) Include Kconfiglib source underscripts/directory.
B) Recommend that OpenSBI users, install Kconfiglib as distro package instead of python-pip3 installer (e.g. python3-kconfiglib package available on Ubuntu)IMO, the option A mentioned above has a maintenance burden and if possible we should avoid it.
Regards,
AnupQuoted 5 lines
--
Andreas Schwab, SUSE Labs, schwab at suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different."
v2 cover OpenSBI Kconfig Support
Quoted 16 lines · Heinrich Schuchardt
Quoted 14 lines · Anup Patel
Quoted 10 lines · Andreas Schwab
Quoted 5 lines · Heinrich Schuchardt
Ubuntu provides OpenSBI as a package. So it is package maintainers not users that are concerned. kconfig-frontends currently is in the Universe repository (community supported). This would have to change since OpenSBI is in the main repository (Canonical supported). Putting software based on a a dead project into main is not preferred.
kconfig-frontends is not available on openSUSE Factory either.
Fair enough. We should use something else.
Quoted 8 lines
Quoted 3 lines
Kconfiglib seems to be a good option except the issues pointed by Heinrich:
1) Python pip is not recommended security wise
2) The LICENSE of Kconfiglib needs to be compatible with BSD distrosBugs in kconfiglib are not fixed in a timely manner. See
https://github.com/ulfalizer/Kconfiglib/issues/105The last commit was in Jan 2020. So another dead project.
Let me send a v3 with Kconfiglib tools included in OpenSBI sources so that we are not dependent on the Kconfiglib project to actively fix issues for us.
Regards,
Anup
Quoted 31 lines
Best regards
Heinrich
Quoted 25 lines
The Kconfiglib LICENSE is definitely not GPL and seems compatible with BSD-2-clause and MIT licenses.
(Refer, https://github.com/ulfalizer/Kconfiglib/blob/master/LICENSE.txt)To address security concerns, we can do one of the following:
A) Include Kconfiglib source underscripts/directory.
B) Recommend that OpenSBI users, install Kconfiglib as distro package instead of python-pip3 installer (e.g. python3-kconfiglib package available on Ubuntu)IMO, the option A mentioned above has a maintenance burden and if possible we should avoid it.
Regards,
AnupQuoted 5 lines
--
Andreas Schwab, SUSE Labs, schwab at suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different."
v2 cover OpenSBI Kconfig Support
In reply to Andrew Jones+Heinrich
Quoted 25 lines · Andrew Jones
Quoted 7 lines · Anup Patel
In future, we will see more drivers in OpenSBI for system reset, serial port, power management, etc platform specific devices. We need platform specific compile time configuration to allow users control the size of OpenSBI generic firmware binaries by only enabling desired drivers. In other words, users should be allowed to restrict the set of RISC-V platforms on which OpenSBI generic firmwares built by them can run.
Quoted 5 lines
To address above, we add
Kconfigsupport for OpenSBI platforms using the kconfig-frontends project which is a standalone kconfig parser.The kconfig-frontends is available as a package/receipe on various distros (such as Debian, UBuntu, OpenSUSE, etc) and Yocto project.
Hi Anup,
It doesn't look like Fedora provides that package. Also, is the source for the packages of those other distros maintained? If I found the correct source, then it's [1], which hasn't had any attention in five years, even though there have been hundreds of commits to Linux's
scripts/kconfig. I wonder if we shouldn't consider adoptingscripts/minikconf.pyfrom the QEMU sources and sticking to the kconfig language subset that parser supports?
Quoted 1 line
Actually, it seems quite a few distros (particularly debian, ubuntu, and yocto) have already included the kconfig-frontends package so I wonder why Fedora did not include a package for it ?
The QEMU scripts/minikconf.py is pretty compact and would be our next best alternative but it doesn't have menuconfig support.
Regards,
Anup
Quoted 148 lines
Thanks,
drewQuoted 144 lines
To try OpenSBI
Kconfigsupport with generic platform, here are few example commands:
make PLATFORM=generic <-- builds OpenSBI using "defconfig"
make PLATFORM=generic menuconfig <-- launches graphical interface for changesThese patches can also be found in the
kconfig_v2branch at:
https://github.com/avpatel/opensbi.gitChanges since v1:
- Fix SPDX license specifier in newKconfigfilesAnup Patel (14):
Makefile: Add initial kconfig support for each platform
Makefile: Compile lib/utils sources separately for each platform
lib: utils/serial: Use kconfig for enabling/disabling drivers
lib: utils/reset: Use kconfig for enabling/disabling drivers
lib: utils/sys: Use kconfig for enabling/disabling drivers
lib: utils/timer: Use kconfig for enabling/disabling drivers
lib: utils/ipi: Use kconfig for enabling/disabling drivers
lib: utils/irqchip: Use kconfig for enabling/disabling drivers
lib: utils/i2c: Use kconfig for enabling/disabling drivers
lib: utils/gpio: Use kconfig for enabling/disabling drivers
lib: utils/fdt: Use kconfig for enabling/disabling
platform: generic: Use kconfig for enabling/disabling overrides
platform: Remove redundant config.mk from all platforms
docs: Update documentation for kconfig supportKconfig | 23 +++++ Makefile | 102 ++++++++++++++++------ README.md | 25 +++++- docs/firmware/fw_dynamic.md | 2 +- docs/firmware/fw_jump.md | 4 +- docs/firmware/fw_payload.md | 4 +- docs/library_usage.md | 6 +- docs/platform/platform.md | 4 +- docs/platform_guide.md | 9 +- firmware/Kconfig | 1 + include/sbi_utils/fdt/fdt_domain.h | 9 ++ include/sbi_utils/fdt/fdt_pmu.h | 10 +++ include/sbi_utils/ipi/fdt_ipi.h | 9 ++ include/sbi_utils/irqchip/fdt_irqchip.h | 10 +++ include/sbi_utils/irqchip/imsic.h | 10 +++ include/sbi_utils/reset/fdt_reset.h | 12 +++ include/sbi_utils/serial/fdt_serial.h | 8 ++ include/sbi_utils/timer/fdt_timer.h | 9 ++ lib/utils/Kconfig | 25 ++++++ lib/utils/fdt/Kconfig | 18 ++++ lib/utils/fdt/objects.mk | 8 +- lib/utils/gpio/Kconfig | 23 +++++ lib/utils/gpio/objects.mk | 10 +-- lib/utils/i2c/Kconfig | 23 +++++ lib/utils/i2c/objects.mk | 10 +-- lib/utils/ipi/Kconfig | 23 +++++ lib/utils/ipi/objects.mk | 10 +-- lib/utils/irqchip/Kconfig | 41 +++++++++ lib/utils/irqchip/objects.mk | 22 ++--- lib/utils/libfdt/Kconfig | 5 ++ lib/utils/libfdt/objects.mk | 4 +- lib/utils/reset/Kconfig | 37 ++++++++ lib/utils/reset/objects.mk | 28 +++--- lib/utils/serial/Kconfig | 73 ++++++++++++++++ lib/utils/serial/objects.mk | 44 +++++----- lib/utils/sys/Kconfig | 13 +++ lib/utils/sys/objects.mk | 4 +- lib/utils/timer/Kconfig | 23 +++++ lib/utils/timer/objects.mk | 10 +-- platform/andes/ae350/Kconfig | 8 ++ platform/andes/ae350/config.mk | 36 -------- platform/andes/ae350/configs/defconfig | 0 platform/andes/ae350/objects.mk | 29 ++++++ platform/fpga/ariane/Kconfig | 10 +++ platform/fpga/ariane/config.mk | 36 -------- platform/fpga/ariane/configs/defconfig | 0 platform/fpga/ariane/objects.mk | 35 ++++++++ platform/fpga/openpiton/Kconfig | 10 +++ platform/fpga/openpiton/config.mk | 35 -------- platform/fpga/openpiton/configs/defconfig | 0 platform/fpga/openpiton/objects.mk | 35 ++++++++ platform/generic/Kconfig | 26 ++++++ platform/generic/allwinner/objects.mk | 4 +- platform/generic/config.mk | 40 --------- platform/generic/configs/defconfig | 29 ++++++ platform/generic/objects.mk | 33 +++++++ platform/generic/sifive/objects.mk | 8 +- platform/kendryte/k210/Kconfig | 10 +++ platform/kendryte/k210/config.mk | 19 ---- platform/kendryte/k210/configs/defconfig | 0 platform/kendryte/k210/objects.mk | 12 +++ platform/nuclei/ux600/Kconfig | 10 +++ platform/nuclei/ux600/config.mk | 30 ------- platform/nuclei/ux600/configs/defconfig | 0 platform/nuclei/ux600/objects.mk | 22 +++++ platform/nuclei/ux600/platform.c | 1 - platform/template/Kconfig | 9 ++ platform/template/config.mk | 77 ---------------- platform/template/configs/defconfig | 0 platform/template/objects.mk | 72 +++++++++++++++ platform/template/platform.c | 2 +- scripts/create-binary-archive.sh | 2 +- 72 files changed, 948 insertions(+), 403 deletions(-) create mode 100644 Kconfig create mode 100644 firmware/Kconfig create mode 100644 lib/utils/Kconfig create mode 100644 lib/utils/fdt/Kconfig create mode 100644 lib/utils/gpio/Kconfig create mode 100644 lib/utils/i2c/Kconfig create mode 100644 lib/utils/ipi/Kconfig create mode 100644 lib/utils/irqchip/Kconfig create mode 100644 lib/utils/libfdt/Kconfig create mode 100644 lib/utils/reset/Kconfig create mode 100644 lib/utils/serial/Kconfig create mode 100644 lib/utils/sys/Kconfig create mode 100644 lib/utils/timer/Kconfig create mode 100644 platform/andes/ae350/Kconfig delete mode 100644 platform/andes/ae350/config.mk create mode 100644 platform/andes/ae350/configs/defconfig create mode 100644 platform/fpga/ariane/Kconfig delete mode 100644 platform/fpga/ariane/config.mk create mode 100644 platform/fpga/ariane/configs/defconfig create mode 100644 platform/fpga/openpiton/Kconfig delete mode 100644 platform/fpga/openpiton/config.mk create mode 100644 platform/fpga/openpiton/configs/defconfig create mode 100644 platform/generic/Kconfig delete mode 100644 platform/generic/config.mk create mode 100644 platform/generic/configs/defconfig create mode 100644 platform/kendryte/k210/Kconfig delete mode 100644 platform/kendryte/k210/config.mk create mode 100644 platform/kendryte/k210/configs/defconfig create mode 100644 platform/nuclei/ux600/Kconfig delete mode 100644 platform/nuclei/ux600/config.mk create mode 100644 platform/nuclei/ux600/configs/defconfig create mode 100644 platform/template/Kconfig delete mode 100644 platform/template/config.mk create mode 100644 platform/template/configs/defconfig--
2.34.1--
opensbi mailing list
opensbi at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/opensbi
v2 cover OpenSBI Kconfig Support
Quoted 27 lines · Anup Patel
+Heinrich
Quoted 25 lines · Andrew Jones
Quoted 7 lines · Anup Patel
In future, we will see more drivers in OpenSBI for system reset, serial port, power management, etc platform specific devices. We need platform specific compile time configuration to allow users control the size of OpenSBI generic firmware binaries by only enabling desired drivers. In other words, users should be allowed to restrict the set of RISC-V platforms on which OpenSBI generic firmwares built by them can run.
Quoted 5 lines
To address above, we add
Kconfigsupport for OpenSBI platforms using the kconfig-frontends project which is a standalone kconfig parser.The kconfig-frontends is available as a package/receipe on various distros (such as Debian, UBuntu, OpenSUSE, etc) and Yocto project.
Hi Anup,
It doesn't look like Fedora provides that package. Also, is the source for the packages of those other distros maintained? If I found the correct source, then it's [1], which hasn't had any attention in five years, even though there have been hundreds of commits to Linux's
scripts/kconfig. I wonder if we shouldn't consider adoptingscripts/minikconf.pyfrom the QEMU sources and sticking to the kconfig language subset that parser supports?
Quoted 5 lines
Quoted 1 line
Actually, it seems quite a few distros (particularly debian, ubuntu, and yocto) have already included the kconfig-frontends package so I wonder why Fedora did not include a package for it ?
As others on this thread pointed out, it's probably due to lack of interest in maintaining it.
Quoted 3 lines
The QEMU
scripts/minikconf.pyis pretty compact and would be our next best alternative but it doesn't have menuconfig support.
IMHO, we should try to avoid requiring external dependencies. Something like menuconfig will require something external, so we should also have a text-only alternative built in.
Thanks,
drew
Quoted 152 lines
Regards,
AnupQuoted 148 lines
Thanks,
drewQuoted 144 lines
To try OpenSBI
Kconfigsupport with generic platform, here are few example commands:
make PLATFORM=generic <-- builds OpenSBI using "defconfig"
make PLATFORM=generic menuconfig <-- launches graphical interface for changesThese patches can also be found in the
kconfig_v2branch at:
https://github.com/avpatel/opensbi.gitChanges since v1:
- Fix SPDX license specifier in newKconfigfilesAnup Patel (14):
Makefile: Add initial kconfig support for each platform
Makefile: Compile lib/utils sources separately for each platform
lib: utils/serial: Use kconfig for enabling/disabling drivers
lib: utils/reset: Use kconfig for enabling/disabling drivers
lib: utils/sys: Use kconfig for enabling/disabling drivers
lib: utils/timer: Use kconfig for enabling/disabling drivers
lib: utils/ipi: Use kconfig for enabling/disabling drivers
lib: utils/irqchip: Use kconfig for enabling/disabling drivers
lib: utils/i2c: Use kconfig for enabling/disabling drivers
lib: utils/gpio: Use kconfig for enabling/disabling drivers
lib: utils/fdt: Use kconfig for enabling/disabling
platform: generic: Use kconfig for enabling/disabling overrides
platform: Remove redundant config.mk from all platforms
docs: Update documentation for kconfig supportKconfig | 23 +++++ Makefile | 102 ++++++++++++++++------ README.md | 25 +++++- docs/firmware/fw_dynamic.md | 2 +- docs/firmware/fw_jump.md | 4 +- docs/firmware/fw_payload.md | 4 +- docs/library_usage.md | 6 +- docs/platform/platform.md | 4 +- docs/platform_guide.md | 9 +- firmware/Kconfig | 1 + include/sbi_utils/fdt/fdt_domain.h | 9 ++ include/sbi_utils/fdt/fdt_pmu.h | 10 +++ include/sbi_utils/ipi/fdt_ipi.h | 9 ++ include/sbi_utils/irqchip/fdt_irqchip.h | 10 +++ include/sbi_utils/irqchip/imsic.h | 10 +++ include/sbi_utils/reset/fdt_reset.h | 12 +++ include/sbi_utils/serial/fdt_serial.h | 8 ++ include/sbi_utils/timer/fdt_timer.h | 9 ++ lib/utils/Kconfig | 25 ++++++ lib/utils/fdt/Kconfig | 18 ++++ lib/utils/fdt/objects.mk | 8 +- lib/utils/gpio/Kconfig | 23 +++++ lib/utils/gpio/objects.mk | 10 +-- lib/utils/i2c/Kconfig | 23 +++++ lib/utils/i2c/objects.mk | 10 +-- lib/utils/ipi/Kconfig | 23 +++++ lib/utils/ipi/objects.mk | 10 +-- lib/utils/irqchip/Kconfig | 41 +++++++++ lib/utils/irqchip/objects.mk | 22 ++--- lib/utils/libfdt/Kconfig | 5 ++ lib/utils/libfdt/objects.mk | 4 +- lib/utils/reset/Kconfig | 37 ++++++++ lib/utils/reset/objects.mk | 28 +++--- lib/utils/serial/Kconfig | 73 ++++++++++++++++ lib/utils/serial/objects.mk | 44 +++++----- lib/utils/sys/Kconfig | 13 +++ lib/utils/sys/objects.mk | 4 +- lib/utils/timer/Kconfig | 23 +++++ lib/utils/timer/objects.mk | 10 +-- platform/andes/ae350/Kconfig | 8 ++ platform/andes/ae350/config.mk | 36 -------- platform/andes/ae350/configs/defconfig | 0 platform/andes/ae350/objects.mk | 29 ++++++ platform/fpga/ariane/Kconfig | 10 +++ platform/fpga/ariane/config.mk | 36 -------- platform/fpga/ariane/configs/defconfig | 0 platform/fpga/ariane/objects.mk | 35 ++++++++ platform/fpga/openpiton/Kconfig | 10 +++ platform/fpga/openpiton/config.mk | 35 -------- platform/fpga/openpiton/configs/defconfig | 0 platform/fpga/openpiton/objects.mk | 35 ++++++++ platform/generic/Kconfig | 26 ++++++ platform/generic/allwinner/objects.mk | 4 +- platform/generic/config.mk | 40 --------- platform/generic/configs/defconfig | 29 ++++++ platform/generic/objects.mk | 33 +++++++ platform/generic/sifive/objects.mk | 8 +- platform/kendryte/k210/Kconfig | 10 +++ platform/kendryte/k210/config.mk | 19 ---- platform/kendryte/k210/configs/defconfig | 0 platform/kendryte/k210/objects.mk | 12 +++ platform/nuclei/ux600/Kconfig | 10 +++ platform/nuclei/ux600/config.mk | 30 ------- platform/nuclei/ux600/configs/defconfig | 0 platform/nuclei/ux600/objects.mk | 22 +++++ platform/nuclei/ux600/platform.c | 1 - platform/template/Kconfig | 9 ++ platform/template/config.mk | 77 ---------------- platform/template/configs/defconfig | 0 platform/template/objects.mk | 72 +++++++++++++++ platform/template/platform.c | 2 +- scripts/create-binary-archive.sh | 2 +- 72 files changed, 948 insertions(+), 403 deletions(-) create mode 100644 Kconfig create mode 100644 firmware/Kconfig create mode 100644 lib/utils/Kconfig create mode 100644 lib/utils/fdt/Kconfig create mode 100644 lib/utils/gpio/Kconfig create mode 100644 lib/utils/i2c/Kconfig create mode 100644 lib/utils/ipi/Kconfig create mode 100644 lib/utils/irqchip/Kconfig create mode 100644 lib/utils/libfdt/Kconfig create mode 100644 lib/utils/reset/Kconfig create mode 100644 lib/utils/serial/Kconfig create mode 100644 lib/utils/sys/Kconfig create mode 100644 lib/utils/timer/Kconfig create mode 100644 platform/andes/ae350/Kconfig delete mode 100644 platform/andes/ae350/config.mk create mode 100644 platform/andes/ae350/configs/defconfig create mode 100644 platform/fpga/ariane/Kconfig delete mode 100644 platform/fpga/ariane/config.mk create mode 100644 platform/fpga/ariane/configs/defconfig create mode 100644 platform/fpga/openpiton/Kconfig delete mode 100644 platform/fpga/openpiton/config.mk create mode 100644 platform/fpga/openpiton/configs/defconfig create mode 100644 platform/generic/Kconfig delete mode 100644 platform/generic/config.mk create mode 100644 platform/generic/configs/defconfig create mode 100644 platform/kendryte/k210/Kconfig delete mode 100644 platform/kendryte/k210/config.mk create mode 100644 platform/kendryte/k210/configs/defconfig create mode 100644 platform/nuclei/ux600/Kconfig delete mode 100644 platform/nuclei/ux600/config.mk create mode 100644 platform/nuclei/ux600/configs/defconfig create mode 100644 platform/template/Kconfig delete mode 100644 platform/template/config.mk create mode 100644 platform/template/configs/defconfig--
2.34.1--
opensbi mailing list
opensbi at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/opensbi