[PATCH 1/2] of: addr: Abort address translation for parent nodes missing 'ranges'

Bin Meng bmeng.cn at gmail.com
Mon Mar 15 15:47:46 CET 2021


+Dario Binacchi

On Mon, Mar 15, 2021 at 3:11 PM Simon Glass <sjg at chromium.org> wrote:
>
> Hi Bin,
>
> On Wed, 3 Mar 2021 at 14:54, Simon Glass <sjg at chromium.org> wrote:
> >
> > On Fri, 26 Feb 2021 at 00:36, Bin Meng <bmeng.cn at gmail.com> wrote:
> > >
> > > The implementation of of_translate_one() was taken from the one in
> > > Linux kernel drivers/of/address.c, and the Linux one added a quirk
> > > for Apple Macs that don't have the <ranges> property in the parent
> > > node. Since U-Boot does not support Apple Macs, remove the comment
> > > block and adhere to the spec to abort the translation.
> > >
> > > Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
> > > ---
> > >
> > >  drivers/core/of_addr.c | 24 ++++++------------------
> > >  1 file changed, 6 insertions(+), 18 deletions(-)
> >
> > Reviewed-by: Simon Glass <sjg at chromium.org>
>
> Unfortunately this seems to cause a test failure for
> ut_dm_fdt_translation. Can you please take a look?

It seems the no "ranges" property was intentionally removed by the
following commit:

commit d64b9cdcd475eb7f07b49741ded87e24dae4a5fc
Author: Dario Binacchi <dariobin at libero.it>
Date:   Wed Dec 30 00:16:21 2020 +0100

    fdt: translate address if #size-cells = <0>

    The __of_translate_address routine translates an address from the
    device tree into a CPU physical address. A note in the description of
    the routine explains that the crossing of any level with
    since inherited from IBM. This does not happen for Texas Instruments, or
    at least for the beaglebone device tree. Without this patch, in fact,
    the translation into physical addresses of the registers contained in the
    am33xx-clocks.dtsi nodes would not be possible. They all have a parent
    with #size-cells = <0>.

It looks the commit was needed for beaglebone board.

Dario, could you please comment on why U-Boot needs to done like this,
while Linux kernel has this check? Is the beaglebone board not working
in Linux?

Regards,
Bin


More information about the U-Boot mailing list