Subject: Re: ibm4xx pci (Re: IBM405GP/GPr OPB bus_space endian (powerpc/ibm4xx/dev/opb.c))
To: Shigeyuki Fukushima <shige@netbsd.org>
From: Allen Briggs <briggs@netbsd.org>
List: port-powerpc
Date: 05/10/2006 11:01:42
On Wed, May 10, 2006 at 11:17:29PM +0900, Shigeyuki Fukushima wrote:
> I see. Then, is i386-port a special case? I think so. ok?

Yes.  I think so, too.

> By the way, in pci-bus implementation (sys/dev/pci/pci.c), there is
> pci_attach_hook() function-call.
> This must be implemented at machine-dependent parts.

Yes.  I think the current structure under ibm4xx needs to change.
I don't know if it needs to change for the 405GPr, but it will
need to change for some other.

The pci_attach_hook() is meant for pci busses--if you need to
do anything to configure a PCI bus before it is attached.

> In an ibm4xx case, this function is located at
> ibm4xx/dev/pci/pci_machdep.c.
> When this function was called, pchb had been already attached.

That's OK.  The pci_attach_hook() is called before each PCI bus is
attached.  So imagine a system with a 405GPr that has a quad-port
ethernet controller in it and that quad-port ethernet controller
has a built-in PCI bridge.  That might look something like:

pchb0 at plb0
pci0 at pchb0
ppb0 at pci0 dev 1
pci1 at ppb0
tlp0 at pci1 dev 0
tlp1 at pci1 dev 1
tlp2 at pci1 dev 2
tlp3 at pci1 dev 3

Unless I am mistaken, pci_attach_hook() will be called before
"pci0 at pchb0" and again before "pci1 at ppb0".

pci_attach_hook() may not need to do anything, though.  That
is machine-dependent.

-allen

-- 
                  Use NetBSD!  http://www.NetBSD.org/