Bugzilla – Bug 12741
Headphone pops on power on
Last modified: 2011-11-06 23:23:26 UTC
I think this is the power on sequence in the DAC. Advice needed on how to avoid hearing pops in the headphone.
I'm having a hard time figuring out what the right register settings are to reduce the turn-on pop. By setting register 42, I can reduce the pop, but since the registers are cached, things don't work as expected. How do I write registers without going through the cache for debugging? This helps, but only sort of. It delays turning on. When turning on the headphone you need to be able to wait for HPRCOM_CFG.0 to read '1' (i.e. fully powered up). That way, the turn-on delay will be honored. /* headphone */ aic3104_write_reg(codec, MICBIAS_CTRL, (2 << 6)); /* turn on MICBIAS to 2.5V */ aic3104_write_reg(codec, HPRCOM_CFG, (4 << 3)); /* turn off HPRCOM */ aic3104_write_reg(codec, /* HIGH_POWER_OUTPUT_STAGE */ 40, (2 << 6) | (1 << 0)); /* 1.65 V bias for HP output & soft stepping */ aic3104_write_reg(codec, /* Pop Reduction Register */ 42, (6 << 4) | (3 << 2)); /* Pop reduction of 100mS & ramp-up step time of 4ms */ aic3104_write_reg(codec, HPLOUT_CTRL, (0 << 4) | /* 0dB level */ (1 << 3) | /* HPLOUT is not muted */ (1 << 2) | /* Drive to 1.65V when powered down */ (1 << 0) /* HPLOUT is powered up */ ); aic3104_write_reg(codec, HPROUT_CTRL, (0 << 4) | /* 0dB level */ (1 << 3) | /* HPROUT is not muted */ (1 << 2) | /* Drive to common mode voltage */ (1 << 0) /* HPROUT is powered up */ );
Fixed in baby-mp r6685. Assigned to Caleb to verify levels on scope.
When restarting, without power-down, it works nicely. However, the left channel has a significant pop when powered off for a while. To reproduce, turn off, and let rest 1 minute, then turn back on. The 2 channels seem to be configured differently. ( think it's the same difference you showed me this morning). Look at the attached scope trace, and you see that the right channel (yellow) is pulled up slowly during the boot, whereas the left channel is turned on very fast, causing a pop. Center of the screen is turn on, about 5 seconds in, the right channel starts rising, about 17 seconds, the left channel (red) turns on and pop!
Created attachment 5495 [details] right good, left bad. Left channel is configured improperly (red) and should be done like the right (yellow). This is probably the 'pull-to-center-rail-on-power-down' configuration.
Ok, try with baby-mp r6702.
Wait! Now both channels pop. undo whatever you did, then undo it atgain on the other channel. Tested with r6719
Ok, try again! baby-mp r6737.
*** Bug 13020 has been marked as a duplicate of this bug. ***
Reset priority before triage.
r6737 is good, but still not perfect. More study is needed to get the voltages to come up right. This is *definitely* good enough for MP, and may be good enough for 8.0, but I'd prefer it get better.
Unassigned bugs cannot have a priority.