Re: [PATCH v2] powernv: Simplify searching for compatible device nodes
From: Cyril Bur <hidden>
Date: 2016-10-19 05:58:21
Also in:
stable
On Wed, 2016-08-10 at 19:32 -0500, Jack Miller wrote:
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 Cc: stable@vger.kernel.org # v4.6+
quoted hunk ↗ jump to hunk
Signed-off-by: Jack Miller <redacted> --- arch/powerpc/platforms/powernv/opal.c | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-)diff --git a/arch/powerpc/platforms/powernv/opal.cb/arch/powerpc/platforms/powernv/opal.c index 8b4fc68..9db12ce 100644--- a/arch/powerpc/platforms/powernv/opal.c +++ b/arch/powerpc/platforms/powernv/opal.c@@ -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();