On Tue, Dec 19, 2017 at 12:03 AM, Stephen Warren <[email protected]> wrote: > On 12/18/2017 03:33 PM, Stephen Warren wrote: >> >> On 12/18/2017 03:29 PM, Stephen Warren wrote: >>> >>> On 12/18/2017 01:34 AM, Mario Six wrote: >>>> >>>> The function dev_read_addr calls ofnode_get_addr_index in the live tree >>>> case, which does not apply bus translations to the address read from the >>>> device tree. This results in illegal addresses on boards that rely on >>>> bus translations being applied. >>>> >>>> Fix this situation by applying bus translations in the live tree case as >>>> well. >>> >>> >>> Tested-by: Stephen Warren <[email protected]> >> >> >> Uggh. Sorry, I take that back. This seems to break NVIDIA Jetson TX1 >> (p2371-2180 board), even though it did solve this issue that was present on >> other boards in the previous patch version. I'll try and see what's up >> (something to do with I2C accesses early during boot)... > > > I guess this is something to do with: > >> + if (IS_ENABLED(CONFIG_OF_TRANSLATE)) { >> + u64 paddr = >> of_translate_address(ofnode_to_np(node), &addr); >> + >> + return be32_to_cpu((fdt_addr_t)paddr); > > > My tests passed on a 32-bit platform but failed on a 64-bit platform. I > expect you need be64_to_cpu() there on 64-bit platforms? Actually, it should > really base the bit-width on #address-cells, but we only support 32- or > 64-bit at the moment so switching between the two is probably fine. >
Just sent a v4, which will hopefully fix this for all platforms. I tested with 32-bit and 64-bit sandbox, and I now get the same result with and without translation for both. @Simon: I also sent a RFC patch for a sandbox with 64-bit addresses, since it might be useful for testing. Best regards, Mario _______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

