Board:advantech/pcm-5820: Difference between revisions

From coreboot
Jump to navigation Jump to search
(preliminary work)
 
 
(20 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Advantech sold a motherboard made to meet the industrial needs.
The '''[http://www.advantech.com.tw/epc/newsletter/v27-07-01_00/PCM-5820%20.htm Advantech PCM-5820] ([http://www.advantech.com/applied/products/PCM-5820_ds.pdf PDF])''' features a Cyrix GX1 processor, 2 IDE controllers (one is a CompactFlash reader), a USB port and a PC/104 extension bus.
It features a Cyrix GX1 processor, 2 ide controller (One is a Compact Flash Reader), an usb port and a PC104 extension bus.
Complete specs/docs can be found on [ http://taiwan.advantech.com.tw/products/Model_Detail.asp?model_id=1-1TGZL8&BU=ACG&PD= advantech website ]


== Status ==
== Status ==
Line 8: Line 6:


|CPU_status = OK
|CPU_status = OK
|CPU_comments =  
|CPU_L1_status = OK
 
|CPU_L2_status =
|RAM_status = OK
|CPU_L3_status = N/A
|RAM_comments =  
|CPU_multiple_status = N/A
|CPU_multicore_status = N/A
|CPU_virt_status = N/A


|RAM_EDO_status = N/A
|RAM_SDRAM_status = N/A
|RAM_SODIMM_status = OK
|RAM_SODIMM_comments = My 256MB 100MHz memory module is working fine.
|RAM_DDR_status = N/A
|RAM_DDR2_status = N/A
|RAM_DDR3_status = N/A
|RAM_dualchannel_status = N/A
|RAM_dualchannel_status = N/A
|RAM_dualchannel_comments =
|RAM_ecc_status = N/A
|RAM_ecc_status = N/A
|RAM_ecc_comments =


|IDE_status = Untested
|IDE_status = Untested
|IDE_comments =
|IDE_25_status = N/A
|IDE_25_status = N/A
|IDE_25_comments =
|IDE_CF_status = OK
|IDE_CF_comments =
|DiskOnChip_status = N/A
|DiskOnChip_comments =
|SATA_status = N/A
|SATA_status = N/A
|SATA_comments =
|Onboard_SCSI_status = N/A
 
|USB_status = OK
|USB_status = OK
|USB_comments = Tested with an Happauge WinTv-USB
|USB_comments = Tested with an Hauppauge WinTv-USB device.
 
|Onboard_VGA_status = OK
|Onboard_VGA_status = OK
|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.
|Onboard_VGA_comments = VGA support in coreboot works fine (e.g. for displaying a boot logo), for console/X11 you need a special kernel console and Xorg driver.
 
|Onboard_ethernet_status = OK
|Onboard_ethernet_status = OK
|Onboard_ethernet_comments =
|Onboard_audio_status = Untested
|Onboard_audio_status = Untested
|Onboard_audio_comments =
|Onboard_modem_status = N/A
 
|Onboard_firewire_status = N/A
|Onboard_firewire_status = N/A
|Onboard_firewire_comments =
|Smartcard_status = N/A
|Onboard_CF_status = OK
|Onboard_CF_comments = DMA is not working. This sounds to be hardware related, as this behave the same with the original BIOS and several brands of CF cards. You need to boot the Linux kernel with '''ide=nodma''' to workaround this.
|Onboard_PCMCIA_status = N/A


|ISA_cards_status = N/A
|ISA_cards_status = N/A
|ISA_cards_comments =  
|AMR_cards_status = N/A
 
|AGP_cards_status = N/A
|PCI_cards_status = N/A
|PCI_cards_status = N/A
|PCI_cards_comments =
|PCIX_cards_status = N/A
 
|AGP_cards_status = N/A
|AGP_cards_comments =
 
|PCIE_cards_status = N/A
|PCIE_cards_comments =
 
|PCIE_x1_status = N/A
|PCIE_x1_status = N/A
|PCIE_x1_comments =
|PCIE_x2_status = N/A
|PCIE_x2_status = N/A
|PCIE_x2_comments =
|PCIE_x4_status = N/A
|PCIE_x4_status = N/A
|PCIE_x4_comments =
|PCIE_x8_status = N/A
|PCIE_x8_status = N/A
|PCIE_x8_comments =
|PCIE_x16_status = N/A
|PCIE_x16_status = N/A
|PCIE_x16_comments =
|PCIE_x32_status = N/A
|PCIE_x32_status = N/A
|PCIE_x32_comments =
|HTX_status = N/A
|HTX_status = N/A
|HTX_comments =


|Floppy_status = Untested
|Floppy_status = Untested
|Floppy_comments =
|COM1_status = OK
|COM1_status = OK
|COM1_comments =
|COM2_status = Untested  
|COM2_status = Untested  
|COM2_comments =
|PP_status = Untested
|PP_status = Untested
|PP_comments =
|PS2_keyboard_status = OK
|PS2_keyboard_status = OK
|PS2_keyboard_comments =
|PS2_mouse_status = Untested
|PS2_mouse_status = Untested
|PS2_mouse_comments =
|Game_port_status = N/A
|IR_status = Untested
|IR_comments = I don't own the module that should be plugged on COM2.
|Speaker_status = OK
|DiskOnChip_status = N/A


|Sensors_status = Untested
|Sensors_status = Untested
|Sensors_comments = This CPU does not need a fan.
|Sensors_comments = This CPU does not need a fan.
 
|Watchdog_status = N/A
|CAN_bus_status = OK
|CAN_bus_comments = Tested with an [http://www.arcom.com/products/icp/pc104/modules/AIMcan1.htm AIM104-CAN] card.
|CPUfreq_status = Untested
|CPUfreq_status = Untested
|CPUfreq_comments =  
|Powersave_status = Untested
 
|ACPI_status = No
|Smartcard_status = N/A
|ACPI_comments = No ACPI impelmentation available for this board.
|Smartcard_comments =  
|Reboot_status = OK
 
|Poweroff_status = Untested
 
|LEDs_status = N/A
|HPET_status = N/A
|RNG_status = N/A
|WakeOnModem_status = Untested
|WakeOnLAN_status = Untested
|WakeOnKeyboard_status =  Untested
|WakeOnMouse_status =  Untested
|Flashrom_status = OK
|Flashrom_status = OK
|Flashrom_comments = Works fine, both with LinuxBIOS and with the proprietary BIOS. Note that ST39VF020-70-4C-NHE worked on it even if it's not recommended
|Flashrom_comments = Works fine, both with coreboot and with the proprietary BIOS. Note that a '''ST39VF020-70-4C-NHE''' chip worked on it even though it's not recommended.


}}
}}
Line 119: Line 92:
{| style="float: right; background: transparent; padding: 0px; margin: 0px;"
{| style="float: right; background: transparent; padding: 0px; margin: 0px;"
|- valign="top"
|- valign="top"
| [[Image:PCM-5820photo_S.jpg|thumb|The mainboard.]]
| [[Image:PCM-5820.jpg|thumb|The PCM-5820 board]]
| [[Image:AIM-PC104.jpg|thumb|The AIM-PC104 module used to validate the CAN bus]]
|}
|}
=== 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.
<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 ===
=== Detailed System Information ===
'''Block diagram'''
[[Image:schaubild.png]]
The following information was gathered on a running Linux 2.6.21 system, booted via LinuxBIOS:


'''lspci -tvnn'''
'''lspci -tvnn'''
  -[0000:00]-+-00.0  Cyrix Corporation PCI Master [1078:0001]
  -[0000:00]-+-00.0  Cyrix Corporation PCI Master [1078:0001]
             +-0f.0  Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ [10ec:8139]
             +-0b.0  Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ [10ec:8139]
             +-12.0  Cyrix Corporation 5530 Legacy [Kahlua] [1078:0100]
             +-12.0  Cyrix Corporation 5530 Legacy [Kahlua] [1078:0100]
             +-12.1  Cyrix Corporation 5530 SMI [Kahlua] [1078:0101]
             +-12.1  Cyrix Corporation 5530 SMI [Kahlua] [1078:0101]
Line 193: Line 109:


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


'''/proc/iomem'''
'''/proc/iomem'''
 
  00001000-0009ffff : System RAM
  00000000-000006d3 : reserved
000006d4-0009ffff : System RAM
  000a0000-000bffff : Video RAM area
  000a0000-000bffff : Video RAM area
  000f0000-000fffff : System ROM
  000f0000-000fffff : System ROM
  00100000-01bfffff : System RAM
  00100000-0fdfffff : System RAM
   00100000-00253ad9 : Kernel code
   00100000-002baff4 : Kernel code
   00253ada-002a5f2b : Kernel data
   002baff5-0033b88b : Kernel data
10000000-100000ff : 0000:00:12.1
  40000000-40000fff : scratch_pad_ram
  40000000-40000fff : scratch_pad_ram
   40000000-40000fff : Geode GX1 Framebuffer
   40000000-40000fff : Geode GX1 Framebuffer
Line 237: Line 151:
  40800000-487fffff : video_memory
  40800000-487fffff : video_memory
   40800000-487fffff : Geode GX1 Framebuffer
   40800000-487fffff : Geode GX1 Framebuffer
  febfb000-febfbfff : 0000:00:12.4
  febfc000-febfcfff : 0000:00:12.4
   febfb000-febfbfff : Geode GX1 Framebuffer
   febfc000-febfcfff : Geode GX1 Framebuffer
  febfc000-febfcfff : 0000:00:13.0
  febfd000-febfdfff : 0000:00:13.0
   febfc000-febfcfff : ohci_hcd
   febfd000-febfdfff : ohci_hcd
febfd000-febfd0ff : 0000:00:0f.0
  febfe000-febfe0ff : 0000:00:0b.0
  febfd000-febfd0ff : 8139too
   febfe000-febfe0ff : 8139too
  febfe000-febfe0ff : 0000:00:12.1
   febfe000-febfe0ff : CS5530a (Kahlua) SMI handler
  febff000-febff07f : 0000:00:12.3
  febff000-febff07f : 0000:00:12.3
  fffc0000-ffffffff : flash_memory.0
  fffc0000-ffffffff : flash_memory.0


== Building a LinuxBIOS image ==
'''/proc/interrupts'''
 
            CPU0     
$ cd targets
  0:     183986    XT-PIC-XT        timer
$ ./buildtarget bcom/winnet100
  1:         2   XT-PIC-XT        i8042
$ cd bcom/winnet100/winnet100
  2:          0    XT-PIC-XT        cascade
$ LANG=C make
  4:         91    XT-PIC-XT        serial
 
  8:         1    XT-PIC-XT        rtc
The '''LANG=C''' is only for those users (like me) that uses a localised system. Determining some include pathes fails in LB's build system, if the GCC answers in German...
  10:       584    XT-PIC-XT        eth0
 
  11:         0   XT-PIC-XT        ohci_hcd:usb1
== Using the hardware with a current kernel ==
  12:         3    XT-PIC-XT        i8042
 
  15:       3541    XT-PIC-XT        ide1
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.
NMI:         0  
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]).
ERR:         0
 
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 LinuxBIOS 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.
 
{|
|- valign="top"
[[Image:winnet_open_the_case.jpg|How to open the case]]
|- valign="top"
[[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?
 
== How to build a root filesystem ==
 
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/ptxdist/download/v1.0/ptxdist-1.0.0.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.0-projects.tgz Generic projects package]
* [http://www.pengutronix.de/oselas/toolchain/download/OSELAS.Toolchain-1.1.0.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:
 
* 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 LinusBIOS 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!).
 
Note: This BSP includes all required patches for the kernel. You won't need the patches below.


== Required patches ==
== Required patches ==


When you build your own kernel for this target you might need the following patches:
<pre>
 
--- linux-2.6.22.orig/arch/i386/kernel/cpu/cyrix.c
* This [http://www.pengutronix.de/software/ptxdist/temporary-src/references/geode-5530.patch patch] is needed to let Linux know the Cyrix 5530 interrupt router.
+++ linux-2.6.22/arch/i386/kernel/cpu/cyrix.c
* This [http://www.pengutronix.de/software/ptxdist/temporary-src/references/setup_correct_chipset_access_functions.patch 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.
@@ -178,6 +178,21 @@ static void __cpuinit set_cx86_inc(void)
setCx86(CX86_CCR3, ccr3); /* disable MAPEN */
}
+#ifdef CONFIG_DISABLE_INTERNAL_REGISTERS
+static void __cpuinit disable_internal_chipset(void)
+{
+ printk(KERN_INFO "Disable integrated function access.\n");
+ /*
+ * this disables the integrated function memory area
+ *  - disables the scratch pad - full cache is available
+ *  - disables access to any internal chipset registers
+ */
+ setCx86(CX86_GCR,0x00);
+}
+#else
+# define disable_internal_chipset()
+#endif
+
/*
  * Configure later MediaGX and/or Geode processor.
  */
@@ -197,6 +212,7 @@ static void __cpuinit geode_configure(vo
/* FPU fast, DTE cache, Mem bypass */
setCx86(CX86_CCR4, getCx86(CX86_CCR4) | 0x38);
+ disable_internal_chipset();
setCx86(CX86_CCR3, ccr3); /* disable MAPEN */
set_cx86_memwb();
</pre>


{{Cc-by-2.5}}
{{Cc-by-2.5}}

Latest revision as of 23:18, 18 January 2014

The Advantech PCM-5820 (PDF) features a Cyrix GX1 processor, 2 IDE controllers (one is a CompactFlash reader), a USB port and a PC/104 extension bus.

Status

Device/functionality Status Comments
CPU
CPU works OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
L1 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
L2 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" |
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
SO-DIMM OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK My 256MB 100MHz memory module is working fine.
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 }}" | Untested
On-board IDE 2.5" OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
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 }}" | N/A
On-board USB OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Tested with an Hauppauge WinTv-USB device.
On-board VGA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK VGA support in coreboot 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
On-board Audio OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
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 }}" | N/A
On-board CompactFlash OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK DMA is not working. This sounds to be hardware related, as this behave the same with the original BIOS and several brands of CF cards. You need to boot the Linux kernel with ide=nodma to workaround this.
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 }}" | N/A
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 }}" | Untested
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 }}" | Untested
Parallel port OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
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 }}" | Untested
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 }}" | Untested I don't own the module that should be plugged on COM2.
PC speaker OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
DiskOnChip OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
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 }}" | Untested 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 }}" | OK Tested with an AIM104-CAN card.
CPU frequency scaling OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Other powersaving features OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
ACPI OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | No No ACPI impelmentation available for this board.
Reboot OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Poweroff OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
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 }}" | Untested
Wake on LAN OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Wake on keyboard OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Wake on mouse OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
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 coreboot and with the proprietary BIOS. Note that a ST39VF020-70-4C-NHE chip worked on it even though it's not recommended.

Hardware

The PCM-5820 board
The AIM-PC104 module used to validate the CAN bus

Detailed System Information

lspci -tvnn

-[0000:00]-+-00.0  Cyrix Corporation PCI Master [1078:0001]
           +-0b.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	: 299.247
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	: 600.56
clflush size	: 32

/proc/iomem

00001000-0009ffff : System RAM
000a0000-000bffff : Video RAM area
000f0000-000fffff : System ROM
00100000-0fdfffff : System RAM
  00100000-002baff4 : Kernel code
  002baff5-0033b88b : Kernel data
10000000-100000ff : 0000:00:12.1
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
febfc000-febfcfff : 0000:00:12.4
  febfc000-febfcfff : Geode GX1 Framebuffer
febfd000-febfdfff : 0000:00:13.0
  febfd000-febfdfff : ohci_hcd
febfe000-febfe0ff : 0000:00:0b.0
  febfe000-febfe0ff : 8139too
febff000-febff07f : 0000:00:12.3
fffc0000-ffffffff : flash_memory.0

/proc/interrupts

           CPU0       
  0:     183986    XT-PIC-XT        timer
  1:          2    XT-PIC-XT        i8042
  2:          0    XT-PIC-XT        cascade
  4:         91    XT-PIC-XT        serial
  8:          1    XT-PIC-XT        rtc
 10:        584    XT-PIC-XT        eth0
 11:          0    XT-PIC-XT        ohci_hcd:usb1
 12:          3    XT-PIC-XT        i8042
 15:       3541    XT-PIC-XT        ide1
NMI:          0 
ERR:          0

Required patches

--- linux-2.6.22.orig/arch/i386/kernel/cpu/cyrix.c
+++ linux-2.6.22/arch/i386/kernel/cpu/cyrix.c
@@ -178,6 +178,21 @@ static void __cpuinit set_cx86_inc(void)
 	setCx86(CX86_CCR3, ccr3);	/* disable MAPEN */
 }
 
+#ifdef CONFIG_DISABLE_INTERNAL_REGISTERS
+static void __cpuinit disable_internal_chipset(void)
+{
+	printk(KERN_INFO "Disable integrated function access.\n");
+	/*
+	 * this disables the integrated function memory area
+	 *  - disables the scratch pad - full cache is available
+	 *  - disables access to any internal chipset registers
+	 */
+	setCx86(CX86_GCR,0x00);
+}
+#else
+# define disable_internal_chipset()
+#endif
+
 /*
  *	Configure later MediaGX and/or Geode processor.
  */
@@ -197,6 +212,7 @@ static void __cpuinit geode_configure(vo
 
 	/* FPU fast, DTE cache, Mem bypass */
 	setCx86(CX86_CCR4, getCx86(CX86_CCR4) | 0x38);
+	disable_internal_chipset();
 	setCx86(CX86_CCR3, ccr3);			/* disable MAPEN */
 
 	set_cx86_memwb();
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).