From patchwork Wed Nov 6 07:01:42 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Jiada" X-Patchwork-Id: 11229467 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 1E89915AB for ; Wed, 6 Nov 2019 07:04:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id F066D218AE for ; Wed, 6 Nov 2019 07:04:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731792AbfKFHEk (ORCPT ); Wed, 6 Nov 2019 02:04:40 -0500 Received: from esa3.mentor.iphmx.com ([68.232.137.180]:8813 "EHLO esa3.mentor.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728291AbfKFHEj (ORCPT ); Wed, 6 Nov 2019 02:04:39 -0500 IronPort-SDR: H5CkumVVwTxnMNTOSTGsjo4zaRRIOCrQk0mm2jvPL9US3EfAHevywHcM4lFCb0xYfJBzVF4R2U 5m2TUED5cNpCYHyFo8LiZP6y1eVM/MTbNtY3cy26k82xsEtXAbjc+Jqx7mZ6Gb/Rhq1jWkLOoU F5wHoeSqU0UX+ZYbu5vYpzqpZs1pxAyIQN236niTIzk/k8xtUSGnbylPTnH1I4J7pn5cQ73hCt FkDVozeP4pOUCCzXEr8JSeEj/ip5jSDz+g03Qc0bgdKOSle7QXfHuXBlbJhON5AlRDrCBk4mSm A84= X-IronPort-AV: E=Sophos;i="5.68,272,1569312000"; d="scan'208";a="42908683" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa3.mentor.iphmx.com with ESMTP; 05 Nov 2019 23:04:39 -0800 IronPort-SDR: o9WqDUBekUtrfogQ/c3SA2aM3ppEp7hx/brnKXyTQd68z7Vb3rWMQXqfSTxcAbmVi/5sAsbale 30b7e1LKiz07q7FxoKeNohZyHFQ2wZ3fJTlWQvdui33pgZ4AnT6zVvXLsD/6z0G09DK0wppu5U ajv8l7OKdIYcJc7pE8bVrSZgU3rruRIJ674oyAnZy386YeUqTpWoYJDGgVeth1uc5XJN0wx9Ki tZVYJ0Kq1cRMXYAeqqfSapbgy8J3ubXVUkI8V1USMOT/z2ZAgaZaWvmxBDxNw3sN8Ss8XKMsiZ DKM= From: Jiada Wang To: , , , , CC: , , , , Subject: [PATCH v5 44/48] Input: atmel_mxt_ts: use gpiod_set_value_cansleep for reset pin Date: Wed, 6 Nov 2019 16:01:42 +0900 Message-ID: <20191106070146.18759-45-jiada_wang@mentor.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191106070146.18759-1-jiada_wang@mentor.com> References: <20191106070146.18759-1-jiada_wang@mentor.com> MIME-Version: 1.0 Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org From: Balasubramani Vivekanandan In case of remote display, touch controller will be also remote. In such cases, the reset pin of the touch controller will be controlled through bridging ICs like Deserilizer and Serializer. Therefore accessing the gpio pins require transactions with the external IC. Using the function gpiod_set_value will print a warning like below WARNING: CPU: 0 PID: 576 at drivers/gpio/gpiolib.c:1441 gpiod_set_value+0x34/0x60() CPU: 0 PID: 576 Comm: modprobe Not tainted 3.14.79-08377-g84ea22f-dirty #4 Backtrace: [<80011c58>] (dump_backtrace) from [<80011e60>] (show_stack+0x18/0x1c) [<80011e48>] (show_stack) from [<8052d7ac>] (dump_stack+0x7c/0x9c) [<8052d730>] (dump_stack) from [<800241bc>] (warn_slowpath_common+0x74/0x9c) [<80024148>] (warn_slowpath_common) from [<80024288>] (warn_slowpath_null+0x24/0x2c) [<80024264>] (warn_slowpath_null) from [<8029e070>] (gpiod_set_value+0x34/0x60) [<8029e03c>] (gpiod_set_value) from [<7f492e98>] (mxt_probe+0x1e0/0x718 [atmel_mxt_ts]) [<7f492cb8>] (mxt_probe [atmel_mxt_ts]) from [<803c4d34>] (i2c_device_probe+0xcc/0xec) [<803c4c68>] (i2c_device_probe) from [<803252a0>] (driver_probe_device+0xc0/0x200) Signed-off-by: Balasubramani Vivekanandan Signed-off-by: Vladimir Zapolskiy Signed-off-by: Sanjeev Chugh Signed-off-by: George G. Davis Signed-off-by: Jiada Wang --- drivers/input/touchscreen/atmel_mxt_ts.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c index 0e4a870fafa5..78903806c0b4 100644 --- a/drivers/input/touchscreen/atmel_mxt_ts.c +++ b/drivers/input/touchscreen/atmel_mxt_ts.c @@ -2490,7 +2490,7 @@ static void mxt_regulator_enable(struct mxt_data *data) if (!data->reg_vdd || !data->reg_avdd) return; - gpiod_set_value(data->reset_gpio, 0); + gpiod_set_value_cansleep(data->reset_gpio, 0); error = regulator_enable(data->reg_vdd); if (error) @@ -2508,7 +2508,7 @@ static void mxt_regulator_enable(struct mxt_data *data) * voltage */ msleep(MXT_REGULATOR_DELAY); - gpiod_set_value(data->reset_gpio, 1); + gpiod_set_value_cansleep(data->reset_gpio, 1); msleep(MXT_CHG_DELAY); retry_wait: @@ -4313,7 +4313,7 @@ static int mxt_probe(struct i2c_client *client, const struct i2c_device_id *id) disable_irq(data->irq); } else if (data->reset_gpio) { msleep(MXT_RESET_GPIO_TIME); - gpiod_set_value(data->reset_gpio, 1); + gpiod_set_value_cansleep(data->reset_gpio, 1); msleep(MXT_RESET_INVALID_CHG); } else { dev_dbg(&client->dev,