ASoC: adau1761: Add PGA Slew time control
The PGA Slew Time control allows to configure the rate with which the PGA gain control ramps up/down to the target setting. The PGA slew control is done via the ALC Control 0 register. There are 2 bits on that reg, that control PGA slew time, while the other bits control parts of the ALC (automatic level control) block. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> Link: https://lore.kernel.org/r/20190926115012.24049-1-alexandru.ardelean@analog.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
49f9c4f2e8
commit
8307852107
|
@ -28,6 +28,7 @@
|
|||
#define ADAU1761_REC_MIXER_RIGHT1 0x400d
|
||||
#define ADAU1761_LEFT_DIFF_INPUT_VOL 0x400e
|
||||
#define ADAU1761_RIGHT_DIFF_INPUT_VOL 0x400f
|
||||
#define ADAU1761_ALC_CTRL0 0x4011
|
||||
#define ADAU1761_PLAY_LR_MIXER_LEFT 0x4020
|
||||
#define ADAU1761_PLAY_MIXER_LEFT0 0x401c
|
||||
#define ADAU1761_PLAY_MIXER_LEFT1 0x401d
|
||||
|
@ -71,6 +72,7 @@ static const struct reg_default adau1761_reg_defaults[] = {
|
|||
{ ADAU1761_REC_MIXER_RIGHT0, 0x00 },
|
||||
{ ADAU1761_REC_MIXER_RIGHT1, 0x00 },
|
||||
{ ADAU1761_LEFT_DIFF_INPUT_VOL, 0x00 },
|
||||
{ ADAU1761_ALC_CTRL0, 0x00 },
|
||||
{ ADAU1761_RIGHT_DIFF_INPUT_VOL, 0x00 },
|
||||
{ ADAU1761_PLAY_LR_MIXER_LEFT, 0x00 },
|
||||
{ ADAU1761_PLAY_MIXER_LEFT0, 0x00 },
|
||||
|
@ -147,6 +149,21 @@ static SOC_VALUE_ENUM_SINGLE_DECL(adau1761_capture_bias_enum,
|
|||
ADAU17X1_REC_POWER_MGMT, 1, 0x3, adau1761_bias_select_text,
|
||||
adau1761_bias_select_values);
|
||||
|
||||
static const unsigned int adau1761_pga_slew_time_values[] = {
|
||||
3, 0, 1, 2,
|
||||
};
|
||||
|
||||
static const char * const adau1761_pga_slew_time_text[] = {
|
||||
"Off",
|
||||
"24 ms",
|
||||
"48 ms",
|
||||
"96 ms",
|
||||
};
|
||||
|
||||
static SOC_VALUE_ENUM_SINGLE_DECL(adau1761_pga_slew_time_enum,
|
||||
ADAU1761_ALC_CTRL0, 6, 0x3, adau1761_pga_slew_time_text,
|
||||
adau1761_pga_slew_time_values);
|
||||
|
||||
static const struct snd_kcontrol_new adau1761_jack_detect_controls[] = {
|
||||
SOC_SINGLE("Speaker Auto-mute Switch", ADAU1761_DIGMIC_JACKDETECT,
|
||||
4, 1, 0),
|
||||
|
@ -161,6 +178,8 @@ static const struct snd_kcontrol_new adau1761_differential_mode_controls[] = {
|
|||
|
||||
SOC_DOUBLE_R_TLV("PGA Boost Capture Volume", ADAU1761_REC_MIXER_LEFT1,
|
||||
ADAU1761_REC_MIXER_RIGHT1, 3, 2, 0, adau1761_pga_boost_tlv),
|
||||
|
||||
SOC_ENUM("PGA Capture Slew Time", adau1761_pga_slew_time_enum),
|
||||
};
|
||||
|
||||
static const struct snd_kcontrol_new adau1761_single_mode_controls[] = {
|
||||
|
@ -632,6 +651,7 @@ static bool adau1761_readable_register(struct device *dev, unsigned int reg)
|
|||
case ADAU1761_DEJITTER:
|
||||
case ADAU1761_CLK_ENABLE0:
|
||||
case ADAU1761_CLK_ENABLE1:
|
||||
case ADAU1761_ALC_CTRL0:
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue