Re: Please revert: PCI: fix IDE legacy mode resources

Ralf Baechle
2007-12-11T12:14:25Z

On Tue, Dec 11, 2007 at 11:27:24AM +1100, Benjamin Herrenschmidt wrote:

> > The GT-64111 system controller doesn't provide any kind of mapping
> > functionality that would help here. So legacy port addressing can only
> > work by exploiting aliases due to incomplete decoding of legacy ioport
> > addreses by the VT82C586 - but direct addressing is impossible.
>
> Ok, that explains how the "fix" that we reverted worked. It caused crap
> to be added to the top bits of the address :-)
>
> So here, what you really want to do is not a call to
> pcibios_resource_to_bus(), but you actually want to use a different bus
> address in the first place, that you know the HW will decode the same
> way.
>
> The best way to achieve that imho, is to do a header quirk that is run
> just after the generic probe code, which offsets the fixed legacy
> resources by 0x10000000 since that's really the bus address you are
> going to emit.
>
> Later on, your pcibios_fixup code should take that remove 0x10000000
> from all IO resources, since your 0xd0000000 mapping already maps
> 0x10000000 as you probably already do.
>
> The trick is, you don't want to convert a "resource" into a "bus
> address" here, but really issue a different bus address.

Oh well, I've cooked up a patch and posted it to linux-mips for testing.

Ralf