Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp1016190pxb; Wed, 3 Nov 2021 16:43:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy3jXt1TGJSVIXWccTdHAGNnJ5Zm3B6zVbqB0W9wNFOKgAs/0BUpyif5RHx7pNc+3rfI1ch X-Received: by 2002:a05:6638:1687:: with SMTP id f7mr1192411jat.96.1635983034127; Wed, 03 Nov 2021 16:43:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635983034; cv=none; d=google.com; s=arc-20160816; b=G6R9ZHnyVyR4k86uUXh5PZTwUOmjb4tB15D6L2fZxIXfjlY4HoQraU0JnNot5d+veT yvRJOzTXHb1i+dBj+kU/nWs+Oa9J9K6mr7gtPI9bGlnVKfU2AZyrGIXeD/7XRYATbcnk HgRKqseWYWU4xHsIjCfgrpHHGC7Qc+3vuewKVaUQRLxcfIHuWYgbQitPnI2kZJi5kDG0 gfxGOBLaovqwnPd919ngcevLrcy6gNt6Ega+/2b+13IJlB8saBy4USoUMzRG7tSsNYr0 GCCHSESnJgzc8JZMN/HV/endCnYj034vXAxP/EeT+ZbQ75QCnboFc0HQ7yDbfjimqgIQ WFDg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=h29gM7Edy6vLtHykubE2EOJmPzM6wMTb8eMVyU/eFYE=; b=09mWCHLY27mSfNSgWy7Cm4xED1yY+vVPA9qwhjF2WRSm3u9ErHym027Jy5Dav8qE6J FSDFtd/Q9zQsWQH988O9LJ4Y9hEl6b86H/xQTF/0pBYhhrbhSzq2jMWZfMDDeFb03Czf d/Qv4r8NeQAczePFLL0I7LfwtKJsbDcNNSevAddLRDJJ8qRSVpmwN9WXBjGUQnkOWjoV kHAFpw/z5Ao4h44lfDVocyYfZeJ1/Q6PDWzHN3+vW1gc8/BbQEsRm7HNIU6bc67YEwMF cxkx+HmGATyYvOkGtfJ8Z7Ik8AyS0a+6OqXI0eDKfpEHEqs9YzfVndQ3fN5q/brsQ/xh 6R+Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=EKBq7zuZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l4si6416204jad.89.2021.11.03.16.43.39; Wed, 03 Nov 2021 16:43:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=EKBq7zuZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229948AbhKCXnF (ORCPT + 99 others); Wed, 3 Nov 2021 19:43:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42436 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229561AbhKCXnF (ORCPT ); Wed, 3 Nov 2021 19:43:05 -0400 Received: from mail-pl1-x62c.google.com (mail-pl1-x62c.google.com [IPv6:2607:f8b0:4864:20::62c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2DA8EC061714 for ; Wed, 3 Nov 2021 16:40:28 -0700 (PDT) Received: by mail-pl1-x62c.google.com with SMTP id u17so4174854plg.9 for ; Wed, 03 Nov 2021 16:40:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=h29gM7Edy6vLtHykubE2EOJmPzM6wMTb8eMVyU/eFYE=; b=EKBq7zuZioawowrHgnbn8nDEPEgxFsN+8IzKYZ1DFSblRd9o95aQr7V3qDl6+Rvs6U jhur7uPRIVdgQk5dvuuZVjl+0kshlBwghkKpob4bwbfvPBHyszsWfI64Og2MKXG1n71F oaX41A5YNhCrqinehnJDHuuOGij5giULBMcZ8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=h29gM7Edy6vLtHykubE2EOJmPzM6wMTb8eMVyU/eFYE=; b=tsGsRLsnhMf4HWRmESkVCXnikoj1flEMzYao0LiRajg8KkKDbBnwCg9vvBtm0eQgr5 5l8wnz78of9G6r5X+CU36cEhipOui7MZRd17k5NlBMLnryrudV256MSHTKtAdPhdDDrP dS9T+DC7ZbQZpiILzrbOXCq7HuIVRX4g0IyQzZ91Xbas5lN7/mfbwFk15YHoGZYUGSZz fJZD9qXp5/KFWYY8Yr1ML1uSt4uB/DpGn+nzTDboGabIiShUZzbZRx9Ksolrsl8A2Grl GEO37syKCKvKEWjzcy7sAP/0CHenF2LLvHxjb8lFiCzOO4gwRnUlXXw7E0asp1fVeAyi 0aBw== X-Gm-Message-State: AOAM533u6uy1dpse2oFx/WnJoKhc5BivnxL2r1W9K7kJ/iedztaChfWL aE0FqjrKJgQyr8P4bbdvnrAdjg== X-Received: by 2002:a17:902:7892:b0:140:283:6683 with SMTP id q18-20020a170902789200b0014002836683mr41176310pll.19.1635982827749; Wed, 03 Nov 2021 16:40:27 -0700 (PDT) Received: from localhost ([2620:15c:202:201:49a7:f0ba:24b0:bc39]) by smtp.gmail.com with UTF8SMTPSA id n126sm3391952pfn.6.2021.11.03.16.40.26 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 03 Nov 2021 16:40:27 -0700 (PDT) From: Brian Norris To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann Cc: Andrzej Hajda , Dmitry Torokhov , linux-kernel@vger.kernel.org, linux-input@vger.kernel.org, David Airlie , linux-rockchip@lists.infradead.org, "Kristian H . Kristensen" , Doug Anderson , Rob Clark , Rob Clark , Daniel Vetter , Brian Norris Subject: [PATCH 0/2] drm: Support input-boosted panel self-refresh exit Date: Wed, 3 Nov 2021 16:40:16 -0700 Message-Id: <20211103234018.4009771-1-briannorris@chromium.org> X-Mailer: git-send-email 2.34.0.rc0.344.g81b53c2807-goog MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org A variety of applications have found it useful to listen to user-initiated input events to make decisions within a DRM driver, given that input events are often the first sign that we're going to start doing latency-sensitive activities: * Panel self-refresh: software-directed self-refresh (e.g., with Rockchip eDP) is especially latency sensitive. In some cases, it can take 10s of milliseconds for a panel to exit self-refresh, which can be noticeable. Rockchip RK3399 Chrome OS systems have always shipped with an input_handler boost, that preemptively exits self-refresh whenever there is input activity. * GPU drivers: on GPU-accelerated desktop systems, we may need to render new frames immediately after user activity. Powering up the GPU can take enough time that it is worthwhile to start this process as soon as there is input activity. Many Chrome OS systems also ship with an input_handler boost that powers up the GPU. I implement the first bullet in this series, and I also compared with some out-of-tree patches for the second, to ensure this could be useful there too. Past work on upstreaming a variety of Chromebook display patches got held up for this particular feature, as there was some desire to make it a bit more generic, for one. See the latest here: https://lore.kernel.org/all/20180405095000.9756-25-enric.balletbo@collabora.com/ [PATCH v6 24/30] drm/rockchip: Disable PSR on input events I significantly rewrote this to adapt it to the new common drm_self_refresh_helpers and to add a new drm_input_helper thin library, so I only carry my own authorship on this series. Admittedly, this "drm_input_helper" library is barely DRM-specific at all, except that all display- and GPU-related input-watchers are likely to want to watch similar device behavior (unlike, say, rfkill or led input_handler code). If we find other applications need the same behavior outside of drivers/gpu/drm/, maybe this could find a home elsewhere. Brian Norris (2): drm/input_helper: Add new input-handling helper drm/self_refresh: Disable self-refresh on input events drivers/gpu/drm/Makefile | 3 +- drivers/gpu/drm/drm_input_helper.c | 143 ++++++++++++++++++++++ drivers/gpu/drm/drm_self_refresh_helper.c | 54 +++++++- include/drm/drm_input_helper.h | 22 ++++ 4 files changed, 215 insertions(+), 7 deletions(-) create mode 100644 drivers/gpu/drm/drm_input_helper.c create mode 100644 include/drm/drm_input_helper.h -- 2.34.0.rc0.344.g81b53c2807-goog