diff options
-rw-r--r-- | sound/soc/codecs/rt5659.c | 31 | ||||
-rw-r--r-- | sound/soc/codecs/rt5659.h | 1 | ||||
-rw-r--r-- | sound/soc/codecs/sigmadsp-i2c.c | 5 | ||||
-rw-r--r-- | sound/soc/codecs/wm5110.c | 1 | ||||
-rw-r--r-- | sound/soc/codecs/wm8960.c | 40 | ||||
-rw-r--r-- | sound/soc/generic/simple-card.c | 2 |
6 files changed, 41 insertions, 39 deletions
diff --git a/sound/soc/codecs/rt5659.c b/sound/soc/codecs/rt5659.c index 820d8fa62b5e..fb8ea05c0de1 100644 --- a/sound/soc/codecs/rt5659.c +++ b/sound/soc/codecs/rt5659.c | |||
@@ -3985,7 +3985,6 @@ static int rt5659_i2c_probe(struct i2c_client *i2c, | |||
3985 | if (rt5659 == NULL) | 3985 | if (rt5659 == NULL) |
3986 | return -ENOMEM; | 3986 | return -ENOMEM; |
3987 | 3987 | ||
3988 | rt5659->i2c = i2c; | ||
3989 | i2c_set_clientdata(i2c, rt5659); | 3988 | i2c_set_clientdata(i2c, rt5659); |
3990 | 3989 | ||
3991 | if (pdata) | 3990 | if (pdata) |
@@ -4157,24 +4156,17 @@ static int rt5659_i2c_probe(struct i2c_client *i2c, | |||
4157 | 4156 | ||
4158 | INIT_DELAYED_WORK(&rt5659->jack_detect_work, rt5659_jack_detect_work); | 4157 | INIT_DELAYED_WORK(&rt5659->jack_detect_work, rt5659_jack_detect_work); |
4159 | 4158 | ||
4160 | if (rt5659->i2c->irq) { | 4159 | if (i2c->irq) { |
4161 | ret = request_threaded_irq(rt5659->i2c->irq, NULL, rt5659_irq, | 4160 | ret = devm_request_threaded_irq(&i2c->dev, i2c->irq, NULL, |
4162 | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | 4161 | rt5659_irq, IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING |
4163 | | IRQF_ONESHOT, "rt5659", rt5659); | 4162 | | IRQF_ONESHOT, "rt5659", rt5659); |
4164 | if (ret) | 4163 | if (ret) |
4165 | dev_err(&i2c->dev, "Failed to reguest IRQ: %d\n", ret); | 4164 | dev_err(&i2c->dev, "Failed to reguest IRQ: %d\n", ret); |
4166 | 4165 | ||
4167 | } | 4166 | } |
4168 | 4167 | ||
4169 | ret = snd_soc_register_codec(&i2c->dev, &soc_codec_dev_rt5659, | 4168 | return snd_soc_register_codec(&i2c->dev, &soc_codec_dev_rt5659, |
4170 | rt5659_dai, ARRAY_SIZE(rt5659_dai)); | 4169 | rt5659_dai, ARRAY_SIZE(rt5659_dai)); |
4171 | |||
4172 | if (ret) { | ||
4173 | if (rt5659->i2c->irq) | ||
4174 | free_irq(rt5659->i2c->irq, rt5659); | ||
4175 | } | ||
4176 | |||
4177 | return 0; | ||
4178 | } | 4170 | } |
4179 | 4171 | ||
4180 | static int rt5659_i2c_remove(struct i2c_client *i2c) | 4172 | static int rt5659_i2c_remove(struct i2c_client *i2c) |
@@ -4191,24 +4183,29 @@ void rt5659_i2c_shutdown(struct i2c_client *client) | |||
4191 | regmap_write(rt5659->regmap, RT5659_RESET, 0); | 4183 | regmap_write(rt5659->regmap, RT5659_RESET, 0); |
4192 | } | 4184 | } |
4193 | 4185 | ||
4186 | #ifdef CONFIG_OF | ||
4194 | static const struct of_device_id rt5659_of_match[] = { | 4187 | static const struct of_device_id rt5659_of_match[] = { |
4195 | { .compatible = "realtek,rt5658", }, | 4188 | { .compatible = "realtek,rt5658", }, |
4196 | { .compatible = "realtek,rt5659", }, | 4189 | { .compatible = "realtek,rt5659", }, |
4197 | {}, | 4190 | { }, |
4198 | }; | 4191 | }; |
4192 | MODULE_DEVICE_TABLE(of, rt5659_of_match); | ||
4193 | #endif | ||
4199 | 4194 | ||
4195 | #ifdef CONFIG_ACPI | ||
4200 | static struct acpi_device_id rt5659_acpi_match[] = { | 4196 | static struct acpi_device_id rt5659_acpi_match[] = { |
4201 | { "10EC5658", 0}, | 4197 | { "10EC5658", 0, }, |
4202 | { "10EC5659", 0}, | 4198 | { "10EC5659", 0, }, |
4203 | { }, | 4199 | { }, |
4204 | }; | 4200 | }; |
4205 | MODULE_DEVICE_TABLE(acpi, rt5659_acpi_match); | 4201 | MODULE_DEVICE_TABLE(acpi, rt5659_acpi_match); |
4202 | #endif | ||
4206 | 4203 | ||
4207 | struct i2c_driver rt5659_i2c_driver = { | 4204 | struct i2c_driver rt5659_i2c_driver = { |
4208 | .driver = { | 4205 | .driver = { |
4209 | .name = "rt5659", | 4206 | .name = "rt5659", |
4210 | .owner = THIS_MODULE, | 4207 | .owner = THIS_MODULE, |
4211 | .of_match_table = rt5659_of_match, | 4208 | .of_match_table = of_match_ptr(rt5659_of_match), |
4212 | .acpi_match_table = ACPI_PTR(rt5659_acpi_match), | 4209 | .acpi_match_table = ACPI_PTR(rt5659_acpi_match), |
4213 | }, | 4210 | }, |
4214 | .probe = rt5659_i2c_probe, | 4211 | .probe = rt5659_i2c_probe, |
diff --git a/sound/soc/codecs/rt5659.h b/sound/soc/codecs/rt5659.h index 8f07ee903eaa..d31c9e5bcec8 100644 --- a/sound/soc/codecs/rt5659.h +++ b/sound/soc/codecs/rt5659.h | |||
@@ -1792,7 +1792,6 @@ struct rt5659_priv { | |||
1792 | struct snd_soc_codec *codec; | 1792 | struct snd_soc_codec *codec; |
1793 | struct rt5659_platform_data pdata; | 1793 | struct rt5659_platform_data pdata; |
1794 | struct regmap *regmap; | 1794 | struct regmap *regmap; |
1795 | struct i2c_client *i2c; | ||
1796 | struct gpio_desc *gpiod_ldo1_en; | 1795 | struct gpio_desc *gpiod_ldo1_en; |
1797 | struct gpio_desc *gpiod_reset; | 1796 | struct gpio_desc *gpiod_reset; |
1798 | struct snd_soc_jack *hs_jack; | 1797 | struct snd_soc_jack *hs_jack; |
diff --git a/sound/soc/codecs/sigmadsp-i2c.c b/sound/soc/codecs/sigmadsp-i2c.c index 21ca3a5e9f66..d374c18d4db7 100644 --- a/sound/soc/codecs/sigmadsp-i2c.c +++ b/sound/soc/codecs/sigmadsp-i2c.c | |||
@@ -31,7 +31,10 @@ static int sigmadsp_write_i2c(void *control_data, | |||
31 | 31 | ||
32 | kfree(buf); | 32 | kfree(buf); |
33 | 33 | ||
34 | return ret; | 34 | if (ret < 0) |
35 | return ret; | ||
36 | |||
37 | return 0; | ||
35 | } | 38 | } |
36 | 39 | ||
37 | static int sigmadsp_read_i2c(void *control_data, | 40 | static int sigmadsp_read_i2c(void *control_data, |
diff --git a/sound/soc/codecs/wm5110.c b/sound/soc/codecs/wm5110.c index 6088d30962a9..97c0f1e23886 100644 --- a/sound/soc/codecs/wm5110.c +++ b/sound/soc/codecs/wm5110.c | |||
@@ -2382,6 +2382,7 @@ error: | |||
2382 | 2382 | ||
2383 | static int wm5110_remove(struct platform_device *pdev) | 2383 | static int wm5110_remove(struct platform_device *pdev) |
2384 | { | 2384 | { |
2385 | snd_soc_unregister_platform(&pdev->dev); | ||
2385 | snd_soc_unregister_codec(&pdev->dev); | 2386 | snd_soc_unregister_codec(&pdev->dev); |
2386 | pm_runtime_disable(&pdev->dev); | 2387 | pm_runtime_disable(&pdev->dev); |
2387 | 2388 | ||
diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c index ff237726775a..d7f444f87460 100644 --- a/sound/soc/codecs/wm8960.c +++ b/sound/soc/codecs/wm8960.c | |||
@@ -240,13 +240,13 @@ SOC_DOUBLE_R("Capture Volume ZC Switch", WM8960_LINVOL, WM8960_RINVOL, | |||
240 | SOC_DOUBLE_R("Capture Switch", WM8960_LINVOL, WM8960_RINVOL, | 240 | SOC_DOUBLE_R("Capture Switch", WM8960_LINVOL, WM8960_RINVOL, |
241 | 7, 1, 1), | 241 | 7, 1, 1), |
242 | 242 | ||
243 | SOC_SINGLE_TLV("Right Input Boost Mixer RINPUT3 Volume", | 243 | SOC_SINGLE_TLV("Left Input Boost Mixer LINPUT3 Volume", |
244 | WM8960_INBMIX1, 4, 7, 0, lineinboost_tlv), | 244 | WM8960_INBMIX1, 4, 7, 0, lineinboost_tlv), |
245 | SOC_SINGLE_TLV("Right Input Boost Mixer RINPUT2 Volume", | 245 | SOC_SINGLE_TLV("Left Input Boost Mixer LINPUT2 Volume", |
246 | WM8960_INBMIX1, 1, 7, 0, lineinboost_tlv), | 246 | WM8960_INBMIX1, 1, 7, 0, lineinboost_tlv), |
247 | SOC_SINGLE_TLV("Left Input Boost Mixer LINPUT3 Volume", | 247 | SOC_SINGLE_TLV("Right Input Boost Mixer RINPUT3 Volume", |
248 | WM8960_INBMIX2, 4, 7, 0, lineinboost_tlv), | 248 | WM8960_INBMIX2, 4, 7, 0, lineinboost_tlv), |
249 | SOC_SINGLE_TLV("Left Input Boost Mixer LINPUT2 Volume", | 249 | SOC_SINGLE_TLV("Right Input Boost Mixer RINPUT2 Volume", |
250 | WM8960_INBMIX2, 1, 7, 0, lineinboost_tlv), | 250 | WM8960_INBMIX2, 1, 7, 0, lineinboost_tlv), |
251 | SOC_SINGLE_TLV("Right Input Boost Mixer RINPUT1 Volume", | 251 | SOC_SINGLE_TLV("Right Input Boost Mixer RINPUT1 Volume", |
252 | WM8960_RINPATH, 4, 3, 0, micboost_tlv), | 252 | WM8960_RINPATH, 4, 3, 0, micboost_tlv), |
@@ -643,29 +643,31 @@ static int wm8960_configure_clocking(struct snd_soc_codec *codec) | |||
643 | return -EINVAL; | 643 | return -EINVAL; |
644 | } | 644 | } |
645 | 645 | ||
646 | /* check if the sysclk frequency is available. */ | 646 | if (wm8960->clk_id != WM8960_SYSCLK_PLL) { |
647 | for (i = 0; i < ARRAY_SIZE(sysclk_divs); ++i) { | 647 | /* check if the sysclk frequency is available. */ |
648 | if (sysclk_divs[i] == -1) | 648 | for (i = 0; i < ARRAY_SIZE(sysclk_divs); ++i) { |
649 | continue; | 649 | if (sysclk_divs[i] == -1) |
650 | sysclk = freq_out / sysclk_divs[i]; | 650 | continue; |
651 | for (j = 0; j < ARRAY_SIZE(dac_divs); ++j) { | 651 | sysclk = freq_out / sysclk_divs[i]; |
652 | if (sysclk == dac_divs[j] * lrclk) { | 652 | for (j = 0; j < ARRAY_SIZE(dac_divs); ++j) { |
653 | if (sysclk != dac_divs[j] * lrclk) | ||
654 | continue; | ||
653 | for (k = 0; k < ARRAY_SIZE(bclk_divs); ++k) | 655 | for (k = 0; k < ARRAY_SIZE(bclk_divs); ++k) |
654 | if (sysclk == bclk * bclk_divs[k] / 10) | 656 | if (sysclk == bclk * bclk_divs[k] / 10) |
655 | break; | 657 | break; |
656 | if (k != ARRAY_SIZE(bclk_divs)) | 658 | if (k != ARRAY_SIZE(bclk_divs)) |
657 | break; | 659 | break; |
658 | } | 660 | } |
661 | if (j != ARRAY_SIZE(dac_divs)) | ||
662 | break; | ||
659 | } | 663 | } |
660 | if (j != ARRAY_SIZE(dac_divs)) | ||
661 | break; | ||
662 | } | ||
663 | 664 | ||
664 | if (i != ARRAY_SIZE(sysclk_divs)) { | 665 | if (i != ARRAY_SIZE(sysclk_divs)) { |
665 | goto configure_clock; | 666 | goto configure_clock; |
666 | } else if (wm8960->clk_id != WM8960_SYSCLK_AUTO) { | 667 | } else if (wm8960->clk_id != WM8960_SYSCLK_AUTO) { |
667 | dev_err(codec->dev, "failed to configure clock\n"); | 668 | dev_err(codec->dev, "failed to configure clock\n"); |
668 | return -EINVAL; | 669 | return -EINVAL; |
670 | } | ||
669 | } | 671 | } |
670 | /* get a available pll out frequency and set pll */ | 672 | /* get a available pll out frequency and set pll */ |
671 | for (i = 0; i < ARRAY_SIZE(sysclk_divs); ++i) { | 673 | for (i = 0; i < ARRAY_SIZE(sysclk_divs); ++i) { |
diff --git a/sound/soc/generic/simple-card.c b/sound/soc/generic/simple-card.c index 1ded8811598e..2389ab47e25f 100644 --- a/sound/soc/generic/simple-card.c +++ b/sound/soc/generic/simple-card.c | |||
@@ -99,7 +99,7 @@ static int asoc_simple_card_hw_params(struct snd_pcm_substream *substream, | |||
99 | if (ret && ret != -ENOTSUPP) | 99 | if (ret && ret != -ENOTSUPP) |
100 | goto err; | 100 | goto err; |
101 | } | 101 | } |
102 | 102 | return 0; | |
103 | err: | 103 | err: |
104 | return ret; | 104 | return ret; |
105 | } | 105 | } |