mgcoge, mgsuvd: extract more common code
authorHeiko Schocher <hs@denx.de>
Fri, 17 Oct 2008 14:11:52 +0000 (16:11 +0200)
committerWolfgang Denk <wd@denx.de>
Sat, 18 Oct 2008 19:54:04 +0000 (21:54 +0200)
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 <hs@denx.de>
board/keymile/common/common.c
board/keymile/mgcoge/mgcoge.c
board/keymile/mgsuvd/mgsuvd.c

index e47928d0f7c0cffad4e275512b94fa0db0f5fa72..a4cf24cf72652e4d47043a095a30da099383726d 100644 (file)
@@ -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
index f35716b087ece35d81fccb148208a6a58a0a97b9..6dda92062b5559c697d87090d4bec942391c8b6b 100644 (file)
@@ -308,30 +308,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);
@@ -339,32 +334,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)
index 7cade4e1d61c675c062411d6568c9083ba1b12e4..0fd28da8d7a1b6ea813e0b9e07db1ee70c9e7328 100644 (file)
@@ -150,73 +150,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)