diff options
Diffstat (limited to 'arch/microblaze/kernel/of_device.c')
| -rw-r--r-- | arch/microblaze/kernel/of_device.c | 112 | 
1 files changed, 0 insertions, 112 deletions
diff --git a/arch/microblaze/kernel/of_device.c b/arch/microblaze/kernel/of_device.c deleted file mode 100644 index b372787886e..00000000000 --- a/arch/microblaze/kernel/of_device.c +++ /dev/null @@ -1,112 +0,0 @@ -#include <linux/string.h> -#include <linux/kernel.h> -#include <linux/of.h> -#include <linux/init.h> -#include <linux/module.h> -#include <linux/mod_devicetable.h> -#include <linux/slab.h> -#include <linux/of_device.h> - -#include <linux/errno.h> - -void of_device_make_bus_id(struct of_device *dev) -{ -	static atomic_t bus_no_reg_magic; -	struct device_node *node = dev->dev.of_node; -	const u32 *reg; -	u64 addr; -	int magic; - -	/* -	 * For MMIO, get the physical address -	 */ -	reg = of_get_property(node, "reg", NULL); -	if (reg) { -		addr = of_translate_address(node, reg); -		if (addr != OF_BAD_ADDR) { -			dev_set_name(&dev->dev, "%llx.%s", -				     (unsigned long long)addr, node->name); -			return; -		} -	} - -	/* -	 * No BusID, use the node name and add a globally incremented -	 * counter (and pray...) -	 */ -	magic = atomic_add_return(1, &bus_no_reg_magic); -	dev_set_name(&dev->dev, "%s.%d", node->name, magic - 1); -} -EXPORT_SYMBOL(of_device_make_bus_id); - -struct of_device *of_device_alloc(struct device_node *np, -				  const char *bus_id, -				  struct device *parent) -{ -	struct of_device *dev; - -	dev = kzalloc(sizeof(*dev), GFP_KERNEL); -	if (!dev) -		return NULL; - -	dev->dev.of_node = of_node_get(np); -	dev->dev.dma_mask = &dev->archdata.dma_mask; -	dev->dev.parent = parent; -	dev->dev.release = of_release_dev; - -	if (bus_id) -		dev_set_name(&dev->dev, bus_id); -	else -		of_device_make_bus_id(dev); - -	return dev; -} -EXPORT_SYMBOL(of_device_alloc); - -int of_device_uevent(struct device *dev, struct kobj_uevent_env *env) -{ -	struct of_device *ofdev; -	const char *compat; -	int seen = 0, cplen, sl; - -	if (!dev) -		return -ENODEV; - -	ofdev = to_of_device(dev); - -	if (add_uevent_var(env, "OF_NAME=%s", ofdev->dev.of_node->name)) -		return -ENOMEM; - -	if (add_uevent_var(env, "OF_TYPE=%s", ofdev->dev.of_node->type)) -		return -ENOMEM; - -	/* Since the compatible field can contain pretty much anything -	 * it's not really legal to split it out with commas. We split it -	 * up using a number of environment variables instead. */ - -	compat = of_get_property(ofdev->dev.of_node, "compatible", &cplen); -	while (compat && *compat && cplen > 0) { -		if (add_uevent_var(env, "OF_COMPATIBLE_%d=%s", seen, compat)) -			return -ENOMEM; - -		sl = strlen(compat) + 1; -		compat += sl; -		cplen -= sl; -		seen++; -	} - -	if (add_uevent_var(env, "OF_COMPATIBLE_N=%d", seen)) -		return -ENOMEM; - -	/* modalias is trickier, we add it in 2 steps */ -	if (add_uevent_var(env, "MODALIAS=")) -		return -ENOMEM; -	sl = of_device_get_modalias(ofdev, &env->buf[env->buflen-1], -				    sizeof(env->buf) - env->buflen); -	if (sl >= (sizeof(env->buf) - env->buflen)) -		return -ENOMEM; -	env->buflen += sl; - -	return 0; -} -EXPORT_SYMBOL(of_device_uevent);  |