powernv: Simplify searching for compatible device nodes
Subsystems (2)
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
@@ -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
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
Signed-off-by Jack Miller <[email protected]>---
arch/powerpc/platforms/powernv/opal.c | 24 +++++++-----------------1 file changed, 7 insertions(+), 17 deletions(-)arch/powerpc/platforms/powernv/opal.c +0
-0@@ -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){
structdevice_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();
Michael Ellerman
AppliedQuoted 5 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.
Signed-off-by Jack Miller <[email protected]>
Applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/9e4f51bdaf880208869aa001ee94a4
cheers