Skip to contentSkip to conversation

OpenSBI Kconfig Support

PATCH Superseded Anup Patel 3 participants 19 messages Jul 19, 2022 – Jul 20, 2022

Subsystems (3)

v3 of 8 Superseded Latest is v8 →

lore
Share & tools
lore

Anup Patel

author
#0 lore raw

v3 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 Kconfiglib project which is a standalone kconfig parser.

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_v3 branch at:
https://github.com/avpatel/opensbi.git

Changes since v2:
- Use $(FOO) instead of $FOO to access FOO environment variable in Kconfig files.
- Added a new PATCH1 to include Kconfiglib v14.1.0 sources under the scripts directory of OpenSBI.

Changes since v1:
- Fix SPDX license specifier in new Kconfig files

Anup Patel (15):
scripts: Add Kconfiglib v14.1.0 under scripts directory
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                                      |  104 +-
 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/Kconfiglib/LICENSE.txt                |    5 +
 scripts/Kconfiglib/MANIFEST.in                |    2 +
 scripts/Kconfiglib/README.rst                 |  841 ++
 scripts/Kconfiglib/alldefconfig.py            |   27 +
 scripts/Kconfiglib/allmodconfig.py            |   46 +
 scripts/Kconfiglib/allnoconfig.py             |   45 +
 scripts/Kconfiglib/allyesconfig.py            |   56 +
 scripts/Kconfiglib/defconfig.py               |   43 +
 scripts/Kconfiglib/examples/Kmenuconfig       |  102 +
 .../Kconfiglib/examples/allnoconfig_walk.py   |   66 +
 .../examples/defconfig_oldconfig.py           |   39 +
 scripts/Kconfiglib/examples/dumpvars.py       |   15 +
 scripts/Kconfiglib/examples/eval_expr.py      |   24 +
 scripts/Kconfiglib/examples/find_symbol.py    |  112 +
 scripts/Kconfiglib/examples/help_grep.py      |   64 +
 scripts/Kconfiglib/examples/kconfiglib.py     |    1 +
 scripts/Kconfiglib/examples/list_undefined.py |  156 +
 .../Kconfiglib/examples/menuconfig_example.py |  341 +
 scripts/Kconfiglib/examples/merge_config.py   |  121 +
 .../Kconfiglib/examples/print_config_tree.py  |  199 +
 scripts/Kconfiglib/examples/print_sym_info.py |   54 +
 scripts/Kconfiglib/examples/print_tree.py     |   75 +
 scripts/Kconfiglib/genconfig.py               |  154 +
 scripts/Kconfiglib/guiconfig.py               | 2324 ++++++
 scripts/Kconfiglib/kconfiglib.py              | 7160 +++++++++++++++++
 scripts/Kconfiglib/listnewconfig.py           |   76 +
 scripts/Kconfiglib/makefile.patch             |   48 +
 scripts/Kconfiglib/menuconfig.py              | 3278 ++++++++
 scripts/Kconfiglib/oldconfig.py               |  246 +
 scripts/Kconfiglib/olddefconfig.py            |   28 +
 scripts/Kconfiglib/savedefconfig.py           |   49 +
 scripts/Kconfiglib/setconfig.py               |   92 +
 scripts/Kconfiglib/setup.cfg                  |    7 +
 scripts/Kconfiglib/setup.py                   |   96 +
 scripts/Kconfiglib/tests/Kappend              |   12 +
 scripts/Kconfiglib/tests/Kassignable          |  230 +
 scripts/Kconfiglib/tests/Kchoice              |  198 +
 scripts/Kconfiglib/tests/Kdefconfig_existent  |    8 +
 .../tests/Kdefconfig_existent_but_n           |   10 +
 .../Kconfiglib/tests/Kdefconfig_nonexistent   |    5 +
 scripts/Kconfiglib/tests/Kdefconfig_srctree   |    5 +
 scripts/Kconfiglib/tests/Kdepcopy             |  173 +
 scripts/Kconfiglib/tests/Kdeploop0            |    3 +
 scripts/Kconfiglib/tests/Kdeploop1            |    3 +
 scripts/Kconfiglib/tests/Kdeploop10           |   48 +
 scripts/Kconfiglib/tests/Kdeploop2            |    3 +
 scripts/Kconfiglib/tests/Kdeploop3            |    3 +
 scripts/Kconfiglib/tests/Kdeploop4            |    7 +
 scripts/Kconfiglib/tests/Kdeploop5            |    7 +
 scripts/Kconfiglib/tests/Kdeploop6            |    6 +
 scripts/Kconfiglib/tests/Kdeploop7            |   11 +
 scripts/Kconfiglib/tests/Kdeploop8            |    8 +
 scripts/Kconfiglib/tests/Kdeploop9            |    7 +
 scripts/Kconfiglib/tests/Kdirdep              |   30 +
 scripts/Kconfiglib/tests/Kescape              |    3 +
 scripts/Kconfiglib/tests/Keval                |   34 +
 scripts/Kconfiglib/tests/Kexpr_items          |   11 +
 scripts/Kconfiglib/tests/Kheader              |    5 +
 scripts/Kconfiglib/tests/Khelp                |   50 +
 scripts/Kconfiglib/tests/Kifremoval           |   99 +
 scripts/Kconfiglib/tests/Kimply               |  145 +
 scripts/Kconfiglib/tests/Kinclude_path        |   12 +
 .../Kconfiglib/tests/Kinclude_path_sourced_1  |   12 +
 .../Kconfiglib/tests/Kinclude_path_sourced_2  |   11 +
 scripts/Kconfiglib/tests/Kitemlists           |   36 +
 scripts/Kconfiglib/tests/Klocation            |   78 +
 scripts/Kconfiglib/tests/Klocation_sourced    |   26 +
 scripts/Kconfiglib/tests/Kmainmenu            |    5 +
 scripts/Kconfiglib/tests/Kmenuconfig          |   37 +
 scripts/Kconfiglib/tests/Kmisc                |   82 +
 scripts/Kconfiglib/tests/Kmissingrsource      |    1 +
 scripts/Kconfiglib/tests/Kmissingsource       |    1 +
 scripts/Kconfiglib/tests/Korder               |   35 +
 scripts/Kconfiglib/tests/Kpreprocess          |  151 +
 scripts/Kconfiglib/tests/Krange               |  133 +
 scripts/Kconfiglib/tests/Krecursive1          |    1 +
 scripts/Kconfiglib/tests/Krecursive2          |    1 +
 scripts/Kconfiglib/tests/Kreferenced          |   63 +
 scripts/Kconfiglib/tests/Krelation            |   36 +
 scripts/Kconfiglib/tests/Krepr                |   64 +
 scripts/Kconfiglib/tests/Kstr                 |  293 +
 scripts/Kconfiglib/tests/Kundef               |   23 +
 scripts/Kconfiglib/tests/Kuserfunctions       |   14 +
 scripts/Kconfiglib/tests/Kvisibility          |  342 +
 scripts/Kconfiglib/tests/config_indented      |    3 +
 scripts/Kconfiglib/tests/config_set_bool      |    1 +
 scripts/Kconfiglib/tests/config_set_string    |    1 +
 scripts/Kconfiglib/tests/defconfig_1          |    0
 scripts/Kconfiglib/tests/defconfig_2          |    0
 scripts/Kconfiglib/tests/empty                |    0
 scripts/Kconfiglib/tests/kconfigfunctions.py  |   22 +
 scripts/Kconfiglib/tests/reltest              |   51 +
 .../Kconfiglib/tests/sub/Kconfig_symlink_2    |    1 +
 .../Kconfiglib/tests/sub/Kconfig_symlink_3    |    2 +
 .../Kconfiglib/tests/sub/Klocation_grsourced1 |    1 +
 .../Kconfiglib/tests/sub/Klocation_grsourced2 |    1 +
 .../Kconfiglib/tests/sub/Klocation_gsourced1  |    1 +
 .../Kconfiglib/tests/sub/Klocation_gsourced2  |    1 +
 .../Kconfiglib/tests/sub/Klocation_rsourced   |    2 +
 scripts/Kconfiglib/tests/sub/defconfig_in_sub |    0
 .../tests/sub/sub/Kconfig_symlink_1           |    2 +
 scripts/Kconfiglib/tests/symlink              |    1 +
 scripts/Kconfiglib/testsuite.py               | 3203 ++++++++
 scripts/create-binary-archive.sh              |    2 +-
 175 files changed, 22816 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
 create mode 100644 scripts/Kconfiglib/LICENSE.txt
 create mode 100644 scripts/Kconfiglib/MANIFEST.in
 create mode 100644 scripts/Kconfiglib/README.rst
 create mode 100755 scripts/Kconfiglib/alldefconfig.py
 create mode 100755 scripts/Kconfiglib/allmodconfig.py
 create mode 100755 scripts/Kconfiglib/allnoconfig.py
 create mode 100755 scripts/Kconfiglib/allyesconfig.py
 create mode 100755 scripts/Kconfiglib/defconfig.py
 create mode 100644 scripts/Kconfiglib/examples/Kmenuconfig
 create mode 100644 scripts/Kconfiglib/examples/allnoconfig_walk.py
 create mode 100644 scripts/Kconfiglib/examples/defconfig_oldconfig.py
 create mode 100644 scripts/Kconfiglib/examples/dumpvars.py
 create mode 100644 scripts/Kconfiglib/examples/eval_expr.py
 create mode 100644 scripts/Kconfiglib/examples/find_symbol.py
 create mode 100644 scripts/Kconfiglib/examples/help_grep.py
 create mode 120000 scripts/Kconfiglib/examples/kconfiglib.py
 create mode 100644 scripts/Kconfiglib/examples/list_undefined.py
 create mode 100755 scripts/Kconfiglib/examples/menuconfig_example.py
 create mode 100755 scripts/Kconfiglib/examples/merge_config.py
 create mode 100644 scripts/Kconfiglib/examples/print_config_tree.py
 create mode 100644 scripts/Kconfiglib/examples/print_sym_info.py
 create mode 100644 scripts/Kconfiglib/examples/print_tree.py
 create mode 100755 scripts/Kconfiglib/genconfig.py
 create mode 100755 scripts/Kconfiglib/guiconfig.py
 create mode 100644 scripts/Kconfiglib/kconfiglib.py
 create mode 100755 scripts/Kconfiglib/listnewconfig.py
 create mode 100644 scripts/Kconfiglib/makefile.patch
 create mode 100755 scripts/Kconfiglib/menuconfig.py
 create mode 100755 scripts/Kconfiglib/oldconfig.py
 create mode 100755 scripts/Kconfiglib/olddefconfig.py
 create mode 100755 scripts/Kconfiglib/savedefconfig.py
 create mode 100755 scripts/Kconfiglib/setconfig.py
 create mode 100644 scripts/Kconfiglib/setup.cfg
 create mode 100644 scripts/Kconfiglib/setup.py
 create mode 100644 scripts/Kconfiglib/tests/Kappend
 create mode 100644 scripts/Kconfiglib/tests/Kassignable
 create mode 100644 scripts/Kconfiglib/tests/Kchoice
 create mode 100644 scripts/Kconfiglib/tests/Kdefconfig_existent
 create mode 100644 scripts/Kconfiglib/tests/Kdefconfig_existent_but_n
 create mode 100644 scripts/Kconfiglib/tests/Kdefconfig_nonexistent
 create mode 100644 scripts/Kconfiglib/tests/Kdefconfig_srctree
 create mode 100644 scripts/Kconfiglib/tests/Kdepcopy
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop0
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop1
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop10
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop2
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop3
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop4
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop5
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop6
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop7
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop8
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop9
 create mode 100644 scripts/Kconfiglib/tests/Kdirdep
 create mode 100644 scripts/Kconfiglib/tests/Kescape
 create mode 100644 scripts/Kconfiglib/tests/Keval
 create mode 100644 scripts/Kconfiglib/tests/Kexpr_items
 create mode 100644 scripts/Kconfiglib/tests/Kheader
 create mode 100644 scripts/Kconfiglib/tests/Khelp
 create mode 100644 scripts/Kconfiglib/tests/Kifremoval
 create mode 100644 scripts/Kconfiglib/tests/Kimply
 create mode 100644 scripts/Kconfiglib/tests/Kinclude_path
 create mode 100644 scripts/Kconfiglib/tests/Kinclude_path_sourced_1
 create mode 100644 scripts/Kconfiglib/tests/Kinclude_path_sourced_2
 create mode 100644 scripts/Kconfiglib/tests/Kitemlists
 create mode 100644 scripts/Kconfiglib/tests/Klocation
 create mode 100644 scripts/Kconfiglib/tests/Klocation_sourced
 create mode 100644 scripts/Kconfiglib/tests/Kmainmenu
 create mode 100644 scripts/Kconfiglib/tests/Kmenuconfig
 create mode 100644 scripts/Kconfiglib/tests/Kmisc
 create mode 100644 scripts/Kconfiglib/tests/Kmissingrsource
 create mode 100644 scripts/Kconfiglib/tests/Kmissingsource
 create mode 100644 scripts/Kconfiglib/tests/Korder
 create mode 100644 scripts/Kconfiglib/tests/Kpreprocess
 create mode 100644 scripts/Kconfiglib/tests/Krange
 create mode 100644 scripts/Kconfiglib/tests/Krecursive1
 create mode 100644 scripts/Kconfiglib/tests/Krecursive2
 create mode 100644 scripts/Kconfiglib/tests/Kreferenced
 create mode 100644 scripts/Kconfiglib/tests/Krelation
 create mode 100644 scripts/Kconfiglib/tests/Krepr
 create mode 100644 scripts/Kconfiglib/tests/Kstr
 create mode 100644 scripts/Kconfiglib/tests/Kundef
 create mode 100644 scripts/Kconfiglib/tests/Kuserfunctions
 create mode 100644 scripts/Kconfiglib/tests/Kvisibility
 create mode 100644 scripts/Kconfiglib/tests/config_indented
 create mode 100644 scripts/Kconfiglib/tests/config_set_bool
 create mode 100644 scripts/Kconfiglib/tests/config_set_string
 create mode 100644 scripts/Kconfiglib/tests/defconfig_1
 create mode 100644 scripts/Kconfiglib/tests/defconfig_2
 create mode 100644 scripts/Kconfiglib/tests/empty
 create mode 100644 scripts/Kconfiglib/tests/kconfigfunctions.py
 create mode 100755 scripts/Kconfiglib/tests/reltest
 create mode 100644 scripts/Kconfiglib/tests/sub/Kconfig_symlink_2
 create mode 100644 scripts/Kconfiglib/tests/sub/Kconfig_symlink_3
 create mode 100644 scripts/Kconfiglib/tests/sub/Klocation_grsourced1
 create mode 100644 scripts/Kconfiglib/tests/sub/Klocation_grsourced2
 create mode 100644 scripts/Kconfiglib/tests/sub/Klocation_gsourced1
 create mode 100644 scripts/Kconfiglib/tests/sub/Klocation_gsourced2
 create mode 100644 scripts/Kconfiglib/tests/sub/Klocation_rsourced
 create mode 100644 scripts/Kconfiglib/tests/sub/defconfig_in_sub
 create mode 100644 scripts/Kconfiglib/tests/sub/sub/Kconfig_symlink_1
 create mode 120000 scripts/Kconfiglib/tests/symlink
 create mode 100644 scripts/Kconfiglib/testsuite.py
Signature · 1 line
2.34.1
author
#1 lore raw

PATCH v3 1/15 scripts: Add Kconfiglib v14.1.0 under scripts directory

We adopt Kconfiglib v14.1.0 sources under scripts directory so that top-level OpenSBI makefile can directly use Kconfiglib scripts without expecting users to install a particular version Kconfiglib on their build system.

---
 scripts/Kconfiglib/LICENSE.txt                |    5 +
 scripts/Kconfiglib/MANIFEST.in                |    2 +
 scripts/Kconfiglib/README.rst                 |  841 ++
 scripts/Kconfiglib/alldefconfig.py            |   27 +
 scripts/Kconfiglib/allmodconfig.py            |   46 +
 scripts/Kconfiglib/allnoconfig.py             |   45 +
 scripts/Kconfiglib/allyesconfig.py            |   56 +
 scripts/Kconfiglib/defconfig.py               |   43 +
 scripts/Kconfiglib/examples/Kmenuconfig       |  102 +
 .../Kconfiglib/examples/allnoconfig_walk.py   |   66 +
 .../examples/defconfig_oldconfig.py           |   39 +
 scripts/Kconfiglib/examples/dumpvars.py       |   15 +
 scripts/Kconfiglib/examples/eval_expr.py      |   24 +
 scripts/Kconfiglib/examples/find_symbol.py    |  112 +
 scripts/Kconfiglib/examples/help_grep.py      |   64 +
 scripts/Kconfiglib/examples/kconfiglib.py     |    1 +
 scripts/Kconfiglib/examples/list_undefined.py |  156 +
 .../Kconfiglib/examples/menuconfig_example.py |  341 +
 scripts/Kconfiglib/examples/merge_config.py   |  121 +
 .../Kconfiglib/examples/print_config_tree.py  |  199 +
 scripts/Kconfiglib/examples/print_sym_info.py |   54 +
 scripts/Kconfiglib/examples/print_tree.py     |   75 +
 scripts/Kconfiglib/genconfig.py               |  154 +
 scripts/Kconfiglib/guiconfig.py               | 2324 ++++++
 scripts/Kconfiglib/kconfiglib.py              | 7160 +++++++++++++++++
 scripts/Kconfiglib/listnewconfig.py           |   76 +
 scripts/Kconfiglib/makefile.patch             |   48 +
 scripts/Kconfiglib/menuconfig.py              | 3278 ++++++++
 scripts/Kconfiglib/oldconfig.py               |  246 +
 scripts/Kconfiglib/olddefconfig.py            |   28 +
 scripts/Kconfiglib/savedefconfig.py           |   49 +
 scripts/Kconfiglib/setconfig.py               |   92 +
 scripts/Kconfiglib/setup.cfg                  |    7 +
 scripts/Kconfiglib/setup.py                   |   96 +
 scripts/Kconfiglib/tests/Kappend              |   12 +
 scripts/Kconfiglib/tests/Kassignable          |  230 +
 scripts/Kconfiglib/tests/Kchoice              |  198 +
 scripts/Kconfiglib/tests/Kdefconfig_existent  |    8 +
 .../tests/Kdefconfig_existent_but_n           |   10 +
 .../Kconfiglib/tests/Kdefconfig_nonexistent   |    5 +
 scripts/Kconfiglib/tests/Kdefconfig_srctree   |    5 +
 scripts/Kconfiglib/tests/Kdepcopy             |  173 +
 scripts/Kconfiglib/tests/Kdeploop0            |    3 +
 scripts/Kconfiglib/tests/Kdeploop1            |    3 +
 scripts/Kconfiglib/tests/Kdeploop10           |   48 +
 scripts/Kconfiglib/tests/Kdeploop2            |    3 +
 scripts/Kconfiglib/tests/Kdeploop3            |    3 +
 scripts/Kconfiglib/tests/Kdeploop4            |    7 +
 scripts/Kconfiglib/tests/Kdeploop5            |    7 +
 scripts/Kconfiglib/tests/Kdeploop6            |    6 +
 scripts/Kconfiglib/tests/Kdeploop7            |   11 +
 scripts/Kconfiglib/tests/Kdeploop8            |    8 +
 scripts/Kconfiglib/tests/Kdeploop9            |    7 +
 scripts/Kconfiglib/tests/Kdirdep              |   30 +
 scripts/Kconfiglib/tests/Kescape              |    3 +
 scripts/Kconfiglib/tests/Keval                |   34 +
 scripts/Kconfiglib/tests/Kexpr_items          |   11 +
 scripts/Kconfiglib/tests/Kheader              |    5 +
 scripts/Kconfiglib/tests/Khelp                |   50 +
 scripts/Kconfiglib/tests/Kifremoval           |   99 +
 scripts/Kconfiglib/tests/Kimply               |  145 +
 scripts/Kconfiglib/tests/Kinclude_path        |   12 +
 .../Kconfiglib/tests/Kinclude_path_sourced_1  |   12 +
 .../Kconfiglib/tests/Kinclude_path_sourced_2  |   11 +
 scripts/Kconfiglib/tests/Kitemlists           |   36 +
 scripts/Kconfiglib/tests/Klocation            |   78 +
 scripts/Kconfiglib/tests/Klocation_sourced    |   26 +
 scripts/Kconfiglib/tests/Kmainmenu            |    5 +
 scripts/Kconfiglib/tests/Kmenuconfig          |   37 +
 scripts/Kconfiglib/tests/Kmisc                |   82 +
 scripts/Kconfiglib/tests/Kmissingrsource      |    1 +
 scripts/Kconfiglib/tests/Kmissingsource       |    1 +
 scripts/Kconfiglib/tests/Korder               |   35 +
 scripts/Kconfiglib/tests/Kpreprocess          |  151 +
 scripts/Kconfiglib/tests/Krange               |  133 +
 scripts/Kconfiglib/tests/Krecursive1          |    1 +
 scripts/Kconfiglib/tests/Krecursive2          |    1 +
 scripts/Kconfiglib/tests/Kreferenced          |   63 +
 scripts/Kconfiglib/tests/Krelation            |   36 +
 scripts/Kconfiglib/tests/Krepr                |   64 +
 scripts/Kconfiglib/tests/Kstr                 |  293 +
 scripts/Kconfiglib/tests/Kundef               |   23 +
 scripts/Kconfiglib/tests/Kuserfunctions       |   14 +
 scripts/Kconfiglib/tests/Kvisibility          |  342 +
 scripts/Kconfiglib/tests/config_indented      |    3 +
 scripts/Kconfiglib/tests/config_set_bool      |    1 +
 scripts/Kconfiglib/tests/config_set_string    |    1 +
 scripts/Kconfiglib/tests/defconfig_1          |    0
 scripts/Kconfiglib/tests/defconfig_2          |    0
 scripts/Kconfiglib/tests/empty                |    0
 scripts/Kconfiglib/tests/kconfigfunctions.py  |   22 +
 scripts/Kconfiglib/tests/reltest              |   51 +
 .../Kconfiglib/tests/sub/Kconfig_symlink_2    |    1 +
 .../Kconfiglib/tests/sub/Kconfig_symlink_3    |    2 +
 .../Kconfiglib/tests/sub/Klocation_grsourced1 |    1 +
 .../Kconfiglib/tests/sub/Klocation_grsourced2 |    1 +
 .../Kconfiglib/tests/sub/Klocation_gsourced1  |    1 +
 .../Kconfiglib/tests/sub/Klocation_gsourced2  |    1 +
 .../Kconfiglib/tests/sub/Klocation_rsourced   |    2 +
 scripts/Kconfiglib/tests/sub/defconfig_in_sub |    0
 .../tests/sub/sub/Kconfig_symlink_1           |    2 +
 scripts/Kconfiglib/tests/symlink              |    1 +
 scripts/Kconfiglib/testsuite.py               | 3203 ++++++++
 103 files changed, 21866 insertions(+)
 create mode 100644 scripts/Kconfiglib/LICENSE.txt
 create mode 100644 scripts/Kconfiglib/MANIFEST.in
 create mode 100644 scripts/Kconfiglib/README.rst
 create mode 100755 scripts/Kconfiglib/alldefconfig.py
 create mode 100755 scripts/Kconfiglib/allmodconfig.py
 create mode 100755 scripts/Kconfiglib/allnoconfig.py
 create mode 100755 scripts/Kconfiglib/allyesconfig.py
 create mode 100755 scripts/Kconfiglib/defconfig.py
 create mode 100644 scripts/Kconfiglib/examples/Kmenuconfig
 create mode 100644 scripts/Kconfiglib/examples/allnoconfig_walk.py
 create mode 100644 scripts/Kconfiglib/examples/defconfig_oldconfig.py
 create mode 100644 scripts/Kconfiglib/examples/dumpvars.py
 create mode 100644 scripts/Kconfiglib/examples/eval_expr.py
 create mode 100644 scripts/Kconfiglib/examples/find_symbol.py
 create mode 100644 scripts/Kconfiglib/examples/help_grep.py
 create mode 120000 scripts/Kconfiglib/examples/kconfiglib.py
 create mode 100644 scripts/Kconfiglib/examples/list_undefined.py
 create mode 100755 scripts/Kconfiglib/examples/menuconfig_example.py
 create mode 100755 scripts/Kconfiglib/examples/merge_config.py
 create mode 100644 scripts/Kconfiglib/examples/print_config_tree.py
 create mode 100644 scripts/Kconfiglib/examples/print_sym_info.py
 create mode 100644 scripts/Kconfiglib/examples/print_tree.py
 create mode 100755 scripts/Kconfiglib/genconfig.py
 create mode 100755 scripts/Kconfiglib/guiconfig.py
 create mode 100644 scripts/Kconfiglib/kconfiglib.py
 create mode 100755 scripts/Kconfiglib/listnewconfig.py
 create mode 100644 scripts/Kconfiglib/makefile.patch
 create mode 100755 scripts/Kconfiglib/menuconfig.py
 create mode 100755 scripts/Kconfiglib/oldconfig.py
 create mode 100755 scripts/Kconfiglib/olddefconfig.py
 create mode 100755 scripts/Kconfiglib/savedefconfig.py
 create mode 100755 scripts/Kconfiglib/setconfig.py
 create mode 100644 scripts/Kconfiglib/setup.cfg
 create mode 100644 scripts/Kconfiglib/setup.py
 create mode 100644 scripts/Kconfiglib/tests/Kappend
 create mode 100644 scripts/Kconfiglib/tests/Kassignable
 create mode 100644 scripts/Kconfiglib/tests/Kchoice
 create mode 100644 scripts/Kconfiglib/tests/Kdefconfig_existent
 create mode 100644 scripts/Kconfiglib/tests/Kdefconfig_existent_but_n
 create mode 100644 scripts/Kconfiglib/tests/Kdefconfig_nonexistent
 create mode 100644 scripts/Kconfiglib/tests/Kdefconfig_srctree
 create mode 100644 scripts/Kconfiglib/tests/Kdepcopy
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop0
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop1
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop10
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop2
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop3
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop4
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop5
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop6
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop7
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop8
 create mode 100644 scripts/Kconfiglib/tests/Kdeploop9
 create mode 100644 scripts/Kconfiglib/tests/Kdirdep
 create mode 100644 scripts/Kconfiglib/tests/Kescape
 create mode 100644 scripts/Kconfiglib/tests/Keval
 create mode 100644 scripts/Kconfiglib/tests/Kexpr_items
 create mode 100644 scripts/Kconfiglib/tests/Kheader
 create mode 100644 scripts/Kconfiglib/tests/Khelp
 create mode 100644 scripts/Kconfiglib/tests/Kifremoval
 create mode 100644 scripts/Kconfiglib/tests/Kimply
 create mode 100644 scripts/Kconfiglib/tests/Kinclude_path
 create mode 100644 scripts/Kconfiglib/tests/Kinclude_path_sourced_1
 create mode 100644 scripts/Kconfiglib/tests/Kinclude_path_sourced_2
 create mode 100644 scripts/Kconfiglib/tests/Kitemlists
 create mode 100644 scripts/Kconfiglib/tests/Klocation
 create mode 100644 scripts/Kconfiglib/tests/Klocation_sourced
 create mode 100644 scripts/Kconfiglib/tests/Kmainmenu
 create mode 100644 scripts/Kconfiglib/tests/Kmenuconfig
 create mode 100644 scripts/Kconfiglib/tests/Kmisc
 create mode 100644 scripts/Kconfiglib/tests/Kmissingrsource
 create mode 100644 scripts/Kconfiglib/tests/Kmissingsource
 create mode 100644 scripts/Kconfiglib/tests/Korder
 create mode 100644 scripts/Kconfiglib/tests/Kpreprocess
 create mode 100644 scripts/Kconfiglib/tests/Krange
 create mode 100644 scripts/Kconfiglib/tests/Krecursive1
 create mode 100644 scripts/Kconfiglib/tests/Krecursive2
 create mode 100644 scripts/Kconfiglib/tests/Kreferenced
 create mode 100644 scripts/Kconfiglib/tests/Krelation
 create mode 100644 scripts/Kconfiglib/tests/Krepr
 create mode 100644 scripts/Kconfiglib/tests/Kstr
 create mode 100644 scripts/Kconfiglib/tests/Kundef
 create mode 100644 scripts/Kconfiglib/tests/Kuserfunctions
 create mode 100644 scripts/Kconfiglib/tests/Kvisibility
 create mode 100644 scripts/Kconfiglib/tests/config_indented
 create mode 100644 scripts/Kconfiglib/tests/config_set_bool
 create mode 100644 scripts/Kconfiglib/tests/config_set_string
 create mode 100644 scripts/Kconfiglib/tests/defconfig_1
 create mode 100644 scripts/Kconfiglib/tests/defconfig_2
 create mode 100644 scripts/Kconfiglib/tests/empty
 create mode 100644 scripts/Kconfiglib/tests/kconfigfunctions.py
 create mode 100755 scripts/Kconfiglib/tests/reltest
 create mode 100644 scripts/Kconfiglib/tests/sub/Kconfig_symlink_2
 create mode 100644 scripts/Kconfiglib/tests/sub/Kconfig_symlink_3
 create mode 100644 scripts/Kconfiglib/tests/sub/Klocation_grsourced1
 create mode 100644 scripts/Kconfiglib/tests/sub/Klocation_grsourced2
 create mode 100644 scripts/Kconfiglib/tests/sub/Klocation_gsourced1
 create mode 100644 scripts/Kconfiglib/tests/sub/Klocation_gsourced2
 create mode 100644 scripts/Kconfiglib/tests/sub/Klocation_rsourced
 create mode 100644 scripts/Kconfiglib/tests/sub/defconfig_in_sub
 create mode 100644 scripts/Kconfiglib/tests/sub/sub/Kconfig_symlink_1
 create mode 120000 scripts/Kconfiglib/tests/symlink
 create mode 100644 scripts/Kconfiglib/testsuite.py
scripts/Kconfiglib/LICENSE.txt new file +5 -0
new file mode 100644
index 0000000..8b31efc
@@ -0,0 +1,5 @@
+Copyright (c) 2011-2019, Ulf Magnusson <[email protected]>
+
+Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
scripts/Kconfiglib/MANIFEST.in new file +2 -0
new file mode 100644
index 0000000..881a794
@@ -0,0 +1,2 @@
+# Include the license file in source distributions
+include LICENSE.txt
scripts/Kconfiglib/README.rst new file +841 -0

841 lines not on this page · raw message

scripts/Kconfiglib/alldefconfig.py new file +27 -0
new file mode 100755
index 0000000..56c4caa
@@ -0,0 +1,27 @@
+#!/usr/bin/env python3
+
+# Copyright (c) 2018-2019, Ulf Magnusson
+# SPDX-License-Identifier: ISC
+
+"""
+Writes a configuration file where all symbols are set to their their default
+values.
+
+The default output filename is '.config'. A different filename can be passed in
+the KCONFIG_CONFIG environment variable.
+
+Usage for the Linux kernel:
+
+  $ make [ARCH=<arch>] scriptconfig SCRIPT=Kconfiglib/alldefconfig.py
+"""
+import kconfiglib
+
+
+def main():
+    kconf = kconfiglib.standard_kconfig(__doc__)
+    kconf.load_allconfig("alldef.config")
+    print(kconf.write_config())
+
+
+if __name__ == "__main__":
+    main()
scripts/Kconfiglib/allmodconfig.py new file +46 -0

46 lines not on this page · raw message

scripts/Kconfiglib/allnoconfig.py new file +45 -0

45 lines not on this page · raw message

scripts/Kconfiglib/allyesconfig.py new file +56 -0

56 lines not on this page · raw message

scripts/Kconfiglib/defconfig.py new file +43 -0

43 lines not on this page · raw message

scripts/Kconfiglib/examples/Kmenuconfig new file +102 -0

102 lines not on this page · raw message

scripts/Kconfiglib/examples/allnoconfig_walk.py new file +66 -0

66 lines not on this page · raw message

scripts/Kconfiglib/examples/defconfig_oldconfig.py new file +39 -0
new file mode 100644
index 0000000..68336c6
@@ -0,0 +1,39 @@
+# Produces exactly the same output as the following script:
+#
+# make defconfig
+# echo CONFIG_ETHERNET=n >> .config
+# make oldconfig
+# echo CONFIG_ETHERNET=y >> .config
+# yes n | make oldconfig
+#
+# This came up in https://github.com/ulfalizer/Kconfiglib/issues/15.
+#
+# Usage:
+#
+#   $ make [ARCH=<arch>] scriptconfig SCRIPT=Kconfiglib/examples/defconfig_oldconfig.py
+
+import sys
+
+import kconfiglib
+
+
+kconf = kconfiglib.Kconfig(sys.argv[1])
+
+# Mirrors defconfig
+kconf.load_config("arch/x86/configs/x86_64_defconfig")
+kconf.write_config()
+
+# Mirrors the first oldconfig
+kconf.load_config()
+kconf.syms["ETHERNET"].set_value(0)
+kconf.write_config()
+
+# Mirrors the second oldconfig
+kconf.load_config()
+kconf.syms["ETHERNET"].set_value(2)
+for s in kconf.unique_defined_syms:
+    if s.user_value is None and 0 in s.assignable:
+        s.set_value(0)
+
+# Write the final configuration
+print(kconf.write_config())
scripts/Kconfiglib/examples/dumpvars.py new file +15 -0
new file mode 100644
index 0000000..0f8ab43
@@ -0,0 +1,15 @@
+# Prints all (set) environment variables referenced in the Kconfig files
+# together with their values, as a list of assignments.
+#
+# Note: This only works for environment variables referenced via the $(FOO)
+# preprocessor syntax. The older $FOO syntax is maintained for backwards
+# compatibility.
+
+import os
+import sys
+
+import kconfiglib
+
+
+print(" ".join("{}='{}'".format(var, os.environ[var])
+               for var in kconfiglib.Kconfig(sys.argv[1]).env_vars))
scripts/Kconfiglib/examples/eval_expr.py new file +24 -0
new file mode 100644
index 0000000..23eedb4
@@ -0,0 +1,24 @@
+# Evaluates an expression (e.g. "X86_64 || (X86_32 && X86_LOCAL_APIC)") in the
+# context of a configuration. Note that this always yields a tristate value (n,
+# m, or y).
+#
+# Usage:
+#
+#   $ make [ARCH=<arch>] scriptconfig SCRIPT=Kconfiglib/examples/eval_expr.py SCRIPT_ARG=<expr>
+
+import sys
+
+import kconfiglib
+
+
+if len(sys.argv) < 3:
+    sys.exit("Pass the expression to evaluate with SCRIPT_ARG=<expression>")
+
+kconf = kconfiglib.Kconfig(sys.argv[1])
+expr = sys.argv[2]
+
+# Enable modules so that m doesn't get demoted to n
+kconf.modules.set_value(2)
+
+print("the expression '{}' evaluates to {}"
+      .format(expr, kconf.eval_string(expr)))
scripts/Kconfiglib/examples/find_symbol.py new file +112 -0

112 lines not on this page · raw message

scripts/Kconfiglib/examples/help_grep.py new file +64 -0

64 lines not on this page · raw message

scripts/Kconfiglib/examples/kconfiglib.py new file +1 -0
new file mode 120000
index 0000000..b9dfb64
@@ -0,0 +1 @@
+../kconfiglib.py
\ No newline at end of file
scripts/Kconfiglib/examples/list_undefined.py new file +156 -0

156 lines not on this page · raw message

scripts/Kconfiglib/examples/menuconfig_example.py new file +341 -0

341 lines not on this page · raw message

scripts/Kconfiglib/examples/merge_config.py new file +121 -0

121 lines not on this page · raw message

scripts/Kconfiglib/examples/print_config_tree.py new file +199 -0

199 lines not on this page · raw message

scripts/Kconfiglib/examples/print_sym_info.py new file +54 -0

54 lines not on this page · raw message

scripts/Kconfiglib/examples/print_tree.py new file +75 -0

75 lines not on this page · raw message

scripts/Kconfiglib/genconfig.py new file +154 -0

154 lines not on this page · raw message

scripts/Kconfiglib/guiconfig.py new file +2324 -0

411 lines not on this page · raw message

scripts/Kconfiglib/kconfiglib.py new file +7160 -0

7,160 lines not on this page · raw message

scripts/Kconfiglib/listnewconfig.py new file +76 -0

76 lines not on this page · raw message

scripts/Kconfiglib/makefile.patch new file +48 -0

48 lines not on this page · raw message

scripts/Kconfiglib/menuconfig.py new file +3278 -0

3,278 lines not on this page · raw message

scripts/Kconfiglib/oldconfig.py new file +246 -0

246 lines not on this page · raw message

scripts/Kconfiglib/olddefconfig.py new file +28 -0
new file mode 100755
index 0000000..2dadfb4

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/savedefconfig.py new file +49 -0

49 lines not on this page · raw message

scripts/Kconfiglib/setconfig.py new file +92 -0

92 lines not on this page · raw message

scripts/Kconfiglib/setup.cfg new file +7 -0
new file mode 100644
index 0000000..185845e

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/setup.py new file +96 -0

96 lines not on this page · raw message

scripts/Kconfiglib/tests/Kappend new file +12 -0
new file mode 100644
index 0000000..ce1478f

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kassignable new file +230 -0

230 lines not on this page · raw message

scripts/Kconfiglib/tests/Kchoice new file +198 -0

198 lines not on this page · raw message

scripts/Kconfiglib/tests/Kdefconfig_existent new file +8 -0
new file mode 100644
index 0000000..304cae6

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kdefconfig_existent_but_n new file +10 -0
new file mode 100644
index 0000000..2fdaaa9

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kdefconfig_nonexistent new file +5 -0
new file mode 100644
index 0000000..5b7230f

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kdefconfig_srctree new file +5 -0
new file mode 100644
index 0000000..d2591fa

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kdepcopy new file +173 -0

173 lines not on this page · raw message

scripts/Kconfiglib/tests/Kdeploop0 new file +3 -0
new file mode 100644
index 0000000..98d3e3c

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kdeploop1 new file +3 -0
new file mode 100644
index 0000000..134cd29

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kdeploop10 new file +48 -0

48 lines not on this page · raw message

scripts/Kconfiglib/tests/Kdeploop2 new file +3 -0
new file mode 100644
index 0000000..c997243

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kdeploop3 new file +3 -0
new file mode 100644
index 0000000..90c83d5

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kdeploop4 new file +7 -0
new file mode 100644
index 0000000..789d8b7

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kdeploop5 new file +7 -0
new file mode 100644
index 0000000..f12fe6b

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kdeploop6 new file +6 -0
new file mode 100644
index 0000000..cb1e701

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kdeploop7 new file +11 -0
new file mode 100644
index 0000000..63d2c57

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kdeploop8 new file +8 -0
new file mode 100644
index 0000000..84efd8d

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kdeploop9 new file +7 -0
new file mode 100644
index 0000000..939f7f4

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kdirdep new file +30 -0
new file mode 100644
index 0000000..cbb88b9

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kescape new file +3 -0
new file mode 100644
index 0000000..ee6b2b6

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Keval new file +34 -0
new file mode 100644
index 0000000..1e64b83

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kexpr_items new file +11 -0
new file mode 100644
index 0000000..fb97ace

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kheader new file +5 -0
new file mode 100644
index 0000000..495afc6

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Khelp new file +50 -0

50 lines not on this page · raw message

scripts/Kconfiglib/tests/Kifremoval new file +99 -0

99 lines not on this page · raw message

scripts/Kconfiglib/tests/Kimply new file +145 -0

145 lines not on this page · raw message

scripts/Kconfiglib/tests/Kinclude_path new file +12 -0
new file mode 100644
index 0000000..7a3badb

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kinclude_path_sourced_1 new file +12 -0
new file mode 100644
index 0000000..f4dee98

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kinclude_path_sourced_2 new file +11 -0
new file mode 100644
index 0000000..068f18d

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kitemlists new file +36 -0
new file mode 100644
index 0000000..8aa7107

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Klocation new file +78 -0

78 lines not on this page · raw message

scripts/Kconfiglib/tests/Klocation_sourced new file +26 -0
new file mode 100644
index 0000000..2ad8481

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kmainmenu new file +5 -0
new file mode 100644
index 0000000..80713c0

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kmenuconfig new file +37 -0
new file mode 100644
index 0000000..9a4cc11

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kmisc new file +82 -0

82 lines not on this page · raw message

scripts/Kconfiglib/tests/Kmissingrsource new file +1 -0
new file mode 100644
index 0000000..924b0b3

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kmissingsource new file +1 -0
new file mode 100644
index 0000000..a3a6c25

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Korder new file +35 -0
new file mode 100644
index 0000000..3a8dffa

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kpreprocess new file +151 -0

151 lines not on this page · raw message

scripts/Kconfiglib/tests/Krange new file +133 -0

133 lines not on this page · raw message

scripts/Kconfiglib/tests/Krecursive1 new file +1 -0
new file mode 100644
index 0000000..35b521a

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Krecursive2 new file +1 -0
new file mode 100644
index 0000000..9f9f00e

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kreferenced new file +63 -0

63 lines not on this page · raw message

scripts/Kconfiglib/tests/Krelation new file +36 -0
new file mode 100644
index 0000000..940eff8

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Krepr new file +64 -0

64 lines not on this page · raw message

scripts/Kconfiglib/tests/Kstr new file +293 -0

293 lines not on this page · raw message

scripts/Kconfiglib/tests/Kundef new file +23 -0
new file mode 100644
index 0000000..fae521a

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kuserfunctions new file +14 -0
new file mode 100644
index 0000000..b0bf630

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/Kvisibility new file +342 -0

342 lines not on this page · raw message

scripts/Kconfiglib/tests/config_indented new file +3 -0
new file mode 100644
index 0000000..d57d8b4

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/config_set_bool new file +1 -0
new file mode 100644
index 0000000..d2dccbf

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/config_set_string new file +1 -0
new file mode 100644
index 0000000..3a1250a

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/defconfig_1 new file +0 -0
new file mode 100644
index 0000000..e69de29
scripts/Kconfiglib/tests/defconfig_2 new file +0 -0
new file mode 100644
index 0000000..e69de29
scripts/Kconfiglib/tests/empty new file +0 -0
new file mode 100644
index 0000000..e69de29
scripts/Kconfiglib/tests/kconfigfunctions.py new file +22 -0
new file mode 100644
index 0000000..8f35511

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/reltest new file +51 -0

51 lines not on this page · raw message

scripts/Kconfiglib/tests/sub/Kconfig_symlink_2 new file +1 -0
new file mode 100644
index 0000000..aeba985

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/sub/Kconfig_symlink_3 new file +2 -0
new file mode 100644
index 0000000..20b4e06

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/sub/Klocation_grsourced1 new file +1 -0
new file mode 100644
index 0000000..1e04ad6

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/sub/Klocation_grsourced2 new file +1 -0
new file mode 100644
index 0000000..1e04ad6

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/sub/Klocation_gsourced1 new file +1 -0
new file mode 100644
index 0000000..1e04ad6

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/sub/Klocation_gsourced2 new file +1 -0
new file mode 100644
index 0000000..1e04ad6

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/sub/Klocation_rsourced new file +2 -0
new file mode 100644
index 0000000..12fdbc2

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/sub/defconfig_in_sub new file +0 -0
new file mode 100644
index 0000000..e69de29
scripts/Kconfiglib/tests/sub/sub/Kconfig_symlink_1 new file +2 -0
new file mode 100644
index 0000000..bceec8b

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/tests/symlink new file +1 -0
new file mode 120000
index 0000000..565623e

Lines of this file are not shown. View the raw message.

scripts/Kconfiglib/testsuite.py new file +3203 -0

3,203 lines not on this page · raw message

The rest of this diff is not shown. View the raw message.

Signature · 1 line
2.34.1

Part of the diff is not shown here. View the raw message.

#2 lore raw

PATCH v3 1/15 scripts: Add Kconfiglib v14.1.0 under scripts directory

? 2022-07-19???? 18:48 +0530?Anup Patel???

Quoted 5 lines

We adopt Kconfiglib v14.1.0 sources under scripts directory so that top-level OpenSBI makefile can directly use Kconfiglib scripts without expecting users to install a particular version Kconfiglib on their build system.

The introduction of kconfiglib is best to use git submodule, which is convenient for later upgrade.

Regards,
Xiang W

#3 lore raw

PATCH v3 1/15 scripts: Add Kconfiglib v14.1.0 under scripts directory

Quoted 9 lines · Xiang W

? 2022-07-19???? 18:48 +0530?Anup Patel???

Quoted 5 lines

We adopt Kconfiglib v14.1.0 sources under scripts directory so that top-level OpenSBI makefile can directly use Kconfiglib scripts without expecting users to install a particular version Kconfiglib on their build system.

The introduction of kconfiglib is best to use git submodule, which is convenient for later upgrade.

submodules are nifty, but add a burden on developers who frequently checkout older versions of the superproject, such as when bisecting, since manually running 'git submodule update' may be necessary after the checkouts. That probably wouldn't be the case for kconfiglib, since that project isn't getting updates (hasn't for 2.5 years) and opensbi would likely rarely update the version it tracks anyway, but that also means there's not much value in making it a submodule in the first place.

That said, it might be nice to only commit something like QEMU's minikconf.py to this repo, providing basic Kconfig/defconfig parsing, but no user interfaces, and then provide an option to support menuconfig, etc. by 'updating' a kconfiglib submodule to get the scripts it provides.

Thanks,
drew

author
#4 lore raw

PATCH v3 2/15 Makefile: Add initial kconfig support for each platform

In reply to Anup Patel

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                                  | 56 +++++++++++++++++++++--
 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, 113 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
new file mode 100644
index 0000000..b3213a9
@@ -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 +53 -3

99 lines not on this page · raw message

firmware/Kconfig new file +1 -0
new file mode 100644
index 0000000..d6e0506
@@ -0,0 +1 @@
+# SPDX-License-Identifier: BSD-2-Clause
lib/utils/Kconfig new file +1 -0
new file mode 100644
index 0000000..d6e0506
@@ -0,0 +1 @@
+# SPDX-License-Identifier: BSD-2-Clause
platform/andes/ae350/Kconfig new file +5 -0
new file mode 100644
index 0000000..4b73c76
@@ -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
new file mode 100644
index 0000000..e69de29
platform/fpga/ariane/Kconfig new file +5 -0
new file mode 100644
index 0000000..70d2004
@@ -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
new file mode 100644
index 0000000..e69de29
platform/fpga/openpiton/Kconfig new file +5 -0
new file mode 100644
index 0000000..81e4b76
@@ -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
new file mode 100644
index 0000000..e69de29
platform/generic/Kconfig new file +5 -0
new file mode 100644
index 0000000..3eab282
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: BSD-2-Clause
+
+config PLATFORM_GENERIC
+	bool
+	default y
platform/generic/configs/defconfig new file +0 -0
new file mode 100644
index 0000000..e69de29
platform/kendryte/k210/Kconfig new file +5 -0
new file mode 100644
index 0000000..889f16b
@@ -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
new file mode 100644
index 0000000..e69de29
platform/nuclei/ux600/Kconfig new file +5 -0
new file mode 100644
index 0000000..c368ef4
@@ -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
new file mode 100644
index 0000000..e69de29
platform/template/Kconfig new file +5 -0
new file mode 100644
index 0000000..b9c4350
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: BSD-2-Clause
+
+config PLATFORM_TEMPLATE
+	bool
+	default y
platform/template/configs/defconfig new file +0 -0
new file mode 100644
index 0000000..e69de29
Signature · 1 line
2.34.1
#5 lore raw

PATCH v3 2/15 Makefile: Add initial kconfig support for each platform

? 2022-07-19???? 18:48 +0530?Anup Patel???

Quoted 90 lines

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????????????????????????????????? | 56 +++++++++++++++++++++--
?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, 113 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
new file mode 100644
index 0000000..b3213a9
@@ -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 +0 -0
index f619ef7..c13495c 100644
@@ -52,6 +52,9 @@ ifdef PLATFORM_DIR

?else
? platform_parent_dir=$(src_dir)/platform
?endif

Makefile +3 -0
+ifndef PLATFORM_DEFCONFIG
+PLATFORM_DEFCONFIG=defconfig
+endif

?
?# Check if verbosity is ON for build process
?CMD_PREFIX_DEFAULT := @

Makefile +0 -0
@@ -70,6 +73,20 @@ export libsbi_dir=$(CURDIR)/lib/sbi

?export libsbiutils_dir=$(CURDIR)/lib/utils
?export firmware_dir=$(CURDIR)/firmware
?

Makefile export libsbi_dir=$(CURDIR)/lib/sbi · line 78

Quoted 3 lines
Makefile +3 -0
+# Setup variables for kconfig
+ifdef PLATFORM
+export PYTHONDONTWRITEBYTECODE=1.

There is an extra dot at the end of the line.

Regards,
Xiang W

Quoted 206 lines
Makefile +11 -0
+export KCONFIG_DIR=$(platform_build_dir)/kconfig
+export KCONFIG_AUTOLIST=$(KCONFIG_DIR)/auto.list
+export KCONFIG_AUTOHEADER=$(KCONFIG_DIR)/autoconf.h
+export KCONFIG_AUTOCMD=$(KCONFIG_DIR)/auto.conf.cmd
+export KCONFIG_CONFIG=$(KCONFIG_DIR)/.config
+# Additional exports for include paths in Kconfig files
+export OPENSBI_SRC_DIR=$(src_dir)
+export OPENSBI_PLATFORM=$(PLATFORM)
+export OPENSBI_PLATFORM_SRC_DIR=$(platform_src_dir)
+endif
+

?# Find library version
?OPENSBI_VERSION_MAJOR=grep "define OPENSBI_VERSION_MAJOR" $(include_dir)/sbi/sbi_version.h | sed 's/.*MAJOR.*\([0-9][0-9]*\)/\1/' ?OPENSBI_VERSION_MINOR=grep "define OPENSBI_VERSION_MINOR" $(include_dir)/sbi/sbi_version.h | sed 's/.*MINOR.*\([0-9][0-9]*\)/\1/'

Makefile +0 -0
@@ -183,8 +200,35 @@ libsbi-object-mks=$(shell if [ -d $(libsbi_dir) ]; then find $(libsbi_dir) -inam
 ?libsbiutils-object-mks=$(shell if [ -d $(libsbiutils_dir) ]; then find $(libsbiutils_dir) -iname "objects.mk" | sort -r; fi)
 ?firmware-object-mks=$(shell if [ -d $(firmware_dir) ]; then find $(firmware_dir) -iname "objects.mk" | sort -r; fi)

?

Makefile +5 -1
-# Include platform specifig config.mk
+# The "make all" rule should always be first rule
+.PHONY: all
+all:
+
+# Include platform specific .config and config.mk

?ifdef PLATFORM
+.PHONY: menuconfig

Makefile +13 -0
+menuconfig: $(platform_src_dir)/Kconfig $(src_dir)/Kconfig
+???????$(CMD_PREFIX)mkdir -p $(KCONFIG_DIR)
+???????$(CMD_PREFIX)$(src_dir)/scripts/Kconfiglib/menuconfig.py $(src_dir)/Kconfig
+
+.PHONY: savedefconfig
+savedefconfig: $(platform_src_dir)/Kconfig $(src_dir)/Kconfig
+???????$(CMD_PREFIX)mkdir -p $(KCONFIG_DIR)
+???????$(CMD_PREFIX)$(src_dir)/scripts/Kconfiglib/savedefconfig.py --kconfig $(src_dir)/Kconfig --out $(KCONFIG_DIR)/defconfig
+
+$(KCONFIG_CONFIG): $(platform_src_dir)/configs/$(PLATFORM_DEFCONFIG) $(platform_src_dir)/Kconfig $(src_dir)/Kconfig
+???????$(CMD_PREFIX)mkdir -p $(KCONFIG_DIR)
+???????$(CMD_PREFIX)$(src_dir)/scripts/Kconfiglib/defconfig.py --kconfig $(src_dir)/Kconfig $(platform_src_dir)/configs/$(PLATFORM_DEFCONFIG)
+???????$(CMD_PREFIX)$(src_dir)/scripts/Kconfiglib/genconfig.py --header-path $(KCONFIG_AUTOHEADER) --sync-deps $(KCONFIG_DIR) --file-list

$(KCONFIG_AUTOLIST) $(src_dir)/Kconfig

Makefile +9 -0
+
+$(KCONFIG_AUTOCMD): $(KCONFIG_CONFIG)
+???????$(CMD_PREFIX)mkdir -p $(KCONFIG_DIR)
+???????$(CMD_PREFIX)echo -n "$(KCONFIG_CONFIG): " > $(KCONFIG_AUTOCMD)
+???????$(CMD_PREFIX)cat $(KCONFIG_AUTOLIST) | tr '\n' ' ' >> $(KCONFIG_AUTOCMD)
+
+include $(KCONFIG_CONFIG)
+include $(KCONFIG_AUTOCMD)
+

?include $(platform_src_dir)/config.mk
?endif
?

Makefile +0 -0
@@ -280,6 +324,9 @@ ifeq ($(BUILD_INFO),y)

?GENFLAGS???????+=??????-DOPENSBI_BUILD_TIME_STAMP="\"$(OPENSBI_BUILD_TIME_STAMP)\"" ?GENFLAGS???????+=??????-DOPENSBI_BUILD_COMPILER_VERSION="\"$(OPENSBI_BUILD_COMPILER_VERSION)\"" ?endif

Makefile +3 -0
+ifdef PLATFORM
+GENFLAGS???????+=??????-include $(KCONFIG_AUTOHEADER)
+endif

?GENFLAGS???????+=??????$(libsbiutils-genflags-y)
?GENFLAGS???????+=??????$(platform-genflags-y)
?GENFLAGS???????+=??????$(firmware-genflags-y)

Makefile +0 -0
@@ -419,7 +466,7 @@ targets-y += $(platform_build_dir)/lib/libplatsbi.a

?endif
?targets-y += $(firmware-bins-path-y)
?

Makefile +1 -1
-# Default rule "make" should always be first rule
+# The default "make all" rule

?.PHONY: all
?all: $(targets-y)
?

Makefile +0 -0
@@ -456,7 +503,7 @@ $(build_dir)/%.o: $(src_dir)/%.S
 ????????$(call compile_as,$@,$<)

?
?$(build_dir)/%.dep: $(src_dir)/%.carray -???????$(call compile_gen_dep,$@,.c,$<) +???????$(call compile_gen_dep,$@,.c,$< $(KCONFIG_CONFIG)) ????????$(call compile_gen_dep,$@,.o,$(@:.dep=.c)) ?
?$(build_dir)/%.c: $(src_dir)/%.carray

Makefile +0 -0
@@ -523,6 +570,9 @@ docs: $(build_dir)/docs/latex/refman.pdf

?# They should not be included for any "xxxconfig" or "xxxclean" rule ?all-deps-1 = $(if $(findstring config,$(MAKECMDGOALS)),,$(deps-y)) ?all-deps-2 = $(if $(findstring clean,$(MAKECMDGOALS)),,$(all-deps-1))

Makefile +3 -0
+ifdef PLATFORM
+$(all-deps-2): | $(KCONFIG_CONFIG)
+endif

?-include $(all-deps-2)
?
?# Include external dependency of firmwares after default Makefile rules

firmware/Kconfig new file +1 -0
new file mode 100644
index 0000000..d6e0506
@@ -0,0 +1 @@
+# SPDX-License-Identifier: BSD-2-Clause
lib/utils/Kconfig new file +1 -0
new file mode 100644
index 0000000..d6e0506
@@ -0,0 +1 @@
+# SPDX-License-Identifier: BSD-2-Clause
platform/andes/ae350/Kconfig new file +5 -0
new file mode 100644
index 0000000..4b73c76
@@ -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
new file mode 100644
index 0000000..e69de29
platform/fpga/ariane/Kconfig new file +5 -0
new file mode 100644
index 0000000..70d2004
@@ -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
new file mode 100644
index 0000000..e69de29
platform/fpga/openpiton/Kconfig new file +5 -0
new file mode 100644
index 0000000..81e4b76
@@ -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
new file mode 100644
index 0000000..e69de29
platform/generic/Kconfig new file +5 -0
new file mode 100644
index 0000000..3eab282
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: BSD-2-Clause
+
+config PLATFORM_GENERIC
+???????bool
+???????default y
platform/generic/configs/defconfig new file +0 -0
new file mode 100644
index 0000000..e69de29
platform/kendryte/k210/Kconfig new file +5 -0
new file mode 100644
index 0000000..889f16b
@@ -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
new file mode 100644
index 0000000..e69de29
platform/nuclei/ux600/Kconfig new file +5 -0
new file mode 100644
index 0000000..c368ef4
@@ -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
new file mode 100644
index 0000000..e69de29
platform/template/Kconfig new file +5 -0
new file mode 100644
index 0000000..b9c4350
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: BSD-2-Clause
+
+config PLATFORM_TEMPLATE
+???????bool
+???????default y
platform/template/configs/defconfig new file +0 -0
new file mode 100644
index 0000000..e69de29
Signature · 1 line
2.34.1
author
#6 lore raw

PATCH v3 3/15 Makefile: Compile lib/utils sources separately for each platform

In reply to Anup Patel

Currently, 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
index c13495c..8c9e8df 100644
@@ -242,8 +242,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
@@ -460,7 +460,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
@@ -473,12 +472,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,$@,$^)
 
@@ -502,22 +499,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,$@,$<)
 
@@ -541,6 +530,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,$@,$<)
 
@@ -594,7 +600,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
@@ -609,17 +614,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
index ff99801..d5d2ba9 100644
@@ -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
index 43c5452..261a45a 100755
@@ -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
author
#7 lore raw

PATCH v3 4/15 lib: utils/serial: Use kconfig for enabling/disabling drivers

In reply to Anup Patel

We 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
index 6451c23..daa2e4f 100644
@@ -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
index d6e0506..4524a3f 100644
@@ -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
index 4b73c76..162d19c 100644
@@ -2,4 +2,5 @@
 
 config PLATFORM_ANDES_AE350
 	bool
+	select SERIAL_UART8250
 	default y
platform/fpga/ariane/Kconfig +1 -0
index 70d2004..3ce0ec1 100644
@@ -2,4 +2,5 @@
 
 config PLATFORM_ARIANE_FPGA
 	bool
+	select SERIAL_UART8250
 	default y
platform/fpga/openpiton/Kconfig +1 -0
index 81e4b76..4dd752d 100644
@@ -2,4 +2,5 @@
 
 config PLATFORM_OPENPITON_FPGA
 	bool
+	select SERIAL_UART8250
 	default y
platform/generic/configs/defconfig +8 -0
index e69de29..ce70c59 100644
@@ -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
index 889f16b..adc7613 100644
@@ -2,4 +2,5 @@
 
 config PLATFORM_KENDRYTE_K210
 	bool
+	select SERIAL_SIFIVE
 	default y
platform/nuclei/ux600/Kconfig +1 -0
index c368ef4..69fe8f8 100644
@@ -2,4 +2,5 @@
 
 config PLATFORM_NUCLEI_UX600
 	bool
+	select SERIAL_SIFIVE
 	default y
platform/template/Kconfig +1 -0
index b9c4350..5a5472b 100644
@@ -2,4 +2,5 @@
 
 config PLATFORM_TEMPLATE
 	bool
+	select SERIAL_UART8250
 	default y
Signature · 1 line
2.34.1
author
#8 lore raw

PATCH v3 5/15 lib: utils/reset: Use kconfig for enabling/disabling drivers

In reply to Anup Patel

We 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
index e7f7350..ea8063b 100644
@@ -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
index 4524a3f..f061b7a 100644
@@ -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
new file mode 100644
index 0000000..845a1ae
@@ -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
index 8cddcdf..8a50dd0 100644
@@ -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
index ce70c59..9778665 100644
@@ -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
author
#9 lore raw

PATCH v3 6/15 lib: utils/sys: Use kconfig for enabling/disabling drivers

In reply to Anup Patel

We 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
index f061b7a..492f4e9 100644
@@ -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
index 845a1ae..e7a71e3 100644
@@ -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
index e114f26..bf37e34 100644
@@ -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
new file mode 100644
index 0000000..ee85b1a
@@ -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
index 06be322..9f67aee 100644
@@ -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
author
#10 lore raw

PATCH v3 7/15 lib: utils/timer: Use kconfig for enabling/disabling drivers

In reply to Anup Patel

We 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
index 36202a4..cf105fe 100644
@@ -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
index 492f4e9..6561d0b 100644
@@ -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
new file mode 100644
index 0000000..0a1c727
@@ -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
index bc4073d..7f5f3ce 100644
@@ -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
index 3ce0ec1..a7fd758 100644
@@ -3,4 +3,5 @@
 config PLATFORM_ARIANE_FPGA
 	bool
 	select SERIAL_UART8250
+	select TIMER_MTIMER
 	default y
platform/fpga/openpiton/Kconfig +1 -0
index 4dd752d..a7f09e4 100644
@@ -3,4 +3,5 @@
 config PLATFORM_OPENPITON_FPGA
 	bool
 	select SERIAL_UART8250
+	select TIMER_MTIMER
 	default y
platform/generic/configs/defconfig +2 -0
index 9778665..9b96a4f 100644
@@ -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
index adc7613..90db649 100644
@@ -3,4 +3,5 @@
 config PLATFORM_KENDRYTE_K210
 	bool
 	select SERIAL_SIFIVE
+	select TIMER_MTIMER
 	default y
platform/nuclei/ux600/Kconfig +1 -0
index 69fe8f8..dec2654 100644
@@ -3,4 +3,5 @@
 config PLATFORM_NUCLEI_UX600
 	bool
 	select SERIAL_SIFIVE
+	select TIMER_MTIMER
 	default y
platform/template/Kconfig +1 -0
index 5a5472b..ce463ea 100644
@@ -3,4 +3,5 @@
 config PLATFORM_TEMPLATE
 	bool
 	select SERIAL_UART8250
+	select TIMER_MTIMER
 	default y
Signature · 1 line
2.34.1
author
#11 lore raw

PATCH v3 8/15 lib: utils/ipi: Use kconfig for enabling/disabling drivers

In reply to Anup Patel

We 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
index 9337353..1dd9062 100644
@@ -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
index 6561d0b..50d9770 100644
@@ -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
new file mode 100644
index 0000000..c0634d3
@@ -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
index 0b0bc2d..0600cac 100644
@@ -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
index a7fd758..0bc1597 100644
@@ -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
index a7f09e4..0e4e3ba 100644
@@ -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
index 9b96a4f..e218c32 100644
@@ -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
index 90db649..685a5cd 100644
@@ -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
index dec2654..cd995a3 100644
@@ -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
index ce463ea..672b6e7 100644
@@ -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
author
#12 lore raw

PATCH v3 9/15 lib: utils/irqchip: Use kconfig for enabling/disabling drivers

In reply to Anup Patel

We 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
index 13ef6f7..63e9fd9 100644
@@ -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
index cffcb5a..e295771 100644
@@ -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
index 50d9770..3f315fd 100644
@@ -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
new file mode 100644
index 0000000..6a7e297
@@ -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
index 7775bc4..e458891 100644
@@ -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
index 162d19c..87deab0 100644
@@ -2,5 +2,6 @@
 
 config PLATFORM_ANDES_AE350
 	bool
+	select IRQCHIP_PLIC
 	select SERIAL_UART8250
 	default y
platform/fpga/ariane/Kconfig +1 -0
index 0bc1597..5a720d9 100644
@@ -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
index 0e4e3ba..973906e 100644
@@ -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
index e218c32..ad66a63 100644
@@ -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
index 685a5cd..2a1daaa 100644
@@ -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
index cd995a3..464802e 100644
@@ -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
index 672b6e7..8338425 100644
@@ -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
author
#13 lore raw

PATCH v3 10/15 lib: utils/i2c: Use kconfig for enabling/disabling drivers

In reply to Anup Patel

We 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
index 3f315fd..39452d5 100644
@@ -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
new file mode 100644
index 0000000..16c4453
@@ -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
index bb0d6d5..a0fbbb5 100644
@@ -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
index ad66a63..c9c221e 100644
@@ -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
author
#14 lore raw

PATCH v3 11/15 lib: utils/gpio: Use kconfig for enabling/disabling drivers

In reply to Anup Patel

We 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
index 39452d5..673b02b 100644
@@ -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
new file mode 100644
index 0000000..daf7f91
@@ -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
index a5e131b..eedd699 100644
@@ -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
index e7a71e3..71996cb 100644
@@ -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
index c9c221e..d56cef2 100644
@@ -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
author
#15 lore raw

PATCH v3 12/15 lib: utils/fdt: Use kconfig for enabling/disabling

In reply to Anup Patel

We 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
index 5448eb4..ee09d1b 100644
@@ -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
index 2fa01ed..c65cad7 100644
@@ -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
index 673b02b..5a71e75 100644
@@ -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
new file mode 100644
index 0000000..23b003b
@@ -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
index 03800f9..5cede81 100644
@@ -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
index daf7f91..38a9d75 100644
@@ -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
index 16c4453..46a3454 100644
@@ -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
index c0634d3..efc8960 100644
@@ -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
index 6a7e297..7a71388 100644
@@ -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
similarity index 57%
copy from platform/generic/Kconfig
copy to lib/utils/libfdt/Kconfig
index 3eab282..d1cecf8 100644
@@ -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
index 8c060df..a5b4001 100644
@@ -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
index 71996cb..2e83ff6 100644
@@ -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
index bf37e34..152060d 100644
@@ -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
index 0a1c727..23c48c5 100644
@@ -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
index 87deab0..d57f19f 100644
@@ -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
index 5a720d9..e1f118b 100644
@@ -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
index 973906e..bc9c86e 100644
@@ -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
index 3eab282..c1a77b3 100644
@@ -2,4 +2,7 @@
 
 config PLATFORM_GENERIC
 	bool
+	select FDT
+	select FDT_DOMAIN
+	select FDT_PMU
 	default y
platform/kendryte/k210/Kconfig +1 -0
index 2a1daaa..5bf5973 100644
@@ -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
index 464802e..84d74e8 100644
@@ -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
index 5498a1f..2b02734 100644
@@ -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
author
#16 lore raw

PATCH v3 13/15 platform: generic: Use kconfig for enabling/disabling overrides

In reply to Anup Patel

We 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
index c1a77b3..c76bd12 100644
@@ -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
index 9e36ab6..447cdf1 100644
@@ -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
index d56cef2..2a75394 100644
@@ -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
index c17e2df..d75e444 100644
@@ -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
author
#17 lore raw

PATCH v3 14/15 platform: Remove redundant config.mk from all platforms

In reply to Anup Patel

The 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
index 8c9e8df..ac01fb0 100644
@@ -204,7 +204,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
@@ -228,8 +228,6 @@ $(KCONFIG_AUTOCMD): $(KCONFIG_CONFIG)
 
 include $(KCONFIG_CONFIG)
 include $(KCONFIG_AUTOCMD)
-
-include $(platform_src_dir)/config.mk
 endif
 
 # Include all object.mk files
platform/andes/ae350/config.mk deleted +0 -36
deleted file mode 100644
index f555ef5..0000000
@@ -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
index 5369677..80f0737 100644
@@ -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
deleted file mode 100644
index 3556461..0000000
@@ -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
index 814e6da..83581ac 100644
@@ -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
deleted file mode 100644
index a969b25..0000000
@@ -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
index 30a3c4f..c8c345a 100644
@@ -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
deleted file mode 100644
index 8151974..0000000
@@ -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
index 4907754..136853e 100644
@@ -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
deleted file mode 100644
index 8a9b814..0000000
@@ -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
index b74da74..1bfb898 100644
@@ -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
deleted file mode 100644
index dddcc4e..0000000
@@ -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
index 8c36c90..7c429e0 100644
@@ -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
index 5524847..f3802da 100644
@@ -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
author
#18 lore raw

PATCH v3 15/15 docs: Update documentation for kconfig support

In reply to Anup Patel

We 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
index 54fabe4..67d491d 100644
@@ -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. python3: The python 3.0 (or higher) language support for various
+   scripts.
+
 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
index 7b9b192..e251488 100644
@@ -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
index eea3013..35a4301 100644
@@ -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
index 0947448..3bb918f 100644
@@ -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
index cb4bec6..b726e1d 100644
@@ -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
index b6c2c2e..8ac5aa0 100644
@@ -28,11 +28,12 @@ Adding support for a new platform
 Support for a new platform named *&lt;xyz&gt;* can be added as follows:
 
 1. Create a directory named *&lt;xyz&gt;* under the *platform/* directory.
-2. Create a platform configuration file named *config.mk* under the
-   *platform/&lt;xyz&gt;/* directory. This configuration file will provide
+2. Create a platform configuration files named *Kconfig* and *configs/defconfig*
+   under the *platform/&lt;xyz&gt;/* directory. This configuration files will
+   provide the build time configuration for the sources to be compiled.
+3. Create a *platform/&lt;xyz&gt;/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/&lt;xyz&gt;/objects.mk* file for listing the
-   platform-specific object files to be compiled.
 4. Create a *platform/&lt;xyz&gt;/platform.c* file providing a
    *struct sbi_platform* instance.
 
Signature · 1 line
2.34.1