Skip to content

Commit

Permalink
ASoC: max9768: Use managed gpio request
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Lars-Peter Clausen authored and Mark Brown committed Jul 16, 2015
1 parent 1c07a4d commit d79cca1
Showing 1 changed file with 8 additions and 26 deletions.
34 changes: 8 additions & 26 deletions sound/soc/codecs/max9768.c
Original file line number Diff line number Diff line change
Expand Up @@ -183,11 +183,13 @@ static int max9768_i2c_probe(struct i2c_client *client,

if (pdata) {
/* Mute on powerup to avoid clicks */
err = gpio_request_one(pdata->mute_gpio, GPIOF_INIT_HIGH, "MAX9768 Mute");
err = devm_gpio_request_one(&client->dev, pdata->mute_gpio,
GPIOF_INIT_HIGH, "MAX9768 Mute");
max9768->mute_gpio = err ?: pdata->mute_gpio;

/* Activate chip by releasing shutdown, enables I2C */
err = gpio_request_one(pdata->shdn_gpio, GPIOF_INIT_HIGH, "MAX9768 Shutdown");
err = devm_gpio_request_one(&client->dev, pdata->shdn_gpio,
GPIOF_INIT_HIGH, "MAX9768 Shutdown");
max9768->shdn_gpio = err ?: pdata->shdn_gpio;

max9768->flags = pdata->flags;
Expand All @@ -199,37 +201,17 @@ static int max9768_i2c_probe(struct i2c_client *client,
i2c_set_clientdata(client, max9768);

max9768->regmap = devm_regmap_init_i2c(client, &max9768_i2c_regmap_config);
if (IS_ERR(max9768->regmap)) {
err = PTR_ERR(max9768->regmap);
goto err_gpio_free;
}

err = snd_soc_register_codec(&client->dev, &max9768_codec_driver, NULL, 0);
if (err)
goto err_gpio_free;

return 0;
if (IS_ERR(max9768->regmap))
return PTR_ERR(max9768->regmap);

err_gpio_free:
if (gpio_is_valid(max9768->shdn_gpio))
gpio_free(max9768->shdn_gpio);
if (gpio_is_valid(max9768->mute_gpio))
gpio_free(max9768->mute_gpio);

return err;
return snd_soc_register_codec(&client->dev, &max9768_codec_driver,
NULL, 0);
}

static int max9768_i2c_remove(struct i2c_client *client)
{
struct max9768 *max9768 = i2c_get_clientdata(client);

snd_soc_unregister_codec(&client->dev);

if (gpio_is_valid(max9768->shdn_gpio))
gpio_free(max9768->shdn_gpio);
if (gpio_is_valid(max9768->mute_gpio))
gpio_free(max9768->mute_gpio);

return 0;
}

Expand Down

0 comments on commit d79cca1

Please sign in to comment.