freerunner-alsa-scenarios: Add state files for kernel 2.6.30+
authorLars-Peter Clausen <lars@metafoo.de>
Sun, 28 Jun 2009 21:06:35 +0000 (21:06 +0000)
committerLars-Peter Clausen <lars@metafoo.de>
Sun, 28 Jun 2009 21:06:35 +0000 (21:06 +0000)
SVN-Revision: 16614

phone/freerunner-alsa-scenarios/Makefile
phone/freerunner-alsa-scenarios/files/capturehandset.state [new file with mode: 0644]
phone/freerunner-alsa-scenarios/files/gsmhandset.state [new file with mode: 0644]
phone/freerunner-alsa-scenarios/files/gsmheadset.state [new file with mode: 0644]
phone/freerunner-alsa-scenarios/files/gsmspeakerout.state [new file with mode: 0644]
phone/freerunner-alsa-scenarios/files/headset.state [new file with mode: 0644]
phone/freerunner-alsa-scenarios/files/stereoout.state [new file with mode: 0644]
phone/freerunner-alsa-scenarios/files/voip-handset.state [new file with mode: 0644]

index 506096828f2892905d77c2102af0bc85e5f22b1c..d9293400d2362b120ac4a06176fb6d59db326f71 100644 (file)
@@ -19,6 +19,7 @@ PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
 PKG_SOURCE_VERSION:=$(PKG_REV)
 
 include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/kernel.mk
 
 define Package/freerunner-alsa-scenarios
   SECTION:=phone
@@ -26,6 +27,15 @@ define Package/freerunner-alsa-scenarios
   TITLE:=alsa audio scenarios for the openmoko neo freerunner
 endef
 
+ifeq ($(strip $(call CompareKernelPatchVer,$(KERNEL_PATCHVER),ge,2.6.30)),1)
+define Build/Prepare
+               $(INSTALL_DIR) $(PKG_BUILD_DIR)
+               $(INSTALL_DATA) \
+                       ./files/* \
+                       $(PKG_BUILD_DIR)
+endef
+endif
+
 define Build/Configure
 endef
 
diff --git a/phone/freerunner-alsa-scenarios/files/capturehandset.state b/phone/freerunner-alsa-scenarios/files/capturehandset.state
new file mode 100644 (file)
index 0000000..1481764
--- /dev/null
@@ -0,0 +1,885 @@
+state.neo1973gta02 {
+       control.1 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 255'
+               iface MIXER
+               name 'PCM Volume'
+               value.0 255
+               value.1 255
+       }
+       control.2 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 255'
+               iface MIXER
+               name 'ADC Capture Volume'
+               value.0 195
+               value.1 195
+       }
+       control.3 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 127'
+               iface MIXER
+               name 'Headphone Playback Volume'
+               value.0 121
+               value.1 121
+       }
+       control.4 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 127'
+               iface MIXER
+               name 'Speaker Playback Volume'
+               value.0 121
+               value.1 121
+       }
+       control.5 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 127'
+               iface MIXER
+               name 'Mono Playback Volume'
+               value 121
+       }
+       control.6 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Bypass Playback Volume'
+               value.0 2
+               value.1 2
+       }
+       control.7 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Sidetone Playback Volume'
+               value.0 2
+               value.1 2
+       }
+       control.8 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Voice Playback Volume'
+               value.0 2
+               value.1 2
+       }
+       control.9 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Headphone Playback ZC Switch'
+               value.0 false
+               value.1 false
+       }
+       control.10 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Speaker Playback ZC Switch'
+               value.0 false
+               value.1 false
+       }
+       control.11 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Mono Bypass Playback Volume'
+               value 2
+       }
+       control.12 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Mono Sidetone Playback Volume'
+               value 2
+       }
+       control.13 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Mono Voice Playback Volume'
+               value 2
+       }
+       control.14 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Playback ZC Switch'
+               value false
+       }
+       control.15 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Linear Control'
+               comment.item.1 'Adaptive Boost'
+               iface MIXER
+               name 'Bass Boost'
+               value 'Linear Control'
+       }
+       control.16 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '130Hz @ 48kHz'
+               comment.item.1 '200Hz @ 48kHz'
+               comment.item.2 '100Hz @ 16kHz'
+               comment.item.3 '400Hz @ 48kHz'
+               comment.item.4 '100Hz @ 8kHz'
+               comment.item.5 '200Hz @ 8kHz'
+               iface MIXER
+               name 'Bass Filter'
+               value '130Hz @ 48kHz'
+       }
+       control.17 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'Bass Volume'
+               value 0
+       }
+       control.18 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'Treble Volume'
+               value 7
+       }
+       control.19 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '8kHz'
+               comment.item.1 '4kHz'
+               iface MIXER
+               name 'Treble Cut-off'
+               value '8kHz'
+       }
+       control.20 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Sidetone Capture Volume'
+               value.0 2
+               value.1 2
+       }
+       control.21 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Voice Sidetone Capture Volume'
+               value 2
+       }
+       control.22 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 63'
+               iface MIXER
+               name 'Capture Volume'
+               value.0 23
+               value.1 23
+       }
+       control.23 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Capture ZC Switch'
+               value.0 false
+               value.1 false
+       }
+       control.24 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Capture Switch'
+               value.0 true
+               value.1 true
+       }
+       control.25 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '3.4Hz @ 48kHz'
+               comment.item.1 '82Hz @ 16k'
+               comment.item.2 '82Hz @ 8kHz'
+               comment.item.3 '170Hz @ 8kHz'
+               iface MIXER
+               name 'Capture Filter Select'
+               value '3.4Hz @ 48kHz'
+       }
+       control.26 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 HiFi
+               comment.item.1 Voice
+               iface MIXER
+               name 'Capture Filter Cut-off'
+               value HiFi
+       }
+       control.27 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Capture Filter Switch'
+               value true
+       }
+       control.28 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'ALC Capture Target Volume'
+               value 3
+       }
+       control.29 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'ALC Capture Max Volume'
+               value 7
+       }
+       control.30 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Off
+               comment.item.1 Right
+               comment.item.2 Left
+               comment.item.3 Stereo
+               iface MIXER
+               name 'ALC Capture Function'
+               value Off
+       }
+       control.31 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Capture ZC Switch'
+               value false
+       }
+       control.32 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'ALC Capture Hold Time'
+               value 15
+       }
+       control.33 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'ALC Capture Decay Time'
+               value 12
+       }
+       control.34 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'ALC Capture Attack Time'
+               value 2
+       }
+       control.35 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 31'
+               iface MIXER
+               name 'ALC Capture NG Threshold'
+               value 0
+       }
+       control.36 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Constant PGA Gain'
+               comment.item.1 'Mute ADC Output'
+               iface MIXER
+               name 'ALC Capture NG Type'
+               value 'Constant PGA Gain'
+       }
+       control.37 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Capture NG Switch'
+               value false
+       }
+       control.38 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Capture
+               comment.item.1 Playback
+               iface MIXER
+               name '3D Function'
+               value Capture
+       }
+       control.39 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '2.2kHz'
+               comment.item.1 '1.5kHz'
+               iface MIXER
+               name '3D Upper Cut-off'
+               value '2.2kHz'
+       }
+       control.40 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '200Hz'
+               comment.item.1 '500Hz'
+               iface MIXER
+               name '3D Lower Cut-off'
+               value '200Hz'
+       }
+       control.41 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name '3D Volume'
+               value 0
+       }
+       control.42 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name '3D Switch'
+               value false
+       }
+       control.43 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Capture 6dB Attenuate'
+               value false
+       }
+       control.44 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback 6dB Attenuate'
+               value false
+       }
+       control.45 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 None
+               comment.item.1 '32kHz'
+               comment.item.2 '44.1kHz'
+               comment.item.3 '48kHz'
+               iface MIXER
+               name De-emphasis
+               value None
+       }
+       control.46 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 Left
+               comment.item.2 Right
+               comment.item.3 Mono
+               iface MIXER
+               name 'Playback Mono Mix'
+               value Stereo
+       }
+       control.47 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Non Inverted'
+               comment.item.1 Inverted
+               iface MIXER
+               name 'Playback Phase'
+               value 'Non Inverted'
+       }
+       control.48 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 3'
+               iface MIXER
+               name 'Mic2 Capture Volume'
+               value 3
+       }
+       control.49 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 3'
+               iface MIXER
+               name 'Mic1 Capture Volume'
+               value 0
+       }
+       control.50 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'DAI 0'
+               comment.item.1 'DAI 1'
+               comment.item.2 'DAI 2'
+               comment.item.3 'DAI 3'
+               iface MIXER
+               name 'DAI Mode'
+               value 'DAI 2'
+       }
+       control.51 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 'Left ADC'
+               comment.item.2 'Right ADC'
+               comment.item.3 'Channel Switch'
+               iface MIXER
+               name 'ADC Data Select'
+               value Stereo
+       }
+       control.52 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Non Inverted'
+               comment.item.1 Inverted
+               iface MIXER
+               name 'ROUT2 Phase'
+               value Inverted
+       }
+       control.53 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Mic 1'
+               comment.item.1 'Mic 2'
+               comment.item.2 'Mic 3'
+               iface MIXER
+               name 'Mic Selection Mux'
+               value 'Mic 1'
+       }
+       control.54 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'RXP - RXN'
+               comment.item.1 'RXP + RXN'
+               comment.item.2 RXP
+               comment.item.3 RXN
+               iface MIXER
+               name 'Rx Mixer'
+               value 'RXP - RXN'
+       }
+       control.55 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line 1 + 2'
+               comment.item.1 'Line 1 - 2'
+               comment.item.2 'Line 1'
+               comment.item.3 'Line 2'
+               iface MIXER
+               name 'Line Mixer'
+               value 'Line 1 + 2'
+       }
+       control.56 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line Mix'
+               comment.item.1 'Rx Mix'
+               iface MIXER
+               name 'Line Mono Mux'
+               value 'Line Mix'
+       }
+       control.57 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line 2'
+               comment.item.1 'Rx Mix'
+               iface MIXER
+               name 'Line Right Mux'
+               value 'Line 2'
+       }
+       control.58 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line 1'
+               comment.item.1 'Rx Mix'
+               iface MIXER
+               name 'Line Left Mux'
+               value 'Line 1'
+       }
+       control.59 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Line Capture Switch'
+               value false
+       }
+       control.60 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Mic2 Capture Switch'
+               value true
+       }
+       control.61 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Mic1 Capture Switch'
+               value false
+       }
+       control.62 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Rx Capture Switch'
+               value false
+       }
+       control.63 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Left PGA'
+               comment.item.1 'Mic 1'
+               comment.item.2 'Mic 2'
+               comment.item.3 'Right PGA'
+               iface MIXER
+               name 'Mic Sidetone Mux'
+               value 'Left PGA'
+       }
+       control.64 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 PGA
+               comment.item.1 'Line or RXP-RXN'
+               comment.item.2 Sidetone
+               iface MIXER
+               name 'Capture Right Mux'
+               value PGA
+       }
+       control.65 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 PGA
+               comment.item.1 'Line or RXP-RXN'
+               comment.item.2 Line
+               iface MIXER
+               name 'Capture Left Mux'
+               value PGA
+       }
+       control.66 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 'Analogue Mix Left'
+               comment.item.2 'Analogue Mix Right'
+               comment.item.3 'Digital Mono Mix'
+               iface MIXER
+               name 'Capture Right Mixer'
+               value 'Analogue Mix Left'
+       }
+       control.67 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 'Analogue Mix Left'
+               comment.item.2 'Analogue Mix Right'
+               comment.item.3 'Digital Mono Mix'
+               iface MIXER
+               name 'Capture Left Mixer'
+               value 'Analogue Mix Left'
+       }
+       control.68 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback Mixer Voice Capture Switch'
+               value false
+       }
+       control.69 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback Mixer Left Capture Switch'
+               value false
+       }
+       control.70 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback Mixer Right Capture Switch'
+               value false
+       }
+       control.71 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 VREF
+               comment.item.1 'Capture ST'
+               comment.item.2 LOUT2
+               iface MIXER
+               name 'Out4 Mux'
+               value VREF
+       }
+       control.72 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 VREF
+               comment.item.1 ROUT2
+               comment.item.2 'Left + Right'
+               iface MIXER
+               name 'Out3 Mux'
+               value VREF
+       }
+       control.73 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Inverted Mono 1'
+               comment.item.1 Left
+               comment.item.2 Right
+               comment.item.3 'Left + Right'
+               iface MIXER
+               name 'Mono 2 Mux'
+               value 'Inverted Mono 1'
+       }
+       control.74 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Left Playback Switch'
+               value false
+       }
+       control.75 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Right Playback Switch'
+               value false
+       }
+       control.76 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Voice Playback Switch'
+               value false
+       }
+       control.77 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Sidetone Playback Switch'
+               value false
+       }
+       control.78 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Bypass Playback Switch'
+               value false
+       }
+       control.79 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Voice Playback Switch'
+               value false
+       }
+       control.80 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Sidetone Playback Switch'
+               value false
+       }
+       control.81 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Right Playback Switch'
+               value false
+       }
+       control.82 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Bypass Playback Switch'
+               value false
+       }
+       control.83 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Voice Playback Switch'
+               value false
+       }
+       control.84 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Sidetone Playback Switch'
+               value false
+       }
+       control.85 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Left Playback Switch'
+               value false
+       }
+       control.86 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Bypass Playback Switch'
+               value false
+       }
+       control.87 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Stereo Out Switch'
+               value false
+       }
+       control.88 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'GSM Line Out Switch'
+               value true
+       }
+       control.89 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'GSM Line In Switch'
+               value true
+       }
+       control.90 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Headset Mic Switch'
+               value true
+       }
+       control.91 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Handset Mic Switch'
+               value true
+       }
+       control.92 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Handset Spk Switch'
+               value true
+       }
+       control.93 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Amp State Switch'
+               value true
+       }
+       control.94 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Amp Spk Switch'
+               value true
+       }
+}
diff --git a/phone/freerunner-alsa-scenarios/files/gsmhandset.state b/phone/freerunner-alsa-scenarios/files/gsmhandset.state
new file mode 100644 (file)
index 0000000..d13b4d6
--- /dev/null
@@ -0,0 +1,885 @@
+state.neo1973gta02 {
+       control.1 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 255'
+               iface MIXER
+               name 'PCM Volume'
+               value.0 0
+               value.1 0
+       }
+       control.2 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 255'
+               iface MIXER
+               name 'ADC Capture Volume'
+               value.0 0
+               value.1 0
+       }
+       control.3 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 127'
+               iface MIXER
+               name 'Headphone Playback Volume'
+               value.0 0
+               value.1 0
+       }
+       control.4 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 127'
+               iface MIXER
+               name 'Speaker Playback Volume'
+               value.0 116
+               value.1 116
+       }
+       control.5 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 127'
+               iface MIXER
+               name 'Mono Playback Volume'
+               value 110
+       }
+       control.6 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Bypass Playback Volume'
+               value.0 7
+               value.1 7
+       }
+       control.7 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Sidetone Playback Volume'
+               value.0 0
+               value.1 0
+       }
+       control.8 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Voice Playback Volume'
+               value.0 0
+               value.1 0
+       }
+       control.9 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Headphone Playback ZC Switch'
+               value.0 false
+               value.1 false
+       }
+       control.10 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Speaker Playback ZC Switch'
+               value.0 false
+               value.1 false
+       }
+       control.11 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Mono Bypass Playback Volume'
+               value 0
+       }
+       control.12 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Mono Sidetone Playback Volume'
+               value 6
+       }
+       control.13 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Mono Voice Playback Volume'
+               value 0
+       }
+       control.14 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Playback ZC Switch'
+               value false
+       }
+       control.15 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Linear Control'
+               comment.item.1 'Adaptive Boost'
+               iface MIXER
+               name 'Bass Boost'
+               value 'Linear Control'
+       }
+       control.16 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '130Hz @ 48kHz'
+               comment.item.1 '200Hz @ 48kHz'
+               comment.item.2 '100Hz @ 16kHz'
+               comment.item.3 '400Hz @ 48kHz'
+               comment.item.4 '100Hz @ 8kHz'
+               comment.item.5 '200Hz @ 8kHz'
+               iface MIXER
+               name 'Bass Filter'
+               value '130Hz @ 48kHz'
+       }
+       control.17 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'Bass Volume'
+               value 0
+       }
+       control.18 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'Treble Volume'
+               value 0
+       }
+       control.19 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '8kHz'
+               comment.item.1 '4kHz'
+               iface MIXER
+               name 'Treble Cut-off'
+               value '8kHz'
+       }
+       control.20 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Sidetone Capture Volume'
+               value.0 0
+               value.1 0
+       }
+       control.21 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Voice Sidetone Capture Volume'
+               value 2
+       }
+       control.22 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 63'
+               iface MIXER
+               name 'Capture Volume'
+               value.0 0
+               value.1 0
+       }
+       control.23 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Capture ZC Switch'
+               value.0 false
+               value.1 false
+       }
+       control.24 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Capture Switch'
+               value.0 true
+               value.1 true
+       }
+       control.25 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '3.4Hz @ 48kHz'
+               comment.item.1 '82Hz @ 16k'
+               comment.item.2 '82Hz @ 8kHz'
+               comment.item.3 '170Hz @ 8kHz'
+               iface MIXER
+               name 'Capture Filter Select'
+               value '3.4Hz @ 48kHz'
+       }
+       control.26 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 HiFi
+               comment.item.1 Voice
+               iface MIXER
+               name 'Capture Filter Cut-off'
+               value HiFi
+       }
+       control.27 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Capture Filter Switch'
+               value false
+       }
+       control.28 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'ALC Capture Target Volume'
+               value 0
+       }
+       control.29 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'ALC Capture Max Volume'
+               value 0
+       }
+       control.30 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Off
+               comment.item.1 Right
+               comment.item.2 Left
+               comment.item.3 Stereo
+               iface MIXER
+               name 'ALC Capture Function'
+               value Off
+       }
+       control.31 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Capture ZC Switch'
+               value false
+       }
+       control.32 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'ALC Capture Hold Time'
+               value 0
+       }
+       control.33 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'ALC Capture Decay Time'
+               value 0
+       }
+       control.34 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'ALC Capture Attack Time'
+               value 0
+       }
+       control.35 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 31'
+               iface MIXER
+               name 'ALC Capture NG Threshold'
+               value 0
+       }
+       control.36 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Constant PGA Gain'
+               comment.item.1 'Mute ADC Output'
+               iface MIXER
+               name 'ALC Capture NG Type'
+               value 'Mute ADC Output'
+       }
+       control.37 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Capture NG Switch'
+               value false
+       }
+       control.38 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Capture
+               comment.item.1 Playback
+               iface MIXER
+               name '3D Function'
+               value Capture
+       }
+       control.39 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '2.2kHz'
+               comment.item.1 '1.5kHz'
+               iface MIXER
+               name '3D Upper Cut-off'
+               value '2.2kHz'
+       }
+       control.40 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '200Hz'
+               comment.item.1 '500Hz'
+               iface MIXER
+               name '3D Lower Cut-off'
+               value '200Hz'
+       }
+       control.41 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name '3D Volume'
+               value 0
+       }
+       control.42 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name '3D Switch'
+               value false
+       }
+       control.43 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Capture 6dB Attenuate'
+               value false
+       }
+       control.44 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback 6dB Attenuate'
+               value false
+       }
+       control.45 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 None
+               comment.item.1 '32kHz'
+               comment.item.2 '44.1kHz'
+               comment.item.3 '48kHz'
+               iface MIXER
+               name De-emphasis
+               value None
+       }
+       control.46 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 Left
+               comment.item.2 Right
+               comment.item.3 Mono
+               iface MIXER
+               name 'Playback Mono Mix'
+               value Stereo
+       }
+       control.47 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Non Inverted'
+               comment.item.1 Inverted
+               iface MIXER
+               name 'Playback Phase'
+               value 'Non Inverted'
+       }
+       control.48 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 3'
+               iface MIXER
+               name 'Mic2 Capture Volume'
+               value 2
+       }
+       control.49 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 3'
+               iface MIXER
+               name 'Mic1 Capture Volume'
+               value 0
+       }
+       control.50 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'DAI 0'
+               comment.item.1 'DAI 1'
+               comment.item.2 'DAI 2'
+               comment.item.3 'DAI 3'
+               iface MIXER
+               name 'DAI Mode'
+               value 'DAI 0'
+       }
+       control.51 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 'Left ADC'
+               comment.item.2 'Right ADC'
+               comment.item.3 'Channel Switch'
+               iface MIXER
+               name 'ADC Data Select'
+               value Stereo
+       }
+       control.52 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Non Inverted'
+               comment.item.1 Inverted
+               iface MIXER
+               name 'ROUT2 Phase'
+               value Inverted
+       }
+       control.53 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Mic 1'
+               comment.item.1 'Mic 2'
+               comment.item.2 'Mic 3'
+               iface MIXER
+               name 'Mic Selection Mux'
+               value 'Mic 1'
+       }
+       control.54 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'RXP - RXN'
+               comment.item.1 'RXP + RXN'
+               comment.item.2 RXP
+               comment.item.3 RXN
+               iface MIXER
+               name 'Rx Mixer'
+               value 'RXP - RXN'
+       }
+       control.55 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line 1 + 2'
+               comment.item.1 'Line 1 - 2'
+               comment.item.2 'Line 1'
+               comment.item.3 'Line 2'
+               iface MIXER
+               name 'Line Mixer'
+               value 'Line 1 + 2'
+       }
+       control.56 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line Mix'
+               comment.item.1 'Rx Mix'
+               iface MIXER
+               name 'Line Mono Mux'
+               value 'Line Mix'
+       }
+       control.57 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line 2'
+               comment.item.1 'Rx Mix'
+               iface MIXER
+               name 'Line Right Mux'
+               value 'Rx Mix'
+       }
+       control.58 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line 1'
+               comment.item.1 'Rx Mix'
+               iface MIXER
+               name 'Line Left Mux'
+               value 'Rx Mix'
+       }
+       control.59 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Line Capture Switch'
+               value false
+       }
+       control.60 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Mic2 Capture Switch'
+               value true
+       }
+       control.61 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Mic1 Capture Switch'
+               value false
+       }
+       control.62 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Rx Capture Switch'
+               value false
+       }
+       control.63 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Left PGA'
+               comment.item.1 'Mic 1'
+               comment.item.2 'Mic 2'
+               comment.item.3 'Right PGA'
+               iface MIXER
+               name 'Mic Sidetone Mux'
+               value 'Right PGA'
+       }
+       control.64 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 PGA
+               comment.item.1 'Line or RXP-RXN'
+               comment.item.2 Sidetone
+               iface MIXER
+               name 'Capture Right Mux'
+               value PGA
+       }
+       control.65 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 PGA
+               comment.item.1 'Line or RXP-RXN'
+               comment.item.2 Line
+               iface MIXER
+               name 'Capture Left Mux'
+               value PGA
+       }
+       control.66 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 'Analogue Mix Left'
+               comment.item.2 'Analogue Mix Right'
+               comment.item.3 'Digital Mono Mix'
+               iface MIXER
+               name 'Capture Right Mixer'
+               value Stereo
+       }
+       control.67 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 'Analogue Mix Left'
+               comment.item.2 'Analogue Mix Right'
+               comment.item.3 'Digital Mono Mix'
+               iface MIXER
+               name 'Capture Left Mixer'
+               value Stereo
+       }
+       control.68 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback Mixer Voice Capture Switch'
+               value false
+       }
+       control.69 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback Mixer Left Capture Switch'
+               value false
+       }
+       control.70 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback Mixer Right Capture Switch'
+               value false
+       }
+       control.71 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 VREF
+               comment.item.1 'Capture ST'
+               comment.item.2 LOUT2
+               iface MIXER
+               name 'Out4 Mux'
+               value VREF
+       }
+       control.72 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 VREF
+               comment.item.1 ROUT2
+               comment.item.2 'Left + Right'
+               iface MIXER
+               name 'Out3 Mux'
+               value VREF
+       }
+       control.73 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Inverted Mono 1'
+               comment.item.1 Left
+               comment.item.2 Right
+               comment.item.3 'Left + Right'
+               iface MIXER
+               name 'Mono 2 Mux'
+               value 'Inverted Mono 1'
+       }
+       control.74 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Left Playback Switch'
+               value false
+       }
+       control.75 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Right Playback Switch'
+               value false
+       }
+       control.76 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Voice Playback Switch'
+               value false
+       }
+       control.77 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Sidetone Playback Switch'
+               value true
+       }
+       control.78 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Bypass Playback Switch'
+               value false
+       }
+       control.79 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Voice Playback Switch'
+               value false
+       }
+       control.80 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Sidetone Playback Switch'
+               value false
+       }
+       control.81 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Right Playback Switch'
+               value false
+       }
+       control.82 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Bypass Playback Switch'
+               value true
+       }
+       control.83 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Voice Playback Switch'
+               value false
+       }
+       control.84 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Sidetone Playback Switch'
+               value false
+       }
+       control.85 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Left Playback Switch'
+               value false
+       }
+       control.86 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Bypass Playback Switch'
+               value true
+       }
+       control.87 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Stereo Out Switch'
+               value false
+       }
+       control.88 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'GSM Line Out Switch'
+               value true
+       }
+       control.89 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'GSM Line In Switch'
+               value true
+       }
+       control.90 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Headset Mic Switch'
+               value true
+       }
+       control.91 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Handset Mic Switch'
+               value true
+       }
+       control.92 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Handset Spk Switch'
+               value true
+       }
+       control.93 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Amp State Switch'
+               value false
+       }
+       control.94 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Amp Spk Switch'
+               value false
+       }
+}
diff --git a/phone/freerunner-alsa-scenarios/files/gsmheadset.state b/phone/freerunner-alsa-scenarios/files/gsmheadset.state
new file mode 100644 (file)
index 0000000..d9ebfa2
--- /dev/null
@@ -0,0 +1,885 @@
+state.neo1973gta02 {
+       control.1 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 255'
+               iface MIXER
+               name 'PCM Volume'
+               value.0 0
+               value.1 0
+       }
+       control.2 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 255'
+               iface MIXER
+               name 'ADC Capture Volume'
+               value.0 0
+               value.1 0
+       }
+       control.3 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 127'
+               iface MIXER
+               name 'Headphone Playback Volume'
+               value.0 96
+               value.1 96
+       }
+       control.4 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 127'
+               iface MIXER
+               name 'Speaker Playback Volume'
+               value.0 0
+               value.1 0
+       }
+       control.5 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 127'
+               iface MIXER
+               name 'Mono Playback Volume'
+               value 103
+       }
+       control.6 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Bypass Playback Volume'
+               value.0 7
+               value.1 7
+       }
+       control.7 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Sidetone Playback Volume'
+               value.0 0
+               value.1 0
+       }
+       control.8 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Voice Playback Volume'
+               value.0 0
+               value.1 0
+       }
+       control.9 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Headphone Playback ZC Switch'
+               value.0 false
+               value.1 false
+       }
+       control.10 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Speaker Playback ZC Switch'
+               value.0 false
+               value.1 false
+       }
+       control.11 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Mono Bypass Playback Volume'
+               value 0
+       }
+       control.12 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Mono Sidetone Playback Volume'
+               value 5
+       }
+       control.13 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Mono Voice Playback Volume'
+               value 0
+       }
+       control.14 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Playback ZC Switch'
+               value false
+       }
+       control.15 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Linear Control'
+               comment.item.1 'Adaptive Boost'
+               iface MIXER
+               name 'Bass Boost'
+               value 'Linear Control'
+       }
+       control.16 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '130Hz @ 48kHz'
+               comment.item.1 '200Hz @ 48kHz'
+               comment.item.2 '100Hz @ 16kHz'
+               comment.item.3 '400Hz @ 48kHz'
+               comment.item.4 '100Hz @ 8kHz'
+               comment.item.5 '200Hz @ 8kHz'
+               iface MIXER
+               name 'Bass Filter'
+               value '130Hz @ 48kHz'
+       }
+       control.17 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'Bass Volume'
+               value 0
+       }
+       control.18 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'Treble Volume'
+               value 0
+       }
+       control.19 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '8kHz'
+               comment.item.1 '4kHz'
+               iface MIXER
+               name 'Treble Cut-off'
+               value '8kHz'
+       }
+       control.20 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Sidetone Capture Volume'
+               value.0 0
+               value.1 0
+       }
+       control.21 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Voice Sidetone Capture Volume'
+               value 2
+       }
+       control.22 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 63'
+               iface MIXER
+               name 'Capture Volume'
+               value.0 0
+               value.1 0
+       }
+       control.23 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Capture ZC Switch'
+               value.0 false
+               value.1 false
+       }
+       control.24 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Capture Switch'
+               value.0 true
+               value.1 true
+       }
+       control.25 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '3.4Hz @ 48kHz'
+               comment.item.1 '82Hz @ 16k'
+               comment.item.2 '82Hz @ 8kHz'
+               comment.item.3 '170Hz @ 8kHz'
+               iface MIXER
+               name 'Capture Filter Select'
+               value '3.4Hz @ 48kHz'
+       }
+       control.26 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 HiFi
+               comment.item.1 Voice
+               iface MIXER
+               name 'Capture Filter Cut-off'
+               value HiFi
+       }
+       control.27 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Capture Filter Switch'
+               value false
+       }
+       control.28 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'ALC Capture Target Volume'
+               value 0
+       }
+       control.29 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'ALC Capture Max Volume'
+               value 0
+       }
+       control.30 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Off
+               comment.item.1 Right
+               comment.item.2 Left
+               comment.item.3 Stereo
+               iface MIXER
+               name 'ALC Capture Function'
+               value Off
+       }
+       control.31 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Capture ZC Switch'
+               value false
+       }
+       control.32 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'ALC Capture Hold Time'
+               value 0
+       }
+       control.33 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'ALC Capture Decay Time'
+               value 0
+       }
+       control.34 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'ALC Capture Attack Time'
+               value 0
+       }
+       control.35 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 31'
+               iface MIXER
+               name 'ALC Capture NG Threshold'
+               value 0
+       }
+       control.36 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Constant PGA Gain'
+               comment.item.1 'Mute ADC Output'
+               iface MIXER
+               name 'ALC Capture NG Type'
+               value 'Mute ADC Output'
+       }
+       control.37 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Capture NG Switch'
+               value false
+       }
+       control.38 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Capture
+               comment.item.1 Playback
+               iface MIXER
+               name '3D Function'
+               value Capture
+       }
+       control.39 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '2.2kHz'
+               comment.item.1 '1.5kHz'
+               iface MIXER
+               name '3D Upper Cut-off'
+               value '2.2kHz'
+       }
+       control.40 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '200Hz'
+               comment.item.1 '500Hz'
+               iface MIXER
+               name '3D Lower Cut-off'
+               value '200Hz'
+       }
+       control.41 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name '3D Volume'
+               value 0
+       }
+       control.42 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name '3D Switch'
+               value false
+       }
+       control.43 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Capture 6dB Attenuate'
+               value false
+       }
+       control.44 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback 6dB Attenuate'
+               value false
+       }
+       control.45 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 None
+               comment.item.1 '32kHz'
+               comment.item.2 '44.1kHz'
+               comment.item.3 '48kHz'
+               iface MIXER
+               name De-emphasis
+               value None
+       }
+       control.46 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 Left
+               comment.item.2 Right
+               comment.item.3 Mono
+               iface MIXER
+               name 'Playback Mono Mix'
+               value Stereo
+       }
+       control.47 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Non Inverted'
+               comment.item.1 Inverted
+               iface MIXER
+               name 'Playback Phase'
+               value 'Non Inverted'
+       }
+       control.48 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 3'
+               iface MIXER
+               name 'Mic2 Capture Volume'
+               value 0
+       }
+       control.49 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 3'
+               iface MIXER
+               name 'Mic1 Capture Volume'
+               value 0
+       }
+       control.50 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'DAI 0'
+               comment.item.1 'DAI 1'
+               comment.item.2 'DAI 2'
+               comment.item.3 'DAI 3'
+               iface MIXER
+               name 'DAI Mode'
+               value 'DAI 0'
+       }
+       control.51 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 'Left ADC'
+               comment.item.2 'Right ADC'
+               comment.item.3 'Channel Switch'
+               iface MIXER
+               name 'ADC Data Select'
+               value Stereo
+       }
+       control.52 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Non Inverted'
+               comment.item.1 Inverted
+               iface MIXER
+               name 'ROUT2 Phase'
+               value Inverted
+       }
+       control.53 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Mic 1'
+               comment.item.1 'Mic 2'
+               comment.item.2 'Mic 3'
+               iface MIXER
+               name 'Mic Selection Mux'
+               value 'Mic 1'
+       }
+       control.54 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'RXP - RXN'
+               comment.item.1 'RXP + RXN'
+               comment.item.2 RXP
+               comment.item.3 RXN
+               iface MIXER
+               name 'Rx Mixer'
+               value 'RXP - RXN'
+       }
+       control.55 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line 1 + 2'
+               comment.item.1 'Line 1 - 2'
+               comment.item.2 'Line 1'
+               comment.item.3 'Line 2'
+               iface MIXER
+               name 'Line Mixer'
+               value 'Line 1 + 2'
+       }
+       control.56 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line Mix'
+               comment.item.1 'Rx Mix'
+               iface MIXER
+               name 'Line Mono Mux'
+               value 'Line Mix'
+       }
+       control.57 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line 2'
+               comment.item.1 'Rx Mix'
+               iface MIXER
+               name 'Line Right Mux'
+               value 'Rx Mix'
+       }
+       control.58 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line 1'
+               comment.item.1 'Rx Mix'
+               iface MIXER
+               name 'Line Left Mux'
+               value 'Rx Mix'
+       }
+       control.59 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Line Capture Switch'
+               value false
+       }
+       control.60 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Mic2 Capture Switch'
+               value true
+       }
+       control.61 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Mic1 Capture Switch'
+               value false
+       }
+       control.62 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Rx Capture Switch'
+               value false
+       }
+       control.63 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Left PGA'
+               comment.item.1 'Mic 1'
+               comment.item.2 'Mic 2'
+               comment.item.3 'Right PGA'
+               iface MIXER
+               name 'Mic Sidetone Mux'
+               value 'Mic 1'
+       }
+       control.64 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 PGA
+               comment.item.1 'Line or RXP-RXN'
+               comment.item.2 Sidetone
+               iface MIXER
+               name 'Capture Right Mux'
+               value PGA
+       }
+       control.65 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 PGA
+               comment.item.1 'Line or RXP-RXN'
+               comment.item.2 Line
+               iface MIXER
+               name 'Capture Left Mux'
+               value PGA
+       }
+       control.66 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 'Analogue Mix Left'
+               comment.item.2 'Analogue Mix Right'
+               comment.item.3 'Digital Mono Mix'
+               iface MIXER
+               name 'Capture Right Mixer'
+               value Stereo
+       }
+       control.67 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 'Analogue Mix Left'
+               comment.item.2 'Analogue Mix Right'
+               comment.item.3 'Digital Mono Mix'
+               iface MIXER
+               name 'Capture Left Mixer'
+               value Stereo
+       }
+       control.68 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback Mixer Voice Capture Switch'
+               value false
+       }
+       control.69 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback Mixer Left Capture Switch'
+               value false
+       }
+       control.70 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback Mixer Right Capture Switch'
+               value false
+       }
+       control.71 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 VREF
+               comment.item.1 'Capture ST'
+               comment.item.2 LOUT2
+               iface MIXER
+               name 'Out4 Mux'
+               value VREF
+       }
+       control.72 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 VREF
+               comment.item.1 ROUT2
+               comment.item.2 'Left + Right'
+               iface MIXER
+               name 'Out3 Mux'
+               value VREF
+       }
+       control.73 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Inverted Mono 1'
+               comment.item.1 Left
+               comment.item.2 Right
+               comment.item.3 'Left + Right'
+               iface MIXER
+               name 'Mono 2 Mux'
+               value 'Inverted Mono 1'
+       }
+       control.74 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Left Playback Switch'
+               value false
+       }
+       control.75 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Right Playback Switch'
+               value false
+       }
+       control.76 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Voice Playback Switch'
+               value false
+       }
+       control.77 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Sidetone Playback Switch'
+               value true
+       }
+       control.78 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Bypass Playback Switch'
+               value false
+       }
+       control.79 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Voice Playback Switch'
+               value false
+       }
+       control.80 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Sidetone Playback Switch'
+               value false
+       }
+       control.81 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Right Playback Switch'
+               value false
+       }
+       control.82 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Bypass Playback Switch'
+               value true
+       }
+       control.83 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Voice Playback Switch'
+               value false
+       }
+       control.84 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Sidetone Playback Switch'
+               value false
+       }
+       control.85 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Left Playback Switch'
+               value false
+       }
+       control.86 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Bypass Playback Switch'
+               value true
+       }
+       control.87 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Stereo Out Switch'
+               value true
+       }
+       control.88 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'GSM Line Out Switch'
+               value true
+       }
+       control.89 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'GSM Line In Switch'
+               value true
+       }
+       control.90 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Headset Mic Switch'
+               value true
+       }
+       control.91 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Handset Mic Switch'
+               value true
+       }
+       control.92 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Handset Spk Switch'
+               value false
+       }
+       control.93 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Amp State Switch'
+               value true
+       }
+       control.94 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Amp Spk Switch'
+               value false
+       }
+}
diff --git a/phone/freerunner-alsa-scenarios/files/gsmspeakerout.state b/phone/freerunner-alsa-scenarios/files/gsmspeakerout.state
new file mode 100644 (file)
index 0000000..b88e5fc
--- /dev/null
@@ -0,0 +1,885 @@
+state.neo1973gta02 {
+       control.1 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 255'
+               iface MIXER
+               name 'PCM Volume'
+               value.0 0
+               value.1 0
+       }
+       control.2 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 255'
+               iface MIXER
+               name 'ADC Capture Volume'
+               value.0 0
+               value.1 0
+       }
+       control.3 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 127'
+               iface MIXER
+               name 'Headphone Playback Volume'
+               value.0 127
+               value.1 127
+       }
+       control.4 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 127'
+               iface MIXER
+               name 'Speaker Playback Volume'
+               value.0 0
+               value.1 0
+       }
+       control.5 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 127'
+               iface MIXER
+               name 'Mono Playback Volume'
+               value 103
+       }
+       control.6 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Bypass Playback Volume'
+               value.0 7
+               value.1 7
+       }
+       control.7 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Sidetone Playback Volume'
+               value.0 0
+               value.1 0
+       }
+       control.8 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Voice Playback Volume'
+               value.0 0
+               value.1 0
+       }
+       control.9 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Headphone Playback ZC Switch'
+               value.0 false
+               value.1 false
+       }
+       control.10 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Speaker Playback ZC Switch'
+               value.0 false
+               value.1 false
+       }
+       control.11 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Mono Bypass Playback Volume'
+               value 0
+       }
+       control.12 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Mono Sidetone Playback Volume'
+               value 6
+       }
+       control.13 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Mono Voice Playback Volume'
+               value 0
+       }
+       control.14 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Playback ZC Switch'
+               value false
+       }
+       control.15 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Linear Control'
+               comment.item.1 'Adaptive Boost'
+               iface MIXER
+               name 'Bass Boost'
+               value 'Linear Control'
+       }
+       control.16 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '130Hz @ 48kHz'
+               comment.item.1 '200Hz @ 48kHz'
+               comment.item.2 '100Hz @ 16kHz'
+               comment.item.3 '400Hz @ 48kHz'
+               comment.item.4 '100Hz @ 8kHz'
+               comment.item.5 '200Hz @ 8kHz'
+               iface MIXER
+               name 'Bass Filter'
+               value '130Hz @ 48kHz'
+       }
+       control.17 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'Bass Volume'
+               value 0
+       }
+       control.18 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'Treble Volume'
+               value 0
+       }
+       control.19 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '8kHz'
+               comment.item.1 '4kHz'
+               iface MIXER
+               name 'Treble Cut-off'
+               value '8kHz'
+       }
+       control.20 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Sidetone Capture Volume'
+               value.0 0
+               value.1 0
+       }
+       control.21 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Voice Sidetone Capture Volume'
+               value 2
+       }
+       control.22 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 63'
+               iface MIXER
+               name 'Capture Volume'
+               value.0 0
+               value.1 0
+       }
+       control.23 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Capture ZC Switch'
+               value.0 false
+               value.1 false
+       }
+       control.24 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Capture Switch'
+               value.0 true
+               value.1 true
+       }
+       control.25 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '3.4Hz @ 48kHz'
+               comment.item.1 '82Hz @ 16k'
+               comment.item.2 '82Hz @ 8kHz'
+               comment.item.3 '170Hz @ 8kHz'
+               iface MIXER
+               name 'Capture Filter Select'
+               value '3.4Hz @ 48kHz'
+       }
+       control.26 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 HiFi
+               comment.item.1 Voice
+               iface MIXER
+               name 'Capture Filter Cut-off'
+               value HiFi
+       }
+       control.27 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Capture Filter Switch'
+               value false
+       }
+       control.28 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'ALC Capture Target Volume'
+               value 0
+       }
+       control.29 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'ALC Capture Max Volume'
+               value 0
+       }
+       control.30 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Off
+               comment.item.1 Right
+               comment.item.2 Left
+               comment.item.3 Stereo
+               iface MIXER
+               name 'ALC Capture Function'
+               value Off
+       }
+       control.31 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Capture ZC Switch'
+               value false
+       }
+       control.32 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'ALC Capture Hold Time'
+               value 0
+       }
+       control.33 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'ALC Capture Decay Time'
+               value 0
+       }
+       control.34 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'ALC Capture Attack Time'
+               value 0
+       }
+       control.35 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 31'
+               iface MIXER
+               name 'ALC Capture NG Threshold'
+               value 0
+       }
+       control.36 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Constant PGA Gain'
+               comment.item.1 'Mute ADC Output'
+               iface MIXER
+               name 'ALC Capture NG Type'
+               value 'Mute ADC Output'
+       }
+       control.37 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Capture NG Switch'
+               value false
+       }
+       control.38 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Capture
+               comment.item.1 Playback
+               iface MIXER
+               name '3D Function'
+               value Capture
+       }
+       control.39 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '2.2kHz'
+               comment.item.1 '1.5kHz'
+               iface MIXER
+               name '3D Upper Cut-off'
+               value '2.2kHz'
+       }
+       control.40 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '200Hz'
+               comment.item.1 '500Hz'
+               iface MIXER
+               name '3D Lower Cut-off'
+               value '200Hz'
+       }
+       control.41 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name '3D Volume'
+               value 0
+       }
+       control.42 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name '3D Switch'
+               value false
+       }
+       control.43 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Capture 6dB Attenuate'
+               value false
+       }
+       control.44 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback 6dB Attenuate'
+               value false
+       }
+       control.45 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 None
+               comment.item.1 '32kHz'
+               comment.item.2 '44.1kHz'
+               comment.item.3 '48kHz'
+               iface MIXER
+               name De-emphasis
+               value None
+       }
+       control.46 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 Left
+               comment.item.2 Right
+               comment.item.3 Mono
+               iface MIXER
+               name 'Playback Mono Mix'
+               value Stereo
+       }
+       control.47 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Non Inverted'
+               comment.item.1 Inverted
+               iface MIXER
+               name 'Playback Phase'
+               value 'Non Inverted'
+       }
+       control.48 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 3'
+               iface MIXER
+               name 'Mic2 Capture Volume'
+               value 0
+       }
+       control.49 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 3'
+               iface MIXER
+               name 'Mic1 Capture Volume'
+               value 0
+       }
+       control.50 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'DAI 0'
+               comment.item.1 'DAI 1'
+               comment.item.2 'DAI 2'
+               comment.item.3 'DAI 3'
+               iface MIXER
+               name 'DAI Mode'
+               value 'DAI 0'
+       }
+       control.51 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 'Left ADC'
+               comment.item.2 'Right ADC'
+               comment.item.3 'Channel Switch'
+               iface MIXER
+               name 'ADC Data Select'
+               value Stereo
+       }
+       control.52 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Non Inverted'
+               comment.item.1 Inverted
+               iface MIXER
+               name 'ROUT2 Phase'
+               value Inverted
+       }
+       control.53 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Mic 1'
+               comment.item.1 'Mic 2'
+               comment.item.2 'Mic 3'
+               iface MIXER
+               name 'Mic Selection Mux'
+               value 'Mic 1'
+       }
+       control.54 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'RXP - RXN'
+               comment.item.1 'RXP + RXN'
+               comment.item.2 RXP
+               comment.item.3 RXN
+               iface MIXER
+               name 'Rx Mixer'
+               value 'RXP - RXN'
+       }
+       control.55 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line 1 + 2'
+               comment.item.1 'Line 1 - 2'
+               comment.item.2 'Line 1'
+               comment.item.3 'Line 2'
+               iface MIXER
+               name 'Line Mixer'
+               value 'Line 1 + 2'
+       }
+       control.56 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line Mix'
+               comment.item.1 'Rx Mix'
+               iface MIXER
+               name 'Line Mono Mux'
+               value 'Line Mix'
+       }
+       control.57 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line 2'
+               comment.item.1 'Rx Mix'
+               iface MIXER
+               name 'Line Right Mux'
+               value 'Rx Mix'
+       }
+       control.58 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line 1'
+               comment.item.1 'Rx Mix'
+               iface MIXER
+               name 'Line Left Mux'
+               value 'Rx Mix'
+       }
+       control.59 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Line Capture Switch'
+               value false
+       }
+       control.60 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Mic2 Capture Switch'
+               value true
+       }
+       control.61 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Mic1 Capture Switch'
+               value false
+       }
+       control.62 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Rx Capture Switch'
+               value false
+       }
+       control.63 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Left PGA'
+               comment.item.1 'Mic 1'
+               comment.item.2 'Mic 2'
+               comment.item.3 'Right PGA'
+               iface MIXER
+               name 'Mic Sidetone Mux'
+               value 'Mic 2'
+       }
+       control.64 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 PGA
+               comment.item.1 'Line or RXP-RXN'
+               comment.item.2 Sidetone
+               iface MIXER
+               name 'Capture Right Mux'
+               value PGA
+       }
+       control.65 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 PGA
+               comment.item.1 'Line or RXP-RXN'
+               comment.item.2 Line
+               iface MIXER
+               name 'Capture Left Mux'
+               value PGA
+       }
+       control.66 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 'Analogue Mix Left'
+               comment.item.2 'Analogue Mix Right'
+               comment.item.3 'Digital Mono Mix'
+               iface MIXER
+               name 'Capture Right Mixer'
+               value Stereo
+       }
+       control.67 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 'Analogue Mix Left'
+               comment.item.2 'Analogue Mix Right'
+               comment.item.3 'Digital Mono Mix'
+               iface MIXER
+               name 'Capture Left Mixer'
+               value Stereo
+       }
+       control.68 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback Mixer Voice Capture Switch'
+               value false
+       }
+       control.69 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback Mixer Left Capture Switch'
+               value false
+       }
+       control.70 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback Mixer Right Capture Switch'
+               value false
+       }
+       control.71 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 VREF
+               comment.item.1 'Capture ST'
+               comment.item.2 LOUT2
+               iface MIXER
+               name 'Out4 Mux'
+               value VREF
+       }
+       control.72 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 VREF
+               comment.item.1 ROUT2
+               comment.item.2 'Left + Right'
+               iface MIXER
+               name 'Out3 Mux'
+               value VREF
+       }
+       control.73 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Inverted Mono 1'
+               comment.item.1 Left
+               comment.item.2 Right
+               comment.item.3 'Left + Right'
+               iface MIXER
+               name 'Mono 2 Mux'
+               value 'Inverted Mono 1'
+       }
+       control.74 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Left Playback Switch'
+               value false
+       }
+       control.75 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Right Playback Switch'
+               value false
+       }
+       control.76 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Voice Playback Switch'
+               value false
+       }
+       control.77 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Sidetone Playback Switch'
+               value true
+       }
+       control.78 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Bypass Playback Switch'
+               value false
+       }
+       control.79 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Voice Playback Switch'
+               value false
+       }
+       control.80 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Sidetone Playback Switch'
+               value false
+       }
+       control.81 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Right Playback Switch'
+               value false
+       }
+       control.82 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Bypass Playback Switch'
+               value true
+       }
+       control.83 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Voice Playback Switch'
+               value false
+       }
+       control.84 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Sidetone Playback Switch'
+               value false
+       }
+       control.85 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Left Playback Switch'
+               value false
+       }
+       control.86 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Bypass Playback Switch'
+               value true
+       }
+       control.87 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Stereo Out Switch'
+               value false
+       }
+       control.88 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'GSM Line Out Switch'
+               value true
+       }
+       control.89 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'GSM Line In Switch'
+               value true
+       }
+       control.90 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Headset Mic Switch'
+               value true
+       }
+       control.91 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Handset Mic Switch'
+               value true
+       }
+       control.92 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Handset Spk Switch'
+               value true
+       }
+       control.93 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Amp State Switch'
+               value true
+       }
+       control.94 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Amp Spk Switch'
+               value true
+       }
+}
diff --git a/phone/freerunner-alsa-scenarios/files/headset.state b/phone/freerunner-alsa-scenarios/files/headset.state
new file mode 100644 (file)
index 0000000..6dc335d
--- /dev/null
@@ -0,0 +1,885 @@
+state.neo1973gta02 {
+       control.1 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 255'
+               iface MIXER
+               name 'PCM Volume'
+               value.0 235
+               value.1 235
+       }
+       control.2 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 255'
+               iface MIXER
+               name 'ADC Capture Volume'
+               value.0 195
+               value.1 195
+       }
+       control.3 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 127'
+               iface MIXER
+               name 'Headphone Playback Volume'
+               value.0 127
+               value.1 127
+       }
+       control.4 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 127'
+               iface MIXER
+               name 'Speaker Playback Volume'
+               value.0 0
+               value.1 0
+       }
+       control.5 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 127'
+               iface MIXER
+               name 'Mono Playback Volume'
+               value 121
+       }
+       control.6 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Bypass Playback Volume'
+               value.0 2
+               value.1 2
+       }
+       control.7 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Sidetone Playback Volume'
+               value.0 2
+               value.1 2
+       }
+       control.8 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Voice Playback Volume'
+               value.0 2
+               value.1 2
+       }
+       control.9 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Headphone Playback ZC Switch'
+               value.0 false
+               value.1 false
+       }
+       control.10 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Speaker Playback ZC Switch'
+               value.0 false
+               value.1 false
+       }
+       control.11 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Mono Bypass Playback Volume'
+               value 2
+       }
+       control.12 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Mono Sidetone Playback Volume'
+               value 2
+       }
+       control.13 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Mono Voice Playback Volume'
+               value 2
+       }
+       control.14 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Playback ZC Switch'
+               value false
+       }
+       control.15 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Linear Control'
+               comment.item.1 'Adaptive Boost'
+               iface MIXER
+               name 'Bass Boost'
+               value 'Linear Control'
+       }
+       control.16 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '130Hz @ 48kHz'
+               comment.item.1 '200Hz @ 48kHz'
+               comment.item.2 '100Hz @ 16kHz'
+               comment.item.3 '400Hz @ 48kHz'
+               comment.item.4 '100Hz @ 8kHz'
+               comment.item.5 '200Hz @ 8kHz'
+               iface MIXER
+               name 'Bass Filter'
+               value '130Hz @ 48kHz'
+       }
+       control.17 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'Bass Volume'
+               value 0
+       }
+       control.18 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'Treble Volume'
+               value 0
+       }
+       control.19 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '8kHz'
+               comment.item.1 '4kHz'
+               iface MIXER
+               name 'Treble Cut-off'
+               value '8kHz'
+       }
+       control.20 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Sidetone Capture Volume'
+               value.0 2
+               value.1 2
+       }
+       control.21 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Voice Sidetone Capture Volume'
+               value 2
+       }
+       control.22 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 63'
+               iface MIXER
+               name 'Capture Volume'
+               value.0 23
+               value.1 23
+       }
+       control.23 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Capture ZC Switch'
+               value.0 false
+               value.1 false
+       }
+       control.24 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Capture Switch'
+               value.0 false
+               value.1 false
+       }
+       control.25 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '3.4Hz @ 48kHz'
+               comment.item.1 '82Hz @ 16k'
+               comment.item.2 '82Hz @ 8kHz'
+               comment.item.3 '170Hz @ 8kHz'
+               iface MIXER
+               name 'Capture Filter Select'
+               value '3.4Hz @ 48kHz'
+       }
+       control.26 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 HiFi
+               comment.item.1 Voice
+               iface MIXER
+               name 'Capture Filter Cut-off'
+               value HiFi
+       }
+       control.27 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Capture Filter Switch'
+               value true
+       }
+       control.28 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'ALC Capture Target Volume'
+               value 3
+       }
+       control.29 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'ALC Capture Max Volume'
+               value 7
+       }
+       control.30 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Off
+               comment.item.1 Right
+               comment.item.2 Left
+               comment.item.3 Stereo
+               iface MIXER
+               name 'ALC Capture Function'
+               value Off
+       }
+       control.31 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Capture ZC Switch'
+               value false
+       }
+       control.32 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'ALC Capture Hold Time'
+               value 15
+       }
+       control.33 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'ALC Capture Decay Time'
+               value 12
+       }
+       control.34 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'ALC Capture Attack Time'
+               value 2
+       }
+       control.35 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 31'
+               iface MIXER
+               name 'ALC Capture NG Threshold'
+               value 0
+       }
+       control.36 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Constant PGA Gain'
+               comment.item.1 'Mute ADC Output'
+               iface MIXER
+               name 'ALC Capture NG Type'
+               value 'Constant PGA Gain'
+       }
+       control.37 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Capture NG Switch'
+               value false
+       }
+       control.38 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Capture
+               comment.item.1 Playback
+               iface MIXER
+               name '3D Function'
+               value Capture
+       }
+       control.39 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '2.2kHz'
+               comment.item.1 '1.5kHz'
+               iface MIXER
+               name '3D Upper Cut-off'
+               value '2.2kHz'
+       }
+       control.40 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '200Hz'
+               comment.item.1 '500Hz'
+               iface MIXER
+               name '3D Lower Cut-off'
+               value '200Hz'
+       }
+       control.41 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name '3D Volume'
+               value 0
+       }
+       control.42 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name '3D Switch'
+               value false
+       }
+       control.43 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Capture 6dB Attenuate'
+               value false
+       }
+       control.44 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback 6dB Attenuate'
+               value false
+       }
+       control.45 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 None
+               comment.item.1 '32kHz'
+               comment.item.2 '44.1kHz'
+               comment.item.3 '48kHz'
+               iface MIXER
+               name De-emphasis
+               value None
+       }
+       control.46 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 Left
+               comment.item.2 Right
+               comment.item.3 Mono
+               iface MIXER
+               name 'Playback Mono Mix'
+               value Stereo
+       }
+       control.47 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Non Inverted'
+               comment.item.1 Inverted
+               iface MIXER
+               name 'Playback Phase'
+               value 'Non Inverted'
+       }
+       control.48 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 3'
+               iface MIXER
+               name 'Mic2 Capture Volume'
+               value 0
+       }
+       control.49 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 3'
+               iface MIXER
+               name 'Mic1 Capture Volume'
+               value 0
+       }
+       control.50 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'DAI 0'
+               comment.item.1 'DAI 1'
+               comment.item.2 'DAI 2'
+               comment.item.3 'DAI 3'
+               iface MIXER
+               name 'DAI Mode'
+               value 'DAI 0'
+       }
+       control.51 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 'Left ADC'
+               comment.item.2 'Right ADC'
+               comment.item.3 'Channel Switch'
+               iface MIXER
+               name 'ADC Data Select'
+               value Stereo
+       }
+       control.52 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Non Inverted'
+               comment.item.1 Inverted
+               iface MIXER
+               name 'ROUT2 Phase'
+               value Inverted
+       }
+       control.53 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Mic 1'
+               comment.item.1 'Mic 2'
+               comment.item.2 'Mic 3'
+               iface MIXER
+               name 'Mic Selection Mux'
+               value 'Mic 1'
+       }
+       control.54 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'RXP - RXN'
+               comment.item.1 'RXP + RXN'
+               comment.item.2 RXP
+               comment.item.3 RXN
+               iface MIXER
+               name 'Rx Mixer'
+               value 'RXP - RXN'
+       }
+       control.55 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line 1 + 2'
+               comment.item.1 'Line 1 - 2'
+               comment.item.2 'Line 1'
+               comment.item.3 'Line 2'
+               iface MIXER
+               name 'Line Mixer'
+               value 'Line 1 + 2'
+       }
+       control.56 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line Mix'
+               comment.item.1 'Rx Mix'
+               iface MIXER
+               name 'Line Mono Mux'
+               value 'Line Mix'
+       }
+       control.57 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line 2'
+               comment.item.1 'Rx Mix'
+               iface MIXER
+               name 'Line Right Mux'
+               value 'Rx Mix'
+       }
+       control.58 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line 1'
+               comment.item.1 'Rx Mix'
+               iface MIXER
+               name 'Line Left Mux'
+               value 'Rx Mix'
+       }
+       control.59 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Line Capture Switch'
+               value false
+       }
+       control.60 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Mic2 Capture Switch'
+               value false
+       }
+       control.61 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Mic1 Capture Switch'
+               value false
+       }
+       control.62 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Rx Capture Switch'
+               value false
+       }
+       control.63 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Left PGA'
+               comment.item.1 'Mic 1'
+               comment.item.2 'Mic 2'
+               comment.item.3 'Right PGA'
+               iface MIXER
+               name 'Mic Sidetone Mux'
+               value 'Left PGA'
+       }
+       control.64 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 PGA
+               comment.item.1 'Line or RXP-RXN'
+               comment.item.2 Sidetone
+               iface MIXER
+               name 'Capture Right Mux'
+               value PGA
+       }
+       control.65 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 PGA
+               comment.item.1 'Line or RXP-RXN'
+               comment.item.2 Line
+               iface MIXER
+               name 'Capture Left Mux'
+               value PGA
+       }
+       control.66 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 'Analogue Mix Left'
+               comment.item.2 'Analogue Mix Right'
+               comment.item.3 'Digital Mono Mix'
+               iface MIXER
+               name 'Capture Right Mixer'
+               value Stereo
+       }
+       control.67 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 'Analogue Mix Left'
+               comment.item.2 'Analogue Mix Right'
+               comment.item.3 'Digital Mono Mix'
+               iface MIXER
+               name 'Capture Left Mixer'
+               value Stereo
+       }
+       control.68 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback Mixer Voice Capture Switch'
+               value false
+       }
+       control.69 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback Mixer Left Capture Switch'
+               value false
+       }
+       control.70 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback Mixer Right Capture Switch'
+               value false
+       }
+       control.71 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 VREF
+               comment.item.1 'Capture ST'
+               comment.item.2 LOUT2
+               iface MIXER
+               name 'Out4 Mux'
+               value VREF
+       }
+       control.72 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 VREF
+               comment.item.1 ROUT2
+               comment.item.2 'Left + Right'
+               iface MIXER
+               name 'Out3 Mux'
+               value VREF
+       }
+       control.73 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Inverted Mono 1'
+               comment.item.1 Left
+               comment.item.2 Right
+               comment.item.3 'Left + Right'
+               iface MIXER
+               name 'Mono 2 Mux'
+               value 'Inverted Mono 1'
+       }
+       control.74 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Left Playback Switch'
+               value false
+       }
+       control.75 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Right Playback Switch'
+               value false
+       }
+       control.76 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Voice Playback Switch'
+               value false
+       }
+       control.77 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Sidetone Playback Switch'
+               value false
+       }
+       control.78 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Bypass Playback Switch'
+               value false
+       }
+       control.79 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Voice Playback Switch'
+               value false
+       }
+       control.80 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Sidetone Playback Switch'
+               value false
+       }
+       control.81 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Right Playback Switch'
+               value true
+       }
+       control.82 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Bypass Playback Switch'
+               value false
+       }
+       control.83 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Voice Playback Switch'
+               value false
+       }
+       control.84 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Sidetone Playback Switch'
+               value false
+       }
+       control.85 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Left Playback Switch'
+               value true
+       }
+       control.86 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Bypass Playback Switch'
+               value false
+       }
+       control.87 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Stereo Out Switch'
+               value true
+       }
+       control.88 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'GSM Line Out Switch'
+               value false
+       }
+       control.89 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'GSM Line In Switch'
+               value false
+       }
+       control.90 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Headset Mic Switch'
+               value false
+       }
+       control.91 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Handset Mic Switch'
+               value false
+       }
+       control.92 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Handset Spk Switch'
+               value false
+       }
+       control.93 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Amp State Switch'
+               value true
+       }
+       control.94 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Amp Spk Switch'
+               value false
+       }
+}
diff --git a/phone/freerunner-alsa-scenarios/files/stereoout.state b/phone/freerunner-alsa-scenarios/files/stereoout.state
new file mode 100644 (file)
index 0000000..6539909
--- /dev/null
@@ -0,0 +1,885 @@
+state.neo1973gta02 {
+       control.1 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 255'
+               iface MIXER
+               name 'PCM Volume'
+               value.0 235
+               value.1 235
+       }
+       control.2 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 255'
+               iface MIXER
+               name 'ADC Capture Volume'
+               value.0 195
+               value.1 195
+       }
+       control.3 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 127'
+               iface MIXER
+               name 'Headphone Playback Volume'
+               value.0 127
+               value.1 127
+       }
+       control.4 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 127'
+               iface MIXER
+               name 'Speaker Playback Volume'
+               value.0 0
+               value.1 0
+       }
+       control.5 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 127'
+               iface MIXER
+               name 'Mono Playback Volume'
+               value 121
+       }
+       control.6 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Bypass Playback Volume'
+               value.0 2
+               value.1 2
+       }
+       control.7 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Sidetone Playback Volume'
+               value.0 2
+               value.1 2
+       }
+       control.8 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Voice Playback Volume'
+               value.0 2
+               value.1 2
+       }
+       control.9 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Headphone Playback ZC Switch'
+               value.0 false
+               value.1 false
+       }
+       control.10 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Speaker Playback ZC Switch'
+               value.0 false
+               value.1 false
+       }
+       control.11 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Mono Bypass Playback Volume'
+               value 2
+       }
+       control.12 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Mono Sidetone Playback Volume'
+               value 2
+       }
+       control.13 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Mono Voice Playback Volume'
+               value 2
+       }
+       control.14 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Playback ZC Switch'
+               value false
+       }
+       control.15 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Linear Control'
+               comment.item.1 'Adaptive Boost'
+               iface MIXER
+               name 'Bass Boost'
+               value 'Linear Control'
+       }
+       control.16 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '130Hz @ 48kHz'
+               comment.item.1 '200Hz @ 48kHz'
+               comment.item.2 '100Hz @ 16kHz'
+               comment.item.3 '400Hz @ 48kHz'
+               comment.item.4 '100Hz @ 8kHz'
+               comment.item.5 '200Hz @ 8kHz'
+               iface MIXER
+               name 'Bass Filter'
+               value '130Hz @ 48kHz'
+       }
+       control.17 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'Bass Volume'
+               value 0
+       }
+       control.18 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'Treble Volume'
+               value 0
+       }
+       control.19 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '8kHz'
+               comment.item.1 '4kHz'
+               iface MIXER
+               name 'Treble Cut-off'
+               value '8kHz'
+       }
+       control.20 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Sidetone Capture Volume'
+               value.0 2
+               value.1 2
+       }
+       control.21 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Voice Sidetone Capture Volume'
+               value 2
+       }
+       control.22 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 63'
+               iface MIXER
+               name 'Capture Volume'
+               value.0 23
+               value.1 23
+       }
+       control.23 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Capture ZC Switch'
+               value.0 false
+               value.1 false
+       }
+       control.24 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Capture Switch'
+               value.0 false
+               value.1 false
+       }
+       control.25 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '3.4Hz @ 48kHz'
+               comment.item.1 '82Hz @ 16k'
+               comment.item.2 '82Hz @ 8kHz'
+               comment.item.3 '170Hz @ 8kHz'
+               iface MIXER
+               name 'Capture Filter Select'
+               value '3.4Hz @ 48kHz'
+       }
+       control.26 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 HiFi
+               comment.item.1 Voice
+               iface MIXER
+               name 'Capture Filter Cut-off'
+               value HiFi
+       }
+       control.27 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Capture Filter Switch'
+               value true
+       }
+       control.28 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'ALC Capture Target Volume'
+               value 3
+       }
+       control.29 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'ALC Capture Max Volume'
+               value 7
+       }
+       control.30 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Off
+               comment.item.1 Right
+               comment.item.2 Left
+               comment.item.3 Stereo
+               iface MIXER
+               name 'ALC Capture Function'
+               value Off
+       }
+       control.31 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Capture ZC Switch'
+               value false
+       }
+       control.32 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'ALC Capture Hold Time'
+               value 15
+       }
+       control.33 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'ALC Capture Decay Time'
+               value 12
+       }
+       control.34 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'ALC Capture Attack Time'
+               value 2
+       }
+       control.35 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 31'
+               iface MIXER
+               name 'ALC Capture NG Threshold'
+               value 0
+       }
+       control.36 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Constant PGA Gain'
+               comment.item.1 'Mute ADC Output'
+               iface MIXER
+               name 'ALC Capture NG Type'
+               value 'Constant PGA Gain'
+       }
+       control.37 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Capture NG Switch'
+               value false
+       }
+       control.38 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Capture
+               comment.item.1 Playback
+               iface MIXER
+               name '3D Function'
+               value Capture
+       }
+       control.39 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '2.2kHz'
+               comment.item.1 '1.5kHz'
+               iface MIXER
+               name '3D Upper Cut-off'
+               value '2.2kHz'
+       }
+       control.40 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '200Hz'
+               comment.item.1 '500Hz'
+               iface MIXER
+               name '3D Lower Cut-off'
+               value '200Hz'
+       }
+       control.41 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name '3D Volume'
+               value 0
+       }
+       control.42 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name '3D Switch'
+               value false
+       }
+       control.43 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Capture 6dB Attenuate'
+               value false
+       }
+       control.44 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback 6dB Attenuate'
+               value false
+       }
+       control.45 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 None
+               comment.item.1 '32kHz'
+               comment.item.2 '44.1kHz'
+               comment.item.3 '48kHz'
+               iface MIXER
+               name De-emphasis
+               value None
+       }
+       control.46 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 Left
+               comment.item.2 Right
+               comment.item.3 Mono
+               iface MIXER
+               name 'Playback Mono Mix'
+               value Stereo
+       }
+       control.47 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Non Inverted'
+               comment.item.1 Inverted
+               iface MIXER
+               name 'Playback Phase'
+               value 'Non Inverted'
+       }
+       control.48 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 3'
+               iface MIXER
+               name 'Mic2 Capture Volume'
+               value 0
+       }
+       control.49 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 3'
+               iface MIXER
+               name 'Mic1 Capture Volume'
+               value 0
+       }
+       control.50 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'DAI 0'
+               comment.item.1 'DAI 1'
+               comment.item.2 'DAI 2'
+               comment.item.3 'DAI 3'
+               iface MIXER
+               name 'DAI Mode'
+               value 'DAI 0'
+       }
+       control.51 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 'Left ADC'
+               comment.item.2 'Right ADC'
+               comment.item.3 'Channel Switch'
+               iface MIXER
+               name 'ADC Data Select'
+               value Stereo
+       }
+       control.52 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Non Inverted'
+               comment.item.1 Inverted
+               iface MIXER
+               name 'ROUT2 Phase'
+               value Inverted
+       }
+       control.53 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Mic 1'
+               comment.item.1 'Mic 2'
+               comment.item.2 'Mic 3'
+               iface MIXER
+               name 'Mic Selection Mux'
+               value 'Mic 1'
+       }
+       control.54 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'RXP - RXN'
+               comment.item.1 'RXP + RXN'
+               comment.item.2 RXP
+               comment.item.3 RXN
+               iface MIXER
+               name 'Rx Mixer'
+               value 'RXP - RXN'
+       }
+       control.55 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line 1 + 2'
+               comment.item.1 'Line 1 - 2'
+               comment.item.2 'Line 1'
+               comment.item.3 'Line 2'
+               iface MIXER
+               name 'Line Mixer'
+               value 'Line 1 + 2'
+       }
+       control.56 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line Mix'
+               comment.item.1 'Rx Mix'
+               iface MIXER
+               name 'Line Mono Mux'
+               value 'Line Mix'
+       }
+       control.57 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line 2'
+               comment.item.1 'Rx Mix'
+               iface MIXER
+               name 'Line Right Mux'
+               value 'Rx Mix'
+       }
+       control.58 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line 1'
+               comment.item.1 'Rx Mix'
+               iface MIXER
+               name 'Line Left Mux'
+               value 'Rx Mix'
+       }
+       control.59 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Line Capture Switch'
+               value false
+       }
+       control.60 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Mic2 Capture Switch'
+               value false
+       }
+       control.61 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Mic1 Capture Switch'
+               value false
+       }
+       control.62 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Rx Capture Switch'
+               value false
+       }
+       control.63 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Left PGA'
+               comment.item.1 'Mic 1'
+               comment.item.2 'Mic 2'
+               comment.item.3 'Right PGA'
+               iface MIXER
+               name 'Mic Sidetone Mux'
+               value 'Left PGA'
+       }
+       control.64 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 PGA
+               comment.item.1 'Line or RXP-RXN'
+               comment.item.2 Sidetone
+               iface MIXER
+               name 'Capture Right Mux'
+               value PGA
+       }
+       control.65 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 PGA
+               comment.item.1 'Line or RXP-RXN'
+               comment.item.2 Line
+               iface MIXER
+               name 'Capture Left Mux'
+               value PGA
+       }
+       control.66 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 'Analogue Mix Left'
+               comment.item.2 'Analogue Mix Right'
+               comment.item.3 'Digital Mono Mix'
+               iface MIXER
+               name 'Capture Right Mixer'
+               value Stereo
+       }
+       control.67 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 'Analogue Mix Left'
+               comment.item.2 'Analogue Mix Right'
+               comment.item.3 'Digital Mono Mix'
+               iface MIXER
+               name 'Capture Left Mixer'
+               value Stereo
+       }
+       control.68 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback Mixer Voice Capture Switch'
+               value false
+       }
+       control.69 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback Mixer Left Capture Switch'
+               value false
+       }
+       control.70 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback Mixer Right Capture Switch'
+               value false
+       }
+       control.71 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 VREF
+               comment.item.1 'Capture ST'
+               comment.item.2 LOUT2
+               iface MIXER
+               name 'Out4 Mux'
+               value VREF
+       }
+       control.72 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 VREF
+               comment.item.1 ROUT2
+               comment.item.2 'Left + Right'
+               iface MIXER
+               name 'Out3 Mux'
+               value VREF
+       }
+       control.73 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Inverted Mono 1'
+               comment.item.1 Left
+               comment.item.2 Right
+               comment.item.3 'Left + Right'
+               iface MIXER
+               name 'Mono 2 Mux'
+               value 'Inverted Mono 1'
+       }
+       control.74 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Left Playback Switch'
+               value false
+       }
+       control.75 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Right Playback Switch'
+               value false
+       }
+       control.76 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Voice Playback Switch'
+               value false
+       }
+       control.77 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Sidetone Playback Switch'
+               value false
+       }
+       control.78 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Bypass Playback Switch'
+               value false
+       }
+       control.79 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Voice Playback Switch'
+               value false
+       }
+       control.80 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Sidetone Playback Switch'
+               value false
+       }
+       control.81 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Right Playback Switch'
+               value true
+       }
+       control.82 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Bypass Playback Switch'
+               value false
+       }
+       control.83 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Voice Playback Switch'
+               value false
+       }
+       control.84 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Sidetone Playback Switch'
+               value false
+       }
+       control.85 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Left Playback Switch'
+               value true
+       }
+       control.86 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Bypass Playback Switch'
+               value false
+       }
+       control.87 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Stereo Out Switch'
+               value true
+       }
+       control.88 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'GSM Line Out Switch'
+               value false
+       }
+       control.89 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'GSM Line In Switch'
+               value false
+       }
+       control.90 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Headset Mic Switch'
+               value false
+       }
+       control.91 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Handset Mic Switch'
+               value false
+       }
+       control.92 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Handset Spk Switch'
+               value false
+       }
+       control.93 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Amp State Switch'
+               value true
+       }
+       control.94 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Amp Spk Switch'
+               value true
+       }
+}
diff --git a/phone/freerunner-alsa-scenarios/files/voip-handset.state b/phone/freerunner-alsa-scenarios/files/voip-handset.state
new file mode 100644 (file)
index 0000000..b4417ab
--- /dev/null
@@ -0,0 +1,885 @@
+state.neo1973gta02 {
+       control.1 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 255'
+               iface MIXER
+               name 'PCM Volume'
+               value.0 235
+               value.1 235
+       }
+       control.2 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 255'
+               iface MIXER
+               name 'ADC Capture Volume'
+               value.0 195
+               value.1 195
+       }
+       control.3 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 127'
+               iface MIXER
+               name 'Headphone Playback Volume'
+               value.0 127
+               value.1 127
+       }
+       control.4 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 127'
+               iface MIXER
+               name 'Speaker Playback Volume'
+               value.0 0
+               value.1 0
+       }
+       control.5 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 127'
+               iface MIXER
+               name 'Mono Playback Volume'
+               value 121
+       }
+       control.6 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Bypass Playback Volume'
+               value.0 2
+               value.1 2
+       }
+       control.7 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Sidetone Playback Volume'
+               value.0 2
+               value.1 2
+       }
+       control.8 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Voice Playback Volume'
+               value.0 2
+               value.1 2
+       }
+       control.9 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Headphone Playback ZC Switch'
+               value.0 false
+               value.1 false
+       }
+       control.10 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Speaker Playback ZC Switch'
+               value.0 false
+               value.1 false
+       }
+       control.11 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Mono Bypass Playback Volume'
+               value 2
+       }
+       control.12 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Mono Sidetone Playback Volume'
+               value 2
+       }
+       control.13 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Mono Voice Playback Volume'
+               value 2
+       }
+       control.14 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Playback ZC Switch'
+               value false
+       }
+       control.15 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Linear Control'
+               comment.item.1 'Adaptive Boost'
+               iface MIXER
+               name 'Bass Boost'
+               value 'Linear Control'
+       }
+       control.16 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '130Hz @ 48kHz'
+               comment.item.1 '200Hz @ 48kHz'
+               comment.item.2 '100Hz @ 16kHz'
+               comment.item.3 '400Hz @ 48kHz'
+               comment.item.4 '100Hz @ 8kHz'
+               comment.item.5 '200Hz @ 8kHz'
+               iface MIXER
+               name 'Bass Filter'
+               value '130Hz @ 48kHz'
+       }
+       control.17 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'Bass Volume'
+               value 0
+       }
+       control.18 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'Treble Volume'
+               value 0
+       }
+       control.19 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '8kHz'
+               comment.item.1 '4kHz'
+               iface MIXER
+               name 'Treble Cut-off'
+               value '8kHz'
+       }
+       control.20 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Sidetone Capture Volume'
+               value.0 2
+               value.1 2
+       }
+       control.21 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'Voice Sidetone Capture Volume'
+               value 2
+       }
+       control.22 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 2
+               comment.range '0 - 63'
+               iface MIXER
+               name 'Capture Volume'
+               value.0 47
+               value.1 47
+       }
+       control.23 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Capture ZC Switch'
+               value.0 false
+               value.1 false
+       }
+       control.24 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 2
+               iface MIXER
+               name 'Capture Switch'
+               value.0 true
+               value.1 true
+       }
+       control.25 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '3.4Hz @ 48kHz'
+               comment.item.1 '82Hz @ 16k'
+               comment.item.2 '82Hz @ 8kHz'
+               comment.item.3 '170Hz @ 8kHz'
+               iface MIXER
+               name 'Capture Filter Select'
+               value '3.4Hz @ 48kHz'
+       }
+       control.26 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 HiFi
+               comment.item.1 Voice
+               iface MIXER
+               name 'Capture Filter Cut-off'
+               value HiFi
+       }
+       control.27 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Capture Filter Switch'
+               value true
+       }
+       control.28 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'ALC Capture Target Volume'
+               value 3
+       }
+       control.29 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 7'
+               iface MIXER
+               name 'ALC Capture Max Volume'
+               value 7
+       }
+       control.30 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Off
+               comment.item.1 Right
+               comment.item.2 Left
+               comment.item.3 Stereo
+               iface MIXER
+               name 'ALC Capture Function'
+               value Off
+       }
+       control.31 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Capture ZC Switch'
+               value false
+       }
+       control.32 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'ALC Capture Hold Time'
+               value 15
+       }
+       control.33 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'ALC Capture Decay Time'
+               value 12
+       }
+       control.34 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name 'ALC Capture Attack Time'
+               value 2
+       }
+       control.35 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 31'
+               iface MIXER
+               name 'ALC Capture NG Threshold'
+               value 0
+       }
+       control.36 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Constant PGA Gain'
+               comment.item.1 'Mute ADC Output'
+               iface MIXER
+               name 'ALC Capture NG Type'
+               value 'Constant PGA Gain'
+       }
+       control.37 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Capture NG Switch'
+               value false
+       }
+       control.38 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Capture
+               comment.item.1 Playback
+               iface MIXER
+               name '3D Function'
+               value Capture
+       }
+       control.39 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '2.2kHz'
+               comment.item.1 '1.5kHz'
+               iface MIXER
+               name '3D Upper Cut-off'
+               value '2.2kHz'
+       }
+       control.40 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 '200Hz'
+               comment.item.1 '500Hz'
+               iface MIXER
+               name '3D Lower Cut-off'
+               value '200Hz'
+       }
+       control.41 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 15'
+               iface MIXER
+               name '3D Volume'
+               value 0
+       }
+       control.42 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name '3D Switch'
+               value false
+       }
+       control.43 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Capture 6dB Attenuate'
+               value false
+       }
+       control.44 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback 6dB Attenuate'
+               value false
+       }
+       control.45 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 None
+               comment.item.1 '32kHz'
+               comment.item.2 '44.1kHz'
+               comment.item.3 '48kHz'
+               iface MIXER
+               name De-emphasis
+               value None
+       }
+       control.46 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 Left
+               comment.item.2 Right
+               comment.item.3 Mono
+               iface MIXER
+               name 'Playback Mono Mix'
+               value Stereo
+       }
+       control.47 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Non Inverted'
+               comment.item.1 Inverted
+               iface MIXER
+               name 'Playback Phase'
+               value 'Non Inverted'
+       }
+       control.48 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 3'
+               iface MIXER
+               name 'Mic2 Capture Volume'
+               value 2
+       }
+       control.49 {
+               comment.access 'read write'
+               comment.type INTEGER
+               comment.count 1
+               comment.range '0 - 3'
+               iface MIXER
+               name 'Mic1 Capture Volume'
+               value 0
+       }
+       control.50 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'DAI 0'
+               comment.item.1 'DAI 1'
+               comment.item.2 'DAI 2'
+               comment.item.3 'DAI 3'
+               iface MIXER
+               name 'DAI Mode'
+               value 'DAI 2'
+       }
+       control.51 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 'Left ADC'
+               comment.item.2 'Right ADC'
+               comment.item.3 'Channel Switch'
+               iface MIXER
+               name 'ADC Data Select'
+               value Stereo
+       }
+       control.52 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Non Inverted'
+               comment.item.1 Inverted
+               iface MIXER
+               name 'ROUT2 Phase'
+               value Inverted
+       }
+       control.53 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Mic 1'
+               comment.item.1 'Mic 2'
+               comment.item.2 'Mic 3'
+               iface MIXER
+               name 'Mic Selection Mux'
+               value 'Mic 1'
+       }
+       control.54 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'RXP - RXN'
+               comment.item.1 'RXP + RXN'
+               comment.item.2 RXP
+               comment.item.3 RXN
+               iface MIXER
+               name 'Rx Mixer'
+               value 'RXP - RXN'
+       }
+       control.55 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line 1 + 2'
+               comment.item.1 'Line 1 - 2'
+               comment.item.2 'Line 1'
+               comment.item.3 'Line 2'
+               iface MIXER
+               name 'Line Mixer'
+               value 'Line 1 + 2'
+       }
+       control.56 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line Mix'
+               comment.item.1 'Rx Mix'
+               iface MIXER
+               name 'Line Mono Mux'
+               value 'Line Mix'
+       }
+       control.57 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line 2'
+               comment.item.1 'Rx Mix'
+               iface MIXER
+               name 'Line Right Mux'
+               value 'Rx Mix'
+       }
+       control.58 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Line 1'
+               comment.item.1 'Rx Mix'
+               iface MIXER
+               name 'Line Left Mux'
+               value 'Rx Mix'
+       }
+       control.59 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Line Capture Switch'
+               value false
+       }
+       control.60 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Mic2 Capture Switch'
+               value false
+       }
+       control.61 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Mic1 Capture Switch'
+               value false
+       }
+       control.62 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'ALC Mixer Rx Capture Switch'
+               value false
+       }
+       control.63 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Left PGA'
+               comment.item.1 'Mic 1'
+               comment.item.2 'Mic 2'
+               comment.item.3 'Right PGA'
+               iface MIXER
+               name 'Mic Sidetone Mux'
+               value 'Left PGA'
+       }
+       control.64 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 PGA
+               comment.item.1 'Line or RXP-RXN'
+               comment.item.2 Sidetone
+               iface MIXER
+               name 'Capture Right Mux'
+               value PGA
+       }
+       control.65 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 PGA
+               comment.item.1 'Line or RXP-RXN'
+               comment.item.2 Line
+               iface MIXER
+               name 'Capture Left Mux'
+               value PGA
+       }
+       control.66 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 'Analogue Mix Left'
+               comment.item.2 'Analogue Mix Right'
+               comment.item.3 'Digital Mono Mix'
+               iface MIXER
+               name 'Capture Right Mixer'
+               value 'Analogue Mix Right'
+       }
+       control.67 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 Stereo
+               comment.item.1 'Analogue Mix Left'
+               comment.item.2 'Analogue Mix Right'
+               comment.item.3 'Digital Mono Mix'
+               iface MIXER
+               name 'Capture Left Mixer'
+               value 'Analogue Mix Right'
+       }
+       control.68 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback Mixer Voice Capture Switch'
+               value false
+       }
+       control.69 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback Mixer Left Capture Switch'
+               value false
+       }
+       control.70 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Playback Mixer Right Capture Switch'
+               value false
+       }
+       control.71 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 VREF
+               comment.item.1 'Capture ST'
+               comment.item.2 LOUT2
+               iface MIXER
+               name 'Out4 Mux'
+               value VREF
+       }
+       control.72 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 VREF
+               comment.item.1 ROUT2
+               comment.item.2 'Left + Right'
+               iface MIXER
+               name 'Out3 Mux'
+               value VREF
+       }
+       control.73 {
+               comment.access 'read write'
+               comment.type ENUMERATED
+               comment.count 1
+               comment.item.0 'Inverted Mono 1'
+               comment.item.1 Left
+               comment.item.2 Right
+               comment.item.3 'Left + Right'
+               iface MIXER
+               name 'Mono 2 Mux'
+               value 'Inverted Mono 1'
+       }
+       control.74 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Left Playback Switch'
+               value false
+       }
+       control.75 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Right Playback Switch'
+               value false
+       }
+       control.76 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Voice Playback Switch'
+               value false
+       }
+       control.77 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Sidetone Playback Switch'
+               value false
+       }
+       control.78 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Mono Mixer Bypass Playback Switch'
+               value false
+       }
+       control.79 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Voice Playback Switch'
+               value false
+       }
+       control.80 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Sidetone Playback Switch'
+               value false
+       }
+       control.81 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Right Playback Switch'
+               value true
+       }
+       control.82 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Right Mixer Bypass Playback Switch'
+               value false
+       }
+       control.83 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Voice Playback Switch'
+               value false
+       }
+       control.84 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Sidetone Playback Switch'
+               value false
+       }
+       control.85 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Left Playback Switch'
+               value true
+       }
+       control.86 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Left Mixer Bypass Playback Switch'
+               value false
+       }
+       control.87 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Stereo Out Switch'
+               value false
+       }
+       control.88 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'GSM Line Out Switch'
+               value false
+       }
+       control.89 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'GSM Line In Switch'
+               value false
+       }
+       control.90 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Headset Mic Switch'
+               value false
+       }
+       control.91 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Handset Mic Switch'
+               value true
+       }
+       control.92 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Handset Spk Switch'
+               value true
+       }
+       control.93 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Amp State Switch'
+               value true
+       }
+       control.94 {
+               comment.access 'read write'
+               comment.type BOOLEAN
+               comment.count 1
+               iface MIXER
+               name 'Amp Spk Switch'
+               value true
+       }
+}