aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars-Peter Clausen <lars@metafoo.de>2015-07-16 15:22:51 -0400
committerMark Brown <broonie@kernel.org>2015-07-16 16:36:23 -0400
commitd79cca1a994f6f4f1cf3d92909f2a73df6b84874 (patch)
tree6d2c4e11f7370c08dd9afdc80232626822af7394
parent1c07a4de5baad76585f7ffb86b5b0bc34c33e8a6 (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.c34
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
222static int max9768_i2c_remove(struct i2c_client *client) 211static 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