English Castellano FranÁais
EXPLORING THE ISIS HARDWARE
by Pieter Palmers

The first look

The first important thing to notice is that the ISIS doesn't use the Maestro-2E but the Maestro-2EM. This is important because the EM version has sort of a ISA interface (ESS calls it IDMA). That's where the SAM9707 is connected to. The maestro acts as a PCI to ISA bridge.
The cards architecture is pretty weird. I traced a lot of connections using the diode-check (beep) mode of my multimeter, and thise are the results. The work is now complete.
Here is a schematic diagram of the ISIS card made by Jimmy Le Rhun

Port Descriptions

In the following paragraph I will summarize all information I have of the various ports of the MAESTRO and SAM chips.

Assumptions & definitions

The base address (in IO addressing space) of the Maestro-2EM chip is denotated by IO_BASE.
Sometimes I use short notations for the Maestro chips, which means that I lose the 'Maestro' (eg: Maestro-2M becomes 2M)
The ISIS setting column in the port descriptions show the settings that are used by the ISIS windows drivers.
PLD: Programmable Logic Device. A device that can be programmed to perform various logic functions. Commonly used as address decoding logic etc... The ISIS has two of them (ATF16V8B). As these devices can perform lots of functions, and they can be read protected, it could be really difficult to figure out what exactly they do. Didn't start trying though...

ESS Maestro-2EM

Introduction
I don't have the datasheet for the Maestro-2EM, but I do have the datasheet of the Maestro-2M and that of the Maestro-2E. I assume that the 2EM is actually a 2E with the extra IDMA port. These assumptions are based on the following facts: The Maestro-2 and the Maestro-2E are pin compatible, and contain almost the same functionallity. So I assume the 2M and the 2EM are also pin-compatible, with similar functionality. The observations of the card seem to support these assumptions.
To summarize: for all info but that of the IDMA port I use the datasheet of the Maestro-2E. For all functionality regarding the IDMA port I fall back onto the Maestro-2M docs.
If anybody can provide me with the documents of the Maestro-2EM, please don't hesitate!
General operation
The general operation of the maestro device can be obtained from the ALSA driver for those chips. I'll spend some time on that when the ISIS specific details are finished.
IDMA
I suggest you read the part on the IDMA port of the Maestro-2M datasheet. Not that it is very clear, but anyway... The chip has two modes for this port, the DIO (direct IO) and IDMA (?) mode. I have verified that the ISIS uses the IDMA mode (this is a hardwired selection on the Printed Circuit Board (PCB)). This IDMA mode is similar to the ISA bus protocol. The SAM9707 chip is an ISA device, and the 2EM chip is used as a 'bridge' to the PCI bus.
The IDMA port serves this purpose. The IO space adresses of this port are:
Si lees esto, tu navegador no soporta objects ( IE4, IE5 y NS6 solamente)
There are also interrupts possible for this port, and I think they are used, but I still have to check that out.
GPIO (general purpose input/output)
The GPIO port is a collection of 12 pins that are available for general purpose use. The ISIS uses them as follows:
Si lees esto, tu navegador no soporta objects ( IE4, IE5 y NS6 solamente)
The IO space adresses of this port are:
REMARK: these are 16bit wide ports but there are only 12bits GPIO. So the upper 4 bits should be untouched when writing to a port.
Si lees esto, tu navegador no soporta objects ( IE4, IE5 y NS6 solamente)
There is some interaction between the DATA and the DIRECTION register when reading the GPIO port, but I havn't figured it out yet.

SAM9707

The SAM9707 is a pin-compatible replacement for the SAM9407 device. This means that we can use lots of info from the SAM9407 driver written by Gerd Raush. The only difference between the two chips is that the SAM9707 is capable of reading stereo ADC input on its general purpose pins P1,P2,P3. This is why the 9707 can read 8 input channels whereas the 9407 can only read 2. I haven't looked into it yet, but I assume that the differences in programming will be obvious.
The general purpose pin P0 of the SAM9707 is used to control the input of the DAAD input, being the main serial audio data input of the SAM9707. It is used to select between a resampled version of the ESS1918 codec or the output of the CH7&8 / SPDIF selection (see Maestro GPIO10). This means that the pins 2M-GPIO10 and SAM-P0 are the hardware counterparts of the Console4/8 selection buttons for CH7&8.

Datasheets

Here is a collection of the datasheets for almost all devices present on the ISIS board. Some other docs are available too.
Note: the datasheets of the logic devices are just to illustrate the functionality, not the electrical characteristics.
Si lees esto, tu navegador no soporta objects ( IE4, IE5 y NS6 solamente)