diff mbox

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

Message ID 1466457388-20271-1-git-send-email-hdegoede@redhat.com
State Accepted
Commit 9f823615af919c6b89f0b80197f009f78299dcde
Delegated to: Tom Rini
Headers show

Commit Message

Hans de Goede June 20, 2016, 9:16 p.m. UTC
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(-)

Comments

Masahiro Yamada June 21, 2016, 2:22 a.m. UTC | #1
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?
Tom Rini June 21, 2016, 4:44 a.m. UTC | #2
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!
Tom Rini June 21, 2016, 1:23 p.m. UTC | #3
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".
diff mbox

Patch

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:
 
 ------------------------------------------------------------