mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 16:12:59 +02:00
ASoC: Fixes for v6.17
A reasonably small collection of fixes that came in since the merge window, mostly small and driver specific plus a cleanup of the menu reorganisation to address some user confusion with the way the generic drivers had been handled. -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEreZoqmdXGLWf4p/qJNaLcl1Uh9AFAmic65gACgkQJNaLcl1U h9BcKQf/QlkZR3J9y2NEH8UbAqf0l3c5WFMl1bfUtgiTTZzbgC5eP5wqjmP3bkCp FRDxzrN0cukzajbfu63SM4WASYswH1uOIv2qD1T/xuDFZRZM2Dhbi0gs+wHYrpDv laAmUSLbKAoRYHCAkfaDu9rPjVbOFmFvswmf1pIAfkfuRCJTGfiTk6sO6yKG24LP tk1XPAZdDK22D5W2aVCDMf4BRJ2RKjJBRpN48Mwg3OaAwpIuBsftdZAnur3QfkLW fDhDWjBqPr1wJsHmG96xIWFQG241kAD60BBposPvpLRF/HN813gcPwYDqW3U+ddF Od38MSDqp2v2FFoHvgS6Y5GzfFK6Wg== =O2NX -----END PGP SIGNATURE----- Merge tag 'asoc-fix-v6.17-rc1' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus ASoC: Fixes for v6.17 A reasonably small collection of fixes that came in since the merge window, mostly small and driver specific plus a cleanup of the menu reorganisation to address some user confusion with the way the generic drivers had been handled.
This commit is contained in:
commit
e26ad67117
|
|
@ -111,7 +111,6 @@ source "sound/soc/bcm/Kconfig"
|
|||
source "sound/soc/cirrus/Kconfig"
|
||||
source "sound/soc/dwc/Kconfig"
|
||||
source "sound/soc/fsl/Kconfig"
|
||||
source "sound/soc/generic/Kconfig"
|
||||
source "sound/soc/google/Kconfig"
|
||||
source "sound/soc/hisilicon/Kconfig"
|
||||
source "sound/soc/jz4740/Kconfig"
|
||||
|
|
@ -149,5 +148,8 @@ source "sound/soc/codecs/Kconfig"
|
|||
|
||||
source "sound/soc/sdw_utils/Kconfig"
|
||||
|
||||
# generic frame-work
|
||||
source "sound/soc/generic/Kconfig"
|
||||
|
||||
endif # SND_SOC
|
||||
|
||||
|
|
|
|||
|
|
@ -177,7 +177,7 @@ static int aw87390_profile_info(struct snd_kcontrol *kcontrol,
|
|||
{
|
||||
struct snd_soc_component *codec = snd_soc_kcontrol_component(kcontrol);
|
||||
struct aw87390 *aw87390 = snd_soc_component_get_drvdata(codec);
|
||||
char *prof_name, *name;
|
||||
char *prof_name;
|
||||
int count, ret;
|
||||
|
||||
uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
|
||||
|
|
@ -194,17 +194,15 @@ static int aw87390_profile_info(struct snd_kcontrol *kcontrol,
|
|||
if (uinfo->value.enumerated.item >= count)
|
||||
uinfo->value.enumerated.item = count - 1;
|
||||
|
||||
name = uinfo->value.enumerated.name;
|
||||
count = uinfo->value.enumerated.item;
|
||||
|
||||
ret = aw87390_dev_get_prof_name(aw87390->aw_pa, count, &prof_name);
|
||||
if (ret) {
|
||||
strscpy(uinfo->value.enumerated.name, "null",
|
||||
strlen("null") + 1);
|
||||
strscpy(uinfo->value.enumerated.name, "null");
|
||||
return 0;
|
||||
}
|
||||
|
||||
strscpy(name, prof_name, sizeof(uinfo->value.enumerated.name));
|
||||
strscpy(uinfo->value.enumerated.name, prof_name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -914,12 +914,11 @@ static int aw88081_profile_info(struct snd_kcontrol *kcontrol,
|
|||
|
||||
ret = aw88081_dev_get_prof_name(aw88081->aw_pa, count, &prof_name);
|
||||
if (ret) {
|
||||
strscpy(uinfo->value.enumerated.name, "null",
|
||||
sizeof(uinfo->value.enumerated.name));
|
||||
strscpy(uinfo->value.enumerated.name, "null");
|
||||
return 0;
|
||||
}
|
||||
|
||||
strscpy(uinfo->value.enumerated.name, prof_name, sizeof(uinfo->value.enumerated.name));
|
||||
strscpy(uinfo->value.enumerated.name, prof_name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1478,7 +1478,7 @@ static int aw88166_profile_info(struct snd_kcontrol *kcontrol,
|
|||
{
|
||||
struct snd_soc_component *codec = snd_soc_kcontrol_component(kcontrol);
|
||||
struct aw88166 *aw88166 = snd_soc_component_get_drvdata(codec);
|
||||
char *prof_name, *name;
|
||||
char *prof_name;
|
||||
int count, ret;
|
||||
|
||||
uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
|
||||
|
|
@ -1495,17 +1495,15 @@ static int aw88166_profile_info(struct snd_kcontrol *kcontrol,
|
|||
if (uinfo->value.enumerated.item >= count)
|
||||
uinfo->value.enumerated.item = count - 1;
|
||||
|
||||
name = uinfo->value.enumerated.name;
|
||||
count = uinfo->value.enumerated.item;
|
||||
|
||||
ret = aw88166_dev_get_prof_name(aw88166->aw_pa, count, &prof_name);
|
||||
if (ret) {
|
||||
strscpy(uinfo->value.enumerated.name, "null",
|
||||
strlen("null") + 1);
|
||||
strscpy(uinfo->value.enumerated.name, "null");
|
||||
return 0;
|
||||
}
|
||||
|
||||
strscpy(name, prof_name, sizeof(uinfo->value.enumerated.name));
|
||||
strscpy(uinfo->value.enumerated.name, prof_name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -819,7 +819,7 @@ static int aw88261_profile_info(struct snd_kcontrol *kcontrol,
|
|||
{
|
||||
struct snd_soc_component *codec = snd_soc_kcontrol_component(kcontrol);
|
||||
struct aw88261 *aw88261 = snd_soc_component_get_drvdata(codec);
|
||||
char *prof_name, *name;
|
||||
char *prof_name;
|
||||
int count, ret;
|
||||
|
||||
uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
|
||||
|
|
@ -836,17 +836,15 @@ static int aw88261_profile_info(struct snd_kcontrol *kcontrol,
|
|||
if (uinfo->value.enumerated.item >= count)
|
||||
uinfo->value.enumerated.item = count - 1;
|
||||
|
||||
name = uinfo->value.enumerated.name;
|
||||
count = uinfo->value.enumerated.item;
|
||||
|
||||
ret = aw88261_dev_get_prof_name(aw88261->aw_pa, count, &prof_name);
|
||||
if (ret) {
|
||||
strscpy(uinfo->value.enumerated.name, "null",
|
||||
strlen("null") + 1);
|
||||
strscpy(uinfo->value.enumerated.name, "null");
|
||||
return 0;
|
||||
}
|
||||
|
||||
strscpy(name, prof_name, sizeof(uinfo->value.enumerated.name));
|
||||
strscpy(uinfo->value.enumerated.name, prof_name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -175,7 +175,7 @@ static int aw88395_profile_info(struct snd_kcontrol *kcontrol,
|
|||
{
|
||||
struct snd_soc_component *codec = snd_soc_kcontrol_component(kcontrol);
|
||||
struct aw88395 *aw88395 = snd_soc_component_get_drvdata(codec);
|
||||
char *prof_name, *name;
|
||||
char *prof_name;
|
||||
int count, ret;
|
||||
|
||||
uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
|
||||
|
|
@ -192,17 +192,15 @@ static int aw88395_profile_info(struct snd_kcontrol *kcontrol,
|
|||
if (uinfo->value.enumerated.item >= count)
|
||||
uinfo->value.enumerated.item = count - 1;
|
||||
|
||||
name = uinfo->value.enumerated.name;
|
||||
count = uinfo->value.enumerated.item;
|
||||
|
||||
ret = aw88395_dev_get_prof_name(aw88395->aw_pa, count, &prof_name);
|
||||
if (ret) {
|
||||
strscpy(uinfo->value.enumerated.name, "null",
|
||||
strlen("null") + 1);
|
||||
strscpy(uinfo->value.enumerated.name, "null");
|
||||
return 0;
|
||||
}
|
||||
|
||||
strscpy(name, prof_name, sizeof(uinfo->value.enumerated.name));
|
||||
strscpy(uinfo->value.enumerated.name, prof_name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1831,7 +1831,7 @@ static int aw88399_profile_info(struct snd_kcontrol *kcontrol,
|
|||
{
|
||||
struct snd_soc_component *codec = snd_soc_kcontrol_component(kcontrol);
|
||||
struct aw88399 *aw88399 = snd_soc_component_get_drvdata(codec);
|
||||
char *prof_name, *name;
|
||||
char *prof_name;
|
||||
int count, ret;
|
||||
|
||||
uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
|
||||
|
|
@ -1848,17 +1848,15 @@ static int aw88399_profile_info(struct snd_kcontrol *kcontrol,
|
|||
if (uinfo->value.enumerated.item >= count)
|
||||
uinfo->value.enumerated.item = count - 1;
|
||||
|
||||
name = uinfo->value.enumerated.name;
|
||||
count = uinfo->value.enumerated.item;
|
||||
|
||||
ret = aw88399_dev_get_prof_name(aw88399->aw_pa, count, &prof_name);
|
||||
if (ret) {
|
||||
strscpy(uinfo->value.enumerated.name, "null",
|
||||
strlen("null") + 1);
|
||||
strscpy(uinfo->value.enumerated.name, "null");
|
||||
return 0;
|
||||
}
|
||||
|
||||
strscpy(name, prof_name, sizeof(uinfo->value.enumerated.name));
|
||||
strscpy(uinfo->value.enumerated.name, prof_name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2229,7 +2229,7 @@ static int tx_macro_register_mclk_output(struct tx_macro *tx)
|
|||
}
|
||||
|
||||
static const struct snd_soc_component_driver tx_macro_component_drv = {
|
||||
.name = "RX-MACRO",
|
||||
.name = "TX-MACRO",
|
||||
.probe = tx_macro_component_probe,
|
||||
.controls = tx_macro_snd_controls,
|
||||
.num_controls = ARRAY_SIZE(tx_macro_snd_controls),
|
||||
|
|
|
|||
|
|
@ -109,6 +109,7 @@ static const struct reg_sequence rt1320_blind_write[] = {
|
|||
{ 0x0000d540, 0x01 },
|
||||
{ 0xd172, 0x2a },
|
||||
{ 0xc5d6, 0x01 },
|
||||
{ 0xd478, 0xff },
|
||||
};
|
||||
|
||||
static const struct reg_sequence rt1320_vc_blind_write[] = {
|
||||
|
|
@ -159,7 +160,7 @@ static const struct reg_sequence rt1320_vc_blind_write[] = {
|
|||
{ 0xd471, 0x3a },
|
||||
{ 0xd474, 0x11 },
|
||||
{ 0xd475, 0x32 },
|
||||
{ 0xd478, 0x64 },
|
||||
{ 0xd478, 0xff },
|
||||
{ 0xd479, 0x20 },
|
||||
{ 0xd47a, 0x10 },
|
||||
{ 0xd47c, 0xff },
|
||||
|
|
|
|||
|
|
@ -278,6 +278,8 @@ static void rt721_sdca_jack_preset(struct rt721_sdca_priv *rt721)
|
|||
RT721_ENT_FLOAT_CTL1, 0x4040);
|
||||
rt_sdca_index_write(rt721->mbq_regmap, RT721_HDA_SDCA_FLOAT,
|
||||
RT721_ENT_FLOAT_CTL4, 0x1201);
|
||||
rt_sdca_index_write(rt721->mbq_regmap, RT721_BOOST_CTRL,
|
||||
RT721_BST_4CH_TOP_GATING_CTRL1, 0x002a);
|
||||
regmap_write(rt721->regmap, 0x2f58, 0x07);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@ struct rt721_sdca_dmic_kctrl_priv {
|
|||
#define RT721_CBJ_CTRL 0x0a
|
||||
#define RT721_CAP_PORT_CTRL 0x0c
|
||||
#define RT721_CLASD_AMP_CTRL 0x0d
|
||||
#define RT721_BOOST_CTRL 0x0f
|
||||
#define RT721_VENDOR_REG 0x20
|
||||
#define RT721_RC_CALIB_CTRL 0x40
|
||||
#define RT721_VENDOR_EQ_L 0x53
|
||||
|
|
@ -93,6 +94,9 @@ struct rt721_sdca_dmic_kctrl_priv {
|
|||
/* Index (NID:0dh) */
|
||||
#define RT721_CLASD_AMP_2CH_CAL 0x14
|
||||
|
||||
/* Index (NID:0fh) */
|
||||
#define RT721_BST_4CH_TOP_GATING_CTRL1 0x05
|
||||
|
||||
/* Index (NID:20h) */
|
||||
#define RT721_JD_PRODUCT_NUM 0x00
|
||||
#define RT721_ANALOG_BIAS_CTL3 0x04
|
||||
|
|
|
|||
|
|
@ -1749,7 +1749,7 @@ static void sma1307_setting_loaded(struct sma1307_priv *sma1307, const char *fil
|
|||
sma1307->set.header_size * sizeof(int));
|
||||
|
||||
if ((sma1307->set.checksum >> 8) != SMA1307_SETTING_CHECKSUM) {
|
||||
dev_err(sma1307->dev, "%s: failed by dismatch \"%s\"\n",
|
||||
dev_err(sma1307->dev, "%s: checksum failed \"%s\"\n",
|
||||
__func__, setting_file);
|
||||
sma1307->set.status = false;
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -908,10 +908,10 @@ static const struct snd_kcontrol_new tasdevice_cali_controls[] = {
|
|||
};
|
||||
|
||||
static const struct snd_kcontrol_new tas2781_snd_controls[] = {
|
||||
SOC_SINGLE_RANGE_EXT_TLV("Speaker Analog Gain", TAS2781_AMP_LEVEL,
|
||||
SOC_SINGLE_RANGE_EXT_TLV("Speaker Analog Volume", TAS2781_AMP_LEVEL,
|
||||
1, 0, 20, 0, tas2781_amp_getvol,
|
||||
tas2781_amp_putvol, amp_vol_tlv),
|
||||
SOC_SINGLE_RANGE_EXT_TLV("Speaker Digital Gain", TAS2781_DVC_LVL,
|
||||
SOC_SINGLE_RANGE_EXT_TLV("Speaker Digital Volume", TAS2781_DVC_LVL,
|
||||
0, 0, 200, 1, tas2781_digital_getvol,
|
||||
tas2781_digital_putvol, dvc_tlv),
|
||||
};
|
||||
|
|
@ -1480,7 +1480,7 @@ static ssize_t acoustic_ctl_write(struct file *file,
|
|||
return PTR_ERR(src);
|
||||
|
||||
if (src[0] > max_pkg_len && src[0] != count) {
|
||||
dev_err(priv->dev, "pkg(%u), max(%u), count(%u) dismatch.\n",
|
||||
dev_err(priv->dev, "pkg(%u), max(%u), count(%u) mismatch.\n",
|
||||
src[0], max_pkg_len, (unsigned int)count);
|
||||
ret = 0;
|
||||
goto exit;
|
||||
|
|
|
|||
|
|
@ -809,9 +809,9 @@ static void fsl_sai_config_disable(struct fsl_sai *sai, int dir)
|
|||
* are running concurrently.
|
||||
*/
|
||||
/* Software Reset */
|
||||
regmap_write(sai->regmap, FSL_SAI_xCSR(tx, ofs), FSL_SAI_CSR_SR);
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx, ofs), FSL_SAI_CSR_SR, FSL_SAI_CSR_SR);
|
||||
/* Clear SR bit to finish the reset */
|
||||
regmap_write(sai->regmap, FSL_SAI_xCSR(tx, ofs), 0);
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx, ofs), FSL_SAI_CSR_SR, 0);
|
||||
}
|
||||
|
||||
static int fsl_sai_trigger(struct snd_pcm_substream *substream, int cmd,
|
||||
|
|
@ -930,11 +930,11 @@ static int fsl_sai_dai_probe(struct snd_soc_dai *cpu_dai)
|
|||
unsigned int ofs = sai->soc_data->reg_offset;
|
||||
|
||||
/* Software Reset for both Tx and Rx */
|
||||
regmap_write(sai->regmap, FSL_SAI_TCSR(ofs), FSL_SAI_CSR_SR);
|
||||
regmap_write(sai->regmap, FSL_SAI_RCSR(ofs), FSL_SAI_CSR_SR);
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_TCSR(ofs), FSL_SAI_CSR_SR, FSL_SAI_CSR_SR);
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_RCSR(ofs), FSL_SAI_CSR_SR, FSL_SAI_CSR_SR);
|
||||
/* Clear SR bit to finish the reset */
|
||||
regmap_write(sai->regmap, FSL_SAI_TCSR(ofs), 0);
|
||||
regmap_write(sai->regmap, FSL_SAI_RCSR(ofs), 0);
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_TCSR(ofs), FSL_SAI_CSR_SR, 0);
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_RCSR(ofs), FSL_SAI_CSR_SR, 0);
|
||||
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_TCR1(ofs),
|
||||
FSL_SAI_CR1_RFW_MASK(sai->soc_data->fifo_depth),
|
||||
|
|
@ -1824,11 +1824,11 @@ static int fsl_sai_runtime_resume(struct device *dev)
|
|||
|
||||
regcache_cache_only(sai->regmap, false);
|
||||
regcache_mark_dirty(sai->regmap);
|
||||
regmap_write(sai->regmap, FSL_SAI_TCSR(ofs), FSL_SAI_CSR_SR);
|
||||
regmap_write(sai->regmap, FSL_SAI_RCSR(ofs), FSL_SAI_CSR_SR);
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_TCSR(ofs), FSL_SAI_CSR_SR, FSL_SAI_CSR_SR);
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_RCSR(ofs), FSL_SAI_CSR_SR, FSL_SAI_CSR_SR);
|
||||
usleep_range(1000, 2000);
|
||||
regmap_write(sai->regmap, FSL_SAI_TCSR(ofs), 0);
|
||||
regmap_write(sai->regmap, FSL_SAI_RCSR(ofs), 0);
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_TCSR(ofs), FSL_SAI_CSR_SR, 0);
|
||||
regmap_update_bits(sai->regmap, FSL_SAI_RCSR(ofs), FSL_SAI_CSR_SR, 0);
|
||||
|
||||
ret = regcache_sync(sai->regmap);
|
||||
if (ret)
|
||||
|
|
|
|||
|
|
@ -469,11 +469,8 @@ static int stm32_i2smclk_determine_rate(struct clk_hw *hw,
|
|||
int ret;
|
||||
|
||||
ret = stm32_i2s_calc_clk_div(i2s, req->best_parent_rate, req->rate);
|
||||
if (ret) {
|
||||
req->rate = ret;
|
||||
|
||||
return 0;
|
||||
}
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
mclk->freq = req->best_parent_rate / i2s->divider;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user