of: Don't create device for OPP tables
authorViresh Kumar <viresh.kumar@linaro.org>
Tue, 17 Apr 2018 06:27:34 +0000 (11:57 +0530)
committerRob Herring <robh@kernel.org>
Tue, 24 Apr 2018 13:04:04 +0000 (08:04 -0500)
The OPP tables are present as separate nodes, whose phandle is used in
the "operating-points-v2" property of devices. Currently the OF core
creates a device for the OPP table unconditionally, which is not used by
any kernel code.

This patch creates another OF device_id table for the nodes which must
be skipped while creating devices and OPP is the only user of it for now.

Reported-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Rob Herring <robh@kernel.org>
drivers/of/platform.c

index c00d81dfac0b848a70e0533bc851a0c28bc4114c..d75050b85d0c27ce05d47115564b004b1a34cc7b 100644 (file)
@@ -32,6 +32,11 @@ const struct of_device_id of_default_bus_match_table[] = {
        {} /* Empty terminated list */
 };
 
+static const struct of_device_id of_skipped_node_table[] = {
+       { .compatible = "operating-points-v2", },
+       {} /* Empty terminated list */
+};
+
 static int of_dev_node_match(struct device *dev, void *data)
 {
        return dev->of_node == data;
@@ -356,6 +361,12 @@ static int of_platform_bus_create(struct device_node *bus,
                return 0;
        }
 
+       /* Skip nodes for which we don't want to create devices */
+       if (unlikely(of_match_node(of_skipped_node_table, bus))) {
+               pr_debug("%s() - skipping %pOF node\n", __func__, bus);
+               return 0;
+       }
+
        if (of_node_check_flag(bus, OF_POPULATED_BUS)) {
                pr_debug("%s() - skipping %pOF, already populated\n",
                        __func__, bus);