fdt: Add function to alloc phandle values
PATCH 1/1 fdt: Add function to alloc phandle values
If we are creating reference (handles) to nodes in a device tree we need to first create a new phandle in node and this needs a new phandle value. So we search through the whole dtb to find the max phandle value and return the next greater value for a new phandle allocation.
--- common/fdt_support.c | 16 ++++++++++++++++ include/fdt_support.h | 1 + 2 files changed, 17 insertions(+), 0 deletions(-)
common/fdt_support.c +16 -0
@@ -1151,4 +1151,20 @@ int fdt_node_offset_by_compat_reg(void *blob, const char *compat,return -FDT_ERR_NOTFOUND ; } +/** +* fdt_alloc_phandle: Return next free phandle value +* +* @blob: ptr to device tree +*/ +int fdt_alloc_phandle (void *blob) +{ +int offset, len, phandle =0 ; +const u32 *val; +for (offset =fdt_next_node (blob,-1 ,NULL ); offset >=0 ; + offset =fdt_next_node (blob, offset,NULL )) { + val =fdt_getprop (blob, offset,"linux,phandle" , &len); +if (val) phandle =max (*val, phandle); + } +return phandle +1 ; +}
include/fdt_support.h +1 -0
@@ -86,6 +86,7 @@ void fdt_del_node_and_alias(void *blob, const char *alias);u64 fdt_translate_address (void *blob,int node_offset,const u32 *in_addr);int fdt_node_offset_by_compat_reg (void *blob,const char *compat,phys_addr_t compat_off); +int fdt_alloc_phandle (void *blob);#endif /* ifdef CONFIG_OF_LIBFDT */ #endif /* ifndef __FDT_SUPPORT_H */
Signature · 1 line
1.6.0.6
PATCH 1/1 fdt: Add function to alloc phandle values
Review
Quoted 12 lines · Kumar Gala
(quoted diff) +11
-0+int fdt_alloc_phandle(void *blob) +{ + ? ? ? int offset, len, phandle = 0; + ? ? ? const u32 *val; + ? ? ? ?for (offset = fdt_next_node(blob, -1, NULL); offset >= 0; + ? ? ? ? ? ? offset = fdt_next_node(blob, offset, NULL)) { + ? ? ? ? ? ? ? ?val = fdt_getprop(blob, offset, "linux,phandle", &len); + ? ? ? ? ? ? ? if (val) phandle = max(*val, phandle); + ? ? ? ?} + ? ? ? return phandle + 1; +}
If you incorporate my patch titled, "libfdt: introduce function fdt_get_max_phandle", you can simplify this function.
Wolfgang rejected that patch because I didn't include any code that called fdt_get_max_phandle(). I see you're doing the same thing here with fdt_alloc_phandle(). It will be interesting to see if Wolfgang rejects your patch.
Signature · 2 lines
Timur Tabi Linux kernel developer at Freescale
PATCH 1/1 fdt: Add function to alloc phandle values
In reply to Kumar GalaHello.
Quoted 6 lines · Kumar Gala
If we are creating reference (handles) to nodes in a device tree we need to first create a new phandle in node and this needs a new phandle value. So we search through the whole dtb to find the max phandle value and return the next greater value for a new phandle allocation.
Signed-off-by Kumar Gala <[email protected]>
[...]
Quoted 7 lines
common/fdt_support.c +0
-0@@ -1151,4 +1151,20 @@ int fdt_node_offset_by_compat_reg(void *blob, const char *compat,return -FDT_ERR_NOTFOUND ; }
common/fdt_support.c int fdt_node_offset_by_compat_reg(void *blob, const char *compat, · line 1162
Quoted 10 lines
common/fdt_support.c +9
-0+/** +* fdt_alloc_phandle: Return next free phandle value +* +* @blob: ptr to device tree +*/ +int fdt_alloc_phandle (void *blob) +{ +int offset, len, phandle =0 ; +const u32 *val;
Shouldn't there be an emoty line after declarations?
common/fdt_support.c int fdt_node_offset_by_compat_reg(void *blob, const char *compat, · line 1165
Quoted 3 lines
common/fdt_support.c +3
-0+for (offset =fdt_next_node (blob,-1 ,NULL ); offset >=0 ; + offset =fdt_next_node (blob, offset,NULL )) { + val =fdt_getprop (blob, offset,"linux,phandle" , &len);
You indented the above 3 lines with spaces, other with tabs.
common/fdt_support.c int fdt_node_offset_by_compat_reg(void *blob, const char *compat, · line 1167
Quoted 2 lines
common/fdt_support.c +2
-0+if (val) phandle =max (*val, phandle); + }
Another space-indented line...
WBR, Sergei
PATCH v2 1/1 fdt: Add function to alloc phandle values
If we are creating reference (handles) to nodes in a device tree we need to first create a new phandle in node and this needs a new phandle value. So we search through the whole dtb to find the max phandle value and return the next greater value for a new phandle allocation.
---
* Hopefully fixed white space issues
common/fdt_support.c | 18 ++++++++++++++++++ include/fdt_support.h | 1 + 2 files changed, 19 insertions(+), 0 deletions(-)
common/fdt_support.c +18 -0
@@ -1151,4 +1151,22 @@ int fdt_node_offset_by_compat_reg(void *blob, const char *compat,return -FDT_ERR_NOTFOUND ; } +/** +* fdt_alloc_phandle: Return next free phandle value +* +* @blob: ptr to device tree +*/ +int fdt_alloc_phandle (void *blob) +{ +int offset, len, phandle =0 ; +const u32 *val; +for (offset =fdt_next_node (blob,-1 ,NULL ); offset >=0 ; + offset =fdt_next_node (blob, offset,NULL )) { + val =fdt_getprop (blob, offset,"linux,phandle" , &len); +if (val) + phandle =max (*val, phandle); + } + +return phandle +1 ; +}
include/fdt_support.h +1 -0
@@ -86,6 +86,7 @@ void fdt_del_node_and_alias(void *blob, const char *alias);u64 fdt_translate_address (void *blob,int node_offset,const u32 *in_addr);int fdt_node_offset_by_compat_reg (void *blob,const char *compat,phys_addr_t compat_off); +int fdt_alloc_phandle (void *blob);#endif /* ifdef CONFIG_OF_LIBFDT */ #endif /* ifndef __FDT_SUPPORT_H */
Signature · 1 line
1.6.0.6
PATCH v3 1/1 fdt: Add function to alloc phandle values
In reply to Kumar GalaIf we are creating reference (handles) to nodes in a device tree we need to first create a new phandle in node and this needs a new phandle value. So we search through the whole dtb to find the max phandle value and return the next greater value for a new phandle allocation.
---
* Try this whitespace cleanup again
common/fdt_support.c | 18 ++++++++++++++++++ include/fdt_support.h | 1 + 2 files changed, 19 insertions(+), 0 deletions(-)
common/fdt_support.c +18 -0
@@ -1151,4 +1151,22 @@ int fdt_node_offset_by_compat_reg(void *blob, const char *compat,return -FDT_ERR_NOTFOUND ; } +/** +* fdt_alloc_phandle: Return next free phandle value +* +* @blob: ptr to device tree +*/ +int fdt_alloc_phandle (void *blob) +{ +int offset, len, phandle =0 ; +const u32 *val; + +for (offset =fdt_next_node (blob,-1 ,NULL ); offset >=0 ; + offset =fdt_next_node (blob, offset,NULL )) { + val =fdt_getprop (blob, offset,"linux,phandle" , &len); +if (val) + phandle =max (*val, phandle); + } +return phandle +1 ; +}
include/fdt_support.h +1 -0
@@ -86,6 +86,7 @@ void fdt_del_node_and_alias(void *blob, const char *alias);u64 fdt_translate_address (void *blob,int node_offset,const u32 *in_addr);int fdt_node_offset_by_compat_reg (void *blob,const char *compat,phys_addr_t compat_off); +int fdt_alloc_phandle (void *blob);#endif /* ifdef CONFIG_OF_LIBFDT */ #endif /* ifndef __FDT_SUPPORT_H */
Signature · 1 line
1.6.0.6
PATCH v3 1/1 fdt: Add function to alloc phandle values
Quoted 6 lines · Kumar Gala
If we are creating reference (handles) to nodes in a device tree we need to first create a new phandle in node and this needs a new phandle value. ?So we search through the whole dtb to find the max phandle value and return the next greater value for a new phandle allocation.
Signed-off-by Kumar Gala <[email protected]>
I still think you should merge my fdt_get_max_phandle() function into this patch. The two functions are related and can share code.
Signature · 2 lines
Timur Tabi Linux kernel developer at Freescale
PATCH v3 1/1 fdt: Add function to alloc phandle values
Quoted 10 lines · Timur Tabi
Quoted 6 lines · Kumar Gala
If we are creating reference (handles) to nodes in a device tree we need to first create a new phandle in node and this needs a new phandle value. So we search through the whole dtb to find the max phandle value and return the next greater value for a new phandle allocation.
Signed-off-by Kumar Gala <[email protected]>I still think you should merge my
fdt_get_max_phandle()function into this patch. The two functions are related and can share code.
I'm replacing fdt_get_max_phandle w/fdt_alloc_phandle in our tree's. As what we are doing is allocating a phandle value.
- k
PATCH v3 1/1 fdt: Add function to alloc phandle values
In reply to Kumar GalaQuoted 5 lines · Kumar Gala
If we are creating reference (handles) to nodes in a device tree we need to first create a new phandle in node and this needs a new phandle value. So we search through the whole dtb to find the max phandle value and return the next greater value for a new phandle allocation.
Quoted 7 lines
Signed-off-by Kumar Gala<[email protected]>---
* Try this whitespace cleanup againcommon/fdt_support.c | 18 ++++++++++++++++++ include/fdt_support.h | 1 + 2 files changed, 19 insertions(+), 0 deletions(-)
Best regards,
gvb
Kumar Gala
AppliedPATCH v3 1/1 fdt: Add function to alloc phandle values
Quoted 10 lines · Jerry Van Baren
Quoted 9 lines · Kumar Gala
If we are creating reference (handles) to nodes in a device tree we need to first create a new phandle in node and this needs a new phandle value. So we search through the whole dtb to find the max phandle value and return the next greater value for a new phandle allocation.
Signed-off-by Kumar Gala<[email protected]>---
* Try this whitespace cleanup again
Quoted 8 lines
Quoted 3 lines
common/fdt_support.c | 18 ++++++++++++++++++ include/fdt_support.h | 1 + 2 files changed, 19 insertions(+), 0 deletions(-)Acked-by Gerald Van Baren <[email protected]>Best regards,
gvb
applied to 85xx
- k