Version 1: this patch prolongs startup time by 2 seconds, because the
sleep happens early before other threads have started.
The patch is tested on CreativeZEN and Fuze+.
The datasheet was not very helpfull, so some experimentation was needed.
I came to the following conclusions:
* setting HP to ground:
to prevent popping noises, the headphone output can be set to ground.
This however must be done before any part of the audioout module is
powered up (setting HP to ground itself will lead to a pop otherwise).
This consequently means that HP must NOT be set to ground for powerdown
sequence!
Further study showed that setting HP out to ground has no audible benefit,
controversly not setting/resetting allows for noiseless RoLo-ing.
* headphone amp class A/AB mode:
initially the HP amp is in class A mode, and should be set to
class AB before playing audio, as the datasheet mentions.
If the HP output is set to ground, it must be released BEFORE
setting class AB! Releasing from ground while in AB mode leads
to a very loud pop!
* release HP from ground:
as said before: never release the HP from ground if the HP amp is
set to class AB mode. Therefore the correct order is to power up the
headphone amp, wait some time, release HP from ground, and then
set the amp to class AB mode.
To prevent pop, some time is needed before releasing the HP from gnd.
On CreativeZEN 2 sec seems to be ideal; 1 sec have no audible effect,
1.5 sec softenes the pop to some degree.
* shutting player off
The popping noise when shutting off is much quieter that on power up,
so depopping measures are not absolutely necessary.
However the power off pop can be silenced by inserting a wait time
after the audioout block is closed and before the rest of the chip
is powered down. The longer the better, a time of 5 sec practically
eliminates the pop.
Note that RoLo-ing can still produce noise, because the audio device
is not properly shut down.
Change-Id: Ib20e1d613b346433d2a711c442e303ededc26e78