Message ID | 20231212-aspire1-ec-v2-1-ca495ea0a7ac@trvn.ru |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp7697544vqy; Tue, 12 Dec 2023 04:49:56 -0800 (PST) X-Google-Smtp-Source: AGHT+IEndjNc2m0BhXb7l61pG5XU6I27ocWU701yfqAbvFMgNdtwLlQ1ST/K70I32Y4padJdO7Fc X-Received: by 2002:a17:90a:7527:b0:286:99a9:f4ce with SMTP id q36-20020a17090a752700b0028699a9f4cemr2498195pjk.12.1702385396411; Tue, 12 Dec 2023 04:49:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702385396; cv=none; d=google.com; s=arc-20160816; b=FECBsfoXEN4uWlrW2rq7FwuGP8dJudefnyyvJhBoK8RXPBcXKr90JMjWOjocBuD7y3 lx1EomlOhu8lGge//JTjCQ9TWcyfAia8Wq4pUqHMxf9kXd8B6irZOaNh4q1yMbESr9i0 /i4scP/OfDU70grGzK0nf2MwTWSTLW8T+SYFpZgEiUDNXd/qUE7wQbhyBnwbcjCC1y6d /ueBHpiSDrLKkZIGqmbyhwglkMP5Yd576DxN1ggpM/xVOAee89JlnvMJE78fDV0LrmD4 WDnqjEN4fLI3y0fZ9YLQgX4858xIchK3VJP0O9xweLix/d8wCw3Fngcr/y+IehSpXmeC lp1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=PQ46imMyt+LOd34Zxt7TCmncRBJl/wrMocH0Axc9NZw=; fh=dhvS1eGMvUx1tavIFXBqrKW8ETuokCsS3YwwCc7v/Nw=; b=jGLGikVm8VYsSojwW6KWNMLoEeCxfTB33MRqDbdTOKwld89r4zF1eJxt7xTNcj9Rnw kbqbJrY1DCdTOr5hlztTJTus1+WOnL2opKDuCynkXisbIFJu3RtSeHD+EaRidQ9PVliM cQbvcRLd8MdhT+7nJeHwAovZl4lkWH2g0Ul8vZqlvbuY2HSWo6PcA10O1hHUk7dDwurW n9K/z2l/U/GuccHcZdSqT8ijJWv4tPVeryR4Yue3ttXNAGoBjSgdMoUPCPYZ46XerVap JgHhKu0c8jE7N0szGVrOCqp8RDGm4WEfMA4kb74/2XVBe0K53XPBgB5T3LP8Y4q2J4fm kKOg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@trvn.ru header.s=mail header.b=JQYGOOYg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=trvn.ru Received: from morse.vger.email (morse.vger.email. [2620:137:e000::3:1]) by mx.google.com with ESMTPS id iq6-20020a17090afb4600b0028ad3d8ef8csi74344pjb.44.2023.12.12.04.49.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Dec 2023 04:49:56 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) client-ip=2620:137:e000::3:1; Authentication-Results: mx.google.com; dkim=pass header.i=@trvn.ru header.s=mail header.b=JQYGOOYg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=trvn.ru Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id 26693802B28B; Tue, 12 Dec 2023 04:49:53 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1376324AbjLLMt1 (ORCPT <rfc822;dexuan.linux@gmail.com> + 99 others); Tue, 12 Dec 2023 07:49:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39112 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1376286AbjLLMtU (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Tue, 12 Dec 2023 07:49:20 -0500 Received: from box.trvn.ru (box.trvn.ru [194.87.146.52]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B8BD995; Tue, 12 Dec 2023 04:49:24 -0800 (PST) Received: from authenticated-user (box.trvn.ru [194.87.146.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by box.trvn.ru (Postfix) with ESMTPSA id AE65B408EF; Tue, 12 Dec 2023 17:49:20 +0500 (+05) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=trvn.ru; s=mail; t=1702385361; bh=5lfenQWG5jWj1jTDgzI/1GBibHKLme6kh2jBSQhc9Ow=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=JQYGOOYgVgL5Ls2K40NUDnfoMskHclVIGEAkDxNFwsvZ40Qpk/Pk4P9cHxvLF0JUu w3u4+Y/EYmzuZ6IoCcVjpnZkB74KNTUBsRQgB+yMjv/LmvgNGUHZnsTgJPej55Hc2i Qytha1aBJkKD9AjDwrluHzwn19rCazvVSSK2xGaeHB6ODkGVITwyz9QwGXJUIIvPhL ZcRPpxWN3cc/O3gTNZ4c/eq1QQr2aUf65tZfAaqGisGTLXCMevk1oyMPxrqR9nugmX sKqjhGrdPW/q3+N9nD41hQFcPj3EmIn8HXdHTKmbLLcNSvKnNzzWRne415Wv80B8ax +E2r3rVwnPd2A== From: Nikita Travkin <nikita@trvn.ru> Date: Tue, 12 Dec 2023 17:49:09 +0500 Subject: [PATCH v2 1/3] dt-bindings: power: supply: Add Acer Aspire 1 EC MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20231212-aspire1-ec-v2-1-ca495ea0a7ac@trvn.ru> References: <20231212-aspire1-ec-v2-0-ca495ea0a7ac@trvn.ru> In-Reply-To: <20231212-aspire1-ec-v2-0-ca495ea0a7ac@trvn.ru> To: Sebastian Reichel <sre@kernel.org>, Rob Herring <robh+dt@kernel.org>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, Conor Dooley <conor+dt@kernel.org>, cros-qcom-dts-watchers@chromium.org, Andy Gross <agross@kernel.org>, Bjorn Andersson <andersson@kernel.org>, Konrad Dybcio <konrad.dybcio@linaro.org> Cc: linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Nikita Travkin <nikita@trvn.ru> X-Developer-Signature: v=1; a=openpgp-sha256; l=2327; i=nikita@trvn.ru; h=from:subject:message-id; bh=5lfenQWG5jWj1jTDgzI/1GBibHKLme6kh2jBSQhc9Ow=; b=owEBbQKS/ZANAwAIAUMc7O4oGb91AcsmYgBleFbOjfFUH/atD8/Q7hqD0SCBTokxuATYnZsNj kYfRQOgAr6JAjMEAAEIAB0WIQTAhK9UUj+qg34uxUdDHOzuKBm/dQUCZXhWzgAKCRBDHOzuKBm/ dQ2lD/9rJUv6yEjOMgUkB93/svL4764VhNSAnYxcE4mMG2FZ/VsWfNcZGBhTuSi0avMaEfPwrNF EujPjK8n5CEXJviNl92QCUzl8g8Qfh/c0FDahb/UWCUzX5HMUAm0XGlidr88ZQrGS8U+qnllSaZ kuQI4ANho7763/upAWfr/cfedGiXHQyRnmnBEJaCiSDn9t/xbQiDv/vFiF0GYoJ7SMF7EUiI3zf SxsmQp3ZLD2ME2orLuy8NlFTvTJRNkz0Npu1iGU9oPUCiQbImkqhRr2NIQyb8PsxiV2LrFUwLdG Gykpxgqyk6OWka6I8IexWEFJUhDmsrY9D3AGmRuTBx13Zz4j+N/O7NsEo61uR1N4pwVVlu5tHy4 6+H30q+z5bBVgyq4bugISa6OxROpK1z88F0DYQIythtbBecjzvWb+4oMKyccFQmay3CicIFwBP4 rYpWIXqvGkNRN0tinpORacHnn8CQnP2zRUk9aY8RNta4JJ454XbcKel54P0kYdhM8Eb/ZMdrIHN B7sDidJkJSytqq0VZKHNMddkd7bVAxPASaOTyyGDMPqnglOk+WNiV5dT0DmFdy54mTzmnThDD8N ip4R8LNxUu7JoDV7pV+t78y03wCe/08cJA589hNkBbaHha74mR1Y/3xra0gW9j7VtbLbtM+rWrZ X8b8042GY8jRi6A== X-Developer-Key: i=nikita@trvn.ru; a=openpgp; fpr=C084AF54523FAA837E2EC547431CECEE2819BF75 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Tue, 12 Dec 2023 04:49:53 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785080469520684184 X-GMAIL-MSGID: 1785080469520684184 |
Series |
power: supply: Acer Aspire 1 embedded controller
|
|
Commit Message
Nikita Travkin
Dec. 12, 2023, 12:49 p.m. UTC
Add binding for the EC found in the Acer Aspire 1 laptop.
Signed-off-by: Nikita Travkin <nikita@trvn.ru>
---
.../bindings/power/supply/acer,aspire1-ec.yaml | 67 ++++++++++++++++++++++
1 file changed, 67 insertions(+)
Comments
Hey, On Tue, Dec 12, 2023 at 05:49:09PM +0500, Nikita Travkin wrote: > Add binding for the EC found in the Acer Aspire 1 laptop. > > Signed-off-by: Nikita Travkin <nikita@trvn.ru> > --- > .../bindings/power/supply/acer,aspire1-ec.yaml | 67 ++++++++++++++++++++++ > 1 file changed, 67 insertions(+) > > diff --git a/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml b/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml > new file mode 100644 > index 000000000000..1fbf1272a00f > --- /dev/null > +++ b/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml > @@ -0,0 +1,67 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/power/supply/acer,aspire1-ec.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Acer Aspire 1 Embedded Controller > + > +maintainers: > + - Nikita Travkin <nikita@trvn.ru> > + > +description: > + The Acer Aspire 1 laptop uses an embedded controller to control battery > + and charging as well as to provide a set of misc features such as the > + laptop lid status and HPD events for the USB Type-C DP alt mode. > + > +properties: > + compatible: > + const: acer,aspire1-ec > + > + reg: > + const: 0x76 > + > + interrupts: > + maxItems: 1 > + > + acer,media-keys-on-top: > + description: Configure the keyboard layout to use media features of > + the fn row when the fn key is not pressed. The firmware may choose > + to add this property when user selects the fn mode in the firmware > + setup utility. I'm not a huge fan of the property name/description here. For the description, I'm not sure from reading this what the default behaviour is and how the fn row works when the fn key is pressed. Is the default behaviour that pressing the fn key enables the media keys and the row by default provides the fn functionality? And then when this option is set in firmware the behaviour is inverted? For the name, the "on-top" bit seems a bit weird. I would prefer it to be reworded in terms of the behavioural change of the fn key. The media keys are physically at the top of the keyboard whether or not this option is enabled, hence the "on-top" seeming a bit weird to me. Thanks, Conor. > + type: boolean > + > + connector: > + $ref: /schemas/connector/usb-connector.yaml# > + > +required: > + - compatible > + - reg > + - interrupts > + > +additionalProperties: false > + > +examples: > + - |+ > + #include <dt-bindings/interrupt-controller/irq.h> > + i2c { > + #address-cells = <1>; > + #size-cells = <0>; > + > + embedded-controller@76 { > + compatible = "acer,aspire1-ec"; > + reg = <0x76>; > + > + interrupts-extended = <&tlmm 30 IRQ_TYPE_LEVEL_LOW>; > + > + connector { > + compatible = "usb-c-connector"; > + > + port { > + ec_dp_in: endpoint { > + remote-endpoint = <&mdss_dp_out>; > + }; > + }; > + }; > + }; > + }; > > -- > 2.43.0 >
Conor Dooley писал(а) 12.12.2023 22:24: > Hey, > > On Tue, Dec 12, 2023 at 05:49:09PM +0500, Nikita Travkin wrote: >> Add binding for the EC found in the Acer Aspire 1 laptop. >> >> Signed-off-by: Nikita Travkin <nikita@trvn.ru> >> --- >> .../bindings/power/supply/acer,aspire1-ec.yaml | 67 ++++++++++++++++++++++ >> 1 file changed, 67 insertions(+) >> >> diff --git a/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml b/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml >> new file mode 100644 >> index 000000000000..1fbf1272a00f >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml >> @@ -0,0 +1,67 @@ >> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) >> +%YAML 1.2 >> +--- >> +$id: http://devicetree.org/schemas/power/supply/acer,aspire1-ec.yaml# >> +$schema: http://devicetree.org/meta-schemas/core.yaml# >> + >> +title: Acer Aspire 1 Embedded Controller >> + >> +maintainers: >> + - Nikita Travkin <nikita@trvn.ru> >> + >> +description: >> + The Acer Aspire 1 laptop uses an embedded controller to control battery >> + and charging as well as to provide a set of misc features such as the >> + laptop lid status and HPD events for the USB Type-C DP alt mode. >> + >> +properties: >> + compatible: >> + const: acer,aspire1-ec >> + >> + reg: >> + const: 0x76 >> + >> + interrupts: >> + maxItems: 1 >> + >> + acer,media-keys-on-top: >> + description: Configure the keyboard layout to use media features of >> + the fn row when the fn key is not pressed. The firmware may choose >> + to add this property when user selects the fn mode in the firmware >> + setup utility. > > I'm not a huge fan of the property name/description here. > For the description, I'm not sure from reading this what the default > behaviour is and how the fn row works when the fn key is pressed. > Is the default behaviour that pressing the fn key enables the media keys > and the row by default provides the fn functionality? And then when this > option is set in firmware the behaviour is inverted? > Yes. By default pressing i.e. F11 would create F11, Fn+F11 would be vol+. With this option set, the default for F11 would be vol+ and Fn+f11 would be F11. Perhaps this description would be better? Configure the keyboard layout to invert the Fn key. By default the function row of the keyboard inputs function keys (i.e F11) when Fn is not pressed. With this option set, pressing the key without Fn would input media keys (i.e. Vol-Up). Firmware may (...) > For the name, the "on-top" bit seems a bit weird. I would prefer it to > be reworded in terms of the behavioural change of the fn key. The media > keys are physically at the top of the keyboard whether or not this > option is enabled, hence the "on-top" seeming a bit weird to me. > I was trying to be unambiguous with this name without making it too long. The implied meaning of "on-top" was "On the top keyboard layer" (in the opposition of the "Fn" layer). Perhaps "acer,media-keys-on-top-layer" would have been better then? I was trying to define this property via the word "media" since using "fn" is somewhat ambiguous (fn row key vs F(1..12) key vs Fn key), and something like `inverted-fn-key" would not reflect what is the impact on the layout. Using "fn-selects-function-keys" also felt a bit ambiguous to me. FWIW I can also invert the default and make it "fn-selects-media-keys" which would be clear. I haven't yet written the firmware that would pass this property from the setup so it shouldn't be a problem from the DT POV, but this is not the "reset" default for the EC. Do any of those suggestions sound better to you? Nikita > Thanks, > Conor. > >> + type: boolean >> + >> + connector: >> + $ref: /schemas/connector/usb-connector.yaml# >> + >> +required: >> + - compatible >> + - reg >> + - interrupts >> + >> +additionalProperties: false >> + >> +examples: >> + - |+ >> + #include <dt-bindings/interrupt-controller/irq.h> >> + i2c { >> + #address-cells = <1>; >> + #size-cells = <0>; >> + >> + embedded-controller@76 { >> + compatible = "acer,aspire1-ec"; >> + reg = <0x76>; >> + >> + interrupts-extended = <&tlmm 30 IRQ_TYPE_LEVEL_LOW>; >> + >> + connector { >> + compatible = "usb-c-connector"; >> + >> + port { >> + ec_dp_in: endpoint { >> + remote-endpoint = <&mdss_dp_out>; >> + }; >> + }; >> + }; >> + }; >> + }; >> >> -- >> 2.43.0 >>
On Tue, Dec 12, 2023 at 05:49:09PM +0500, Nikita Travkin wrote: > Add binding for the EC found in the Acer Aspire 1 laptop. > > Signed-off-by: Nikita Travkin <nikita@trvn.ru> > --- > .../bindings/power/supply/acer,aspire1-ec.yaml | 67 ++++++++++++++++++++++ > 1 file changed, 67 insertions(+) > > diff --git a/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml b/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml > new file mode 100644 > index 000000000000..1fbf1272a00f > --- /dev/null > +++ b/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml > @@ -0,0 +1,67 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/power/supply/acer,aspire1-ec.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Acer Aspire 1 Embedded Controller > + > +maintainers: > + - Nikita Travkin <nikita@trvn.ru> > + > +description: > + The Acer Aspire 1 laptop uses an embedded controller to control battery > + and charging as well as to provide a set of misc features such as the > + laptop lid status and HPD events for the USB Type-C DP alt mode. > + > +properties: > + compatible: > + const: acer,aspire1-ec > + > + reg: > + const: 0x76 > + > + interrupts: > + maxItems: 1 > + > + acer,media-keys-on-top: > + description: Configure the keyboard layout to use media features of > + the fn row when the fn key is not pressed. The firmware may choose > + to add this property when user selects the fn mode in the firmware > + setup utility. > + type: boolean Besides the naming, this isn't really a property of the EC, but really part of the keyboard layout. It seems you just stuck it here because this is part of the specific device. It is also hardly a feature unique to this device. I'm typing this from a device with the exact same thing (M1 Macbook Pro). Actually, all 3 laptops I have in front of me have the same thing. The other 2 have a Fnlock (Fn+ESC) though. On the M1, it's just a module param which I set as persistent. Though I now wonder if the Fnlock could be implemented on it too. Being able to switch whenever I want would be nice. That would probably have to be in Linux where as these other laptops probably implement this in their EC/firmware? What I'm getting at is controlling changing this in firmware is not a great experience and this should all be common. Rob
Rob Herring писал(а) 15.12.2023 03:02: > On Tue, Dec 12, 2023 at 05:49:09PM +0500, Nikita Travkin wrote: >> Add binding for the EC found in the Acer Aspire 1 laptop. >> >> Signed-off-by: Nikita Travkin <nikita@trvn.ru> >> --- >> .../bindings/power/supply/acer,aspire1-ec.yaml | 67 ++++++++++++++++++++++ >> 1 file changed, 67 insertions(+) >> >> diff --git a/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml b/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml >> new file mode 100644 >> index 000000000000..1fbf1272a00f >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml >> @@ -0,0 +1,67 @@ >> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) >> +%YAML 1.2 >> +--- >> +$id: http://devicetree.org/schemas/power/supply/acer,aspire1-ec.yaml# >> +$schema: http://devicetree.org/meta-schemas/core.yaml# >> + >> +title: Acer Aspire 1 Embedded Controller >> + >> +maintainers: >> + - Nikita Travkin <nikita@trvn.ru> >> + >> +description: >> + The Acer Aspire 1 laptop uses an embedded controller to control battery >> + and charging as well as to provide a set of misc features such as the >> + laptop lid status and HPD events for the USB Type-C DP alt mode. >> + >> +properties: >> + compatible: >> + const: acer,aspire1-ec >> + >> + reg: >> + const: 0x76 >> + >> + interrupts: >> + maxItems: 1 >> + >> + acer,media-keys-on-top: >> + description: Configure the keyboard layout to use media features of >> + the fn row when the fn key is not pressed. The firmware may choose >> + to add this property when user selects the fn mode in the firmware >> + setup utility. >> + type: boolean > > Besides the naming, this isn't really a property of the EC, but really > part of the keyboard layout. It seems you just stuck it here because > this is part of the specific device. > The EC on this device is also a keyboard controller, but the keyboard part has a dedicated i2c bus with hid-over-i2c. Since this is the "management" bus of the same device, I decided that it fits here. > It is also hardly a feature unique to this device. I'm typing this from > a device with the exact same thing (M1 Macbook Pro). Actually, all 3 > laptops I have in front of me have the same thing. The other 2 have > a Fnlock (Fn+ESC) though. On the M1, it's just a module param which I > set as persistent. Though I now wonder if the Fnlock could be > implemented on it too. Being able to switch whenever I want would be > nice. That would probably have to be in Linux where as these other > laptops probably implement this in their EC/firmware? > > What I'm getting at is controlling changing this in firmware is not a > great experience and this should all be common. > You may be right, however my goal here is to support the original firmware feature that is lost when we use DT. This is a WoA laptop with UEFI/ACPI and, as usual for "Windows" machines, there is a setting in the firmware setup utility ("bios") to set the fn behavior. But it works by setting an ACPI value, and for Snapdragon devices we can't use that now. Long term I want to have a EFI driver that would automatically detect/load DT and my plan is to handle things like this (and i.e. mac address, different touchpad vendor, etc) there. Thus I'm adding this property already, as an equivalent of that weird acpi bit that original firmware sets. If we only provide a module param, the "intended by OEM" way of setting the fn mode will be broken, and one would need to know how to write a magic special config file to set a kernel module param. I think it's not the best UX. (and just adds to the silly "arm/dt bad, x86/uefi/acpi "just works"" argument many people sadly have) If you think I shouldn't use DT to pass this info, feel free to say so. I will drop this property and see if there is something else I can do to still support this without relying on Linux cooperation. Looking forward to your opinion, Nikita > Rob
Nikita Travkin писал(а) 15.12.2023 10:29: > Rob Herring писал(а) 15.12.2023 03:02: >> On Tue, Dec 12, 2023 at 05:49:09PM +0500, Nikita Travkin wrote: >>> Add binding for the EC found in the Acer Aspire 1 laptop. >>> >>> Signed-off-by: Nikita Travkin <nikita@trvn.ru> >>> --- >>> .../bindings/power/supply/acer,aspire1-ec.yaml | 67 ++++++++++++++++++++++ >>> 1 file changed, 67 insertions(+) >>> >>> diff --git a/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml b/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml >>> new file mode 100644 >>> index 000000000000..1fbf1272a00f >>> --- /dev/null >>> +++ b/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml >>> @@ -0,0 +1,67 @@ >>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) >>> +%YAML 1.2 >>> +--- >>> +$id: http://devicetree.org/schemas/power/supply/acer,aspire1-ec.yaml# >>> +$schema: http://devicetree.org/meta-schemas/core.yaml# >>> + >>> +title: Acer Aspire 1 Embedded Controller >>> + >>> +maintainers: >>> + - Nikita Travkin <nikita@trvn.ru> >>> + >>> +description: >>> + The Acer Aspire 1 laptop uses an embedded controller to control battery >>> + and charging as well as to provide a set of misc features such as the >>> + laptop lid status and HPD events for the USB Type-C DP alt mode. >>> + >>> +properties: >>> + compatible: >>> + const: acer,aspire1-ec >>> + >>> + reg: >>> + const: 0x76 >>> + >>> + interrupts: >>> + maxItems: 1 >>> + >>> + acer,media-keys-on-top: >>> + description: Configure the keyboard layout to use media features of >>> + the fn row when the fn key is not pressed. The firmware may choose >>> + to add this property when user selects the fn mode in the firmware >>> + setup utility. >>> + type: boolean >> >> Besides the naming, this isn't really a property of the EC, but really >> part of the keyboard layout. It seems you just stuck it here because >> this is part of the specific device. >> > > The EC on this device is also a keyboard controller, but the keyboard > part has a dedicated i2c bus with hid-over-i2c. Since this is the > "management" bus of the same device, I decided that it fits here. > >> It is also hardly a feature unique to this device. I'm typing this from >> a device with the exact same thing (M1 Macbook Pro). Actually, all 3 >> laptops I have in front of me have the same thing. The other 2 have >> a Fnlock (Fn+ESC) though. On the M1, it's just a module param which I >> set as persistent. Though I now wonder if the Fnlock could be >> implemented on it too. Being able to switch whenever I want would be >> nice. That would probably have to be in Linux where as these other >> laptops probably implement this in their EC/firmware? >> >> What I'm getting at is controlling changing this in firmware is not a >> great experience and this should all be common. >> > > You may be right, however my goal here is to support the original > firmware feature that is lost when we use DT. > > This is a WoA laptop with UEFI/ACPI and, as usual for "Windows" > machines, there is a setting in the firmware setup utility ("bios") to > set the fn behavior. But it works by setting an ACPI value, and for > Snapdragon devices we can't use that now. > > Long term I want to have a EFI driver that would automatically > detect/load DT and my plan is to handle things like this (and i.e. mac > address, different touchpad vendor, etc) there. Thus I'm adding this > property already, as an equivalent of that weird acpi bit that original > firmware sets. > > If we only provide a module param, the "intended by OEM" way of setting > the fn mode will be broken, and one would need to know how to write a > magic special config file to set a kernel module param. I think it's not > the best UX. (and just adds to the silly "arm/dt bad, x86/uefi/acpi > "just works"" argument many people sadly have) > > If you think I shouldn't use DT to pass this info, feel free to say so. > I will drop this property and see if there is something else I can do > to still support this without relying on Linux cooperation. > Hi Rob, Conor, I'd still appreciate hearing your opinion before proceeding with this. Nikita > Looking forward to your opinion, > Nikita > >> Rob
On Fri, Dec 15, 2023 at 10:29:22AM +0500, Nikita Travkin wrote: > Rob Herring писал(а) 15.12.2023 03:02: > > On Tue, Dec 12, 2023 at 05:49:09PM +0500, Nikita Travkin wrote: > >> Add binding for the EC found in the Acer Aspire 1 laptop. > >> > >> Signed-off-by: Nikita Travkin <nikita@trvn.ru> > >> --- > >> .../bindings/power/supply/acer,aspire1-ec.yaml | 67 ++++++++++++++++++++++ > >> 1 file changed, 67 insertions(+) > >> > >> diff --git a/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml b/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml > >> new file mode 100644 > >> index 000000000000..1fbf1272a00f > >> --- /dev/null > >> +++ b/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml > >> @@ -0,0 +1,67 @@ > >> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > >> +%YAML 1.2 > >> +--- > >> +$id: http://devicetree.org/schemas/power/supply/acer,aspire1-ec.yaml# > >> +$schema: http://devicetree.org/meta-schemas/core.yaml# > >> + > >> +title: Acer Aspire 1 Embedded Controller > >> + > >> +maintainers: > >> + - Nikita Travkin <nikita@trvn.ru> > >> + > >> +description: > >> + The Acer Aspire 1 laptop uses an embedded controller to control battery > >> + and charging as well as to provide a set of misc features such as the > >> + laptop lid status and HPD events for the USB Type-C DP alt mode. > >> + > >> +properties: > >> + compatible: > >> + const: acer,aspire1-ec > >> + > >> + reg: > >> + const: 0x76 > >> + > >> + interrupts: > >> + maxItems: 1 > >> + > >> + acer,media-keys-on-top: > >> + description: Configure the keyboard layout to use media features of > >> + the fn row when the fn key is not pressed. The firmware may choose > >> + to add this property when user selects the fn mode in the firmware > >> + setup utility. > >> + type: boolean > > > > Besides the naming, this isn't really a property of the EC, but really > > part of the keyboard layout. It seems you just stuck it here because > > this is part of the specific device. > > > > The EC on this device is also a keyboard controller, but the keyboard > part has a dedicated i2c bus with hid-over-i2c. Since this is the > "management" bus of the same device, I decided that it fits here. So there's also a hid-over-i2c DT node? Then why wouldn't you put this there? > > > It is also hardly a feature unique to this device. I'm typing this from > > a device with the exact same thing (M1 Macbook Pro). Actually, all 3 > > laptops I have in front of me have the same thing. The other 2 have > > a Fnlock (Fn+ESC) though. On the M1, it's just a module param which I > > set as persistent. Though I now wonder if the Fnlock could be > > implemented on it too. Being able to switch whenever I want would be > > nice. That would probably have to be in Linux where as these other > > laptops probably implement this in their EC/firmware? > > > > What I'm getting at is controlling changing this in firmware is not a > > great experience and this should all be common. > > > > You may be right, however my goal here is to support the original > firmware feature that is lost when we use DT. > > This is a WoA laptop with UEFI/ACPI and, as usual for "Windows" > machines, there is a setting in the firmware setup utility ("bios") to > set the fn behavior. But it works by setting an ACPI value, and for > Snapdragon devices we can't use that now. > > Long term I want to have a EFI driver that would automatically > detect/load DT and my plan is to handle things like this (and i.e. mac > address, different touchpad vendor, etc) there. Thus I'm adding this > property already, as an equivalent of that weird acpi bit that original > firmware sets. > > If we only provide a module param, the "intended by OEM" way of setting > the fn mode will be broken, and one would need to know how to write a > magic special config file to set a kernel module param. I think it's not > the best UX. (and just adds to the silly "arm/dt bad, x86/uefi/acpi > "just works"" argument many people sadly have) But it always works, it is just a question of what is the default mode and I, as a user, want to decide that, not the OEM. And I want to change it at run-time, not reboot into BIOS to change it. I wasn't suggesting you do a module param either. That's still specific to the module. Something like a sysfs file would be nice: echo 1 > /sys/class/input/input1/fnlock > If you think I shouldn't use DT to pass this info, feel free to say so. > I will drop this property and see if there is something else I can do > to still support this without relying on Linux cooperation. Not saying no to being in DT, but if it is, it should be a common property because it is a common thing on all laptops. Rob
Rob Herring писал(а) 23.02.2024 09:52: > On Fri, Dec 15, 2023 at 10:29:22AM +0500, Nikita Travkin wrote: >> Rob Herring писал(а) 15.12.2023 03:02: >> > On Tue, Dec 12, 2023 at 05:49:09PM +0500, Nikita Travkin wrote: >> >> Add binding for the EC found in the Acer Aspire 1 laptop. >> >> >> >> Signed-off-by: Nikita Travkin <nikita@trvn.ru> >> >> --- >> >> .../bindings/power/supply/acer,aspire1-ec.yaml | 67 ++++++++++++++++++++++ >> >> 1 file changed, 67 insertions(+) >> >> >> >> diff --git a/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml b/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml >> >> new file mode 100644 >> >> index 000000000000..1fbf1272a00f >> >> --- /dev/null >> >> +++ b/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml >> >> @@ -0,0 +1,67 @@ >> >> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) >> >> +%YAML 1.2 >> >> +--- >> >> +$id: http://devicetree.org/schemas/power/supply/acer,aspire1-ec.yaml# >> >> +$schema: http://devicetree.org/meta-schemas/core.yaml# >> >> + >> >> +title: Acer Aspire 1 Embedded Controller >> >> + >> >> +maintainers: >> >> + - Nikita Travkin <nikita@trvn.ru> >> >> + >> >> +description: >> >> + The Acer Aspire 1 laptop uses an embedded controller to control battery >> >> + and charging as well as to provide a set of misc features such as the >> >> + laptop lid status and HPD events for the USB Type-C DP alt mode. >> >> + >> >> +properties: >> >> + compatible: >> >> + const: acer,aspire1-ec >> >> + >> >> + reg: >> >> + const: 0x76 >> >> + >> >> + interrupts: >> >> + maxItems: 1 >> >> + >> >> + acer,media-keys-on-top: >> >> + description: Configure the keyboard layout to use media features of >> >> + the fn row when the fn key is not pressed. The firmware may choose >> >> + to add this property when user selects the fn mode in the firmware >> >> + setup utility. >> >> + type: boolean >> > >> > Besides the naming, this isn't really a property of the EC, but really >> > part of the keyboard layout. It seems you just stuck it here because >> > this is part of the specific device. >> > >> >> The EC on this device is also a keyboard controller, but the keyboard >> part has a dedicated i2c bus with hid-over-i2c. Since this is the >> "management" bus of the same device, I decided that it fits here. > > So there's also a hid-over-i2c DT node? Then why wouldn't you put this > there? > Yes indeed, however I wasn't sure of a nice way to make two drivers interact so I opted to having the prop here instead given I was trying to reflect "device specific" (in terms of uefi setup -> os code interaction) property. >> >> > It is also hardly a feature unique to this device. I'm typing this from >> > a device with the exact same thing (M1 Macbook Pro). Actually, all 3 >> > laptops I have in front of me have the same thing. The other 2 have >> > a Fnlock (Fn+ESC) though. On the M1, it's just a module param which I >> > set as persistent. Though I now wonder if the Fnlock could be >> > implemented on it too. Being able to switch whenever I want would be >> > nice. That would probably have to be in Linux where as these other >> > laptops probably implement this in their EC/firmware? >> > >> > What I'm getting at is controlling changing this in firmware is not a >> > great experience and this should all be common. >> > >> >> You may be right, however my goal here is to support the original >> firmware feature that is lost when we use DT. >> >> This is a WoA laptop with UEFI/ACPI and, as usual for "Windows" >> machines, there is a setting in the firmware setup utility ("bios") to >> set the fn behavior. But it works by setting an ACPI value, and for >> Snapdragon devices we can't use that now. >> >> Long term I want to have a EFI driver that would automatically >> detect/load DT and my plan is to handle things like this (and i.e. mac >> address, different touchpad vendor, etc) there. Thus I'm adding this >> property already, as an equivalent of that weird acpi bit that original >> firmware sets. >> >> If we only provide a module param, the "intended by OEM" way of setting >> the fn mode will be broken, and one would need to know how to write a >> magic special config file to set a kernel module param. I think it's not >> the best UX. (and just adds to the silly "arm/dt bad, x86/uefi/acpi >> "just works"" argument many people sadly have) > > But it always works, it is just a question of what is the default mode > and I, as a user, want to decide that, not the OEM. And I want to change > it at run-time, not reboot into BIOS to change it. > > I wasn't suggesting you do a module param either. That's still specific > to the module. Something like a sysfs file would be nice: > > echo 1 > /sys/class/input/input1/fnlock > I see your point. Having a generic way of switching fnlock, attached to the correct input device would be great. However as I wasn't sure how exactly that can be implemented in a generic manner, I opted to just make sure that at least the user manual for this device still "works". > >> If you think I shouldn't use DT to pass this info, feel free to say so. >> I will drop this property and see if there is something else I can do >> to still support this without relying on Linux cooperation. > > Not saying no to being in DT, but if it is, it should be a common > property because it is a common thing on all laptops. > Right. Then I think I will drop the property for now and will see if we can introduce something better and generic later. Thanks for explaining! Nikita > Rob
diff --git a/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml b/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml new file mode 100644 index 000000000000..1fbf1272a00f --- /dev/null +++ b/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml @@ -0,0 +1,67 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/power/supply/acer,aspire1-ec.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Acer Aspire 1 Embedded Controller + +maintainers: + - Nikita Travkin <nikita@trvn.ru> + +description: + The Acer Aspire 1 laptop uses an embedded controller to control battery + and charging as well as to provide a set of misc features such as the + laptop lid status and HPD events for the USB Type-C DP alt mode. + +properties: + compatible: + const: acer,aspire1-ec + + reg: + const: 0x76 + + interrupts: + maxItems: 1 + + acer,media-keys-on-top: + description: Configure the keyboard layout to use media features of + the fn row when the fn key is not pressed. The firmware may choose + to add this property when user selects the fn mode in the firmware + setup utility. + type: boolean + + connector: + $ref: /schemas/connector/usb-connector.yaml# + +required: + - compatible + - reg + - interrupts + +additionalProperties: false + +examples: + - |+ + #include <dt-bindings/interrupt-controller/irq.h> + i2c { + #address-cells = <1>; + #size-cells = <0>; + + embedded-controller@76 { + compatible = "acer,aspire1-ec"; + reg = <0x76>; + + interrupts-extended = <&tlmm 30 IRQ_TYPE_LEVEL_LOW>; + + connector { + compatible = "usb-c-connector"; + + port { + ec_dp_in: endpoint { + remote-endpoint = <&mdss_dp_out>; + }; + }; + }; + }; + };