All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anup Patel <apatel@ventanamicro.com>
To: opensbi@lists.infradead.org
Subject: [PATCH v4 00/15] OpenSBI Kconfig Support
Date: Sun, 31 Jul 2022 10:26:38 +0530	[thread overview]
Message-ID: <20220731045653.165058-1-apatel@ventanamicro.com> (raw)

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

Changes since v3:
 - Strip down the Kconfiglib sources added by PATCH1
 - Removed extra "." in the top-level Makefile updated by PATCH2

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/allnoconfig.py         |   45 +
 scripts/Kconfiglib/allyesconfig.py        |   56 +
 scripts/Kconfiglib/defconfig.py           |   43 +
 scripts/Kconfiglib/genconfig.py           |  154 +
 scripts/Kconfiglib/kconfiglib.py          | 7160 +++++++++++++++++++++
 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/create-binary-archive.sh          |    2 +-
 83 files changed, 12106 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 100755 scripts/Kconfiglib/allnoconfig.py
 create mode 100755 scripts/Kconfiglib/allyesconfig.py
 create mode 100755 scripts/Kconfiglib/defconfig.py
 create mode 100755 scripts/Kconfiglib/genconfig.py
 create mode 100644 scripts/Kconfiglib/kconfiglib.py
 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

-- 
2.34.1



             reply	other threads:[~2022-07-31  4:56 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-31  4:56 Anup Patel [this message]
2022-07-31  4:56 ` [PATCH v4 01/15] scripts: Add Kconfiglib v14.1.0 under scripts directory Anup Patel
2022-07-31  4:56 ` [PATCH v4 02/15] Makefile: Add initial kconfig support for each platform Anup Patel
2022-07-31  4:56 ` [PATCH v4 03/15] Makefile: Compile lib/utils sources separately " Anup Patel
2022-07-31  4:56 ` [PATCH v4 04/15] lib: utils/serial: Use kconfig for enabling/disabling drivers Anup Patel
2022-07-31  4:56 ` [PATCH v4 05/15] lib: utils/reset: " Anup Patel
2022-07-31  4:56 ` [PATCH v4 06/15] lib: utils/sys: " Anup Patel
2022-07-31  4:56 ` [PATCH v4 07/15] lib: utils/timer: " Anup Patel
2022-07-31  4:56 ` [PATCH v4 08/15] lib: utils/ipi: " Anup Patel
2022-07-31  4:56 ` [PATCH v4 09/15] lib: utils/irqchip: " Anup Patel
2022-07-31  4:56 ` [PATCH v4 10/15] lib: utils/i2c: " Anup Patel
2022-07-31  4:56 ` [PATCH v4 11/15] lib: utils/gpio: " Anup Patel
2022-07-31  4:56 ` [PATCH v4 12/15] lib: utils/fdt: Use kconfig for enabling/disabling Anup Patel
2022-07-31  4:56 ` [PATCH v4 13/15] platform: generic: Use kconfig for enabling/disabling overrides Anup Patel
2022-07-31  4:56 ` [PATCH v4 14/15] platform: Remove redundant config.mk from all platforms Anup Patel
2022-07-31  4:56 ` [PATCH v4 15/15] docs: Update documentation for kconfig support Anup Patel
2022-08-01 11:35 ` [PATCH v4 00/15] OpenSBI Kconfig Support Andrew Jones
2022-08-02  4:36   ` Anup Patel
2022-08-02  5:32     ` Andrew Jones

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220731045653.165058-1-apatel@ventanamicro.com \
    --to=apatel@ventanamicro.com \
    --cc=opensbi@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.