summaryrefslogtreecommitdiff
path: root/board/freescale/common
diff options
context:
space:
mode:
authorTimur Tabi <timur@freescale.com>2012-05-04 12:21:28 +0000
committerAndy Fleming <afleming@freescale.com>2012-07-06 17:30:32 -0500
commit1fc0d59486571bad2a2c4e4a3e5c8b764c46b583 (patch)
tree7cec44e27d5669b2c83d438db83099c1899c3b5e /board/freescale/common
parentfb365a8a9664bbaef75df93fd115d6d06f389b89 (diff)
downloadu-boot-imx-1fc0d59486571bad2a2c4e4a3e5c8b764c46b583.zip
u-boot-imx-1fc0d59486571bad2a2c4e4a3e5c8b764c46b583.tar.gz
u-boot-imx-1fc0d59486571bad2a2c4e4a3e5c8b764c46b583.tar.bz2
powerpc/85xx: fdt_set_phy_handle() should return an error code
fdt_set_phy_handle() makes several FDT calls that could fail, so it should not be hiding these errors. Signed-off-by: Timur Tabi <timur@freescale.com>
Diffstat (limited to 'board/freescale/common')
-rw-r--r--board/freescale/common/fman.c36
-rw-r--r--board/freescale/common/fman.h2
2 files changed, 20 insertions, 18 deletions
diff --git a/board/freescale/common/fman.c b/board/freescale/common/fman.c
index 8a55fde..6ddf816 100644
--- a/board/freescale/common/fman.c
+++ b/board/freescale/common/fman.c
@@ -37,31 +37,33 @@
* ... update that Ethernet node's phy-handle property to point to the
* ethernet-phy node. This is how we link an Ethernet node to its PHY, so each
* PHY in a virtual MDIO node must have an alias.
+ *
+ * Returns 0 on success, or a negative FDT error code on error.
*/
-void fdt_set_phy_handle(void *fdt, char *compat, phys_addr_t addr,
+int fdt_set_phy_handle(void *fdt, char *compat, phys_addr_t addr,
const char *alias)
{
- int offset, ph;
+ int offset;
+ unsigned int ph;
const char *path;
/* Get a path to the node that 'alias' points to */
path = fdt_get_alias(fdt, alias);
- if (path) {
- /* Get the offset of that node */
- int off = fdt_path_offset(fdt, path);
- if (off > 0)
- ph = fdt_create_phandle(fdt, off);
- else
- return;
- } else {
- return ;
- }
+ if (!path)
+ return -FDT_ERR_BADPATH;
+
+ /* Get the offset of that node */
+ offset = fdt_path_offset(fdt, path);
+ if (offset < 0)
+ return offset;
- /* failed to create a phandle */
- if (ph <= 0)
- return ;
+ ph = fdt_create_phandle(fdt, offset);
+ if (!ph)
+ return -FDT_ERR_BADPHANDLE;
offset = fdt_node_offset_by_compat_reg(fdt, compat, addr);
- if (offset > 0)
- fdt_setprop(fdt, offset, "phy-handle", &ph, sizeof(ph));
+ if (offset < 0)
+ return offset;
+
+ return fdt_setprop(fdt, offset, "phy-handle", &ph, sizeof(ph));
}
diff --git a/board/freescale/common/fman.h b/board/freescale/common/fman.h
index 19ef7c4..d39ef08 100644
--- a/board/freescale/common/fman.h
+++ b/board/freescale/common/fman.h
@@ -20,7 +20,7 @@
#ifndef __FMAN_BOARD_HELPER__
#define __FMAN_BOARD_HELPER__
-void fdt_set_phy_handle(void *fdt, char *compat, phys_addr_t addr,
+int fdt_set_phy_handle(void *fdt, char *compat, phys_addr_t addr,
const char *alias);
#endif