Re: [U-Boot] [PATCH 8/8] dm: core: abolish u-boot, dm-pre-reloc property

2014-11-26 Thread Simon Glass
Hi Masahiro,

On 24 November 2014 at 20:18, Masahiro Yamada yamad...@jp.panasonic.com wrote:
 Hi Simon,



 On Mon, 24 Nov 2014 15:29:23 -0700
 Simon Glass s...@chromium.org wrote:

 HI Masahiro,

 On 21 November 2014 at 02:59, Masahiro Yamada yamad...@jp.panasonic.com 
 wrote:
  Hi Simon,
 
 
 
  On Thu, 20 Nov 2014 16:44:22 +
  Simon Glass s...@chromium.org wrote:
 
  Hi Masahiro,
 
  On 19 November 2014 09:21, Masahiro Yamada yamad...@jp.panasonic.com 
  wrote:
   Hi Simon,
  
  
  
   On Tue, 18 Nov 2014 14:37:33 +
   Simon Glass s...@chromium.org wrote:
  
   Hi Masahiro,
  
   On 18 November 2014 12:51, Masahiro Yamada yamad...@jp.panasonic.com 
   wrote:
Hi Simon,
   
   
   
On Mon, 17 Nov 2014 18:17:43 +
Simon Glass s...@chromium.org wrote:
   
Hi Masahiro,
   
On 17 November 2014 08:19, Masahiro Yamada 
yamad...@jp.panasonic.com wrote:
 The driver model provides two ways to pass the device information,
 platform data and device tree.  Either way works to bind devices 
 and
 drivers, but there is inconsistency in terms of how to pass the
 pre-reloc flag.

 In the platform data way, the pre-reloc DM scan checks if each 
 driver
 has DM_FLAG_PRE_RELOC flag (this was changed to use 
 U_BOOT_DRIVER_F
 just before).  That is, each **driver** has the pre-reloc 
 attribute.

 In the device tree control, the existence of 
 u-boot,dm-pre-reloc is
 checked for each device node.  The driver flag 
 DM_FLAG_PRE_RELOC is
 never checked.  That is, each **device** owns the pre-reloc 
 attribute.

 Drivers should generally work both with platform data and device 
 tree,
 but this inconsistency has made our life difficult.
   
I feel we should use device tree where available, and only fall back
to platform data when necessary (no device tree available for
platform, for example).
   
No, it is true that device tree is a useful tool, but it should be 
optional.
   
All the infrastructures of drivers must work perfectly without 
device tree.
   
The device tree is just one choice of how to give device information.
   
  
   Which platform(s) are we talking about here?
  
  
   I am talking about the general design policy of drivers
   in U-Boot and Linux.
 
  Well Linux has moved away from platform data, right?
 
  
  
  
   
   

 This commit abolishes u-boot,dm-pre-reloc property because:

  - Having a U-Boot specific property makes it difficult to share 
 the
device tree sources between Linux and U-Boot.

  - The number of devices is generally larger than that of drivers.
Each driver often has multiple devices with different base
addresses.  It seems more reasonable to add the pre-reloc 
 attribute
to drivers than devices.
   
The inability for platform data to specify which devices need to be
pre-relocation is certainly a limitation. But I'm not sure that the
solution is to remove that feature from the device tree. Prior to
relocation memory may be severely limited. Things like GPIO and 
serial
can create quite a few devices (e.g. Tegra has 16 for GPIO and 4 for
serial), but only a subset may be needed before relocation (on Tegra
only 2!).
   
I'm actually pretty comfortable with platform data having a limited
subset of functionality, since I believe most platforms will use
device tree for one reason or another.
   
Thoughts?
   
   
No, it is not justified to compel to use device tree
unless Linux is the target OS.
   
Even in Linux, limited numbers of architrectures use device trees.
  
   Fair enough, but let's look at this when the case comes up. So far the
   platforms that use I2C and SPI with DM do use device tree in Linux and
   probably should do in U-Boot.
  
   OK, so let's think about it when a problem happens.
  
  
   Let's get back talking about this patch.
   If 8/8 is not acceptable, I do not have motivation for 6/8 and 7/8, 
   either.
  
  
   I still believe that the top priority of the design policy is
   to share the same device tree source between U-Boot and Linux.
 
  Agreed, and we really need to line up so we are using the same source.
  I do want to point out that we mostly do, the differences are small.
 
  
   I am really unhappy about having such a u-boot specific property.
  
   So, my suggestion is this patch, and one possible alternative is
   to bind all the devices even before relocation.
   Only binding won't use much memory because U-Boot does not probe devices
   until they are actually used.
   Both u-boot,dm-pre-reloc and DM_FLAG_PRE_RELOC will go away.
  
  
   What do you think?
 
  That's a waste of time since we won't use them and the goal is to do
  as little as possible before relocation.
 
  I don't see that the pre-reloc property is a huge problem. In the case
  of serial I found a way 

Re: [U-Boot] [PATCH 8/8] dm: core: abolish u-boot, dm-pre-reloc property

2014-11-24 Thread Simon Glass
HI Masahiro,

On 21 November 2014 at 02:59, Masahiro Yamada yamad...@jp.panasonic.com wrote:
 Hi Simon,



 On Thu, 20 Nov 2014 16:44:22 +
 Simon Glass s...@chromium.org wrote:

 Hi Masahiro,

 On 19 November 2014 09:21, Masahiro Yamada yamad...@jp.panasonic.com wrote:
  Hi Simon,
 
 
 
  On Tue, 18 Nov 2014 14:37:33 +
  Simon Glass s...@chromium.org wrote:
 
  Hi Masahiro,
 
  On 18 November 2014 12:51, Masahiro Yamada yamad...@jp.panasonic.com 
  wrote:
   Hi Simon,
  
  
  
   On Mon, 17 Nov 2014 18:17:43 +
   Simon Glass s...@chromium.org wrote:
  
   Hi Masahiro,
  
   On 17 November 2014 08:19, Masahiro Yamada yamad...@jp.panasonic.com 
   wrote:
The driver model provides two ways to pass the device information,
platform data and device tree.  Either way works to bind devices and
drivers, but there is inconsistency in terms of how to pass the
pre-reloc flag.
   
In the platform data way, the pre-reloc DM scan checks if each driver
has DM_FLAG_PRE_RELOC flag (this was changed to use U_BOOT_DRIVER_F
just before).  That is, each **driver** has the pre-reloc attribute.
   
In the device tree control, the existence of u-boot,dm-pre-reloc is
checked for each device node.  The driver flag DM_FLAG_PRE_RELOC is
never checked.  That is, each **device** owns the pre-reloc 
attribute.
   
Drivers should generally work both with platform data and device 
tree,
but this inconsistency has made our life difficult.
  
   I feel we should use device tree where available, and only fall back
   to platform data when necessary (no device tree available for
   platform, for example).
  
   No, it is true that device tree is a useful tool, but it should be 
   optional.
  
   All the infrastructures of drivers must work perfectly without device 
   tree.
  
   The device tree is just one choice of how to give device information.
  
 
  Which platform(s) are we talking about here?
 
 
  I am talking about the general design policy of drivers
  in U-Boot and Linux.

 Well Linux has moved away from platform data, right?

 
 
 
  
  
   
This commit abolishes u-boot,dm-pre-reloc property because:
   
 - Having a U-Boot specific property makes it difficult to share the
   device tree sources between Linux and U-Boot.
   
 - The number of devices is generally larger than that of drivers.
   Each driver often has multiple devices with different base
   addresses.  It seems more reasonable to add the pre-reloc 
attribute
   to drivers than devices.
  
   The inability for platform data to specify which devices need to be
   pre-relocation is certainly a limitation. But I'm not sure that the
   solution is to remove that feature from the device tree. Prior to
   relocation memory may be severely limited. Things like GPIO and serial
   can create quite a few devices (e.g. Tegra has 16 for GPIO and 4 for
   serial), but only a subset may be needed before relocation (on Tegra
   only 2!).
  
   I'm actually pretty comfortable with platform data having a limited
   subset of functionality, since I believe most platforms will use
   device tree for one reason or another.
  
   Thoughts?
  
  
   No, it is not justified to compel to use device tree
   unless Linux is the target OS.
  
   Even in Linux, limited numbers of architrectures use device trees.
 
  Fair enough, but let's look at this when the case comes up. So far the
  platforms that use I2C and SPI with DM do use device tree in Linux and
  probably should do in U-Boot.
 
  OK, so let's think about it when a problem happens.
 
 
  Let's get back talking about this patch.
  If 8/8 is not acceptable, I do not have motivation for 6/8 and 7/8, either.
 
 
  I still believe that the top priority of the design policy is
  to share the same device tree source between U-Boot and Linux.

 Agreed, and we really need to line up so we are using the same source.
 I do want to point out that we mostly do, the differences are small.

 
  I am really unhappy about having such a u-boot specific property.
 
  So, my suggestion is this patch, and one possible alternative is
  to bind all the devices even before relocation.
  Only binding won't use much memory because U-Boot does not probe devices
  until they are actually used.
  Both u-boot,dm-pre-reloc and DM_FLAG_PRE_RELOC will go away.
 
 
  What do you think?

 That's a waste of time since we won't use them and the goal is to do
 as little as possible before relocation.

 I don't see that the pre-reloc property is a huge problem. In the case
 of serial I found a way around it (using aliases). I hope that it will
 be possible more generally and we can review that at some point in the
 future. There are bigger fish to fry in driver model I think - so many
 uclasses to write.



 OK.  I've marked 6/8 thru 8/8 as Rejected.
 No point for 6/8 and 7/8 without 8/8, I think.

I'm not so sure. Your method reduces the number of drivers that are

Re: [U-Boot] [PATCH 8/8] dm: core: abolish u-boot, dm-pre-reloc property

2014-11-24 Thread Masahiro Yamada
Hi Simon,



On Mon, 24 Nov 2014 15:29:23 -0700
Simon Glass s...@chromium.org wrote:

 HI Masahiro,
 
 On 21 November 2014 at 02:59, Masahiro Yamada yamad...@jp.panasonic.com 
 wrote:
  Hi Simon,
 
 
 
  On Thu, 20 Nov 2014 16:44:22 +
  Simon Glass s...@chromium.org wrote:
 
  Hi Masahiro,
 
  On 19 November 2014 09:21, Masahiro Yamada yamad...@jp.panasonic.com 
  wrote:
   Hi Simon,
  
  
  
   On Tue, 18 Nov 2014 14:37:33 +
   Simon Glass s...@chromium.org wrote:
  
   Hi Masahiro,
  
   On 18 November 2014 12:51, Masahiro Yamada yamad...@jp.panasonic.com 
   wrote:
Hi Simon,
   
   
   
On Mon, 17 Nov 2014 18:17:43 +
Simon Glass s...@chromium.org wrote:
   
Hi Masahiro,
   
On 17 November 2014 08:19, Masahiro Yamada 
yamad...@jp.panasonic.com wrote:
 The driver model provides two ways to pass the device information,
 platform data and device tree.  Either way works to bind devices 
 and
 drivers, but there is inconsistency in terms of how to pass the
 pre-reloc flag.

 In the platform data way, the pre-reloc DM scan checks if each 
 driver
 has DM_FLAG_PRE_RELOC flag (this was changed to use U_BOOT_DRIVER_F
 just before).  That is, each **driver** has the pre-reloc 
 attribute.

 In the device tree control, the existence of u-boot,dm-pre-reloc 
 is
 checked for each device node.  The driver flag DM_FLAG_PRE_RELOC 
 is
 never checked.  That is, each **device** owns the pre-reloc 
 attribute.

 Drivers should generally work both with platform data and device 
 tree,
 but this inconsistency has made our life difficult.
   
I feel we should use device tree where available, and only fall back
to platform data when necessary (no device tree available for
platform, for example).
   
No, it is true that device tree is a useful tool, but it should be 
optional.
   
All the infrastructures of drivers must work perfectly without device 
tree.
   
The device tree is just one choice of how to give device information.
   
  
   Which platform(s) are we talking about here?
  
  
   I am talking about the general design policy of drivers
   in U-Boot and Linux.
 
  Well Linux has moved away from platform data, right?
 
  
  
  
   
   

 This commit abolishes u-boot,dm-pre-reloc property because:

  - Having a U-Boot specific property makes it difficult to share 
 the
device tree sources between Linux and U-Boot.

  - The number of devices is generally larger than that of drivers.
Each driver often has multiple devices with different base
addresses.  It seems more reasonable to add the pre-reloc 
 attribute
to drivers than devices.
   
The inability for platform data to specify which devices need to be
pre-relocation is certainly a limitation. But I'm not sure that the
solution is to remove that feature from the device tree. Prior to
relocation memory may be severely limited. Things like GPIO and 
serial
can create quite a few devices (e.g. Tegra has 16 for GPIO and 4 for
serial), but only a subset may be needed before relocation (on Tegra
only 2!).
   
I'm actually pretty comfortable with platform data having a limited
subset of functionality, since I believe most platforms will use
device tree for one reason or another.
   
Thoughts?
   
   
No, it is not justified to compel to use device tree
unless Linux is the target OS.
   
Even in Linux, limited numbers of architrectures use device trees.
  
   Fair enough, but let's look at this when the case comes up. So far the
   platforms that use I2C and SPI with DM do use device tree in Linux and
   probably should do in U-Boot.
  
   OK, so let's think about it when a problem happens.
  
  
   Let's get back talking about this patch.
   If 8/8 is not acceptable, I do not have motivation for 6/8 and 7/8, 
   either.
  
  
   I still believe that the top priority of the design policy is
   to share the same device tree source between U-Boot and Linux.
 
  Agreed, and we really need to line up so we are using the same source.
  I do want to point out that we mostly do, the differences are small.
 
  
   I am really unhappy about having such a u-boot specific property.
  
   So, my suggestion is this patch, and one possible alternative is
   to bind all the devices even before relocation.
   Only binding won't use much memory because U-Boot does not probe devices
   until they are actually used.
   Both u-boot,dm-pre-reloc and DM_FLAG_PRE_RELOC will go away.
  
  
   What do you think?
 
  That's a waste of time since we won't use them and the goal is to do
  as little as possible before relocation.
 
  I don't see that the pre-reloc property is a huge problem. In the case
  of serial I found a way around it (using aliases). I hope that it will
  be possible more generally and we can review that at 

Re: [U-Boot] [PATCH 8/8] dm: core: abolish u-boot, dm-pre-reloc property

2014-11-21 Thread Masahiro Yamada
Hi Simon,



On Thu, 20 Nov 2014 16:44:22 +
Simon Glass s...@chromium.org wrote:

 Hi Masahiro,
 
 On 19 November 2014 09:21, Masahiro Yamada yamad...@jp.panasonic.com wrote:
  Hi Simon,
 
 
 
  On Tue, 18 Nov 2014 14:37:33 +
  Simon Glass s...@chromium.org wrote:
 
  Hi Masahiro,
 
  On 18 November 2014 12:51, Masahiro Yamada yamad...@jp.panasonic.com 
  wrote:
   Hi Simon,
  
  
  
   On Mon, 17 Nov 2014 18:17:43 +
   Simon Glass s...@chromium.org wrote:
  
   Hi Masahiro,
  
   On 17 November 2014 08:19, Masahiro Yamada yamad...@jp.panasonic.com 
   wrote:
The driver model provides two ways to pass the device information,
platform data and device tree.  Either way works to bind devices and
drivers, but there is inconsistency in terms of how to pass the
pre-reloc flag.
   
In the platform data way, the pre-reloc DM scan checks if each driver
has DM_FLAG_PRE_RELOC flag (this was changed to use U_BOOT_DRIVER_F
just before).  That is, each **driver** has the pre-reloc attribute.
   
In the device tree control, the existence of u-boot,dm-pre-reloc is
checked for each device node.  The driver flag DM_FLAG_PRE_RELOC is
never checked.  That is, each **device** owns the pre-reloc attribute.
   
Drivers should generally work both with platform data and device tree,
but this inconsistency has made our life difficult.
  
   I feel we should use device tree where available, and only fall back
   to platform data when necessary (no device tree available for
   platform, for example).
  
   No, it is true that device tree is a useful tool, but it should be 
   optional.
  
   All the infrastructures of drivers must work perfectly without device 
   tree.
  
   The device tree is just one choice of how to give device information.
  
 
  Which platform(s) are we talking about here?
 
 
  I am talking about the general design policy of drivers
  in U-Boot and Linux.
 
 Well Linux has moved away from platform data, right?
 
 
 
 
  
  
   
This commit abolishes u-boot,dm-pre-reloc property because:
   
 - Having a U-Boot specific property makes it difficult to share the
   device tree sources between Linux and U-Boot.
   
 - The number of devices is generally larger than that of drivers.
   Each driver often has multiple devices with different base
   addresses.  It seems more reasonable to add the pre-reloc attribute
   to drivers than devices.
  
   The inability for platform data to specify which devices need to be
   pre-relocation is certainly a limitation. But I'm not sure that the
   solution is to remove that feature from the device tree. Prior to
   relocation memory may be severely limited. Things like GPIO and serial
   can create quite a few devices (e.g. Tegra has 16 for GPIO and 4 for
   serial), but only a subset may be needed before relocation (on Tegra
   only 2!).
  
   I'm actually pretty comfortable with platform data having a limited
   subset of functionality, since I believe most platforms will use
   device tree for one reason or another.
  
   Thoughts?
  
  
   No, it is not justified to compel to use device tree
   unless Linux is the target OS.
  
   Even in Linux, limited numbers of architrectures use device trees.
 
  Fair enough, but let's look at this when the case comes up. So far the
  platforms that use I2C and SPI with DM do use device tree in Linux and
  probably should do in U-Boot.
 
  OK, so let's think about it when a problem happens.
 
 
  Let's get back talking about this patch.
  If 8/8 is not acceptable, I do not have motivation for 6/8 and 7/8, either.
 
 
  I still believe that the top priority of the design policy is
  to share the same device tree source between U-Boot and Linux.
 
 Agreed, and we really need to line up so we are using the same source.
 I do want to point out that we mostly do, the differences are small.
 
 
  I am really unhappy about having such a u-boot specific property.
 
  So, my suggestion is this patch, and one possible alternative is
  to bind all the devices even before relocation.
  Only binding won't use much memory because U-Boot does not probe devices
  until they are actually used.
  Both u-boot,dm-pre-reloc and DM_FLAG_PRE_RELOC will go away.
 
 
  What do you think?
 
 That's a waste of time since we won't use them and the goal is to do
 as little as possible before relocation.
 
 I don't see that the pre-reloc property is a huge problem. In the case
 of serial I found a way around it (using aliases). I hope that it will
 be possible more generally and we can review that at some point in the
 future. There are bigger fish to fry in driver model I think - so many
 uclasses to write.



OK.  I've marked 6/8 thru 8/8 as Rejected.
No point for 6/8 and 7/8 without 8/8, I think.

Best Regards
Masahiro Yamada

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 8/8] dm: core: abolish u-boot, dm-pre-reloc property

2014-11-20 Thread Simon Glass
Hi Masahiro,

On 19 November 2014 09:21, Masahiro Yamada yamad...@jp.panasonic.com wrote:
 Hi Simon,



 On Tue, 18 Nov 2014 14:37:33 +
 Simon Glass s...@chromium.org wrote:

 Hi Masahiro,

 On 18 November 2014 12:51, Masahiro Yamada yamad...@jp.panasonic.com wrote:
  Hi Simon,
 
 
 
  On Mon, 17 Nov 2014 18:17:43 +
  Simon Glass s...@chromium.org wrote:
 
  Hi Masahiro,
 
  On 17 November 2014 08:19, Masahiro Yamada yamad...@jp.panasonic.com 
  wrote:
   The driver model provides two ways to pass the device information,
   platform data and device tree.  Either way works to bind devices and
   drivers, but there is inconsistency in terms of how to pass the
   pre-reloc flag.
  
   In the platform data way, the pre-reloc DM scan checks if each driver
   has DM_FLAG_PRE_RELOC flag (this was changed to use U_BOOT_DRIVER_F
   just before).  That is, each **driver** has the pre-reloc attribute.
  
   In the device tree control, the existence of u-boot,dm-pre-reloc is
   checked for each device node.  The driver flag DM_FLAG_PRE_RELOC is
   never checked.  That is, each **device** owns the pre-reloc attribute.
  
   Drivers should generally work both with platform data and device tree,
   but this inconsistency has made our life difficult.
 
  I feel we should use device tree where available, and only fall back
  to platform data when necessary (no device tree available for
  platform, for example).
 
  No, it is true that device tree is a useful tool, but it should be 
  optional.
 
  All the infrastructures of drivers must work perfectly without device tree.
 
  The device tree is just one choice of how to give device information.
 

 Which platform(s) are we talking about here?


 I am talking about the general design policy of drivers
 in U-Boot and Linux.

Well Linux has moved away from platform data, right?




 
 
  
   This commit abolishes u-boot,dm-pre-reloc property because:
  
- Having a U-Boot specific property makes it difficult to share the
  device tree sources between Linux and U-Boot.
  
- The number of devices is generally larger than that of drivers.
  Each driver often has multiple devices with different base
  addresses.  It seems more reasonable to add the pre-reloc attribute
  to drivers than devices.
 
  The inability for platform data to specify which devices need to be
  pre-relocation is certainly a limitation. But I'm not sure that the
  solution is to remove that feature from the device tree. Prior to
  relocation memory may be severely limited. Things like GPIO and serial
  can create quite a few devices (e.g. Tegra has 16 for GPIO and 4 for
  serial), but only a subset may be needed before relocation (on Tegra
  only 2!).
 
  I'm actually pretty comfortable with platform data having a limited
  subset of functionality, since I believe most platforms will use
  device tree for one reason or another.
 
  Thoughts?
 
 
  No, it is not justified to compel to use device tree
  unless Linux is the target OS.
 
  Even in Linux, limited numbers of architrectures use device trees.

 Fair enough, but let's look at this when the case comes up. So far the
 platforms that use I2C and SPI with DM do use device tree in Linux and
 probably should do in U-Boot.

 OK, so let's think about it when a problem happens.


 Let's get back talking about this patch.
 If 8/8 is not acceptable, I do not have motivation for 6/8 and 7/8, either.


 I still believe that the top priority of the design policy is
 to share the same device tree source between U-Boot and Linux.

Agreed, and we really need to line up so we are using the same source.
I do want to point out that we mostly do, the differences are small.


 I am really unhappy about having such a u-boot specific property.

 So, my suggestion is this patch, and one possible alternative is
 to bind all the devices even before relocation.
 Only binding won't use much memory because U-Boot does not probe devices
 until they are actually used.
 Both u-boot,dm-pre-reloc and DM_FLAG_PRE_RELOC will go away.


 What do you think?

That's a waste of time since we won't use them and the goal is to do
as little as possible before relocation.

I don't see that the pre-reloc property is a huge problem. In the case
of serial I found a way around it (using aliases). I hope that it will
be possible more generally and we can review that at some point in the
future. There are bigger fish to fry in driver model I think - so many
uclasses to write.

Regards,
Simon
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 8/8] dm: core: abolish u-boot, dm-pre-reloc property

2014-11-20 Thread Stephen Warren

On 11/20/2014 09:44 AM, Simon Glass wrote:

Hi Masahiro,

On 19 November 2014 09:21, Masahiro Yamada yamad...@jp.panasonic.com wrote:

Hi Simon,



On Tue, 18 Nov 2014 14:37:33 +
Simon Glass s...@chromium.org wrote:


Hi Masahiro,

On 18 November 2014 12:51, Masahiro Yamada yamad...@jp.panasonic.com wrote:

Hi Simon,



On Mon, 17 Nov 2014 18:17:43 +
Simon Glass s...@chromium.org wrote:


Hi Masahiro,

On 17 November 2014 08:19, Masahiro Yamada yamad...@jp.panasonic.com wrote:

The driver model provides two ways to pass the device information,
platform data and device tree.  Either way works to bind devices and
drivers, but there is inconsistency in terms of how to pass the
pre-reloc flag.

In the platform data way, the pre-reloc DM scan checks if each driver
has DM_FLAG_PRE_RELOC flag (this was changed to use U_BOOT_DRIVER_F
just before).  That is, each **driver** has the pre-reloc attribute.

In the device tree control, the existence of u-boot,dm-pre-reloc is
checked for each device node.  The driver flag DM_FLAG_PRE_RELOC is
never checked.  That is, each **device** owns the pre-reloc attribute.

Drivers should generally work both with platform data and device tree,
but this inconsistency has made our life difficult.


I feel we should use device tree where available, and only fall back
to platform data when necessary (no device tree available for
platform, for example).


No, it is true that device tree is a useful tool, but it should be optional.

All the infrastructures of drivers must work perfectly without device tree.

The device tree is just one choice of how to give device information.



Which platform(s) are we talking about here?



I am talking about the general design policy of drivers
in U-Boot and Linux.


Well Linux has moved away from platform data, right?


As a blanket statement, that isn't true.

Some architectures (e.g. ARM) have moved to DT. That move is something 
done by the ARM maintainers, not something that's necessarily being 
forced upon every single architecture. I know of no move to force 
everyone to convert to DT.


What makes sense for Linux doesn't always make sense for everything else 
anyway.


In my opinion, DT in Linux isn't actually doing much that's useful, and 
DT in a boot loader is likely to be even less useful.

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 8/8] dm: core: abolish u-boot, dm-pre-reloc property

2014-11-19 Thread Masahiro Yamada
Hi Simon,



On Tue, 18 Nov 2014 14:37:33 +
Simon Glass s...@chromium.org wrote:

 Hi Masahiro,
 
 On 18 November 2014 12:51, Masahiro Yamada yamad...@jp.panasonic.com wrote:
  Hi Simon,
 
 
 
  On Mon, 17 Nov 2014 18:17:43 +
  Simon Glass s...@chromium.org wrote:
 
  Hi Masahiro,
 
  On 17 November 2014 08:19, Masahiro Yamada yamad...@jp.panasonic.com 
  wrote:
   The driver model provides two ways to pass the device information,
   platform data and device tree.  Either way works to bind devices and
   drivers, but there is inconsistency in terms of how to pass the
   pre-reloc flag.
  
   In the platform data way, the pre-reloc DM scan checks if each driver
   has DM_FLAG_PRE_RELOC flag (this was changed to use U_BOOT_DRIVER_F
   just before).  That is, each **driver** has the pre-reloc attribute.
  
   In the device tree control, the existence of u-boot,dm-pre-reloc is
   checked for each device node.  The driver flag DM_FLAG_PRE_RELOC is
   never checked.  That is, each **device** owns the pre-reloc attribute.
  
   Drivers should generally work both with platform data and device tree,
   but this inconsistency has made our life difficult.
 
  I feel we should use device tree where available, and only fall back
  to platform data when necessary (no device tree available for
  platform, for example).
 
  No, it is true that device tree is a useful tool, but it should be optional.
 
  All the infrastructures of drivers must work perfectly without device tree.
 
  The device tree is just one choice of how to give device information.
 
 
 Which platform(s) are we talking about here?


I am talking about the general design policy of drivers
in U-Boot and Linux.



 
 
  
   This commit abolishes u-boot,dm-pre-reloc property because:
  
- Having a U-Boot specific property makes it difficult to share the
  device tree sources between Linux and U-Boot.
  
- The number of devices is generally larger than that of drivers.
  Each driver often has multiple devices with different base
  addresses.  It seems more reasonable to add the pre-reloc attribute
  to drivers than devices.
 
  The inability for platform data to specify which devices need to be
  pre-relocation is certainly a limitation. But I'm not sure that the
  solution is to remove that feature from the device tree. Prior to
  relocation memory may be severely limited. Things like GPIO and serial
  can create quite a few devices (e.g. Tegra has 16 for GPIO and 4 for
  serial), but only a subset may be needed before relocation (on Tegra
  only 2!).
 
  I'm actually pretty comfortable with platform data having a limited
  subset of functionality, since I believe most platforms will use
  device tree for one reason or another.
 
  Thoughts?
 
 
  No, it is not justified to compel to use device tree
  unless Linux is the target OS.
 
  Even in Linux, limited numbers of architrectures use device trees.
 
 Fair enough, but let's look at this when the case comes up. So far the
 platforms that use I2C and SPI with DM do use device tree in Linux and
 probably should do in U-Boot.

OK, so let's think about it when a problem happens.


Let's get back talking about this patch.
If 8/8 is not acceptable, I do not have motivation for 6/8 and 7/8, either.


I still believe that the top priority of the design policy is
to share the same device tree source between U-Boot and Linux.

I am really unhappy about having such a u-boot specific property.

So, my suggestion is this patch, and one possible alternative is
to bind all the devices even before relocation.
Only binding won't use much memory because U-Boot does not probe devices
until they are actually used.
Both u-boot,dm-pre-reloc and DM_FLAG_PRE_RELOC will go away.


What do you think?


Best Regards
Masahiro Yamada

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 8/8] dm: core: abolish u-boot, dm-pre-reloc property

2014-11-18 Thread Masahiro Yamada
Hi Simon,



On Mon, 17 Nov 2014 18:17:43 +
Simon Glass s...@chromium.org wrote:

 Hi Masahiro,
 
 On 17 November 2014 08:19, Masahiro Yamada yamad...@jp.panasonic.com wrote:
  The driver model provides two ways to pass the device information,
  platform data and device tree.  Either way works to bind devices and
  drivers, but there is inconsistency in terms of how to pass the
  pre-reloc flag.
 
  In the platform data way, the pre-reloc DM scan checks if each driver
  has DM_FLAG_PRE_RELOC flag (this was changed to use U_BOOT_DRIVER_F
  just before).  That is, each **driver** has the pre-reloc attribute.
 
  In the device tree control, the existence of u-boot,dm-pre-reloc is
  checked for each device node.  The driver flag DM_FLAG_PRE_RELOC is
  never checked.  That is, each **device** owns the pre-reloc attribute.
 
  Drivers should generally work both with platform data and device tree,
  but this inconsistency has made our life difficult.
 
 I feel we should use device tree where available, and only fall back
 to platform data when necessary (no device tree available for
 platform, for example).

No, it is true that device tree is a useful tool, but it should be optional.

All the infrastructures of drivers must work perfectly without device tree.

The device tree is just one choice of how to give device information.




 
  This commit abolishes u-boot,dm-pre-reloc property because:
 
   - Having a U-Boot specific property makes it difficult to share the
 device tree sources between Linux and U-Boot.
 
   - The number of devices is generally larger than that of drivers.
 Each driver often has multiple devices with different base
 addresses.  It seems more reasonable to add the pre-reloc attribute
 to drivers than devices.
 
 The inability for platform data to specify which devices need to be
 pre-relocation is certainly a limitation. But I'm not sure that the
 solution is to remove that feature from the device tree. Prior to
 relocation memory may be severely limited. Things like GPIO and serial
 can create quite a few devices (e.g. Tegra has 16 for GPIO and 4 for
 serial), but only a subset may be needed before relocation (on Tegra
 only 2!).
 
 I'm actually pretty comfortable with platform data having a limited
 subset of functionality, since I believe most platforms will use
 device tree for one reason or another.
 
 Thoughts?
 

No, it is not justified to compel to use device tree
unless Linux is the target OS.

Even in Linux, limited numbers of architrectures use device trees.






Best Regards
Masahiro Yamada

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 8/8] dm: core: abolish u-boot, dm-pre-reloc property

2014-11-18 Thread Simon Glass
Hi Masahiro,

On 18 November 2014 12:51, Masahiro Yamada yamad...@jp.panasonic.com wrote:
 Hi Simon,



 On Mon, 17 Nov 2014 18:17:43 +
 Simon Glass s...@chromium.org wrote:

 Hi Masahiro,

 On 17 November 2014 08:19, Masahiro Yamada yamad...@jp.panasonic.com wrote:
  The driver model provides two ways to pass the device information,
  platform data and device tree.  Either way works to bind devices and
  drivers, but there is inconsistency in terms of how to pass the
  pre-reloc flag.
 
  In the platform data way, the pre-reloc DM scan checks if each driver
  has DM_FLAG_PRE_RELOC flag (this was changed to use U_BOOT_DRIVER_F
  just before).  That is, each **driver** has the pre-reloc attribute.
 
  In the device tree control, the existence of u-boot,dm-pre-reloc is
  checked for each device node.  The driver flag DM_FLAG_PRE_RELOC is
  never checked.  That is, each **device** owns the pre-reloc attribute.
 
  Drivers should generally work both with platform data and device tree,
  but this inconsistency has made our life difficult.

 I feel we should use device tree where available, and only fall back
 to platform data when necessary (no device tree available for
 platform, for example).

 No, it is true that device tree is a useful tool, but it should be optional.

 All the infrastructures of drivers must work perfectly without device tree.

 The device tree is just one choice of how to give device information.


Which platform(s) are we talking about here?




 
  This commit abolishes u-boot,dm-pre-reloc property because:
 
   - Having a U-Boot specific property makes it difficult to share the
 device tree sources between Linux and U-Boot.
 
   - The number of devices is generally larger than that of drivers.
 Each driver often has multiple devices with different base
 addresses.  It seems more reasonable to add the pre-reloc attribute
 to drivers than devices.

 The inability for platform data to specify which devices need to be
 pre-relocation is certainly a limitation. But I'm not sure that the
 solution is to remove that feature from the device tree. Prior to
 relocation memory may be severely limited. Things like GPIO and serial
 can create quite a few devices (e.g. Tegra has 16 for GPIO and 4 for
 serial), but only a subset may be needed before relocation (on Tegra
 only 2!).

 I'm actually pretty comfortable with platform data having a limited
 subset of functionality, since I believe most platforms will use
 device tree for one reason or another.

 Thoughts?


 No, it is not justified to compel to use device tree
 unless Linux is the target OS.

 Even in Linux, limited numbers of architrectures use device trees.

Fair enough, but let's look at this when the case comes up. So far the
platforms that use I2C and SPI with DM do use device tree in Linux and
probably should do in U-Boot.

Regards,
Simon
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 8/8] dm: core: abolish u-boot, dm-pre-reloc property

2014-11-17 Thread Masahiro Yamada
The driver model provides two ways to pass the device information,
platform data and device tree.  Either way works to bind devices and
drivers, but there is inconsistency in terms of how to pass the
pre-reloc flag.

In the platform data way, the pre-reloc DM scan checks if each driver
has DM_FLAG_PRE_RELOC flag (this was changed to use U_BOOT_DRIVER_F
just before).  That is, each **driver** has the pre-reloc attribute.

In the device tree control, the existence of u-boot,dm-pre-reloc is
checked for each device node.  The driver flag DM_FLAG_PRE_RELOC is
never checked.  That is, each **device** owns the pre-reloc attribute.

Drivers should generally work both with platform data and device tree,
but this inconsistency has made our life difficult.

This commit abolishes u-boot,dm-pre-reloc property because:

 - Having a U-Boot specific property makes it difficult to share the
   device tree sources between Linux and U-Boot.

 - The number of devices is generally larger than that of drivers.
   Each driver often has multiple devices with different base
   addresses.  It seems more reasonable to add the pre-reloc attribute
   to drivers than devices.

Signed-off-by: Masahiro Yamada yamad...@jp.panasonic.com
---

 arch/arm/dts/exynos5.dtsi   |  1 -
 doc/driver-model/README.txt |  5 ++---
 drivers/core/lists.c|  6 +++---
 drivers/core/root.c |  6 ++
 drivers/core/simple-bus.c   |  2 +-
 include/dm/lists.h  | 13 ++---
 include/dm/root.h   |  4 ++--
 test/dm/test-fdt.c  |  2 +-
 test/dm/test.dts|  2 --
 9 files changed, 21 insertions(+), 20 deletions(-)

diff --git a/arch/arm/dts/exynos5.dtsi b/arch/arm/dts/exynos5.dtsi
index e539068..dc5405b 100644
--- a/arch/arm/dts/exynos5.dtsi
+++ b/arch/arm/dts/exynos5.dtsi
@@ -244,7 +244,6 @@
compatible = samsung,exynos4210-uart;
reg = 0x12C3 0x100;
interrupts = 0 54 0;
-   u-boot,dm-pre-reloc;
id = 3;
};
 
diff --git a/doc/driver-model/README.txt b/doc/driver-model/README.txt
index e4114d5..06f6515 100644
--- a/doc/driver-model/README.txt
+++ b/doc/driver-model/README.txt
@@ -739,9 +739,8 @@ Pre-Relocation Support
 --
 
 For pre-relocation we simply call the driver model init function. Only
-drivers declared with U_BOOT_DRIVER_F or the device tree
-'u-boot,dm-pre-reloc' flag are initialised prior to relocation. This helps
-to reduce the driver model overhead.
+drivers declared with U_BOOT_DRIVER_F are initialised prior to relocation.
+This helps to reduce the driver model overhead.
 
 Then post relocation we throw that away and re-init driver model again.
 For drivers which require some sort of continuity between pre- and
diff --git a/drivers/core/lists.c b/drivers/core/lists.c
index 5b61ab5..2109a9f 100644
--- a/drivers/core/lists.c
+++ b/drivers/core/lists.c
@@ -106,11 +106,11 @@ static int driver_check_compatible(const void *blob, int 
offset,
return -ENOENT;
 }
 
-int lists_bind_fdt(struct udevice *parent, const void *blob, int offset,
-  struct udevice **devp)
+int __lists_bind_fdt(struct udevice *parent, const void *blob, int offset,
+struct udevice **devp, bool pre_reloc_only)
 {
struct driver *entry = ll_entry_start(struct driver, driver1);
-   struct driver *end = ll_entry_end(struct driver, driver2);
+   struct driver *end = driver_entry_end(pre_reloc_only);
struct udevice *dev;
bool found = false;
const char *name;
diff --git a/drivers/core/root.c b/drivers/core/root.c
index 02970c8..2f0c409 100644
--- a/drivers/core/root.c
+++ b/drivers/core/root.c
@@ -87,10 +87,8 @@ int dm_scan_fdt_node(struct udevice *parent, const void 
*blob, int offset,
for (offset = fdt_first_subnode(blob, offset);
 offset  0;
 offset = fdt_next_subnode(blob, offset)) {
-   if (pre_reloc_only 
-   !fdt_getprop(blob, offset, u-boot,dm-pre-reloc, NULL))
-   continue;
-   err = lists_bind_fdt(parent, blob, offset, NULL);
+   err = __lists_bind_fdt(parent, blob, offset, NULL,
+  pre_reloc_only);
if (err  !ret)
ret = err;
}
diff --git a/drivers/core/simple-bus.c b/drivers/core/simple-bus.c
index 3ea4d82..483f8e2 100644
--- a/drivers/core/simple-bus.c
+++ b/drivers/core/simple-bus.c
@@ -26,7 +26,7 @@ static const struct udevice_id generic_simple_bus_ids[] = {
{ }
 };
 
-U_BOOT_DRIVER(simple_bus_drv) = {
+U_BOOT_DRIVER_F(simple_bus_drv) = {
.name   = generic_simple_bus,
.id = UCLASS_SIMPLE_BUS,
.of_match = generic_simple_bus_ids,
diff --git a/include/dm/lists.h b/include/dm/lists.h
index fbd428d..56bf6a7 100644
--- a/include/dm/lists.h
+++ b/include/dm/lists.h
@@ -53,7 +53,7 @@ struct uclass_driver *lists_uclass_lookup(enum 

Re: [U-Boot] [PATCH 8/8] dm: core: abolish u-boot, dm-pre-reloc property

2014-11-17 Thread Simon Glass
Hi Masahiro,

On 17 November 2014 08:19, Masahiro Yamada yamad...@jp.panasonic.com wrote:
 The driver model provides two ways to pass the device information,
 platform data and device tree.  Either way works to bind devices and
 drivers, but there is inconsistency in terms of how to pass the
 pre-reloc flag.

 In the platform data way, the pre-reloc DM scan checks if each driver
 has DM_FLAG_PRE_RELOC flag (this was changed to use U_BOOT_DRIVER_F
 just before).  That is, each **driver** has the pre-reloc attribute.

 In the device tree control, the existence of u-boot,dm-pre-reloc is
 checked for each device node.  The driver flag DM_FLAG_PRE_RELOC is
 never checked.  That is, each **device** owns the pre-reloc attribute.

 Drivers should generally work both with platform data and device tree,
 but this inconsistency has made our life difficult.

I feel we should use device tree where available, and only fall back
to platform data when necessary (no device tree available for
platform, for example).


 This commit abolishes u-boot,dm-pre-reloc property because:

  - Having a U-Boot specific property makes it difficult to share the
device tree sources between Linux and U-Boot.

  - The number of devices is generally larger than that of drivers.
Each driver often has multiple devices with different base
addresses.  It seems more reasonable to add the pre-reloc attribute
to drivers than devices.

The inability for platform data to specify which devices need to be
pre-relocation is certainly a limitation. But I'm not sure that the
solution is to remove that feature from the device tree. Prior to
relocation memory may be severely limited. Things like GPIO and serial
can create quite a few devices (e.g. Tegra has 16 for GPIO and 4 for
serial), but only a subset may be needed before relocation (on Tegra
only 2!).

I'm actually pretty comfortable with platform data having a limited
subset of functionality, since I believe most platforms will use
device tree for one reason or another.

Thoughts?

Regards,
Simon
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot