diff options
author | Sachin Kamat <sachin.kamat@linaro.org> | 2012-11-26 06:49:44 -0500 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-12-01 23:06:44 -0500 |
commit | b439c6d0d1c1f9272d3445b5496be687d7411cf5 (patch) | |
tree | e15cd22993ac12c4487f16375a717b12bde2ab20 /sound | |
parent | 92437cbb1bbcc4fd04a00d3d734ee7006e183a03 (diff) |
ASoC: wm8962: Use devm_regmap_init_i2c()
devm_regmap_init_i2c() is device managed and makes error
handling and code cleanup simpler.
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/codecs/wm8962.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c index 285a9ef6d8ed..8fd38cb4ba48 100644 --- a/sound/soc/codecs/wm8962.c +++ b/sound/soc/codecs/wm8962.c | |||
@@ -3624,7 +3624,7 @@ static __devinit int wm8962_i2c_probe(struct i2c_client *i2c, | |||
3624 | return ret; | 3624 | return ret; |
3625 | } | 3625 | } |
3626 | 3626 | ||
3627 | wm8962->regmap = regmap_init_i2c(i2c, &wm8962_regmap); | 3627 | wm8962->regmap = devm_regmap_init_i2c(i2c, &wm8962_regmap); |
3628 | if (IS_ERR(wm8962->regmap)) { | 3628 | if (IS_ERR(wm8962->regmap)) { |
3629 | ret = PTR_ERR(wm8962->regmap); | 3629 | ret = PTR_ERR(wm8962->regmap); |
3630 | dev_err(&i2c->dev, "Failed to allocate regmap: %d\n", ret); | 3630 | dev_err(&i2c->dev, "Failed to allocate regmap: %d\n", ret); |
@@ -3641,20 +3641,20 @@ static __devinit int wm8962_i2c_probe(struct i2c_client *i2c, | |||
3641 | ret = regmap_read(wm8962->regmap, WM8962_SOFTWARE_RESET, ®); | 3641 | ret = regmap_read(wm8962->regmap, WM8962_SOFTWARE_RESET, ®); |
3642 | if (ret < 0) { | 3642 | if (ret < 0) { |
3643 | dev_err(&i2c->dev, "Failed to read ID register\n"); | 3643 | dev_err(&i2c->dev, "Failed to read ID register\n"); |
3644 | goto err_regmap; | 3644 | goto err_enable; |
3645 | } | 3645 | } |
3646 | if (reg != 0x6243) { | 3646 | if (reg != 0x6243) { |
3647 | dev_err(&i2c->dev, | 3647 | dev_err(&i2c->dev, |
3648 | "Device is not a WM8962, ID %x != 0x6243\n", reg); | 3648 | "Device is not a WM8962, ID %x != 0x6243\n", reg); |
3649 | ret = -EINVAL; | 3649 | ret = -EINVAL; |
3650 | goto err_regmap; | 3650 | goto err_enable; |
3651 | } | 3651 | } |
3652 | 3652 | ||
3653 | ret = regmap_read(wm8962->regmap, WM8962_RIGHT_INPUT_VOLUME, ®); | 3653 | ret = regmap_read(wm8962->regmap, WM8962_RIGHT_INPUT_VOLUME, ®); |
3654 | if (ret < 0) { | 3654 | if (ret < 0) { |
3655 | dev_err(&i2c->dev, "Failed to read device revision: %d\n", | 3655 | dev_err(&i2c->dev, "Failed to read device revision: %d\n", |
3656 | ret); | 3656 | ret); |
3657 | goto err_regmap; | 3657 | goto err_enable; |
3658 | } | 3658 | } |
3659 | 3659 | ||
3660 | dev_info(&i2c->dev, "customer id %x revision %c\n", | 3660 | dev_info(&i2c->dev, "customer id %x revision %c\n", |
@@ -3667,7 +3667,7 @@ static __devinit int wm8962_i2c_probe(struct i2c_client *i2c, | |||
3667 | ret = wm8962_reset(wm8962); | 3667 | ret = wm8962_reset(wm8962); |
3668 | if (ret < 0) { | 3668 | if (ret < 0) { |
3669 | dev_err(&i2c->dev, "Failed to issue reset\n"); | 3669 | dev_err(&i2c->dev, "Failed to issue reset\n"); |
3670 | goto err_regmap; | 3670 | goto err_enable; |
3671 | } | 3671 | } |
3672 | 3672 | ||
3673 | if (pdata && pdata->in4_dc_measure) { | 3673 | if (pdata && pdata->in4_dc_measure) { |
@@ -3686,15 +3686,13 @@ static __devinit int wm8962_i2c_probe(struct i2c_client *i2c, | |||
3686 | ret = snd_soc_register_codec(&i2c->dev, | 3686 | ret = snd_soc_register_codec(&i2c->dev, |
3687 | &soc_codec_dev_wm8962, &wm8962_dai, 1); | 3687 | &soc_codec_dev_wm8962, &wm8962_dai, 1); |
3688 | if (ret < 0) | 3688 | if (ret < 0) |
3689 | goto err_regmap; | 3689 | goto err_enable; |
3690 | 3690 | ||
3691 | /* The drivers should power up as needed */ | 3691 | /* The drivers should power up as needed */ |
3692 | regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies); | 3692 | regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies); |
3693 | 3693 | ||
3694 | return 0; | 3694 | return 0; |
3695 | 3695 | ||
3696 | err_regmap: | ||
3697 | regmap_exit(wm8962->regmap); | ||
3698 | err_enable: | 3696 | err_enable: |
3699 | regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies); | 3697 | regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies); |
3700 | err: | 3698 | err: |
@@ -3703,10 +3701,7 @@ err: | |||
3703 | 3701 | ||
3704 | static __devexit int wm8962_i2c_remove(struct i2c_client *client) | 3702 | static __devexit int wm8962_i2c_remove(struct i2c_client *client) |
3705 | { | 3703 | { |
3706 | struct wm8962_priv *wm8962 = dev_get_drvdata(&client->dev); | ||
3707 | |||
3708 | snd_soc_unregister_codec(&client->dev); | 3704 | snd_soc_unregister_codec(&client->dev); |
3709 | regmap_exit(wm8962->regmap); | ||
3710 | return 0; | 3705 | return 0; |
3711 | } | 3706 | } |
3712 | 3707 | ||