All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v4] drivers: core: Add translation in live tree case
@ 2017-12-20  8:52 Mario Six
  2017-12-20 15:45 ` Stephen Warren
  0 siblings, 1 reply; 3+ messages in thread
From: Mario Six @ 2017-12-20  8:52 UTC (permalink / raw)
  To: u-boot

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.

Signed-off-by: Mario Six <mario.six@gdsys.cc>

---
v3 -> v4:
* Fixed issue on 64-bit platforms

v2 -> v3:
* Fixed endianness issue on little-endian platforms

v1 -> v2:
* Added IS_ENABLED(CONFIG_OF_TRANSLATE) case distinction
---
 drivers/core/ofnode.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c
index 0030ab962e..2dbf3a7cd7 100644
--- a/drivers/core/ofnode.c
+++ b/drivers/core/ofnode.c
@@ -205,8 +205,13 @@ fdt_addr_t ofnode_get_addr_index(ofnode node, int index)
 					  &flags);
 		if (!prop_val)
 			return FDT_ADDR_T_NONE;
-		na = of_n_addr_cells(ofnode_to_np(node));
-		return of_read_number(prop_val, na);
+
+		if (IS_ENABLED(CONFIG_OF_TRANSLATE)) {
+			return of_translate_address(ofnode_to_np(node), prop_val);
+		} else {
+			na = of_n_addr_cells(ofnode_to_np(node));
+			return of_read_number(prop_val, na);
+		}
 	} else {
 		return fdt_get_base_address(gd->fdt_blob,
 					    ofnode_to_offset(node));
--
2.13.6

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [U-Boot] [PATCH v4] drivers: core: Add translation in live tree case
  2017-12-20  8:52 [U-Boot] [PATCH v4] drivers: core: Add translation in live tree case Mario Six
@ 2017-12-20 15:45 ` Stephen Warren
  2018-01-22  0:41   ` Simon Glass
  0 siblings, 1 reply; 3+ messages in thread
From: Stephen Warren @ 2017-12-20 15:45 UTC (permalink / raw)
  To: u-boot

On 12/20/2017 01:52 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.
> 
> Signed-off-by: Mario Six <mario.six@gdsys.cc>
> 
> ---
> v3 -> v4:
> * Fixed issue on 64-bit platforms

Tested-by: Stephen Warren <swarren@nvidia.com>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [U-Boot] [PATCH v4] drivers: core: Add translation in live tree case
  2017-12-20 15:45 ` Stephen Warren
@ 2018-01-22  0:41   ` Simon Glass
  0 siblings, 0 replies; 3+ messages in thread
From: Simon Glass @ 2018-01-22  0:41 UTC (permalink / raw)
  To: u-boot

On 20 December 2017 at 08:45, Stephen Warren <swarren@wwwdotorg.org> wrote:
> On 12/20/2017 01:52 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.
>>
>> Signed-off-by: Mario Six <mario.six@gdsys.cc>
>>
>> ---
>> v3 -> v4:
>> * Fixed issue on 64-bit platforms
>
>
> Tested-by: Stephen Warren <swarren@nvidia.com>

Applied to u-boot-dm, thanks!

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-01-22  0:41 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-12-20  8:52 [U-Boot] [PATCH v4] drivers: core: Add translation in live tree case Mario Six
2017-12-20 15:45 ` Stephen Warren
2018-01-22  0:41   ` Simon Glass

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.