Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ hsi(4) — Pixar HSI 1.1

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

libhsi(3H)

HSI(4)  —  Pixar Programmer’s Manual

NAME

HSI− Pixar VMEbus to Yapbus High-Speed Interface

SYNOPSIS — SUN-3, SUN-4

device hsi0 at vme24d16 ? csr 0xcfd000 flags 0x1f priority 4 vector hsiintr 0xca

DESCRIPTION

The Pixar High-Speed Interface provides a fast interface between the Sun VMEbus and the Pixar Yapbus.  The fast, buffered data transfer provided by the HSI offers levels of throughput necessary for high-performance and data-intensive imaging applications. 

The HSI has a set of 32 VMEbus registers and a data window, which appears as memory on the VMEbus. The registers are described in the file /usr/pixar/hsi/include/pixardev/hsireg.h See the HSI Description in Chapter 9 of the Pixar Hardware Reference Manual (in the ChapTools User’s Guide) for a detailed description of the registers’ functions.

Bits 3:0 of the flags parameter to /etc/config specify the size of the data window; 0=64KB, 1=128KB, 3=256KB, 7=512KB, 0xF=1MB (no other values should be used).  Bits 7:4 specify the maximum Yapbus clock rate that the HSI will use; 1=10MHz, 2=6.67MHz, 3=5MHz, 4=4MHz; contact Pixar Field Service to determine the proper clock rate based upon Yapbus cable length. 

Data transfer between the host and the Yapbus is done by first setting up the transfer using HSI control registers and then accessing the HSI data window or the parallel port to read or write data.  HSI registers can be accessed by an mmap(2) call with an offset of 0 to /dev/hsi[0-n], and 16-bit or 32-bit data windows by mmap calls to the same device at offsets 0x100000 and 0x200000, respectively. 

Although the data window spans a region of the VMEbus address space that is between 64KB and 1MB long, the HSI attaches no further significance to addresses within the data window.  For example, if the data window begins at VMEbus address 0xD00000, writing the value 6 to location 0xD00000 followed by writing the value 7 to location 0xD00000 has the same effect as writing 6 to 0xD00020 followed by writing 7 to 0xD00054; the order in which values are written to the data window is significant.  The data window spans a large region of address space to accommodate DMA transfers by VMEbus peripherals to and from the HSI.  In the case of host-CPU access, however, the data window needs to be no more than four bytes wide. 

IOCTL FUNCTIONS

The file /usr/pixar/hsi/include/pixardev/hsiioctl.h contains definitions for the following ioctl functions.  Unless stated otherwise, ioctl will return 0 after performing these functions successfully. 

HSIIORESET
Resets the HSI and loads all registers with default values. The argument is (char ∗)0. 

HSIIOGDFLT
Returns the default settings for the first 16 HSI hardware registers. The argument is a pointer to a struct hsireg, in which the values the hardware registers will be returned.

HSIIOINTSIG
Requests that the HSI driver deliver a UNIX signal to the calling process when the HSI generates a hardware interrupt.  The argument is a pointer to an int containing either a signal number between 1 and NSIG (specifying the signal to be sent, see /usr/include/signal.h), or 0 (disabling the sending of a signal).  This request remains in effect until a subsequent HSIIOINTSIG call, or until the HSI device is closed.

HSIIOWAITDONE
Suspends the user process until the first of the following events occurs: 1) the HSI GO bit in CSR0 goes off; 2) the HSI error bit in CSR1 goes on; or 3) the specified time passes.  The argument is the address of an int containing the time period expressed in milliseconds.  In cases 1 and 2, ioctl returns 0; the calling program should then inspect the bits in CSR0.  In case 3, ioctl returns −1 and errno contains ETIMEDOUT.  If the time value is not between 1 and 10000 (10 seconds), ioctl returns −1 and errno contains EINVAL. 

HSIIOWAITERR
Suspends the user process until the first of the following events occurs: 1) the HSI error bit in CSR1 goes on; or 2) the specified time passes. The argument and returned values are the same as those for HSIIOWAITDONE.

HSIIOCSROFF
Returns the displacement from the beginning of a hardware memory page to the location of CSR0.  This value is used by libhsi in conjunction with mmap(2) to determine the virtual memory address of the HSI CSRs.  The argument is the address of an int that will receive the displacement value. 

HSIIONINTR
Return the total number of HSI hardware interrupts received since the last reboot.  The argument is the address of an int that will receive the interrupt count. 

The following ioctl functions are present for compatibility with older versions of user-mode HSI software.  Support for these functions will be removed in a future HSI software release. 

YUMIGREGS
Returns the current values of HSI registers; the argument is a pointer to struct hsireg that will receive the settings. 

YUMISREGS
Sets the current values of HSI registers; the argument is a pointer to struct hsireg containing settings to be fed to the HSI. 

YUMIRESET
Resets the HSI, then performs the same function as YUMISREGS; the argument is a pointer to struct hsireg containing settings to be fed to the HSI. 

DIAGNOSTICS

The following messages appear only at boot time. 

hsiN: data window addr=0xstart-0xend size=kbytesKB
This is an informative message, reporting the VMEbus addresses spanned by the HSI data window.  The data window appears as VMEbus memory, extending from start to end, and occupying a total of kbytes (expressed in decimal) kilobytes. 

hsiN: illegal md_flags dwsize value 0xvalue, using 64KB
Bits 3:0 of the HSI flags contain an illegal value.  The kernel must be rebuilt with a legal value.  Refer to the DESCRIPTION section above for the proper setting of flags.

hsiN: illegal md_flags xmitrate value 0xvalue, using 6.67 MHz
Bits 7:4 of the HSI flags contain an illegal value.  The kernel must be rebuilt with a legal value.  Refer to the DESCRIPTION section above for the proper setting of flags.

RESTRICTIONS

The only supported Yapbus configuration consists of one HSI and one Pixar Image Computer (1 to 4 Chaps in the same card cage). 

SOFTWARE STATUS

Although this implementation of the HSI software relies upon direct access to memory-mapped HSI hardware registers, it is recommended that user applications limit themselves to accessing the HSI through the library routines in libhsi(3H).

Support for the YUMIxxx ioctl functions will be eliminated in a future release of Pixar HSI software. 

SEE ALSO

libhsi(3H)

HSI Tutorial

Release β  —  Last change: 6/8/89

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026