diff options
| author | Linus Walleij <linus.walleij@linaro.org> | 2012-11-30 10:30:43 -0500 |
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2012-12-03 06:15:35 -0500 |
| commit | 3ad909bc8f2ea32fd7d24266c61cd4605feecec8 (patch) | |
| tree | 045b87094068c021a71c98e1ea52a92a65eafffd /drivers/amba | |
| parent | 4095ccc39ed91714d3b5172f16a9aebf30bbbea9 (diff) | |
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>
Diffstat (limited to 'drivers/amba')
| -rw-r--r-- | drivers/amba/bus.c | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c index e8eb91bd0d28..a2fc56d2e681 100644 --- a/drivers/amba/bus.c +++ b/drivers/amba/bus.c | |||
| @@ -546,7 +546,8 @@ EXPORT_SYMBOL_GPL(amba_device_add); | |||
| 546 | static struct amba_device * | 546 | static struct amba_device * |
| 547 | amba_aphb_device_add(struct device *parent, const char *name, | 547 | amba_aphb_device_add(struct device *parent, const char *name, |
| 548 | resource_size_t base, size_t size, int irq1, int irq2, | 548 | resource_size_t base, size_t size, int irq1, int irq2, |
| 549 | void *pdata, unsigned int periphid, u64 dma_mask) | 549 | void *pdata, unsigned int periphid, u64 dma_mask, |
| 550 | struct resource *resbase) | ||
| 550 | { | 551 | { |
| 551 | struct amba_device *dev; | 552 | struct amba_device *dev; |
| 552 | int ret; | 553 | int ret; |
| @@ -563,7 +564,7 @@ amba_aphb_device_add(struct device *parent, const char *name, | |||
| 563 | dev->dev.platform_data = pdata; | 564 | dev->dev.platform_data = pdata; |
| 564 | dev->dev.parent = parent; | 565 | dev->dev.parent = parent; |
| 565 | 566 | ||
| 566 | ret = amba_device_add(dev, &iomem_resource); | 567 | ret = amba_device_add(dev, resbase); |
| 567 | if (ret) { | 568 | if (ret) { |
| 568 | amba_device_put(dev); | 569 | amba_device_put(dev); |
| 569 | return ERR_PTR(ret); | 570 | return ERR_PTR(ret); |
| @@ -578,7 +579,7 @@ amba_apb_device_add(struct device *parent, const char *name, | |||
| 578 | void *pdata, unsigned int periphid) | 579 | void *pdata, unsigned int periphid) |
| 579 | { | 580 | { |
| 580 | return amba_aphb_device_add(parent, name, base, size, irq1, irq2, pdata, | 581 | return amba_aphb_device_add(parent, name, base, size, irq1, irq2, pdata, |
| 581 | periphid, 0); | 582 | periphid, 0, &iomem_resource); |
| 582 | } | 583 | } |
| 583 | EXPORT_SYMBOL_GPL(amba_apb_device_add); | 584 | EXPORT_SYMBOL_GPL(amba_apb_device_add); |
| 584 | 585 | ||
| @@ -588,10 +589,33 @@ amba_ahb_device_add(struct device *parent, const char *name, | |||
| 588 | void *pdata, unsigned int periphid) | 589 | void *pdata, unsigned int periphid) |
| 589 | { | 590 | { |
| 590 | return amba_aphb_device_add(parent, name, base, size, irq1, irq2, pdata, | 591 | return amba_aphb_device_add(parent, name, base, size, irq1, irq2, pdata, |
| 591 | periphid, ~0ULL); | 592 | periphid, ~0ULL, &iomem_resource); |
| 592 | } | 593 | } |
| 593 | EXPORT_SYMBOL_GPL(amba_ahb_device_add); | 594 | EXPORT_SYMBOL_GPL(amba_ahb_device_add); |
| 594 | 595 | ||
| 596 | struct amba_device * | ||
| 597 | amba_apb_device_add_res(struct device *parent, const char *name, | ||
| 598 | resource_size_t base, size_t size, int irq1, | ||
| 599 | int irq2, void *pdata, unsigned int periphid, | ||
| 600 | struct resource *resbase) | ||
| 601 | { | ||
| 602 | return amba_aphb_device_add(parent, name, base, size, irq1, irq2, pdata, | ||
| 603 | periphid, 0, resbase); | ||
| 604 | } | ||
| 605 | EXPORT_SYMBOL_GPL(amba_apb_device_add_res); | ||
| 606 | |||
| 607 | struct amba_device * | ||
| 608 | amba_ahb_device_add_res(struct device *parent, const char *name, | ||
| 609 | resource_size_t base, size_t size, int irq1, | ||
| 610 | int irq2, void *pdata, unsigned int periphid, | ||
| 611 | struct resource *resbase) | ||
| 612 | { | ||
| 613 | return amba_aphb_device_add(parent, name, base, size, irq1, irq2, pdata, | ||
| 614 | periphid, ~0ULL, resbase); | ||
| 615 | } | ||
| 616 | EXPORT_SYMBOL_GPL(amba_ahb_device_add_res); | ||
| 617 | |||
| 618 | |||
| 595 | static void amba_device_initialize(struct amba_device *dev, const char *name) | 619 | static void amba_device_initialize(struct amba_device *dev, const char *name) |
| 596 | { | 620 | { |
| 597 | device_initialize(&dev->dev); | 621 | device_initialize(&dev->dev); |
