mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-16 17:23:55 +08:00
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
* '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
This commit is contained in:
commit
1941246dd9
@ -512,9 +512,12 @@ static int ac97_switch_get(struct snd_kcontrol *ctl,
|
|||||||
|
|
||||||
static void mute_ac97_ctl(struct oxygen *chip, unsigned int control)
|
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;
|
u16 value;
|
||||||
|
|
||||||
|
if (!chip->controls[control])
|
||||||
|
return;
|
||||||
|
priv_idx = chip->controls[control]->private_value & 0xff;
|
||||||
value = oxygen_read_ac97(chip, 0, priv_idx);
|
value = oxygen_read_ac97(chip, 0, priv_idx);
|
||||||
if (!(value & 0x8000)) {
|
if (!(value & 0x8000)) {
|
||||||
oxygen_write_ac97(chip, 0, priv_idx, value | 0x8000);
|
oxygen_write_ac97(chip, 0, priv_idx, value | 0x8000);
|
||||||
|
@ -329,12 +329,14 @@ static int __init n810_soc_init(void)
|
|||||||
sys_clkout2_src = clk_get(dev, "sys_clkout2_src");
|
sys_clkout2_src = clk_get(dev, "sys_clkout2_src");
|
||||||
if (IS_ERR(sys_clkout2_src)) {
|
if (IS_ERR(sys_clkout2_src)) {
|
||||||
dev_err(dev, "Could not get sys_clkout2_src clock\n");
|
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");
|
sys_clkout2 = clk_get(dev, "sys_clkout2");
|
||||||
if (IS_ERR(sys_clkout2)) {
|
if (IS_ERR(sys_clkout2)) {
|
||||||
dev_err(dev, "Could not get sys_clkout2\n");
|
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
|
* 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");
|
func96m_clk = clk_get(dev, "func_96m_ck");
|
||||||
if (IS_ERR(func96m_clk)) {
|
if (IS_ERR(func96m_clk)) {
|
||||||
dev_err(dev, "Could not get func 96M clock\n");
|
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_parent(sys_clkout2_src, func96m_clk);
|
||||||
clk_set_rate(sys_clkout2, 12000000);
|
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);
|
gpio_direction_output(N810_SPEAKER_AMP_GPIO, 0);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
err2:
|
err4:
|
||||||
clk_put(sys_clkout2);
|
clk_put(sys_clkout2);
|
||||||
|
err3:
|
||||||
|
clk_put(sys_clkout2_src);
|
||||||
|
err2:
|
||||||
platform_device_del(n810_snd_device);
|
platform_device_del(n810_snd_device);
|
||||||
err1:
|
err1:
|
||||||
platform_device_put(n810_snd_device);
|
platform_device_put(n810_snd_device);
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit n810_soc_exit(void)
|
static void __exit n810_soc_exit(void)
|
||||||
{
|
{
|
||||||
gpio_free(N810_SPEAKER_AMP_GPIO);
|
gpio_free(N810_SPEAKER_AMP_GPIO);
|
||||||
gpio_free(N810_HEADSET_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);
|
platform_device_unregister(n810_snd_device);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user