FreeCalypso > hg > freecalypso-reveng
view compal/audio/omr-from-ds @ 402:1b83d07576bf
compal/boot/c123-boot.disasm: missed vector branch at 0x1c
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 15 Jan 2023 00:06:59 +0000 |
parents | ca75ac283888 |
children |
line wrap: on
line source
On 2021-11-09 long-time FreeCalypso community member Das Signal contributed a set of omr readouts from a C139 phone operating in handheld (as opposed to headset) audio mode, made by way of wires soldered to UART connection pads inside the battery compartment. Raw data here: https://www.freecalypso.org/pipermail/community/2021-November/000829.html The post from DS includes only fc-tmsh output but not command input; for better readability and understanding, here are the same readouts interleaved with the commands that produced them: - before the call >omr ffd001ec 2 omr 00: 90 02 >omr ffd001d6 2 omr 00: 16 00 >omr ffd001dc 4 omr 00: 8E 01 8C 19 >omr ffd00238 2 omr 00: C7 03 >omr ffd0084a 10 omr 00: 01 00 14 00 CC 4C AD 59 00 75 00 00 00 10 00 10 >omr ffd00908 3e omr 00: 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 omr 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 omr 20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 omr 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >omr ffd00946 3e omr 00: E7 FF 22 00 35 00 F1 FF 09 00 FF FF 80 FF 23 00 omr 10: BD FF 40 00 2A 01 BD FF C1 03 09 01 1D E1 8F 3F omr 20: 1D E1 09 01 C1 03 BD FF 2A 01 40 00 BD FF 23 00 omr 30: 80 FF FF FF 09 00 F1 FF 35 00 22 00 E7 FF - during the call >omr ffd001ec 2 TM3 memread error: 41 0F 4E >omr ffd001d6 2 omr 00: 16 00 >omr ffd001dc 4 omr 00: 0E 6A 4C 0A >omr ffd00238 2 omr 00: 46 02 >omr ffd0084a 10 omr 00: 01 00 14 00 CC 4C AD 59 00 75 00 00 00 10 00 10 >omr ffd00908 3e omr 00: 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 omr 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 omr 20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 omr 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >omr ffd00946 3e omr 00: E7 FF 22 00 35 00 F1 FF 09 00 FF FF 80 FF 23 00 omr 10: BD FF 40 00 2A 01 BD FF C1 03 09 01 1D E1 8F 3F omr 20: 1D E1 09 01 C1 03 BD FF 2A 01 40 00 BD FF 23 00 omr 30: 80 FF FF FF 09 00 F1 FF 35 00 22 00 E7 FF - after the call >omr ffd001ec 2 omr 00: 90 02 >omr ffd001d6 2 omr 00: 16 00 >omr ffd001dc 4 omr 00: CE 62 4C 1A >omr ffd00238 2 omr 00: C7 03 >omr ffd0084a 10 omr 00: 01 00 14 00 CC 4C AD 59 00 75 00 00 00 10 00 10 >omr ffd00908 3e omr 00: 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 omr 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 omr 20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 omr 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >omr ffd00946 3e omr 00: E7 FF 22 00 35 00 F1 FF 09 00 FF FF 80 FF 23 00 omr 10: BD FF 40 00 2A 01 BD FF C1 03 09 01 1D E1 8F 3F omr 20: 1D E1 09 01 C1 03 BD FF 2A 01 40 00 BD FF 23 00 omr 30: 80 FF FF FF 09 00 F1 FF 35 00 22 00 E7 FF Analysis: Read of d_vbctrl1 during the call failed for some reason (the returned error code is E_CHECKSUM - perhaps the TM3 omr command packet got corrupted?), whereas before and after the call we got 0x0290. Shifting right by 6 bits, we get 0x00A as the actual VBCTRL1 register value. This reading is indeed consistent with handheld audio mode, as opposed to headset. d_vbctrl2: we got 0x0016 on all 3 reads. Shifting right by 6 bits, we get 0x000 as the actual VBCTRL2 register value. This reading is once again consistent with handheld audio mode. d_vbuctrl: we got 0x018E before the call, 0x6A0E during the call and 0x62CE after the call. The corresponding VBUCTRL register values are 0x006, 0x1A8 and 0x18B, respectively. Tabulating: Time point d_vbuctrl VBUCTRL Sidetone UL PGA ---------------------------------------------------------------------- before the call 0x018E 0x006 -5 dB 0 dB during the call 0x6A0E 0x1A8 -23 dB 2 dB after the call 0x62CE 0x18B -20 dB 5 dB d_vbdctrl: we got 0x198C before the call, 0x0A4C during the call and 0x1A4C after the call. The corresponding VBDCTRL register values are 0x066, 0x029 and 0x069, respectively. Tabulating: Time point d_vbdctrl VBDCTRL Volume ctrl DL PGA ---------------------------------------------------------------------- before the call 0x198C 0x066 -6 dB 0 dB during the call 0x0A4C 0x029 0 dB 3 dB after the call 0x1A4C 0x069 -6 dB 3 dB d_aec_ctrl: got 0x0246 during the call or 0x03C7 outside of a call. AEC parameter words: same as in the headset mode, no change with call state. AEC configuration appears to be almost exactly the same between handheld and headset modes, the only difference being in the NS level bits (d_aec_ctrl[6:5]): 0x40 in handheld mode, 0x20 in headset mode. UL FIR coefficients: identity transform. DL FIR coefficients: got an actual filter this time, no change with call state: omr 00: E7 FF 22 00 35 00 F1 FF 09 00 FF FF 80 FF 23 00 omr 10: BD FF 40 00 2A 01 BD FF C1 03 09 01 1D E1 8F 3F omr 20: 1D E1 09 01 C1 03 BD FF 2A 01 40 00 BD FF 23 00 omr 30: 80 FF FF FF 09 00 F1 FF 35 00 22 00 E7 FF Translating into 16-bit words: 0xFFE7 0x0022 0x0035 0xFFF1 0x0009 0xFFFF 0xFF80 0x0023 0xFFBD 0x0040 0x012A 0xFFBD 0x03C1 0x0109 0xE11D 0x3F8F 0xE11D 0x0109 0x03C1 0xFFBD 0x012A 0x0040 0xFFBD 0x0023 0xFF80 0xFFFF 0x0009 0xFFF1 0x0035 0x0022 0xFFE7 The same extracted coefficients have been written into handheld-dl-fir in the format accepted by fir2freq analysis tool. For the nsteps argument to fir2freq, I usually specify 40, so that the frequency response is computed in 100 Hz steps.