[LinuxBIOS] Adding IGEL-316 mainboard

Uwe Hermann uwe at hermann-uwe.de
Sat May 12 09:56:17 CEST 2007


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

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?


> 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?

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.


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


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

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?

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


> 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?

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


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


> 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?


> 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?


> +/**
> + * @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).


> +/******************************************************************************
> + * 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...


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


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


HTH, Uwe.
-- 
http://www.hermann-uwe.de  | http://www.holsham-traders.de
http://www.crazy-hacks.org | http://www.unmaintained-free-software.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20070512/692f302d/attachment.sig>


More information about the coreboot mailing list