Skip to content

Commit

Permalink
ASoC: max98090: add shutdown callback for max98090
Browse files Browse the repository at this point in the history
To fix pop noise when shutdown,the pop noise during shutdown
is the pmic cutoff power of codec without any notice.

Signed-off-by: jay.xu <xjq@rock-chips.com>
Signed-off-by: zhengxing <zhengxing@rock-chips.com>
Signed-off-by: Caesar Wang <wxt@rock-chips.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
  • Loading branch information
Caesar Wang authored and Mark Brown committed Apr 8, 2015
1 parent c517d83 commit c6b424f
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions sound/soc/codecs/max98090.c
Original file line number Diff line number Diff line change
Expand Up @@ -2605,8 +2605,24 @@ static int max98090_i2c_probe(struct i2c_client *i2c,
return ret;
}

static void max98090_i2c_shutdown(struct i2c_client *i2c)
{
struct max98090_priv *max98090 = dev_get_drvdata(&i2c->dev);

/*
* Enable volume smoothing, disable zero cross. This will cause
* a quick 40ms ramp to mute on shutdown.
*/
regmap_write(max98090->regmap,
M98090_REG_LEVEL_CONTROL, M98090_VSENN_MASK);
regmap_write(max98090->regmap,
M98090_REG_DEVICE_SHUTDOWN, 0x00);
msleep(40);
}

static int max98090_i2c_remove(struct i2c_client *client)
{
max98090_i2c_shutdown(client);
snd_soc_unregister_codec(&client->dev);
return 0;
}
Expand Down Expand Up @@ -2696,6 +2712,7 @@ static struct i2c_driver max98090_i2c_driver = {
.acpi_match_table = ACPI_PTR(max98090_acpi_match),
},
.probe = max98090_i2c_probe,
.shutdown = max98090_i2c_shutdown,
.remove = max98090_i2c_remove,
.id_table = max98090_i2c_id,
};
Expand Down

0 comments on commit c6b424f

Please sign in to comment.