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 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot