diff options
Diffstat (limited to 'sound/soc/codecs/wm8993.c')
| -rw-r--r-- | sound/soc/codecs/wm8993.c | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/sound/soc/codecs/wm8993.c b/sound/soc/codecs/wm8993.c index 94737a30716b..433d59a0f3ef 100644 --- a/sound/soc/codecs/wm8993.c +++ b/sound/soc/codecs/wm8993.c | |||
| @@ -1645,8 +1645,8 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8993 = { | |||
| 1645 | .set_bias_level = wm8993_set_bias_level, | 1645 | .set_bias_level = wm8993_set_bias_level, |
| 1646 | }; | 1646 | }; |
| 1647 | 1647 | ||
| 1648 | static __devinit int wm8993_i2c_probe(struct i2c_client *i2c, | 1648 | static int wm8993_i2c_probe(struct i2c_client *i2c, |
| 1649 | const struct i2c_device_id *id) | 1649 | const struct i2c_device_id *id) |
| 1650 | { | 1650 | { |
| 1651 | struct wm8993_priv *wm8993; | 1651 | struct wm8993_priv *wm8993; |
| 1652 | unsigned int reg; | 1652 | unsigned int reg; |
| @@ -1660,7 +1660,7 @@ static __devinit int wm8993_i2c_probe(struct i2c_client *i2c, | |||
| 1660 | wm8993->dev = &i2c->dev; | 1660 | wm8993->dev = &i2c->dev; |
| 1661 | init_completion(&wm8993->fll_lock); | 1661 | init_completion(&wm8993->fll_lock); |
| 1662 | 1662 | ||
| 1663 | wm8993->regmap = regmap_init_i2c(i2c, &wm8993_regmap); | 1663 | wm8993->regmap = devm_regmap_init_i2c(i2c, &wm8993_regmap); |
| 1664 | if (IS_ERR(wm8993->regmap)) { | 1664 | if (IS_ERR(wm8993->regmap)) { |
| 1665 | ret = PTR_ERR(wm8993->regmap); | 1665 | ret = PTR_ERR(wm8993->regmap); |
| 1666 | dev_err(&i2c->dev, "Failed to allocate regmap: %d\n", ret); | 1666 | dev_err(&i2c->dev, "Failed to allocate regmap: %d\n", ret); |
| @@ -1672,18 +1672,18 @@ static __devinit int wm8993_i2c_probe(struct i2c_client *i2c, | |||
| 1672 | for (i = 0; i < ARRAY_SIZE(wm8993->supplies); i++) | 1672 | for (i = 0; i < ARRAY_SIZE(wm8993->supplies); i++) |
| 1673 | wm8993->supplies[i].supply = wm8993_supply_names[i]; | 1673 | wm8993->supplies[i].supply = wm8993_supply_names[i]; |
| 1674 | 1674 | ||
| 1675 | ret = regulator_bulk_get(&i2c->dev, ARRAY_SIZE(wm8993->supplies), | 1675 | ret = devm_regulator_bulk_get(&i2c->dev, ARRAY_SIZE(wm8993->supplies), |
| 1676 | wm8993->supplies); | 1676 | wm8993->supplies); |
| 1677 | if (ret != 0) { | 1677 | if (ret != 0) { |
| 1678 | dev_err(&i2c->dev, "Failed to request supplies: %d\n", ret); | 1678 | dev_err(&i2c->dev, "Failed to request supplies: %d\n", ret); |
| 1679 | goto err; | 1679 | return ret; |
| 1680 | } | 1680 | } |
| 1681 | 1681 | ||
| 1682 | ret = regulator_bulk_enable(ARRAY_SIZE(wm8993->supplies), | 1682 | ret = regulator_bulk_enable(ARRAY_SIZE(wm8993->supplies), |
| 1683 | wm8993->supplies); | 1683 | wm8993->supplies); |
| 1684 | if (ret != 0) { | 1684 | if (ret != 0) { |
| 1685 | dev_err(&i2c->dev, "Failed to enable supplies: %d\n", ret); | 1685 | dev_err(&i2c->dev, "Failed to enable supplies: %d\n", ret); |
| 1686 | goto err_get; | 1686 | return ret; |
| 1687 | } | 1687 | } |
| 1688 | 1688 | ||
| 1689 | ret = regmap_read(wm8993->regmap, WM8993_SOFTWARE_RESET, ®); | 1689 | ret = regmap_read(wm8993->regmap, WM8993_SOFTWARE_RESET, ®); |
| @@ -1742,23 +1742,17 @@ err_irq: | |||
| 1742 | free_irq(i2c->irq, wm8993); | 1742 | free_irq(i2c->irq, wm8993); |
| 1743 | err_enable: | 1743 | err_enable: |
| 1744 | regulator_bulk_disable(ARRAY_SIZE(wm8993->supplies), wm8993->supplies); | 1744 | regulator_bulk_disable(ARRAY_SIZE(wm8993->supplies), wm8993->supplies); |
| 1745 | err_get: | ||
| 1746 | regulator_bulk_free(ARRAY_SIZE(wm8993->supplies), wm8993->supplies); | ||
| 1747 | err: | ||
| 1748 | regmap_exit(wm8993->regmap); | ||
| 1749 | return ret; | 1745 | return ret; |
| 1750 | } | 1746 | } |
| 1751 | 1747 | ||
| 1752 | static __devexit int wm8993_i2c_remove(struct i2c_client *i2c) | 1748 | static int wm8993_i2c_remove(struct i2c_client *i2c) |
| 1753 | { | 1749 | { |
| 1754 | struct wm8993_priv *wm8993 = i2c_get_clientdata(i2c); | 1750 | struct wm8993_priv *wm8993 = i2c_get_clientdata(i2c); |
| 1755 | 1751 | ||
| 1756 | snd_soc_unregister_codec(&i2c->dev); | 1752 | snd_soc_unregister_codec(&i2c->dev); |
| 1757 | if (i2c->irq) | 1753 | if (i2c->irq) |
| 1758 | free_irq(i2c->irq, wm8993); | 1754 | free_irq(i2c->irq, wm8993); |
| 1759 | regmap_exit(wm8993->regmap); | ||
| 1760 | regulator_bulk_disable(ARRAY_SIZE(wm8993->supplies), wm8993->supplies); | 1755 | regulator_bulk_disable(ARRAY_SIZE(wm8993->supplies), wm8993->supplies); |
| 1761 | regulator_bulk_free(ARRAY_SIZE(wm8993->supplies), wm8993->supplies); | ||
| 1762 | 1756 | ||
| 1763 | return 0; | 1757 | return 0; |
| 1764 | } | 1758 | } |
| @@ -1775,7 +1769,7 @@ static struct i2c_driver wm8993_i2c_driver = { | |||
| 1775 | .owner = THIS_MODULE, | 1769 | .owner = THIS_MODULE, |
| 1776 | }, | 1770 | }, |
| 1777 | .probe = wm8993_i2c_probe, | 1771 | .probe = wm8993_i2c_probe, |
| 1778 | .remove = __devexit_p(wm8993_i2c_remove), | 1772 | .remove = wm8993_i2c_remove, |
| 1779 | .id_table = wm8993_i2c_id, | 1773 | .id_table = wm8993_i2c_id, |
| 1780 | }; | 1774 | }; |
| 1781 | 1775 | ||
