Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 26 Aug 2008 17:45:20 +0000 (10:45 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 26 Aug 2008 17:45:20 +0000 (10:45 -0700)
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
  ALSA: ASoC: Fix error paths in N810 machine driver init and release clocks at exit
  ALSA: oxygen: prevent muting of nonexistent AC97 controls

sound/pci/oxygen/oxygen_mixer.c
sound/soc/omap/n810.c

index 6facac5aed90b3cddcb26bdf444098d84b5e09ad..05eb8994c141a899966a5f9ce791b1fa0ef28343 100644 (file)
@@ -512,9 +512,12 @@ static int ac97_switch_get(struct snd_kcontrol *ctl,
 
 static void mute_ac97_ctl(struct oxygen *chip, unsigned int control)
 {
-       unsigned int priv_idx = chip->controls[control]->private_value & 0xff;
+       unsigned int priv_idx;
        u16 value;
 
+       if (!chip->controls[control])
+               return;
+       priv_idx = chip->controls[control]->private_value & 0xff;
        value = oxygen_read_ac97(chip, 0, priv_idx);
        if (!(value & 0x8000)) {
                oxygen_write_ac97(chip, 0, priv_idx, value | 0x8000);
index 7694621ec40b7e8747a80b5f2131b926a3b8f634..87d0ed01f65adf5682dcf8bdc931424d454ba60d 100644 (file)
@@ -329,12 +329,14 @@ static int __init n810_soc_init(void)
        sys_clkout2_src = clk_get(dev, "sys_clkout2_src");
        if (IS_ERR(sys_clkout2_src)) {
                dev_err(dev, "Could not get sys_clkout2_src clock\n");
-               return -ENODEV;
+               err = PTR_ERR(sys_clkout2_src);
+               goto err2;
        }
        sys_clkout2 = clk_get(dev, "sys_clkout2");
        if (IS_ERR(sys_clkout2)) {
                dev_err(dev, "Could not get sys_clkout2\n");
-               goto err1;
+               err = PTR_ERR(sys_clkout2);
+               goto err3;
        }
        /*
         * Configure 12 MHz output on SYS_CLKOUT2. Therefore we must use
@@ -343,7 +345,8 @@ static int __init n810_soc_init(void)
        func96m_clk = clk_get(dev, "func_96m_ck");
        if (IS_ERR(func96m_clk)) {
                dev_err(dev, "Could not get func 96M clock\n");
-               goto err2;
+               err = PTR_ERR(func96m_clk);
+               goto err4;
        }
        clk_set_parent(sys_clkout2_src, func96m_clk);
        clk_set_rate(sys_clkout2, 12000000);
@@ -356,20 +359,25 @@ static int __init n810_soc_init(void)
        gpio_direction_output(N810_SPEAKER_AMP_GPIO, 0);
 
        return 0;
-err2:
+err4:
        clk_put(sys_clkout2);
+err3:
+       clk_put(sys_clkout2_src);
+err2:
        platform_device_del(n810_snd_device);
 err1:
        platform_device_put(n810_snd_device);
 
        return err;
-
 }
 
 static void __exit n810_soc_exit(void)
 {
        gpio_free(N810_SPEAKER_AMP_GPIO);
        gpio_free(N810_HEADSET_AMP_GPIO);
+       clk_put(sys_clkout2_src);
+       clk_put(sys_clkout2);
+       clk_put(func96m_clk);
 
        platform_device_unregister(n810_snd_device);
 }