Re: [PATCH v3] commands: of_dump switch to get fixed devictree

2014-09-01 Thread Sascha Hauer
On Thu, Aug 21, 2014 at 04:15:07PM +0400, Antony Pavlov wrote:
 On Thu, 21 Aug 2014 13:26:19 +0200
 Jan Weitzel j.weit...@phytec.de wrote:
 
  Add a switch to get the devicetree processed by the registered fixups.
  This is also whats the kernel gets.
  
   BAREBOX_CMD_START(of_dump)
  .cmd= do_of_dump,
  BAREBOX_CMD_DESC(dump devicetree nodes)
  -   BAREBOX_CMD_OPTS([-f] [NODE])
  +   BAREBOX_CMD_OPTS([-fF] [NODE])
 
 This is a bit confusing. The '-f' option has one argument,
 but '-F' option has noone.
 
 IMHO this solution is more accurate:
 
 + BAREBOX_CMD_OPTS([-F] [-f NODE])

Indeed it's more accurate, but the way Jan did it is in line with the
other commands.

Sascha

-- 
Pengutronix e.K.   | |
Industrial Linux Solutions | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |

___
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox


Re: [PATCH v3] commands: of_dump switch to get fixed devictree

2014-09-01 Thread Sascha Hauer
On Thu, Aug 21, 2014 at 01:26:19PM +0200, Jan Weitzel wrote:
 Add a switch to get the devicetree processed by the registered fixups.
 This is also whats the kernel gets.
 
 Signed-off-by: Jan Weitzel j.weit...@phytec.de
 ---
 v3: create a copy of the internal devicetree before use of_fix_tree
 
  commands/of_dump.c |   31 +--
  1 files changed, 29 insertions(+), 2 deletions(-)
 
 diff --git a/commands/of_dump.c b/commands/of_dump.c
 index cafde07..f82f0fd 100644
 --- a/commands/of_dump.c
 +++ b/commands/of_dump.c
 @@ -34,16 +34,20 @@ static int do_of_dump(int argc, char *argv[])
  {
   int opt;
   int ret;
 + int fix = 0;
   struct device_node *root = NULL, *node, *of_free = NULL;
   char *dtbfile = NULL;
   size_t size;
   const char *nodename;
  
 - while ((opt = getopt(argc, argv, f:))  0) {
 + while ((opt = getopt(argc, argv, Ff:))  0) {
   switch (opt) {
   case 'f':
   dtbfile = optarg;
   break;
 + case 'F':
 + fix = 1;
 + break;
   default:
   return COMMAND_ERROR_USAGE;
   }
 @@ -75,6 +79,28 @@ static int do_of_dump(int argc, char *argv[])
   of_free = root;
   } else {
   root = of_get_root_node();
 +
 + if (fix) {
 + /* create a copy of internal devicetree */
 + void *fdt;
 + fdt = of_flatten_dtb(root);
 + root = of_unflatten_dtb(fdt);

That's really a creative way to make a copy of the device tree ;)

Ok, I'll close both eyes while applying it.

Sascha

-- 
Pengutronix e.K.   | |
Industrial Linux Solutions | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |

___
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox


Re: [PATCH v3] commands: of_dump switch to get fixed devictree

2014-09-01 Thread Jan Weitzel

Am 01.09.2014 um 12:38 schrieb Sascha Hauer:

On Thu, Aug 21, 2014 at 01:26:19PM +0200, Jan Weitzel wrote:

Add a switch to get the devicetree processed by the registered fixups.
This is also whats the kernel gets.

Signed-off-by: Jan Weitzel j.weit...@phytec.de
---
v3: create a copy of the internal devicetree before use of_fix_tree

  commands/of_dump.c |   31 +--
  1 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/commands/of_dump.c b/commands/of_dump.c
index cafde07..f82f0fd 100644
--- a/commands/of_dump.c
+++ b/commands/of_dump.c
@@ -34,16 +34,20 @@ static int do_of_dump(int argc, char *argv[])
  {
int opt;
int ret;
+   int fix = 0;
struct device_node *root = NULL, *node, *of_free = NULL;
char *dtbfile = NULL;
size_t size;
const char *nodename;
  
-	while ((opt = getopt(argc, argv, f:))  0) {

+   while ((opt = getopt(argc, argv, Ff:))  0) {
switch (opt) {
case 'f':
dtbfile = optarg;
break;
+   case 'F':
+   fix = 1;
+   break;
default:
return COMMAND_ERROR_USAGE;
}
@@ -75,6 +79,28 @@ static int do_of_dump(int argc, char *argv[])
of_free = root;
} else {
root = of_get_root_node();
+
+   if (fix) {
+   /* create a copy of internal devicetree */
+   void *fdt;
+   fdt = of_flatten_dtb(root);
+   root = of_unflatten_dtb(fdt);

That's really a creative way to make a copy of the device tree ;)


And it use known good functions ;)

Jan



Ok, I'll close both eyes while applying it.

Sascha




___
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox


Re: [PATCH v3] commands: of_dump switch to get fixed devictree

2014-08-21 Thread Antony Pavlov
On Thu, 21 Aug 2014 13:26:19 +0200
Jan Weitzel j.weit...@phytec.de wrote:

 Add a switch to get the devicetree processed by the registered fixups.
 This is also whats the kernel gets.
 
 Signed-off-by: Jan Weitzel j.weit...@phytec.de
 ---
 v3: create a copy of the internal devicetree before use of_fix_tree
 
  commands/of_dump.c |   31 +--
  1 files changed, 29 insertions(+), 2 deletions(-)
 
 diff --git a/commands/of_dump.c b/commands/of_dump.c
 index cafde07..f82f0fd 100644
 --- a/commands/of_dump.c
 +++ b/commands/of_dump.c
 @@ -34,16 +34,20 @@ static int do_of_dump(int argc, char *argv[])
  {
   int opt;
   int ret;
 + int fix = 0;
   struct device_node *root = NULL, *node, *of_free = NULL;
   char *dtbfile = NULL;
   size_t size;
   const char *nodename;
  
 - while ((opt = getopt(argc, argv, f:))  0) {
 + while ((opt = getopt(argc, argv, Ff:))  0) {
   switch (opt) {
   case 'f':
   dtbfile = optarg;
   break;
 + case 'F':
 + fix = 1;
 + break;
   default:
   return COMMAND_ERROR_USAGE;
   }
 @@ -75,6 +79,28 @@ static int do_of_dump(int argc, char *argv[])
   of_free = root;
   } else {
   root = of_get_root_node();
 +
 + if (fix) {
 + /* create a copy of internal devicetree */
 + void *fdt;
 + fdt = of_flatten_dtb(root);
 + root = of_unflatten_dtb(fdt);
 +
 + free(fdt);
 +
 + if (IS_ERR(root)) {
 + ret = PTR_ERR(root);
 + goto out;
 + }
 +
 + of_free = root;
 + }
 + }
 +
 + if (fix) {
 + ret = of_fix_tree(root);
 + if (ret)
 + goto out;
   }
  
   node = of_find_node_by_path_or_alias(root, nodename);
 @@ -96,12 +122,13 @@ out:
  BAREBOX_CMD_HELP_START(of_dump)
  BAREBOX_CMD_HELP_TEXT(Options:)
  BAREBOX_CMD_HELP_OPT  (-f dtb,  work on dtb instead of internal 
 devicetree\n)
 +BAREBOX_CMD_HELP_OPT  (-F,  return fixed devicetree\n)
  BAREBOX_CMD_HELP_END
  
  BAREBOX_CMD_START(of_dump)
   .cmd= do_of_dump,
   BAREBOX_CMD_DESC(dump devicetree nodes)
 - BAREBOX_CMD_OPTS([-f] [NODE])
 + BAREBOX_CMD_OPTS([-fF] [NODE])

This is a bit confusing. The '-f' option has one argument,
but '-F' option has noone. 

IMHO this solution is more accurate:

+   BAREBOX_CMD_OPTS([-F] [-f NODE])


   BAREBOX_CMD_GROUP(CMD_GRP_MISC)
   BAREBOX_CMD_COMPLETE(devicetree_file_complete)
   BAREBOX_CMD_HELP(cmd_of_dump_help)
 -- 
 1.7.0.4
 
 
 ___
 barebox mailing list
 barebox@lists.infradead.org
 http://lists.infradead.org/mailman/listinfo/barebox


-- 
-- 
Best regards,
  Antony Pavlov

___
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox