lkml.org 
[lkml]   [2010]   [May]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[54/98] ALSA: snd-meastro3: Ignore spurious HV interrupts during suspend / resume
    2.6.32-stable review patch.  If anyone has any objections, please let us know.

    ------------------

    From: Hans de Goede <hdegoede@redhat.com>

    commit 715aa675338ce6e1a3b4f77cf87ea611f93058a8 upstream.

    Ignore spurious HV interrupts during suspend / resume, this avoids
    mistaking them for a mute button press. This is not very pretty but
    it seems the only way to fix the master volume control gets muted
    after suspend issue I'm seeing. Note that the es1968 driver is doing
    exactly the same.

    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    sound/pci/maestro3.c | 8 ++++++++
    1 file changed, 8 insertions(+)

    --- a/sound/pci/maestro3.c
    +++ b/sound/pci/maestro3.c
    @@ -849,6 +849,7 @@ struct snd_m3 {
    struct snd_kcontrol *master_switch;
    struct snd_kcontrol *master_volume;
    struct tasklet_struct hwvol_tq;
    + unsigned int in_suspend;

    #ifdef CONFIG_PM
    u16 *suspend_mem;
    @@ -1614,6 +1615,11 @@ static void snd_m3_update_hw_volume(unsi
    outb(0x88, chip->iobase + SHADOW_MIX_REG_MASTER);
    outb(0x88, chip->iobase + HW_VOL_COUNTER_MASTER);

    + /* Ignore spurious HV interrupts during suspend / resume, this avoids
    + mistaking them for a mute button press. */
    + if (chip->in_suspend)
    + return;
    +
    if (!chip->master_switch || !chip->master_volume)
    return;

    @@ -2425,6 +2431,7 @@ static int m3_suspend(struct pci_dev *pc
    if (chip->suspend_mem == NULL)
    return 0;

    + chip->in_suspend = 1;
    snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
    snd_pcm_suspend_all(chip->pcm);
    snd_ac97_suspend(chip->ac97);
    @@ -2498,6 +2505,7 @@ static int m3_resume(struct pci_dev *pci
    snd_m3_hv_init(chip);

    snd_power_change_state(card, SNDRV_CTL_POWER_D0);
    + chip->in_suspend = 0;
    return 0;
    }
    #endif /* CONFIG_PM */



    \
     
     \ /
      Last update: 2010-05-12 10:17    [W:2.098 / U:0.360 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site