]> git.karo-electronics.de Git - linux-beck.git/commitdiff
ARM: 7588/1: amba: create a resource parent registrator
authorLinus Walleij <linus.walleij@linaro.org>
Fri, 30 Nov 2012 15:30:43 +0000 (16:30 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Mon, 3 Dec 2012 11:15:35 +0000 (11:15 +0000)
This creates amba_apb_device_add_res() and
amba_ahb_device_add_res() respectively, to add devices with
another parent than iomem_resource. This is needed to specify
that a device is contained in a specific IO range.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
drivers/amba/bus.c
include/linux/amba/bus.h

index e8eb91bd0d28a9411df64124edd47ca779bdf011..a2fc56d2e6819d04a86474157e330ff0467d6b09 100644 (file)
@@ -546,7 +546,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 +564,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 +579,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 +589,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);
index d36417158d8f1811f914fb257d58ea97a092bdfc..43ec7e247a8086972ae7ef0e87efde66dd4ac0e7 100644 (file)
@@ -71,6 +71,16 @@ struct amba_device *amba_ahb_device_add(struct device *parent, const char *name,
                                        resource_size_t base, size_t size,
                                        int irq1, int irq2, void *pdata,
                                        unsigned int periphid);
+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);
+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);
 void amba_device_unregister(struct amba_device *);
 struct amba_device *amba_find_device(const char *, struct device *, unsigned int, unsigned int);
 int amba_request_regions(struct amba_device *, const char *);