Random Facts about the Webpal hardware

The Webpal is a set top box appliance designed to provide Web access using a television as a display.   It comes with a IR keyboard and IR remote control.   The system is based around an Cirrus Logic CLPS7500FE, an ARM processor.    There is 1 MB of flash memory and a single 72 pin RAM socket that is populated with a 4 MB SIMM..  A superIO chip, an SMC FDC37C666GT provides two serial ports, a parallel port, and the IDE and floppy interfaces.   The serial ports are not brought to outside and are used internally for the IR and smart card slots.

CLPS7500 Memory and IO Clocks

The clocks for the CLPS7500 are derived from a Cromtel CH9294.   The CH9294 has several inputs that control its output frequencies.   These are hardwired on the Webpal to give a 80 Mhz clock for both the IO clock and memory clock and a 25.175 Mhz display clock.    The sound clock is a 22.1184 crystal clock which is divided by 2 to give something close to what the sound circuitry wants for CD rate sound output.     I assume this crystal frequency was used because it is a standard value.  However, since it is not exactly the correct frequency, sounds won't be quite on pitch.

The clocks must all be divided by two when you set up the chip.   This gives a 40 MHz clock, the maximum for this version of the CLPS7500.   Since the CLPS7500 normally uses 32 Mhz for its IO clock and this design uses 40 Mhz, busses and internal timers will run at the 1.25 times the expected rates.    I had to make some mods in Linux code to take the different timer rates into account.   For example, the clock driving the timers is a 2.5 Mhz clock rather than a 2.0 Mhz clock.

Flash SIMM

The flash has a non-standard pin out compared to a RAM SIMM.   Some of the pins are the same, but since the flash has non-mulitplexed address pins, it cannot match a RAM pin out.    Its also only 16 bits wide in most cases.  A few Webpals come with 2M of Flash, using two chips on the SIMM and making it 32 bits wide.   My bootstrap loader only works for a 16 bit wide SIMM.

The current version of Linux for the Webpal contains a MTD driver for the Flash SIMM.   This allows you to read and program any of the four partitions from Linux.   A special program is required to erase a partition.


The A12 address pin on the CLPS7500 is not wired to the RAM SIMM slot.   Because of this, the Webpal doesn't support 4 K refresh RAM SIMMs.   16 MB and 32 MB SIMMs that use 4 K refresh will only report 1/2 of their memory.    64 MB and 128 MB SIMMs will always report 1/4 of their memory.   So be sure to specify that you want 2K refresh SIMMs if you buy either 16MB or 32MB SIMMs.

The Webpal does support double sided SIMMs.   A double sided SIMM will appear as two memory banks.

Video Controller

The video controller is integrated into the CLPS7500 ARM chip.   Connectors are provided for VGA, SVideo, and standard TV video.  Because there is no PLL circuitry on the board, the display resolution is limited to 640 x 480.   A Chrontel 7001A provides SVideo and video outputs to use with a TV.   It appears there is a way to tweak the centering via the hardware, but I haven't done this yet.

Floppy Controller

A standard floppy connector is provided (J9).   The functionality is provided by a SuperIO chip, a SMC FDC37G666GT.   No one is currently using this interface so it is not known whether it has bugs.

Serial Ports

Two serial ports are provided (J10 and J11).   These connectors are not stuffed but standard 10 pin dual headers can be added after the holes are desoldered.   The levels at these connectors are TTL levels.    The first serial port (J10) is already in use as the interface for the IR keyboard/remote and smart card reader.   However, the second serial port  (J11) is not used so  by adding an external RS-232-C driver board  it can be converted into a general purpose RS-232-C port.

Parallel Port

The parallel port is provided by the SuperIO chip, a SMC FDC376G666GT.   This chip is located a offset 0x278.   Its interrupt pin PINTR is connected to INT3.   Unfortunately, this is a level sensitive interrupt pin, but the chip is wired to generate a short pulsed interrupt on PINTR.   To work around this in applications that needed parallel port interrupts to work correctly, I wired the PINTR pin to nINT1 which is a edge triggered interrupt.   INT6 maps in Linux to IRQ13 and nINT1 maps to IRQ2.

IDE Slot

There is a single IDE connector (J13).    Due to a bug discovered by codeman, if you wish to use this interface, you must lift pin 11 of U2.

On boards that are PWB-11A Ver. 01, the IDE controller appears in the primary slot.   In all other boards, it is at the secondary address.   The default parameters in the bootstrap loader assume the IDE controller is at the secondary address.

IR keyboard/remote and Smart card reader

The system comes with an IR keyboard and an IR remote control.     There is also a smart card slot on the front of the Webpal.

The IR keyboard/remote and smart card slot are handled by a Amtel AT89C52 microprocessor and passed to the primary serial port.   I didn't enable this serial port in  Linux although this would be easy to do by adding an entry in include/asm-arm/arch-cl7500/serial.h.      Instead, it makes more sense to write a keyboard driver that reads from this port and maps the IR codes to keypushes.   I do have such a keyboard driver that supports the IR keyboard although its not in the current patches.

Note that there is a wierd interaction between the IR keyboard and the other serial port.   When I have my RS-232-C board plugged in, the IR keyboard refuses to work.

I don't have any information on the smart card reader.    Most likely, the serial data to and from the smart card is multiplexed on the serial stream connected to the primary serial port.   However, the exact details are unknown.


There are a red, yellow, nd green LED on the front of the unit.   The Green LED is a power indicator.   The other two LEDs are controlled by software.  The current version  of Linux for the Webpal blinks the yellow LED at 1 second intervals and the red LED is an activity indicator  that lights whenever Linux is not in its idle loop.

ISA Bus Slot

There is one ISA bus slot at physical address 0x08000000.   This is mapped by Linux to start at address 0xe1000000.    At the Linux programming and administration level, devices on the ISA bus are addressed starting at 0x80400000.

The only interrupt supported by the ISA bus slot is IRQ3.   This maps to interrupt #9 in Linux.

Initializing the CLPS7500

The CLPS7500 chip requires a specfic set of instructions to go completely into 32 bit mode.    Look at my bootstrap loader to see the sequence.    I found this sequence in one of the ARM application notes.

Updated: April 27, 2002