[PATCH v2 00/14] OpenSBI Kconfig Support
Anup Patel
apatel at ventanamicro.com
Mon Jul 18 07:55:57 PDT 2022
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
--
2.34.1
More information about the opensbi
mailing list