diff options
Diffstat (limited to 'sound/pci/intel8x0.c')
| -rw-r--r-- | sound/pci/intel8x0.c | 10 | 
1 files changed, 7 insertions, 3 deletions
diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c index a289abfc7172..7cf2dcb9d8d4 100644 --- a/sound/pci/intel8x0.c +++ b/sound/pci/intel8x0.c @@ -725,10 +725,11 @@ static void fill_nocache(void *buf, int size, int nocache)  static inline void snd_intel8x0_update(struct intel8x0 *chip, struct ichdev *ichdev)  {  	unsigned long port = ichdev->reg_offset; +	unsigned long flags;  	int status, civ, i, step;  	int ack = 0; -	spin_lock(&chip->reg_lock); +	spin_lock_irqsave(&chip->reg_lock, flags);  	status = igetbyte(chip, port + ichdev->roff_sr);  	civ = igetbyte(chip, port + ICH_REG_OFF_CIV);  	if (!(status & ICH_BCIS)) { @@ -768,7 +769,7 @@ static inline void snd_intel8x0_update(struct intel8x0 *chip, struct ichdev *ich  			ack = 1;  		}  	} -	spin_unlock(&chip->reg_lock); +	spin_unlock_irqrestore(&chip->reg_lock, flags);  	if (ack && ichdev->substream) {  		snd_pcm_period_elapsed(ichdev->substream);  	} @@ -2470,7 +2471,10 @@ static int intel8x0_suspend(struct pci_dev *pci, pm_message_t state)  	}  	pci_disable_device(pci);  	pci_save_state(pci); -	pci_set_power_state(pci, pci_choose_state(pci, state)); +	/* The call below may disable built-in speaker on some laptops +	 * after S2RAM.  So, don't touch it. +	 */ +	/* pci_set_power_state(pci, pci_choose_state(pci, state)); */  	return 0;  }  |