summaryrefslogtreecommitdiff
path: root/sound/soc/codecs/rt722-sdca.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/codecs/rt722-sdca.c')
-rw-r--r--sound/soc/codecs/rt722-sdca.c18
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),