Skip to content

Commit

Permalink
of: make of_find_device_by_node generic
Browse files Browse the repository at this point in the history
There's no need for this function to be architecture specific and all four
architectures defining it had the same definition.  The function has been
moved to drivers/of/platform.c.

Signed-off-by: Jonas Bonn <jonas@southpole.se>
[grant.likely@secretlab.ca: moved to drivers/of/platform.c, simplified code, and added kerneldoc comment]
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Jonas Bonn authored and Grant Likely committed Jul 24, 2010
1 parent de48e36 commit c608558
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 52 deletions.
16 changes: 0 additions & 16 deletions arch/microblaze/kernel/of_platform.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,19 +47,3 @@ const struct of_device_id of_default_bus_ids[] = {
{ .type = "simple", },
{},
};

static int of_dev_node_match(struct device *dev, void *data)
{
return to_platform_device(dev)->dev.of_node == data;
}

struct platform_device *of_find_device_by_node(struct device_node *np)
{
struct device *dev;

dev = bus_find_device(&platform_bus_type, NULL, np, of_dev_node_match);
if (dev)
return to_platform_device(dev);
return NULL;
}
EXPORT_SYMBOL(of_find_device_by_node);
16 changes: 0 additions & 16 deletions arch/powerpc/kernel/of_platform.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,22 +52,6 @@ const struct of_device_id of_default_bus_ids[] = {
{},
};

static int of_dev_node_match(struct device *dev, void *data)
{
return to_platform_device(dev)->dev.of_node == data;
}

struct platform_device *of_find_device_by_node(struct device_node *np)
{
struct device *dev;

dev = bus_find_device(&platform_bus_type, NULL, np, of_dev_node_match);
if (dev)
return to_platform_device(dev);
return NULL;
}
EXPORT_SYMBOL(of_find_device_by_node);

#ifdef CONFIG_PPC_OF_PLATFORM_PCI

/* The probing of PCI controllers from of_platform is currently
Expand Down
20 changes: 0 additions & 20 deletions arch/sparc/kernel/of_device_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,6 @@

#include "of_device_common.h"

static int node_match(struct device *dev, void *data)
{
struct platform_device *op = to_platform_device(dev);
struct device_node *dp = data;

return (op->dev.of_node == dp);
}

struct platform_device *of_find_device_by_node(struct device_node *dp)
{
struct device *dev = bus_find_device(&platform_bus_type, NULL,
dp, node_match);

if (dev)
return to_platform_device(dev);

return NULL;
}
EXPORT_SYMBOL(of_find_device_by_node);

unsigned int irq_of_parse_and_map(struct device_node *node, int index)
{
struct platform_device *op = of_find_device_by_node(node);
Expand Down
20 changes: 20 additions & 0 deletions drivers/of/platform.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,26 @@
#include <linux/of_platform.h>
#include <linux/platform_device.h>

static int of_dev_node_match(struct device *dev, void *data)
{
return dev->of_node == data;
}

/**
* of_find_device_by_node - Find the platform_device associated with a node
* @np: Pointer to device tree node
*
* Returns platform_device pointer, or NULL if not found
*/
struct platform_device *of_find_device_by_node(struct device_node *np)
{
struct device *dev;

dev = bus_find_device(&platform_bus_type, NULL, np, of_dev_node_match);
return dev ? to_platform_device(dev) : NULL;
}
EXPORT_SYMBOL(of_find_device_by_node);

static int platform_driver_probe_shim(struct platform_device *pdev)
{
struct platform_driver *pdrv;
Expand Down

0 comments on commit c608558

Please sign in to comment.