diff options
Diffstat (limited to 'drivers/amba/bus.c')
-rw-r--r-- | drivers/amba/bus.c | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c index e8eb91bd0d28..cdbad3a454a0 100644 --- a/drivers/amba/bus.c +++ b/drivers/amba/bus.c @@ -45,7 +45,6 @@ static int amba_match(struct device *dev, struct device_driver *drv) return amba_lookup(pcdrv->id_table, pcdev) != NULL; } -#ifdef CONFIG_HOTPLUG static int amba_uevent(struct device *dev, struct kobj_uevent_env *env) { struct amba_device *pcdev = to_amba_device(dev); @@ -58,9 +57,6 @@ static int amba_uevent(struct device *dev, struct kobj_uevent_env *env) retval = add_uevent_var(env, "MODALIAS=amba:d%08X", pcdev->periphid); return retval; } -#else -#define amba_uevent NULL -#endif #define amba_attr_func(name,fmt,arg...) \ static ssize_t name##_show(struct device *_dev, \ @@ -546,7 +542,8 @@ EXPORT_SYMBOL_GPL(amba_device_add); static struct amba_device * amba_aphb_device_add(struct device *parent, const char *name, resource_size_t base, size_t size, int irq1, int irq2, - void *pdata, unsigned int periphid, u64 dma_mask) + void *pdata, unsigned int periphid, u64 dma_mask, + struct resource *resbase) { struct amba_device *dev; int ret; @@ -563,7 +560,7 @@ amba_aphb_device_add(struct device *parent, const char *name, dev->dev.platform_data = pdata; dev->dev.parent = parent; - ret = amba_device_add(dev, &iomem_resource); + ret = amba_device_add(dev, resbase); if (ret) { amba_device_put(dev); return ERR_PTR(ret); @@ -578,7 +575,7 @@ amba_apb_device_add(struct device *parent, const char *name, void *pdata, unsigned int periphid) { return amba_aphb_device_add(parent, name, base, size, irq1, irq2, pdata, - periphid, 0); + periphid, 0, &iomem_resource); } EXPORT_SYMBOL_GPL(amba_apb_device_add); @@ -588,10 +585,33 @@ amba_ahb_device_add(struct device *parent, const char *name, void *pdata, unsigned int periphid) { return amba_aphb_device_add(parent, name, base, size, irq1, irq2, pdata, - periphid, ~0ULL); + periphid, ~0ULL, &iomem_resource); } EXPORT_SYMBOL_GPL(amba_ahb_device_add); +struct amba_device * +amba_apb_device_add_res(struct device *parent, const char *name, + resource_size_t base, size_t size, int irq1, + int irq2, void *pdata, unsigned int periphid, + struct resource *resbase) +{ + return amba_aphb_device_add(parent, name, base, size, irq1, irq2, pdata, + periphid, 0, resbase); +} +EXPORT_SYMBOL_GPL(amba_apb_device_add_res); + +struct amba_device * +amba_ahb_device_add_res(struct device *parent, const char *name, + resource_size_t base, size_t size, int irq1, + int irq2, void *pdata, unsigned int periphid, + struct resource *resbase) +{ + return amba_aphb_device_add(parent, name, base, size, irq1, irq2, pdata, + periphid, ~0ULL, resbase); +} +EXPORT_SYMBOL_GPL(amba_ahb_device_add_res); + + static void amba_device_initialize(struct amba_device *dev, const char *name) { device_initialize(&dev->dev); |