Merge remote-tracking branches 'asoc/fix/arizona', 'asoc/fix/da7219', 'asoc/fix/nau8825', 'asoc/fix/rt5514' and 'asoc/fix/shift' into asoc-linus
This commit is contained in:
commit
b669010e58
|
@ -1920,8 +1920,8 @@ static struct {
|
||||||
|
|
||||||
struct arizona_fll_cfg {
|
struct arizona_fll_cfg {
|
||||||
int n;
|
int n;
|
||||||
int theta;
|
unsigned int theta;
|
||||||
int lambda;
|
unsigned int lambda;
|
||||||
int refdiv;
|
int refdiv;
|
||||||
int outdiv;
|
int outdiv;
|
||||||
int fratio;
|
int fratio;
|
||||||
|
@ -2218,11 +2218,11 @@ static int arizona_enable_fll(struct arizona_fll *fll)
|
||||||
|
|
||||||
if (already_enabled) {
|
if (already_enabled) {
|
||||||
/* Facilitate smooth refclk across the transition */
|
/* Facilitate smooth refclk across the transition */
|
||||||
regmap_update_bits_async(fll->arizona->regmap, fll->base + 0x9,
|
|
||||||
ARIZONA_FLL1_GAIN_MASK, 0);
|
|
||||||
regmap_update_bits(fll->arizona->regmap, fll->base + 1,
|
regmap_update_bits(fll->arizona->regmap, fll->base + 1,
|
||||||
ARIZONA_FLL1_FREERUN, ARIZONA_FLL1_FREERUN);
|
ARIZONA_FLL1_FREERUN, ARIZONA_FLL1_FREERUN);
|
||||||
udelay(32);
|
udelay(32);
|
||||||
|
regmap_update_bits_async(fll->arizona->regmap, fll->base + 0x9,
|
||||||
|
ARIZONA_FLL1_GAIN_MASK, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2233,6 +2233,10 @@ static int arizona_enable_fll(struct arizona_fll *fll)
|
||||||
fll->ref_src != fll->sync_src) {
|
fll->ref_src != fll->sync_src) {
|
||||||
arizona_calc_fll(fll, &cfg, fll->ref_freq, false);
|
arizona_calc_fll(fll, &cfg, fll->ref_freq, false);
|
||||||
|
|
||||||
|
/* Ref path hardcodes lambda to 65536 when sync is on */
|
||||||
|
if (fll->sync_src >= 0 && cfg.lambda)
|
||||||
|
cfg.theta = (cfg.theta * (1 << 16)) / cfg.lambda;
|
||||||
|
|
||||||
arizona_apply_fll(arizona, fll->base, &cfg, fll->ref_src,
|
arizona_apply_fll(arizona, fll->base, &cfg, fll->ref_src,
|
||||||
false);
|
false);
|
||||||
if (fll->sync_src >= 0) {
|
if (fll->sync_src >= 0) {
|
||||||
|
@ -2268,7 +2272,7 @@ static int arizona_enable_fll(struct arizona_fll *fll)
|
||||||
ARIZONA_FLL1_SYNC_BW);
|
ARIZONA_FLL1_SYNC_BW);
|
||||||
|
|
||||||
if (!already_enabled)
|
if (!already_enabled)
|
||||||
pm_runtime_get(arizona->dev);
|
pm_runtime_get_sync(arizona->dev);
|
||||||
|
|
||||||
regmap_update_bits_async(arizona->regmap, fll->base + 1,
|
regmap_update_bits_async(arizona->regmap, fll->base + 1,
|
||||||
ARIZONA_FLL1_ENA, ARIZONA_FLL1_ENA);
|
ARIZONA_FLL1_ENA, ARIZONA_FLL1_ENA);
|
||||||
|
|
|
@ -1937,6 +1937,14 @@ static int da7219_i2c_probe(struct i2c_client *i2c,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Software reset codec. */
|
||||||
|
regmap_write_bits(da7219->regmap, DA7219_ACCDET_CONFIG_1,
|
||||||
|
DA7219_ACCDET_EN_MASK, 0);
|
||||||
|
regmap_write_bits(da7219->regmap, DA7219_CIF_CTRL,
|
||||||
|
DA7219_CIF_REG_SOFT_RESET_MASK, 0);
|
||||||
|
regmap_write_bits(da7219->regmap, DA7219_SYSTEM_ACTIVE,
|
||||||
|
DA7219_SYSTEM_ACTIVE_MASK, 0);
|
||||||
|
|
||||||
ret = snd_soc_register_codec(&i2c->dev, &soc_codec_dev_da7219,
|
ret = snd_soc_register_codec(&i2c->dev, &soc_codec_dev_da7219,
|
||||||
&da7219_dai, 1);
|
&da7219_dai, 1);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
|
|
@ -1907,7 +1907,7 @@ static int nau8825_calc_fll_param(unsigned int fll_in, unsigned int fs,
|
||||||
/* Calculate the FLL 10-bit integer input and the FLL 16-bit fractional
|
/* Calculate the FLL 10-bit integer input and the FLL 16-bit fractional
|
||||||
* input based on FDCO, FREF and FLL ratio.
|
* input based on FDCO, FREF and FLL ratio.
|
||||||
*/
|
*/
|
||||||
fvco = div_u64(fvco << 16, fref * fll_param->ratio);
|
fvco = div_u64(fvco_max << 16, fref * fll_param->ratio);
|
||||||
fll_param->fll_int = (fvco >> 16) & 0x3FF;
|
fll_param->fll_int = (fvco >> 16) & 0x3FF;
|
||||||
fll_param->fll_frac = fvco & 0xFFFF;
|
fll_param->fll_frac = fvco & 0xFFFF;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -278,7 +278,7 @@ static const DECLARE_TLV_DB_RANGE(bst_tlv,
|
||||||
8, 8, TLV_DB_SCALE_ITEM(1700, 0, 0)
|
8, 8, TLV_DB_SCALE_ITEM(1700, 0, 0)
|
||||||
);
|
);
|
||||||
|
|
||||||
static const DECLARE_TLV_DB_SCALE(adc_vol_tlv, -17625, 375, 0);
|
static const DECLARE_TLV_DB_SCALE(adc_vol_tlv, -1725, 75, 0);
|
||||||
|
|
||||||
static int rt5514_dsp_voice_wake_up_get(struct snd_kcontrol *kcontrol,
|
static int rt5514_dsp_voice_wake_up_get(struct snd_kcontrol *kcontrol,
|
||||||
struct snd_ctl_elem_value *ucontrol)
|
struct snd_ctl_elem_value *ucontrol)
|
||||||
|
@ -352,10 +352,10 @@ static const struct snd_kcontrol_new rt5514_snd_controls[] = {
|
||||||
SOC_DOUBLE_TLV("MIC Boost Volume", RT5514_ANA_CTRL_MICBST,
|
SOC_DOUBLE_TLV("MIC Boost Volume", RT5514_ANA_CTRL_MICBST,
|
||||||
RT5514_SEL_BSTL_SFT, RT5514_SEL_BSTR_SFT, 8, 0, bst_tlv),
|
RT5514_SEL_BSTL_SFT, RT5514_SEL_BSTR_SFT, 8, 0, bst_tlv),
|
||||||
SOC_DOUBLE_R_TLV("ADC1 Capture Volume", RT5514_DOWNFILTER0_CTRL1,
|
SOC_DOUBLE_R_TLV("ADC1 Capture Volume", RT5514_DOWNFILTER0_CTRL1,
|
||||||
RT5514_DOWNFILTER0_CTRL2, RT5514_AD_GAIN_SFT, 127, 0,
|
RT5514_DOWNFILTER0_CTRL2, RT5514_AD_GAIN_SFT, 63, 0,
|
||||||
adc_vol_tlv),
|
adc_vol_tlv),
|
||||||
SOC_DOUBLE_R_TLV("ADC2 Capture Volume", RT5514_DOWNFILTER1_CTRL1,
|
SOC_DOUBLE_R_TLV("ADC2 Capture Volume", RT5514_DOWNFILTER1_CTRL1,
|
||||||
RT5514_DOWNFILTER1_CTRL2, RT5514_AD_GAIN_SFT, 127, 0,
|
RT5514_DOWNFILTER1_CTRL2, RT5514_AD_GAIN_SFT, 63, 0,
|
||||||
adc_vol_tlv),
|
adc_vol_tlv),
|
||||||
SOC_SINGLE_EXT("DSP Voice Wake Up", SND_SOC_NOPM, 0, 1, 0,
|
SOC_SINGLE_EXT("DSP Voice Wake Up", SND_SOC_NOPM, 0, 1, 0,
|
||||||
rt5514_dsp_voice_wake_up_get, rt5514_dsp_voice_wake_up_put),
|
rt5514_dsp_voice_wake_up_get, rt5514_dsp_voice_wake_up_put),
|
||||||
|
|
|
@ -196,8 +196,8 @@
|
||||||
#define RT5514_AD_AD_MIX_BIT 10
|
#define RT5514_AD_AD_MIX_BIT 10
|
||||||
#define RT5514_AD_AD_MUTE (0x1 << 7)
|
#define RT5514_AD_AD_MUTE (0x1 << 7)
|
||||||
#define RT5514_AD_AD_MUTE_BIT 7
|
#define RT5514_AD_AD_MUTE_BIT 7
|
||||||
#define RT5514_AD_GAIN_MASK (0x7f << 0)
|
#define RT5514_AD_GAIN_MASK (0x3f << 1)
|
||||||
#define RT5514_AD_GAIN_SFT 0
|
#define RT5514_AD_GAIN_SFT 1
|
||||||
|
|
||||||
/* RT5514_ANA_CTRL_MICBST (0x2220) */
|
/* RT5514_ANA_CTRL_MICBST (0x2220) */
|
||||||
#define RT5514_SEL_BSTL_MASK (0xf << 4)
|
#define RT5514_SEL_BSTL_MASK (0xf << 4)
|
||||||
|
|
|
@ -77,7 +77,7 @@ int snd_soc_get_enum_double(struct snd_kcontrol *kcontrol,
|
||||||
item = snd_soc_enum_val_to_item(e, val);
|
item = snd_soc_enum_val_to_item(e, val);
|
||||||
ucontrol->value.enumerated.item[0] = item;
|
ucontrol->value.enumerated.item[0] = item;
|
||||||
if (e->shift_l != e->shift_r) {
|
if (e->shift_l != e->shift_r) {
|
||||||
val = (reg_val >> e->shift_l) & e->mask;
|
val = (reg_val >> e->shift_r) & e->mask;
|
||||||
item = snd_soc_enum_val_to_item(e, val);
|
item = snd_soc_enum_val_to_item(e, val);
|
||||||
ucontrol->value.enumerated.item[1] = item;
|
ucontrol->value.enumerated.item[1] = item;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue