summaryrefslogtreecommitdiff
path: root/drivers/net/fsl-mc/mc.c
diff options
context:
space:
mode:
authorYogesh Gaur <yogeshnarayan.gaur@nxp.com>2017-04-27 10:14:16 +0530
committerYork Sun <york.sun@nxp.com>2017-05-23 09:24:59 -0700
commit42e8179007bbfc5f4c0c80cd2131db8138f8546f (patch)
tree96280676a4c637e7f2befc8b8c77c049572ded6c /drivers/net/fsl-mc/mc.c
parentc40e6f916982bfaa38aef642461cbcb5917f2744 (diff)
driver: net: fsl-mc: Update fsl_mc_ldpaa_exit() path
Earlier when MC is loaded but DPL is not deployed results in FDT fix-up code execution hangs. For this case now print message on console and return success instead of return -ENODEV. This update allows fdt fixup to continue execution. Signed-off-by: Yogesh Gaur <yogeshnarayan.gaur@nxp.com> Signed-off-by: Priyanka Jain <Priyanka.jain@nxp.com> Reviewed-by: York Sun <york.sun@nxp.com>
Diffstat (limited to 'drivers/net/fsl-mc/mc.c')
-rw-r--r--drivers/net/fsl-mc/mc.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/drivers/net/fsl-mc/mc.c b/drivers/net/fsl-mc/mc.c
index 9f69d75a89..0a74e3e42e 100644
--- a/drivers/net/fsl-mc/mc.c
+++ b/drivers/net/fsl-mc/mc.c
@@ -1,4 +1,5 @@
/*
+ * Copyright (C) 2017 NXP Semiconductors
* Copyright (C) 2014 Freescale Semiconductor
*
* SPDX-License-Identifier: GPL-2.0+
@@ -1201,6 +1202,7 @@ err:
int fsl_mc_ldpaa_exit(bd_t *bd)
{
int err = 0;
+ bool is_dpl_apply_status = false;
if (bd && mc_lazy_dpl_addr && !fsl_mc_ldpaa_exit(NULL)) {
mc_apply_dpl(mc_lazy_dpl_addr);
@@ -1211,14 +1213,18 @@ int fsl_mc_ldpaa_exit(bd_t *bd)
if (bd && get_mc_boot_status() != 0)
return 0;
- if (bd && !get_mc_boot_status() && get_dpl_apply_status() == -1) {
- printf("ERROR: fsl-mc: DPL is not applied\n");
- err = -ENODEV;
- return err;
- }
+ /* If DPL is deployed, set is_dpl_apply_status as TRUE. */
+ if (!get_dpl_apply_status())
+ is_dpl_apply_status = true;
- if (bd && !get_mc_boot_status() && !get_dpl_apply_status())
- return err;
+ /*
+ * For case MC is loaded but DPL is not deployed, return success and
+ * print message on console. Else FDT fix-up code execution hanged.
+ */
+ if (bd && !get_mc_boot_status() && !is_dpl_apply_status) {
+ printf("fsl-mc: DPL not deployed, DPAA2 ethernet not work\n");
+ return 0;
+ }
err = dpbp_exit();
if (err < 0) {