Proposed fix for the suspend/resume pop

Mitch Bradley wmb at
Fri Mar 16 17:52:06 EDT 2007

John Watlington wrote:
> You forgot to throw in the part where this signal crosses between 
> +3.3V logic and +5V logic, nixing a few
> of the proposed designs...   The biggest headache is that EAPD really 
> should be inverted, from a hardware
> point of view, but changing a ten year old standard seems like tilting 
> at windmills.
> I was under the impression that Arnold and I agreed the best fix was 
> to move the amp shutdown signal
> to the EC (and eliminate pullup R335).  No additional components 
> required, and the driver doesn't require
> modification.

This is a plausible approach, for sure.  The implications, just to get 
it all out on the table, are:

a) While the AC97 driver doesn't need to change, we essentially need 
another driver, unless we have the EC do the magic behind the scenes.

b) If the EC does the magic, it can power-off the amp at suspend/resume 
boundaries; we lose the flexibility of turning the amp off when audio is 
inactive.  I don't know how much power that saves in practice.

c) The EC will have to time the amp power-up so it happens after the 
supplies have settled.

d) According to my experiments, even when the power is stable, bringing 
the amp out of shutdown results in a little pop.  Not nearly as loud as 
before, but still audible, and likely to be annoying if it happens 
periodically as a result of micro-sleeps.

e) Plus the fact that the EC code development continues to be a sore 

>   There are alternative solutions, but most seem to cost one EC output...
> Comments ?  Alternative suggestions ?
> wad
> On Mar 16, 2007, at 4:37 PM, Mitch Bradley wrote:
>> Here is the train of thought that led me to the inverted EAPD 
>> conclusion:
>> (Assume for the sake of discussion that we want to use EAPD, not an 
>> external GPIO)
>> a) There is a period of time after power up when EAPD is going to be 
>> at the logic low level, because that is the hardware default value, 
>> and it takes absolute minimum 8 mS (longer than the pop time) for me 
>> to get the CPU into a state where it could even think about talking 
>> to the CODEC.
>> b) To eliminate the pop, the amplifier shutdown pin must be in the 
>> shutdown state while power is stabilizing.  That is the opposite 
>> state from the EAPD default.
>> c) Therefore, in order to eliminate the pop yet preserve the normal 
>> sense of EAPD, it would be necessary to have an additional control to 
>> force the amp shutdown state despite the fact that EAPD is telling 
>> the amp to be on.  And that control would then have to be turned off 
>> after the software is certain that the EAPD pin has been driven to 
>> the power-down state.  Which might require more driver complexity 
>> than inverting.
>> Jim Gettys wrote:
>>> Let's see if Jaya Kumar has a heart attack ;-).
>>> He can tell us if we're on thin ice, or whether there is infrastructure
>>> in the audio subsystem that will avoid any heartburn.
>>> Jaya?  This is best from a hardware standpoint.
>>>                                      - Jim
>>> On Fri, 2007-03-16 at 09:46 -1000, Mitch Bradley wrote:
>>>> I have a simple hardware fix for the popping sound that happens on 
>>>> power up, suspend, and resume.  The net component impact is the 
>>>> removal of one transistor.  I have tested this fix and it works.
>>>> Details are in
>>>> There is a software impact.  With this change, in order to get 
>>>> sound out, it is necessary to assert the EAPD pin on the CODEC.  
>>>> That pin, deasserted by default, is nominally used to turn off the 
>>>> amp when asserted.  With the change, asserting that pin turns the 
>>>> amp on, not off.  Hardware engineers from Quanta and Analog Devices 
>>>> considered, without success, several other hardware changes to 
>>>> eliminate that pop.  It boils down to the fact that we have either 
>>>> invert the sense of that pin, or switch the amp control to an 
>>>> entirely separate GPIO pin on another device (which are in short 
>>>> supply).
>>>> To assert that pin, write 0x8000 to codec register 0x26.
>>>> _______________________________________________
>>>> Devel mailing list
>>>> Devel at

More information about the Devel mailing list