diff options
author | Lars-Peter Clausen <lars@metafoo.de> | 2015-07-16 15:22:51 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-07-16 16:36:23 -0400 |
commit | d79cca1a994f6f4f1cf3d92909f2a73df6b84874 (patch) | |
tree | 6d2c4e11f7370c08dd9afdc80232626822af7394 | |
parent | 1c07a4de5baad76585f7ffb86b5b0bc34c33e8a6 (diff) |
ASoC: max9768: Use managed gpio request
Makes the code a bit shorter and simpler.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | sound/soc/codecs/max9768.c | 34 |
1 files changed, 8 insertions, 26 deletions
diff --git a/sound/soc/codecs/max9768.c b/sound/soc/codecs/max9768.c index 1526aef2f2a9..d70a8205c6ad 100644 --- a/sound/soc/codecs/max9768.c +++ b/sound/soc/codecs/max9768.c | |||
@@ -183,11 +183,13 @@ static int max9768_i2c_probe(struct i2c_client *client, | |||
183 | 183 | ||
184 | if (pdata) { | 184 | if (pdata) { |
185 | /* Mute on powerup to avoid clicks */ | 185 | /* Mute on powerup to avoid clicks */ |
186 | err = gpio_request_one(pdata->mute_gpio, GPIOF_INIT_HIGH, "MAX9768 Mute"); | 186 | err = devm_gpio_request_one(&client->dev, pdata->mute_gpio, |
187 | GPIOF_INIT_HIGH, "MAX9768 Mute"); | ||
187 | max9768->mute_gpio = err ?: pdata->mute_gpio; | 188 | max9768->mute_gpio = err ?: pdata->mute_gpio; |
188 | 189 | ||
189 | /* Activate chip by releasing shutdown, enables I2C */ | 190 | /* Activate chip by releasing shutdown, enables I2C */ |
190 | err = gpio_request_one(pdata->shdn_gpio, GPIOF_INIT_HIGH, "MAX9768 Shutdown"); | 191 | err = devm_gpio_request_one(&client->dev, pdata->shdn_gpio, |
192 | GPIOF_INIT_HIGH, "MAX9768 Shutdown"); | ||
191 | max9768->shdn_gpio = err ?: pdata->shdn_gpio; | 193 | max9768->shdn_gpio = err ?: pdata->shdn_gpio; |
192 | 194 | ||
193 | max9768->flags = pdata->flags; | 195 | max9768->flags = pdata->flags; |
@@ -199,37 +201,17 @@ static int max9768_i2c_probe(struct i2c_client *client, | |||
199 | i2c_set_clientdata(client, max9768); | 201 | i2c_set_clientdata(client, max9768); |
200 | 202 | ||
201 | max9768->regmap = devm_regmap_init_i2c(client, &max9768_i2c_regmap_config); | 203 | max9768->regmap = devm_regmap_init_i2c(client, &max9768_i2c_regmap_config); |
202 | if (IS_ERR(max9768->regmap)) { | 204 | if (IS_ERR(max9768->regmap)) |
203 | err = PTR_ERR(max9768->regmap); | 205 | return PTR_ERR(max9768->regmap); |
204 | goto err_gpio_free; | ||
205 | } | ||
206 | |||
207 | err = snd_soc_register_codec(&client->dev, &max9768_codec_driver, NULL, 0); | ||
208 | if (err) | ||
209 | goto err_gpio_free; | ||
210 | |||
211 | return 0; | ||
212 | 206 | ||
213 | err_gpio_free: | 207 | return snd_soc_register_codec(&client->dev, &max9768_codec_driver, |
214 | if (gpio_is_valid(max9768->shdn_gpio)) | 208 | NULL, 0); |
215 | gpio_free(max9768->shdn_gpio); | ||
216 | if (gpio_is_valid(max9768->mute_gpio)) | ||
217 | gpio_free(max9768->mute_gpio); | ||
218 | |||
219 | return err; | ||
220 | } | 209 | } |
221 | 210 | ||
222 | static int max9768_i2c_remove(struct i2c_client *client) | 211 | static int max9768_i2c_remove(struct i2c_client *client) |
223 | { | 212 | { |
224 | struct max9768 *max9768 = i2c_get_clientdata(client); | ||
225 | |||
226 | snd_soc_unregister_codec(&client->dev); | 213 | snd_soc_unregister_codec(&client->dev); |
227 | 214 | ||
228 | if (gpio_is_valid(max9768->shdn_gpio)) | ||
229 | gpio_free(max9768->shdn_gpio); | ||
230 | if (gpio_is_valid(max9768->mute_gpio)) | ||
231 | gpio_free(max9768->mute_gpio); | ||
232 | |||
233 | return 0; | 215 | return 0; |
234 | } | 216 | } |
235 | 217 | ||