diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-11-10 11:14:04 -0500 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-11-10 11:16:19 -0500 |
commit | d9b5e9c6bccc3850b91ddaac11b49f2510375f5b (patch) | |
tree | 5e3d8f6b76566e199d7154d1d315b701794e51cc /sound/soc/codecs/wm5100.c | |
parent | c9016a7937122b72d87ff2037664b7bd717d3e4b (diff) |
ASoC: Move WM5100 platform data based setup into I2C probe
Get things configured as early as possible, especially useful for the
GPIOs which might be useful anyway.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc/codecs/wm5100.c')
-rw-r--r-- | sound/soc/codecs/wm5100.c | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/sound/soc/codecs/wm5100.c b/sound/soc/codecs/wm5100.c index 0077086d8e5b..f37d67f4058b 100644 --- a/sound/soc/codecs/wm5100.c +++ b/sound/soc/codecs/wm5100.c | |||
@@ -2467,24 +2467,6 @@ static int wm5100_probe(struct snd_soc_codec *codec) | |||
2467 | snd_soc_update_bits(codec, wm5100_dig_vu[i], WM5100_OUT_VU, | 2467 | snd_soc_update_bits(codec, wm5100_dig_vu[i], WM5100_OUT_VU, |
2468 | WM5100_OUT_VU); | 2468 | WM5100_OUT_VU); |
2469 | 2469 | ||
2470 | for (i = 0; i < ARRAY_SIZE(wm5100->pdata.in_mode); i++) { | ||
2471 | snd_soc_update_bits(codec, WM5100_IN1L_CONTROL, | ||
2472 | WM5100_IN1_MODE_MASK | | ||
2473 | WM5100_IN1_DMIC_SUP_MASK, | ||
2474 | (wm5100->pdata.in_mode[i] << | ||
2475 | WM5100_IN1_MODE_SHIFT) | | ||
2476 | (wm5100->pdata.dmic_sup[i] << | ||
2477 | WM5100_IN1_DMIC_SUP_SHIFT)); | ||
2478 | } | ||
2479 | |||
2480 | for (i = 0; i < ARRAY_SIZE(wm5100->pdata.gpio_defaults); i++) { | ||
2481 | if (!wm5100->pdata.gpio_defaults[i]) | ||
2482 | continue; | ||
2483 | |||
2484 | snd_soc_write(codec, WM5100_GPIO_CTRL_1 + i, | ||
2485 | wm5100->pdata.gpio_defaults[i]); | ||
2486 | } | ||
2487 | |||
2488 | /* Don't debounce interrupts to support use of SYSCLK only */ | 2470 | /* Don't debounce interrupts to support use of SYSCLK only */ |
2489 | snd_soc_write(codec, WM5100_IRQ_DEBOUNCE_1, 0); | 2471 | snd_soc_write(codec, WM5100_IRQ_DEBOUNCE_1, 0); |
2490 | snd_soc_write(codec, WM5100_IRQ_DEBOUNCE_2, 0); | 2472 | snd_soc_write(codec, WM5100_IRQ_DEBOUNCE_2, 0); |
@@ -2739,6 +2721,24 @@ static __devinit int wm5100_i2c_probe(struct i2c_client *i2c, | |||
2739 | 2721 | ||
2740 | wm5100_init_gpio(i2c); | 2722 | wm5100_init_gpio(i2c); |
2741 | 2723 | ||
2724 | for (i = 0; i < ARRAY_SIZE(wm5100->pdata.gpio_defaults); i++) { | ||
2725 | if (!wm5100->pdata.gpio_defaults[i]) | ||
2726 | continue; | ||
2727 | |||
2728 | regmap_write(wm5100->regmap, WM5100_GPIO_CTRL_1 + i, | ||
2729 | wm5100->pdata.gpio_defaults[i]); | ||
2730 | } | ||
2731 | |||
2732 | for (i = 0; i < ARRAY_SIZE(wm5100->pdata.in_mode); i++) { | ||
2733 | regmap_update_bits(wm5100->regmap, WM5100_IN1L_CONTROL, | ||
2734 | WM5100_IN1_MODE_MASK | | ||
2735 | WM5100_IN1_DMIC_SUP_MASK, | ||
2736 | (wm5100->pdata.in_mode[i] << | ||
2737 | WM5100_IN1_MODE_SHIFT) | | ||
2738 | (wm5100->pdata.dmic_sup[i] << | ||
2739 | WM5100_IN1_DMIC_SUP_SHIFT)); | ||
2740 | } | ||
2741 | |||
2742 | ret = snd_soc_register_codec(&i2c->dev, | 2742 | ret = snd_soc_register_codec(&i2c->dev, |
2743 | &soc_codec_dev_wm5100, wm5100_dai, | 2743 | &soc_codec_dev_wm5100, wm5100_dai, |
2744 | ARRAY_SIZE(wm5100_dai)); | 2744 | ARRAY_SIZE(wm5100_dai)); |