Cx31993 Datasheet Fix Better <iPhone>
The official (leaked) partial datasheet suggests register 0x06 controls muting during rate switching.
Better Setting: Configure your OS to use the same sample rate across all apps.
The problem:
The datasheet mentions I²C control but provides no register map.
The fix (from实测 data):
Use these reverse-engineered registers (verified at 0x4C address): cx31993 datasheet fix better
| Register | Function | Useful values | |----------|----------|----------------| | 0x03 | HP amp gain | 0x00 = -6dB, 0x02 = 0dB, 0x03 = +6dB | | 0x06 | Mixer control | Bit 3 = HP enable | | 0x0A | LED/GPIO | 0x01 = LED on | | 0x10 | PLL config | Default 0x88 for 44.1/48kHz |
Better approach: Always pull I²C lines high (2.2kΩ to 3.3V) even if you don’t use it. The chip floats otherwise. Since the manufacturer did not release a "fixed"
If you are trying to implement this chip or fix a driver:
A common issue with this chip is audible popping or static when the system suspends the codec to save power. // Unlock the secret register 0x11
The "fix" for low volume or missing microphone input is usually not a driver issue, but a routing issue. The Cx31993 is highly configurable; if the mixer paths aren't set correctly, the mic bias voltage might be off, or the ADC gain might be zero.
Since the manufacturer did not release a "fixed" datasheet, the open-source community (specifically developers working on the Linux Kernel sound/pci/hda tree) had to "fix" the implementation by guessing and testing.
A notable example of this "fix" involves the Coefficient Write Protocol.
The datasheets indicated that you send data to the chip, but they didn't explain the required handshake. Developers discovered that writing to the hidden nodes required a specific sequence involving the SET_COEF_INDEX and PROC_COEF verbs.
The Discovery:
In 2012, developers analyzing the Windows drivers discovered that the CS420x family required specific coefficients to be written to Node 0x11 (the "secret" node) to toggle specific hardware features. For example, to fix the subwoofer output on a MacBook Pro, they found a bit had to be flipped in a coefficient that wasn't listed in any public PDF.
// Example of the "Fix" found in Linux Kernel Source (patch_cirrus.c)
// This sequence was not in the original datasheet
0x11, AC_VERB_SET_COEF_INDEX, 0x0020 , // Unlock the secret register
0x11, AC_VERB_SET_PROC_COEF, 0x0001 , // Enable the specific output path