At 09:33 AM 2/23/99 -0600, Dave Baukus wrote:
>christophe leroy wrote:
>>
>> >
>> > The Linux kernel includes full PCI setup code (BIOS if you will).
>> > I originally wrote it for the Alpha and it was then taken, expanded
>> > etc. It is very functional, I believe that it runs/works on the
ebsa-285
>> > at system start up. I am assuming that this is the case 'cos I have
>> > another PCI based ARM system that I'm about to turn PCI on for. Right
now
>> > I'm at the 'loading a RAMdisk stage'...
>> >
>>
>> Is it the layout_? functions in bios32.c ?
>> You find them in alpha and m68k arch, not in all arch, not in arm.
>> I'd a look at it and I think i'll try to port it to arm.
>>
>> Could you please sum up how it works ? (I mean what function is
>> doing what) And what I can discard as there is a lone PCI bus on
>> EBSA285 board
>>
>> Christophe
>> unsubscribe: body of `unsubscribe linux-arm' to [EMAIL PROTECTED]
>
>I'm sure I'll be corrected if I'm wrong, but, I think the PCI bus scanning
>and setup works correctly on ebsa285; the PCI subsystem has located all
devices
>on the bus. The problem lies in fact that some pre-OS
>entity, BIOS for lack of a better term, did not allocate IO, MEM, and
interupts
>to the various devices. If you look at arch/arm/kernel/hw-ebsa285.c you'll
see
>where pcibios_fixup_ebsa285() assigns some interrupt values, maps some
devices
>to IO for some architectures, .....
>
That's probably angel, the ebsa-285 PCI setup code is very minimal, it
doesn't cope with PCI-PCI bridges and doesn't do IRQ routing/allocation.
I seem to remember it allocating PCI IO and Memory though.
>For me, since the ebsa285 is a transitional platform, I added a hard coded
>function
>that assigns the IO and such; this looks like:
>
>...
>....
> /* sort out the irq mapping for this device */
> switch (machine_type) {
> case MACH_TYPE_EBSA285:
> dev->irq = ebsa_irqval(dev);
> /* Turn on bus mastering - boot loader doesn't
> * - perhaps it should! - dag
> */
>#if 0
> pci_set_cmd(dev, 0, PCI_COMMAND_MASTER);
>#else
> inet_pci_bios_fixup(dev);
>#endif
> break;
>...
>...
>
>The function inet_pci_bios_fixup() simply looks for the devices I know I
>have (a 3com ethernet) and assigns an IO address and sets the command
register.
>A more elegant and generic solution will have wait.
>
>--
>Dave Baukus
> Inet Technologies Inc. - R & D
> [EMAIL PROTECTED]
>unsubscribe: body of `unsubscribe linux-arm' to [EMAIL PROTECTED]
>
>
unsubscribe: body of `unsubscribe linux-arm' to [EMAIL PROTECTED]