annotate doc/Audio-mode-config @ 926:6a0aa8d36d06

rvinterf backslash escape: introduce libprint The new helper function library named libprint is meant to replace the badly misnamed libg23, and will soon contain functions for printing all of the same kinds of GPF TST packets that are now handled in libg23. However, we are also moving safe_print_trace() from libasync to this new library, and changing it to emit our new backslash escape format.
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 23 May 2023 03:47:46 +0000
parents 6c306705f503
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
245
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 There exist a number of tunable settings in the Iota ABB (the chip that performs
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 A-to-D and D-to-A conversion for the voice path) and in the Calypso DSP which
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 in TI's firmware architecture are meant to be configured through the audio mode
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 facility of the RiViera Audio Service. The ABB settings grouped under the audio
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 mode are as follows:
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 * The selection of which analog interface pins the downlink audio should be
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 sent to: EARN&EARP (earpiece), AUXON&AUXOP (auxiliary) or HSO (headset).
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 * The selection of which analog interface pins the uplink audio should be taken
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 from: MICIN&MICIP (main microphone), AUXI (auxiliary input) or HSMICP
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 (headset microphone).
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 * The selection of AUXI input levels when this analog input is in use for the
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 voice uplink.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 * Analog gains for the uplink, the downlink and the analog sidetone from the
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 uplink input to the downlink output.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 * Selection of a special filter bypass mode for the voice downlink.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 * The selection of MICBIAS (or HSMICBIAS) voltage between 2.0 V and 2.5 V.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 The DSP voice path settings grouped under the audio mode are as follows:
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 * The selection of the digital voice path as being between GSM and the ABB (the
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 default for analog voice interfaces), between GSM and MCSI (the external
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 digital voice interface) or between MCSI and the ABB (non-GSM operation).
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 * FIR filter coefficients for the voice uplink and for the voice downlink.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 * Enabling/disabling and configuration of the Acoustic Echo Cancellation (AEC)
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 mechanism.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 The firmware paradigm for working with all of the above settings is as follows:
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 * In a lab environment, each of the listed settings can be independently tweaked
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 and read back through ETM packets over the RVTMUX debug serial interface; the
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 corresponding fc-tmsh commands (matching TI's original Windows-based TMSH)
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 are auw for writing individual audio parameters and aur for reading them back.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 * In end-use operation, TI's intent as realized in the firmware design is that
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 all of the listed audio settings will only be changed as a group, loaded from
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 audio mode configuration files in FFS.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 Each audio mode configuration needs to be assigned a name between 1 and 9
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 characters long, and for each named configuration there are two files in FFS:
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 /aud/modename.cfg is the main configuration file
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 /aud/modename.vol is the corresponding volume setting file
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 This paradigm is a good fit for "dumbphone" handsets in which there usually
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 will be several different voice audio configurations for classic handheld
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 operation, for the hands-free loudspeaker mode, for operation with a wired
838
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
55 headset, and if the phone uses its hands-free loudspeaker plus the Calypso DSP
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
56 to play ringtones (as opposed to using a buzzer on BU/PWT or a ringtone player
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
57 chip that drives the speaker bypassing the voice path), there will also need to
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
58 be an output-only audio configuration for ringing.
245
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 How do the audio mode config files under /aud come into being? It appears that
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 TI's original intent was that a configuration would be manually constructed on
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 a test device via TMSH auw commands, saved in the FFS of that test device with
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 the aus command, then read out of that test device FFS in binary form and
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 reuploaded as an opaque blob to all devices on the production line. One can do
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 the same procedure with our fc-tmsh and fc-fsio which fully replicate the
261
0321cd08b19f doc/Audio-mode-config: typo fix
Mychaela Falconia <falcon@freecalypso.org>
parents: 247
diff changeset
66 relevant functionality of TI's original TMSH (to the best of our knowledge),
245
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 but in FreeCalypso we have an alternate way which fits better with our UNIX
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 philosophy: we have created our own ASCII text format for representing all of
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 the content in TI's /aud/*.cfg binary files and tiaud-* utilities for compiling
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 TI's binary cfg files from our ASCII source format, disassembling a *.cfg file
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 read out of FFS into the same ASCII format, and creating the required *.vol
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 companion files, which are also binary.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 A note about volume settings: the Iota ABB has two variable gain controls in
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 the voice downlink path: the main "volume" gain in rather coarse 6 dB steps
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 (the choices being 0 dB, -6 dB, -12 dB, -18 dB, -24 dB and mute) and a finer
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 "calibration" gain in 1 dB steps between -6 and +6 dB. It appears that TI's
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 intent was that only the coarse volume control in 6 dB steps is to be visible
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 to the user, with just 5 possible non-mute volume levels, and that the finer
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 gain control be set at the factory in the audio mode config files for each mode
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 as some form of calibration. Pirelli DP-L10 significantly deviates from this
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 model by providing 10 non-mute volume levels to the user with 2 dB or 3 dB steps
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 between them by changing both VOLCTL and VDLPG fields in the VBDCTRL register,
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 but at the present time we have no plans to make a similar drastic change in
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 FreeCalypso.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87 Another noteworthy feature of the audio mode system with respect to volume
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88 control is that there is a separate *.vol file that stores the current volume
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 setting for each mode. In a "dumbphone" handset firmware built according to
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 TI's paradigm, the /aud/*.cfg files will be written once on the factory
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 production line and only read afterward, but whenever the user turns the volume
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 up or down in the UI, the *.vol file _corresponding to the current mode_ will
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 be updated by the running fw. Thus the fw would maintain a separate notion of
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 the current volume for ringing, for the earpiece speaker, for the hands-free
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95 loudspeaker and for the wired headset, something which Pirelli's fw very
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96 notoriously fails to do.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97
838
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
98 Old vs. new AEC
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
99 ===============
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
100
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
101 One of the settings in the audio mode config structure underwent an evolutionary
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
102 change within the span of history that is relevant to FreeCalypso - this setting
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
103 is the configuration for AEC, the Acoustic Echo Cancellation functional block
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
104 of the Calypso DSP. As TI's GSM DSPs evolved (before, during and after the
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
105 Calypso era), their AEC implementation evolved along with the rest, and
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
106 different evolutionary versions of AEC require different configuration and
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
107 tuning parameters. When the audio mode facility was first implemented, the AEC
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
108 block in TI's GSM DSPs of that time was controlled with a single 16-bit control
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
109 word; the people in the SSA group who implemented RiViera Audio Service then
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
110 decided to split different bits from this one DSP control word into 5 different
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
111 parameter words, and the result was the "old" 5-word AEC config.
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
112
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
113 But the version of AEC implemented in the DSP ROM in the Calypso silicon version
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
114 we work with is slightly newer; this version corresponds to what TI's L1 code
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
115 calls L1_NEW_AEC. However, the waters then got muddied: for reasons which we
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
116 (FreeCalypso team) cannot understand (perhaps miscommunication between different
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
117 groups at TI), TI's TCS211 reference firmware shipped with L1_NEW_AEC disabled
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
118 (C preprocessor symbol set to 0 instead of 1), even though the underlying DSP
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
119 AEC block (combination of ROM and official patches) is the "new" kind and not
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
120 the "old" one. There are two fallouts from this software misconfiguration on
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
121 TI's part:
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
122
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
123 1) If one takes stock TCS211 from TI or any derivative version in which this
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
124 aspect is unchanged (all mokoN firmwares, and all FC firmwares up to
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
125 Magnetite) and tries to enable AEC, the result will be a poor AEC
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
126 configuration: the old echo level and long vs short settings do nothing on
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
127 the new DSP, whereas the new tunable parameters will remain at their defaults
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
128 with no way to tweak them. I (Mother Mychaela) can only guess that this
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
129 situation is what Openmoko must have run into when they tried to get AEC
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
130 working.
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
131
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
132 2) When someone downstream of TI figures out that L1_NEW_AEC needs to be changed
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
133 from 0 to 1 and actually makes that change, like we did in our Tourmaline fw,
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
134 the format and size of the audio mode binary structure change, and all old
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
135 audio mode config files become invalid.
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
136
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
137 Our FreeCalypso work is affected by point 2 above: we started working with audio
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
138 mode config files in 2017, using the old AEC configuration, and only made the
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
139 switch to L1_NEW_AEC in 2021. We now have two kinds of audio mode config binary
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
140 files: the old kind that are 164 bytes long, and the new kind that are 176 bytes
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
141 long. Our Tourmaline firmware has L1_NEW_AEC enabled, while Magnetite (our
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
142 legacy backward compatiblity fw) has it disabled.
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
143
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
144 To prevent loading of garbage into AEC config when an audio mode file of the
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
145 wrong kind is loaded, we have implemented the following workaround in both
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
146 Tourmaline and Magnetite: if the loaded mode config file has the wrong length,
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
147 the AEC config is set to the default disabled state instead of whatever is in
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
148 the mode file - loading an AEC config of the wrong format is not possible.
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
149
245
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
150 Default audio configuration
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
151 ===========================
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
152
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
153 The default audio config set in the Iota ABB registers and in the DSP when no
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
154 named audio mode config has been loaded with the audio_mode_load() API call
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
155 (accessible via AT@AUL or via fc-tmsh aul command) is as follows, in the syntax
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
156 which our tiaud-compile utility accepts as input and which our tiaud-decomp
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
157 utility emits as output:
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
158
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
159 voice-path 0
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
160 mic default {
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
161 gain 3
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
162 output-bias 0
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
163 fir 0 0x4000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
164 fir 8 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
165 fir 16 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
166 fir 24 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
167 }
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
168 speaker ear+aux {
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
169 gain 0
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
170 audio-filter 0
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
171 fir 0 0x4000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
172 fir 8 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
173 fir 16 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
174 fir 24 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
175 }
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
176 sidetone -5
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
177 aec 0 0 0 0 0
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
178
838
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
179 The above version is the one produced by Magnetite and earlier firmwares without
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
180 L1_NEW_AEC; in the new Tourmaline version the last line changes to:
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
181
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
182 aec-new 0 0 0x1 0x7FFF 0x1FFF 0x4000 0x32 0x1000 0x1000 0 0 0
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
183
245
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
184 The meaning is as follows:
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
185
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
186 * voice-path is the DSP digital voice path setting, 0 means the standard
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
187 configuration with the voice channel going between GSM and the local analog
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
188 voice hardware attached to the ABB.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
189
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
190 * The default microphone input is used for the voice uplink (MICIN&MICIP pins),
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
191 whereas the voice downlink is presented on both EARN&EARP and AUXON&AUXOP
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
192 pins, i.e., both "ear" and "aux" VDL amplifiers are enabled.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
193
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
194 * The microphone gain is 3 dB, the fine gain adjustment in the voice downlink
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
195 path is 0 dB, and the sidetone gain is -5 dB.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
196
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
197 * output-bias 0 under mic means that the MICBIAS voltage is set to 2.0 V.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
198
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
199 * audio-filter 0 under speaker means that the VFBYP bit in the VBCTRL1 register
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
200 is NOT set, i.e., the normal configuration.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
201
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
202 * DSP FIR filters do nothing, as coefficient 0 is set to unity and all other
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
203 coefficients are set to zero.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
204
838
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
205 * The AEC mechanism in the DSP is disabled, although the format of the bits that
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
206 say so is different between old and new AEC versions. In the new version
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
207 there are a number of tunable settings that only kick in when AEC is enabled;
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
208 when AEC is disabled by default, these tunable knobs still have sensible
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
209 defaults that aren't all zeros.
245
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
210
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
211 Creating your own audio mode configurations
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
212 ===========================================
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
213
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
214 The input to our tiaud-compile utility can contain every setting shown in the
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
215 default case above, or any desired subset thereof. For any settings not given
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
216 in the input, the defaults from the above will be used, except that
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
217 tiaud-compile's current default for the speaker mode is just ear rather than
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
218 ear+aux. (It is a default which you should NOT depend on; set it explicitly if
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
219 it matters!) A few notes:
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
220
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
221 * For all settings given as numbers, the number given in the ASCII input is the
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
222 number that goes into TI's binary structure, without any transformation, even
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
223 in those cases where the result is counter-intuitive, such as "audio-filter 0"
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
224 meaning that the filter is *enabled*.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
225
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
226 * The 3 possible mode keywords for the mic mode are default, aux and headset,
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
227 corresponding to MICIN&MICIP, AUXI and HSMICP analog inputs, respectively.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
228
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
229 * The 5 possible mode keywords for the speaker mode are ear, aux, headset,
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
230 buzzer and ear+aux. The buzzer speaker mode exists only on TI's Nausica ABB
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
231 predating Iota, i.e., it won't work on any of the Calypso+Iota+Rita devices
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
232 built or supported by FreeCalypso, but our tiaud-compile and tiaud-decomp
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
233 utilities support it because it is nominally supported by TI's RiViera Audio
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
234 Service and its binary data structure for audio mode configuration.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
235
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
236 * When mic is set to aux, an additional mic setting called extra-gain becomes
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
237 available. If extra-gain is set to 0, the AUXI gain will be set to 28.2 dB,
247
b5b148ef63da doc/Audio-mode-config: fixed logic error in the description of extra-gain
Mychaela Falconia <falcon@freecalypso.org>
parents: 245
diff changeset
238 if extra-gain is set to 1, the AUXI gain will be set to 4.6 dB; all other
245
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
239 values will be considered invalid by the firmware.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
240
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
241 * Each of the two FIR filters in the DSP (one for uplink, one for downlink) has
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
242 a total of 31 coefficients, numbered 0 through 30, inclusive. In the ASCII
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
243 input to tiaud-compile you can put each coefficient on its own fir line, put
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
244 all 31 coefficients on the same line, or group them in any other way you like.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
245 The grouping used in the tiaud-decomp output has been chosen for line length
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
246 reasons.
796c659b747c doc/Audio-mode-config written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
247
838
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
248 aec vs aec-new in tiaud-compile input
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
249 =====================================
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
250
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
251 tiaud-compile accepts both aec (old) and aec-new settings; aec must be followed
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
252 by 5 numbers, aec-new must be followed by 12 numbers. Each number is a 16-bit
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
253 value, and they go into the binary structure without further interpretation by
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
254 tiaud-compile - instead the firmware is the entity that gives them meaning.
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
255 Numbers without 0x prefix are interpreted as decimal.
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
256
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
257 tiaud-compile will generate one type or the other of the binary output file,
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
258 following these rules:
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
259
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
260 * If an aec setting is given, a 164 byte file will be produced, with the 5 AEC
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
261 words being the given ones.
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
262
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
263 * If an aec-new setting is given, a 176 byte file will be produced, with the 12
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
264 AEC words being the given ones.
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
265
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
266 * If neither setting is given, a 164 byte file will be produced, with the 5 AEC
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
267 words of the old type being all zeros. Thanks to the modified audio mode
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
268 loading code in our firmwares, these 164 byte mode files can still be used
02d92d49c9f8 doc/Audio-mode-config: update for old vs new AEC
Mychaela Falconia <falcon@freecalypso.org>
parents: 261
diff changeset
269 with current Tourmaline fw, with AEC set to its default disabled state.
843
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
270
847
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
271 New AEC parameter words
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
272 =======================
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
273
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
274 The 12 words that configure AEC of the L1_NEW_AEC flavor (appearing on the
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
275 aec-new line in tiaud-compile input or in an fc-tmsh auw 12 command) map as
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
276 follows:
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
277
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
278 Word 0: aec_enable
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
279
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
280 This word must be set to 0 to disable AEC or 2 to enable it. This word is
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
281 translated to a single DSP control bit by the Audio Service layer, thus no
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
282 other values must be written into it.
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
283
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
284 Word 1: continuous_filtering
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
285
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
286 This word is written directly into the DSP, and we have no documentation for it
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
287 beyond "enable (1) or disable (0) continuous mode filtering".
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
288
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
289 Word 2: granularity_attenuation
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
290
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
291 This word is written directly into the DSP, and we have no documentation for it
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
292 beyond "granularity of the smoothed attenuation".
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
293
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
294 Word 3: smoothing_coefficient
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
295
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
296 This word is written directly into the DSP, and we have no documentation for it
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
297 beyond "smoothing coefficient".
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
298
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
299 Word 4: max_echo_suppression_level
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
300
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
301 This word is written directly into the DSP; it is described as "maximum
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
302 attenuation level", and the following constants are defined for it:
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
303
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
304 #define AUDIO_MAX_ECHO_0dB (0x7FFF)
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
305 #define AUDIO_MAX_ECHO_2dB (0x65AA)
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
306 #define AUDIO_MAX_ECHO_3dB (0x59AD)
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
307 #define AUDIO_MAX_ECHO_6dB (0x4000)
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
308 #define AUDIO_MAX_ECHO_12dB (0x1FFF)
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
309 #define AUDIO_MAX_ECHO_18dB (0x0FFF)
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
310 #define AUDIO_MAX_ECHO_24dB (0x07FF)
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
311
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
312 Word 5: vad_factor
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
313
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
314 This word is written directly into the DSP, and we have no documentation for it
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
315 beyond "VAD factor relative to the current estimated energy". VAD must stand
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
316 for "voice activity detector", but our knowledge ends here.
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
317
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
318 Word 6: absolute_threshold
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
319
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
320 This word is written directly into the DSP, and we have no documentation for it
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
321 beyond "VAD absolute offset relative to the current estimated energy".
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
322
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
323 Word 7: factor_asd_filtering
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
324
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
325 This word is written directly into the DSP, and we have no documentation for it
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
326 beyond "modifying factor of d_far_end_noise for filtering decision".
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
327
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
328 Word 8: factor_asd_muting
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
329
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
330 This word is written directly into the DSP, and we have no documentation for it
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
331 beyond "modifying factor of d_far_end_noise for muting decision".
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
332
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
333 Word 9: aec_visibility
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
334
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
335 This word must be set to 0 for normal operation or 0x200 for "AEC visibility"
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
336 debug mode. This word is translated to a single L1 control bit by the Audio
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
337 Service layer, thus no other values must be written into it.
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
338
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
339 Word 10: noise_suppression_enable
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
340
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
341 This word must be set to 0 to disable SPENH algorithm or 4 to enable it. This
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
342 word is translated to a single DSP control bit by the Audio Service layer, thus
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
343 no other values must be written into it. We don't know what this "speech
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
344 enhancement" algorithm does, and whether or not it is the same as "noise
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
345 suppression".
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
346
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
347 Word 11: noise_suppression_level
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
348
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
349 This config word is mapped to just two bits in the actual DSP control word by
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
350 the Audio Service layer, thus there are only 4 possible valid values here:
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
351
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
352 #define AUDIO_NOISE_NO_LIMITATION (0x0000)
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
353 #define AUDIO_NOISE_6dB (0x0020)
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
354 #define AUDIO_NOISE_12dB (0x0040)
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
355 #define AUDIO_NOISE_18dB (0x0060)
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
356
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
357 Some known-good AEC configurations
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
358 ==================================
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
359
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
360 The terse descriptions of parameter words given above unfortunately constitute
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
361 the total extent of our knowledge of the AEC block in our dear Calypso DSP and
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
362 its tuning parameters - we don't know anything more. However, we do have 3
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
363 example configurations to look at: we have the default values of the tuning
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
364 parameters that appear to be initialized by the DSP itself on boot, and we have
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
365 two AEC-enabled configurations set by Pirelli DP-L10 firmware: one for handheld
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
366 and wired headset modes, the other for the hands-free loudspeaker mode. Here
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
367 are the 12 parameter words in the 3 available configurations:
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
368
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
369 Parameter word Default Pirelli Pirelli
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
370 (AEC disabled) handheld hands-free
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
371 --------------------------------------------------------------------------
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
372 aec_enable 0 (off) 2 (on) 2 (on)
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
373 continuous_filtering 0 (off) 1 (on) 1 (on)
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
374 granularity_attenuation 0x0001 0x0014 0x0014
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
375 smoothing_coefficient 0x7FFF 0x0CCC 0x0CCC
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
376 max_echo_suppression_level 0x1FFF (12 dB) 0x59AD (3 dB) 0x0FFF (18 dB)
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
377 vad_factor 0x4000 0x4000 0x4000
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
378 absolute_threshold 0x0032 0x0032 0x0032
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
379 factor_asd_filtering 0x1000 0x1000 0x1000
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
380 factor_asd_muting 0x1000 0x1000 0x1000
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
381 aec_visibility 0 (off) 0 (off) 0 (off)
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
382 noise_suppression_enable 0 (off) 4 (on) 4 (on)
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
383 noise_suppression_level 0 (none) 0 (none) 0x0060 (18 dB)
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
384
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
385 The following observations can be made:
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
386
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
387 * The 4 parameters vad_factor, absolute_threshold, factor_asd_filtering and
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
388 factor_asd_muting remain unchanged between TI's DSP default and Pirelli's
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
389 production configs. On the basis of this observation, I (Mother Mychaela)
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
390 get the feeling that these four should be left alone.
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
391
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
392 * Besides the obvious steps of enabling AEC and SPENH, Pirelli did change
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
393 continuous_filtering (from off to on), granularity_attenuation and
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
394 smoothing_coefficient. Unfortunately, unless we recover the source code for
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
395 our Calypso DSP ROM or some documents explaining this version of AEC in
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
396 detail, we have no way of understanding what these parameters do, let alone
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
397 evaluating the merits of Pirelli's change.
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
398
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
399 * max_echo_suppression_level and noise_suppression_level seem to be the two
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
400 parameters most amenable to tuning.
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
401
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
402 * It is interesting to note that Pirelli's fw enables AEC not only in the
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
403 loudspeaker mode, but also in the more basic handheld and wired headset
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
404 modes. The two AEC configs differ only in max_echo_suppression_level and
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
405 noise_suppression_level parameters, with the loudspeaker mode AEC config
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
406 being more aggressive.
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
407
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
408 Prior to seeing what Pirelli's fw does, my (Mychaela's) own thinking was that
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
409 AEC is only needed in loudspeaker configurations, not handheld or headset.
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
410 After seeing Pirelli's AEC configs, I reason that enabling a less aggressive
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
411 AEC configuration in those less echo-prone modes probably doesn't hurt - thus
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
412 until and unless we recover more documentation or other knowledge, the plan for
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
413 our own FreeCalypso Libre Dumbphone handset is to do what Pirelli does: use a
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
414 less aggressive AEC config in handheld and headset modes, and a more aggressive
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
415 one in the hands-free loudspeaker mode.
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
416
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
417 On our current FCDEV3B setup with a SparkFun COM-09151 loudspeaker and a CUI
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
418 CMC-9745-130T microphone, applying Pirelli's loudspeaker-mode AEC config
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
419 produces echo cancellation that sounds acceptable to our subjective human
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
420 evaluator on the far end of test calls.
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
421
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
422 FIR filter details
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
423 ==================
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
424
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
425 Calypso DSP has two FIR filters in the voice paths, one in the uplink path and
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
426 one in the downlink path. Aside from their placement, the two FIR filters are
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
427 identical. Each FIR block has 31 taps (making a 30th order filter), and each of
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
428 the 31 coefficients is a 16-bit fixed-point number. The fixed point format is
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
429 F2.14 aka Q14: to get the real coefficient from the physical 16 bits, treat the
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
430 16-bit datum as a two's complement signed integer, then divide by 16384.
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
431 Examples: 0x4000 means 1, 0x2000 means 0.5, 0xC000 means -1, 0xE000 means -0.5.
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
432
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
433 In principle you can set all 31 coefficients to whatever you like, but in
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
434 practice only two possible configurations are used:
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
435
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
436 * When the FIR filter is disabled (identity transform), coefficient 0 is set to
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
437 0x4000 (unity) and all other coefficients are set to 0. In this configuration
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
438 the FIR block does not introduce any extra delay: all delayed samples are
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
439 multiplied by 0 and thus produce no effect.
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
440
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
441 * When some non-identity frequency response transformation is desired, a linear
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
442 phase filter is set up: coefficient #15 becomes the main tap (significantly
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
443 greater in absolute value than all others) and all other coefficients mirror
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
444 around it symmetrically: #0 equals #30, #1 equals #29 and so forth, until #14
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
445 equals #16. This filter adds 1.875 ms of delay (15 sample times) to the voice
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
446 path in which it is active, and an equal amount of "pre-ringing".
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
447
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
448 The presumed purpose of these two FIR filters (uplink and downlink) is to
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
449 flatten the frequency response of the speaker and microphone transducers, or
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
450 perhaps even more ambitiously, the frequency response of the modeled acoustic
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
451 environment. However, actually coming up with a good set of FIR filter
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
452 coefficients given a desired frequency response is a hard problem, one where
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
453 forward engineering is much more difficult than reverse.
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
454
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
455 When it comes to reverse engineering of existing Calypso DSP FIR filters, a
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
456 total of 7 specimen have been captured out in the wild so far: one downlink FIR
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
457 filter from Openmoko's non-functional para0.cfg (no way of knowing which speaker
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
458 it was once designed for), and a set of 6 filters extracted from Pirelli DP-L10,
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
459 3 uplink and 3 downlink, corresponding to the 3 audio routing modes supported on
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
460 this phone model (handheld, hands-free and wired headset). All 7 are linear
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
461 phase filters as described above. Analyzing the frequency response of a given
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
462 already existing FIR filter is easy: just use the fir2freq program in our
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
463 freecalypso-reveng Hg repository. OTOH, coming up with a new set of FIR filter
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
464 coefficients for some desired frequency response (e.g., for a new phone handset
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
465 being designed) is a much harder problem, one which we will probably have to
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
466 outsource to a hired DSP/FIR expert.
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
467
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
468 Calypso FIR support in FC host tools
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
469 ------------------------------------
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
470
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
471 Uplink and downlink FIR filter coefficients can be included in the input to
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
472 tiaud-compile. Each coefficient is given as the actual 16-bit word going into
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
473 the DSP (Q14 scaling included), and can be specified either in hex or as a
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
474 signed decimal integer.
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
475
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
476 We also have a dedicated ASCII file format for a FIR filter coefficient set by
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
477 itself, like this example:
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
478
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
479 fir-coeff-table
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
480
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
481 0x0178 0x0AB5 0xF43D 0xFED5 0xFCA7 0x04D8 0x00B8 0x0371
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
482 0x032F 0x0007 0x151C 0xF24C 0x19A6 0xE918 0xF7CD 0x7D0C
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
483 0xF7CD 0xE918 0x19A6 0xF24C 0x151C 0x0007 0x032F 0x0371
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
484 0x00B8 0x04D8 0xFCA7 0xFED5 0xF43D 0x0AB5 0x0178
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
485
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
486 (This example is the FIR filter extracted from Openmoko's non-functional
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
487 para0.cfg.) This by-itself FIR filter coeff set format is accepted as input to
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
488 the auw-fir command in fc-tmsh (allowing experimental FIR filters to be uploaded
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
489 to a running Calypso device for testing) and to our fir2freq analysis program.
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
490 We will probably use the same format if and when we embark on a venture to
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
491 design our own FIR filters for our own handset hardware.
6e137995c9c8 doc/Audio-mode-config: elaborate on AEC and FIR blocks
Mychaela Falconia <falcon@freecalypso.org>
parents: 843
diff changeset
492
843
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
493 fc-tmsync aur and aur-all addition
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
494 ==================================
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
495
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
496 New addition as of fc-host-tools-r16: our aur command which natively resides in
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
497 fc-tmsh (audio mode full access read operation via ETM) has also been
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
498 implemented in fc-tmsync for scripted usage. Furthermore, we also implemented
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
499 an aur-all command that issues the same sequence of aur operations as the
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
500 firmware's built-in audio_mode_save() and emits the output on stdout in the same
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
501 format as tiaud-decomp. The end effect is that fc-tmsync aur-all is a much
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
502 shorter and more direct way of obtaining exactly the same result as would
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
503 previously be obtained by saving the current audio mode config with aus, reading
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
504 out the resulting binary file with fc-fsio and decoding it with tiaud-decomp.
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
505
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
506 The implementation of aur-all and the more elementary aur 12 command in
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
507 fc-tmsync works only with firmware versions that have L1_NEW_AEC enabled -
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
508 therefore, these commands work with FC Tourmaline but not Magnetite.
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
509
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
510 Furthermore, our aur command in both fc-tmsh and fc-tmsync and the new fc-tmsync
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
511 aur-all command also work against Pirelli's firmware - this alien fw implements
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
512 ETM aur operation exactly the same as standard TCS211, and it has L1_NEW_AEC
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
513 enabled, such that aur 12 returns the 24 byte long L1_NEW_AEC version of
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
514 T_AUDIO_AEC_CFG structure. The combination of this functionality in Pirelli's
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
515 fw and our fc-tmsync addition makes it possible to read out Pirelli's highly
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
516 tuned audio configurations in a very convenient manner, much more convenient
6a0fcbca8ac7 document fc-tmsync aur & aur-all addition
Mychaela Falconia <falcon@freecalypso.org>
parents: 838
diff changeset
517 than reading ABB registers with abbr and reading DSP API words with r16.
848
6c306705f503 doc/Audio-mode-config: add pointer to fc-audio-config repository
Mychaela Falconia <falcon@freecalypso.org>
parents: 847
diff changeset
518
6c306705f503 doc/Audio-mode-config: add pointer to fc-audio-config repository
Mychaela Falconia <falcon@freecalypso.org>
parents: 847
diff changeset
519 fc-audio-config repository
6c306705f503 doc/Audio-mode-config: add pointer to fc-audio-config repository
Mychaela Falconia <falcon@freecalypso.org>
parents: 847
diff changeset
520 ==========================
6c306705f503 doc/Audio-mode-config: add pointer to fc-audio-config repository
Mychaela Falconia <falcon@freecalypso.org>
parents: 847
diff changeset
521
6c306705f503 doc/Audio-mode-config: add pointer to fc-audio-config repository
Mychaela Falconia <falcon@freecalypso.org>
parents: 847
diff changeset
522 We have a separate repository for FC audio mode configurations, both complete
6c306705f503 doc/Audio-mode-config: add pointer to fc-audio-config repository
Mychaela Falconia <falcon@freecalypso.org>
parents: 847
diff changeset
523 configs and individual config pieces (AEC and FIR):
6c306705f503 doc/Audio-mode-config: add pointer to fc-audio-config repository
Mychaela Falconia <falcon@freecalypso.org>
parents: 847
diff changeset
524
6c306705f503 doc/Audio-mode-config: add pointer to fc-audio-config repository
Mychaela Falconia <falcon@freecalypso.org>
parents: 847
diff changeset
525 https://www.freecalypso.org/hg/fc-audio-config/
6c306705f503 doc/Audio-mode-config: add pointer to fc-audio-config repository
Mychaela Falconia <falcon@freecalypso.org>
parents: 847
diff changeset
526
6c306705f503 doc/Audio-mode-config: add pointer to fc-audio-config repository
Mychaela Falconia <falcon@freecalypso.org>
parents: 847
diff changeset
527 These audio configuration bits are maintained in their own repository because
6c306705f503 doc/Audio-mode-config: add pointer to fc-audio-config repository
Mychaela Falconia <falcon@freecalypso.org>
parents: 847
diff changeset
528 they are separate from the present FC host tools package and also separate from
6c306705f503 doc/Audio-mode-config: add pointer to fc-audio-config repository
Mychaela Falconia <falcon@freecalypso.org>
parents: 847
diff changeset
529 our firmwares, evolving independently without strict synchronization with these
6c306705f503 doc/Audio-mode-config: add pointer to fc-audio-config repository
Mychaela Falconia <falcon@freecalypso.org>
parents: 847
diff changeset
530 other components.