powerpc/powernv: Simplify searching for compatible device nodes
authorJack Miller <jack@codezen.org>
Thu, 11 Aug 2016 00:32:40 +0000 (19:32 -0500)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 14 Nov 2016 09:05:57 +0000 (20:05 +1100)
This condenses the opal node searching into a single function that finds
all compatible nodes, instead of just searching the ibm,opal children,
for ipmi, flash, and prd similar to how opal-i2c nodes are found.

Signed-off-by: Jack Miller <jack@codezen.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/platforms/powernv/opal.c

index 6c9a65b..893d8ea 100644 (file)
@@ -632,21 +632,11 @@ static void __init opal_dump_region_init(void)
                        "rc = %d\n", rc);
 }
 
-static void opal_pdev_init(struct device_node *opal_node,
-               const char *compatible)
+static void opal_pdev_init(const char *compatible)
 {
        struct device_node *np;
 
-       for_each_child_of_node(opal_node, np)
-               if (of_device_is_compatible(np, compatible))
-                       of_platform_device_create(np, NULL, NULL);
-}
-
-static void opal_i2c_create_devs(void)
-{
-       struct device_node *np;
-
-       for_each_compatible_node(np, NULL, "ibm,opal-i2c")
+       for_each_compatible_node(np, NULL, compatible)
                of_platform_device_create(np, NULL, NULL);
 }
 
@@ -718,7 +708,7 @@ static int __init opal_init(void)
        opal_hmi_handler_init();
 
        /* Create i2c platform devices */
-       opal_i2c_create_devs();
+       opal_pdev_init("ibm,opal-i2c");
 
        /* Setup a heatbeat thread if requested by OPAL */
        opal_init_heartbeat();
@@ -753,12 +743,12 @@ static int __init opal_init(void)
        }
 
        /* Initialize platform devices: IPMI backend, PRD & flash interface */
-       opal_pdev_init(opal_node, "ibm,opal-ipmi");
-       opal_pdev_init(opal_node, "ibm,opal-flash");
-       opal_pdev_init(opal_node, "ibm,opal-prd");
+       opal_pdev_init("ibm,opal-ipmi");
+       opal_pdev_init("ibm,opal-flash");
+       opal_pdev_init("ibm,opal-prd");
 
        /* Initialise platform device: oppanel interface */
-       opal_pdev_init(opal_node, "ibm,opal-oppanel");
+       opal_pdev_init("ibm,opal-oppanel");
 
        /* Initialise OPAL kmsg dumper for flushing console on panic */
        opal_kmsg_init();