📄 ca0106.h
字号:
/* Capture (0x100<<channel_id) */ /* Playback sample rate 96000 = 0x20000 */ /* Start Playback [3:0] (one bit per channel) * Start Capture [11:8] (one bit per channel) * Playback rate [23:16] (2 bits per channel) (0=48kHz, 1=44.1kHz, 2=96kHz, 3=192Khz) * Playback mixer in enable [27:24] (one bit per channel) * Playback mixer out enable [31:28] (one bit per channel) *//* The Digital out jack is shared with the Center/LFE Analogue output. * The jack has 4 poles. I will call 1 - Tip, 2 - Next to 1, 3 - Next to 2, 4 - Next to 3 * For Analogue: 1 -> Center Speaker, 2 -> Sub Woofer, 3 -> Ground, 4 -> Ground * For Digital: 1 -> Front SPDIF, 2 -> Rear SPDIF, 3 -> Center/Subwoofer SPDIF, 4 -> Ground. * Standard 4 pole Video A/V cable with RCA outputs: 1 -> White, 2 -> Yellow, 3 -> Sheild on all three, 4 -> Red. * So, from this you can see that you cannot use a Standard 4 pole Video A/V cable with the SB Audigy LS card. *//* The Front SPDIF PCM gets mixed with samples from the AC97 codec, so can only work for Stereo PCM and not AC3/DTS * The Rear SPDIF can be used for Stereo PCM and also AC3/DTS * The Center/LFE SPDIF cannot be used for AC3/DTS, but can be used for Stereo PCM. * Summary: For ALSA we use the Rear channel for SPDIF Digital AC3/DTS output *//* A standard 2 pole mono mini-jack to RCA plug can be used for SPDIF Stereo PCM output from the Front channel. * A standard 3 pole stereo mini-jack to 2 RCA plugs can be used for SPDIF AC3/DTS and Stereo PCM output utilising the Rear channel and just one of the RCA plugs. */#define SPCS0 0x41 /* SPDIF output Channel Status 0 register. For Rear. default=0x02108004, non-audio=0x02108006 */#define SPCS1 0x42 /* SPDIF output Channel Status 1 register. For Front */#define SPCS2 0x43 /* SPDIF output Channel Status 2 register. For Center/LFE */#define SPCS3 0x44 /* SPDIF output Channel Status 3 register. Unknown */ /* When Channel set to 0: */#define SPCS_CLKACCYMASK 0x30000000 /* Clock accuracy */#define SPCS_CLKACCY_1000PPM 0x00000000 /* 1000 parts per million */#define SPCS_CLKACCY_50PPM 0x10000000 /* 50 parts per million */#define SPCS_CLKACCY_VARIABLE 0x20000000 /* Variable accuracy */#define SPCS_SAMPLERATEMASK 0x0f000000 /* Sample rate */#define SPCS_SAMPLERATE_44 0x00000000 /* 44.1kHz sample rate */#define SPCS_SAMPLERATE_48 0x02000000 /* 48kHz sample rate */#define SPCS_SAMPLERATE_32 0x03000000 /* 32kHz sample rate */#define SPCS_CHANNELNUMMASK 0x00f00000 /* Channel number */#define SPCS_CHANNELNUM_UNSPEC 0x00000000 /* Unspecified channel number */#define SPCS_CHANNELNUM_LEFT 0x00100000 /* Left channel */#define SPCS_CHANNELNUM_RIGHT 0x00200000 /* Right channel */#define SPCS_SOURCENUMMASK 0x000f0000 /* Source number */#define SPCS_SOURCENUM_UNSPEC 0x00000000 /* Unspecified source number */#define SPCS_GENERATIONSTATUS 0x00008000 /* Originality flag (see IEC-958 spec) */#define SPCS_CATEGORYCODEMASK 0x00007f00 /* Category code (see IEC-958 spec) */#define SPCS_MODEMASK 0x000000c0 /* Mode (see IEC-958 spec) */#define SPCS_EMPHASISMASK 0x00000038 /* Emphasis */#define SPCS_EMPHASIS_NONE 0x00000000 /* No emphasis */#define SPCS_EMPHASIS_50_15 0x00000008 /* 50/15 usec 2 channel */#define SPCS_COPYRIGHT 0x00000004 /* Copyright asserted flag -- do not modify */#define SPCS_NOTAUDIODATA 0x00000002 /* 0 = Digital audio, 1 = not audio */#define SPCS_PROFESSIONAL 0x00000001 /* 0 = Consumer (IEC-958), 1 = pro (AES3-1992) */ /* When Channel set to 1: */#define SPCS_WORD_LENGTH_MASK 0x0000000f /* Word Length Mask */#define SPCS_WORD_LENGTH_16 0x00000008 /* Word Length 16 bit */#define SPCS_WORD_LENGTH_17 0x00000006 /* Word Length 17 bit */#define SPCS_WORD_LENGTH_18 0x00000004 /* Word Length 18 bit */#define SPCS_WORD_LENGTH_19 0x00000002 /* Word Length 19 bit */#define SPCS_WORD_LENGTH_20A 0x0000000a /* Word Length 20 bit */#define SPCS_WORD_LENGTH_20 0x00000009 /* Word Length 20 bit (both 0xa and 0x9 are 20 bit) */#define SPCS_WORD_LENGTH_21 0x00000007 /* Word Length 21 bit */#define SPCS_WORD_LENGTH_21 0x00000007 /* Word Length 21 bit */#define SPCS_WORD_LENGTH_22 0x00000005 /* Word Length 22 bit */#define SPCS_WORD_LENGTH_23 0x00000003 /* Word Length 23 bit */#define SPCS_WORD_LENGTH_24 0x0000000b /* Word Length 24 bit */#define SPCS_ORIGINAL_SAMPLE_RATE_MASK 0x000000f0 /* Original Sample rate */#define SPCS_ORIGINAL_SAMPLE_RATE_NONE 0x00000000 /* Original Sample rate not indicated */#define SPCS_ORIGINAL_SAMPLE_RATE_16000 0x00000010 /* Original Sample rate */#define SPCS_ORIGINAL_SAMPLE_RATE_RES1 0x00000020 /* Original Sample rate */#define SPCS_ORIGINAL_SAMPLE_RATE_32000 0x00000030 /* Original Sample rate */#define SPCS_ORIGINAL_SAMPLE_RATE_12000 0x00000040 /* Original Sample rate */#define SPCS_ORIGINAL_SAMPLE_RATE_11025 0x00000050 /* Original Sample rate */#define SPCS_ORIGINAL_SAMPLE_RATE_8000 0x00000060 /* Original Sample rate */#define SPCS_ORIGINAL_SAMPLE_RATE_RES2 0x00000070 /* Original Sample rate */#define SPCS_ORIGINAL_SAMPLE_RATE_192000 0x00000080 /* Original Sample rate */#define SPCS_ORIGINAL_SAMPLE_RATE_24000 0x00000090 /* Original Sample rate */#define SPCS_ORIGINAL_SAMPLE_RATE_96000 0x000000a0 /* Original Sample rate */#define SPCS_ORIGINAL_SAMPLE_RATE_48000 0x000000b0 /* Original Sample rate */#define SPCS_ORIGINAL_SAMPLE_RATE_176400 0x000000c0 /* Original Sample rate */#define SPCS_ORIGINAL_SAMPLE_RATE_22050 0x000000d0 /* Original Sample rate */#define SPCS_ORIGINAL_SAMPLE_RATE_88200 0x000000e0 /* Original Sample rate */#define SPCS_ORIGINAL_SAMPLE_RATE_44100 0x000000f0 /* Original Sample rate */#define SPDIF_SELECT1 0x45 /* Enables SPDIF or Analogue outputs 0-SPDIF, 0xf00-Analogue */ /* 0x100 - Front, 0x800 - Rear, 0x200 - Center/LFE. * But as the jack is shared, use 0xf00. * The Windows2000 driver uses 0x0000000f for both digital and analog. * 0xf00 introduces interesting noises onto the Center/LFE. * If you turn the volume up, you hear computer noise, * e.g. mouse moving, changing between app windows etc. * So, I am going to set this to 0x0000000f all the time now, * same as the windows driver does. * Use register SPDIF_SELECT2(0x72) to switch between SPDIF and Analog. */ /* When Channel = 0: * Wide SPDIF format [3:0] (one bit for each channel) (0=20bit, 1=24bit) * Tristate SPDIF Output [11:8] (one bit for each channel) (0=Not tristate, 1=Tristate) * SPDIF Bypass enable [19:16] (one bit for each channel) (0=Not bypass, 1=Bypass) */ /* When Channel = 1: * SPDIF 0 User data [7:0] * SPDIF 1 User data [15:8] * SPDIF 0 User data [23:16] * SPDIF 0 User data [31:24] * User data can be sent by using the SPDIF output frame pending and SPDIF output user bit interrupts. */#define WATERMARK 0x46 /* Test bit to indicate cache usage level */#define SPDIF_INPUT_STATUS 0x49 /* SPDIF Input status register. Bits the same as SPCS. * When Channel = 0: Bits the same as SPCS channel 0. * When Channel = 1: Bits the same as SPCS channel 1. * When Channel = 2: * SPDIF Input User data [16:0] * SPDIF Input Frame count [21:16] */#define CAPTURE_CACHE_DATA 0x50 /* 0x50-0x5f Recorded samples. */#define CAPTURE_SOURCE 0x60 /* Capture Source 0 = MIC */#define CAPTURE_SOURCE_CHANNEL0 0xf0000000 /* Mask for selecting the Capture sources */#define CAPTURE_SOURCE_CHANNEL1 0x0f000000 /* 0 - SPDIF mixer output. */#define CAPTURE_SOURCE_CHANNEL2 0x00f00000 /* 1 - What you hear or . 2 - ?? */#define CAPTURE_SOURCE_CHANNEL3 0x000f0000 /* 3 - Mic in, Line in, TAD in, Aux in. */#define CAPTURE_SOURCE_RECORD_MAP 0x0000ffff /* Default 0x00e4 */ /* Record Map [7:0] (2 bits per channel) 0=mapped to channel 0, 1=mapped to channel 1, 2=mapped to channel2, 3=mapped to channel3 * Record source select for channel 0 [18:16] * Record source select for channel 1 [22:20] * Record source select for channel 2 [26:24] * Record source select for channel 3 [30:28] * 0 - SPDIF mixer output. * 1 - i2s mixer output. * 2 - SPDIF input. * 3 - i2s input. * 4 - AC97 capture. * 5 - SRC output. */#define CAPTURE_VOLUME1 0x61 /* Capture volume per channel 0-3 */#define CAPTURE_VOLUME2 0x62 /* Capture volume per channel 4-7 */#define PLAYBACK_ROUTING1 0x63 /* Playback routing of channels 0-7. Effects AC3 output. Default 0x32765410 */#define ROUTING1_REAR 0x77000000 /* Channel_id 0 sends to 10, Channel_id 1 sends to 32 */#define ROUTING1_NULL 0x00770000 /* Channel_id 2 sends to 54, Channel_id 3 sends to 76 */#define ROUTING1_CENTER_LFE 0x00007700 /* 0x32765410 means, send Channel_id 0 to FRONT, Channel_id 1 to REAR */#define ROUTING1_FRONT 0x00000077 /* Channel_id 2 to CENTER_LFE, Channel_id 3 to NULL. */ /* Channel_id's handle stereo channels. Channel X is a single mono channel */ /* Host is input from the PCI bus. */ /* Host channel 0 [2:0] -> SPDIF Mixer/Router channel 0-7. * Host channel 1 [6:4] -> SPDIF Mixer/Router channel 0-7. * Host channel 2 [10:8] -> SPDIF Mixer/Router channel 0-7. * Host channel 3 [14:12] -> SPDIF Mixer/Router channel 0-7. * Host channel 4 [18:16] -> SPDIF Mixer/Router channel 0-7. * Host channel 5 [22:20] -> SPDIF Mixer/Router channel 0-7. * Host channel 6 [26:24] -> SPDIF Mixer/Router channel 0-7. * Host channel 7 [30:28] -> SPDIF Mixer/Router channel 0-7. */#define PLAYBACK_ROUTING2 0x64 /* Playback Routing . Feeding Capture channels back into Playback. Effects AC3 output. Default 0x76767676 */ /* SRC is input from the capture inputs. */ /* SRC channel 0 [2:0] -> SPDIF Mixer/Router channel 0-7. * SRC channel 1 [6:4] -> SPDIF Mixer/Router channel 0-7. * SRC channel 2 [10:8] -> SPDIF Mixer/Router channel 0-7. * SRC channel 3 [14:12] -> SPDIF Mixer/Router channel 0-7. * SRC channel 4 [18:16] -> SPDIF Mixer/Router channel 0-7. * SRC channel 5 [22:20] -> SPDIF Mixer/Router channel 0-7. * SRC channel 6 [26:24] -> SPDIF Mixer/Router channel 0-7. * SRC channel 7 [30:28] -> SPDIF Mixer/Router channel 0-7. */#define PLAYBACK_MUTE 0x65 /* Unknown. While playing 0x0, while silent 0x00fc0000 */ /* SPDIF Mixer input control: * Invert SRC to SPDIF Mixer [7-0] (One bit per channel) * Invert Host to SPDIF Mixer [15:8] (One bit per channel) * SRC to SPDIF Mixer disable [23:16] (One bit per channel) * Host to SPDIF Mixer disable [31:24] (One bit per channel) */#define PLAYBACK_VOLUME1 0x66 /* Playback SPDIF volume per channel. Set to the same PLAYBACK_VOLUME(0x6a) */ /* PLAYBACK_VOLUME1 must be set to 30303030 for SPDIF AC3 Playback */ /* SPDIF mixer input volume. 0=12dB, 0x30=0dB, 0xFE=-51.5dB, 0xff=Mute */ /* One register for each of the 4 stereo streams. */ /* SRC Right volume [7:0] * SRC Left volume [15:8] * Host Right volume [23:16] * Host Left volume [31:24] */#define CAPTURE_ROUTING1 0x67 /* Capture Routing. Default 0x32765410 */ /* Similar to register 0x63, except that the destination is the I2S mixer instead of the SPDIF mixer. I.E. Outputs to the Analog outputs instead of SPDIF. */#define CAPTURE_ROUTING2 0x68 /* Unknown Routing. Default 0x76767676 */ /* Similar to register 0x64, except that the destination is the I2S mixer instead of the SPDIF mixer. I.E. Outputs to the Analog outputs instead of SPDIF. */#define CAPTURE_MUTE 0x69 /* Unknown. While capturing 0x0, while silent 0x00fc0000 */ /* Similar to register 0x65, except that the destination is the I2S mixer instead of the SPDIF mixer. I.E. Outputs to the Analog outputs instead of SPDIF. */#define PLAYBACK_VOLUME2 0x6a /* Playback Analog volume per channel. Does not effect AC3 output */ /* Similar to register 0x66, except that the destination is the I2S mixer instead of the SPDIF mixer. I.E. Outputs to the Analog outputs instead of SPDIF. */#define UNKNOWN6b 0x6b /* Unknown. Readonly. Default 00400000 00400000 00400000 00400000 */#define MIDI_UART_A_DATA 0x6c /* Midi Uart A Data */#define MIDI_UART_A_CMD 0x6d /* Midi Uart A Command/Status */#define MIDI_UART_B_DATA 0x6e /* Midi Uart B Data (currently unused) */#define MIDI_UART_B_CMD 0x6f /* Midi Uart B Command/Status (currently unused) *//* unique channel identifier for midi->channel */#define CA0106_MIDI_CHAN_A 0x1#define CA0106_MIDI_CHAN_B 0x2/* from mpu401 */#define CA0106_MIDI_INPUT_AVAIL 0x80#define CA0106_MIDI_OUTPUT_READY 0x40#define CA0106_MPU401_RESET 0xff#define CA0106_MPU401_ENTER_UART 0x3f#define CA0106_MPU401_ACK 0xfe#define SAMPLE_RATE_TRACKER_STATUS 0x70 /* Readonly. Default 00108000 00108000 00500000 00500000 */ /* Estimated sample rate [19:0] Relative to 48kHz. 0x8000 = 1.0 * Rate Locked [20]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -