Skip to contentSkip to conversation

powernv: Simplify searching for compatible device nodes

PATCH Applied Jack Miller 3 participants 3 messages Aug 11, 2016 – Nov 14, 2016

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 powernv: Simplify searching for compatible device nodes

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.

---
 arch/powerpc/platforms/powernv/opal.c | 24 +++++++-----------------
 1 file changed, 7 insertions(+), 17 deletions(-)
arch/powerpc/platforms/powernv/opal.c +7 -17
index 8b4fc68..9db12ce 100644
@@ -631,21 +631,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);
 }
 
@@ -717,7 +707,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();
@@ -752,12 +742,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();
Signature · 1 line
2.9.2
#1 lore raw
Quoted 6 lines · Jack Miller

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.

Hi Michael,

It seems this patch hasn't made it in. Without it linux cannot find the flash on p9 as skiboot has moved the node to a more appropriate place.

Thanks,

Cyril

Quoted 62 lines

---
 arch/powerpc/platforms/powernv/opal.c | 24 +++++++-----------------

 1 file changed, 7 insertions(+), 17 deletions(-)
arch/powerpc/platforms/powernv/opal.c +0 -0
index 8b4fc68..9db12ce 100644
@@ -631,21 +631,11 @@ static void __init opal_dump_region_init(void)
  			"rc = %d\n", rc);
  }

arch/powerpc/platforms/powernv/opal.c +1 -2
-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;

arch/powerpc/platforms/powernv/opal.c +1 -10
-	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); }

arch/powerpc/platforms/powernv/opal.c +0 -0
@@ -717,7 +707,7 @@ static int __init opal_init(void)
  	opal_hmi_handler_init();


  /* Create i2c platform devices */

arch/powerpc/platforms/powernv/opal.c +1 -1
-	opal_i2c_create_devs();
+	opal_pdev_init("ibm,opal-i2c");


  /* Setup a heatbeat thread if requested by OPAL */ opal_init_heartbeat();

arch/powerpc/platforms/powernv/opal.c +0 -0
@@ -752,12 +742,12 @@ static int __init opal_init(void)
  	}


  /* Initialize platform devices: IPMI backend, PRD & flash interface */

arch/powerpc/platforms/powernv/opal.c +3 -3
-	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 */

arch/powerpc/platforms/powernv/opal.c +1 -1
-	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();