Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e679c5f4 authored by Stephen Rothwell's avatar Stephen Rothwell
Browse files

Consolidate of_get_parent



This requires creating dummy of_node_{get,put} routines for sparc and
sparc64.  It also adds a read_lock around the parent accesses.

Signed-off-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
Acked-by: default avatarPaul Mackerras <paulus@samba.org>
Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 581b605a
Loading
Loading
Loading
Loading
+0 −21
Original line number Original line Diff line number Diff line
@@ -1240,27 +1240,6 @@ struct device_node *of_find_all_nodes(struct device_node *prev)
}
}
EXPORT_SYMBOL(of_find_all_nodes);
EXPORT_SYMBOL(of_find_all_nodes);


/**
 *	of_get_parent - Get a node's parent if any
 *	@node:	Node to get parent
 *
 *	Returns a node pointer with refcount incremented, use
 *	of_node_put() on it when done.
 */
struct device_node *of_get_parent(const struct device_node *node)
{
	struct device_node *np;

	if (!node)
		return NULL;

	read_lock(&devtree_lock);
	np = of_node_get(node->parent);
	read_unlock(&devtree_lock);
	return np;
}
EXPORT_SYMBOL(of_get_parent);

/**
/**
 *	of_get_next_child - Iterate a node childs
 *	of_get_next_child - Iterate a node childs
 *	@node:	parent node
 *	@node:	parent node
+0 −13
Original line number Original line Diff line number Diff line
@@ -29,19 +29,6 @@ static struct device_node *allnodes;


extern rwlock_t devtree_lock;	/* temporary while merging */
extern rwlock_t devtree_lock;	/* temporary while merging */


struct device_node *of_get_parent(const struct device_node *node)
{
	struct device_node *np;

	if (!node)
		return NULL;

	np = node->parent;

	return np;
}
EXPORT_SYMBOL(of_get_parent);

struct device_node *of_get_next_child(const struct device_node *node,
struct device_node *of_get_next_child(const struct device_node *node,
	struct device_node *prev)
	struct device_node *prev)
{
{
+0 −13
Original line number Original line Diff line number Diff line
@@ -34,19 +34,6 @@ static struct device_node *allnodes;


extern rwlock_t devtree_lock;	/* temporary while merging */
extern rwlock_t devtree_lock;	/* temporary while merging */


struct device_node *of_get_parent(const struct device_node *node)
{
	struct device_node *np;

	if (!node)
		return NULL;

	np = node->parent;

	return np;
}
EXPORT_SYMBOL(of_get_parent);

struct device_node *of_get_next_child(const struct device_node *node,
struct device_node *of_get_next_child(const struct device_node *node,
	struct device_node *prev)
	struct device_node *prev)
{
{
+21 −0
Original line number Original line Diff line number Diff line
@@ -113,3 +113,24 @@ int of_device_is_compatible(const struct device_node *device,
	return 0;
	return 0;
}
}
EXPORT_SYMBOL(of_device_is_compatible);
EXPORT_SYMBOL(of_device_is_compatible);

/**
 *	of_get_parent - Get a node's parent if any
 *	@node:	Node to get parent
 *
 *	Returns a node pointer with refcount incremented, use
 *	of_node_put() on it when done.
 */
struct device_node *of_get_parent(const struct device_node *node)
{
	struct device_node *np;

	if (!node)
		return NULL;

	read_lock(&devtree_lock);
	np = of_node_get(node->parent);
	read_unlock(&devtree_lock);
	return np;
}
EXPORT_SYMBOL(of_get_parent);
+9 −0
Original line number Original line Diff line number Diff line
@@ -69,6 +69,15 @@ extern int of_getintprop_default(struct device_node *np,


extern void prom_build_devicetree(void);
extern void prom_build_devicetree(void);


/* Dummy ref counting routines - to be implemented later */
static inline struct device_node *of_node_get(struct device_node *node)
{
	return node;
}
static inline void of_node_put(struct device_node *node)
{
}

/*
/*
 * NB:  This is here while we transition from using asm/prom.h
 * NB:  This is here while we transition from using asm/prom.h
 * to linux/of.h
 * to linux/of.h
Loading