Port-ofppc archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: SmartFirmware interrupts



Yeahhh...

See I don't have a Pegasos here, only my Efika. And the firmware source :)

Here I used examples. Not real numbers. The numbers do not matter, you
will never, ever hardcode a number.

0xf1000000 is the address of the MPC5200B MBAR in an early firmware version
(and U-Boot uses this I think). It got moved to 0xf0000000 in the final release.

0xfe000000 is correct for you; trust the device tree. Not emails. Device
trees change, don't hard code a single number!! The base address of the ISA
node is the ISA port base address, that's all you need to understand.

As Tim goes on "it's not a real i8259, then", this distinction is moot. It is
a real i8259 interrupt controller, it's just not a discrete chip on a board
from 1983, it's inside the southbridge. It may be part of the chip's legacy
x86 support, but in the end, all PCs use the legacy i8259 as if it was a
real i8259, unless they specifically want to use the IO-APIC (which the
i8259 usually cascades to anyway) on very modern systems. Let it be known,
IO-APIC didn't exist when the VT8231 came out.

If you need an interrupt address so very urgently, check the PCI config
data for each device. If it's on the "ISA" bridge, you can make assumptions
(they haven't moved!)

However, I am FAIRLY sure the device tree at least includes the interrupt
number for these devices, can someone get me a device tree dump? Just go
in and get the .properties of /, /openprom and /pci/isa/whatever for an
offending example?

I can and will fix up a Forth script which will put this data in if you
wish, I just need the correct data for it (and we have that because we
have firmware that does it..)

--
Matt Sealey <matt%genesi-usa.com@localhost>
Genesi, Manager, Developer Relations

Frank Wille wrote:
Matt Sealey wrote:

No. Just use the i8259. It really is an i8259 - the same i8259 you have in any
PC southbridge that would be mapped on a PC to io port 0x2fb.

0x2fb? Not 0x20 and 0xa0? Are we talking about the same?


Just treat the offset like the magical pointer into IO space and it is no
different whatsoever - no different as in outb(0x0 + 0x2fb, 0xff) is no different to outb(0xf1000000 + 0x2fb, 0xff) on PowerPC.

This was just an example? Or why is the base address of the IO
space 0xf1000000? What in the OFW-tree tells me to use this
address?

I would have used the address of the IO space from the PCI
node which contains the /isa tree, which is 0xfe000000.

Maybe Tim has understood, but I don't... ;)





Home | Main Index | Thread Index | Old Index