Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 12 Dec 2009 19:40:50 +0000 (11:40 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 12 Dec 2009 19:40:50 +0000 (11:40 -0800)
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
  ALSA: hda - Overwrite pin config on intel DG45ID board.
  intelhdmi - dont power off HDA link
  ALSA: hrtimer - Fix lock-up
  ALSA: intelhdmi - add channel mapping for typical configurations
  ALSA: intelhdmi - channel mapping applies to Pin
  ALSA: intelhdmi - accept DisplayPort pin
  ALSA: hda - show HBR(High Bit Rate) pin cap in procfs
  ALSA: hda - Fix LED GPIO setup for HP laptops with IDT codecs
  ASoC: Fix build of OMAP sound drivers
  ALSA: opti93x: fix irq releasing if the irq cannot be allocated

1  2 
sound/isa/opti9xx/opti92x-ad1848.c

@@@ -179,7 -179,7 +179,7 @@@ MODULE_DEVICE_TABLE(pnp_card, snd_opti9
  #endif
  
  static char * snd_opti9xx_names[] = {
 -      "unkown",
 +      "unknown",
        "82C928",       "82C929",
        "82C924",       "82C925",
        "82C930",       "82C931",       "82C933"
@@@ -548,10 -548,13 +548,13 @@@ __skip_mpu
  
  static irqreturn_t snd_opti93x_interrupt(int irq, void *dev_id)
  {
-       struct snd_wss *codec = dev_id;
-       struct snd_opti9xx *chip = codec->card->private_data;
+       struct snd_opti9xx *chip = dev_id;
+       struct snd_wss *codec = chip->codec;
        unsigned char status;
  
+       if (!codec)
+               return IRQ_HANDLED;
        status = snd_opti9xx_read(chip, OPTi9XX_MC_REG(11));
        if ((status & OPTi93X_IRQ_PLAYBACK) && codec->playback_substream)
                snd_pcm_period_elapsed(codec->playback_substream);
@@@ -691,10 -694,9 +694,9 @@@ static void snd_card_opti9xx_free(struc
  
        if (chip) {
  #ifdef OPTi93X
-               struct snd_wss *codec = chip->codec;
-               if (codec && codec->irq > 0) {
-                       disable_irq(codec->irq);
-                       free_irq(codec->irq, codec);
+               if (chip->irq > 0) {
+                       disable_irq(chip->irq);
+                       free_irq(chip->irq, chip);
                }
                release_and_free_resource(chip->res_mc_indir);
  #endif
@@@ -759,9 -761,9 +761,9 @@@ static int __devinit snd_opti9xx_probe(
  #endif
  #ifdef OPTi93X
        error = request_irq(irq, snd_opti93x_interrupt,
-                           IRQF_DISABLED, DEV_NAME" - WSS", codec);
+                           IRQF_DISABLED, DEV_NAME" - WSS", chip);
        if (error < 0) {
-               snd_printk(KERN_ERR "opti9xx: can't grab IRQ %d\n", chip->irq);
+               snd_printk(KERN_ERR "opti9xx: can't grab IRQ %d\n", irq);
                return error;
        }
  #endif