Platform devices on MPC8245

4 messages, 2 authors, 2005-09-07 · open the first message on its own page

Platform devices on MPC8245

From: Mark Brown <hidden>
Date: 2005-08-31 12:47:00

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.

I'm sure I must be missing something really obvious about how this is
supposed to work but I can't for the life of me see what.  Changing the
platform code to use insert_resource() rather than request_resource()
allows the devices to register and be used but that seems rather too
drastic to be it.

Thanks for any help.

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

Re: Platform devices on MPC8245

From: Mark Brown <hidden>
Date: 2005-09-07 16:34:36

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."

Re: Platform devices on MPC8245

From: Vitaly Bordug <hidden>
Date: 2005-09-07 16:42:40

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

quoted
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.
Yes, that's right. The proper solution (I guess) will be reconfiguration 
  in  mpc10x_bridge_init() so that memory covered by the bridge do not 
intercept anything what pdevs request. Or (less probably) there's 
something odd in pdevs descriptions - if so you need to find out what 
exactly is intercepted with the bridge area.



-- 
Sincerely,
Vitaly

Re: Platform devices on MPC8245

From: Mark Brown <hidden>
Date: 2005-09-07 16:58:30

On Wed, Sep 07, 2005 at 08:42:38PM +0400, Vitaly Bordug wrote:
Yes, that's right. The proper solution (I guess) will be reconfiguration 
 in  mpc10x_bridge_init() so that memory covered by the bridge do not 
intercept anything what pdevs request. Or (less probably) there's 
something odd in pdevs descriptions - if so you need to find out what 
exactly is intercepted with the bridge area.
Setting the parent for the on-chip devices to be the PCI bridge ought to
do the trick, I think.  The thing that's worrying me is that I can't see
how existing users of this code manage to do so successfully.

-- 
"You grabbed my hand and we fell into it, like a daydream - or a fever."
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help