aos/devices/ac97_base_audio.dev
Daniel Schwyn 6d444bf552 Main handout
Signed-off-by: Daniel Schwyn <daniel.schwyn@inf.ethz.ch>
2022-03-03 14:57:51 +01:00

216 lines
5.7 KiB
Plaintext

/*
* Copyright (c) 2008, ETH Zurich. All rights reserved.
*
* This file is distributed under the terms in the attached LICENSE file.
* If you do not find this file, copies can be found by writing to:
* ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
*/
/*
* ac97_base_audio.dev
*
* DESCRIPTION: AC'97 Baseline Audio Register Set
*
* Numbers in comments refer to the Intel Audio Codec '97 specification,
* revision 2.3 revision 1.0, April, 2002
*/
device ac97_base_audio msbfirst ( io base ) "AC97 Baseline Audio" {
// 5.7.1
constants s3dsev "3D stereo enhancement vendor ID" {
none = 0 "No 3D stereo enhancement";
analogdev = 1 "Analog Devices";
creative = 2 "Creative Technology";
natsemi = 3 "National Semiconductor";
yamaha = 4 "Yamaha";
bbesound = 5 "BBE Sound";
crystal = 6 "Crystal Semiconductor";
qsound = 7 "Qsound Labs";
spatial = 8 "Spatializer Audio Laboratories";
srs = 9 "SRS Labs";
platform = 10 "Platform Tech";
akm = 11 "AKM Semiconductor";
aureal = 12 "Aureal";
aztech = 13 "Aztech Labs";
binaura = 14 "Binaura";
ess = 15 "ESS Technology";
harman = 16 "Harman International";
nvidia = 17 "Nvidia";
philips = 18 "Philips";
ti = 19 "Texas Instruments";
vlsi = 20 "VLSI Technology";
tritech = 21 "Tritech";
realtek = 22 "Realtek";
samsung = 23 "Samsung";
wolfson = 24 "Wolfson Microelectronics";
delta = 25 "Delta Integration";
sigma = 26 "SigmaTel";
kswav = 27 "KS Waves";
rockwell = 28 "Rockwell";
};
register reset rwc io( base, 0x00) "Reset" {
_ 1 rsvd;
se 5 ro type(s3dsev) "3D stereo enhancement vendor id";
id9 1 ro "20-bit ADC resolution";
id8 1 ro "18-bit ADC resolution";
id7 1 ro "20-bit DAC resolution";
id6 1 ro "18-bit DAC resolution";
id5 1 ro "Loudness support";
id4 1 ro "Headphone out support";
id3 1 ro "Simulated stereo";
id2 1 ro "Bass & treble control";
id1 1 rsvd;
id0 1 ro "Dedicated MIC PCM in";
};
// 5.7.2
regtype stereo_vol "Stereo volume" {
mute 1 "Mute";
_ 1 rsvd;
ml 6 "Left volume";
_ 2 rsvd;
mr 6 "Right volume";
};
register master_vol io( base, 0x02 ) "Master volume" type(stereo_vol);
register auxout_vol io( base, 0x04 ) "Aux out volume" type(stereo_vol);
register mono_vol io( base, 0x06 ) "Mono volume" {
mute 1 "Mute";
_ 9 rsvd;
mm 6 "Volume";
};
// 5.7.3
register master_tone io( base, 0x08 ) "Master tone control" {
_ 4 rsvd;
ba 4 "Bass";
_ 4 rsvd;
tr 4 "Treble";
};
// 5.7.4
register pcbeep io( base, 0x0a ) "PC beep" {
mute 1 "Mute";
_ 2 rsvd;
freq 8 "Frequency";
vol 4 "Volume";
_ 1 rsvd;
};
// 5.7.5
regtype analog_gain "Stereo analog mixer gain" {
mute 1 "Mute";
_ 2 rsvd;
left 5 "Left gain";
_ 3 rsvd;
right 5 "Right gain";
};
register phone_vol io( base, 0x0c ) "Phone volume" {
mute 1 "Mute";
_ 10 rsvd;
gain 5 "Gain";
};
register mic_vol io( base, 0x0e ) "Mic volume" {
mute 1 "Mute";
_ 8 rsvd;
db20 1 "20 dB";
_ 1 rsvd;
gain 5 "Gain";
};
register linein_vol io( base, 0x10 ) "Line in volume" type(analog_gain);
register cd_vol io( base, 0x12 ) "CD volume" type(analog_gain);
register video_vol io( base, 0x14 ) "Video volume" type(analog_gain);
register auxin_vol io( base, 0x16 ) "Aux in volume" type(analog_gain);
register pcmout_vol io( base, 0x18 ) "PCM out volume" type(analog_gain);
// 5.7.6
constants rec_src "Record source" {
mic = 0 "Mic";
cd = 1 "CD in";
video = 2 "Video in";
aux = 3 "Aux in";
line = 4 "Line in";
stereo = 5 "Stereo mix";
mono = 6 "Mono mix";
phone = 7 "Phone";
};
register rec_sec io( base, 0x1a ) "Record select" {
_ 5 rsvd;
left 3 type(rec_src) "Left source";
_ 5 rsvd;
right 3 type(rec_src) "Right source";
};
// 5.7.7
register rec_gain io( base, 0x1c ) "Record gain" {
mute 1 "Mute";
_ 3 rsvd;
left 4 "Left gain";
_ 4 rsvd;
right 4 "Right gain";
};
register rec_gain_mic io( base, 0x1e ) "Record gain mic" {
mute 1 "Mute";
_ 11 rsvd;
gain 4 "Gain";
};
// 5.7.8
register general io( base, 0x20 ) "General purpose" {
pop 1 "PCM out path & mute";
st 1 "Simulated stereo enhancement";
s3d 1 "3D stereo enhancement";
ld 1 "Loudness";
drss 2 "Double rate slot select";
mix 1 "Mono output select";
ms 1 "Mic select";
lpbk 1 "ADC/DAC loopback mode";
_ 7 rsvd;
};
// 5.7.9
register s3d_ctrl io( base, 0x22 ) "3D control" {
_ 4 rsvd;
cr 4 "Center";
_ 4 rsvd;
dp 4 "Depth";
};
// 5.7.10
constants page_sel "Page selector" {
vs = 0 "Vendor-specific";
p1 = 1 "Paged ID 01";
};
register aipm io( base, 0x24 ) "Audio interrupt and paging" {
is 1 rw "Interrupt status";
ics 1 ro "Sense status cause";
icg 1 ro "GPIO status cause";
isense 1 rw "Sense cycle start";
ie 1 rw "Interrupt enable";
_ 7 rsvd;
pg 4 rw type(page_sel) "page selector";
};
// 5.7.11
register pcsr io( base, 0x26 ) "Powerdown control/status" {
eapd 1 rw "External amp powerdown";
pr6 1 rw "Aux out powerdown";
pr5 1 rw "Internal clk disable";
pr4 1 rw "Digital intf powerdown";
pr3 1 rw "Analog mixer powerdown (vref off)";
pr2 1 rw "Analog mixer powerdown (vref still on)";
pr1 1 rw "PCM out DACs powerdown";
pr0 1 rw "PCM in ADCs & input mux powerdown";
_ 4 rsvd;
ref 1 ro "Vref's up to nominal level";
anl 1 ro "Analog mixers ready";
dac 1 ro "DAC section ready to accept";
adc 1 ro "ADC section ready to transmit";
};
};