[U-Boot] [PATCH 1/2] RFC: dm: Kconfig: Move all driver model CONFIGs to Kconfig
Masahiro YAMADA
yamada.m at jp.panasonic.com
Thu Dec 11 18:37:46 CET 2014
Hi Simon,
>
> diff --git a/Kconfig b/Kconfig
> index 153ee2b..d4ca152 100644
> --- a/Kconfig
> +++ b/Kconfig
> @@ -158,3 +158,5 @@ source "drivers/Kconfig"
> source "fs/Kconfig"
>
> source "lib/Kconfig"
> +
> +source "test/dm/Kconfig"
Perhaps we might want "test/Kconfig" in the future.
> --- a/arch/arm/cpu/armv7/tegra-common/Kconfig
> +++ b/arch/arm/cpu/armv7/tegra-common/Kconfig
> @@ -20,6 +20,27 @@ endchoice
> config USE_PRIVATE_LIBGCC
> default y if SPL_BUILD
>
> +config DM
> + default y
> +
> +config SPL_DM
> + default y
> +
> +config DM_SERIAL
> + default y
> +
> +config DM_SPI
> + default y
> +
> +config DM_SPI_FLASH
> + default y
> +
> +config DM_I2C
> + default y
> +
> +config DM_GPIO
> + default y
> +
Are all of these user-configurable?
I mean, do Tegra boards work fine without CONFIG_DM_* ?
I doubt it because you have already converted Tegra drivers.
- Use "select" if the option is mandatory for that board
- Use "default y" if the option is still optional, but recommended.
> source "arch/arm/cpu/armv7/tegra20/Kconfig"
> source "arch/arm/cpu/armv7/tegra30/Kconfig"
> source "arch/arm/cpu/armv7/tegra114/Kconfig"
> diff --git a/arch/sandbox/Kconfig b/arch/sandbox/Kconfig
> index 3057325..1b4cbce 100644
> --- a/arch/sandbox/Kconfig
> +++ b/arch/sandbox/Kconfig
> @@ -10,4 +10,43 @@ config SYS_BOARD
> config SYS_CONFIG_NAME
> default "sandbox"
>
> +config DM
> + default y
> +
> +config DM_GPIO
> + default y
> +
> +config DM_SERIAL
> + default y
> +
> +config CMD_DEMO
> + default y
> +
> +config CMD_DM
> + default y
> +
> +config DM_DEMO
> + default y
> +
> +config DM_DEMO_SIMPLE
> + default y
> +
> +config DM_DEMO_SHAPE
> + default y
> +
> +config DM_TEST
> + default y
> +
> +config DM_CROS_EC
> + default y
> +
> +config DM_SPI
> + default y
> +
> +config DM_SPI_FLASH
> + default y
> +
> +config DM_I2C
> + default y
> +
Why do you like this syntax?
- If the option is not user-configurable, use "select"
- If the option is user-configurable and you want change the default value,
add it to configs/sandbox_defconfig
> diff --git a/board/samsung/goni/Kconfig b/board/samsung/goni/Kconfig
> index cbbf5a9..006e864 100644
> --- a/board/samsung/goni/Kconfig
> +++ b/board/samsung/goni/Kconfig
> @@ -12,4 +12,13 @@ config SYS_SOC
> config SYS_CONFIG_NAME
> default "s5p_goni"
>
> +config DM
> + default y
> +
> +config DM_GPIO
> + default y
> +
> +config DM_SERIAL
> + default y
> +
"select" or "_defconfig"
> diff --git a/common/Kconfig b/common/Kconfig
> index fd84fa0..174bf4f 100644
> --- a/common/Kconfig
> +++ b/common/Kconfig
> @@ -153,6 +153,29 @@ endmenu
>
> menu "Device access commands"
>
> +config CMD_DM
> + bool "dm - Access to driver model information"
> + depends on DM
> + default y
> + help
> + Provides access to driver model data structures and information,
> + such as a list of devices, list of uclasses and the state of each
> + device (e.g. activated). This is not required for operation, but
> + can be useful to see the state of driver model for debugging or
> + interest.
> +
> +config CMD_DEMO
> + bool "demo - Demonstration commands for driver model"
> + depends on DM
> + help
> + Procides a 'demo' command which can be used to play around with
> + driver model. To use this properly you will need to enable one or
> + both of the demo devices (DM_DEMO_SHAPE and DM_DEMO_SIMPLE).
> + Otherwise you will always get an empty list of devices. The demo
> + devices are defined in the sandbox device tree, so the easiest
> + option is to use sandbox and pass the -d point to sandbox's
> + u-boot.dtb file.
> +
These seems rather "Misc commands".
> config CMD_LOADB
> bool "loadb"
> help
> diff --git a/configs/Linksprite_pcDuino3_fdt_defconfig b/configs/Linksprite_pcDuino3_fdt_defconfig
> index a33f3a7..931b5dd 100644
> --- a/configs/Linksprite_pcDuino3_fdt_defconfig
> +++ b/configs/Linksprite_pcDuino3_fdt_defconfig
> @@ -2,6 +2,8 @@ CONFIG_SPL=y
> CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_GMAC,AHCI,SATAPWR=SUNXI_GPH(2),USB_EHCI"
> CONFIG_FDTFILE="sun7i-a20-pcduino3.dtb"
> CONFIG_DM=y
> +CONFIG_DM_GPIO=y
> +CONFIG_DM_SERIAL=y
> CONFIG_DEFAULT_DEVICE_TREE="sun7i-a20-pcduino3"
> CONFIG_OF_CONTROL=y
> CONFIG_OF_SEPARATE=y
Here, you use _defconfig.
What is the difference?
> diff --git a/drivers/core/Kconfig b/drivers/core/Kconfig
> index d2799dc..2ae2cc4 100644
> --- a/drivers/core/Kconfig
> +++ b/drivers/core/Kconfig
> @@ -2,5 +2,123 @@ config DM
> bool "Enable Driver Model"
> depends on !SPL_BUILD
> help
> - This config option enables Driver Model.
> - To use legacy drivers, say N.
> + This config option enables Driver Model. This brings in the core
> + support, including scanning of platform data on start-up. If
> + CONFIG_OF_CONTROL is enabled, the device tree will be scanned also
> + when available.
> +
> +config DM_SERIAL
> + bool "Enable Driver Model for serial"
> + depends on DM
> + help
> + Enable driver model for serial. This replaces
> + drivers/serial/serial.c with the serial uclass, which
> + implements serial_putc() etc. The uclass interface is
> + defined in include/serial.h.
> +
> +config DM_GPIO
> + bool "Enable Driver Model for GPIO"
> + depends on DM
> + help
> + Enable driver model for GPIO access. The standard GPIO
> + interface (gpio_get_value(), etc.) is then implemented by
> + the GPIO uclass. Drivers provide methods to query the
> + particular GPIOs that they provide. The uclass interface
> + is defined in include/asm-generic/gpio.h.
>
> +config DM_SPI
> + bool "Enable Driver Model for SPI"
> + depends on DM
> + help
> + Enable driver model for SPI. The SPI slave interface
> + (spi_setup_slave(), spi_xfer(), etc.) is then implemented by
> + the SPI uclass. Drivers provide methods to access the SPI
> + buses that they control. The uclass interface is defined in
> + include/spi.h. The existing spi_slave structure is attached
> + as 'parent data' to every slave on each bus. Slaves
> + typically use driver-private data instead of extending the
> + spi_slave structure.
> +
DM_{SERIAL,GPIO,SPI} is already in drivers/{serial,gpio,spi}/Kconfig.
IMHO, I think drivers/*/Kconfig would be a suitable place,
but it is OK if you want to move them.
Anyway, these configs are temporary.
When we finish DM conversion, CONFIG_DM* will go away.
> new file mode 100644
> index 0000000..4234fe4
> --- /dev/null
> +++ b/drivers/demo/Kconfig
> @@ -0,0 +1,26 @@
> +config DM_DEMO
> + bool "Enable demo uclass support"
> + depends on DM
> + help
> + This uclass allows you to play around with driver model. It provides
> + an interface to a couple of demo devices. You can access it using
> + the 'demo' command or by calling the uclass functions from your
> + own code.
> +
> +config DM_DEMO_SIMPLE
> + bool "Enable simple demo device for driver model"
> + depends on DM
depends on DM_DEMO
> + help
> + This device allows you to play around with driver model. It prints
> + a message when the 'demo hello' command is executed which targets
> + this device. It can be used to help understand how driver model
> + works.
> +
> +config DM_DEMO_SHAPE
> + bool "Enable shape demo device for driver model"
> + depends on DM
Ditto.
> +++ b/test/dm/Kconfig
> @@ -0,0 +1,8 @@
> +config DM_TEST
> + bool "Enable driver model test command"
> + depends on SANDBOX
also depends on CMD_DM ??
--
Best Regards
Masahiro Yamada
More information about the U-Boot
mailing list