]> Git Repo - linux.git/blobdiff - drivers/amba/bus.c
Merge tag 'sh-for-linus' of git://github.com/pmundt/linux-sh
[linux.git] / drivers / amba / bus.c
index cc273226dbd014868ac68342d07225e0b095d6e1..b7e7285172845c969ed9c2e24b627d40db32dda0 100644 (file)
@@ -527,9 +527,9 @@ int amba_device_add(struct amba_device *dev, struct resource *parent)
        if (ret)
                goto err_release;
 
-       if (dev->irq[0] && dev->irq[0] != NO_IRQ)
+       if (dev->irq[0])
                ret = device_create_file(&dev->dev, &dev_attr_irq0);
-       if (ret == 0 && dev->irq[1] && dev->irq[1] != NO_IRQ)
+       if (ret == 0 && dev->irq[1])
                ret = device_create_file(&dev->dev, &dev_attr_irq1);
        if (ret == 0)
                return ret;
@@ -543,6 +543,55 @@ int amba_device_add(struct amba_device *dev, struct resource *parent)
 }
 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)
+{
+       struct amba_device *dev;
+       int ret;
+
+       dev = amba_device_alloc(name, base, size);
+       if (!dev)
+               return ERR_PTR(-ENOMEM);
+
+       dev->dma_mask = dma_mask;
+       dev->dev.coherent_dma_mask = dma_mask;
+       dev->irq[0] = irq1;
+       dev->irq[1] = irq2;
+       dev->periphid = periphid;
+       dev->dev.platform_data = pdata;
+       dev->dev.parent = parent;
+
+       ret = amba_device_add(dev, &iomem_resource);
+       if (ret) {
+               amba_device_put(dev);
+               return ERR_PTR(ret);
+       }
+
+       return dev;
+}
+
+struct amba_device *
+amba_apb_device_add(struct device *parent, const char *name,
+                   resource_size_t base, size_t size, int irq1, int irq2,
+                   void *pdata, unsigned int periphid)
+{
+       return amba_aphb_device_add(parent, name, base, size, irq1, irq2, pdata,
+                                   periphid, 0);
+}
+EXPORT_SYMBOL_GPL(amba_apb_device_add);
+
+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)
+{
+       return amba_aphb_device_add(parent, name, base, size, irq1, irq2, pdata,
+                                   periphid, ~0ULL);
+}
+EXPORT_SYMBOL_GPL(amba_ahb_device_add);
+
 static void amba_device_initialize(struct amba_device *dev, const char *name)
 {
        device_initialize(&dev->dev);
This page took 0.024943 seconds and 4 git commands to generate.