[LinuxBIOS] Adding IGEL-316 mainboard

Juergen Beisert juergen127 at kreuzholzen.de
Sat May 12 12:26:51 CEST 2007


Hi Uwe,

so many questions.... ;-)

On Saturday 12 May 2007 09:56, Uwe Hermann wrote:
> Hi Jürgen!
>
> On Fri, May 11, 2007 at 11:11:59PM +0200, Juergen Beisert wrote:
> > attached the patch to add basic support for the mainboard in a so called
> > IGEL-316 graphical terminal. I'm not sure who the original manufacturer
> > of this mainboard is. It is labeled with "WINNET100 VER: 1.1
> > (30-3130000-110)"
>
> Great, thanks! Comments below, but please resend with a proper sign-off,
> otherwise we cannot commit the code:
> http://linuxbios.org/Development_Guidelines#Sign-off_Procedure
>
> That, and please add the common license header to all source files:
> http://linuxbios.org/Development_Guidelines#Common_License_Header
>
> (At least the following ones:)
>
>  - src/mainboard/igel/igel-316/auto.c
>  - src/mainboard/igel/igel-316/chip.h
>  - targets/igel/igel-316/Config.lb
>  - src/mainboard/igel/igel-316/irq_tables.c
>  - src/mainboard/igel/igel-316/mainboard.c
>  - src/mainboard/igel/igel-316/raminit.h
>  - src/mainboard/igel/igel-316/sdram_timing.h

I will do and resend the patch.

> What's the status of this code? Does it boot a payload correctly? Does
> it fully boot a Linux kernel? Which hardware works, which doesn't when
> booted with LinuxBIOS?

Status is "tested on my boards" (I'm currenlty using 5 IGEL-316 at home). It 
works with etherboot and FILO. And boots my 2.6.21 kernel with Video and 
without (one IGEL is my file server, the others are small X terminals, 
connected to my main workstation).

> > Index: LinuxBIOSv2/src/mainboard/igel/igel-316/Config.lb
> > ===================================================================
> > --- /dev/null
> > +chip northbridge/amd/gx1
> > +  device pci_domain 0 on
> > +    device pci 0.0 on end
> > +      chip southbridge/amd/cs5530
> > +        device pci 12.0 on
> > +          chip superio/nsc/pc97317
> > +            device pnp 2e.0 on		# Keyboard
> > +               io 0x60 = 0x60
> > +               io 0x62 = 0x64
> > +              irq 0x70 = 1
> > +            end
> > +            device pnp 2e.1 on		# Mouse
> > +              irq 0x70 = 12
> > +            end
> > +            device pnp 2e.2 on		# RTC
> > +               io 0x60 = 0x70
> > +              irq 0x70 = 8
> > +            end
> > +            device pnp 2e.3 off		# FDC
> > +            end
> > +            device pnp 2e.4 on		# Parallel Port
> > +               io 0x60 = 0x378
> > +              irq 0x70 = 7
> > +            end
> > +            device pnp 2e.5 off		# COM2
> > +               io 0x60 = 0x2f8
> > +              irq 0x70 = 3
> > +            end
> > +            device pnp 2e.6 on		# COM1
> > +               io 0x60 = 0x3f8
> > +              irq 0x70 = 4
> > +            end
> > +            device pnp 2e.7 on		# GPIO
> > +               io 0x60 = 0xe0
> > +            end
> > +            device pnp 2e.8 on		# Power Management
> > +               io 0x60 = 0xe800
> > +            end
> > +            register "com1" = "{115200}"
> > +            register "com2" = "{38400}"
> > +          end
> > +        device pci 12.1 off end		# SMI
> > +        device pci 12.2 off end		# IDE
> > +        device pci 12.3 on end		# Audio
> > +        device pci 12.4 on end		# VGA
> > +#        device pci 13.0 on end		# USB
> > +      end
> > +    end
> > +  end
>
> Is the above correct for the Winnet? What does 'lspnp -v' report when
> booted from the proprietary BIOS?

As I stated. I copied it from the eaglelion/5bcm and modified it until it 
works on my hardware...

> Also, can you please send some more system information (lspci -nn,
> /proc/cpuinfo etc. etc.) so it gets recorded in the list archives for
> other people who'll search for it later...
>
> A full bootlog (LinuxBIOS + Linux, with maximum verbosity) would be
> nice, too.

I will do so.

> > Index: LinuxBIOSv2/src/mainboard/igel/igel-316/cmos.layout
> > ===================================================================
> > --- /dev/null
> > +++ LinuxBIOSv2/src/mainboard/igel/igel-316/cmos.layout
>
> Is this needed or used at the moment? Otherwise please drop it for now
> (needs some adaptions in Config.lb otherwise it won't compile any more).
> We can reintroduce it when it's really needed.

I have currently no idea what it does. So I will try t oremove it.

> > Index: LinuxBIOSv2/targets/igel/igel-316/Config.lb
> > ===================================================================
> > --- /dev/null
> > +++ LinuxBIOSv2/targets/igel/igel-316/Config.lb
>
>                                ^^^^^^^^
>
> > @@ -0,0 +1,22 @@
> > +# Config file for the IGEL-316 motherboard
> > +
> > +target igel-316
>
>           ^^^^^^^^
>
> > +mainboard igel/igel-316
>
>                   ^^^^^^^^
>
> Shouldn't we use igel_316 instead of igel-316 as directory name? All
> other mainboards do that AFAICS.

Ack.

> My guess is that this is an ASI/BCom board (but I don't have
> evidence), so it should go into targets/asi/xxxx, too?

Is there a way to compare it with other boards (pictures from the other 
boards)?

> Are there any other names or part numbers on the PCB? Something similar
> to (MB-)5BL* or so?

I will send a list of components on this board.

> > Index: LinuxBIOSv2/src/mainboard/igel/igel-316/irq_tables.c
> > ===================================================================
> > --- /dev/null
> > +++ LinuxBIOSv2/src/mainboard/igel/igel-316/irq_tables.c
> > @@ -0,0 +1,113 @@
> > +/**
> > + * Documentation at : http://www.microsoft.com/whdc/archive/pciirq.mspx
> > + **/
> > +
> > +/*
> > + * It was not possible to read back the pirq-Table. In the 0xF segment
> > was + * no string like $PIRQ...
> > + * But the already running 2.4.21 kernel provides eth0 IRQ15 and USB IRQ
> > 11 + * The Realtek was device 0.f.0, the usb 0.13.0
> > + */
> > +
> > +#include <arch/pirq_routing.h>
> > +
> > +/*
> > + *    IRQ          5530       USB     Network
> > + * controller  northbridge  device     device
> > + *                          00.13.0   00.0f.00
> > + * --------------------------------------------
> > + *    11          INTA#      INTA#      n.c.
> > + *    10          INTB#       n.c.      n.c.
> > + *    15          INTC#       n.c.     INTA#
> > + *     9          INTD#       n.c.      n.c.
>
> I'm currently trying to figure out the IRQ settings for my Winnet III
> (ASI MB-5BLMP). Where/how did you gather the information required to
> write the correct version for this file?

Long time ago I sent my instructions how to do it to this list. But I will 
place it on the wiki.

> I have the values from lspci and lspnp, so I know which IRQs the original
> kernel uses, but that's about it. How do I generate an irq_tables.c file
> out of this?
>
> The getpir utility didn't give any results on my board either, btw...

Its a bit tricky but no impossible. There are only 16 irq channels. No so much 
to test... ;-)

> > Index: LinuxBIOSv2/src/mainboard/igel/igel-316/raminit.c
> > ===================================================================
> > --- /dev/null
> > +++ LinuxBIOSv2/src/mainboard/igel/igel-316/raminit.c
>
> OK, this part should definately be done in the generic RAM init code,
> not here. Can this easily be merged into the generic GX1 code? I haven't
> yet looked at that...

A few day ago I ask how to do so, but no answer yet. I we merge it into the 
generic GX1 code we also must adapt all other GX1 implementations.

> > Index: LinuxBIOSv2/src/mainboard/igel/igel-316/raminit.h
> > ===================================================================
> > --- /dev/null
> > +++ LinuxBIOSv2/src/mainboard/igel/igel-316/raminit.h
>
> Is this mainboard-specific or generic for the GX1? Maybe it should go into
> src/northbridge/amd/gx1/raminit.[ch], too?

If my raminit.c will be generic, then this file also would be generic.

> > Index: LinuxBIOSv2/src/mainboard/igel/igel-316/sdram_timing.h
> > ===================================================================
> > --- /dev/null
> > +++ LinuxBIOSv2/src/mainboard/igel/igel-316/sdram_timing.h
>
> Same here. Is it mainboard-specific? Otherwise merge it into
> src/northbridge/amd/gx1/raminit.[ch]? Should it get its own file? If so,
> why?

Some parts are mainboard specific, some are SDRAM specific. Unless we can read 
back the SPD EEPROM, we must manually add the SDRAM data.

> > +/**
> > + * @brief This defines CPU's core frequency in kHz
>
> The @brief is not needed, we configure Doxygen to always use the first
> sentence as short description (JavaDoc-like).

I see, I will remove them.

> > +/***********************************************************************
> >******* + * This is SDRAM specific. Currently I found no way to read the
> > SPD EEPROM + * on the SO-DIMM to autodetect things. I have no clue where
> > the manufacturer + * has connected the required I2C lines for this
> > purpose
> > +
> > *************************************************************************
> >*****/
>
> I'll try to dump the SPD information on my Winnet3 and report the
> results...

But it would be valid only for exact one SDRAM type! Not for all the others.

> > Index: LinuxBIOSv2/documentation/HOWTO/igel-316-howto.txt
> > ===================================================================
> > --- /dev/null
> > +++ LinuxBIOSv2/documentation/HOWTO/igel-316-howto.txt
>
> Please drop this here, and create a wiki tutorial containing this info
> (and other instructions how to get LinuxBIOS+Linux running on this
> thin client).

Ack.

> > @@ -0,0 +1,37 @@
> > +The IGEL-316 is a small and nice terminal based on the old Geode GX1
> > CPU. It +was shipped with a 16MiB DOC, that contains an older 2.4 Linux
> > kernel and a 3.x +Xfree86 for the graphics. There was no regular BIOS in
> > it to boot other things +than the DOC content.
>
> Are you sure? Mine has a BIOS chip and a DoC. While the BIOS usually
> boots a kernel from the DoC, if you attach an IDE disk (with external
> power, as the thin client doesn't provide it), it will boot a Linux from
> the disk just fine.

Yes I'm sure. At system start I only see "booting...". No way found to stop 
it.

Juergen




More information about the coreboot mailing list