diff options
Diffstat (limited to 'sound/soc/codecs/rt722-sdca.c')
| -rw-r--r-- | sound/soc/codecs/rt722-sdca.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/sound/soc/codecs/rt722-sdca.c b/sound/soc/codecs/rt722-sdca.c index 149cb6617126..1dad8012d904 100644 --- a/sound/soc/codecs/rt722-sdca.c +++ b/sound/soc/codecs/rt722-sdca.c @@ -1652,6 +1652,17 @@ int rt722_sdca_init(struct device *dev, struct regmap *regmap, struct sdw_slave &soc_sdca_dev_rt722, rt722_sdca_dai, ARRAY_SIZE(rt722_sdca_dai)); } +static const struct dmi_system_id dmi_dell_mono_spk_quirk_table[] = { + { + .ident = "Dell Pro 5 Micro P5M1270", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc"), + DMI_EXACT_MATCH(DMI_PRODUCT_SKU, "0EBA"), + } + }, + {} +}; + static void rt722_sdca_dmic_preset(struct rt722_sdca_priv *rt722) { unsigned int mic_func_status; @@ -1741,6 +1752,13 @@ static void rt722_sdca_amp_preset(struct rt722_sdca_priv *rt722) if (rt722->hw_vid == RT722_VB) regmap_write(rt722->regmap, 0x2f54, 0x00); + /* This Dell machine only uses the mono speaker */ + if (dmi_check_system(dmi_dell_mono_spk_quirk_table)) { + rt722_sdca_index_write(rt722, RT722_VENDOR_REG, RT722_CLSD_CTRL2, 0x391a); + rt722_sdca_index_update_bits(rt722, RT722_VENDOR_REG, + RT722_MISC_CTRL2, 0x0010, 0x0010); + } + /* clear flag */ regmap_write(rt722->regmap, SDW_SDCA_CTL(FUNC_NUM_AMP, RT722_SDCA_ENT0, RT722_SDCA_CTL_FUNC_STATUS, 0), |
