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]

Reply via email to