Loading arch/microblaze/kernel/prom.c +0 −113 Original line number Diff line number Diff line Loading @@ -606,119 +606,6 @@ void of_detach_node(struct device_node *np) write_unlock_irqrestore(&devtree_lock, flags); } /* * Add a property to a node */ int prom_add_property(struct device_node *np, struct property *prop) { struct property **next; unsigned long flags; prop->next = NULL; write_lock_irqsave(&devtree_lock, flags); next = &np->properties; while (*next) { if (strcmp(prop->name, (*next)->name) == 0) { /* duplicate ! don't insert it */ write_unlock_irqrestore(&devtree_lock, flags); return -1; } next = &(*next)->next; } *next = prop; write_unlock_irqrestore(&devtree_lock, flags); #ifdef CONFIG_PROC_DEVICETREE /* try to add to proc as well if it was initialized */ if (np->pde) proc_device_tree_add_prop(np->pde, prop); #endif /* CONFIG_PROC_DEVICETREE */ return 0; } /* * Remove a property from a node. Note that we don't actually * remove it, since we have given out who-knows-how-many pointers * to the data using get-property. Instead we just move the property * to the "dead properties" list, so it won't be found any more. */ int prom_remove_property(struct device_node *np, struct property *prop) { struct property **next; unsigned long flags; int found = 0; write_lock_irqsave(&devtree_lock, flags); next = &np->properties; while (*next) { if (*next == prop) { /* found the node */ *next = prop->next; prop->next = np->deadprops; np->deadprops = prop; found = 1; break; } next = &(*next)->next; } write_unlock_irqrestore(&devtree_lock, flags); if (!found) return -ENODEV; #ifdef CONFIG_PROC_DEVICETREE /* try to remove the proc node as well */ if (np->pde) proc_device_tree_remove_prop(np->pde, prop); #endif /* CONFIG_PROC_DEVICETREE */ return 0; } /* * Update a property in a node. Note that we don't actually * remove it, since we have given out who-knows-how-many pointers * to the data using get-property. Instead we just move the property * to the "dead properties" list, and add the new property to the * property list */ int prom_update_property(struct device_node *np, struct property *newprop, struct property *oldprop) { struct property **next; unsigned long flags; int found = 0; write_lock_irqsave(&devtree_lock, flags); next = &np->properties; while (*next) { if (*next == oldprop) { /* found the node */ newprop->next = oldprop->next; *next = newprop; oldprop->next = np->deadprops; np->deadprops = oldprop; found = 1; break; } next = &(*next)->next; } write_unlock_irqrestore(&devtree_lock, flags); if (!found) return -ENODEV; #ifdef CONFIG_PROC_DEVICETREE /* try to add to proc as well if it was initialized */ if (np->pde) proc_device_tree_update_prop(np->pde, newprop, oldprop); #endif /* CONFIG_PROC_DEVICETREE */ return 0; } #if defined(CONFIG_DEBUG_FS) && defined(DEBUG) static struct debugfs_blob_wrapper flat_dt_blob; Loading arch/powerpc/kernel/prom.c +0 −114 Original line number Diff line number Diff line Loading @@ -1130,120 +1130,6 @@ static int __init prom_reconfig_setup(void) __initcall(prom_reconfig_setup); #endif /* * Add a property to a node */ int prom_add_property(struct device_node* np, struct property* prop) { struct property **next; unsigned long flags; prop->next = NULL; write_lock_irqsave(&devtree_lock, flags); next = &np->properties; while (*next) { if (strcmp(prop->name, (*next)->name) == 0) { /* duplicate ! don't insert it */ write_unlock_irqrestore(&devtree_lock, flags); return -1; } next = &(*next)->next; } *next = prop; write_unlock_irqrestore(&devtree_lock, flags); #ifdef CONFIG_PROC_DEVICETREE /* try to add to proc as well if it was initialized */ if (np->pde) proc_device_tree_add_prop(np->pde, prop); #endif /* CONFIG_PROC_DEVICETREE */ return 0; } /* * Remove a property from a node. Note that we don't actually * remove it, since we have given out who-knows-how-many pointers * to the data using get-property. Instead we just move the property * to the "dead properties" list, so it won't be found any more. */ int prom_remove_property(struct device_node *np, struct property *prop) { struct property **next; unsigned long flags; int found = 0; write_lock_irqsave(&devtree_lock, flags); next = &np->properties; while (*next) { if (*next == prop) { /* found the node */ *next = prop->next; prop->next = np->deadprops; np->deadprops = prop; found = 1; break; } next = &(*next)->next; } write_unlock_irqrestore(&devtree_lock, flags); if (!found) return -ENODEV; #ifdef CONFIG_PROC_DEVICETREE /* try to remove the proc node as well */ if (np->pde) proc_device_tree_remove_prop(np->pde, prop); #endif /* CONFIG_PROC_DEVICETREE */ return 0; } /* * Update a property in a node. Note that we don't actually * remove it, since we have given out who-knows-how-many pointers * to the data using get-property. Instead we just move the property * to the "dead properties" list, and add the new property to the * property list */ int prom_update_property(struct device_node *np, struct property *newprop, struct property *oldprop) { struct property **next; unsigned long flags; int found = 0; write_lock_irqsave(&devtree_lock, flags); next = &np->properties; while (*next) { if (*next == oldprop) { /* found the node */ newprop->next = oldprop->next; *next = newprop; oldprop->next = np->deadprops; np->deadprops = oldprop; found = 1; break; } next = &(*next)->next; } write_unlock_irqrestore(&devtree_lock, flags); if (!found) return -ENODEV; #ifdef CONFIG_PROC_DEVICETREE /* try to add to proc as well if it was initialized */ if (np->pde) proc_device_tree_update_prop(np->pde, newprop, oldprop); #endif /* CONFIG_PROC_DEVICETREE */ return 0; } /* Find the device node for a given logical cpu number, also returns the cpu * local thread number (index in ibm,interrupt-server#s) if relevant and * asked for (non NULL) Loading drivers/of/base.c +116 −0 Original line number Diff line number Diff line Loading @@ -658,3 +658,119 @@ int of_parse_phandles_with_args(struct device_node *np, const char *list_name, return ret; } EXPORT_SYMBOL(of_parse_phandles_with_args); /** * prom_add_property - Add a property to a node */ int prom_add_property(struct device_node *np, struct property *prop) { struct property **next; unsigned long flags; prop->next = NULL; write_lock_irqsave(&devtree_lock, flags); next = &np->properties; while (*next) { if (strcmp(prop->name, (*next)->name) == 0) { /* duplicate ! don't insert it */ write_unlock_irqrestore(&devtree_lock, flags); return -1; } next = &(*next)->next; } *next = prop; write_unlock_irqrestore(&devtree_lock, flags); #ifdef CONFIG_PROC_DEVICETREE /* try to add to proc as well if it was initialized */ if (np->pde) proc_device_tree_add_prop(np->pde, prop); #endif /* CONFIG_PROC_DEVICETREE */ return 0; } /** * prom_remove_property - Remove a property from a node. * * Note that we don't actually remove it, since we have given out * who-knows-how-many pointers to the data using get-property. * Instead we just move the property to the "dead properties" * list, so it won't be found any more. */ int prom_remove_property(struct device_node *np, struct property *prop) { struct property **next; unsigned long flags; int found = 0; write_lock_irqsave(&devtree_lock, flags); next = &np->properties; while (*next) { if (*next == prop) { /* found the node */ *next = prop->next; prop->next = np->deadprops; np->deadprops = prop; found = 1; break; } next = &(*next)->next; } write_unlock_irqrestore(&devtree_lock, flags); if (!found) return -ENODEV; #ifdef CONFIG_PROC_DEVICETREE /* try to remove the proc node as well */ if (np->pde) proc_device_tree_remove_prop(np->pde, prop); #endif /* CONFIG_PROC_DEVICETREE */ return 0; } /* * prom_update_property - Update a property in a node. * * Note that we don't actually remove it, since we have given out * who-knows-how-many pointers to the data using get-property. * Instead we just move the property to the "dead properties" list, * and add the new property to the property list */ int prom_update_property(struct device_node *np, struct property *newprop, struct property *oldprop) { struct property **next; unsigned long flags; int found = 0; write_lock_irqsave(&devtree_lock, flags); next = &np->properties; while (*next) { if (*next == oldprop) { /* found the node */ newprop->next = oldprop->next; *next = newprop; oldprop->next = np->deadprops; np->deadprops = oldprop; found = 1; break; } next = &(*next)->next; } write_unlock_irqrestore(&devtree_lock, flags); if (!found) return -ENODEV; #ifdef CONFIG_PROC_DEVICETREE /* try to add to proc as well if it was initialized */ if (np->pde) proc_device_tree_update_prop(np->pde, newprop, oldprop); #endif /* CONFIG_PROC_DEVICETREE */ return 0; } Loading
arch/microblaze/kernel/prom.c +0 −113 Original line number Diff line number Diff line Loading @@ -606,119 +606,6 @@ void of_detach_node(struct device_node *np) write_unlock_irqrestore(&devtree_lock, flags); } /* * Add a property to a node */ int prom_add_property(struct device_node *np, struct property *prop) { struct property **next; unsigned long flags; prop->next = NULL; write_lock_irqsave(&devtree_lock, flags); next = &np->properties; while (*next) { if (strcmp(prop->name, (*next)->name) == 0) { /* duplicate ! don't insert it */ write_unlock_irqrestore(&devtree_lock, flags); return -1; } next = &(*next)->next; } *next = prop; write_unlock_irqrestore(&devtree_lock, flags); #ifdef CONFIG_PROC_DEVICETREE /* try to add to proc as well if it was initialized */ if (np->pde) proc_device_tree_add_prop(np->pde, prop); #endif /* CONFIG_PROC_DEVICETREE */ return 0; } /* * Remove a property from a node. Note that we don't actually * remove it, since we have given out who-knows-how-many pointers * to the data using get-property. Instead we just move the property * to the "dead properties" list, so it won't be found any more. */ int prom_remove_property(struct device_node *np, struct property *prop) { struct property **next; unsigned long flags; int found = 0; write_lock_irqsave(&devtree_lock, flags); next = &np->properties; while (*next) { if (*next == prop) { /* found the node */ *next = prop->next; prop->next = np->deadprops; np->deadprops = prop; found = 1; break; } next = &(*next)->next; } write_unlock_irqrestore(&devtree_lock, flags); if (!found) return -ENODEV; #ifdef CONFIG_PROC_DEVICETREE /* try to remove the proc node as well */ if (np->pde) proc_device_tree_remove_prop(np->pde, prop); #endif /* CONFIG_PROC_DEVICETREE */ return 0; } /* * Update a property in a node. Note that we don't actually * remove it, since we have given out who-knows-how-many pointers * to the data using get-property. Instead we just move the property * to the "dead properties" list, and add the new property to the * property list */ int prom_update_property(struct device_node *np, struct property *newprop, struct property *oldprop) { struct property **next; unsigned long flags; int found = 0; write_lock_irqsave(&devtree_lock, flags); next = &np->properties; while (*next) { if (*next == oldprop) { /* found the node */ newprop->next = oldprop->next; *next = newprop; oldprop->next = np->deadprops; np->deadprops = oldprop; found = 1; break; } next = &(*next)->next; } write_unlock_irqrestore(&devtree_lock, flags); if (!found) return -ENODEV; #ifdef CONFIG_PROC_DEVICETREE /* try to add to proc as well if it was initialized */ if (np->pde) proc_device_tree_update_prop(np->pde, newprop, oldprop); #endif /* CONFIG_PROC_DEVICETREE */ return 0; } #if defined(CONFIG_DEBUG_FS) && defined(DEBUG) static struct debugfs_blob_wrapper flat_dt_blob; Loading
arch/powerpc/kernel/prom.c +0 −114 Original line number Diff line number Diff line Loading @@ -1130,120 +1130,6 @@ static int __init prom_reconfig_setup(void) __initcall(prom_reconfig_setup); #endif /* * Add a property to a node */ int prom_add_property(struct device_node* np, struct property* prop) { struct property **next; unsigned long flags; prop->next = NULL; write_lock_irqsave(&devtree_lock, flags); next = &np->properties; while (*next) { if (strcmp(prop->name, (*next)->name) == 0) { /* duplicate ! don't insert it */ write_unlock_irqrestore(&devtree_lock, flags); return -1; } next = &(*next)->next; } *next = prop; write_unlock_irqrestore(&devtree_lock, flags); #ifdef CONFIG_PROC_DEVICETREE /* try to add to proc as well if it was initialized */ if (np->pde) proc_device_tree_add_prop(np->pde, prop); #endif /* CONFIG_PROC_DEVICETREE */ return 0; } /* * Remove a property from a node. Note that we don't actually * remove it, since we have given out who-knows-how-many pointers * to the data using get-property. Instead we just move the property * to the "dead properties" list, so it won't be found any more. */ int prom_remove_property(struct device_node *np, struct property *prop) { struct property **next; unsigned long flags; int found = 0; write_lock_irqsave(&devtree_lock, flags); next = &np->properties; while (*next) { if (*next == prop) { /* found the node */ *next = prop->next; prop->next = np->deadprops; np->deadprops = prop; found = 1; break; } next = &(*next)->next; } write_unlock_irqrestore(&devtree_lock, flags); if (!found) return -ENODEV; #ifdef CONFIG_PROC_DEVICETREE /* try to remove the proc node as well */ if (np->pde) proc_device_tree_remove_prop(np->pde, prop); #endif /* CONFIG_PROC_DEVICETREE */ return 0; } /* * Update a property in a node. Note that we don't actually * remove it, since we have given out who-knows-how-many pointers * to the data using get-property. Instead we just move the property * to the "dead properties" list, and add the new property to the * property list */ int prom_update_property(struct device_node *np, struct property *newprop, struct property *oldprop) { struct property **next; unsigned long flags; int found = 0; write_lock_irqsave(&devtree_lock, flags); next = &np->properties; while (*next) { if (*next == oldprop) { /* found the node */ newprop->next = oldprop->next; *next = newprop; oldprop->next = np->deadprops; np->deadprops = oldprop; found = 1; break; } next = &(*next)->next; } write_unlock_irqrestore(&devtree_lock, flags); if (!found) return -ENODEV; #ifdef CONFIG_PROC_DEVICETREE /* try to add to proc as well if it was initialized */ if (np->pde) proc_device_tree_update_prop(np->pde, newprop, oldprop); #endif /* CONFIG_PROC_DEVICETREE */ return 0; } /* Find the device node for a given logical cpu number, also returns the cpu * local thread number (index in ibm,interrupt-server#s) if relevant and * asked for (non NULL) Loading
drivers/of/base.c +116 −0 Original line number Diff line number Diff line Loading @@ -658,3 +658,119 @@ int of_parse_phandles_with_args(struct device_node *np, const char *list_name, return ret; } EXPORT_SYMBOL(of_parse_phandles_with_args); /** * prom_add_property - Add a property to a node */ int prom_add_property(struct device_node *np, struct property *prop) { struct property **next; unsigned long flags; prop->next = NULL; write_lock_irqsave(&devtree_lock, flags); next = &np->properties; while (*next) { if (strcmp(prop->name, (*next)->name) == 0) { /* duplicate ! don't insert it */ write_unlock_irqrestore(&devtree_lock, flags); return -1; } next = &(*next)->next; } *next = prop; write_unlock_irqrestore(&devtree_lock, flags); #ifdef CONFIG_PROC_DEVICETREE /* try to add to proc as well if it was initialized */ if (np->pde) proc_device_tree_add_prop(np->pde, prop); #endif /* CONFIG_PROC_DEVICETREE */ return 0; } /** * prom_remove_property - Remove a property from a node. * * Note that we don't actually remove it, since we have given out * who-knows-how-many pointers to the data using get-property. * Instead we just move the property to the "dead properties" * list, so it won't be found any more. */ int prom_remove_property(struct device_node *np, struct property *prop) { struct property **next; unsigned long flags; int found = 0; write_lock_irqsave(&devtree_lock, flags); next = &np->properties; while (*next) { if (*next == prop) { /* found the node */ *next = prop->next; prop->next = np->deadprops; np->deadprops = prop; found = 1; break; } next = &(*next)->next; } write_unlock_irqrestore(&devtree_lock, flags); if (!found) return -ENODEV; #ifdef CONFIG_PROC_DEVICETREE /* try to remove the proc node as well */ if (np->pde) proc_device_tree_remove_prop(np->pde, prop); #endif /* CONFIG_PROC_DEVICETREE */ return 0; } /* * prom_update_property - Update a property in a node. * * Note that we don't actually remove it, since we have given out * who-knows-how-many pointers to the data using get-property. * Instead we just move the property to the "dead properties" list, * and add the new property to the property list */ int prom_update_property(struct device_node *np, struct property *newprop, struct property *oldprop) { struct property **next; unsigned long flags; int found = 0; write_lock_irqsave(&devtree_lock, flags); next = &np->properties; while (*next) { if (*next == oldprop) { /* found the node */ newprop->next = oldprop->next; *next = newprop; oldprop->next = np->deadprops; np->deadprops = oldprop; found = 1; break; } next = &(*next)->next; } write_unlock_irqrestore(&devtree_lock, flags); if (!found) return -ENODEV; #ifdef CONFIG_PROC_DEVICETREE /* try to add to proc as well if it was initialized */ if (np->pde) proc_device_tree_update_prop(np->pde, newprop, oldprop); #endif /* CONFIG_PROC_DEVICETREE */ return 0; }