[U-Boot-Users] U-Boot allocating PCI I/O space from 0 (Was: pata_sl82c105 can not reserve IO region)
Sergei Shtylyov
sshtylyov at ru.mvista.com
Wed Dec 27 07:53:34 EST 2006
Hello, I wrote:
>> Well, I'm having a very related issue with the U-Boot on MPC85xx: recently
>>I've noticed that it started allocating PCI I/O space from 0 (while the older
>>versions started from 0x1000). The IDE core can't tolerate this, giving me
>>such messages on bootup:
>>PDC20269: inconsistent baseregs (BIOS) for port 0, skipping
This is due to U-Boot assigning the PCI resources fram address 0 (which is
BTW illegal according to PCI 2.1). I have a patch for drivers/pci_auto.c
which I'm going to post tomorrow...
>>when I have Promise Ultra133TX2 card inserted into PCI alone. I've looked thru
>>the U-Boot sources and commit history but failed to locate the change that led
>>to this...
> It's actually much worse than just that. When I also plug in some other
> PCI card so Ultra133TX2 doesn't get the zero addresses anymore, I'm getting this:
> eepro100.c: $Revision: 1.36 $ 2000/11/17 Modified by Andrey V. Savochkin
> <saw at saw.sw.com.sg> and others
> eth3: Invalid EEPROM checksum 0xfffe, check settings before activating this
> device!
> eth3: OEM i82557/i82558 10/100 Ethernet, 00:00:00:00:FF:FF, IRQ 52.
> [...]
> PDC20269: 100% native mode on irq 51
> ide2: BM-DMA at 0x0060-0x0067, BIOS settings: hde:pio, hdf:pio
> PDC20269: simplex device: DMA disabled
> ide3: PDC20269 Bus-Master DMA disabled (BIOS)
> I've just verified that both these cards are working OK in x86 box
> As for the simplex message, I've encountered this some months ago and it was
> caused by invalid programming of the MPC85xx bridge PCI/X outbound translation
> address register for the I/O space
No, the programming was valid. I've finally found the ultimate reason of
breakage -- it lies in board/*/init.S files. The patch tomorrow...
> or at least by the non-zero value of the
> bus I/O address in the "ranges" property of the bridge device node in the
> device tree...
It was the real reason -- the arch/powerpc/ kernel just ignores ranges
with non-zero I/O port address.
> I'm somewhat confused now since I know that the relevant U-Boot
> code has been fixed but it looks like that made it only worse -- I was using
> the custom patched version of U-Boot before which missed that fix:
> http://www.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=commitdiff;h=97074ed9655309b64231bc2cee69fe85399f8055
It was actually the following patch that broke PCI:
http://www.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=commit;h=52c7a68b8d587ebcf5a6b051b58b3d3ffa377ddc
There were other places relying on CFG_PCI1_IO_BASE and those weren't
changed... sigh. :-/
WBR, Sergei
More information about the Linuxppc-embedded
mailing list