mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-02 10:43:57 +08:00
powerpc: Add of_find_next_cache_node()
We have more than one piece of code that looks up cache nodes manually using the "l2-cache" property. Add a common helper routine which does this and handles ePAPR's "next-level-cache" property as well as powermac. Signed-off-by: Nathan Lynch <ntl@pobox.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
749820928a
commit
e523f723d6
@ -253,6 +253,9 @@ extern void kdump_move_device_tree(void);
|
|||||||
/* CPU OF node matching */
|
/* CPU OF node matching */
|
||||||
struct device_node *of_get_cpu_node(int cpu, unsigned int *thread);
|
struct device_node *of_get_cpu_node(int cpu, unsigned int *thread);
|
||||||
|
|
||||||
|
/* cache lookup */
|
||||||
|
struct device_node *of_find_next_cache_node(struct device_node *np);
|
||||||
|
|
||||||
/* Get the MAC address */
|
/* Get the MAC address */
|
||||||
extern const void *of_get_mac_address(struct device_node *np);
|
extern const void *of_get_mac_address(struct device_node *np);
|
||||||
|
|
||||||
|
@ -1270,6 +1270,37 @@ struct device_node *of_find_node_by_phandle(phandle handle)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(of_find_node_by_phandle);
|
EXPORT_SYMBOL(of_find_node_by_phandle);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* of_find_next_cache_node - Find a node's subsidiary cache
|
||||||
|
* @np: node of type "cpu" or "cache"
|
||||||
|
*
|
||||||
|
* Returns a node pointer with refcount incremented, use
|
||||||
|
* of_node_put() on it when done. Caller should hold a reference
|
||||||
|
* to np.
|
||||||
|
*/
|
||||||
|
struct device_node *of_find_next_cache_node(struct device_node *np)
|
||||||
|
{
|
||||||
|
struct device_node *child;
|
||||||
|
const phandle *handle;
|
||||||
|
|
||||||
|
handle = of_get_property(np, "l2-cache", NULL);
|
||||||
|
if (!handle)
|
||||||
|
handle = of_get_property(np, "next-level-cache", NULL);
|
||||||
|
|
||||||
|
if (handle)
|
||||||
|
return of_find_node_by_phandle(*handle);
|
||||||
|
|
||||||
|
/* OF on pmac has nodes instead of properties named "l2-cache"
|
||||||
|
* beneath CPU nodes.
|
||||||
|
*/
|
||||||
|
if (!strcmp(np->type, "cpu"))
|
||||||
|
for_each_child_of_node(np, child)
|
||||||
|
if (!strcmp(child->type, "cache"))
|
||||||
|
return child;
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* of_find_all_nodes - Get next node in global list
|
* of_find_all_nodes - Get next node in global list
|
||||||
* @prev: Previous node or NULL to start iteration
|
* @prev: Previous node or NULL to start iteration
|
||||||
|
Loading…
Reference in New Issue
Block a user