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: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
4095ccc39e
commit
3ad909bc8f
|
@ -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);
|
||||
|
|
|
@ -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 *);
|
||||
|
|
Loading…
Reference in New Issue