I even have to allocate PCI resources for my S3.
I've been thinking about adding code for that to the kernel, but it's not
trivial: how do you find out which devices have been assigned PCI resources
already? Is this the correct way?
oldaddr = pci_read(PCI_BASE_ADDRESS_i);
pci_write(PCI_BASE_ADDRESS_i, -1);
newaddr = pci_read(PCI_BASE_ADDRESS_i);
if (oldaddr == newaddr) {
/* not assigned */
newaddr = pci_alloc(newaddr);
pci_write(PCI_BASE_ADDRESS_i, newaddr);
} else {
/* assigned */
pci_write(PCI_BASE_ADDRESS_i, oldaddr);
}
OK, this is a bit simplistic. I need two passes to prealloc the already
assigned stuff. I cannot reassign new adresses to already assigned stuff since
those adresses may be in the Open Firmware device tree properties, and thus
can't be changed.
And I have to enable PCI_COMMAND_IO and PCI_COMMAND_MEMORY, if necessary,
right?
`lspci -v' gives for me (stripped irrelevant information):
| 00:03.0 VGA compatible controller: S3 Inc. Vision 968
| Flags: stepping, medium devsel, IRQ 28
i.e. nothing assigned for the Vision968.
| 00:05.0 VGA compatible controller: ATI Technologies Inc 215GT [Mach64 GT] (rev 9a)
| Flags: stepping, medium devsel, IRQ 30
| Memory at c2000000 (32-bit, non-prefetchable)
| Memory at fffff000 (32-bit, non-prefetchable)
The first memory block of the RAGE II+ is assigned, the second isn't.
> part was that the S3 specific initialization code in the PPC port of Linux
> would not work either.
Same for me.
> To solve the problem I have written a small (~24kB code+data) real mode
> 80486SX emulator which executes the x86 BIOS initialization routine on the
> PPC. It works well for me, but unfortunately AFAIK the few people who
> have tried it on their machines have not been successful :-(
>
> The code was written as an user mode utility but still needs some
> modifications to run under 2.1. Of course I'm using a serial console
> since the screen is unreadable until the utility runs.
If you port it to 2.1.112, I'm willing to try on my Vision968 ;-)
Greetings,
Geert
P.S. Changed CC list, included another PCI expert.
-- Geert Uytterhoeven Geert.Uytterhoeven@cs.kuleuven.ac.be Wavelets, Linux/{m68k~Amiga,PPC~CHRP} http://www.cs.kuleuven.ac.be/~geert/ Department of Computer Science -- Katholieke Universiteit Leuven -- Belgium
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html