* [U-Boot] [PATCH] fdtgrep: Copy with the /aliases node being last
@ 2017-04-02 18:26 Simon Glass
2017-04-03 0:33 ` Masahiro Yamada
0 siblings, 1 reply; 4+ messages in thread
From: Simon Glass @ 2017-04-02 18:26 UTC (permalink / raw)
To: u-boot
With skeleton.dtsi being dropped it is more likely that the /aliases node
will be last in the device tree. Update fdtgrep to handle this.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
lib/libfdt/fdt_region.c | 40 +++++++++++++++++++++++++++++++++++-----
tools/fdtgrep.c | 3 ---
2 files changed, 35 insertions(+), 8 deletions(-)
diff --git a/lib/libfdt/fdt_region.c b/lib/libfdt/fdt_region.c
index d2ce4c1c53..8b8a547555 100644
--- a/lib/libfdt/fdt_region.c
+++ b/lib/libfdt/fdt_region.c
@@ -63,6 +63,30 @@ static int region_list_contains_offset(struct fdt_region_state *info,
return 0;
}
+/**
+ * fdt_add_alias_regions() - Add regions covering the aliases that we want
+ *
+ * The /aliases node is not automatically included by fdtgrep unless the
+ * command-line arguments cause to be included (or not excluded). However
+ * aliases are special in that we generally want to include those which
+ * reference a node that fdtgrep includes.
+ *
+ * In fact we want to include only aliases for those nodes still included in
+ * the fdt, and drop the other aliases since they point to nodes that will not
+ * be present.
+ *
+ * This function scans the aliases and adds regions for those which we want
+ * to keep.
+ *
+ * @fdt: Device tree to scan
+ * @region: List of regions
+ * @count: Number of regions in the list so far (i.e. starting point for this
+ * function)
+ * @max_regions: Maximum number of regions in @region list
+ * @info: Place to put the region state
+ * @return number of regions after processing, or -FDT_ERR_NOSPACE if we did
+ * not have enough room in the regions table for the regions we wanted to add.
+ */
int fdt_add_alias_regions(const void *fdt, struct fdt_region *region, int count,
int max_regions, struct fdt_region_state *info)
{
@@ -74,11 +98,17 @@ int fdt_add_alias_regions(const void *fdt, struct fdt_region *region, int count,
if (node < 0)
return -FDT_ERR_NOTFOUND;
- /* The aliases node must come before the others */
+ /*
+ * Find the next node so that we know where the /aliases node ends. We
+ * need special handling if /aliases is the last node.
+ */
node_end = fdt_next_subnode(fdt, node);
- if (node_end <= 0)
- return -FDT_ERR_BADLAYOUT;
- node_end -= sizeof(fdt32_t);
+ if (node_end == -FDT_ERR_NOTFOUND)
+ /* Move back to the FDT_END_NODE tag of '/' */
+ node_end = fdt_size_dt_struct(fdt) - sizeof(fdt32_t) * 2;
+ else if (node_end < 0) /* other error */
+ return node_end;
+ node_end -= sizeof(fdt32_t); /* Move to FDT_END_NODE tag of /aliases */
did_alias_header = 0;
info->region = region;
@@ -109,7 +139,7 @@ int fdt_add_alias_regions(const void *fdt, struct fdt_region *region, int count,
fdt_add_region(info, base + offset, next - offset);
}
- /* Add the 'end' tag */
+ /* Add the FDT_END_NODE tag */
if (did_alias_header)
fdt_add_region(info, base + node_end, sizeof(fdt32_t));
diff --git a/tools/fdtgrep.c b/tools/fdtgrep.c
index b9078273c9..e373c43e36 100644
--- a/tools/fdtgrep.c
+++ b/tools/fdtgrep.c
@@ -810,9 +810,6 @@ static int do_fdtgrep(struct display_info *disp, const char *filename)
disp->flags);
if (count < 0) {
report_error("fdt_find_regions", count);
- if (count == -FDT_ERR_BADLAYOUT)
- fprintf(stderr,
- "/aliases node must come before all other nodes\n");
return -1;
}
if (count <= max_regions)
--
2.12.2.564.g063fe858b8-goog
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH] fdtgrep: Copy with the /aliases node being last
2017-04-02 18:26 [U-Boot] [PATCH] fdtgrep: Copy with the /aliases node being last Simon Glass
@ 2017-04-03 0:33 ` Masahiro Yamada
2017-04-03 1:05 ` Simon Glass
0 siblings, 1 reply; 4+ messages in thread
From: Masahiro Yamada @ 2017-04-03 0:33 UTC (permalink / raw)
To: u-boot
Hi Simon,
2017-04-03 3:26 GMT+09:00 Simon Glass <sjg@chromium.org>:
> With skeleton.dtsi being dropped it is more likely that the /aliases node
> will be last in the device tree. Update fdtgrep to handle this.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
Thank you for fixing this!
Tested-by: Masahiro Yamada <yamada.masahiro@socionext.com>
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH] fdtgrep: Copy with the /aliases node being last
2017-04-03 0:33 ` Masahiro Yamada
@ 2017-04-03 1:05 ` Simon Glass
2017-04-13 21:16 ` Simon Glass
0 siblings, 1 reply; 4+ messages in thread
From: Simon Glass @ 2017-04-03 1:05 UTC (permalink / raw)
To: u-boot
Hi Masahiro,
On 2 April 2017 at 18:33, Masahiro Yamada <yamada.masahiro@socionext.com> wrote:
> Hi Simon,
>
>
> 2017-04-03 3:26 GMT+09:00 Simon Glass <sjg@chromium.org>:
>> With skeleton.dtsi being dropped it is more likely that the /aliases node
>> will be last in the device tree. Update fdtgrep to handle this.
>>
>> Signed-off-by: Simon Glass <sjg@chromium.org>
>> ---
>
> Thank you for fixing this!
>
> Tested-by: Masahiro Yamada <yamada.masahiro@socionext.com>
You're welcome, sorry it took so long. I tried a few times but only
recently figured it out properly.
Regards,
Simon
^ permalink raw reply [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH] fdtgrep: Copy with the /aliases node being last
2017-04-03 1:05 ` Simon Glass
@ 2017-04-13 21:16 ` Simon Glass
0 siblings, 0 replies; 4+ messages in thread
From: Simon Glass @ 2017-04-13 21:16 UTC (permalink / raw)
To: u-boot
On 2 April 2017 at 19:05, Simon Glass <sjg@chromium.org> wrote:
> Hi Masahiro,
>
> On 2 April 2017 at 18:33, Masahiro Yamada <yamada.masahiro@socionext.com> wrote:
>> Hi Simon,
>>
>>
>> 2017-04-03 3:26 GMT+09:00 Simon Glass <sjg@chromium.org>:
>>> With skeleton.dtsi being dropped it is more likely that the /aliases node
>>> will be last in the device tree. Update fdtgrep to handle this.
>>>
>>> Signed-off-by: Simon Glass <sjg@chromium.org>
>>> ---
>>
>> Thank you for fixing this!
>>
>> Tested-by: Masahiro Yamada <yamada.masahiro@socionext.com>
>
> You're welcome, sorry it took so long. I tried a few times but only
> recently figured it out properly.
>
> Regards,
> Simon
Applied to u-boot-dm
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-04-13 21:16 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-02 18:26 [U-Boot] [PATCH] fdtgrep: Copy with the /aliases node being last Simon Glass
2017-04-03 0:33 ` Masahiro Yamada
2017-04-03 1:05 ` Simon Glass
2017-04-13 21:16 ` 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.