From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) (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 D82251E8332 for ; Tue, 25 Aug 2026 04:33:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.41 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787632413; cv=none; b=YcaHAzQETZZJh3RLq413Sx7vgorCzAUkdqgffHU9vwaT2VkVu19f3uiWp5yZzJzMZh6BAF2xE2Idoo7Zg2yUT0lBGEBNl4u1c/HVDN8YXgrPQC8wm8lDbPagVoq8Jm8WLOvFoH4D0YRPGThLLpgn3VsRxxYIrDTIpfOQAqgl7ng= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787632413; c=relaxed/simple; bh=naC7PasILh7V9am2ebalC0RbUKLTLStW+MGCGU/CcoE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=pWtO3MujIYpa6lC9Onn9s70NARKo3KLHv7ghTjMGvkNokfngCxHFoPHenB1tWfcguJ4Glf4S7S/3g6B8pHHEKSHif60+Uqi1VTY+AcHSxBdbrNKNIZRAQKSyUYAtb7au/jXKA4CDByImbH8EJmETP81AodUYhxLT1IWVi/Pjr1k= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=Y7/B5QMb; arc=none smtp.client-ip=209.85.216.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="Y7/B5QMb" Received: by mail-pj1-f41.google.com with SMTP id 98e67ed59e1d1-3964dfb5a69so393152a91.1 for ; Mon, 24 Aug 2026 21:33:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1787632410; x=1788237210; 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:content-type; bh=hJaZXX8cNoxV0uNCu7A5Ojv5p0WSmZqW9OZzrJevJb8=; b=Y7/B5QMb+bCNmBRydiHDAb0sTpa1MQeSmvK9vTYEJL9T+vmFeszFsm2P6YpK5bLwxA +Qsl6cXxJP6rNA5DBC361ITOjnWz6K59fH+gtkOf5u154BkIDnljl1yEQxUVL5hddrRq lgM+KFcHWuLXdUGm/1TG4b++LO/416pGprfrQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787632410; x=1788237210; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=hJaZXX8cNoxV0uNCu7A5Ojv5p0WSmZqW9OZzrJevJb8=; b=cG4Yi9iPkSb14WxM22AQ4wXbZ4yfWH5Ek1nJYCxKwyKyZTXdaryrZzI1h5M2iVf3/s pHmc4/sVh4b1lL/ofdLsBRkpsZQ2Pyoni5em7gDWekKFNV+1btXLC7ntTgh05WCIsRXO MM59L3b/v5lqfHY5O3dZzACVem7a5pXfUWrxccsOA37M5lR2uX2U2QM/anoZxe15/0zK 0a1XNmusT054MKQ0iPsm41KGXHBcqik/0aA2eQb3rsc9iFk0XqRAoK3A1je8ADfA+wL1 FbvDuhVzZmchIyZ3fb2gpvc1rzAsEirfM5aJ+DG7VplspplaQoBlSMUy4BNsp9r8LH7e ECig== X-Forwarded-Encrypted: i=1; AHgh+Rq4ugOfgRkZ8atVWqyCPw+wfiCAtGr6bljp2rgRzMnjqyhwJLG9nfA3ER9deR41VdAzt96bO7IfKzQb@vger.kernel.org X-Gm-Message-State: AFuF++kXxptvtgpiIQu2ZGzWRDnrbEdOrTfyhZjpfRefWbBHiPZ1ciVQ o4wfhdBz5KOKPdq/M1xEjjD4LumtlrUidgWFO80+OLnJ1nIKW0t0fQlIEWyPiYSxFw== X-Gm-Gg: AR+sD13p/rpo7GYTnVmm1B2TCUfW57uY9vC/+AHhFkq6qNfQAUGYk9LmPZZagxmTya9 U6J1yaEPFjxSWJrqDbJJ7YGH3AjCnydtTfF20WgpoBFNUG2xJC0lSKyKhq5e+99RaizbxzA+kRQ UC8vrgM+FZyU8PtWMeJnC6odbqEiCb7IJ9F3YVzC1uKJq49yNcW1kBrSZlG3cwVsQbWjEIxGBnS ZRYZHCUKhi+N39ZpivmM7scfWUMedXtLrGDufH1Vu5YLEUHuEfwdbwdgQcuscN7lhzk2vYSwg+W D82cL2D7OhSWzMKLaUu7LUjWv4bGYG1vKPjm0ixkVUm8Lqx/GOsRFOJLURS1hTwtdo++WOfW3Zj v8uPtds8jTWzq/4lX/37IBlXPog+0OzSATaz68nNIiyEQRHTfBISW89ghgFzjAR6ltjAKgmWGUJ GBrcY/XETj9k/EYm0M0ANMjUgGVVxoPgKcQ3XJ2RxQRSHU4Pqh+7sFsxA9vhxj8dRhxlDuMyHRh Kjd9qosFIQByO2BZOT/I7phb0wtrILdorivyTFwAvn0aBM= X-Received: by 2002:a17:90b:1b04:b0:38d:dfd1:7c1 with SMTP id 98e67ed59e1d1-395c33406e0mr52907259a91.2.1787632409907; Mon, 24 Aug 2026 21:33:29 -0700 (PDT) Received: from wenst-7875.tpe.corp.google.com ([2a00:79e0:201d:8:a442:9780:24da:cb4e]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-396458212absm2187823a91.0.2026.08.24.21.33.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 21:33:29 -0700 (PDT) From: Chen-Yu Tsai To: Mark Brown , Matthias Brugger , AngeloGioacchino Del Regno , Dmitry Torokhov , Jiri Kosina , Andi Shyti Cc: Chen-Yu Tsai , Benson Leung , Tzung-Bi Shih , linux-mediatek@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, chrome-platform@lists.linux.dev, linux-input@vger.kernel.org, linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 0/7] arm64: mediatek: Chromebook trackpad supply fixes Date: Tue, 25 Aug 2026 12:16:18 +0800 Message-ID: <20260825041628.988369-1-wenst@chromium.org> X-Mailer: git-send-email 2.55.0.860.g4b6b3295ed-goog Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Hi everyone, This is v5 of my Chromebook trackpad supply fixes and optimization series. Changes since v4: - Made regulator core try to set last_on timestamp for regulators that were left on by reset default or firmware, but not enabled in kernel - Dropped two patches that were merged - Link to v4: https://lore.kernel.org/all/20260811122011.3539250-1-wenst@chromium.org/ Changes since v3: - Added __private modified to regulator_bulk_data.wait_us field and switched to ACCESS_PRIVATE accessor for the field (Andy) - Moved wait outside regulator lock scope (Sashiko) - Moved "remaining" value assignment closer to conditional (Andy) - Fixed variable unit name in regulator_enable_and_wait() prototype (Andy, Sashiko) - Added commit message section showing average delay needed for I2C prober (patch 6) (Andy) - Link to v3: https://lore.kernel.org/all/20260721075226.2347933-1-wenst@chromium.org/ Changes since v2: - Added new regulator "enable and wait" functions that wait until at least the given amount of time has passed since the regulator was last enabled. - Converted patches to use the new functions - New header inclusion cleanup patch for elan_i2c driver This series fixes the trackpad descriptions on some MediaTek-based Chromebooks: either the trackpad's supply was set as always-on to workaround missing delays in the driver, or the delay and supply are missing from the trackpad's device node. v1 was just the first patch [1]. It has since grown to cover multiple drivers and devices. Patch 1 adds new "enable and wait" functions for single and bulk regulator enable. Patch 2 adds the correct enable delay after enabling the supply regulator for the Elan trackpad to initialize. This uses the new "enable and wait" regulator enable function. Patch 3 applies the same logic of skipping the power on delay to the i2c-hid-of driver. Patch 4 applies the same logic of skipping the power on delay to the i2c OF component prober library. Patch 5 adds a delay between when the device node found is enabled and when regulator_disable() is called. This gives an asynchronously probing driver some time to increment the enable count of their regulator reference, thus keeping the device operational and allowing the driver to skip the initialization delay. Patch 6 removes the "always-on" setting from the trackpad supply for Elm / Hana and adds the correct delay to the second source trackpad. This corrects the hardware description. Patch 7 adds the supply and power on delay properties to the Synaptics trackpad on the Spherion device. Combined with previous driver changes this should cause no actual functional changes or delays. Please take a look. Patches 2, 3, and 4 have build time dependencies on patch 1. I suggest placing patch 1 on a separate immutable branch or tag for the other maintainers to pull in. The three patches all have different maintainers. Or if it's not too late, Mark could take patch 1 for v7.3-rc1 and the rest can go in later. The DT changes must go in after all the driver changes land, especially patch 2 that adds delays to the Elan trackpad driver. Otherwise the user could potentially end up with a non-functional trackpad on the device. Thanks ChenYu [1] https://lore.kernel.org/all/20241001093815.2481899-1-wenst@chromium.org/ Chen-Yu Tsai (7): regulator: core: Add "enable and wait" functions Input: elan_i2c - Wait for initialization after enabling regulator supply HID: i2c-hid-of: skip post-power-on delay if powered on sufficiently long i2c: of-prober: skip post-power-on delay if powered on sufficiently long i2c: of-prober: Defer regulator_disable() on successful probe in simple helper arm64: dts: mediatek: mt8173-elm-hana: Unmark trackpad supply as always-on arm64: dts: mediatek: mt8192-asurada-spherion: Add Synaptics trackpad's supply .../boot/dts/mediatek/mt8173-elm-hana.dtsi | 8 +- arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi | 1 - .../mediatek/mt8192-asurada-spherion-r0.dts | 2 + drivers/hid/i2c-hid/i2c-hid-of.c | 9 +- drivers/i2c/i2c-core-of-prober.c | 25 ++-- drivers/input/mouse/elan_i2c_core.c | 7 +- drivers/regulator/core.c | 117 +++++++++++++++--- include/linux/regulator/consumer.h | 21 +++- include/linux/regulator/driver.h | 2 + 9 files changed, 149 insertions(+), 43 deletions(-) -- 2.55.0.860.g4b6b3295ed-goog