in ft_blob_update () for both boards was an unneccessary
repetition of code, which this patch moves in a common
function for this boards.

Signed-off-by: Heiko Schocher <[EMAIL PROTECTED]>
---
 board/keymile/common/common.c |   26 +++++++++++++++
 board/keymile/mgcoge/mgcoge.c |   52 ++++++++-----------------------
 board/keymile/mgsuvd/mgsuvd.c |   68 ++++++++++------------------------------
 3 files changed, 56 insertions(+), 90 deletions(-)

diff --git a/board/keymile/common/common.c b/board/keymile/common/common.c
index e47928d..e39b706 100644
--- a/board/keymile/common/common.c
+++ b/board/keymile/common/common.c
@@ -495,3 +495,29 @@ void i2c_init_board(void)
 #endif
 }
 #endif
+
+#if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT)
+int fdt_set_node_and_value (void *blob,
+                               char *nodename,
+                               char *regname,
+                               void *var,
+                               int size)
+{
+       int ret = 0;
+       int nodeoffset = 0;
+
+       nodeoffset = fdt_path_offset (blob, nodename);
+       if (nodeoffset >= 0) {
+               ret = fdt_setprop (blob, nodeoffset, regname, var,
+                                       size);
+               if (ret < 0)
+                       printf("ft_blob_update(): cannot set %s/%s "
+                               "property err:%s\n", nodename, regname,
+                               fdt_strerror (ret));
+       } else {
+               printf("ft_blob_update(): cannot find %s node "
+                       "err:%s\n", nodename, fdt_strerror (nodeoffset));
+       }
+       return ret;
+}
+#endif
diff --git a/board/keymile/mgcoge/mgcoge.c b/board/keymile/mgcoge/mgcoge.c
index bf6ce87..d75ef27 100644
--- a/board/keymile/mgcoge/mgcoge.c
+++ b/board/keymile/mgcoge/mgcoge.c
@@ -307,30 +307,25 @@ int hush_init_var (void)
 }

 #if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT)
+extern int fdt_set_node_and_value (void *blob,
+                                char *nodename,
+                                char *regname,
+                                void *var,
+                                int size);
+
 /*
  * update "memory" property in the blob
  */
 void ft_blob_update (void *blob, bd_t *bd)
 {
-       int ret, nodeoffset = 0;
        ulong memory_data[2] = {0};
        ulong flash_data[8] = {0};

        memory_data[0] = cpu_to_be32 (bd->bi_memstart);
        memory_data[1] = cpu_to_be32 (bd->bi_memsize);
+       fdt_set_node_and_value (blob, "/memory", "reg", memory_data,
+                               sizeof (memory_data));

-       nodeoffset = fdt_path_offset (blob, "/memory");
-       if (nodeoffset >= 0) {
-               ret = fdt_setprop (blob, nodeoffset, "reg", memory_data,
-                                       sizeof (memory_data));
-       if (ret < 0)
-               printf ("ft_blob_update(): cannot set /memory/reg "
-                       "property err:%s\n", fdt_strerror (ret));
-       } else {
-               /* memory node is required in dts */
-               printf ("ft_blob_update(): cannot find /memory node "
-                       "err:%s\n", fdt_strerror (nodeoffset));
-       }
        /* update Flash addr, size */
        flash_data[2] = cpu_to_be32 (CONFIG_SYS_FLASH_BASE);
        flash_data[3] = cpu_to_be32 (CONFIG_SYS_FLASH_SIZE);
@@ -338,32 +333,11 @@ void ft_blob_update (void *blob, bd_t *bd)
        flash_data[5] = cpu_to_be32 (0);
        flash_data[6] = cpu_to_be32 (CONFIG_SYS_FLASH_BASE_1);
        flash_data[7] = cpu_to_be32 (CONFIG_SYS_FLASH_SIZE_1);
-       nodeoffset = fdt_path_offset (blob, "/localbus");
-       if (nodeoffset >= 0) {
-               ret = fdt_setprop (blob, nodeoffset, "ranges", flash_data,
-                                       sizeof (flash_data));
-       if (ret < 0)
-               printf ("ft_blob_update(): cannot set /localbus/ranges "
-                       "property err:%s\n", fdt_strerror (ret));
-       } else {
-               /* memory node is required in dts */
-               printf ("ft_blob_update(): cannot find /localbus node "
-                       "err:%s\n", fdt_strerror (nodeoffset));
-       }
-       /* MAC Adresse */
-       nodeoffset = fdt_path_offset (blob, "/soc/cpm/ethernet");
-       if (nodeoffset >= 0) {
-               ret = fdt_setprop (blob, nodeoffset, "mac-address", 
bd->bi_enetaddr,
-                                       sizeof (uchar) * 6);
-       if (ret < 0)
-               printf ("ft_blob_update(): cannot set 
/soc/cpm/ethernet/mac-address "
-                       "property err:%s\n", fdt_strerror (ret));
-       } else {
-               /* memory node is required in dts */
-               printf ("ft_blob_update(): cannot find /soc/cpm/ethernet node "
-                       "err:%s\n", fdt_strerror (nodeoffset));
-       }
-
+       fdt_set_node_and_value (blob, "/localbus", "ranges", flash_data,
+                               sizeof (flash_data));
+       /* MAC addr */
+       fdt_set_node_and_value (blob, "/soc/cpm/ethernet", "mac-address",
+                               bd->bi_enetaddr, sizeof (u8) * 6);
 }

 void ft_board_setup (void *blob, bd_t *bd)
diff --git a/board/keymile/mgsuvd/mgsuvd.c b/board/keymile/mgsuvd/mgsuvd.c
index de4668c..3def63e 100644
--- a/board/keymile/mgsuvd/mgsuvd.c
+++ b/board/keymile/mgsuvd/mgsuvd.c
@@ -149,73 +149,39 @@ int hush_init_var (void)
 }

 #if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT)
+extern int fdt_set_node_and_value (void *blob,
+                                char *nodename,
+                                char *regname,
+                                void *var,
+                                int size);
+
 /*
  * update "memory" property in the blob
  */
 void ft_blob_update (void *blob, bd_t *bd)
 {
-       int ret, nodeoffset = 0;
        ulong brg_data[1] = {0};
        ulong memory_data[2] = {0};
        ulong flash_data[4] = {0};

        memory_data[0] = cpu_to_be32 (bd->bi_memstart);
        memory_data[1] = cpu_to_be32 (bd->bi_memsize);
-
-       nodeoffset = fdt_path_offset (blob, "/memory");
-       if (nodeoffset >= 0) {
-               ret = fdt_setprop (blob, nodeoffset, "reg", memory_data,
-                                       sizeof (memory_data));
-               if (ret < 0)
-                       printf("ft_blob_update(): cannot set /memory/reg "
-                               "property err:%s\n", fdt_strerror (ret));
-               } else {
-                       /* memory node is required in dts */
-                       printf("ft_blob_update(): cannot find /memory node "
-                               "err:%s\n", fdt_strerror (nodeoffset));
-       }
+       fdt_set_node_and_value (blob, "/memory", "reg", memory_data,
+                               sizeof (memory_data));

        flash_data[2] = cpu_to_be32 (bd->bi_flashstart);
        flash_data[3] = cpu_to_be32 (bd->bi_flashsize);
-       nodeoffset = fdt_path_offset (blob, "/localbus");
-       if (nodeoffset >= 0) {
-               ret = fdt_setprop (blob, nodeoffset, "ranges", flash_data,
-                                       sizeof (flash_data));
-       if (ret < 0)
-               printf("ft_blob_update(): cannot set /localbus/ranges "
-                       "property err:%s\n", fdt_strerror (ret));
-       } else {
-               /* memory node is required in dts */
-               printf("ft_blob_update(): cannot find /localbus node "
-                       "err:%s\n", fdt_strerror (nodeoffset));
-       }
+       fdt_set_node_and_value (blob, "/localbus", "ranges", flash_data,
+                               sizeof (flash_data));
+
        /* BRG */
        brg_data[0] = cpu_to_be32 (bd->bi_busfreq);
-       nodeoffset = fdt_path_offset (blob, "/soc/cpm");
-       if (nodeoffset >= 0) {
-               ret = fdt_setprop (blob, nodeoffset, "brg-frequency", brg_data,
-                                       sizeof (brg_data));
-       if (ret < 0)
-               printf("ft_blob_update(): cannot set /soc/cpm/brg-frequency "
-                       "property err:%s\n", fdt_strerror(ret));
-       } else {
-               /* memory node is required in dts */
-               printf("ft_blob_update(): cannot find /soc/cpm node "
-                       "err:%s\n", fdt_strerror (nodeoffset));
-       }
-       /* MAC Adresse */
-       nodeoffset = fdt_path_offset (blob, "/soc/cpm/ethernet");
-       if (nodeoffset >= 0) {
-               ret = fdt_setprop (blob, nodeoffset, "mac-address", 
bd->bi_enetaddr,
-                                       sizeof (uchar) * 6);
-       if (ret < 0)
-               printf("ft_blob_update(): cannot set /soc/cpm/scc/mac-address "
-                       "property err:%s\n", fdt_strerror (ret));
-       } else {
-               /* memory node is required in dts */
-               printf("ft_blob_update(): cannot find /soc/cpm/ethernet node "
-                       "err:%s\n", fdt_strerror (nodeoffset));
-       }
+       fdt_set_node_and_value (blob, "/soc/cpm", "brg-frequency", brg_data,
+                               sizeof (brg_data));
+
+       /* MAC adr */
+       fdt_set_node_and_value (blob, "/soc/cpm/ethernet", "mac-address",
+                               bd->bi_enetaddr, sizeof (u8) * 6);
 }

 void ft_board_setup(void *blob, bd_t *bd)
-- 
1.5.6.1

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to