diff mbox series

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

Message ID 20180503220117.GA1986@jerusalem
State Rejected
Delegated to: Simon Glass
Headers show
Series [U-Boot,v2,1/2] drivers; add DM_NO_OF Kconfig option | expand

Commit Message

Angelo Dureghello May 3, 2018, 10:01 p.m. UTC
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(-)

Comments

Simon Glass May 26, 2018, 10:18 p.m. UTC | #1
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
Angelo Dureghello May 27, 2018, 7:22 a.m. UTC | #2
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
Simon Glass May 28, 2018, 1:45 a.m. UTC | #3
+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
Tom Rini May 29, 2018, 12:59 a.m. UTC | #4
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.
Angelo Dureghello May 29, 2018, 8:20 a.m. UTC | #5
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
Angelo Dureghello May 30, 2018, 7:58 p.m. UTC | #6
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
Simon Glass May 31, 2018, 1:01 p.m. UTC | #7
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
Tom Rini June 1, 2018, 1:51 a.m. UTC | #8
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!
diff mbox series

Patch

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
 };