Subject: Re: S900/E100 progress (well, sort of)
To: None <port-macppc@NetBSD.org>
From: Jeff Walther <trag@io.com>
List: port-macppc
Date: 07/14/2004 17:45:08
At 12:37 -0400 07/14/2004, Michael wrote:

>after getting ohci and yds to work I had a closer look at the ethernet part
>  of the E100 card - sort of a (probably weird) DEC 21140, so far no
>  operating system besides MacOS could make any use of it, NetBSD and
>  Linux both claim that they can't map the card's registers.

>So, the reason is probably that OpenFirmware doesn't see the card -
>  there's no /bandit/pci1011,9 in the device tree, so the PCI config registers
>  contain random data when the tlp driver tries to attach and memory
>  (probably) isn't enabled anyway, so mapping fails. The fixpci() routine in
>  pci/pci_machdep() digs only through the OF tree so it doesn't see the
>  card either.
>
>A solution could be something like this:
>- configure the PCI stuff in the tlp driver, maybe hardwire it to some 'safe'
>  values for the time being - shouldn't impact anything else since the E100
>  fits only in one slot so the ethernet controller will always be on PCI
>  0:11:0

I am not an OS programmer by any stretch of the imagination, but I am 
a bit of a hardware guy.   I mention this to excuse the communication 
gaps we may have here (and the flat out mistakes I may make).   I 
will appreciate corrections to any glaring (or glinting) errors I 
make.

Anyway, in one piece of Apple documention, perhaps in the Hardware 
Developer's Notes for the x500 family, there is mention of a sort of 
phantom PCI slot called the E100 which is there to support some 
legacy network stuff.   Ah, here it is from the Hardware Developer 
Notes for the 9500, "PPC_9500.pdf":

"To maintain compatibility with some networking software, the Power 
Macintosh 9500 computers have a declaration ROM for slot 0. This 
declaration ROM does not contain any drivers or other data. It is 
intended as an interim solution and is not to be used by new 
programs."

I should mention here that the ROM in the 9500 is the same as in the 
7500, 8500, S900, J700, PTP and the PowerWave.

It appears that Umax made use of this "phantom slot" and even gave 
the card its name.

Here is my guess as to what Umax did, and I hope it is helpful.   The 
x500/PowerSurge architecture has support for up to six PCI slots. 
This includes six hardware interrupts available on the pins of Grand 
Central (343S1125) and support in firmware for the PCI slots A1, B1, 
C1, D2, E2 and F2.

However, Bandit and its associated PCI arbiter hardware can actually 
support something like six PCI devices on a single Bandit.   This a 
limitation of the arbiter.  Bandit could probably support up to 16 
PCI slots in theory (bus signal strength couldn't manage it).   But 
if you just wired in another PCI slot, it wouldn't do you any good 
because the firmware doesn't know its supposed to be there.    I may 
be wrong there.

Anyway, so it appears that Umax put five PCI devices on the single 
Bandit in the S900.   There's Grand Central, the top two PCI slots, 
the PCI-PCI bridge, and then support for the ethernet portion of the 
E100 card.    I would guess that they grabbed one of the three 
available hardware interrupts on Grand Central and routed it to the 
PCI extender on slot A.   And they probably grabbed one of the 
available PCI arbitration wire sets available on the PCI arbiter 
(343S0182) and routed that to the PCI extender as well.   The 
ethernet chip can get the normal shared bus signals through the 
regular PCI connector of slot A, but it needs the extender to get its 
own interrupt and the arbiter signals.

That takes care of the hardware, and as I mentioned in my previous 
message, I never actually tracked out the connections to confirm this 
theory (the UW half of the card became unattractively outdated). 
But Umax would still have needed a slot assignment in firmware for 
the card, I think.   This is where the boundary of my knowledge lies. 
My hazy understanding is that they were somehow able to grab this 
E100 artifact that is built into the firmware of these machines, to 
use as the slot designation for the ethernet component of the card.

Oh and going back a couple more messages, the four slots behind the 
PCI-PCI Bridge all share the interrupt which would normally go to 
slot C1.    So the interrupts for D2, E2 and F2 are available (as 
they would be on any three slot machine) and I suspect that it is one 
of those that was used for the E100 card.

Although, I wonder if the 7500/8500 uses any of the lower slot 
interrupts for the video circuitry or if they use different 
interrupts.

Jeff Walther