<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
          "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">

<article lang="en">

  <articleinfo>
    <title>GNU/Linux on a Soekris net4801</title>

    <author>
      <firstname>Henrik Brix</firstname>
      <surname>Andersen</surname>
      <affiliation>
        <address><email>henrik@brixandersen.dk</email></address>
      </affiliation>
    </author>

    <copyright>
      <year>2005</year>
      <holder>
        Henrik Brix Andersen
      </holder>
    </copyright>

    <revhistory>
      <revision>
        <revnumber>0.2.3</revnumber>
        <date>2005-09-04</date>
        <authorinitials>HBA</authorinitials>
        <revremark>Added note about disabling other gettys</revremark>
      </revision>
      <revision>
        <revnumber>0.2.2</revnumber>
        <date>2005-07-22</date>
        <authorinitials>HBA</authorinitials>
        <revremark>Updated lm_sensors configuration</revremark>
      </revision>
      <revision>
        <revnumber>0.2.1</revnumber>
        <date>2005-07-20</date>
        <authorinitials>HBA</authorinitials>
        <revremark>Added further instructions for lm_sensors</revremark>
      </revision>
      <revision>
        <revnumber>0.2.0</revnumber>
        <date>2005-07-08</date>
        <authorinitials>HBA</authorinitials>
        <revremark>Updated for linux-2.6.12</revremark>
      </revision>
      <revision>
        <revnumber>0.1.3</revnumber>
        <date>2005-03-03</date>
        <authorinitials>HBA</authorinitials>
        <revremark>Updated for linux-2.6.11</revremark>
      </revision>
      <revision>
        <revnumber>0.1.3</revnumber>
        <date>2005-02-26</date>
        <authorinitials>HBA</authorinitials>
        <revdescription>
	  <itemizedlist>
	    <listitem>
	      <para>
	        Use init=3 for the PC87366 chip to enable Vbat (in9)
	      </para>
	    </listitem>
	    <listitem>
	      <para>
	        Updated sensors.conf
	      </para>
	    </listitem>
	  </itemizedlist>
	</revdescription>
      </revision>
      <revision>
        <revnumber>0.1.2</revnumber>
        <date>2005-02-24</date>
        <authorinitials>HBA</authorinitials>
        <revremark>Fixed minor typos</revremark>
      </revision>
      <revision>
        <revnumber>0.1.1</revnumber>
        <date>2005-02-24</date>
        <authorinitials>HBA</authorinitials>
        <revremark>Use init=2 for the PC87366 chip</revremark>
      </revision>
      <revision>
        <revnumber>0.1.0</revnumber>
        <date>2005-02-24</date>
        <authorinitials>HBA</authorinitials>
        <revremark>Initial revision</revremark>
      </revision>
    </revhistory>

    <abstract>
      <para>
        This document describes the process of configuring GNU/Linux
        for the <ulink url="http://www.soekris.com">Soekris</ulink>
        net4801.
      </para>
      <para>
        The document is also available as <ulink
        url="net4801.txt">plain text</ulink>.  The <ulink
        url="net4801.xml">Docbook XML</ulink> source from which it was
        created is available as well.  The latest version of this
        document can be obtained from <ulink
        url="http://www.brixandersen.dk">www.brixandersen.dk</ulink>.
      </para>
    </abstract>
  </articleinfo>

  <section id="sect-intro">
    <title>Introduction</title>
    <para>
      This document describes my experiences with configuring
      GNU/Linux to run on the Soekris net4801.  The document covers
      how to boot Linux on the net4801 and how set up the kernel for
      the specific hardware found in the net4801.  A certain amount of
      experience with kernel configuration is required.
    </para>
    <para>
      Although the instructions in this document are based on my
      experiences with <ulink url="http://www.gentoo.org">Gentoo
      Linux</ulink> it should be fairly trivial to use them with any
      other Linux distribution.  I've tried to be as general as
      possible and left out distribution specific instructions.
    </para>

    <section id="sect-copyright">
      <title>Copyright and License</title>
      <para>
        This document is copyrighted &copy; 2005 by <emphasis>Henrik
        Brix Andersen</emphasis>.  Permission is granted to copy,
        distribute and/or modify this document under the terms of the
        GNU Free Documentation License, Version 1.2 or any later
        version published by the Free Software Foundation; with no
        Invariant Sections, with no Front-Cover Texts, and with no
        Back-Cover Texts.  A copy of the license is available at
        <ulink url="http://www.gnu.org/copyleft/fdl.html">
        http://www.gnu.org/copyleft/fdl.html</ulink>.
      </para>
      <para>
        <ulink url="http://www.kernel.org">Linux</ulink> is a
        registered trademark of Linus Torvalds.
      </para>
    </section>

    <section id="sect-disclaimer">
      <title>Disclaimer</title>
      <para>
        No liability for the contents of this document can be
        accepted.  Use the concepts, examples and information at your
        own risk.  There may be errors and inaccuracies, that could be
        damaging to your system.  Proceed with caution, and although
        this is highly unlikely, the author(s) do not take any
        responsibility.
      </para>
      <para>
        All copyrights are held by their by their respective owners,
        unless specifically noted otherwise.  Use of a term in this
        document should not be regarded as affecting the validity of
        any trademark or service mark.  Naming of particular products
        or brands should not be seen as endorsements.
      </para>
    </section>

    <section id="sect-thanks">
      <title>Thanks</title>
      <para>
        I would like to
        thank <ulink url="http://www.pil.dk">pil.dk</ulink> for
        sponsoring my work on this project. If you need hosting you
        should consider contacting them.
      </para>
    </section>

    <section id="sect-feedback">
      <title>Feedback</title>
      <para>
        Feedback is most certainly welcome for this document.  Send
        your additions, comments and criticisms to the following email
        address: <email>henrik@brixandersen.dk</email>.
      </para>
    </section>
  </section>

  <section id="sect-soekris-net4801">
    <title>The Soekris net4801</title>
    <para>
      The Soekris net4801 has the configuration shown in the output of
      the <command>lspci</command> utility
      from <ulink
      url="http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml">pciutils</ulink>
      in <xref linkend="fig-soekris-net4801-lspci" />.

      <figure id="fig-soekris-net4801-lspci">
        <title>Output of the lspci command</title>
<programlisting>
<prompt># </prompt><command>lspci</command>
0000:00:00.0 Host bridge: Cyrix Corporation PCI Master
0000:00:06.0 Ethernet controller: National Semiconductor Corporation DP83815 (MacPhyter) Ethernet Controller
0000:00:07.0 Ethernet controller: National Semiconductor Corporation DP83815 (MacPhyter) Ethernet Controller
0000:00:08.0 Ethernet controller: National Semiconductor Corporation DP83815 (MacPhyter) Ethernet Controller
0000:00:12.0 ISA bridge: National Semiconductor Corporation SC1100 Bridge
0000:00:12.1 Bridge: National Semiconductor Corporation SC1100 SMI
0000:00:12.2 IDE interface: National Semiconductor Corporation SCx200 IDE (rev 01)
0000:00:12.5 Bridge: National Semiconductor Corporation SC1100 XBus
0000:00:13.0 USB Controller: Compaq Computer Corporation ZFMicro Chipset USB (rev 08)
</programlisting>
      </figure>
      <note>
	<para>
	  The lscpi utility reports the ethernet controllers to be
	  DP83815s, but they're actually DP83816s.
	</para>
      </note>
    </para>
  </section>

  <section id="sect-kernel">
    <title>Kernel Configuration</title>
    <para>
      This section describes how to configure
      a <ulink url="http://www.kernel.org">Linux</ulink> kernel
      version 2.6.x for the hardware of the net4801.  The instructions
      found in this revision of the document has been tested with
      linux-2.6.12.  Only options closely related to the net4801
      specific hardware are mentioned; which options to enable apart
      from those are beyond the scope of this document.
    </para>
    <para>
      If you use a kernel earlier than 2.6.12, you will need to apply
      my <ulink
      url="http://www.brixandersen.dk/files/net4801/linux-2.6.11-scx200.patch">
      patch</ulink> for determining the Configuration Block address at
      run-time. This patch was included upstream in linux-2.6.12.
    </para>
    <para>
      My latest kernel .config file can be found at my <ulink
      url="http://www.brixandersen.dk/files/linux/net4801/">web
      site</ulink>.
    </para>

    <section id="sect-kernel-cpu-chipset">
      <title>CPU and Architecture</title>
      <para>
        The Geode SC1100 processor is an i586 class CPU with MMX (also
        referred to as Pentium MMX). You need to enable the kernel
        option listed below to support the CPU and architecture of the
        net4801.

        <itemizedlist>
          <listitem>
            <para>
              Subarchitecture Type (PC-compatible) (CONFIG_X86_PC)
            </para>
          </listitem>
          <listitem>
            <para>
              Processor family (GeodeGX1) (CONFIG_MGEODEGX1)
            </para>
          </listitem>
          <listitem>
            <para>
              PCI support (CONFIG_PCI)
            </para>
          </listitem>
          <listitem>
            <para>
              PCI device name database (CONFIG_PCI_NAMES)
            </para>
          </listitem>
          <listitem>
            <para>
              ISA support (CONFIG_ISA)
            </para>
          </listitem>
          <listitem>
            <para>
	      NatSemi SCx200 support (CONFIG_SCx200)
            </para>
          </listitem>
        </itemizedlist>
      </para>

      <section id="sect-kernel-cpufreq">
        <title>Suspend Modulation</title>
        <para>
	  To enable the Suspend Modulation feature of the Geode SC1100
	  processor you need the kernel options listed below.

          <itemizedlist>
            <listitem>
              <para>
	        CPU Frequency scaling (CONFIG_CPU_FREQ)
              </para>
            </listitem>
            <listitem>
              <para>
	        Cyrix MediaGX/NatSemi Geode Suspend Modulation
	        (CONFIG_X86_GX_SUSPMOD)
              </para>
            </listitem>
          </itemizedlist>
	</para>
      </section>
    </section>

    <section id="sect-kernel-ide">
      <title>IDE Chipset</title>
      <para>
        If you intend to use the onboard IDE controller (HDD and/or
        Compact Flash) you will need the kernel options listed
        below. Please note that the Compact Flash is not
        hot-pluggable.

	<itemizedlist>
          <listitem>
            <para>
              ATA/ATAPI/MFM/RLL support (CONFIG_IDE)
            </para>
          </listitem>
          <listitem>
            <para>
              Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
              (CONFIG_BLK_DEV_IDE)
            </para>
          </listitem>
          <listitem>
            <para>
              Include IDE/ATA-2 DISK support (CONFIG_BLK_DEV_IDEDISK)
            </para>
          </listitem>
          <listitem>
            <para>
              PCI IDE chipset support (CONFIG_BLK_DEV_IDEPCI)
            </para>
          </listitem>
          <listitem>
            <para>
              Sharing PCI IDE interrupts support
              (CONFIG_IDEPCI_SHARE_IRQ)
            </para>
          </listitem>
          <listitem>
            <para>
              Generic PCI bus-master DMA support
              (CONFIG_BLK_DEV_IDEDMA_PCI)
            </para>
          </listitem>
          <listitem>
            <para>
              Use PCI DMA by default when available
              (CONFIG_IDEDMA_PCI_AUTO)
            </para>
          </listitem>
          <listitem>
            <para>
	      National SCx200 chipset support (CONFIG_BLK_DEV_SC1200)
            </para>
          </listitem>
        </itemizedlist>
      </para>
    </section>

    <section id="sect-kernel-eth">
      <title>Ethernet Ports</title>
      <para>
        To enable the 3 ethernet ports of the net4801 you need the
        kernel options listed below.

        <itemizedlist>
          <listitem>
            <para>
              Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET)
            </para>
          </listitem>
          <listitem>
            <para>
	      Generic Media Independent Interface device support
	      (CONFIG_MII)
            </para>
          </listitem>
          <listitem>
            <para>
              EISA, VLB, PCI and on board controllers
              (CONFIG_NET_PCI)
            </para>
          </listitem>
          <listitem>
            <para>
	      National Semiconductor DP8381x series PCI Ethernet
	      support (CONFIG_NATSEMI)
            </para>
          </listitem>
        </itemizedlist>
      </para>
    </section>

    <section id="sect-kernel-usb">
      <title>USB Port</title>
      <para>
        To enable the USB port of the net4801 you need the kernel
        options listed below along with drivers for the devices you
        plan to attach.

        <itemizedlist>
          <listitem>
            <para>
              Support for Host-side USB (CONFIG_USB)
            </para>
          </listitem>
          <listitem>
            <para>
              OHCI HCD support (CONFIG_USB_OHCI_HCD)
            </para>
          </listitem>
        </itemizedlist>
      </para>
    </section>

    <section id="sect-kernel-serial">
      <title>Serial Ports</title>
      <para>
        To enable the two serial ports of the net4801 you need the
        kernel options below.

	<!-- FIXME: IrDA driver -->

        <itemizedlist>
          <listitem>
            <para>
	      8250/16550 and compatible serial support
	      (CONFIG_SERIAL_8250)
            </para>
          </listitem>
          <listitem>
            <para>
	      Maximum number of non-legacy 8250/16550 serial ports (2)
	      (CONFIG_SERIAL_8250_NR_UARTS)
            </para>
          </listitem>
        </itemizedlist>
      </para>

      <section>
        <title>Serial Console</title>
	<para>
	  If you want to have a console on the serial port you will
	  need the kernel option listed below.

          <itemizedlist>
            <listitem>
              <para>
	        Console on 8250/16550 and compatible serial port
	        (CONFIG_SERIAL_8250_CONSOLE)
              </para>
            </listitem>
          </itemizedlist>
	</para>
        <para>
	  You also need to instruct the kernel to use the serial port
	  for console as shown in <xref
	  linkend="fig-kernel-serial-cmdline" />.  For more
	  information see the documentation for the kernel and your
	  boot loader.

          <figure id="fig-kernel-serial-cmdline">
            <title>Kernel command line argument for serial console</title>
<programlisting>
console=ttyS0,19200n8
</programlisting>
          </figure>
        </para>
        <para>
	  Most boot loaders supports console on a serial port as
	  well. Instructions for setting up <ulink
	  url="http://www.gnu.org/software/grub/">GNU GRUB</ulink> can be
	  seen in <xref linkend="fig-kernel-serial-grub" />.  For more
	  information see the documentation for your boot loader.

          <figure id="fig-kernel-serial-grub">
            <title>/boot/grub/grub.conf setup for serial console</title>
<programlisting>
serial --unit=0 --speed=19200 --word=8 --parity=no --stop=1
terminal serial
</programlisting>
          </figure>
        </para>

        <para>
	  Finally you will need to tell <command>/sbin/init</command>
	  to spawn a login on the serial console. An example for this
	  using <command>/sbin/agetty</command> can be seen in
	  <xref linkend="fig-kernel-serial-inittab" />. You should
	  comment out the other terminal entries
	  in <filename>/etc/inittab</filename> to avoid spawning
	  unnecessary gettys.

          <figure id="fig-kernel-serial-inittab">
            <title>/etc/inittab entry for serial console</title>
<programlisting>
s0:12345:respawn:/sbin/agetty 19200 ttyS0 vt100
</programlisting>
          </figure>
        </para>

	<note>
	  <para>
	    Make sure the baud rate set in the BIOS, GRUB, the Linux
	    kernel and inittab are identical or you will end up with
	    garbage on your console during part of the boot process.
	  </para>
	</note>
      </section>
    </section>

    <section id="sect-kernel-gpio">
      <title>General Purpose I/O</title>
      <para>
        The GPIO of the net4801 is controlled through the PC87366
        SuperI/O chip from Winbond/National Semiconductor. There is no
        in-kernel driver for controlling the GPIO yet,
        but <ulink url="http://soekris.hejl.de/">Martin Hejl</ulink>
        and <ulink
        url="http://www.meduna.org/sw_gpio_en.html">Stanislav
        Meduna</ulink> has written one. It doesn't play too well with
        the in-kernel SCx200 drivers, though. Jim Cromie has written a
        more
        generic <ulink
        url="http://lists.soekris.com/pipermail/soekris-tech/2005-June/023674.html">GPIO
        driver</ulink> for the PC87366 chip.
      </para>
    </section>

    <section id="sect-kernel-led">
      <title>Error LED</title>
      <para>
        The error LED is connected to GPIO20 on the SC1100
        processor. To control it from user-space you need the kernel
        option listed below.

        <itemizedlist>
          <listitem>
            <para>
	      NatSemi SCx200 GPIO Support (CONFIG_SCx200_GPIO)
            </para>
          </listitem>
        </itemizedlist>
      </para>
      <para>
        You will need to create a device entry for the error LED using
        the command <command>mknod -m 600 /dev/error_led c 254
        20</command>. You can then control the LED by echoing either 0
        or 1 to the /dev/error_led device node.
      </para>
    </section>

    <section id="sect-kernel-watchdog">
      <title>Hardware Watchdog</title>
      <para>
        To enable the hardware watchdog you need the kernel options
        listed below. You will also need a user-space utility such as
        <ulink
        url="http://www.ibiblio.org/pub/Linux/system/daemons/watchdog/">watchdog</ulink>.

        <itemizedlist>
          <listitem>
            <para>
              Watchdog Timer Support (CONFIG_WATCHDOG)
            </para>
          </listitem>
          <listitem>
            <para>
	      National Semiconductor SCx200 Watchdog
	      (CONFIG_SCx200_WDT)
            </para>
          </listitem>
        </itemizedlist>
      </para>
    </section>

    <section id="sect-kernel-temp-volt">
      <title>Temperature and Voltage Monitor</title>
      <para>
        To enable the temperature and voltage monitor of the net4801
        you need the kernel options listed below.

        <itemizedlist>
          <listitem>
            <para>
	      I2C support (CONFIG_I2C)
            </para>
          </listitem>
          <listitem>
            <para>
	      National Semiconductor PC87360 family
	      (CONFIG_SENSORS_PC87360)
            </para>
          </listitem>
        </itemizedlist>
      </para>
      <para>
        You need to pass at least <option>init=1</option> to the
         pc87360 driver or you wont get any readings. See
         <xref linkend="table-kernel-temp-volt-init" /> for a list of
         valid initialization levels. Beware that repeatedly sampling
         in9 will reduce battery lifetime, more information is
         available in the
         <ulink
         url="http://secure.netroedge.com/~lm78/cvs/lm_sensors2/doc/chips/pc87360">pc87360</ulink>
         file included with lm_sensors.
      </para>
      <para>
	<table id="table-kernel-temp-volt-init">
	  <title>PC87360 initialization level</title>
	  <tgroup cols="2">
	    <thead>
	      <row><entry>Value</entry><entry>Description</entry></row>
	    </thead>
	    <tbody>
	      <row>
		<entry>0</entry>
		<entry>None</entry>
	      </row>
	      <row>
		<entry>1</entry>
		<entry>Forcibly enable internal voltage and
		temperature channels, except in9</entry>
	      </row>
	      <row>
		<entry>2</entry>
		<entry>Forcibly enable all voltage and temperature
		channels, except in9</entry>
	      </row>
	      <row>
		<entry>3</entry>
		<entry>Forcibly enable all voltage and temperature
		channels, including in9</entry>
	      </row>
	    </tbody>
	  </tgroup>
	</table>
      </para>
      <para>
        You will also need the user-space
        utility <ulink
        url="http://secure.netroedge.com/~lm78/">lm_sensors</ulink>
        version 2.9.1 or newer. You should add contents similar to
        that of <xref linkend="fig-kernel-temp-volt-sensors-conf" />
        to <filename>/etc/sensors.conf</filename>.
      </para>
      <para>
	The setup shown is partly based on the PC87366 datasheet and
        partly borrowed from Poul-Henning Kamp's <ulink
        url="http://phk.freebsd.dk/soekris/env4801/">env4801</ulink>
        utility since Soekris Engineering have yet to release any
        information about the external voltage dividers and
        recommended operating conditions. I have contacted Soekris
        Engineering about this, but I haven't heard anything from them
        yet.

        <figure id="fig-kernel-temp-volt-sensors-conf">
          <title>/etc/sensors.conf setup for the net4801</title>
<programlisting>
chip "pc87366-*"

# Soekris net4801 configuration

# Written by Henrik Brix Andersen <email>henrik@brixandersen.dk</email>
# Latest version can be found at http://www.brixandersen.dk/

# The configuration is partly based on the PC87366 datasheet and
# partly borrowed from the env4801 utility by Poul-Henning
# Kamp <email>phk@phk.freebsd.dk</email>

# Datasheet: http://www.winbond.com/PDF/APCsheet/PC87366.pdf
# env4801:   http://phk.freebsd.dk/soekris/env4801/


# Voltage inputs
  ignore vid

  # Unknown
  # label in0     "avi0"
  ignore in0


  # Core Voltage, +2.0V
  label in1     "VCORE"
  set in1_min   1.9
  set in1_max   2.1


  # VCC, +5.0V
  label in2     "VCC"
  compute in2   @*2, @/2


  # Power Supply Input, +6.0V - +28.0V
  label in3     "VPWR"
  compute in3   @*20.1, @/20.1
  set in3_min    6.0
  set in3_max   28.0


  # +12V
  label in4     "+12V"
  compute in4   @*4.83, @/4.83
  set in4_min   11
  set in4_max   13


  # -12V
  label in5     "-12V"
  # If in10 on your net4801 doesn't have the 3.3V reference, use this
  # compute line instead:
  # compute in5   (@-3.3)*19.2+3.3, (@-3.3)/19.2+3.3
  compute in5   (@-in10)*19.2+in10, (@-in10)/19.2+in10
  set in5_min   -13
  set in5_max   -11


  # GND, 0V
  label in6     "GND"
  set in6_min   0
  set in6_max   0


  # Standby Voltage, +3.3V
  # Internally divided by 2
  label in7     "Vsb"
  compute in7   @*2, @/2
  set in7_min    3.0
  set in7_max    3.6


  # Supply Voltage, +3.3V
  # Internally divided by 2
  label in8     "Vdd"
  compute in8   @*2, @/2
  set in8_min    3.0
  set in8_max    3.6


  # Battery Backup Supply Voltage, +3.0V
  label in9     "Vbat"
  set in9_min    2.4
  set in9_max    3.6


  # Analog Supply Voltage, +3.3V
  # Internally divided by 2
  label in10    "AVdd"
  compute in10  @*2, @/2
  set in10_min   3.0
  set in10_max   3.6


# Temperature inputs
  ignore temp1
  ignore temp2

  # PC87366 Internal Temperature
  # PC87366 Recommended Operating Conditions: 0 - 70C
  # SC1100  Recommended Operating Conditions: 0 - 85C
  label temp3       "Temp"
  label temp3_crit  "Critical"
  set temp3_min      0
  set temp3_max     70
  set temp3_crit    85


  ignore temp4
  ignore temp5
  ignore temp6


# Fan inputs
  ignore fan1
  ignore fan2
  ignore fan3
</programlisting>
        </figure>
      </para>
      <para>
	You need to execute the command <command>sensors -s</command>
        at boot time to initialize the sensors. You can then run the
        command <command>sensors</command> to read the sensors.
      </para>

      <tip>
        <para>
	  If your HDD supports SMART (Self-Monitoring, Analysis and
	  Reporting Technology), you can monitor the temperature of it
	  using either
	  the <ulink
	  url="http://www.guzu.net/linux/hddtemp.php">hddtemp
	  utility</ulink>
	  or <ulink
	  url="http://smartmontools.sourceforge.net">smartmontools</ulink>.
	</para>
      </tip>
    </section>

    <section id="sect-kernel-rtc">
      <title>Real Time Clock</title>
      <para>
        To enable the Real Time Clock of the net4801 you need the
        kernel option listed below.

        <itemizedlist>
          <listitem>
            <para>
	      Enhanced Real Time Clock Support (CONFIG_RTC)
            </para>
          </listitem>
        </itemizedlist>
      </para>
    </section>
  </section>

  <section id="sect-conclusion">
    <title>Conclusion</title>
    <para>
      The Soekris net4801 runs smoothly with GNU/Linux. The only thing
      I've encountered not working out-of-the-box so far is the GPIO,
      but you should be able to get it going using one of the above
      mentioned drivers.
    </para>
  </section>

  <section id="sect-links">
    <title>Related Links</title>
    <para>
      This section contains a list of hopefully helpful links to
      various documentation related to the Soekris net4801 which I've
      collected during the the writing of this document.
    </para>

    <itemizedlist>
      <title>Miscellaneous</title>
      <listitem>
        <para>
          <ulink
          url="http://phk.freebsd.dk/soekris/"><citetitle>FreeBSD on
          Soekris hardware</citetitle></ulink>: Poul-Henning Kamp's
          information, tips and ideas for running <ulink
          url="http://www.freebsd.org">FreeBSD</ulink> on Soekris
          hardware.
        </para>
      </listitem>
    </itemizedlist>
    <itemizedlist>
      <title>Datesheets</title>
      <listitem>
        <para>
          <ulink
          url="http://www.soekris.com/downloads.htm"><citetitle>Soekris
          net4801 Manuals</citetitle></ulink>: Soekris' own manuals
          for the net4801.
        </para>
      </listitem>
      <listitem>
        <para>
          <ulink
          url="http://www.amd.com/us-en/ConnectivitySolutions/ProductInformation/0,,50_2330_9863_10524,00.html"><citetitle>
          Geode SC1100 Processor</citetitle></ulink>: AMD's databook
          for the SC1100 Processor.
        </para>
      </listitem>
      <listitem>
        <para>
          <ulink
          url="http://www.winbond.com/e-winbondhtm/partner/apc_006.html"><citetitle>PC87366
          SuperI/O Chip</citetitle></ulink>: Winbond/National
          Semiconductor's datasheet for the PC87366 SuperI/O chip.
        </para>
      </listitem>
    </itemizedlist>
  </section>
</article>
