December 15, 1997
Overview
Version 3.1.0 of the SB32C2 host software includes the following changes:
The SBE1 Mezzanine logic (available in sbe1b_03.mcs) was modified to allow the polarity of the FIFO status signals to be inverted and to provide a ninth bit of DSP-to-DSP intercommunication data.
Setting bit 5 of the control register (0x800000) inverts the polarity of the Incoming Fifo Empty Interrupt, the Outgoing Fifo Full Interrupt and the Outgoing Fifo Half Full Interrupt. The polarity of the Interrupt Status Register is not effected by the state of bit 5.
For example, when bit 5 of the control register is set, an interrupt will be generated when data is available in the incoming fifo, the Incoming Fifo Empty bit in the Interrupt Status Register will be cleared when the interrupt is acknowledged by the DSP.
The state of bit 4 of the control register (0x800000) controls the state of bit 9 of the intra-communication fifo. When the bit is set, and data is written to the fifo, the ninth bit of the Outgoing Fifo will be set. The state of the ninth bit on the Incoming Fifo can be sampled by testing bit 4 of the control register after the Incoming Fifo has been read.
Similar enhancements to the SBT1 logic are planned.
SBE1 and SBT1 Software Modifications
The SBE1 and SBT1 Application Interface code has been checked in to a Revision Control System for tracking future modifications.
The sbd3e1loop and sbd3t1loop diagnostic programs were modified to fix a bug that prevented them from displaying an error message if the framer interrupt test times out.
Modifications to the SB32C2 Host Support Library
The functions for controlling codec parameters on the SB32C2 sbdsp_codec_mode, sbdsp_codec_sampling_rate, and sbdsp_codec_control, were modified to return a value of -1 and set the global variable, errno, to EINVAL if the SBDSP_CHIP pointer passed them is NULL. In the previous version a NULL SBDSP_CHIP pointer resulted in a return of 0 which was indistinguishable from a possible normal return value of 0.
Solaris 2.4 and previous version of Solaris did not include the usleep and ualarm functions in the standard C library. The SB32C2 library includes implementations of these functions in the file, sol_stubs.c. Under Solaris 2.5 and higher, these routines are included in the standard C library and are left out of the SB32C2 library.
Note that binaries of the SB32C2 library compiled under Solaris 2.5 or higher cannot be copied and used on earlier versions of Solaris routines would be missing.
SunOS 4.1.x (Solaris 1.x) has always included usleep and ualarm in the standard C library and is not effected by this change.
New DSP_DRVRVERSION Ioctl Request
The version number is returned as an integer whos value is 100 times the value of the major version plus the value of the minor version. For example, if the device driver version is 1.9 then the DSP_DRVRVERSION ioctl returns a value of 109.
The sbdsptest program supports the DSP_DRVRVERSION ioctl using the command:
dsp0a> ioctl 88
Below is an example of how to use the ioctl request in an application.
int version;
SBDSP_CHIP *sbdsp;
sbdsp = sbdspopen ("dsp0a") ;
version = 0; /* initialize version */
(void) ioctl (sbdsp->fd, DSP_DRVRVERSION, &version) ;
if (version == 0)
/* ioctl failed, the driver is an older than the
* first version that supports DSP_DRVRVERSION
*/
printf ("Device driver is old version\n");
else
printf ("Device driver version is %d.%d\n",
version / 100, version % 100) ;
Note that if the ioctl call fails,
because the installed driver does not include the DSP_DRVRVERSION request,
the initialized value of version is untouched.