From patchwork Mon Oct 7 20:33:41 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephan Gerhold X-Patchwork-Id: 11178495 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8D61476 for ; Mon, 7 Oct 2019 20:35:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 05FD321479 for ; Mon, 7 Oct 2019 20:35:20 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gerhold.net header.i=@gerhold.net header.b="I0zZFlzu" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728371AbfJGUfT (ORCPT ); Mon, 7 Oct 2019 16:35:19 -0400 Received: from mo4-p01-ob.smtp.rzone.de ([85.215.255.53]:17066 "EHLO mo4-p01-ob.smtp.rzone.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728212AbfJGUfT (ORCPT ); Mon, 7 Oct 2019 16:35:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1570480517; s=strato-dkim-0002; d=gerhold.net; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: X-RZG-CLASS-ID:X-RZG-AUTH:From:Subject:Sender; bh=A5om20rumI794pjDhtusHn5kv3KIEIljC6Kd+PxZ3mQ=; b=I0zZFlzuyCzVwOnhUVCjPHA5AgnNrFMAStCgGk4RpSTyy6a4EldFgxz8++Pt4a0d+6 5zo2WbX8GKVVN82QqlmxsZRDHwactNRis4MNTmKc+1vwsjfx3UnBdF2rs2o0byAKPmTA gD3c/E6tMtFPJP8Raqfq97vhCLkTHQ8v06GUFU8D8xIBRoIEfyMEnM5dg6Y+Np8/LDz4 Jd+DwpH2L/uItfBIw5FlZCPJSATl2jU529+pCzPta/+zV+YnxGgs4tj5KlHA1pwYx9/r yffvjXE3eex/uxtrRSmN6gTVCa7026Kt9cgZ58yjBbvCkwyKgEDk1pWKaCigQ63AWNbP 54BA== X-RZG-AUTH: ":P3gBZUipdd93FF5ZZvYFPugejmSTVR2nRPhVORvLd4SsytBXQrEOHTIXt87vtBtcfg==" X-RZG-CLASS-ID: mo00 Received: from localhost.localdomain by smtp.strato.de (RZmta 44.28.0 AUTH) with ESMTPSA id L0811cv97KZD45T (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (curve secp521r1 with 521 ECDH bits, eq. 15360 bits RSA)) (Client did not present a certificate); Mon, 7 Oct 2019 22:35:13 +0200 (CEST) From: Stephan Gerhold To: Dmitry Torokhov Cc: Andi Shyti , Andi Shyti , Simon Shields , linux-input@vger.kernel.org, Rob Herring , Mark Rutland , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Stephan Gerhold Subject: [PATCH 1/3] Input: mms114 - use device_get_match_data Date: Mon, 7 Oct 2019 22:33:41 +0200 Message-Id: <20191007203343.101466-2-stephan@gerhold.net> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191007203343.101466-1-stephan@gerhold.net> References: <20191007203343.101466-1-stephan@gerhold.net> MIME-Version: 1.0 Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org device_get_match_data is available now, so we can replace the call to of_device_get_match_data and remove the FIXME comment. Signed-off-by: Stephan Gerhold Reviewed-by: Andi Shyti --- drivers/input/touchscreen/mms114.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/input/touchscreen/mms114.c b/drivers/input/touchscreen/mms114.c index a5ab774da4cc..69c6d559eeb0 100644 --- a/drivers/input/touchscreen/mms114.c +++ b/drivers/input/touchscreen/mms114.c @@ -446,8 +446,7 @@ static int mms114_probe(struct i2c_client *client, data->client = client; data->input_dev = input_dev; - /* FIXME: switch to device_get_match_data() when available */ - match_data = of_device_get_match_data(&client->dev); + match_data = device_get_match_data(&client->dev); if (!match_data) return -EINVAL; From patchwork Mon Oct 7 20:33:42 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephan Gerhold X-Patchwork-Id: 11178503 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0026E76 for ; Mon, 7 Oct 2019 20:41:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 979902173B for ; Mon, 7 Oct 2019 20:41:13 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gerhold.net header.i=@gerhold.net header.b="tSQzyzLm" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728325AbfJGUlM (ORCPT ); Mon, 7 Oct 2019 16:41:12 -0400 Received: from mo4-p02-ob.smtp.rzone.de ([85.215.255.80]:31126 "EHLO mo4-p02-ob.smtp.rzone.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728187AbfJGUlM (ORCPT ); Mon, 7 Oct 2019 16:41:12 -0400 X-Greylist: delayed 360 seconds by postgrey-1.27 at vger.kernel.org; Mon, 07 Oct 2019 16:41:11 EDT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1570480870; s=strato-dkim-0002; d=gerhold.net; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: X-RZG-CLASS-ID:X-RZG-AUTH:From:Subject:Sender; bh=y8f+sYJ91TtDU2vlLy6NOO6jQnF4cVdmsVnnIDoLyiA=; b=tSQzyzLm+Fo00HDpoT/shtrZaJXvf+YCYrtHYnGmKRz7jmQ4yTOKk7f5B+cnpNTkMS IgQ56PznddGW9Lk80Be4NZc70MDQsKyEYzjnfkXbvjZfvwpKPj4iuYH0ybGtPKF7yd5f EU2a5RMA2XDkJT83nIWVlP55sde3nQ8nRcQtIdY6YGKlK2t1oyIU5LTMIU+5+5Ig8nBC Ilrn13Kz3s9H+h89vQnyrP+UXR8SMUFNBVa/gIFGX/sps6uoyUp7Pj1GzzOfz+rB1hU8 /8iKSR7w4lICTXq8ldcI6r7dwFoHTfRtokt85sjVsL8uLhv6hrljoqqWSLVs/6ol0ChS jXVA== X-RZG-AUTH: ":P3gBZUipdd93FF5ZZvYFPugejmSTVR2nRPhVORvLd4SsytBXQrEOHTIXt87vtBtcfg==" X-RZG-CLASS-ID: mo00 Received: from localhost.localdomain by smtp.strato.de (RZmta 44.28.0 AUTH) with ESMTPSA id L0811cv97KZF45U (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (curve secp521r1 with 521 ECDH bits, eq. 15360 bits RSA)) (Client did not present a certificate); Mon, 7 Oct 2019 22:35:15 +0200 (CEST) From: Stephan Gerhold To: Dmitry Torokhov Cc: Andi Shyti , Andi Shyti , Simon Shields , linux-input@vger.kernel.org, Rob Herring , Mark Rutland , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Stephan Gerhold Subject: [PATCH 2/3] dt-bindings: mms114: document melfas,mms345l binding Date: Mon, 7 Oct 2019 22:33:42 +0200 Message-Id: <20191007203343.101466-3-stephan@gerhold.net> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191007203343.101466-1-stephan@gerhold.net> References: <20191007203343.101466-1-stephan@gerhold.net> MIME-Version: 1.0 Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org The mms114 driver now supports MMS345L; document the melfas,mms345l binding that is used for it. Signed-off-by: Stephan Gerhold Reviewed-by: Andi Shyti Acked-by: Rob Herring --- Documentation/devicetree/bindings/input/touchscreen/mms114.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/input/touchscreen/mms114.txt b/Documentation/devicetree/bindings/input/touchscreen/mms114.txt index 2cd954051d29..707234cfd7e6 100644 --- a/Documentation/devicetree/bindings/input/touchscreen/mms114.txt +++ b/Documentation/devicetree/bindings/input/touchscreen/mms114.txt @@ -1,9 +1,10 @@ -* MELFAS MMS114/MMS152 touchscreen controller +* MELFAS MMS114/MMS152/MMS345L touchscreen controller Required properties: - compatible: should be one of: - "melfas,mms114" - "melfas,mms152" + - "melfas,mms345l" - reg: I2C address of the chip - interrupts: interrupt to which the chip is connected - touchscreen-size-x: See [1] From patchwork Mon Oct 7 20:50:21 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephan Gerhold X-Patchwork-Id: 11178515 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5A62017EE for ; Mon, 7 Oct 2019 20:51:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3BDA920835 for ; Mon, 7 Oct 2019 20:51:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gerhold.net header.i=@gerhold.net header.b="pKipmnx8" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728992AbfJGUvn (ORCPT ); Mon, 7 Oct 2019 16:51:43 -0400 Received: from mo4-p02-ob.smtp.rzone.de ([85.215.255.82]:13921 "EHLO mo4-p02-ob.smtp.rzone.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728364AbfJGUvn (ORCPT ); Mon, 7 Oct 2019 16:51:43 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1570481499; s=strato-dkim-0002; d=gerhold.net; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: X-RZG-CLASS-ID:X-RZG-AUTH:From:Subject:Sender; bh=lG37EiMG3oRtOya1hXARzRT8U1vSJoqjfvVsN9KdkNI=; b=pKipmnx8irt1FCKNqt/7+ou2zXyW3q3hMg6RIoiZWxv2N5Powp6dPjN1KBVU5Hcqpp eDCIbIH4bfpX6Wc32eTND6bQw5pqgmhg9Zs8WrFi8HjFXg98tvZn3J+WSv5UO/46uvoA S6WpdOosnjay7hfudjlJHpotGeDEwCP2r79nZStoahtqu6nrKzkxY28r1dfCeFKqVwa4 Vr/wXRDdrZPReE4nN/HOpmPOAJYuoVBhfnnDXV7OEH5VFBVz4Ej16rw9uQBt19Z6FMJF lZsTyPunQhc1a01laGtr4oEdJuzXIV+wNyw2uuvlDWrHlVLtPqJil/dJsc/FYRzA94Qa 8GJQ== X-RZG-AUTH: ":P3gBZUipdd93FF5ZZvYFPugejmSTVR2nRPhVORvLd4SsytBXQrEOHTIXt87vtBtcfg==" X-RZG-CLASS-ID: mo00 Received: from localhost.localdomain by smtp.strato.de (RZmta 44.28.0 AUTH) with ESMTPSA id L0811cv97KpX486 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (curve secp521r1 with 521 ECDH bits, eq. 15360 bits RSA)) (Client did not present a certificate); Mon, 7 Oct 2019 22:51:33 +0200 (CEST) From: Stephan Gerhold To: Dmitry Torokhov Cc: Andi Shyti , Simon Shields , linux-input@vger.kernel.org, Rob Herring , Mark Rutland , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Stephan Gerhold Subject: [PATCH 3/3] Input: mms114 - add support for mms345l Date: Mon, 7 Oct 2019 22:50:21 +0200 Message-Id: <20191007205021.104402-1-stephan@gerhold.net> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191007203343.101466-1-stephan@gerhold.net> References: <20191007203343.101466-1-stephan@gerhold.net> MIME-Version: 1.0 Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org MMS345L is another first generation touch screen from Melfas, which uses the same registers as MMS152. However, using I2C_M_NOSTART for it causes errors when reading: i2c i2c-0: sendbytes: NAK bailout. mms114 0-0048: __mms114_read_reg: i2c transfer failed (-5) The driver works fine as soon as I2C_M_NOSTART is removed. Add a separate melfas,mms345l binding, and make use of I2C_M_NOSTART only for MMS114 and MMS152. Signed-off-by: Stephan Gerhold Reviewed-by: Andi Shyti --- Note: I was not able to find a datasheet for any of the models, so this change is merely based on testing and comparison with the downstream driver [1]. There was a related patch [2] that removes I2C_M_NOSTART for all models, but it seems abandoned and I do not have any other model for testing. Therefore, this patch implements the least instrusive solution and only removes I2C_M_NOSTART for MMS345L. [1]: https://github.com/msm8916-mainline/android_kernel_qcom_msm8916/blob/SM-A500FU/drivers/input/touchscreen/mms300_a.c [2]: https://patchwork.kernel.org/patch/10189541/ --- drivers/input/touchscreen/mms114.c | 43 +++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/drivers/input/touchscreen/mms114.c b/drivers/input/touchscreen/mms114.c index 69c6d559eeb0..d9f45755d073 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 { @@ -91,9 +92,14 @@ static int __mms114_read_reg(struct mms114_data *data, unsigned int reg, if (reg <= MMS114_MODE_CONTROL && reg + len > MMS114_MODE_CONTROL) BUG(); - /* Write register: use repeated start */ + /* Write register */ xfer[0].addr = client->addr; - xfer[0].flags = I2C_M_TEN | I2C_M_NOSTART; + if (data->type != TYPE_MMS345L) + /* use repeated start */ + xfer[0].flags = I2C_M_TEN | I2C_M_NOSTART; + else + xfer[0].flags = client->flags & I2C_M_TEN; + xfer[0].len = 1; xfer[0].buf = &buf; @@ -250,6 +256,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 +302,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); @@ -425,11 +440,16 @@ static int mms114_probe(struct i2c_client *client, { struct mms114_data *data; struct input_dev *input_dev; - const void *match_data; + enum mms_type type; int error; - if (!i2c_check_functionality(client->adapter, - I2C_FUNC_PROTOCOL_MANGLING)) { + type = (enum mms_type)device_get_match_data(&client->dev); + if (!type) + return -EINVAL; + + if (type != TYPE_MMS345L && + !i2c_check_functionality(client->adapter, + I2C_FUNC_PROTOCOL_MANGLING)) { dev_err(&client->dev, "Need i2c bus that supports protocol mangling\n"); return -ENODEV; @@ -446,11 +466,7 @@ static int mms114_probe(struct i2c_client *client, data->client = client; data->input_dev = input_dev; - match_data = device_get_match_data(&client->dev); - if (!match_data) - return -EINVAL; - - data->type = (enum mms_type)match_data; + data->type = type; input_set_capability(input_dev, EV_ABS, ABS_MT_POSITION_X); input_set_capability(input_dev, EV_ABS, ABS_MT_POSITION_Y); @@ -599,6 +615,9 @@ static const struct of_device_id mms114_dt_match[] = { }, { .compatible = "melfas,mms152", .data = (void *)TYPE_MMS152, + }, { + .compatible = "melfas,mms345l", + .data = (void *)TYPE_MMS345L, }, { } };