|
| audiocs - Crystal Semiconductor 4231
Audio driver |
|
The audiocs driver supports the Crystal Semiconductor 4231
Codec to implement the audio device interface.
|
|
This interface is described in the audio(7I)
and mixer(7I) man
pages.
Driver Versions
|
Applications that open /dev/audio
may use the AUDIO_GETDEV ioctl(2) to determine which audio device is being
used. The audiocs driver will return the string SUNW,CS4231 in the name field of the audio_device structure. The version field
contains a letter (defined in the table below) and the config field contains the string onboard1.
Platform | Ver. | Out | H. Phone | Speaker | In | Mic | CD |
SS-4/5 | a | Y | Y | Y | Y | Y | Y |
Ultra-1/2 | b | Y | Y | Y | Y | Y | N |
Ultra-450 | f | Y | Y | Y | Y | Y | N |
Ultra-30/60/80 | g | Y | Y | Y | Y | Y | N |
Ultra-5/10 | h | Y | Y | Y | Y | Y | Y |
Key to the above table: Ver = Version. Out = Line Out. Speaker = Internal
Speaker. In = Line In. Mic. = Microphone. CD = CD-ROM.
The audiocs device provides support for the internal
speaker, headphone, line out, line in, microphone, and on some platforms,
internal CD-ROM audio in. The play.avail_ports
and record.avail_ports fields retrieved by the AUDIO_GETINFO ioctl (see audio(7I))
report which ports are available. The play.mod_ports
and record.mod_ports fields indicate which ports
may be manipulated.
|
Audio Mixer Mode
|
The configuration file /kernel/drv/audiocs.conf is used to configure the audiocs driver so that
the audio mixer is enabled or disabled. See the mixer(7I) manual page for details. The audio mixer's
mode may be changed at any time using the mixerctl(1)
or sdtaudiocontrol(1)()
applications.
|
Audio Data Formats
|
The audiocs device supports the audio formats listed in the following
table. When the audio mixer is in compatibility
mode and the device is open for simultaneous play and record, the input and
output data formats must match. Some sample rates are supported in compatibility
mode (C) that are not supported in mixer mode (M). This is due to the computational
overhead for sample rate conversion being too high.
Supported Audio Data Formats |
Sample Rate | Encoding | Precision | Channels | Mode |
5510 Hz | µ-Law, A-Law | 8 | 1 or 2 | C only |
6620 Hz | µ-Law, A-Law | 8 | 1 or 2 | C only |
8000 Hz | µ-Law, A-Law | 8 | 1 or 2 | M and C |
9600 Hz | µ-Law, A-Law | 8 | 1 or 2 | M and C |
11025 Hz | µ-Law, A-Law | 8 | 1 or 2 | M and C |
16000 Hz | µ-Law, A-Law | 8 | 1 or 2 | M and C |
18900 Hz | µ-Law, A-Law | 8 | 1 or 2 | M and C |
22050 Hz | µ-Law, A-Law | 8 | 1 or 2 | M and C |
27420 Hz | µ-Law, A-Law | 8 | 1 or 2 | C only |
32000 Hz | µ-Law, A-Law | 8 | 1 or 2 | M and C |
33075 Hz | µ-Law, A-Law | 8 | 1 or 2 | M and C |
37800 Hz | µ-Law, A-Law | 8 | 1 or 2 | M and C |
44100 Hz | µ-Law, A-Law | 8 | 1 or 2 | M and C |
48000 Hz | µ-Law, A-Law | 8 | 1 or 2 | M and C |
5510 Hz | linear | 8, 16 | 1 or 2 | C only |
6620 Hz | linear | 8, 16 | 1 or 2 | C only |
8000 Hz | linear | 8, 16 | 1 or 2 | M and C |
9600 Hz | linear | 8, 16 | 1 or 2 | M and C |
11025 Hz | linear | 8, 16 | 1 or 2 | M and C |
16000 Hz | linear | 8, 16 | 1 or 2 | M and C |
18900 Hz | linear | 8, 16 | 1 or 2 | M and C |
22050 Hz | linear | 8, 16 | 1 or 2 | M and C |
27420 Hz | linear | 8, 16 | 1 or 2 | C only |
32000 Hz | linear | 8, 16 | 1 or 2 | M and C |
33075 Hz | linear | 8, 16 | 1 or 2 | M and C |
37800 Hz | linear | 8, 16 | 1 or 2 | M and C |
44100 Hz | linear | 8, 16 | 1 or 2 | M and C |
48000 Hz | linear | 8, 16 | 1 or 2 | M and C |
|
Sample Granularity
|
At any given time the reported input and output
sample counts will vary from the actual sample count by no more than the size
of the buffers the audiocs driver is transferring. In general,
programs should not rely on the absolute accuracy of the play.samples and record.samples fields of the audio_info structure.
|
Interrupt Rate
|
The driver determines how often play and record interrupts should occur.
For playing audio, this determines how often and how much audio is requested
from the audio mixer. The impact of interrupts on recording is minimal. However,
if a very small read buffer size is set, the record interrupt rate should
be increased to prevent the buffer from overflowing. The play and record interrupt
rates are tunable in the /kernel/drv/audiocs.conf file.
|
Audio Status Change Notification
|
As described in the audio(7I) and mixer(7I) man
pages, it is possible to request asynchronous notification of changes in the
state of an audio device.
|
|
|
audiocs errors are described in the audio(7I) man pages.
|
|
-
/dev/audio
- Symbolic link to the system's primary audio device. (not necessarily
an audiocs audio device).
-
/dev/audioctl
- Control device for the above audio device.
-
/dev/sound/0
- Represents the first audio device on the system. (not necessarily an audiocs audio device).
-
/dev/sound/0ctl
- Audio control for above device.
-
/usr/share/audio/samples
- Audio sample files.
-
/kernel/drv/audiocs
- 32-bit audiocs driver
-
/kernel/drv/sparcv9/audiocs
- 64-bit audiocs driver.
-
/kernel/drv/audiocs.conf
- Audiocs driver configuration file.
|
|
See attributes(5)
for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
Architecture | SPARC |
Availability | SUNWaudd, SUNWauddx, SUNWauda |
Stability level | Evolving |
|
|
In addition to being logged, the following messages may appear on the
system console:
- attach () play interrupt rate set too low.
- The play interrupt rate specified in audiocs.conf
is set too low. It is being reset to the rate specified in the message. Update audiocs.conf to a higher play interrupt rate.
- attach() play interrupt rate set too high.
- The play interrupt rate specified in audiocs.conf
is set too high. It is being reset to the rate specified in the message. Update audiocs.conf to a lower play interrupt rate.
- attach() record interrupt rate set too low.
- The record interrupt rate specified in audiocs.conf is set too low.
It is being reset to the rate specified in the message. Update audiocs.conf to a higher record interrupt rate.
- attach() record interrupt rate set too high
- The record interrupt rate specified in audiocs.conf
is set too high. It is being reset to the rate specified in the message. Update audiocs.conf to a lower record interrupt rate.
|
| |