Commit 3ad909bc authored by Linus Walleij's avatar Linus Walleij Committed by Russell King

ARM: 7588/1: amba: create a resource parent registrator

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: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 4095ccc3
...@@ -546,7 +546,8 @@ EXPORT_SYMBOL_GPL(amba_device_add); ...@@ -546,7 +546,8 @@ EXPORT_SYMBOL_GPL(amba_device_add);
static struct amba_device * static struct amba_device *
amba_aphb_device_add(struct device *parent, const char *name, amba_aphb_device_add(struct device *parent, const char *name,
resource_size_t base, size_t size, int irq1, int irq2, 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; struct amba_device *dev;
int ret; int ret;
...@@ -563,7 +564,7 @@ amba_aphb_device_add(struct device *parent, const char *name, ...@@ -563,7 +564,7 @@ amba_aphb_device_add(struct device *parent, const char *name,
dev->dev.platform_data = pdata; dev->dev.platform_data = pdata;
dev->dev.parent = parent; dev->dev.parent = parent;
ret = amba_device_add(dev, &iomem_resource); ret = amba_device_add(dev, resbase);
if (ret) { if (ret) {
amba_device_put(dev); amba_device_put(dev);
return ERR_PTR(ret); return ERR_PTR(ret);
...@@ -578,7 +579,7 @@ amba_apb_device_add(struct device *parent, const char *name, ...@@ -578,7 +579,7 @@ amba_apb_device_add(struct device *parent, const char *name,
void *pdata, unsigned int periphid) void *pdata, unsigned int periphid)
{ {
return amba_aphb_device_add(parent, name, base, size, irq1, irq2, pdata, 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); EXPORT_SYMBOL_GPL(amba_apb_device_add);
...@@ -588,10 +589,33 @@ amba_ahb_device_add(struct device *parent, const char *name, ...@@ -588,10 +589,33 @@ amba_ahb_device_add(struct device *parent, const char *name,
void *pdata, unsigned int periphid) void *pdata, unsigned int periphid)
{ {
return amba_aphb_device_add(parent, name, base, size, irq1, irq2, pdata, 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); 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) static void amba_device_initialize(struct amba_device *dev, const char *name)
{ {
device_initialize(&dev->dev); device_initialize(&dev->dev);
......
...@@ -71,6 +71,16 @@ struct amba_device *amba_ahb_device_add(struct device *parent, const char *name, ...@@ -71,6 +71,16 @@ struct amba_device *amba_ahb_device_add(struct device *parent, const char *name,
resource_size_t base, size_t size, resource_size_t base, size_t size,
int irq1, int irq2, void *pdata, int irq1, int irq2, void *pdata,
unsigned int periphid); 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 *); void amba_device_unregister(struct amba_device *);
struct amba_device *amba_find_device(const char *, struct device *, unsigned int, unsigned int); struct amba_device *amba_find_device(const char *, struct device *, unsigned int, unsigned int);
int amba_request_regions(struct amba_device *, const char *); int amba_request_regions(struct amba_device *, const char *);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment