summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabio Estevam <fabio.estevam@freescale.com>2015-09-11 00:53:52 -0300
committerStefano Babic <sbabic@denx.de>2015-09-13 11:05:31 +0200
commitcbb8f9676c17e7c1c0aa71552cf0e5700055c146 (patch)
treef4417852f2c2dc69236990ca77d301d7a2f69082
parent747472bb960e37080e0f498f7cf752a89ad148c9 (diff)
ot1200: Fix the error handling in board_eth_init()
We should not return 0 on failure, so return a negative error code instead. Also centralize the error path so that is easier to follow. Cc: Christian Gmeiner <christian.gmeiner@gmail.com> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
-rw-r--r--board/bachmann/ot1200/ot1200.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/board/bachmann/ot1200/ot1200.c b/board/bachmann/ot1200/ot1200.c
index 2237b7aa1f..eeced7943e 100644
--- a/board/bachmann/ot1200/ot1200.c
+++ b/board/bachmann/ot1200/ot1200.c
@@ -305,13 +305,13 @@ int board_eth_init(bd_t *bis)
bus = fec_get_miibus(base, -1);
if (!bus)
- return 0;
+ return -EINVAL;
/* scan phy 0 and 5 */
phydev = phy_find_by_mask(bus, 0x21, PHY_INTERFACE_MODE_RGMII);
if (!phydev) {
- free(bus);
- return 0;
+ ret = -EINVAL;
+ goto free_bus;
}
/* depending on the phy address we can detect our board version */
@@ -322,12 +322,16 @@ int board_eth_init(bd_t *bis)
printf("using phy at %d\n", phydev->addr);
ret = fec_probe(bis, -1, base, bus, phydev);
- if (ret) {
- printf("FEC MXC: %s:failed\n", __func__);
- free(phydev);
- free(bus);
- }
+ if (ret)
+ goto free_phydev;
+
return 0;
+
+free_phydev:
+ free(phydev);
+free_bus:
+ free(bus);
+ return ret;
}
int board_init(void)