Subject: Re: Platform devices on MPC8245

From: Mark Brown <[email-masked]>
Date: Wed, 7 Sep 2005 17:34:28 +0100

On Wed, Aug 31, 2005 at 01:26:00PM +0100, Mark Brown wrote:

> I'm having some trouble using the platform device support for the
> MPC8245 using memory map B, set up using mpc10x_bridge_init().  When
> that function registers the host bridge it registers addresses
> 0x80000000-0xfebfffff for the bridge but by default (with EUMB mapped to
> MPC10X_MAPB_EUMB_BASE) the platform devices on the chip are also within
> this address range.  The problem I'm seeing is that when
> platform_device_register() comes to call request_resource() on the
> devices that call fails because the addresses have already been
> allocated to the PCI host bridge.

Does anyone have any suggestions as to what I'm doing wrong with this?
Using kernel 2.6.13 I am currently working around the issue by making
the platform bus use insert_resource() rather than request_resource() as
in the patch below but this really seems like the wrong solution.

--- linux-2.6.13/drivers/base/platform.c        2005-08-29 00:41:01.000000000 +0100
+++ linux/drivers/base/platform.c       2005-09-07 17:26:10.459969600 +0100
@@ -149,7 +149,7 @@
                                p = &ioport_resource;
                }

-               if (p && request_resource(p, r)) {
+               if (p && insert_resource(p, r)) {
                        printk(KERN_ERR
                               "%s: failed to claim resource %d\n",
                               pdev->dev.bus_id, i);

-- 
"You grabbed my hand and we fell into it, like a daydream - or a fever."