diff compal/audio/omr-via-headset @ 380:a66cb88c5f77

compal/audio/omr-via-headset: result of experiment
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 10 Oct 2021 21:48:24 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compal/audio/omr-via-headset	Sun Oct 10 21:48:24 2021 +0000
@@ -0,0 +1,57 @@
+Follow-up on the experiments described in the omr-guide article: I connected
+the headset jack serial cable to a C139 phone that has a SIM inserted, and
+booted it up with a real GSM network connection.  And then I made a test call.
+There is a headset icon displayed on the home screen, and no sounds emanate
+from the built-in earpiece speaker, so it is definitely in headset mode.
+
+However, by getting into the active call state, I was able to access the volume
+control screen, and I got an omr reading of d_vbdctrl DSP API word at each
+volume level.  Here they are:
+
+Level	d_vbdctrl	VBDCTRL		Vol gain	PGA gain	Total
+------------------------------------------------------------------------------
+0	0x018C		0x006		-12 dB		0 dB		-12 dB
+1	0x020C		0x008		-12 dB		2 dB		-10 dB
+2	0x028C		0x00A		-12 dB		4 dB		-8 dB
+3	0x030C		0x00C		-12 dB		6 dB		-6 dB
+4	0x1A4C		0x069		-6 dB		3 dB		-3 dB
+5	0x1ACC		0x06B		-6 dB		5 dB		-1 dB
+6	0x09CC		0x027		0 dB		1 dB		1 dB
+7	0x0A8C		0x02A		0 dB		4 dB		4 dB
+
+Additional observation: the volume levels listed above exist only in the active
+call state: when a call ends, the fw switches to fixed level 4 for keybeeps and
+whatnot.  When a new call begins, the fw restores the last set in-call volume
+level.
+
+Further observation: DL FIR coefficients stay the same at all 8 volume levels:
+0x7FFF in coefficient 0, zeros in all others.  Thus Compal's hack of adding
+another 6 dB of gain via the FIR block is unaffected by volume control, and no
+frequency curve transformation is ever applied, at least in headset mode.
+
+Regarding AEC: the reading of 0x03C7 from d_aec_ctrl when breaking in with
+tfc139 definitely seemed suspicious.  Reading the same word via omr, we get
+0x0226 while in an active call and 0x03A7 after the call ends.  Furthermore, we
+can catch a little bit of trace output related to headset insertion if we have
+rvinterf running and do the **16379# trace enable step before inserting the
+serial cable into the headset jack, and we see this trace message:
+
+L1: AEC_R <fn> 03a6 0001 0014 4ccc 59ad 7500 0000 1000 1000
+
+Thus it looks like C139 headset mode AEC configuration is:
+
+* AEC enabled (bit 1 in d_aec_ctrl)
+* noise suppression enabled (bit 2 in d_aec_ctrl)
+* NS level bits (d_aec_ctrl[6:5]) are set to 0x20
+* New AEC parameter words are 0001 0014 4ccc 59ad 7500 0000 1000 1000
+
+VBC registers during active call:
+
+Register	DSP API word	10-bit register value
+-----------------------------------------------------
+VBCTRL1		0x0110		0x004
+VBCTRL2		0x01D6		0x007
+VBUCTRL		0x6CCE		0x1B3
+
+Notice VBUCTRL diff: we read 0x1B3 (9 dB uplink gain) when we are in an active
+call, but 0x1B2 (8 dB uplink gain) otherwise.