[U-Boot] [PATCH v3] drivers: core: Add translation in live tree case
Stephen Warren
swarren at wwwdotorg.org
Mon Dec 18 23:03:02 UTC 2017
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 <swarren at nvidia.com>
>
> 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.
More information about the U-Boot
mailing list