
  Diagnostic LED driver
 -=====================-

For Digital Alpha machines, at the moment of writing just for the AXPpci33
type of machines (i.e. Noname).


Description
-----------
The AXPpci33 type Alpha motherboard has an onboard connector for eight
diagnostic LEDs connected via a circuitry described on the OEM design
handbook that comes with this motherboard.
The LEDs are connected to the DRAM controller and are written to by
accessing certain addresses which then trigger certain RAS and CAS lines
which will then write the low byte of the written value to the LEDs.
So far the theory ;)
The axppci33-ref-memory.txt says that the LEDs can be reached via the
address 0x38800000 which is utterly wrong! I tried this address for months
and looked for many things until Thomas Bogendoerfer disassembled the SROM
for me and told me two completely different addresses! The real addresses
are 0x3800000 for the LED data and 0x3c000000 for something like an enable.
Thanks Thomas ... !


Compiling
---------
Streight forward: type 'make' !
This will compile the module 'led.o' and the two additional programs
'knight-rider' and 'procled'. You can compile the module only with
'make led'.


Installing
----------
I currently use a character device major 121 minor 0 for the driver.
You can run 'make device' to create the device.
If you want to have the module automatically inserted by kerneld (or kmod) you
should add a line
  alias char-major-121 led
to your /etc/conf.modules (or whatever file you use for this).


Usage
-----
Just write anything you might think could be useful to the character device
and it will show up on the LEDs ;)
You can read back what was written to them by reading the device.
WARNING: The driver will return one byte after another without end! So EOF
never occurs. Be sure just to read one value at a time.


Additional programs
-------------------
knight-rider:
 Type 'make knight-rider' (if not done with 'make') to build it and
 './knight-rider' to run it. It will display the well known knight-rider-like
 running light on the eight LEDs.

procled:
 Type 'make procled' (if not done with 'make') to build it and './procled' to
 run it. Something maybe more useful. It will display a bar-graph using the
 LEDs representing the actual load of your machine (up to load 1.0 max.).
 If the load exceeds 1.0 the highest bit will flash.
 You can specify an update interval (in seconds) on the commandline,
 default is one second, by running for example
   ./procled 3
 for a three second update interval.


Getting
-------
in contact: nils@unix-ag.org
the driver: http://www.unix-ag.uni-siegen.de/~nils/LED_module-0.21.tar.gz
            ftp://ftp.unix-ag.uni-siegen.de/users/nils/LED_module-0.21.tar.gz


Compatibility
-------------
I am currently developing using kernel 2.1.108 and egc 1.0.3a. It may work
for other kernels / compilers as well. If you find any problems with other
configurations please let me know.


(c) Siegen, Germany 1998 by Nils Faerber, GPL applies
