--- /dev/null
+From 27190e646f61f18b2ac6ae03bf2b194d4c62c1b2 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sat, 25 Apr 2020 13:06:31 -0700
+Subject: Input: mms114 - add extra compatible for mms345l
+
+From: Stephan Gerhold <stephan@gerhold.net>
+
+[ Upstream commit 7842087b0196d674ed877d768de8f2a34d7fdc53 ]
+
+MMS345L is another first generation touch screen from Melfas,
+which uses mostly the same registers as MMS152.
+
+However, there is some garbage printed during initialization.
+Apparently MMS345L does not have the MMS152_COMPAT_GROUP register
+that is read+printed during initialization.
+
+ TSP FW Rev: bootloader 0x6 / core 0x26 / config 0x26, Compat group: \x06
+
+On earlier kernel versions the compat group was actually printed as
+an ASCII control character, seems like it gets escaped now.
+
+But we probably shouldn't print something from a random register.
+
+Add a separate "melfas,mms345l" compatible that avoids reading
+from the MMS152_COMPAT_GROUP register. This might also help in case
+there is some other device-specific quirk in the future.
+
+Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
+Reviewed-by: Andi Shyti <andi@etezian.org>
+Link: https://lore.kernel.org/r/20200423102431.2715-1-stephan@gerhold.net
+Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/input/touchscreen/mms114.c | 17 +++++++++++++++--
+ 1 file changed, 15 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/input/touchscreen/mms114.c b/drivers/input/touchscreen/mms114.c
+index 2ef1adaed9afb..5bdf4ac1a3033 100644
+--- a/drivers/input/touchscreen/mms114.c
++++ b/drivers/input/touchscreen/mms114.c
+@@ -54,6 +54,7 @@
+ enum mms_type {
+ TYPE_MMS114 = 114,
+ TYPE_MMS152 = 152,
++ TYPE_MMS345L = 345,
+ };
+
+ struct mms114_data {
+@@ -250,6 +251,15 @@ static int mms114_get_version(struct mms114_data *data)
+ int error;
+
+ switch (data->type) {
++ case TYPE_MMS345L:
++ error = __mms114_read_reg(data, MMS152_FW_REV, 3, buf);
++ if (error)
++ return error;
++
++ dev_info(dev, "TSP FW Rev: bootloader 0x%x / core 0x%x / config 0x%x\n",
++ buf[0], buf[1], buf[2]);
++ break;
++
+ case TYPE_MMS152:
+ error = __mms114_read_reg(data, MMS152_FW_REV, 3, buf);
+ if (error)
+@@ -287,8 +297,8 @@ static int mms114_setup_regs(struct mms114_data *data)
+ if (error < 0)
+ return error;
+
+- /* MMS152 has no configuration or power on registers */
+- if (data->type == TYPE_MMS152)
++ /* Only MMS114 has configuration and power on registers */
++ if (data->type != TYPE_MMS114)
+ return 0;
+
+ error = mms114_set_active(data, true);
+@@ -597,6 +607,9 @@ static const struct of_device_id mms114_dt_match[] = {
+ }, {
+ .compatible = "melfas,mms152",
+ .data = (void *)TYPE_MMS152,
++ }, {
++ .compatible = "melfas,mms345l",
++ .data = (void *)TYPE_MMS345L,
+ },
+ { }
+ };
+--
+2.25.1
+