ASoC: Fixes for v6.8
Some more driver specific fixes for v6.8, plus one new x86 platform quirk. All good fixes to have if you have systems that use the relevant hardware. -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEreZoqmdXGLWf4p/qJNaLcl1Uh9AFAmXqBl8ACgkQJNaLcl1U h9C4ewf7BjabmEuIq1BdWVHr+e7zQ6fH2azORhfFJ6ckGu3XBJwUw3ntlt34DkE9 PhImkYO+tdce0yQy+YBa4Nn9ZBkFvVpDC1lyPVbV7z/caZ5coSVL/lpcb4/ntvnY OjTX6zCFolA//BjZdaa5NzBKqQ6goAdV4ZgOh5UoutVcSlJaT08c4vbgbXpouaIG E4VrBQRzRvMyqbhG/jP3cF48FyXNKEAMcsVPzSNzpbQ2KETV5XoXAw2bqn2n8flv tN8gWmfSiv2hlJkIR5Nt800tzOJW+7l9obQX49l3+DKpj67sReJtJYEhkLDdY1jp f3VVWlj43GF54xb/JQ447ehIPKnS6g== =UzHL -----END PGP SIGNATURE----- Merge tag 'asoc-fix-v6.8-rc7' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus ASoC: Fixes for v6.8 Some more driver specific fixes for v6.8, plus one new x86 platform quirk. All good fixes to have if you have systems that use the relevant hardware.
This commit is contained in:
commit
21e59fe2f7
@ -64,7 +64,7 @@ examples:
|
||||
#include <dt-bindings/clock/tegra30-car.h>
|
||||
#include <dt-bindings/soc/tegra-pmc.h>
|
||||
sound {
|
||||
compatible = "lge,tegra-audio-max98089-p895",
|
||||
compatible = "lg,tegra-audio-max98089-p895",
|
||||
"nvidia,tegra-audio-max98089";
|
||||
nvidia,model = "LG Optimus Vu MAX98089";
|
||||
|
||||
|
@ -416,6 +416,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
|
||||
DMI_MATCH(DMI_BOARD_NAME, "8B2F"),
|
||||
}
|
||||
},
|
||||
{
|
||||
.driver_data = &acp6x_card,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "HP"),
|
||||
DMI_MATCH(DMI_BOARD_NAME, "8BD6"),
|
||||
}
|
||||
},
|
||||
{
|
||||
.driver_data = &acp6x_card,
|
||||
.matches = {
|
||||
|
@ -3884,7 +3884,7 @@ static inline int madera_set_fll_clks(struct madera_fll *fll, int base, bool ena
|
||||
return madera_set_fll_clks_reg(fll, ena,
|
||||
base + MADERA_FLL_CONTROL_6_OFFS,
|
||||
MADERA_FLL1_REFCLK_SRC_MASK,
|
||||
MADERA_FLL1_REFCLK_DIV_SHIFT);
|
||||
MADERA_FLL1_REFCLK_SRC_SHIFT);
|
||||
}
|
||||
|
||||
static inline int madera_set_fllao_clks(struct madera_fll *fll, int base, bool ena)
|
||||
|
@ -2229,6 +2229,9 @@ SND_SOC_DAPM_PGA_E("HPOUT", SND_SOC_NOPM, 0, 0, NULL, 0, hp_event,
|
||||
|
||||
SND_SOC_DAPM_OUTPUT("HPOUTL"),
|
||||
SND_SOC_DAPM_OUTPUT("HPOUTR"),
|
||||
|
||||
SND_SOC_DAPM_PGA("SPKOUTL Output", WM8962_CLASS_D_CONTROL_1, 6, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA("SPKOUTR Output", WM8962_CLASS_D_CONTROL_1, 7, 0, NULL, 0),
|
||||
};
|
||||
|
||||
static const struct snd_soc_dapm_widget wm8962_dapm_spk_mono_widgets[] = {
|
||||
@ -2236,7 +2239,6 @@ SND_SOC_DAPM_MIXER("Speaker Mixer", WM8962_MIXER_ENABLES, 1, 0,
|
||||
spkmixl, ARRAY_SIZE(spkmixl)),
|
||||
SND_SOC_DAPM_MUX_E("Speaker PGA", WM8962_PWR_MGMT_2, 4, 0, &spkoutl_mux,
|
||||
out_pga_event, SND_SOC_DAPM_POST_PMU),
|
||||
SND_SOC_DAPM_PGA("Speaker Output", WM8962_CLASS_D_CONTROL_1, 7, 0, NULL, 0),
|
||||
SND_SOC_DAPM_OUTPUT("SPKOUT"),
|
||||
};
|
||||
|
||||
@ -2251,9 +2253,6 @@ SND_SOC_DAPM_MUX_E("SPKOUTL PGA", WM8962_PWR_MGMT_2, 4, 0, &spkoutl_mux,
|
||||
SND_SOC_DAPM_MUX_E("SPKOUTR PGA", WM8962_PWR_MGMT_2, 3, 0, &spkoutr_mux,
|
||||
out_pga_event, SND_SOC_DAPM_POST_PMU),
|
||||
|
||||
SND_SOC_DAPM_PGA("SPKOUTR Output", WM8962_CLASS_D_CONTROL_1, 7, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA("SPKOUTL Output", WM8962_CLASS_D_CONTROL_1, 6, 0, NULL, 0),
|
||||
|
||||
SND_SOC_DAPM_OUTPUT("SPKOUTL"),
|
||||
SND_SOC_DAPM_OUTPUT("SPKOUTR"),
|
||||
};
|
||||
@ -2366,12 +2365,18 @@ static const struct snd_soc_dapm_route wm8962_spk_mono_intercon[] = {
|
||||
{ "Speaker PGA", "Mixer", "Speaker Mixer" },
|
||||
{ "Speaker PGA", "DAC", "DACL" },
|
||||
|
||||
{ "Speaker Output", NULL, "Speaker PGA" },
|
||||
{ "Speaker Output", NULL, "SYSCLK" },
|
||||
{ "Speaker Output", NULL, "TOCLK" },
|
||||
{ "Speaker Output", NULL, "TEMP_SPK" },
|
||||
{ "SPKOUTL Output", NULL, "Speaker PGA" },
|
||||
{ "SPKOUTL Output", NULL, "SYSCLK" },
|
||||
{ "SPKOUTL Output", NULL, "TOCLK" },
|
||||
{ "SPKOUTL Output", NULL, "TEMP_SPK" },
|
||||
|
||||
{ "SPKOUT", NULL, "Speaker Output" },
|
||||
{ "SPKOUTR Output", NULL, "Speaker PGA" },
|
||||
{ "SPKOUTR Output", NULL, "SYSCLK" },
|
||||
{ "SPKOUTR Output", NULL, "TOCLK" },
|
||||
{ "SPKOUTR Output", NULL, "TEMP_SPK" },
|
||||
|
||||
{ "SPKOUT", NULL, "SPKOUTL Output" },
|
||||
{ "SPKOUT", NULL, "SPKOUTR Output" },
|
||||
};
|
||||
|
||||
static const struct snd_soc_dapm_route wm8962_spk_stereo_intercon[] = {
|
||||
@ -2914,8 +2919,12 @@ static int wm8962_set_fll(struct snd_soc_component *component, int fll_id, int s
|
||||
switch (fll_id) {
|
||||
case WM8962_FLL_MCLK:
|
||||
case WM8962_FLL_BCLK:
|
||||
fll1 |= (fll_id - 1) << WM8962_FLL_REFCLK_SRC_SHIFT;
|
||||
break;
|
||||
case WM8962_FLL_OSC:
|
||||
fll1 |= (fll_id - 1) << WM8962_FLL_REFCLK_SRC_SHIFT;
|
||||
snd_soc_component_update_bits(component, WM8962_PLL2,
|
||||
WM8962_OSC_ENA, WM8962_OSC_ENA);
|
||||
break;
|
||||
case WM8962_FLL_INT:
|
||||
snd_soc_component_update_bits(component, WM8962_FLL_CONTROL_1,
|
||||
@ -2924,7 +2933,7 @@ static int wm8962_set_fll(struct snd_soc_component *component, int fll_id, int s
|
||||
WM8962_FLL_FRC_NCO, WM8962_FLL_FRC_NCO);
|
||||
break;
|
||||
default:
|
||||
dev_err(component->dev, "Unknown FLL source %d\n", ret);
|
||||
dev_err(component->dev, "Unknown FLL source %d\n", source);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -685,6 +685,18 @@ static const struct dmi_system_id byt_rt5640_quirk_table[] = {
|
||||
BYT_RT5640_SSP0_AIF1 |
|
||||
BYT_RT5640_MCLK_EN),
|
||||
},
|
||||
{ /* Chuwi Vi8 dual-boot (CWI506) */
|
||||
.matches = {
|
||||
DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Insyde"),
|
||||
DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "i86"),
|
||||
/* The above are too generic, also match BIOS info */
|
||||
DMI_MATCH(DMI_BIOS_VERSION, "CHUWI2.D86JHBNR02"),
|
||||
},
|
||||
.driver_data = (void *)(BYTCR_INPUT_DEFAULTS |
|
||||
BYT_RT5640_MONO_SPEAKER |
|
||||
BYT_RT5640_SSP0_AIF1 |
|
||||
BYT_RT5640_MCLK_EN),
|
||||
},
|
||||
{
|
||||
/* Chuwi Vi10 (CWI505) */
|
||||
.matches = {
|
||||
|
@ -111,6 +111,13 @@ static u32 rsnd_adg_ssi_ws_timing_gen2(struct rsnd_dai_stream *io)
|
||||
ws = 7;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
* SSI8 is not connected to ADG.
|
||||
* Thus SSI9 is using ws = 8
|
||||
*/
|
||||
if (id == 9)
|
||||
ws = 8;
|
||||
}
|
||||
|
||||
return (0x6 + ws) << 8;
|
||||
|
Loading…
Reference in New Issue
Block a user