[U-Boot] [PATCH v3] Kconfig: Add a new DISTRO_DEFAULTS Kconfig option

DISTRO_DEFAULTS is intended to mirror / replace include/config_distro_defaults.h.
The intend is for boards which include this file to select this from their Kconfig files and when moving setting to Kconfig which are #define-ed in config_distro_defaults.h to select this from DISTRO_DEFAULTS so that boards which have selected DISTRO_DEFAULTS will keep the same configuration as before without needing any defconfig file changes.
The initial list of selected things matches all settings recently removed from config_distro_defaults.h because they have been converted to Kconfig, with the exception of CMD_ELF and CMD_NET, which have a default of y, if the default of these ever changes they should be selected by DISTRO_DEFAULTS too.
For testing and example purposes this commit also converts ARCH_SUNXI to use DISTRO_DEFAULT instead of selecting everything it needs itself.
Signed-off-by: Hans de Goede hdegoede@redhat.com --- Changes in v2: -Use "default y if ARCH_SUNXI" instead of selecting DISTRO_DEFAULT for sunxi -Document how to enable DISTRO_DEFAULT in doc/README.distro Changes in v3: -Rebase on latest master --- Kconfig | 17 +++++++++++++++++ arch/arm/Kconfig | 9 --------- doc/README.distro | 6 ++++++ 3 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/Kconfig b/Kconfig index 817f4f0..3ceff25 100644 --- a/Kconfig +++ b/Kconfig @@ -53,6 +53,23 @@ config CC_OPTIMIZE_FOR_SIZE
This option is enabled by default for U-Boot.
+config DISTRO_DEFAULTS + bool "Select defaults suitable for booting general purpose Linux distributions" + default y if ARCH_SUNXI + default n + select CMD_BOOTZ + select CMD_DHCP + select CMD_EXT2 + select CMD_EXT4 + select CMD_FAT + select CMD_FS_GENERIC + select CMD_MII + select CMD_PING + select HUSH_PARSER + help + Select this to enable various options and commands which are suitable + for building u-boot for booting general purpose Linux distributions. + config SYS_MALLOC_F bool "Enable malloc() pool before relocation" default y if DM diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index f48be96..e9d2fc9 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -610,16 +610,8 @@ config TARGET_CM_T43
config ARCH_SUNXI bool "Support sunxi (Allwinner) SoCs" - select CMD_BOOTZ - select CMD_DHCP - select CMD_EXT2 - select CMD_EXT4 - select CMD_FAT - select CMD_FS_GENERIC select CMD_GPIO - select CMD_MII select CMD_MMC if MMC - select CMD_PING select CMD_USB select DM select DM_ETH @@ -627,7 +619,6 @@ config ARCH_SUNXI select DM_KEYBOARD select DM_SERIAL select DM_USB - select HUSH_PARSER select OF_BOARD_SETUP select OF_CONTROL select OF_SEPARATE diff --git a/doc/README.distro b/doc/README.distro index e1b7216..77d5c6d 100644 --- a/doc/README.distro +++ b/doc/README.distro @@ -162,6 +162,12 @@ U-Boot Implementation Enabling the distro options ---------------------------
+In your board's defconfig, enable the DISTRO_DEFAULTS option by adding +a line with "CONFIG_DISTRO_DEFAULTS=y". If you want to enable this +from Kconfig itself, for e.g. all boards using a specific SoC then +add a "default y if ARCH_FOO" to the DISTRO_DEFAULTS section of +the Kconfig file in the root of the u-boot sources. + In your board configuration file, include the following:
------------------------------------------------------------

2016-06-21 6:16 GMT+09:00 Hans de Goede hdegoede@redhat.com:
DISTRO_DEFAULTS is intended to mirror / replace include/config_distro_defaults.h.
The intend is for boards which include this file to select this from their Kconfig files and when moving setting to Kconfig which are #define-ed in config_distro_defaults.h to select this from DISTRO_DEFAULTS so that boards which have selected DISTRO_DEFAULTS will keep the same configuration as before without needing any defconfig file changes.
The initial list of selected things matches all settings recently removed from config_distro_defaults.h because they have been converted to Kconfig, with the exception of CMD_ELF and CMD_NET, which have a default of y, if the default of these ever changes they should be selected by DISTRO_DEFAULTS too.
For testing and example purposes this commit also converts ARCH_SUNXI to use DISTRO_DEFAULT instead of selecting everything it needs itself.
Signed-off-by: Hans de Goede hdegoede@redhat.com
Changes in v2: -Use "default y if ARCH_SUNXI" instead of selecting DISTRO_DEFAULT for sunxi -Document how to enable DISTRO_DEFAULT in doc/README.distro Changes in v3:
-Rebase on latest master
Kconfig | 17 +++++++++++++++++ arch/arm/Kconfig | 9 --------- doc/README.distro | 6 ++++++ 3 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/Kconfig b/Kconfig index 817f4f0..3ceff25 100644 --- a/Kconfig +++ b/Kconfig @@ -53,6 +53,23 @@ config CC_OPTIMIZE_FOR_SIZE
This option is enabled by default for U-Boot.
+config DISTRO_DEFAULTS
bool "Select defaults suitable for booting general purpose Linux distributions"
default y if ARCH_SUNXI
If we want to allow users to disable distro, and do not want ARCH_SUNXI appear in a generic config entry, perhaps we can do like this.
config ARCH_SUNXI bool select ARCH_SUPPORTS_DISTRO
config DISTRO_DEFAULTS bool "Select defaults suitable for booting general purpose Linux distributions" default y if ARCH_SUPPORTS_DISTRO
Currently it is just fine, but we might want to do something in the future when we have more platforms to migrate to this way...
config DISTRO_DEFAULTS bool "Select defaults suitable for booting general purpose Linux distributions" default y if (ARCH_SUNXI || ARCH_TEGRA || ARCH_HISI || ARCH_ZYNQMP ... )
default n
select CMD_BOOTZ
select CMD_DHCP
select CMD_EXT2
select CMD_EXT4
select CMD_FAT
select CMD_FS_GENERIC
select CMD_MII
select CMD_PING
select HUSH_PARSER
Do you mean all of these commands are mandatory for disto? Or just recommended?

On Tue, Jun 21, 2016 at 11:22:38AM +0900, Masahiro Yamada wrote:
2016-06-21 6:16 GMT+09:00 Hans de Goede hdegoede@redhat.com:
DISTRO_DEFAULTS is intended to mirror / replace include/config_distro_defaults.h.
The intend is for boards which include this file to select this from their Kconfig files and when moving setting to Kconfig which are #define-ed in config_distro_defaults.h to select this from DISTRO_DEFAULTS so that boards which have selected DISTRO_DEFAULTS will keep the same configuration as before without needing any defconfig file changes.
The initial list of selected things matches all settings recently removed from config_distro_defaults.h because they have been converted to Kconfig, with the exception of CMD_ELF and CMD_NET, which have a default of y, if the default of these ever changes they should be selected by DISTRO_DEFAULTS too.
For testing and example purposes this commit also converts ARCH_SUNXI to use DISTRO_DEFAULT instead of selecting everything it needs itself.
Signed-off-by: Hans de Goede hdegoede@redhat.com
Changes in v2: -Use "default y if ARCH_SUNXI" instead of selecting DISTRO_DEFAULT for sunxi -Document how to enable DISTRO_DEFAULT in doc/README.distro Changes in v3:
-Rebase on latest master
Kconfig | 17 +++++++++++++++++ arch/arm/Kconfig | 9 --------- doc/README.distro | 6 ++++++ 3 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/Kconfig b/Kconfig index 817f4f0..3ceff25 100644 --- a/Kconfig +++ b/Kconfig @@ -53,6 +53,23 @@ config CC_OPTIMIZE_FOR_SIZE
This option is enabled by default for U-Boot.
+config DISTRO_DEFAULTS
bool "Select defaults suitable for booting general purpose Linux distributions"
default y if ARCH_SUNXI
If we want to allow users to disable distro, and do not want ARCH_SUNXI appear in a generic config entry, perhaps we can do like this.
config ARCH_SUNXI bool select ARCH_SUPPORTS_DISTRO
config DISTRO_DEFAULTS bool "Select defaults suitable for booting general purpose Linux distributions" default y if ARCH_SUPPORTS_DISTRO
Currently it is just fine, but we might want to do something in the future when we have more platforms to migrate to this way...
config DISTRO_DEFAULTS bool "Select defaults suitable for booting general purpose Linux distributions" default y if (ARCH_SUNXI || ARCH_TEGRA || ARCH_HISI || ARCH_ZYNQMP ... )
I suppose that in the long run we'll want to move towards adding in many SUPPORTS_xxx type things to make there be less possible merge conflicts in the main Kconfig files. We may even want to introduce CONFIG_EXPERT and make certain things default unless that's set as we have both the use case of "bring up a new board, easily, that does what I mean" and "I need my board to be as compact as possible" and even "I know exactly what I do and don't want enabled".

On Mon, Jun 20, 2016 at 11:16:28PM +0200, Hans de Goede wrote:
DISTRO_DEFAULTS is intended to mirror / replace include/config_distro_defaults.h.
The intend is for boards which include this file to select this from their Kconfig files and when moving setting to Kconfig which are #define-ed in config_distro_defaults.h to select this from DISTRO_DEFAULTS so that boards which have selected DISTRO_DEFAULTS will keep the same configuration as before without needing any defconfig file changes.
The initial list of selected things matches all settings recently removed from config_distro_defaults.h because they have been converted to Kconfig, with the exception of CMD_ELF and CMD_NET, which have a default of y, if the default of these ever changes they should be selected by DISTRO_DEFAULTS too.
For testing and example purposes this commit also converts ARCH_SUNXI to use DISTRO_DEFAULT instead of selecting everything it needs itself.
Signed-off-by: Hans de Goede hdegoede@redhat.com
Applied to u-boot/master, thanks! And I thought I had already applied this, sorry!
participants (3)
-
Hans de Goede
-
Masahiro Yamada
-
Tom Rini