diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-11 15:45:59 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-11 15:45:59 -0400 |
commit | 0fb3767b0a5601dd0d528bc8dbefc0567a34b7ec (patch) | |
tree | 76eed01d088080863f5bf97e37ae4ec1adf9d0a5 /sound/soc/samsung | |
parent | 0edcd16a4def296bd6492ae0c10a3c4aef9ef7c0 (diff) | |
parent | 42d4ab832d843b5a512b373c86e70caa43a041c8 (diff) |
Merge tag 'sound-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai:
"A few small fixes (and cleanups) for HD-audio, USB-audio and ASoC"
* tag 'sound-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: usb-audio: fix regression for fixed stream quirk
ALSA: hda - Keep halting ALC5505 DSP
ASoC: wm8962: fix NULL pdata pointer
ASoC: imx-sgtl5000: return E_PROBE_DEFER if ssi/codec not found
ASoC: Samsung: Remove redundant comment
ALSA: hda - Fix EAPD vmaster hook for AD1884 & co
ASoC: samsung: Remove obsolete GPIO based DT pinmuxing
ASoC: mxs: register saif mclk to clock framework
Diffstat (limited to 'sound/soc/samsung')
-rw-r--r-- | sound/soc/samsung/i2s.c | 66 | ||||
-rw-r--r-- | sound/soc/samsung/s3c-i2s-v2.c | 4 |
2 files changed, 5 insertions, 65 deletions
diff --git a/sound/soc/samsung/i2s.c b/sound/soc/samsung/i2s.c index 82ebb1a51479..7a1734697434 100644 --- a/sound/soc/samsung/i2s.c +++ b/sound/soc/samsung/i2s.c | |||
@@ -1016,52 +1016,6 @@ static struct i2s_dai *i2s_alloc_dai(struct platform_device *pdev, bool sec) | |||
1016 | return i2s; | 1016 | return i2s; |
1017 | } | 1017 | } |
1018 | 1018 | ||
1019 | #ifdef CONFIG_OF | ||
1020 | static int samsung_i2s_parse_dt_gpio(struct i2s_dai *i2s) | ||
1021 | { | ||
1022 | struct device *dev = &i2s->pdev->dev; | ||
1023 | int index, gpio, ret; | ||
1024 | |||
1025 | for (index = 0; index < 7; index++) { | ||
1026 | gpio = of_get_gpio(dev->of_node, index); | ||
1027 | if (!gpio_is_valid(gpio)) { | ||
1028 | dev_err(dev, "invalid gpio[%d]: %d\n", index, gpio); | ||
1029 | goto free_gpio; | ||
1030 | } | ||
1031 | |||
1032 | ret = gpio_request(gpio, dev_name(dev)); | ||
1033 | if (ret) { | ||
1034 | dev_err(dev, "gpio [%d] request failed\n", gpio); | ||
1035 | goto free_gpio; | ||
1036 | } | ||
1037 | i2s->gpios[index] = gpio; | ||
1038 | } | ||
1039 | return 0; | ||
1040 | |||
1041 | free_gpio: | ||
1042 | while (--index >= 0) | ||
1043 | gpio_free(i2s->gpios[index]); | ||
1044 | return -EINVAL; | ||
1045 | } | ||
1046 | |||
1047 | static void samsung_i2s_dt_gpio_free(struct i2s_dai *i2s) | ||
1048 | { | ||
1049 | unsigned int index; | ||
1050 | for (index = 0; index < 7; index++) | ||
1051 | gpio_free(i2s->gpios[index]); | ||
1052 | } | ||
1053 | #else | ||
1054 | static int samsung_i2s_parse_dt_gpio(struct i2s_dai *dai) | ||
1055 | { | ||
1056 | return -EINVAL; | ||
1057 | } | ||
1058 | |||
1059 | static void samsung_i2s_dt_gpio_free(struct i2s_dai *dai) | ||
1060 | { | ||
1061 | } | ||
1062 | |||
1063 | #endif | ||
1064 | |||
1065 | static const struct of_device_id exynos_i2s_match[]; | 1019 | static const struct of_device_id exynos_i2s_match[]; |
1066 | 1020 | ||
1067 | static inline int samsung_i2s_get_driver_data(struct platform_device *pdev) | 1021 | static inline int samsung_i2s_get_driver_data(struct platform_device *pdev) |
@@ -1235,18 +1189,10 @@ static int samsung_i2s_probe(struct platform_device *pdev) | |||
1235 | pri_dai->sec_dai = sec_dai; | 1189 | pri_dai->sec_dai = sec_dai; |
1236 | } | 1190 | } |
1237 | 1191 | ||
1238 | if (np) { | 1192 | if (i2s_pdata && i2s_pdata->cfg_gpio && i2s_pdata->cfg_gpio(pdev)) { |
1239 | if (samsung_i2s_parse_dt_gpio(pri_dai)) { | 1193 | dev_err(&pdev->dev, "Unable to configure gpio\n"); |
1240 | dev_err(&pdev->dev, "Unable to configure gpio\n"); | 1194 | ret = -EINVAL; |
1241 | ret = -EINVAL; | 1195 | goto err; |
1242 | goto err; | ||
1243 | } | ||
1244 | } else { | ||
1245 | if (i2s_pdata->cfg_gpio && i2s_pdata->cfg_gpio(pdev)) { | ||
1246 | dev_err(&pdev->dev, "Unable to configure gpio\n"); | ||
1247 | ret = -EINVAL; | ||
1248 | goto err; | ||
1249 | } | ||
1250 | } | 1196 | } |
1251 | 1197 | ||
1252 | snd_soc_register_component(&pri_dai->pdev->dev, &samsung_i2s_component, | 1198 | snd_soc_register_component(&pri_dai->pdev->dev, &samsung_i2s_component, |
@@ -1267,14 +1213,10 @@ static int samsung_i2s_remove(struct platform_device *pdev) | |||
1267 | { | 1213 | { |
1268 | struct i2s_dai *i2s, *other; | 1214 | struct i2s_dai *i2s, *other; |
1269 | struct resource *res; | 1215 | struct resource *res; |
1270 | struct s3c_audio_pdata *i2s_pdata = pdev->dev.platform_data; | ||
1271 | 1216 | ||
1272 | i2s = dev_get_drvdata(&pdev->dev); | 1217 | i2s = dev_get_drvdata(&pdev->dev); |
1273 | other = i2s->pri_dai ? : i2s->sec_dai; | 1218 | other = i2s->pri_dai ? : i2s->sec_dai; |
1274 | 1219 | ||
1275 | if (!i2s_pdata->cfg_gpio && pdev->dev.of_node) | ||
1276 | samsung_i2s_dt_gpio_free(i2s->pri_dai); | ||
1277 | |||
1278 | if (other) { | 1220 | if (other) { |
1279 | other->pri_dai = NULL; | 1221 | other->pri_dai = NULL; |
1280 | other->sec_dai = NULL; | 1222 | other->sec_dai = NULL; |
diff --git a/sound/soc/samsung/s3c-i2s-v2.c b/sound/soc/samsung/s3c-i2s-v2.c index 20e98d1dded2..e5e81b111001 100644 --- a/sound/soc/samsung/s3c-i2s-v2.c +++ b/sound/soc/samsung/s3c-i2s-v2.c | |||
@@ -1,6 +1,4 @@ | |||
1 | /* sound/soc/samsung/s3c-i2c-v2.c | 1 | /* ALSA Soc Audio Layer - I2S core for newer Samsung SoCs. |
2 | * | ||
3 | * ALSA Soc Audio Layer - I2S core for newer Samsung SoCs. | ||
4 | * | 2 | * |
5 | * Copyright (c) 2006 Wolfson Microelectronics PLC. | 3 | * Copyright (c) 2006 Wolfson Microelectronics PLC. |
6 | * Graeme Gregory graeme.gregory@wolfsonmicro.com | 4 | * Graeme Gregory graeme.gregory@wolfsonmicro.com |