diff mbox series

[SRU,B,1/1] ASoC: rt5645: Headphone Jack sense inverts on the LattePanda board

Message ID 20190507055008.10911-2-hui.wang@canonical.com
State New
Headers show
Series Headphone jack switch sense is inverted: plugging in headphones disables headphone output | expand

Commit Message

Hui Wang May 7, 2019, 5:50 a.m. UTC
BugLink: https://bugs.launchpad.net/bugs/1824259

The LattePanda board has a sound card chtrt5645, when there is nothing
plugged in the headphone jack, the system thinks the headphone is
plugged in, while we plug a headphone in the jack, the system thinks
the headphone is unplugged.

If adding quirk=0x21 in the module parameter, the headphone jack can
work well. So let us fix it via platform_data.

https://bugs.launchpad.net/bugs/182459
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
(backported from commit 406dcbc55a0a20fd155be889a4a0c4b812f7c18e
git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git)
Signed-off-by: Hui Wang <hui.wang@canonical.com>
---
 sound/soc/codecs/rt5645.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
diff mbox series

Patch

diff --git a/sound/soc/codecs/rt5645.c b/sound/soc/codecs/rt5645.c
index edc152c8a1fe..66fce92fb1a9 100644
--- a/sound/soc/codecs/rt5645.c
+++ b/sound/soc/codecs/rt5645.c
@@ -3681,6 +3681,23 @@  static const struct dmi_system_id dmi_platform_minix_z83_4[] = {
 	{ }
 };
 
+static const struct rt5645_platform_data lattepanda_board_platform_data = {
+       .jd_mode = 2,
+       .inv_jd1_1 = true,
+};
+
+static const struct dmi_system_id dmi_platform_lattepanda_board[] = {
+	{
+		.ident = "LattePanda board",
+		.matches = {
+		  DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"),
+		  DMI_EXACT_MATCH(DMI_BOARD_NAME, "Cherry Trail CR"),
+		  DMI_EXACT_MATCH(DMI_BOARD_VERSION, "Default string"),
+		},
+	},
+	{ }
+};
+
 static bool rt5645_check_dp(struct device *dev)
 {
 	if (device_property_present(dev, "realtek,in2-differential") ||
@@ -3737,6 +3754,8 @@  static int rt5645_i2c_probe(struct i2c_client *i2c,
 		rt5645->pdata = general_platform_data2;
 	else if (dmi_check_system(dmi_platform_minix_z83_4))
 		rt5645->pdata = minix_z83_4_platform_data;
+	else if (dmi_check_system(dmi_platform_lattepanda_board))
+		rt5645->pdata = lattepanda_board_platform_data;
 
 	if (quirk != -1) {
 		rt5645->pdata.in2_diff = QUIRK_IN2_DIFF(quirk);