[U-Boot] [PATCH v2 1/2] drivers; add DM_NO_OF Kconfig option

To be able to build spi driver with DM support, a new config option has been introduced (DM_NO_OF) since m68k architecture does not support fdt.
--- Changes from v1: - split into 2 patches
Signed-off-by: Angelo Dureghello angelo@sysam.it --- arch/Kconfig | 1 + drivers/core/Kconfig | 4 ++++ drivers/spi/spi-uclass.c | 12 +++++++----- 3 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/arch/Kconfig b/arch/Kconfig index dd5a887001..c96cbfa2bd 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -28,6 +28,7 @@ config M68K select HAVE_PRIVATE_LIBGCC select SYS_BOOT_GET_CMDLINE select SYS_BOOT_GET_KBD + select DM_NO_OF
config MICROBLAZE bool "MicroBlaze architecture" diff --git a/drivers/core/Kconfig b/drivers/core/Kconfig index e8ba20ca82..47960a8a6a 100644 --- a/drivers/core/Kconfig +++ b/drivers/core/Kconfig @@ -244,4 +244,8 @@ config DM_DEV_READ_INLINE bool default y if !OF_LIVE
+config DM_NO_OF + bool + default n + endmenu diff --git a/drivers/spi/spi-uclass.c b/drivers/spi/spi-uclass.c index 15d90a54a1..908be1d4cf 100644 --- a/drivers/spi/spi-uclass.c +++ b/drivers/spi/spi-uclass.c @@ -107,7 +107,7 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, return dm_spi_xfer(slave->dev, bitlen, dout, din, flags); }
-#if !CONFIG_IS_ENABLED(OF_PLATDATA) +#if !CONFIG_IS_ENABLED(OF_PLATDATA) && !defined(CONFIG_DM_NO_OF) static int spi_child_post_bind(struct udevice *dev) { struct dm_spi_slave_platdata *plat = dev_get_parent_platdata(dev); @@ -121,7 +121,7 @@ static int spi_child_post_bind(struct udevice *dev)
static int spi_post_probe(struct udevice *bus) { -#if !CONFIG_IS_ENABLED(OF_PLATDATA) +#if !CONFIG_IS_ENABLED(OF_PLATDATA) && !defined(CONFIG_DM_NO_OF) struct dm_spi_bus *spi = dev_get_uclass_priv(bus);
spi->max_hz = dev_read_u32_default(bus, "spi-max-frequency", 0); @@ -274,7 +274,7 @@ int spi_get_bus_and_cs(int busnum, int cs, int speed, int mode, bool created = false; int ret;
-#if CONFIG_IS_ENABLED(OF_PLATDATA) +#if CONFIG_IS_ENABLED(OF_PLATDATA) || defined(CONFIG_DM_NO_OF) ret = uclass_first_device_err(UCLASS_SPI, &bus); #else ret = uclass_get_device_by_seq(UCLASS_SPI, busnum, &bus); @@ -283,6 +283,7 @@ int spi_get_bus_and_cs(int busnum, int cs, int speed, int mode, printf("Invalid bus %d (err=%d)\n", busnum, ret); return ret; } + ret = spi_find_chip_select(bus, cs, &dev);
/* @@ -321,6 +322,7 @@ int spi_get_bus_and_cs(int busnum, int cs, int speed, int mode, }
plat = dev_get_parent_platdata(dev); + if (!speed) { speed = plat->max_hz; mode = plat->mode; @@ -427,7 +429,7 @@ UCLASS_DRIVER(spi) = { .id = UCLASS_SPI, .name = "spi", .flags = DM_UC_FLAG_SEQ_ALIAS, -#if !CONFIG_IS_ENABLED(OF_PLATDATA) +#if !CONFIG_IS_ENABLED(OF_PLATDATA) && !defined(CONFIG_DM_NO_OF) .post_bind = dm_scan_fdt_dev, #endif .post_probe = spi_post_probe, @@ -436,7 +438,7 @@ UCLASS_DRIVER(spi) = { .per_child_auto_alloc_size = sizeof(struct spi_slave), .per_child_platdata_auto_alloc_size = sizeof(struct dm_spi_slave_platdata), -#if !CONFIG_IS_ENABLED(OF_PLATDATA) +#if !CONFIG_IS_ENABLED(OF_PLATDATA) && !defined(CONFIG_DM_NO_OF) .child_post_bind = spi_child_post_bind, #endif };

Hi Angelo,
On 3 May 2018 at 16:01, Angelo Dureghello angelo@sysam.it wrote:
To be able to build spi driver with DM support, a new config option has been introduced (DM_NO_OF) since m68k architecture does not support fdt.
Changes from v1:
- split into 2 patches
Signed-off-by: Angelo Dureghello angelo@sysam.it
arch/Kconfig | 1 + drivers/core/Kconfig | 4 ++++ drivers/spi/spi-uclass.c | 12 +++++++----- 3 files changed, 12 insertions(+), 5 deletions(-)
Is it possible to use SPL_OF_PLATDATA instead?
How come m68k cannot use device tree?
Regards, Simon

Hi Simon,
On Sat, May 26, 2018 at 04:18:57PM -0600, Simon Glass wrote:
Hi Angelo,
On 3 May 2018 at 16:01, Angelo Dureghello angelo@sysam.it wrote:
To be able to build spi driver with DM support, a new config option has been introduced (DM_NO_OF) since m68k architecture does not support fdt.
Changes from v1:
- split into 2 patches
Signed-off-by: Angelo Dureghello angelo@sysam.it
arch/Kconfig | 1 + drivers/core/Kconfig | 4 ++++ drivers/spi/spi-uclass.c | 12 +++++++----- 3 files changed, 12 insertions(+), 5 deletions(-)
Is it possible to use SPL_OF_PLATDATA instead?
I have seen that setting, but my understanding is that SPL_OF_PLATDATA ws made for a different purpose, and also, i tried to use it, but cannot select it from menuconfig.
How come m68k cannot use device tree?
There was never any devicetree implementation, probably becouse it is missing on Linux too.
Regards, Simon
Regards, Angelo

+Tom
Hi Angelo,
On 27 May 2018 at 01:22, Angelo Dureghello angelo@sysam.it wrote:
Hi Simon,
On Sat, May 26, 2018 at 04:18:57PM -0600, Simon Glass wrote:
Hi Angelo,
On 3 May 2018 at 16:01, Angelo Dureghello angelo@sysam.it wrote:
To be able to build spi driver with DM support, a new config option has been introduced (DM_NO_OF) since m68k architecture does not support fdt.
Changes from v1:
- split into 2 patches
Signed-off-by: Angelo Dureghello angelo@sysam.it
arch/Kconfig | 1 + drivers/core/Kconfig | 4 ++++ drivers/spi/spi-uclass.c | 12 +++++++----- 3 files changed, 12 insertions(+), 5 deletions(-)
Is it possible to use SPL_OF_PLATDATA instead?
I have seen that setting, but my understanding is that SPL_OF_PLATDATA ws made for a different purpose, and also, i tried to use it, but cannot select it from menuconfig.
How come m68k cannot use device tree?
There was never any devicetree implementation, probably becouse it is missing on Linux too.
It is a real shame that we can't do better than that.
I've added Tom in for comment as I'm not sure what is best here.
Regards, Simon

On Sun, May 27, 2018 at 07:45:12PM -0600, Simon Glass wrote:
+Tom
Hi Angelo,
On 27 May 2018 at 01:22, Angelo Dureghello angelo@sysam.it wrote:
Hi Simon,
On Sat, May 26, 2018 at 04:18:57PM -0600, Simon Glass wrote:
Hi Angelo,
On 3 May 2018 at 16:01, Angelo Dureghello angelo@sysam.it wrote:
To be able to build spi driver with DM support, a new config option has been introduced (DM_NO_OF) since m68k architecture does not support fdt.
Changes from v1:
- split into 2 patches
Signed-off-by: Angelo Dureghello angelo@sysam.it
arch/Kconfig | 1 + drivers/core/Kconfig | 4 ++++ drivers/spi/spi-uclass.c | 12 +++++++----- 3 files changed, 12 insertions(+), 5 deletions(-)
Is it possible to use SPL_OF_PLATDATA instead?
I have seen that setting, but my understanding is that SPL_OF_PLATDATA ws made for a different purpose, and also, i tried to use it, but cannot select it from menuconfig.
How come m68k cannot use device tree?
There was never any devicetree implementation, probably becouse it is missing on Linux too.
It is a real shame that we can't do better than that.
I've added Tom in for comment as I'm not sure what is best here.
Yeah, I think as sandbox shows, if/when we don't have to worry about also Linux dts files, it's not a lot of work to populate up what's required for just U-Boot, so long as we have the run-time space. And if not, that's what OF_PLATDATA is for.

Hi,
On Mon, May 28, 2018 at 08:59:21PM -0400, Tom Rini wrote:
On Sun, May 27, 2018 at 07:45:12PM -0600, Simon Glass wrote:
+Tom
Hi Angelo,
On 27 May 2018 at 01:22, Angelo Dureghello angelo@sysam.it wrote:
Hi Simon,
On Sat, May 26, 2018 at 04:18:57PM -0600, Simon Glass wrote:
Hi Angelo,
On 3 May 2018 at 16:01, Angelo Dureghello angelo@sysam.it wrote:
To be able to build spi driver with DM support, a new config option has been introduced (DM_NO_OF) since m68k architecture does not support fdt.
Changes from v1:
- split into 2 patches
Signed-off-by: Angelo Dureghello angelo@sysam.it
arch/Kconfig | 1 + drivers/core/Kconfig | 4 ++++ drivers/spi/spi-uclass.c | 12 +++++++----- 3 files changed, 12 insertions(+), 5 deletions(-)
Is it possible to use SPL_OF_PLATDATA instead?
I have seen that setting, but my understanding is that SPL_OF_PLATDATA ws made for a different purpose, and also, i tried to use it, but cannot select it from menuconfig.
How come m68k cannot use device tree?
There was never any devicetree implementation, probably becouse it is missing on Linux too.
It is a real shame that we can't do better than that.
I've added Tom in for comment as I'm not sure what is best here.
Yeah, I think as sandbox shows, if/when we don't have to worry about also Linux dts files, it's not a lot of work to populate up what's required for just U-Boot, so long as we have the run-time space. And if not, that's what OF_PLATDATA is for.
Ok, so i retry the OF_PLATDATA way, i probably missed something there. About fdt addition, i keep that task in a TO DO list for now.
Thanks, Angelo
-- Tom

Hi Tom and Simon,
thanks for the support.
On Mon, May 28, 2018 at 08:59:21PM -0400, Tom Rini wrote:
On Sun, May 27, 2018 at 07:45:12PM -0600, Simon Glass wrote:
+Tom
Hi Angelo,
On 27 May 2018 at 01:22, Angelo Dureghello angelo@sysam.it wrote:
Hi Simon,
On Sat, May 26, 2018 at 04:18:57PM -0600, Simon Glass wrote:
Hi Angelo,
On 3 May 2018 at 16:01, Angelo Dureghello angelo@sysam.it wrote:
To be able to build spi driver with DM support, a new config option has been introduced (DM_NO_OF) since m68k architecture does not support fdt.
Changes from v1:
- split into 2 patches
Signed-off-by: Angelo Dureghello angelo@sysam.it
arch/Kconfig | 1 + drivers/core/Kconfig | 4 ++++ drivers/spi/spi-uclass.c | 12 +++++++----- 3 files changed, 12 insertions(+), 5 deletions(-)
Is it possible to use SPL_OF_PLATDATA instead?
I have seen that setting, but my understanding is that SPL_OF_PLATDATA ws made for a different purpose, and also, i tried to use it, but cannot select it from menuconfig.
How come m68k cannot use device tree?
There was never any devicetree implementation, probably becouse it is missing on Linux too.
It is a real shame that we can't do better than that.
I've added Tom in for comment as I'm not sure what is best here.
Yeah, I think as sandbox shows, if/when we don't have to worry about also Linux dts files, it's not a lot of work to populate up what's required for just U-Boot, so long as we have the run-time space. And if not, that's what OF_PLATDATA is for.
About SPL_OF_PLATDATA, do you think i can change it to a more generic OF_PLATDATA, or GENERIC_OF_PLATDATA not dependant from SPL (i am not using SPL) ? I also need to add "select SUPPORT_OF_CONTROL" for m68k arch.
Let me know if the above is ok, otherwise i start to work for the devicetree option.
-- Tom
Regards, Angelo

Hi Angelo,
On 30 May 2018 at 13:58, Angelo Dureghello angelo@sysam.it wrote:
Hi Tom and Simon,
thanks for the support.
On Mon, May 28, 2018 at 08:59:21PM -0400, Tom Rini wrote:
On Sun, May 27, 2018 at 07:45:12PM -0600, Simon Glass wrote:
+Tom
Hi Angelo,
On 27 May 2018 at 01:22, Angelo Dureghello angelo@sysam.it wrote:
Hi Simon,
On Sat, May 26, 2018 at 04:18:57PM -0600, Simon Glass wrote:
Hi Angelo,
On 3 May 2018 at 16:01, Angelo Dureghello angelo@sysam.it wrote:
To be able to build spi driver with DM support, a new config option has been introduced (DM_NO_OF) since m68k architecture does not support fdt.
Changes from v1:
- split into 2 patches
Signed-off-by: Angelo Dureghello angelo@sysam.it
arch/Kconfig | 1 + drivers/core/Kconfig | 4 ++++ drivers/spi/spi-uclass.c | 12 +++++++----- 3 files changed, 12 insertions(+), 5 deletions(-)
Is it possible to use SPL_OF_PLATDATA instead?
I have seen that setting, but my understanding is that SPL_OF_PLATDATA ws made for a different purpose, and also, i tried to use it, but cannot select it from menuconfig.
How come m68k cannot use device tree?
There was never any devicetree implementation, probably becouse it is missing on Linux too.
It is a real shame that we can't do better than that.
I've added Tom in for comment as I'm not sure what is best here.
Yeah, I think as sandbox shows, if/when we don't have to worry about also Linux dts files, it's not a lot of work to populate up what's required for just U-Boot, so long as we have the run-time space. And if not, that's what OF_PLATDATA is for.
About SPL_OF_PLATDATA, do you think i can change it to a more generic OF_PLATDATA, or GENERIC_OF_PLATDATA not dependant from SPL (i am not using SPL) ? I also need to add "select SUPPORT_OF_CONTROL" for m68k arch.
Let me know if the above is ok, otherwise i start to work for the devicetree option.
I am nervous about it since it opens the door to people using OF_PLATDATA in U-Boot proper, which I was hoping to avoid. If you look at the code you will see that it is somewhat ugly. Fine for SPL since it reduces the size so much, but the size advantage would be less in U-Boot (since we have libfdt anyway).
So my preference would be to add device tree. But it's not the end of the world.
What do you think, Tom?
Regards, Simon

On Wed, May 30, 2018 at 09:58:16PM +0200, Angelo Dureghello wrote:
Hi Tom and Simon,
thanks for the support.
On Mon, May 28, 2018 at 08:59:21PM -0400, Tom Rini wrote:
On Sun, May 27, 2018 at 07:45:12PM -0600, Simon Glass wrote:
+Tom
Hi Angelo,
On 27 May 2018 at 01:22, Angelo Dureghello angelo@sysam.it wrote:
Hi Simon,
On Sat, May 26, 2018 at 04:18:57PM -0600, Simon Glass wrote:
Hi Angelo,
On 3 May 2018 at 16:01, Angelo Dureghello angelo@sysam.it wrote:
To be able to build spi driver with DM support, a new config option has been introduced (DM_NO_OF) since m68k architecture does not support fdt.
Changes from v1:
- split into 2 patches
Signed-off-by: Angelo Dureghello angelo@sysam.it
arch/Kconfig | 1 + drivers/core/Kconfig | 4 ++++ drivers/spi/spi-uclass.c | 12 +++++++----- 3 files changed, 12 insertions(+), 5 deletions(-)
Is it possible to use SPL_OF_PLATDATA instead?
I have seen that setting, but my understanding is that SPL_OF_PLATDATA ws made for a different purpose, and also, i tried to use it, but cannot select it from menuconfig.
How come m68k cannot use device tree?
There was never any devicetree implementation, probably becouse it is missing on Linux too.
It is a real shame that we can't do better than that.
I've added Tom in for comment as I'm not sure what is best here.
Yeah, I think as sandbox shows, if/when we don't have to worry about also Linux dts files, it's not a lot of work to populate up what's required for just U-Boot, so long as we have the run-time space. And if not, that's what OF_PLATDATA is for.
About SPL_OF_PLATDATA, do you think i can change it to a more generic OF_PLATDATA, or GENERIC_OF_PLATDATA not dependant from SPL (i am not using SPL) ? I also need to add "select SUPPORT_OF_CONTROL" for m68k arch.
Let me know if the above is ok, otherwise i start to work for the devicetree option.
Really, we should probably go the device tree path first and see where that gets us. I think it'll be less work in the end. Thanks!
participants (3)
-
Angelo Dureghello
-
Simon Glass
-
Tom Rini