Rockbox

Tasklist

FS#10084 - Pop noise via headphones when starting up

Attached to Project: Rockbox
Opened by Andree Buschmann (Buschel) - Wednesday, 01 April 2009, 07:14 GMT
Last edited by Andree Buschmann (Buschel) - Monday, 20 June 2011, 18:19 GMT
Task Type Bugs
Category Drivers
Status Closed
Assigned To No-one
Operating System iPod 5G
Severity Low
Priority Normal
Reported Version Daily build (which?)
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

When starting up the iPod 5G you will hear a loud pop/click noise via the headphones. The loud click comes when calling "audiohw_preinit()". The exact line which causes the clicking is enabling the headphone outputs via "wmcodec_write(PWRMGMT2, PWRMGMT2_ROUT1EN | PWRMGMT2_LOUT1EN)". I played around a lot with the initialization sequence and also took into account the application notes from the datasheet (e.g. muting all output before enabling BIAS, sleeping after enabling BIAS, ...). I could not even reduce the clicking.

Is there maybe an extra GPIO which already has the headphones enabled?

This was tested with r20578 (but it is in svn since ages).
This task depends upon

Closed by  Andree Buschmann (Buschel)
Monday, 20 June 2011, 18:19 GMT
Reason for closing:  Duplicate
Additional comments about closing:   FS#12154  provides a patch to fix this. I close this report as duplicate.
Comment by Michael Sevakis (MikeS) - Thursday, 02 April 2009, 00:37 GMT
That's why there's audiohw_postinit() to allow a delay in the background and continue main inits. Sometimes it takes a good second of delay before enabling outputs and jacks with these codecs and muting is mostly irrelevent. See wm8978.c, wm8751.c, etc.
Comment by Boris Gjenero (dreamlayers) - Thursday, 02 April 2009, 04:16 GMT
It's possible to delay the final click, but I don't see a way to eliminate it. See "recommended l/rout1 enable sequence" and "recommended power up/down sequence" in http://www.wolfsonmicro.com/uploads/documents/en/WM8983_Rev4.1.pdf . In particular, OUT4TOADC_DELEN, OUT4TOADC_OUT1DEL and OUT4TOADC_POBCTRL can be used to delay the click.

There are also quieter clicks when Rockbox starts running and at wmcodec_write(RESET, RESET_RESET).
Comment by Andree Buschmann (Buschel) - Thursday, 02 April 2009, 06:07 GMT
I played around with the recommended sequences before writing this flyspray entry. I could not see any effect -- popping is connected to the call of LOUT1EN and ROUT1EN. Also, for the 5G I can see no hp_jack_enable()-function. Is there a GPIO known which is used for enabling the headphone jack?
Comment by Boris Gjenero (dreamlayers) - Thursday, 02 April 2009, 21:01 GMT
I hear clicks when muting and unmuting output 1 (when changing to and from the lowest volume setting). I also hear clicks when changing volume at the higher settings while nothing is playing. Muting the DAC doesn't help. Considering the internal schematic of the WM8983, this would imply that there is a DC offset at the output of the left and right mixers. This is certainly part of what's responsible for the click. I still don't know how to make the click go away. So far I've only managed to split the click into two smaller clicks. I don't know what else to try and I am giving up for now.

Right now I don't know of any headphone enable GPIO. If I find one in the future, will post about it here.
Comment by Michael Sevakis (MikeS) - Friday, 03 April 2009, 05:57 GMT
You actually tried it with a HZ delay in audiohw_postinit at the right point? That doesn't really seem to be a recommended step but it never failed to mostly get rid of pops for other targets. Sometimes it's not possible to make these things perfect but only not as irritating even with sometimes better behavior than retailos (but I can't remember how my sister's 5.5G sounded re: clicks) Perhaps also try sequences from the wm8978 or wm8985 datasheets? Being sure to use the lowest VMIDSEL can help since it speeds up the settling (helped Meg-FX alot).

And if it's perfectly quiet with retailos, then yeah, I'd go hunting for some additional GPIO. :-)

Loading...