From 1fc0d59486571bad2a2c4e4a3e5c8b764c46b583 Mon Sep 17 00:00:00 2001 From: Timur Tabi Date: Fri, 4 May 2012 12:21:28 +0000 Subject: 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 --- board/freescale/common/fman.c | 36 +++++++++++++++++++----------------- board/freescale/common/fman.h | 2 +- 2 files changed, 20 insertions(+), 18 deletions(-) (limited to 'board/freescale/common') 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 -- cgit v1.1