diff options
Diffstat (limited to 'sound/soc/codecs/wm8961.c')
-rw-r--r-- | sound/soc/codecs/wm8961.c | 31 |
1 files changed, 4 insertions, 27 deletions
diff --git a/sound/soc/codecs/wm8961.c b/sound/soc/codecs/wm8961.c index 503032085899..50634ab76a5c 100644 --- a/sound/soc/codecs/wm8961.c +++ b/sound/soc/codecs/wm8961.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/pm.h> | 18 | #include <linux/pm.h> |
19 | #include <linux/i2c.h> | 19 | #include <linux/i2c.h> |
20 | #include <linux/platform_device.h> | 20 | #include <linux/platform_device.h> |
21 | #include <linux/slab.h> | ||
21 | #include <sound/core.h> | 22 | #include <sound/core.h> |
22 | #include <sound/pcm.h> | 23 | #include <sound/pcm.h> |
23 | #include <sound/pcm_params.h> | 24 | #include <sound/pcm_params.h> |
@@ -986,19 +987,9 @@ static int wm8961_probe(struct platform_device *pdev) | |||
986 | snd_soc_dapm_new_controls(codec, wm8961_dapm_widgets, | 987 | snd_soc_dapm_new_controls(codec, wm8961_dapm_widgets, |
987 | ARRAY_SIZE(wm8961_dapm_widgets)); | 988 | ARRAY_SIZE(wm8961_dapm_widgets)); |
988 | snd_soc_dapm_add_routes(codec, audio_paths, ARRAY_SIZE(audio_paths)); | 989 | snd_soc_dapm_add_routes(codec, audio_paths, ARRAY_SIZE(audio_paths)); |
989 | snd_soc_dapm_new_widgets(codec); | ||
990 | |||
991 | ret = snd_soc_init_card(socdev); | ||
992 | if (ret < 0) { | ||
993 | dev_err(codec->dev, "failed to register card: %d\n", ret); | ||
994 | goto card_err; | ||
995 | } | ||
996 | 990 | ||
997 | return ret; | 991 | return ret; |
998 | 992 | ||
999 | card_err: | ||
1000 | snd_soc_free_pcms(socdev); | ||
1001 | snd_soc_dapm_free(socdev); | ||
1002 | pcm_err: | 993 | pcm_err: |
1003 | return ret; | 994 | return ret; |
1004 | } | 995 | } |
@@ -1032,6 +1023,9 @@ static int wm8961_resume(struct platform_device *pdev) | |||
1032 | int i; | 1023 | int i; |
1033 | 1024 | ||
1034 | for (i = 0; i < codec->reg_cache_size; i++) { | 1025 | for (i = 0; i < codec->reg_cache_size; i++) { |
1026 | if (reg_cache[i] == wm8961_reg_defaults[i]) | ||
1027 | continue; | ||
1028 | |||
1035 | if (i == WM8961_SOFTWARE_RESET) | 1029 | if (i == WM8961_SOFTWARE_RESET) |
1036 | continue; | 1030 | continue; |
1037 | 1031 | ||
@@ -1206,21 +1200,6 @@ static __devexit int wm8961_i2c_remove(struct i2c_client *client) | |||
1206 | return 0; | 1200 | return 0; |
1207 | } | 1201 | } |
1208 | 1202 | ||
1209 | #ifdef CONFIG_PM | ||
1210 | static int wm8961_i2c_suspend(struct i2c_client *client, pm_message_t state) | ||
1211 | { | ||
1212 | return snd_soc_suspend_device(&client->dev); | ||
1213 | } | ||
1214 | |||
1215 | static int wm8961_i2c_resume(struct i2c_client *client) | ||
1216 | { | ||
1217 | return snd_soc_resume_device(&client->dev); | ||
1218 | } | ||
1219 | #else | ||
1220 | #define wm8961_i2c_suspend NULL | ||
1221 | #define wm8961_i2c_resume NULL | ||
1222 | #endif | ||
1223 | |||
1224 | static const struct i2c_device_id wm8961_i2c_id[] = { | 1203 | static const struct i2c_device_id wm8961_i2c_id[] = { |
1225 | { "wm8961", 0 }, | 1204 | { "wm8961", 0 }, |
1226 | { } | 1205 | { } |
@@ -1234,8 +1213,6 @@ static struct i2c_driver wm8961_i2c_driver = { | |||
1234 | }, | 1213 | }, |
1235 | .probe = wm8961_i2c_probe, | 1214 | .probe = wm8961_i2c_probe, |
1236 | .remove = __devexit_p(wm8961_i2c_remove), | 1215 | .remove = __devexit_p(wm8961_i2c_remove), |
1237 | .suspend = wm8961_i2c_suspend, | ||
1238 | .resume = wm8961_i2c_resume, | ||
1239 | .id_table = wm8961_i2c_id, | 1216 | .id_table = wm8961_i2c_id, |
1240 | }; | 1217 | }; |
1241 | 1218 | ||