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, .....

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]

Reply via email to