From patchwork Fri Feb 9 08:45:42 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Eichenberger X-Patchwork-Id: 771426 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 579B42EB14; Fri, 9 Feb 2024 08:46:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707468419; cv=none; b=kiuD0ce4D4C5RQW2n5hD4gb7qnRrZw8C2nzfQWsCbw8wHc+KVrx1e90Cm3D/giIam9i+DX7s5AFwv4M9Bpm+tu4bA4909/Ru+u5GLclHHbWq/gnLto4n+sAEN8Wi0/9HeIuKbXlYCwjl4lk5958C1vL2lpWJ91slohmX8/e+75Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707468419; c=relaxed/simple; bh=t0Yp1kY6qtM37V8D5tGl8e+xZzRSxjruApL0YIVR4Cs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ivat/Uq+yN7HlKrYKnELoOW7jYZX7sXHx9Uqh529HQdJB2ZcGjS54oe3kHY5U+7tKOzJmwBDqfN1a2DAfJMcJYF280MRjWxyMNIo0Lr8mWnD8GjPbjnZJGZLYhB1Xokc7EpC3xtM842zsA5gp2FwqPnoLcRia3xQw9A2bw8Lqhg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=X29U9gWW; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="X29U9gWW" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-410475afeddso5600925e9.2; Fri, 09 Feb 2024 00:46:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1707468415; x=1708073215; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SZwRK1DevWHs7TSy/8l1VCGmE7RT9MSmuvvOPNO04ZE=; b=X29U9gWWLn2orGThnWfo+UrF6OMVffIXUBvkC/UGiwxKavmej+ris6RrYMxbiq9BAM 65BnwveUQqcpMFBp6FFM9UagPS/fOOKg1g8dhjVS48la5qX0GrACqZwcDst5mDv/i+as x7XNzSyF+iGKqmhlpDfehnh2vhMV2iqOl2HWM+t4BQiBD1oZyo7a+GlB660s/jwHwIeo ++1YXzoQn3hnun7LBQ+B3kXPB8meCyAWxhzE1P/GFgkWWnNmzdh0fTLLxBChWB8oNpAr z/CiDokxez3vBo0dax9m105bKKMOM/OljIv2AXKLopDP4mvc9/+WxpRLp6IEsILlxcAi 7SGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707468415; x=1708073215; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SZwRK1DevWHs7TSy/8l1VCGmE7RT9MSmuvvOPNO04ZE=; b=sHv/67BQkFe9i+6gmbe7kKX3icb1lN3urtOOgUC4nt9VlXL4Ma3c6gZO0AQ5+15xQW g4q2e7UtuYp+ZpsfwT4WAq5b94GjzxBDRsAgWazvAbap3QYgI8vPKKw2QxEPlAzmot2t rs9kyP5JgjyIflulO+qBLUVxT4/BUoEUZig3TZQfSDd7GGXWUkaqKAysUnF1ktERb2aE hnRsTnOJ5oWsqVg/7f7tNX/F8wCH+zvbLMoK6j9o/YjNowY0e9/izBzuFF1rLhtw7BZn F8G9zHs3OvEmN4s7kdV6wiisMyZStHd6wDnIJdRWpRkLx10Ky9WD0j+lqtlaq9Trqakq X/DQ== X-Gm-Message-State: AOJu0YzT/8T/UywGe7tLu45ICvQX6ZA3dlmaMvc5mrBapeWdVaIiIt5t A7mCQZwGlHvwkwlC0bgMHjHlgtdv8yUZp0A8tsD02nglD52PcJQe X-Google-Smtp-Source: AGHT+IG6ikGOM0+y1lKrtnzXUToQ3aaz7wu2SFc4d/jW8z2QjNHbwXPT9alpt+r7RAQlQ4i/3SKawQ== X-Received: by 2002:a5d:5228:0:b0:33b:3b89:8d14 with SMTP id i8-20020a5d5228000000b0033b3b898d14mr581050wra.25.1707468415289; Fri, 09 Feb 2024 00:46:55 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCUXxTSxu/ibSAf6MK8BKw2R4lYZ3VbtkfpeAI+hSXAARmY98rCaubF3pJN7kgShEFp2iEZ4ENk/IpO0PnMQsTHy0vhcGuxX+rcQrtjav2h3a3yOrPfnSkmbzIJIijatZkq95L4I26q/evTKtCGQximYErEbbzXa+tcSr9y1MKBwGC6/hOS16LcAH8ZWspvnX9ANg0MiX7KuOR83BzttLzlECiY5xuDmuvqkUc+KcsgyLJLUqddN0Bol5E35XOPPCM17pfo6e6UkgOqkUYhMJ0IxwPJxTS0fHQUe1hQ7mhiiLFAPQ1qMK5yN1OL1F16vwIqdnTexgdZt0flYYOyM3w2rgekbgRyJ2+HCjSopLOSc3ZzQxAZYOMhj9BQ54xEniJyRtoh2OPpwNrcKJGvYFLkQrMEfTAO3XbcJikaDP4CP90HZavXlBL7yjNORIQonJj7uJhUVL2RzEhvr2Xwnl7emCdmuMFpkapg1tG1S5sE1djmIFUUURshF3KSbhyUMYXrHMjAomPkvUifTImH2fSGUlCSCNfMItCc3tvf7arqCicvlCieTZYoihn+Kd8OuQq8jEka5Z14WSgu5qVFBlR+vbXkHfYk= Received: from eichest-laptop.toradex.int ([2a02:168:af72:0:765:2268:762e:2748]) by smtp.gmail.com with ESMTPSA id y6-20020adfee06000000b0033b3cf1ff09sm1236689wrn.29.2024.02.09.00.46.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Feb 2024 00:46:55 -0800 (PST) From: Stefan Eichenberger To: nick@shmanahar.org, dmitry.torokhov@gmail.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, nicolas.ferre@microchip.com, alexandre.belloni@bootlin.com, claudiu.beznea@tuxon.dev, linus.walleij@linaro.org Cc: linux-input@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, francesco.dolcini@toradex.com, Stefan Eichenberger , Krzysztof Kozlowski Subject: [PATCH v3 1/2] dt-bindings: input: atmel, maxtouch: add poweroff-sleep property Date: Fri, 9 Feb 2024 09:45:42 +0100 Message-Id: <20240209084543.14726-2-eichest@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20240209084543.14726-1-eichest@gmail.com> References: <20240209084543.14726-1-eichest@gmail.com> Precedence: bulk X-Mailing-List: linux-input@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Stefan Eichenberger Add a new property to indicate that the device should power off rather than use deep sleep. Deep sleep is a feature of the controller that expects the controller to remain powered in suspend. However, if a display shares its regulator with the touch controller, we may want to do a power off so that the display and touch controller do not use any power. Signed-off-by: Stefan Eichenberger Reviewed-by: Linus Walleij Reviewed-by: Krzysztof Kozlowski --- Documentation/devicetree/bindings/input/atmel,maxtouch.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Documentation/devicetree/bindings/input/atmel,maxtouch.yaml b/Documentation/devicetree/bindings/input/atmel,maxtouch.yaml index c40799355ed7..8de5f539b30e 100644 --- a/Documentation/devicetree/bindings/input/atmel,maxtouch.yaml +++ b/Documentation/devicetree/bindings/input/atmel,maxtouch.yaml @@ -87,6 +87,12 @@ properties: - 2 # ATMEL_MXT_WAKEUP_GPIO default: 0 + atmel,poweroff-sleep: + description: | + Instead of using the deep sleep feature of the maXTouch controller, + poweroff the regulators. + type: boolean + wakeup-source: type: boolean From patchwork Fri Feb 9 08:48:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Eichenberger X-Patchwork-Id: 771425 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8BA7865BDD; Fri, 9 Feb 2024 08:48:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707468506; cv=none; b=g/L9j/HQvQLetZPgpdNGdN4y+KcVbzNMPv+zwuI1gfR9IGe748HLH/UR/MbKxnmraELZZWa3OSy2kdJl6sM4kB2wqYewICLsrFOVK0IfgipZ4CTdUfB27kPCkJsW1WzEVzouwxyudsygeEARRK5Wg5hw7imKZ7NkKs/cdt9/oY4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707468506; c=relaxed/simple; bh=FACvZGCzZd/Mj3qjKO44p5hHKQ4QqwarXOST8mlvQ/U=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=o4SwgLrD3lElRgDFpCij+iJZsRdkGzUWmf3FvlnKwNOlCWUKipawnnebDJHRWP74YJxjFWP5PN48aak4FXHa+Gkcs1u8RQTjoTEo1OQO8WlX3C2/N209eWDStZ52AykXV+rvXJ76/s7QX9uR/T/zVsMc1mI5/dFZLJHoZezW9l0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=V9vkI6md; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="V9vkI6md" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-41071e85659so1586215e9.1; Fri, 09 Feb 2024 00:48:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1707468502; x=1708073302; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=mVc4M1YbGvNb8ipoFp9BUg+QNpL61/sf2CwDTAOM2wc=; b=V9vkI6mdGUHE6/sa1BPVoJECys3C+YvQPCVARyXGzM0JBVXLhyVjhduX85VxE2nMZE qUsrW+rCY+YpBkvcSlex08cC/3v3RJzZtBOlH6GtawaCDMfqvlDyW7RVwfvnPBGwVfWf AV6XirBzHBCF1DEl/M5n6KwoZ8qIqwVqnSUtmkXbLmThglo9c1ple5fernuORbZBrKrN O6ZTPDujmswnZD3OlbVfshdWVexahIIdyoTCxPNGLfujddYXxb5+0/DnMy1+I9Yr12bP wK7M49hiew2QYRKaJfyrxV1NvlpkmXegM5KOrIQMYflmh7rnbpuEUTyGszSEb+oVt9ka DzTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707468502; x=1708073302; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=mVc4M1YbGvNb8ipoFp9BUg+QNpL61/sf2CwDTAOM2wc=; b=Lus9e8UJ18oM+WxoIhgMcKUlobPcE2V6IMsZUUZs1MnOaB0DsnC4M3XuGiyMBN87kY yqeM6DTZL5E0utyG9a3y4TwUP1lXWg2QJSuHr37tRpztG5mQXnykLoU1zyf98t2sezFx JfsI+OegFQsNje23jw2Wa0dm23vI87IjwX2nEVIOCoZ93al4Hcn1k5+qJpCjSCs8p5kE tPtcrSXkVR+dHVWIXhPH67FHQc8SrR91H/ibvcp/5yEDivcBLA+WOlpQts5OURv7oPYp bKdzw0UDncL7RFp4KtV+klcxntyuSMSaGBljKNIuNPXNYt59IyXNMoOsa91PMSq2EuDt OSXg== X-Forwarded-Encrypted: i=1; AJvYcCV8r/03X49cLqnx8puAHT09DzzGyZTyUHjz5h2b2fuJaW9eIwif8oI8Gilvc56rrke9U5YJj1+buNNUzhkgpSK8v2Ib03ka5n/FbO0LaLvp7TiifCu0PChwmYzuwYEiw7F2YVTtGbISBQ== X-Gm-Message-State: AOJu0YzGqyhXkAI/pfYiGdr4Fa0flgto2BFwYc3cnb7uA5niHnFb4BN0 QvBqh2J7lVjDj3O8k3M5DS/Qizwlfnf3/TKxSuNjMTORZ83GiJ0c X-Google-Smtp-Source: AGHT+IHuxdHaNTj7uUg4YZXvHOqK3J6+QqpObkDOjVG7/rLFtq6TckteUGsRtSTTw5jPMArfUD8fuw== X-Received: by 2002:a05:600c:4587:b0:410:5f2f:ba24 with SMTP id r7-20020a05600c458700b004105f2fba24mr654283wmo.36.1707468502203; Fri, 09 Feb 2024 00:48:22 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCU2Tiy+O6M8HnHHpdnhfaYBO9GDILs3PraxayUeInXD/FQNeVFFqDpP9cvIj2VDvLQpSL16hHaq6NYgiQl0xiku68jJZbUarnWIm5Uynd8AG0ziwiKLLN3zrvxEUFLKpG8sqzBN6V2PDK+8EYt/qLcxXjG2oNtyLchDkKFY84igUAOzKxZknzNbc88edXa2cVEim4RkUH4J4ubb8vREvigKjR2p/uE9uB0eOlV6u+A3nhk2f0ocOonK1UhkpVZ3a8BMs5lhgj9WSC1KX8ozVQKG8E1NGcNNSQOWO7MP4FTh2oUPV4Id2iKS3vXAm7tzaHj96tqcnj2x+veWjUBi736aRC3MRlm0y4VCkjEVt32esUhvHf+cEWVmKwrrGbOyrFY+onnWKAaWy/PepFKcIQPQHQAqQOvLDfCvGL8XgqCplOIZIe5HhlDImUDvD5hi7miShnN9DHXVaDDMcWSv89azzDowpFofhCLe/SY0ebvBk0nWsvHXDAngFWgSKN+2wcJsDSRU5ozb7eM+F+qY4CQwKB1roiAA9l6q0rx/CzU4oARbeRz3 Received: from eichest-laptop.toradex.int ([2a02:168:af72:0:765:2268:762e:2748]) by smtp.gmail.com with ESMTPSA id e13-20020a05600c4e4d00b0040fdb244485sm1897494wmq.40.2024.02.09.00.48.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Feb 2024 00:48:21 -0800 (PST) From: Stefan Eichenberger To: nick@shmanahar.org, dmitry.torokhov@gmail.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, nicolas.ferre@microchip.com, alexandre.belloni@bootlin.com, claudiu.beznea@tuxon.dev, linus.walleij@linaro.org Cc: linux-input@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, francesco.dolcini@toradex.com, Stefan Eichenberger Subject: [PATCH v3 2/2] Input: atmel_mxt_ts - support poweroff in suspend Date: Fri, 9 Feb 2024 09:48:18 +0100 Message-Id: <20240209084818.14925-1-eichest@gmail.com> X-Mailer: git-send-email 2.40.1 Precedence: bulk X-Mailing-List: linux-input@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Stefan Eichenberger Add a new device tree property to indicate that the device should be powered off in suspend mode. We have a shared regulator that powers the display, a USB hub and some other peripherals. The maXTouch controller doesn't normally disable the regulator in suspend mode, so our extra peripherals stay powered on. This is not desirable as it consumes more power. With this patch we add the option to disable the regulator in suspend mode for the maXTouch and accept the longer initialisation time. Signed-off-by: Stefan Eichenberger --- drivers/input/touchscreen/atmel_mxt_ts.c | 72 ++++++++++++++++++------ 1 file changed, 55 insertions(+), 17 deletions(-) diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c index 542a31448c8f..2d5655385702 100644 --- a/drivers/input/touchscreen/atmel_mxt_ts.c +++ b/drivers/input/touchscreen/atmel_mxt_ts.c @@ -317,6 +317,7 @@ struct mxt_data { struct gpio_desc *reset_gpio; struct gpio_desc *wake_gpio; bool use_retrigen_workaround; + bool poweroff_sleep; /* Cached parameters from object table */ u16 T5_address; @@ -2799,15 +2800,18 @@ static int mxt_configure_objects(struct mxt_data *data, dev_warn(dev, "Error %d updating config\n", error); } - if (data->multitouch) { - error = mxt_initialize_input_device(data); - if (error) - return error; - } else { - dev_warn(dev, "No touch object detected\n"); - } + /* If input device is not already registered */ + if (!data->input_dev) { + if (data->multitouch) { + error = mxt_initialize_input_device(data); + if (error) + return error; + } else { + dev_warn(dev, "No touch object detected\n"); + } - mxt_debug_init(data); + mxt_debug_init(data); + } return 0; } @@ -3325,6 +3329,8 @@ static int mxt_probe(struct i2c_client *client) msleep(MXT_RESET_INVALID_CHG); } + data->poweroff_sleep = device_property_read_bool(&client->dev, + "atmel,poweroff-sleep"); /* * Controllers like mXT1386 have a dedicated WAKE line that could be * connected to a GPIO or to I2C SCL pin, or permanently asserted low. @@ -3387,12 +3393,21 @@ static int mxt_suspend(struct device *dev) if (!input_dev) return 0; - mutex_lock(&input_dev->mutex); + if (!device_may_wakeup(dev) && data->poweroff_sleep) { + if (data->reset_gpio) + gpiod_set_value(data->reset_gpio, 1); - if (input_device_enabled(input_dev)) - mxt_stop(data); + regulator_bulk_disable(ARRAY_SIZE(data->regulators), + data->regulators); + data->T44_address = 0; + } else { + mutex_lock(&input_dev->mutex); + + if (input_device_enabled(input_dev)) + mxt_stop(data); - mutex_unlock(&input_dev->mutex); + mutex_unlock(&input_dev->mutex); + } disable_irq(data->irq); @@ -3408,14 +3423,37 @@ static int mxt_resume(struct device *dev) if (!input_dev) return 0; - enable_irq(data->irq); + if (!device_may_wakeup(dev) && data->poweroff_sleep) { + int ret; - mutex_lock(&input_dev->mutex); + ret = regulator_bulk_enable(ARRAY_SIZE(data->regulators), + data->regulators); + if (ret) { + dev_err(dev, "failed to enable regulators: %d\n", + ret); + return ret; + } + msleep(MXT_BACKUP_TIME); - if (input_device_enabled(input_dev)) - mxt_start(data); + if (data->reset_gpio) { + /* Wait a while and then de-assert the RESET GPIO line */ + msleep(MXT_RESET_GPIO_TIME); + gpiod_set_value(data->reset_gpio, 0); + msleep(MXT_RESET_INVALID_CHG); + } - mutex_unlock(&input_dev->mutex); + /* This also enables the irq again */ + mxt_initialize(data); + } else { + enable_irq(data->irq); + + mutex_lock(&input_dev->mutex); + + if (input_device_enabled(input_dev)) + mxt_start(data); + + mutex_unlock(&input_dev->mutex); + } return 0; }