Bug 12741 - Headphone pops on power on
: Headphone pops on power on
Status: NEW
Product: SB Radio
Classification: Unclassified
Component: Audio
: Include FW version in comment
: PC Windows XP
: -- normal (vote)
: ---
Assigned To: Unassigned bug - please assign me!
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2009-07-08 11:43 UTC by Richard Titmuss
Modified: 2011-11-06 23:23 UTC (History)
1 user (show)

See Also:
Category: ---


Attachments
right good, left bad. (20.41 KB, image/png)
2009-07-20 19:34 UTC, Caleb Crome
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Richard Titmuss 2009-07-08 11:43:15 UTC
I think this is the power on sequence in the DAC. Advice needed on how to avoid hearing pops in the headphone.
Comment 1 Caleb Crome 2009-07-08 22:31:25 UTC
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 */
			  );
Comment 2 Richard Titmuss 2009-07-20 12:15:04 UTC
Fixed in baby-mp r6685. Assigned to Caleb to verify levels on scope.
Comment 3 Caleb Crome 2009-07-20 19:31:04 UTC
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!
Comment 4 Caleb Crome 2009-07-20 19:34:52 UTC
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.
Comment 5 Richard Titmuss 2009-07-21 03:53:40 UTC
Ok, try with baby-mp r6702.
Comment 6 Caleb Crome 2009-07-21 14:10:16 UTC
Wait!  Now both channels pop. undo whatever you did, then undo it atgain on the other channel.  Tested with r6719
Comment 7 Richard Titmuss 2009-07-22 03:47:32 UTC
Ok, try again! baby-mp r6737.
Comment 8 Caleb Crome 2009-07-23 15:26:26 UTC
*** Bug 13020 has been marked as a duplicate of this bug. ***
Comment 9 Richard Titmuss 2009-07-27 01:09:44 UTC
Reset priority before triage.
Comment 10 Caleb Crome 2009-07-30 10:34:13 UTC
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.
Comment 11 Alan Young 2011-11-06 23:23:26 UTC
Unassigned bugs cannot have a priority.