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

Simon Glass sjg at chromium.org
Mon Nov 17 19:17:43 CET 2014


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).

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


More information about the U-Boot mailing list