bus: imx-weim: improve error handling upon child probe-failure
authorAlison Chaiken <alison_chaiken@mentor.com>
Thu, 19 Feb 2015 07:24:10 +0000 (23:24 -0800)
committerShawn Guo <shawn.guo@linaro.org>
Mon, 2 Mar 2015 13:47:59 +0000 (21:47 +0800)
Probe all children of the WEIM node, reporting any failures.  Report
failure from parsing of WEIM node itself if probes of all children fail.

Signed-off-by: Alison Chaiken <alison_chaiken@mentor.com>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
drivers/bus/imx-weim.c

index 0958b6981773c19527973916c65b3e703c5633f8..e98d15eaa7994c7349d1db8df4dd19f684b85ba6 100644 (file)
@@ -142,7 +142,7 @@ static int __init weim_parse_dt(struct platform_device *pdev,
                                                           &pdev->dev);
        const struct imx_weim_devtype *devtype = of_id->data;
        struct device_node *child;
-       int ret;
+       int ret, have_child = 0;
 
        if (devtype == &imx50_weim_devtype) {
                ret = imx_weim_gpr_setup(pdev);
@@ -155,14 +155,15 @@ static int __init weim_parse_dt(struct platform_device *pdev,
                        continue;
 
                ret = weim_timing_setup(child, base, devtype);
-               if (ret) {
-                       dev_err(&pdev->dev, "%s set timing failed.\n",
+               if (ret)
+                       dev_warn(&pdev->dev, "%s set timing failed.\n",
                                child->full_name);
-                       return ret;
-               }
+               else
+                       have_child = 1;
        }
 
-       ret = of_platform_populate(pdev->dev.of_node,
+       if (have_child)
+               ret = of_platform_populate(pdev->dev.of_node,
                                   of_default_bus_match_table,
                                   NULL, &pdev->dev);
        if (ret)