aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2012-12-15 09:56:46 -0500
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-12-15 09:56:46 -0500
commit8246b5b03ef4ab6f29ad8edad859c74b124323cb (patch)
tree2cce106f4888b15fcafc31749f213b45b853f9e1 /sound/soc
parent36adf15107d3e74200e0ffc0f3678ee27c5376a7 (diff)
parentd06080cf08e6b59971959d9be3d0587c6e033292 (diff)
Merge remote-tracking branch 'asoc/topic/tpa6130a2' into asoc-next
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/codecs/tpa6130a2.c23
1 files changed, 6 insertions, 17 deletions
diff --git a/sound/soc/codecs/tpa6130a2.c b/sound/soc/codecs/tpa6130a2.c
index 8d75aa152c8c..c58bee8346ce 100644
--- a/sound/soc/codecs/tpa6130a2.c
+++ b/sound/soc/codecs/tpa6130a2.c
@@ -398,7 +398,8 @@ static int tpa6130a2_probe(struct i2c_client *client,
398 TPA6130A2_MUTE_L; 398 TPA6130A2_MUTE_L;
399 399
400 if (data->power_gpio >= 0) { 400 if (data->power_gpio >= 0) {
401 ret = gpio_request(data->power_gpio, "tpa6130a2 enable"); 401 ret = devm_gpio_request(dev, data->power_gpio,
402 "tpa6130a2 enable");
402 if (ret < 0) { 403 if (ret < 0) {
403 dev_err(dev, "Failed to request power GPIO (%d)\n", 404 dev_err(dev, "Failed to request power GPIO (%d)\n",
404 data->power_gpio); 405 data->power_gpio);
@@ -419,16 +420,16 @@ static int tpa6130a2_probe(struct i2c_client *client,
419 break; 420 break;
420 } 421 }
421 422
422 data->supply = regulator_get(dev, regulator); 423 data->supply = devm_regulator_get(dev, regulator);
423 if (IS_ERR(data->supply)) { 424 if (IS_ERR(data->supply)) {
424 ret = PTR_ERR(data->supply); 425 ret = PTR_ERR(data->supply);
425 dev_err(dev, "Failed to request supply: %d\n", ret); 426 dev_err(dev, "Failed to request supply: %d\n", ret);
426 goto err_regulator; 427 goto err_gpio;
427 } 428 }
428 429
429 ret = tpa6130a2_power(1); 430 ret = tpa6130a2_power(1);
430 if (ret != 0) 431 if (ret != 0)
431 goto err_power; 432 goto err_gpio;
432 433
433 434
434 /* Read version */ 435 /* Read version */
@@ -440,15 +441,10 @@ static int tpa6130a2_probe(struct i2c_client *client,
440 /* Disable the chip */ 441 /* Disable the chip */
441 ret = tpa6130a2_power(0); 442 ret = tpa6130a2_power(0);
442 if (ret != 0) 443 if (ret != 0)
443 goto err_power; 444 goto err_gpio;
444 445
445 return 0; 446 return 0;
446 447
447err_power:
448 regulator_put(data->supply);
449err_regulator:
450 if (data->power_gpio >= 0)
451 gpio_free(data->power_gpio);
452err_gpio: 448err_gpio:
453 tpa6130a2_client = NULL; 449 tpa6130a2_client = NULL;
454 450
@@ -457,14 +453,7 @@ err_gpio:
457 453
458static int tpa6130a2_remove(struct i2c_client *client) 454static int tpa6130a2_remove(struct i2c_client *client)
459{ 455{
460 struct tpa6130a2_data *data = i2c_get_clientdata(client);
461
462 tpa6130a2_power(0); 456 tpa6130a2_power(0);
463
464 if (data->power_gpio >= 0)
465 gpio_free(data->power_gpio);
466
467 regulator_put(data->supply);
468 tpa6130a2_client = NULL; 457 tpa6130a2_client = NULL;
469 458
470 return 0; 459 return 0;