Date: Sat, 15 Nov 1997 20:21:24 +0000 From: "Pedro F. Giffuni" <giffunip@asme.org> To: multimedia@freebsd.org Subject: Info about CPQ Enhanced Business Au Message-ID: <346E0444.5E6C70B6@asme.org>
next in thread | raw e-mail | index | archive | help
Howdy,
Compaq has made available some information on the sound system
integrated in the latest Deskpro's. I have a Deskpro/i, with the older
(unenhanced) support, so this information is practically useless to me.
FWIW, this cards are supported by the latest OSS/Free for Linux.
http://www.4front-tech.com/ossfree/
I hope someone finds a good use for this.
Pedro.
__________Date: May 1994
Part Number: 002A/1093
The enhanced business audio interface is I/O mapped and has three types
of registers associated with it:
o Sound system setup registers that set up the audio interface for MWSS
compatibility.
o Audio configuration registers that configure the audio interface for
IRQ
and DMA.
o Audio operation registers that control the operation of the audio
interface.
The enhanced business audio is configurable to be MWSS compatible
without the need for additional drivers. This is a change from the audio
interface used in the Compaq Deskpro/i family, which required special
drivers for full MWSS compatibility.
Sound System Setup Registers
The audio interface is configured through four I/O addresses. Using bank
switching, seven registers (the eighth is reserved) are used for setting
up the audio interface. Table 7-2 lists the Sound System Setup
Registers,
which are described in the following paragraphs.
Table 7-2. Sound System Setup Registers
===========================================================================
Address Register R/W
===========================================================================
0C44h Audio Configuration R/W
0C45h FM Address Decode/MWSS ID R/W
0C46h FM Address Decode/Address ASIC ID R/W
0C47h FM Address Decode R/W
===========================================================================
Audio Configuration Register (0C44h, Read/Write)
This register controls the general configuration of the enhanced
business audio interface. Note that only bit <2> is present in both
banks and, in fact, is the only bit present in bank 1 at the 0C44h
address.
Bank 0 Value after reset = 01000000
BIT FUNCTION
----------------
7,6 Audio Revision Bits
00 = Compaq Business Audio
01 = Microsoft Sound System Compatible
(reset default)
10 = Reserved
11 = Reserved
5 No Wait State (NOWS-) Enable
0 = Disabled (reset default, DMA mode)
1 = Enabled (programmed I/O mode)
4 Microsoft Sound System Decode Enable
0 = Decoding disabled (reset default)
1 = Decoding enabled
3 FM Synthesis Decode Enable
0 = Decoding disabled (reset default)
1 = Decoding enabled
2 Bank Select
0 = Bank 0 (reset default)
1 = Bank 1
1.0 Microsoft Sound System Base Address
00 = 0530:0537h (reset default)
01 = 0604:060Bh
10 = 0F40:0F47h
11 = 0E80:0E87h
Bank 1 Value after reset = 00000000
BIT FUNCTION
----------------
7..3 Reserved - read 0s
2 Bank Select
0 = Bank 0 (reset default)
1 = Bank 1
1,0 Reserved - read 0s
FM Address Decode/MWSS ID Register (0C45h, Read/Write)
This register contains decode compare bits for the FM synthesis logic
and also contains the MWSS ID value.
Bank 0 Value after reset = 10001000
BIT FUNCTION
----------------
7..1 FM Synthesis Decode Compare Bits <7:1>.
(reset default value = 88h)
0 PBIC Power Control Bit:
0 = Powered up
1 = Powered down
Bank 1 Value after reset = 00010001
BIT FUNCTION
----------------
7..2 MWSS ID - 04h. Any read from 530-533h should yield these
bits, but as D5-D0 when read by MWSS.
1,0 Reserved.
FM Address Decode/Address ASIC Revision Register (0C46h Read/Write)
This register contains decode compare bits for the FM synthesis logic
and also contains the revision number for the audio addressing ASIC.
Bank 0 Value after reset = 00000011
BIT FUNCTION
----------------
7..0 FM Synthesis Decode Compare Bits <15:8>.
(reset default value = 03h)
Bank 1 Value after reset = 00010001
BIT FUNCTION
----------------
7..0 Audio Addressing ASIC ID. Value = 11h minimum.
FM Address Decode Register (0C47h Read/Write)
This register (in bank 0) sets the decode range for the FM synthesis
logic.
The bank 1 register is reserved.
Bank 0 Value after reset = 01111100
BIT FUNCTION
----------------
7 FM Synth. Decode Compare Bits <15:12> Enable.
0 = Do not use bits <15:12>
1 = Use bits <15:12>
6 FM Synth. Decode Compare Bits <11:10> Enable.
0 = Do not use bits <11:10>
1 = Use bits <11:10>
5 FM Synth. Decode Compare Bit <5> Enable.
0 = Do not use bit <5>
1 = Use bit <5>
4 FM Synth. Decode Compare Bit <4> Enable.
0 = Do not use bit <4>
1 = Use bit <4>
3 FM Synth. Decode Compare Bit <3> Enable.
0 = Do not use bit <3>
1 = Use bit <3>
2 FM Synth. Decode Compare Bit <2> Enable.
0 = Do not use bit <2>
1 = Use bit <2>
1 FM Synth. Decode Compare Bit <1> Enable.
0 = Do not use bit <1>
1 = Use bit <1>
0 General Purpose Bit 1 (GP1). Used to mute audio with XCTL0 from
the PBIC.
Bank 1 Value after reset = 00000000
BIT FUNCTION
----------------
7..0 Reserved.
Audio Configuration Registers
The audio configuration registers (listed in Table 7-3) are used to
select IRQ and DMA and also allow complete disabling/enabling of the
audio interface.
Table 7-3. Audio Configuration Registers
===========================================================================
Address Register R/W
===========================================================================
0530h-0533h Audio IRQ/DMA Mapping WO
0530h-0533h Audio IRQ/DMA Status RO
0C57h Audio Disable R/W
===========================================================================
Audio IRQ/DMA Mapping Register (0530h, Write Only)
This write-only register is used to select the IRQ and DMA to be used by
the audio interface. Under MWSS control, a write to any one the first
four addresses in the selected base address range will alias to the
first address; i.e., a write to 0531h, 0532h, or 0533h will place the
contents into 0530h.
BIT FUNCTION
----------------
7,6 Reserved - write 0
5..3 IRQ Source Sense:
0 = Normal operation. IRQ selected by IRQ select word is
enabled. Bit 6 of the read-only audio status register will
sense a PBIC or an FM synthesis interrupt.
1 = All system IRQ lines are tri-stated. MWSS polls the IRQ
selected by bits 5..3 for availability. The PBIC and FM
interrupts will not figure in IRQ generation.
2..0 DMA Select. These bits select the DMA channel MWSS will use.
000 = playback + capture disabled
001 = playback 0, capture disabled
010 = playback 1, capture disabled
011 = playback 3, capture disabled
100 = playback disabled, capture 1
101 = playback 0, capture 1
110 = playback 1, capture 0
111 = playback 3, capture 0
Audio IRQ/DMA Status Register (0530h, Read Only)
This read-only register is used to read what DMA channels are available
and the status of IRQ sensing as determined by the write-only IRQ/DMA
mapping register previously described. Under MWSS control, a read to
any one the first four addresses in the selected base address range will
alias to the first address; i.e., a read to 0531h, 0532h, or 0533h will
yield the contents of 0530h.
BIT FUNCTION
----------------
7 DMA channels available. (MWSS returns the state of SBHE-).
0 = DMA channels 0, 1, 3 and IRQs 7, 9, 10, and 11 are
available.
1 = DMA channels 1 and 3 and IRQs 7 and 9 are available.
6 IRQ Sense:
If IRQ/DMA mapping register bit <6> = 0 (normal operation):
0 = PBIC or FM synthesis interrupt is not active.
1 = PBIC or FM synthesis interrupt is active.
If IRQ/DMA mapping register bit <6> = 1 :
0 = Selected system IRQ line is in use.
1 = Selected system IRQ line is free.
5..0 MWSS ID bits. MWSS uses these six bits to read the value
written to 0C45h (bank 1) bits <7..2>.
Bit <6> of the write-only IRQ/DMA mapping and read-only IRQ/DMA status
registers allow for an FM synthesis interrupt to be detected. Software
must, however, determine whether the PBIC or the FM synthesis generated
the interrupt.
Audio Disable Register (0C57h Read/Write)
Bit <0> of this register can be used to disable the enhanced business
audio interface. Bits <7..1> are reserved.
Value after reset = 00000001
BIT FUNCTION
----------------
7..1 Reserved - R/W 0s
0 Audio Enable/Disable
0 = Enabled
1 = Disabled (reset default)
When bit <0> is set, decoding of the following addresses is inhibited:
Address Function
------- --------
0388h-038Bh FM synthesis
0530H-0537h audio configuration and operation (primary)
0604h-060Bh audio configuration and operation (alternate)
0C44h-0C47h sound system setup
0E80h-0E87h audio configuration and operation (alternate)
0F40h-0F47h audio configuration and operation (alternate)
Audio Operation Registers
The audio operation registers control the operation of the FM synthesis
logic and PBIC. Consequently, the registers can be classified as the FM
Synthesis Control Registers and the PBIC Control Registers.
FM Synthesis Control Registers
The FM synthesis logic is typically mapped at 0388h-038Bh. The YMF262
synthesizer component is used, which contains a total of 243 control
registers divided into two banks. The YMF262's control registers are
accessed by first writing the address of the control register to 0388h
(for bank 0) or 038Ah (for bank 1) followed by writing the data to
either 0389h or 038Bh. If a succeeding data byte is destined for the
same control register, that control register's address need not be
re-written.
Basically, FM synthesis is a write-only operation; only one read, for
status, is permitted. Table 7-4 lists the mapping of the FM synthesis
logic.
Table 7-4. FM Synthesis Mapping
===========================================================================
Address Register R/W
===========================================================================
0388h FM Synthesizer Register Address Write (Bank 0) WO
0388h FM Synthesizer Status Register RO
0389h FM Synthesizer Register Data Write WO
038Ah FM Synthesizer Register Address Write (Bank 1) WO
038Bh FM Synthesizer Register Data Write WO
===========================================================================
Table 7-5 lists the control registers for FM synthesis. Refer to the
data sheet for the YMF262 for detailed register information.
Table 7-5. FM Synthesis Control Registers
===========================================================================
Address Bank 0 Function Bank 1 Function
===========================================================================
01h Test - all 0s Test - all 0s
---------------------------------------------------------------------------
02h Timer 1 Not Used
---------------------------------------------------------------------------
03h Timer 2 Not Used
---------------------------------------------------------------------------
04h Timer Mask/Timer Start 4-Operator
Configuration
---------------------------------------------------------------------------
05h Not Used 4-Operator
Enable
---------------------------------------------------------------------------
08h Key Scale (KSR) Number Determiner Not Used
---------------------------------------------------------------------------
20h-35h Amplitude Modulation (tremolo),
Vibrato, EG Type, KSR, Multifrequency Same as bank 0
---------------------------------------------------------------------------
40h-55h Key Scale Level, Tone Level Same as bank 0
---------------------------------------------------------------------------
60h-75h Attack Rate, Decay Rate Same as bank 0
---------------------------------------------------------------------------
80h-95h Sustain Level, Release Rate Same as bank 0
---------------------------------------------------------------------------
A0h-A8h Frequency Number Same as bank 0
---------------------------------------------------------------------------
B0h-B8h Key On, Block Octave, Frequency Number Same as bank 0
---------------------------------------------------------------------------
BDh Depth. of Amplitude Modulation
(tremolo)/Vibrato, Rhythm Mode Not Used
---------------------------------------------------------------------------
C0h-C8h Stereo Left/Right, Feedback,
Connection (oscillator configuration) Same as bank 0
---------------------------------------------------------------------------
E0h-F5h Wave Select Same as bank 0
===========================================================================
PBIC Control Registers
The PBIC ASIC is typically mapped at the base address 0534h. The PBIC
contains a number of control registers that are indirectly addressed
through I/O locations 0534h and 0535h. Tables 7-5 and 7-6 list the
PBIC's
directly and indirectly addressed registers, respectively.
Table 7-6. PBIC Mapping
===========================================================================
Address Register R/W
===========================================================================
0534h PBIC Register Index (refer to Table 7-7) R/W
0535h PBIC Register Function (refer to Table 7-7) R/W
0536h PBIC Status R/W
0537h PBIC Programmed I/O Data R/W
===========================================================================
Table 7-7. PBIC Control Registers
===========================================================================
Index Function Index Function
===========================================================================
00h Left Input Control 08h Data Format
01h Right Input Control 09h Interface Configuration
02h Left Aux. 1 Input Control 0Ah Pin Control
03h Right Aux. 1 Input Control 0Bh Test and Configuration
04h Left Aux. 2 Input Control 0Ch Miscellaneous
Information
05h Right Aux. 2 Input Control 0Dh Loopback Control
06h Left Output Control 0Eh Upper Base Count
07h Right Output Control 0Fh Lower Base Count
===========================================================================
Index Register (534h, 608h, E84, or F44, Read/Write)
This register holds the value of 01000000 when the audio ASIC has left
the initialization state following a reset.
BIT FUNCTION
----------------
7 Initialization (RO)
0 = Audio ASIC is ready to handle digital I/O
1 = Audio ASIC is being initialized and digital I/O is disabled
6 Mode Change Enable
0 = Data Format and Data Interface registers cannot be changed.
1 = Data Format and Data Interface registers can be changed and
audio activity is inhibited
5 Transfer Request Disable
0 = DMA transfers are enabled
1 = DMA transfers are disabled (DMA transfers possible only if
Status register bit <0> is 0).
4 Reserved
3..0 Index Address. These bits define the address of the audio
register accessed by Data Register. (Refer to Table 7-6)
Data Register (535h or 609h, Read/Write)
This register holds the data byte of the register indexed by the Index
Register (Refer to Table 7-6). This register cannot be written to during
initialization of the audio ASIC and will, during that time, read
10000000 (80h).
Status Register (536h or 60Ah, Read/Write)
BIT FUNCTION
----------------
7 Capture Byte Ready (read only)
0 = Lower byte ready
1 = Upper or 8-bit mode byte ready
6 Capture Left/Right Sample Ready (read only)
0 = Right channel data
1 = Left channel or mono data
5 Capture Data Ready (read only)
0 = Data is stale (do not reread)
1 = Data is fresh (has not been read)
4 Sample Overrun (read only). When set, this bit indicates that
a sample was not processed in time and that either a capture
overrun or a playback underrun has occurred. Note that if both
capture and playback have been enabled, the activity that sets
this
bit cannot be determined.
3 Playback Byte Required (read only).
0 = Lower byte needed
1 = Upper or 8-bit mode byte
2 Playback Sample Required (read only).
0 = Right channel data needed
1 = Left channel or mono data needed
1 Playback Data Ready (read only).
0 = Data is fresh (do not overwrite)
1 = Data is stale, ready for new write
0 Interrupt Status (of audio ASIC). This bit is cleared by a write
of any value to this register. Bit <1> of the Pin Control
Register
determines whether the INT pin of the audio ASIC reflects the
state
of this bit.
0 = Interrupt pin inactive
1 = Interrupt pin active
Programmed I/O Data Register (537h or 60Bh, Read/Write)
This is actually a pair of registers (one read only, the other write
only) mapped at the same address. During audio ASIC initialization, this
address cannot be written to and will read 10000000 (80h).
A read to the address fetches a byte of digital audio data held in the
Capture Data Register. Each read increments the audio ASIC state machine
so that the following read will fetch the next byte of the sample. (The
next byte to be read can be determined through the Status Register.) If
the Capture Data Register does not receive the first byte of the next
sample from the ADCs, then the next read will fetch the most significant
byte of the last sample.
A write to the address places a byte of digital audio data into the
Playback Data Register. Each write increments the audio ASIC state
machine so that the following write will be of the correct byte of the
sample. When all bytes of a sample have been written, additional writes
are ignored until the current sample is transferred to the DACs and the
state machine is reset.
Left Input Control Register (Index 00h to 534h or 608h, Data to 535h or
609h, Read/Write)
See register bit map below.
Right Input Control Register (Index 01h to 534h or 608h, Data to 535h or
609h, Read/Write)
See register bit map below.
BIT FUNCTION
----------------
7,6 Input Source
00 = Line selected
01 = Auxiliary 1 selected
10 = Microphone selected
11 = Line output loopback selected
5 Input Mic Gain Enable. When set, enables a 20 db gain of the
left mic input signal.
4 Reserved
3..0 Input Gain in increments of 1.5 db (Range of 0 to +22.5db)
State after reset = 00000000
Auxiliary Number 1 Left Channel Input Control Register (Index 02h to
534h or 608h, Data to 535h or 609h, Read/Write)
See register bit map below.
Auxiliary Number 1 Right Channel Input Control Register (Index 03h to
534h or 608h, Data to 535h or 609h, Read/Write)
See register bit map below.
Auxiliary Number 2 Left Channel Input Control Register (Index 04h to
534h or 608h, Data to 535h or 609h, Read/Write)
See register bit map below.
Auxiliary Number 2 Right Channel Input Control Register (Index 05h to
534h or 608h, Data to 535h or 609h, Read/Write)
See register bit map below.
BIT FUNCTION
----------------
7 Channel Mute. When set, mutes the auxiliary channel signal.
6..4 Reserved
3..0 Channel Attenuate Control. LSB represents -1.5 db of
attenuation.
(range of 0 to -22.5 db)
State after reset = 10000000
Left Output Channel Control Register (Index 06h to 534h or 608h, Data to
535h or 609h, Read/Write)
See register bit map below.
Right Output Channel Control Register (Index 07h to 534h or 608h, Data
to 535h or 609h, Read/Write)
See register bit map below.
BIT FUNCTION
----------------
7 Output Mute. When set, the output channel is muted.
6 Reserved
5..0 Output Attenuate Control. The LSB represents 1.5 db.
(Full attenuation is at -96 db) Range of 0 to -96db
State after reset = 10000000
Data Format Register (Index 08h to 534h or 608h, Data to 535h or 609h,
Read/Write)
This register controls the format of digital audio data. The contents of
this register cannot be changed unless bit <6> of the Index Address
Register is set. Writes to this register at any other time will have no
effect.
BIT FUNCTION
----------------
7 Reserved
6,5 Format Select
00 = 8-bit unsigned linear
01 = u-law companded
10 = 16-bit signed, linear
11 = A-law companded
4 Stereo/Mono Select
0 = Mono
1 = Stereo
3..0 Sample Rate Select. Bit <0> determines the clock input
to be used. Bits <3..1> determine the value used to divide the
selected clock frequency resulting in the sample rate listed
below.
0000 = 8.00 KHz 1000 = N/A
0001 = 5.51 KHz 1001 = 37.8 KHz
0010 = 16.0 KHz 1010 = N/A
0011 = 11.2 KHz 1011 = 44.1 KHz
0100 = 27.4 KHz 1100 = 48.0 KHz
0101 = 18.9 KHz 1101 = 33.0 KHz
0110 = 32.0 KHz 1110 = 9.6 KHz
0111 = 22.0 KHz 1111 = 6.6 KHz
State after reset = 00000000
Interface Configuration Register (Index 09h to 534h or 608h, Data to
535h or 609h, Read/Write)
Bits <7..2> of this register can only be written to while bit <6> of the
Index Address Register is set. Bits <1,0>, however, are writeable
without having to set/bit <6> of the Index Address Register.
BIT FUNCTION
----------------
7 Capture Transfer Type
0 = DMA transfers only
1 = Programmable I/O only
6 Playback Transfer Type
0 = DMA transfers only
1 = Programmable I/O only
5,4 Reserved
3 Autocalibrate Enable. When set, the audio ASIC is allowed to
automatically calibrate itself when returning from a powerdown
or
when the Mode Change Enable bit (bit 6 of the Index Address
Register) is being asserted.
2 DMA Channel Mode Select.
0 = Dual DMA channel mode
1 = Single DMA channel mode
1 Capture Enable *
0 = Capture disabled
1 = Capture enabled
0 Playback Enable *
0 = Playback disabled
1 = Playback enabled
State after reset = 00010000
* These bits can be changed without having to set bit 6 of the Index
Register.
Pin Control Register (Index 0Ah to 534h or 608h, Data to 535h or 609h,
Read/Write)
Bit <1> of this register enables, when set, the interrupt output pin of
the audio ASIC. The interrupt pin goes active (high) when the number of
samples programmed into the Base Count Register is reached. All other
bits in this register are reserved.
Text and Initialization Register (Index 0Bh to 534h or 608h, Data to
535h or 609h, Read/Write)
BIT FUNCTION
----------------
7 Capture Overrun. When set, indicates that capture data has not
been read by the CPU. A new sample will not be accepted until
the
present sample has been read and this bit is cleared.
6 Playback Underrun. When set, indicates that playback data has
not arrived in time to be read, in which case the previous
sample
is read again.
5 Autocalibrate In Progress. When set, indicates that
autocalibration
is in progress.
4 DRQ Status. When active, indicates that either a capture data
or playback data sample is ready for processing.
3,2 Overrange Right Detect. These bits determine the overrange
on the right input channel
00 = Less than -1 db under
01 = Between -1 db and 0 db under
10 = Between 0 db and 1 db over
11 = Greater than 1 db over
1,0 Overrange Left Detect. These bits determine the overrange
on the left input channel
00 = Less than -1 db under
01 = Between -1 db and 0 db under
10 = Between 0 db and 1 db over
11 = Greater than 1 db over
Miscellaneous Information Register (Index 0Ch to 534h or 608h, Data to
535h or 609h, Read/Write)
NOTE: This register contains bits that allow for future expansion of
ASIC
functions. Writing to this register may cause unpredictable
results.
BIT FUNCTION
----------------
7..4 Reserved
3..0 ASIC Revision ID (read only).
State after reset = 00001000
Loopback Control Register (Index 0Dh to 534h or 608h, Data to 535h or
609h, Read/Write)
BIT FUNCTION
----------------
7..2 Loopback Attenuation. These bits determine the amount of
attenuation in the loopback from ADC to DAC in 1.5 db steps.
Range
of 0 to -96db.
1 Reserved
0 Loopback Enable. When set, enables the ADC output to be mixed
(looped back) with other data to the DAC.
DMA Base Count Registers (534h or 608h, Index 0Eh and 0Fh, Read/Write)
The audio ASIC contains DMA count logic to notify the CPU when a DMA
transfer is required. The DMA Base Count Registers hold the number of
samples to be processed before an interrupt will be sent to the CPU.
This value, held in the Upper Base Count Register (index 0Eh) and the
Lower Base Count Register (index 0Fh) is loaded into the 16-bit Current
Count Register at the start of each sampling cycle.
As each sample is received (assuming either playback or capture has been
enabled), the Current Count Register is decremented until zero is
reached.
The next sample will generate the interrupt and reload the Current Count
Register with the value held in the Base Count Registers. Note that the
Current Count Register is not accessible (cannot be read) by the CPU.
Only the programmed base count can be read.
When programming the Base Count Registers, write (the LSB) to the Lower
Base Count Register first. Writing (the MSB) to the Upper Base Count
Register automatically loads the value from both Base Count Registers to
the Current Count Register.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?346E0444.5E6C70B6>
