Board:bcom/winnet100: Difference between revisions

From coreboot
Jump to navigation Jump to search
m (→‎Using the hardware with a current kernel: include reference for rejection of patch (unfortunately no <ref> support in this wiki))
m (Phcoder moved page BCOM WINNET100 to Board:bcom/winnet100)
 
(37 intermediate revisions by 4 users not shown)
Line 1: Line 1:
The '''BCOM WinNET100''' mainboard was sold by IGEL some years ago as their product '''IGEL-316'''. Their product was a Linux based terminal to work remotely with Windows and X.
The '''[http://web.archive.org/web/20031207003521/http://www.igel.co.za/igel_316_compact.htm BCOM WinNET100]''' mainboard was sold by IGEL some years ago as their product '''IGEL-316'''. Their product was a Linux based terminal to work remotely with Windows and X. The hardware is still available nowadays via eBay for ca. 30-40 Euros.


== Status ==
== Status ==


{| border="0" style="font-size: smaller" valign="top"
{{Status|
|- bgcolor="#6699dd"
! align="left" | Device/functionality
! align="left" | Status
! align="left" | Comments


|- bgcolor="#eeeeee" valign="top"
|CPU_status = OK
| CPU
|CPU_comments = Geode GX1, Pentium 1 like, MMX support, no MTRR.
| style="background:lime" | Works
|CPU_L1_status = OK
| &mdash;
|CPU_L1_comments = 16kiB unified cache (12kiB when X11 is running).
|- bgcolor="#eeeeee" valign="top"
|CPU_L2_status = N/A
| RAM
|CPU_L2_comments = This CPU does not support L2 cache.
| style="background:lime" | Works
|CPU_L3_status = N/A
| &mdash;
|CPU_multiple_status = N/A
|- bgcolor="#eeeeee" valign="top"
|CPU_multicore_status = N/A
| IDE
|CPU_virt_status = N/A
| style="background:lime" | Works
 
| &mdash;
|RAM_EDO_status = N/A
|- bgcolor="#eeeeee" valign="top"
|RAM_SDRAM_status = N/A
| IDE using CF-to-IDE adapter
|RAM_SDRAM_comments = No DIMM socket.
| style="background:yellow" | Untested
|RAM_SODIMM_status = OK
| &mdash;
|RAM_SODIMM_comments = Tested with 32MiB, 64MiB and 128MiB modules at 85MHz (CPU core clock / 3,5).
|- bgcolor="#eeeeee" valign="top"
|RAM_DDR_status = N/A
| SATA
|RAM_DDR2_status = N/A
| style="background:lightgray" | N/A
|RAM_DDR3_status = N/A
| &mdash;
|RAM_dualchannel_status = N/A
|- bgcolor="#eeeeee" valign="top"
|RAM_ecc_status = N/A
| USB
 
| style="background:lime" | Works
|IDE_status = N/A
| Tested with '''irqpoll''' kernel parameter. Tested: USB thumb drive.
|IDE_25_status = OK
|- bgcolor="#eeeeee" valign="top"
|IDE_25_comments = Tested with 2.5" disk.
| On-board ethernet
|IDE_CF_status = OK
| style="background:lime" | Works
|IDE_CF_comments = Works both with vendor BIOS and LinuxBIOS.
| Tested with '''irqpoll''' kernel parameter.
|CDROM_DVD_status = Untested
|- bgcolor="#eeeeee" valign="top"
 
| On-board audio
|SATA_status = N/A
| style="background:yellow" | Untested
|USB_status = OK
| &mdash;
|USB_comments = Tested with '''irqpoll''' kernel parameter. Tested: USB thumb drive.
|- bgcolor="#eeeeee" valign="top"
|Onboard_VGA_status = OK
| On-board VGA
|Onboard_VGA_comments = VGA support in LinuxBIOS works fine (e.g. for displaying a boot logo), for console/X11 you need a special kernel console and Xorg driver.
| style="background:yellow" | Untested
|Onboard_ethernet_status = OK
| &mdash;
|Onboard_ethernet_comments = Tested with '''irqpoll''' kernel parameter.
|- bgcolor="#eeeeee" valign="top"
|Onboard_audio_status = OK
| PCI add-on cards
|Onboard_audio_comments = Tested with a special realtime SMI polling (no regular IRQs from the audio hardware) and Kahlua ALSA driver.
| style="background:lightgray" | N/A
|Onboard_modem_status = N/A
| &mdash;
|Onboard_firewire_status = N/A
|- bgcolor="#eeeeee" valign="top"
|Smartcard_status = Unknown
| PCI Express add-on cards
|Smartcard_comments = Probably won't work in Linux as there are no public datasheets [http://www.linuxbios.org/pipermail/linuxbios/2007-October/025800.html].
| style="background:lightgray" | N/A
|Onboard_CF_status = N/A
| &mdash;
|Onboard_PCMCIA_status = N/A
|- bgcolor="#eeeeee" valign="top"
 
| Floppy
|ISA_cards_status = N/A
| style="background:yellow" | Untested
|AMR_cards_status = N/A
| &mdash;
|PCI_cards_status = N/A
|- bgcolor="#eeeeee" valign="top"
|AGP_cards_status = N/A
| Serial port (COM1)
|PCIE_x1_status = N/A
| style="background:lime" | Works
|PCIE_x2_status = N/A
| &mdash;
|PCIE_x4_status = N/A
|- bgcolor="#eeeeee" valign="top"
|PCIE_x8_status = N/A
| Serial port (COM2)
|PCIE_x16_status = N/A
| style="background:lightgray" | N/A
|PCIE_x32_status = N/A
| &mdash;
|HTX_status = N/A
|- bgcolor="#eeeeee" valign="top"
 
| Parallel port
|Floppy_status = N/A
| style="background:yellow" | Untested
|COM1_status = OK
| &mdash;
|COM2_status = Unknown
|- bgcolor="#eeeeee" valign="top"
|COM2_comments = Simple UART mode only (due to TTL level, used by the smartcard reader). LinuxBIOS enables COM2, but that's about it.
| PS/2 keyboard
|PP_status = OK
| style="background:yellow" | Untested
|PP_comments = Running '''modprobe ppdev''' works fine, but further tests were not done, yet.
| &mdash;
|PS2_keyboard_status = OK
|- bgcolor="#eeeeee" valign="top"
|PS2_mouse_status = OK
| PS/2 mouse
|Game_port_status = N/A
| style="background:yellow" | Untested
|IR_status = N/A
| &mdash;
|Speaker_status = WIP
|- bgcolor="#eeeeee" valign="top"
|Speaker_comments = Doesn't seem to work on LinuxBIOS, not even after '''modprobe pcspkr''' (maybe unmute required?). TODO: Check if it works with SMI polling driver.
| Mainboard sensors/fans
|DiskOnChip_status = Untested
| style="background:yellow" | Untested
|DiskOnChip_comments = Might work using '''mtd-tools'''. [[Flashrom]] has some alpha-level support too, but it's unsupported and can only write (not read) the DoC, AFAICS.
| Does the board have some?
 
|- bgcolor="#eeeeee" valign="top"
|Sensors_status = N/A
| CPU frequency scaling / powersave modes
|Sensors_comments = This CPU does not need a fan.
| style="background:lightgray" | N/A
|Watchdog_status = N/A
| I doubt the GX1 supports that (need to check, though).
|CAN_bus_status = N/A
|- bgcolor="#eeeeee" valign="top"
|CPUfreq_status = OK
| [[Flashrom]]
|CPUfreq_comments = Frequency scaling on this CPU is useless. Stop clock on HLT saves more power (enabled by Linux as default).
| style="background:lime" | Works
|Powersave_status = WIP
| Works fine, both with LinuxBIOS and with the proprietary BIOS.
|Powersave_comments = Hardware supports dozens of such features, but someone must write the software to control them.
|- bgcolor="#eeeeee" valign="top"
|ACPI_status = N/A
| VGA at boot-time
 
| style="background:lime" | Works
|Reboot_status = OK
| LinuxBIOS logo is displayed just fine.
|Reboot_comments = Linux supports this chipset to force a hard reset.
|- bgcolor="#eeeeee" valign="top"
|Poweroff_status = WIP
| X11
|Poweroff_comments = Doesn't work yet, neither on vendor BIOS nor LinuxBIOS. Could be done in the Super-I/O but needs a piece of software to do so.
| style="background:yellow" | Untested
|LEDs_status = N/A
| &mdash;
|HPET_status = N/A
|}
|RNG_status = N/A
|WakeOnModem_status = N/A
|WakeOnModem_comments = Probably not feasible, there's no connector available, and no PCI/ISA to attach external modems.
|WakeOnLAN_status = OK
|WakeOnLAN_comments = Works fine with '''wakeonlan xx:xx:xx:xx:xx:xx''' (supplying the MAC address of the onboard ethernet device), both on vendor BIOS and LinuxBIOS. WOL seems to be implemented completely in hardware on this board, thus no special LinuxBIOS support is required.
|WakeOnKeyboard_status = N/A
|WakeOnKeyboard_comments = Doesn't seem to be supported by the Super I/O, and there's no BIOS menu to check/enable this feature.
|WakeOnMouse_status = N/A
|WakeOnMouse_comments = Doesn't seem to be supported by the Super I/O, and there's no BIOS menu to check/enable this feature.
|Flashrom_status = OK
|Flashrom_comments = Works fine, both with LinuxBIOS and with the proprietary BIOS.
 
}}


== Hardware ==
== Hardware ==
Line 103: Line 111:
{| style="float: right; background: transparent; padding: 0px; margin: 0px;"
{| style="float: right; background: transparent; padding: 0px; margin: 0px;"
|- valign="top"
|- valign="top"
| [[Image:Igel_winnet100_1.png|thumb|The IGEL-316 (WinNET 100) thin client.]]
| [[Image:Igel_winnet100_1.jpg|thumb|The IGEL-316 (WinNET 100) thin client.]]
| [[Image:Igel_winnet100_2.jpg|thumb|The backpanel.]]
| [[Image:Igel_winnet100_2.jpg|thumb|The backpanel.]]
|- valign="top"
|- valign="top"
| [[Image:Igel_winnet100_3.jpg|thumb|The mainboard.]]
| [[Image:Igel_winnet100_3.jpg|thumb|The mainboard.]]
|}
|}
=== Overview ===


* '''GX1-300B-85-20''' Cyrix/National/AMD CPU with 300MHz core clock
* '''GX1-300B-85-20''' Cyrix/National/AMD CPU with 300MHz core clock
Line 113: Line 123:
* '''PC97317''' Super I/O
* '''PC97317''' Super I/O
* '''RTL8139C''' Realtec network controller
* '''RTL8139C''' Realtec network controller
* '''39F020A''' PLCC32 256kiB flash memory to boot
* '''SST 39F020A''' or '''SST 39SF020A''' or '''MX 29F002NT''' PLCC32 256kiB flash memory to boot (in a socket)
* '''LM4546''' National, AC97 AD/DA
* '''LM4546''' National, AC97 AD/DA
* '''DOC2000''' DIL32 16MiB DiskOnChip
* '''DOC2000''' DIL32 16MiB DiskOnChip (MD2202-D16), in a socket
* '''SDRAM''' 32MiB SDRAM with 133MHz/CL2 capability as SO-DIMM
* '''SDRAM''' 32MiB SDRAM with 133MHz/CL2 capability as SO-DIMM
* '''IMT-S001-1''' smart card chip
=== Connectors ===


== Connectors (internal and external) ==
External:


* 1x PS/2 keyboard  
* 1x PS/2 keyboard  
Line 127: Line 140:
* 1x DSUB15 VGA analogue
* 1x DSUB15 VGA analogue
* 1x RJ45
* 1x RJ45
* Audio: Line-in, line-out, Mic
* Audio: stereo line-in, stereo line-out, mic (+ mono built-in speaker)
 
Internal:
* 1x 44pin 2mm 2.5" harddisk connector
* 1x 44pin 2mm 2.5" harddisk connector
* 1x serial port (COM2), but TTL levels only (used for the smartcard reader)


== Detailed System Information ==
=== Jumpers ===
 
* '''JDOC1''' for setting the DiskOnChip address. 1-2: C800, 2-3: D800, 3-4: DC00. Default: 2-3.
* '''JLAN1''' (hardwired to 1-2, purpose unknown)
* '''JP1'''/'''JP2''': XX: 1.8V / 266MHz, 0X: 2.0V / 300MHz, 00: 2.2V / 333MHz (but see also '''JRD01''')
* '''JPWN1''' for switching the power on and off (simple push-button, controlled via the PC97317 Super I/O)
* '''JRD01''' for setting the CPU clock speed. XXX: 266MHz, X00: 300MHz, 0X0: 333MHz. Default: X00 (but see also '''JP1'''/'''JP2''')
* '''JRTC1''' for clearing CMOS. 1-2: clean, 2-3: normal. Default: 2-3.
 
<small>(X means empty, 0 means there's a jumper on that pin)</small>
 
<small>
<gallery widths="100px" heights="100px" perrow="6">
Image:JDOC1.jpg|<small>JDOC1</small>
Image:JLAN1.jpg|<small>JLAN1</small>
Image:JP1JP2.jpg|<small>JP1/JP2</small>
Image:JPWN1.jpg|<small>JPWN1</small>
Image:JRD01.jpg|<small>JRD01</small>
Image:JRTC1.jpg|<small>JRTC1</small>
</gallery>
</small>
 
=== Detailed System Information ===


'''Block diagram'''
'''Block diagram'''
Line 138: Line 176:
The following information was gathered on a running Linux 2.6.21 system, booted via LinuxBIOS:
The following information was gathered on a running Linux 2.6.21 system, booted via LinuxBIOS:


'''lspci -tv'''
'''lspci -tvnn'''


  -[0000:00]-+-00.0  Cyrix Corporation PCI Master
  -[0000:00]-+-00.0  Cyrix Corporation PCI Master [1078:0001]
             +-0f.0  Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
             +-0f.0  Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ [10ec:8139]
             +-12.0  Cyrix Corporation 5530 Legacy [Kahlua]
             +-12.0  Cyrix Corporation 5530 Legacy [Kahlua] [1078:0100]
             +-12.1  Cyrix Corporation 5530 SMI [Kahlua]
             +-12.1  Cyrix Corporation 5530 SMI [Kahlua] [1078:0101]
             +-12.2  Cyrix Corporation 5530 IDE [Kahlua]
             +-12.2  Cyrix Corporation 5530 IDE [Kahlua] [1078:0102]
             +-12.3  Cyrix Corporation 5530 Audio [Kahlua]
             +-12.3  Cyrix Corporation 5530 Audio [Kahlua] [1078:0103]
             +-12.4  Cyrix Corporation 5530 Video [Kahlua]
             +-12.4  Cyrix Corporation 5530 Video [Kahlua] [1078:0104]
             \-13.0  Compaq Computer Corporation ZFMicro Chipset USB
             \-13.0  Compaq Computer Corporation ZFMicro Chipset USB [0e11:a0f8]


'''/proc/cpuinfo'''
'''/proc/cpuinfo'''
Line 204: Line 242:
  febff000-febff07f : 0000:00:12.3
  febff000-febff07f : 0000:00:12.3
  fffc0000-ffffffff : flash_memory.0
  fffc0000-ffffffff : flash_memory.0
== Building a coreboot image ==
See the [[Build HOWTO]] for information on how to build coreboot for this board.


== Using the hardware with a current kernel ==
== Using the hardware with a current kernel ==
Line 210: Line 252:
The small patch below solves this issue (it was rejected in mainline as it breaks various standard BIOS based Geode systems, as they were shipped with broken PIRQ tables [http://lkml.org/lkml/2006/11/24/47]).
The small patch below solves this issue (it was rejected in mainline as it breaks various standard BIOS based Geode systems, as they were shipped with broken PIRQ tables [http://lkml.org/lkml/2006/11/24/47]).


== How to bring LinuxBIOS in ==
Since kernel 2.6.23 Geode chipset access macros are now working as expected. Due to this, some chipset tweaks embedded in the kernel are working now. One of these tweaks setup the performance incrementor for a 233MHz CPU. This may fail on a 300MHz CPU now (additionally it depends on the SDRAM speed). The symptom of this failure is a freezing system after running a while (after warm up). Take a look into '''arch/i386/kernel/cpu/cyrix.c''', function '''set_cx86_inc()'''. Correct the setting to:
setCx86(CX86_PCR0, getCx86(CX86_PCR0) | 0x05);
when you run a 300MHz CPU.
 
== How to bring coreboot in ==


I was not successful to boot anything other than the software in the DoC to get some information about this board. It seems a very special BIOS as it only outputs "booting os" and nothing else. Then the splash screen comes up and the graphical environment starts.
I was not successful to boot anything other than the software in the DoC to get some information about this board. It seems a very special BIOS as it only outputs "booting os" and nothing else. Then the splash screen comes up and the graphical environment starts.
Line 219: Line 265:
As is it hard to get a console on this system with the original software, I found no way to reprogram the boot flash in a running system. But it is very easy to disassemble the flash memory. Only 3 screws to unscrew at the reverse.
As is it hard to get a console on this system with the original software, I found no way to reprogram the boot flash in a running system. But it is very easy to disassemble the flash memory. Only 3 screws to unscrew at the reverse.


Pull the front panel to one side, the casing to the other. Done. You now have access to all relevant parts.
{|
|- valign="top"
[[Image:winnet_open_the_case.jpg|How to open the case]]
[[Image:winnet_open_the_case.jpg|How to open the case]]
 
|- valign="top"
Pull the front panel to one side, the casing to the other. Ready. You now have access to all relevant parts.
 
[[Image:winnet_open_case.jpg|Access to all relevant parts]]
[[Image:winnet_open_case.jpg|Access to all relevant parts]]
|}


To disassemble the PLCC32 boot flash ROM you need something with a hook. I'm using my SMD tweezer. Did I mention that you will need something to burn your flash?
To disassemble the PLCC32 boot flash ROM you need something with a hook. I'm using my SMD tweezer. Did I mention that you will need something to burn your flash?
Line 231: Line 280:
This question is easy to answer. Download the following archives:
This question is easy to answer. Download the following archives:


* [http://www.pengutronix.de/software/geode/OSELAS.BSP-JB-GeoTerm-2.tgz Board Support Package (BSP)]
* [http://www.pengutronix.de/software/geode/OSELAS.BSP-JB-GeoTerm-3.tgz Board Support Package (BSP)]
* [http://www.pengutronix.de/software/ptxdist/download/v1.0/ptxdist-1.0.0.tgz Build System]
* [http://www.pengutronix.de/software/ptxdist/download/v1.0/ptxdist-1.0.2.tgz Build System]
* [http://www.pengutronix.de/software/ptxdist/download/v1.0/ptxdist-1.0.0-patches.tgz Patch package]
* [http://www.pengutronix.de/software/ptxdist/download/v1.0/ptxdist-1.0.2-patches.tgz Patch package]
* [http://www.pengutronix.de/software/ptxdist/download/v1.0/ptxdist-1.0.0-projects.tgz Generic projects package]
* [http://www.pengutronix.de/software/ptxdist/download/v1.0/ptxdist-1.0.0-projects.tgz Generic projects package]
* [http://www.pengutronix.de/oselas/toolchain/download/OSELAS.Toolchain-1.1.0.tar.bz2 Toolchain package]
* [http://www.pengutronix.de/oselas/toolchain/download/OSELAS.Toolchain-1.1.1.tar.bz2 Toolchain package]


Start with the BSP, extract it and read the quickstart in Documentation/GeoTerm-Quickstart.pdf. It will guide you through the steps that are required to:
Start with the BSP, extract it and read the quickstart in Documentation/GeoTerm-Quickstart.pdf. It will guide you through the steps that are required to:
Line 242: Line 291:
* get a cross toolchain for the Geode GX1,
* get a cross toolchain for the Geode GX1,
* configure the BSP and build it,
* configure the BSP and build it,
* bring this target up and running with LinusBIOS and GNU/Linux.
* bring this target up and running with coreboot and GNU/Linux.


The BSP builds all parts to run this Geode GX1 system. This includes LinuxBIOS and the kernel and also userland with X to run as a terminal (not as host!).  
The BSP builds all parts to run this Geode GX1 system. This includes coreboot (LinuxBIOS) and the kernel and also userland with X to run as a terminal (not as host!).  


Note: This BSP includes all required patches for the kernel. You won't need the patches below.
Note: This BSP includes all required patches for the kernel. You won't need the patches below.

Latest revision as of 23:21, 18 January 2014

The BCOM WinNET100 mainboard was sold by IGEL some years ago as their product IGEL-316. Their product was a Linux based terminal to work remotely with Windows and X. The hardware is still available nowadays via eBay for ca. 30-40 Euros.

Status

Device/functionality Status Comments
CPU
CPU works OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Geode GX1, Pentium 1 like, MMX support, no MTRR.
L1 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK 16kiB unified cache (12kiB when X11 is running).
L2 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A This CPU does not support L2 cache.
L3 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Multiple CPU support OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Multi-core support OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Hardware virtualization OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
RAM
EDO OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
SDRAM OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A No DIMM socket.
SO-DIMM OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Tested with 32MiB, 64MiB and 128MiB modules at 85MHz (CPU core clock / 3,5).
DDR OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
DDR2 OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
DDR3 OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Dual channel support OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
ECC support OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board Hardware
On-board IDE 3.5" OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board IDE 2.5" OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Tested with 2.5" disk.
On-board SATA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board SCSI OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
On-board USB OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Tested with irqpoll kernel parameter. Tested: USB thumb drive.
On-board VGA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK VGA support in LinuxBIOS works fine (e.g. for displaying a boot logo), for console/X11 you need a special kernel console and Xorg driver.
On-board Ethernet OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Tested with irqpoll kernel parameter.
On-board Audio OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Tested with a special realtime SMI polling (no regular IRQs from the audio hardware) and Kahlua ALSA driver.
On-board Modem OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board FireWire OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board Smartcard reader OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown Probably won't work in Linux as there are no public datasheets [1].
On-board CompactFlash OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board PCMCIA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board Wifi OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board Bluetooth OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board SD card reader OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Add-on slots/cards
ISA add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Audio/Modem-Riser (AMR/CNR) cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Mini-PCI add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
Mini-PCI-Express add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
PCI-X add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
AGP graphics cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI Express x1 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI Express x2 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI Express x4 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI Express x8 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI Express x16 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI Express x32 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
HTX add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Legacy / Super I/O
Floppy OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Serial port 1 (COM1) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Serial port 2 (COM2) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown Simple UART mode only (due to TTL level, used by the smartcard reader). LinuxBIOS enables COM2, but that's about it.
Parallel port OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Running modprobe ppdev works fine, but further tests were not done, yet.
PS/2 keyboard OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
PS/2 mouse OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Game port OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Infrared OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PC speaker OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | WIP Doesn't seem to work on LinuxBIOS, not even after modprobe pcspkr (maybe unmute required?). TODO: Check if it works with SMI polling driver.
DiskOnChip OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested Might work using mtd-tools. Flashrom has some alpha-level support too, but it's unsupported and can only write (not read) the DoC, AFAICS.
Input
Trackpoint OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Touchpad OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Fn Hotkeys OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Fingerprint Reader OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Laptop
Docking VGA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Docking LAN OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Docking USB OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Docking Audio OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Docking Displayport OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Thinklight OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Webcam OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Miscellaneous
Sensors / fan control OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A This CPU does not need a fan.
Hardware watchdog OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
SMBus OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
CAN bus OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
CPU frequency scaling OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Frequency scaling on this CPU is useless. Stop clock on HLT saves more power (enabled by Linux as default).
Other powersaving features OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | WIP Hardware supports dozens of such features, but someone must write the software to control them.
ACPI OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Reboot OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Linux supports this chipset to force a hard reset.
Poweroff OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | WIP Doesn't work yet, neither on vendor BIOS nor LinuxBIOS. Could be done in the Super-I/O but needs a piece of software to do so.
Suspend OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
Nonstandard LEDs OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
High precision event timers (HPET) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Random number generator (RNG) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Wake on modem ring OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A Probably not feasible, there's no connector available, and no PCI/ISA to attach external modems.
Wake on LAN OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Works fine with wakeonlan xx:xx:xx:xx:xx:xx (supplying the MAC address of the onboard ethernet device), both on vendor BIOS and LinuxBIOS. WOL seems to be implemented completely in hardware on this board, thus no special LinuxBIOS support is required.
Wake on keyboard OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A Doesn't seem to be supported by the Super I/O, and there's no BIOS menu to check/enable this feature.
Wake on mouse OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A Doesn't seem to be supported by the Super I/O, and there's no BIOS menu to check/enable this feature.
TPM OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
Flashrom OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Works fine, both with LinuxBIOS and with the proprietary BIOS.

Hardware

The IGEL-316 (WinNET 100) thin client.
The backpanel.
The mainboard.

Overview

  • GX1-300B-85-20 Cyrix/National/AMD CPU with 300MHz core clock
  • CS5530A-UCE part of the chipset, Cyrix/National/AMD companion device
  • PC97317 Super I/O
  • RTL8139C Realtec network controller
  • SST 39F020A or SST 39SF020A or MX 29F002NT PLCC32 256kiB flash memory to boot (in a socket)
  • LM4546 National, AC97 AD/DA
  • DOC2000 DIL32 16MiB DiskOnChip (MD2202-D16), in a socket
  • SDRAM 32MiB SDRAM with 133MHz/CL2 capability as SO-DIMM
  • IMT-S001-1 smart card chip

Connectors

External:

  • 1x PS/2 keyboard
  • 1x PS/2 mouse
  • 1x serial port (COM1)
  • 1x parallel port
  • 2x USB (OHCI)
  • 1x DSUB15 VGA analogue
  • 1x RJ45
  • Audio: stereo line-in, stereo line-out, mic (+ mono built-in speaker)

Internal:

  • 1x 44pin 2mm 2.5" harddisk connector
  • 1x serial port (COM2), but TTL levels only (used for the smartcard reader)

Jumpers

  • JDOC1 for setting the DiskOnChip address. 1-2: C800, 2-3: D800, 3-4: DC00. Default: 2-3.
  • JLAN1 (hardwired to 1-2, purpose unknown)
  • JP1/JP2: XX: 1.8V / 266MHz, 0X: 2.0V / 300MHz, 00: 2.2V / 333MHz (but see also JRD01)
  • JPWN1 for switching the power on and off (simple push-button, controlled via the PC97317 Super I/O)
  • JRD01 for setting the CPU clock speed. XXX: 266MHz, X00: 300MHz, 0X0: 333MHz. Default: X00 (but see also JP1/JP2)
  • JRTC1 for clearing CMOS. 1-2: clean, 2-3: normal. Default: 2-3.

(X means empty, 0 means there's a jumper on that pin)

Detailed System Information

Block diagram

The following information was gathered on a running Linux 2.6.21 system, booted via LinuxBIOS:

lspci -tvnn

-[0000:00]-+-00.0  Cyrix Corporation PCI Master [1078:0001]
           +-0f.0  Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ [10ec:8139]
           +-12.0  Cyrix Corporation 5530 Legacy [Kahlua] [1078:0100]
           +-12.1  Cyrix Corporation 5530 SMI [Kahlua] [1078:0101]
           +-12.2  Cyrix Corporation 5530 IDE [Kahlua] [1078:0102]
           +-12.3  Cyrix Corporation 5530 Audio [Kahlua] [1078:0103]
           +-12.4  Cyrix Corporation 5530 Video [Kahlua] [1078:0104]
           \-13.0  Compaq Computer Corporation ZFMicro Chipset USB [0e11:a0f8]

/proc/cpuinfo

processor       : 0
vendor_id       : Geode by NSC
cpu family      : 5
model           : 9
model name      : Geode(TM) Integrated Processor by National Semi
stepping        : 2
cpu MHz         : 300.691
cache size      : 16 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu tsc msr cx8 cmov mmx cxmmx
bogomips        : 602.14
clflush size    : 32

/proc/iomem

00000000-000006d3 : reserved
000006d4-0009ffff : System RAM
000a0000-000bffff : Video RAM area
000f0000-000fffff : System ROM
00100000-01bfffff : System RAM
  00100000-00253ad9 : Kernel code
  00253ada-002a5f2b : Kernel data
40000000-40000fff : scratch_pad_ram
  40000000-40000fff : Geode GX1 Framebuffer
40008000-400080ff : bus_interface
  40008000-400080ff : Geode GX1 Bus Interface
40008100-400082ff : video_pipeline
  40008100-400082ff : Geode GX1 Framebuffer
40008300-400083ff : display_control
  40008300-400083ff : Geode GX1 Framebuffer
40008400-400084ff : memory_control
  40008400-400084ff : Geode GX1 Memory Control
40008500-40008fff : power_control.0
40400000-407fffff : smm_area.0
40800000-487fffff : video_memory
  40800000-487fffff : Geode GX1 Framebuffer
febfb000-febfbfff : 0000:00:12.4
  febfb000-febfbfff : Geode GX1 Framebuffer
febfc000-febfcfff : 0000:00:13.0
  febfc000-febfcfff : ohci_hcd
febfd000-febfd0ff : 0000:00:0f.0
  febfd000-febfd0ff : 8139too
febfe000-febfe0ff : 0000:00:12.1
  febfe000-febfe0ff : CS5530a (Kahlua) SMI handler
febff000-febff07f : 0000:00:12.3
fffc0000-ffffffff : flash_memory.0

Building a coreboot image

See the Build HOWTO for information on how to build coreboot for this board.

Using the hardware with a current kernel

The current 2.6.22/23 kernel does not know the CS5530 interrupt router. So it is impossible to let the kernel itself setup PCI's interrupt routing. Even if you provide the kernel with a valid interrupt routing table (PIRQ). No interrupts will work as the interrupt routing registers are still left at their reset values. The small patch below solves this issue (it was rejected in mainline as it breaks various standard BIOS based Geode systems, as they were shipped with broken PIRQ tables [2]).

Since kernel 2.6.23 Geode chipset access macros are now working as expected. Due to this, some chipset tweaks embedded in the kernel are working now. One of these tweaks setup the performance incrementor for a 233MHz CPU. This may fail on a 300MHz CPU now (additionally it depends on the SDRAM speed). The symptom of this failure is a freezing system after running a while (after warm up). Take a look into arch/i386/kernel/cpu/cyrix.c, function set_cx86_inc(). Correct the setting to:

setCx86(CX86_PCR0, getCx86(CX86_PCR0) | 0x05);

when you run a 300MHz CPU.

How to bring coreboot in

I was not successful to boot anything other than the software in the DoC to get some information about this board. It seems a very special BIOS as it only outputs "booting os" and nothing else. Then the splash screen comes up and the graphical environment starts. One or two times I was successful to run an update of this firmware. Because the update process fails (the server it tries to connect to doesn't answer anymore), the console comes up. That's why I know they run a 2.4 kernel with an XFree86 3.x. Their software needs about one and a half minute to boot up and supports graphical resolutions up to XGA@64k colours and SXGA@256 colours.

With my own implementation (LinuxBIOSv2, Linux 2.6.2x kernel, Xorg 7.2) I boot this machine in about 10 seconds, then the xdm dialogue occures (its a terminal, not a workstation) and supports also SXGA@64k colours.

As is it hard to get a console on this system with the original software, I found no way to reprogram the boot flash in a running system. But it is very easy to disassemble the flash memory. Only 3 screws to unscrew at the reverse.

Pull the front panel to one side, the casing to the other. Done. You now have access to all relevant parts.

How to open the caseAccess to all relevant parts

To disassemble the PLCC32 boot flash ROM you need something with a hook. I'm using my SMD tweezer. Did I mention that you will need something to burn your flash?

How to build a root filesystem

This question is easy to answer. Download the following archives:

Start with the BSP, extract it and read the quickstart in Documentation/GeoTerm-Quickstart.pdf. It will guide you through the steps that are required to:

  • get a generic project build system,
  • get a cross toolchain for the Geode GX1,
  • configure the BSP and build it,
  • bring this target up and running with coreboot and GNU/Linux.

The BSP builds all parts to run this Geode GX1 system. This includes coreboot (LinuxBIOS) and the kernel and also userland with X to run as a terminal (not as host!).

Note: This BSP includes all required patches for the kernel. You won't need the patches below.

Required patches

When you build your own kernel for this target you might need the following patches:

  • This patch is needed to let Linux know the Cyrix 5530 interrupt router.
  • This patch is needed as someone has overoptimised chipset tweaks so the used access macros failed. This patch is required only for kernels up to 2.6.22. From Linux 2.6.23 on it's part of mainline.
Creative Commons License
Creative Commons Attribution icon
This file is licensed under Creative Commons Attribution 2.5 License.
In short: you are free to distribute and modify the file as long as you attribute its author(s) or licensor(s).