diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2012-01-25 00:17:37 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2012-02-09 16:34:16 +0100 |
commit | d2e539a5ebd6b204037deb44c416a9e20b5d2354 (patch) | |
tree | 0be887425dea6ecd50df2832a531c600fb49fd96 /arch/arm/mach-sa1100 | |
parent | ARM: sa11x0: neponset: get parent IRQ from neponset device resource (diff) | |
download | linux-d2e539a5ebd6b204037deb44c416a9e20b5d2354.tar.xz linux-d2e539a5ebd6b204037deb44c416a9e20b5d2354.zip |
ARM: sa11x0: neponset: place smc91x and sa1111 resources in neponset device
Complete the neponset device resources by covering the children's
memory resources in the parent neponset device.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-sa1100')
-rw-r--r-- | arch/arm/mach-sa1100/neponset.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c index f4d587151770..2451a38aa2f0 100644 --- a/arch/arm/mach-sa1100/neponset.c +++ b/arch/arm/mach-sa1100/neponset.c @@ -179,6 +179,7 @@ static struct sa1111_platform_data sa1111_info = { static int __devinit neponset_probe(struct platform_device *dev) { struct neponset_drvdata *d; + struct resource *sa1111_res, *smc91x_res; struct resource sa1111_resources[] = { DEFINE_RES_MEM(0x40000000, SZ_8K), { .flags = IORESOURCE_IRQ }, @@ -213,6 +214,13 @@ static int __devinit neponset_probe(struct platform_device *dev) if (ret < 0) goto err_alloc; + smc91x_res = platform_get_resource(dev, IORESOURCE_MEM, 1); + sa1111_res = platform_get_resource(dev, IORESOURCE_MEM, 2); + if (!smc91x_res || !sa1111_res) { + ret = -ENXIO; + goto err_alloc; + } + d = kzalloc(sizeof(*d), GFP_KERNEL); if (!d) { ret = -ENOMEM; @@ -258,10 +266,13 @@ static int __devinit neponset_probe(struct platform_device *dev) /* Disable GPIO 0/1 drivers so the buttons work on the Assabet */ NCR_0 = NCR_GP01_OFF; + sa1111_resources[0].parent = sa1111_res; sa1111_resources[1].start = d->irq_base + NEP_IRQ_SA1111; sa1111_resources[1].end = d->irq_base + NEP_IRQ_SA1111; d->sa1111 = platform_device_register_full(&sa1111_devinfo); + smc91x_resources[0].parent = smc91x_res; + smc91x_resources[1].parent = smc91x_res; smc91x_resources[2].start = d->irq_base + NEP_IRQ_SMC91X; smc91x_resources[2].end = d->irq_base + NEP_IRQ_SMC91X; d->smc91x = platform_device_register_full(&smc91x_devinfo); @@ -331,6 +342,8 @@ static struct platform_driver neponset_device_driver = { static struct resource neponset_resources[] = { DEFINE_RES_MEM(0x10000000, 0x08000000), + DEFINE_RES_MEM(0x18000000, 0x04000000), + DEFINE_RES_MEM(0x40000000, SZ_8K), DEFINE_RES_IRQ(IRQ_GPIO25), }; |