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

Simon Glass sjg at chromium.org
Tue Nov 18 15:37:33 CET 2014


Hi Masahiro,

On 18 November 2014 12:51, Masahiro Yamada <yamada.m at jp.panasonic.com> wrote:
> Hi Simon,
>
>
>
> On Mon, 17 Nov 2014 18:17:43 +0000
> Simon Glass <sjg at chromium.org> wrote:
>
>> Hi Masahiro,
>>
>> On 17 November 2014 08:19, Masahiro Yamada <yamada.m at 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


More information about the U-Boot mailing list