Commit 21e59fe2 authored by Takashi Iwai's avatar Takashi Iwai

Merge tag 'asoc-fix-v6.8-rc7' of...

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.
parents a17bd44c 96e202f8
...@@ -64,7 +64,7 @@ examples: ...@@ -64,7 +64,7 @@ examples:
#include <dt-bindings/clock/tegra30-car.h> #include <dt-bindings/clock/tegra30-car.h>
#include <dt-bindings/soc/tegra-pmc.h> #include <dt-bindings/soc/tegra-pmc.h>
sound { sound {
compatible = "lge,tegra-audio-max98089-p895", compatible = "lg,tegra-audio-max98089-p895",
"nvidia,tegra-audio-max98089"; "nvidia,tegra-audio-max98089";
nvidia,model = "LG Optimus Vu MAX98089"; nvidia,model = "LG Optimus Vu MAX98089";
......
...@@ -416,6 +416,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = { ...@@ -416,6 +416,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
DMI_MATCH(DMI_BOARD_NAME, "8B2F"), 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, .driver_data = &acp6x_card,
.matches = { .matches = {
......
...@@ -3884,7 +3884,7 @@ static inline int madera_set_fll_clks(struct madera_fll *fll, int base, bool ena ...@@ -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, return madera_set_fll_clks_reg(fll, ena,
base + MADERA_FLL_CONTROL_6_OFFS, base + MADERA_FLL_CONTROL_6_OFFS,
MADERA_FLL1_REFCLK_SRC_MASK, 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) 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, ...@@ -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("HPOUTL"),
SND_SOC_DAPM_OUTPUT("HPOUTR"), 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[] = { 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, ...@@ -2236,7 +2239,6 @@ SND_SOC_DAPM_MIXER("Speaker Mixer", WM8962_MIXER_ENABLES, 1, 0,
spkmixl, ARRAY_SIZE(spkmixl)), spkmixl, ARRAY_SIZE(spkmixl)),
SND_SOC_DAPM_MUX_E("Speaker PGA", WM8962_PWR_MGMT_2, 4, 0, &spkoutl_mux, SND_SOC_DAPM_MUX_E("Speaker PGA", WM8962_PWR_MGMT_2, 4, 0, &spkoutl_mux,
out_pga_event, SND_SOC_DAPM_POST_PMU), 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"), SND_SOC_DAPM_OUTPUT("SPKOUT"),
}; };
...@@ -2251,9 +2253,6 @@ SND_SOC_DAPM_MUX_E("SPKOUTL PGA", WM8962_PWR_MGMT_2, 4, 0, &spkoutl_mux, ...@@ -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, SND_SOC_DAPM_MUX_E("SPKOUTR PGA", WM8962_PWR_MGMT_2, 3, 0, &spkoutr_mux,
out_pga_event, SND_SOC_DAPM_POST_PMU), 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("SPKOUTL"),
SND_SOC_DAPM_OUTPUT("SPKOUTR"), SND_SOC_DAPM_OUTPUT("SPKOUTR"),
}; };
...@@ -2366,12 +2365,18 @@ static const struct snd_soc_dapm_route wm8962_spk_mono_intercon[] = { ...@@ -2366,12 +2365,18 @@ static const struct snd_soc_dapm_route wm8962_spk_mono_intercon[] = {
{ "Speaker PGA", "Mixer", "Speaker Mixer" }, { "Speaker PGA", "Mixer", "Speaker Mixer" },
{ "Speaker PGA", "DAC", "DACL" }, { "Speaker PGA", "DAC", "DACL" },
{ "Speaker Output", NULL, "Speaker PGA" }, { "SPKOUTL Output", NULL, "Speaker PGA" },
{ "Speaker Output", NULL, "SYSCLK" }, { "SPKOUTL Output", NULL, "SYSCLK" },
{ "Speaker Output", NULL, "TOCLK" }, { "SPKOUTL Output", NULL, "TOCLK" },
{ "Speaker Output", NULL, "TEMP_SPK" }, { "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[] = { 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 ...@@ -2914,8 +2919,12 @@ static int wm8962_set_fll(struct snd_soc_component *component, int fll_id, int s
switch (fll_id) { switch (fll_id) {
case WM8962_FLL_MCLK: case WM8962_FLL_MCLK:
case WM8962_FLL_BCLK: case WM8962_FLL_BCLK:
fll1 |= (fll_id - 1) << WM8962_FLL_REFCLK_SRC_SHIFT;
break;
case WM8962_FLL_OSC: case WM8962_FLL_OSC:
fll1 |= (fll_id - 1) << WM8962_FLL_REFCLK_SRC_SHIFT; fll1 |= (fll_id - 1) << WM8962_FLL_REFCLK_SRC_SHIFT;
snd_soc_component_update_bits(component, WM8962_PLL2,
WM8962_OSC_ENA, WM8962_OSC_ENA);
break; break;
case WM8962_FLL_INT: case WM8962_FLL_INT:
snd_soc_component_update_bits(component, WM8962_FLL_CONTROL_1, 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 ...@@ -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); WM8962_FLL_FRC_NCO, WM8962_FLL_FRC_NCO);
break; break;
default: default:
dev_err(component->dev, "Unknown FLL source %d\n", ret); dev_err(component->dev, "Unknown FLL source %d\n", source);
return -EINVAL; return -EINVAL;
} }
......
...@@ -685,6 +685,18 @@ static const struct dmi_system_id byt_rt5640_quirk_table[] = { ...@@ -685,6 +685,18 @@ static const struct dmi_system_id byt_rt5640_quirk_table[] = {
BYT_RT5640_SSP0_AIF1 | BYT_RT5640_SSP0_AIF1 |
BYT_RT5640_MCLK_EN), 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) */ /* Chuwi Vi10 (CWI505) */
.matches = { .matches = {
......
...@@ -111,6 +111,13 @@ static u32 rsnd_adg_ssi_ws_timing_gen2(struct rsnd_dai_stream *io) ...@@ -111,6 +111,13 @@ static u32 rsnd_adg_ssi_ws_timing_gen2(struct rsnd_dai_stream *io)
ws = 7; ws = 7;
break; break;
} }
} else {
/*
* SSI8 is not connected to ADG.
* Thus SSI9 is using ws = 8
*/
if (id == 9)
ws = 8;
} }
return (0x6 + ws) << 8; return (0x6 + ws) << 8;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment