mbox series

[v3,0/3] power: supply: Acer Aspire 1 embedded controller

Message ID 20240220-aspire1-ec-v3-0-02cb139a4931@trvn.ru
Headers show
Series power: supply: Acer Aspire 1 embedded controller | expand

Message

Nikita Travkin Feb. 20, 2024, 11:57 a.m. UTC
The laptop contains an embedded controller that provides a set of
features:

- Battery and charger monitoring
- USB Type-C DP alt mode HPD monitoring
- Lid status detection
- Small amount of keyboard configuration*

[*] The keyboard is handled by the same EC but it has a dedicated i2c
bus and is already enabled. This port only provides fn key behavior
configuration.

Unfortunately, while all this functionality is implemented in ACPI, it's
currently not possible to use ACPI to boot Linux on such Qualcomm
devices. Thus this series implements and enables a new driver that
provides support for the EC features.

The EC would be one of the last pieces to get almost full support for the
Acer Aspire 1 laptop in the upstream Linux kernel.

This series is similar to the EC driver for Lenovo Yoga C630, proposed
in [1] but seemingly never followed up...

[1] https://lore.kernel.org/all/20230205152809.2233436-1-dmitry.baryshkov@linaro.org/

Signed-off-by: Nikita Travkin <nikita@trvn.ru>
---
Changes in v3:
- Supress warning on few no-op events.
- Invert the fn key behavior (Rob, Conor)
- Link to v2: https://lore.kernel.org/r/20231212-aspire1-ec-v2-0-ca495ea0a7ac@trvn.ru

Changes in v2:
- Drop incorrectly allowed reg in the ec connector binding (Krzysztof)
- Minor style changes (Konrad)
- Link to v1: https://lore.kernel.org/r/20231207-aspire1-ec-v1-0-ba9e1c227007@trvn.ru

---
Nikita Travkin (3):
      dt-bindings: power: supply: Add Acer Aspire 1 EC
      power: supply: Add Acer Aspire 1 embedded controller driver
      arm64: dts: qcom: acer-aspire1: Add embedded controller

 .../bindings/power/supply/acer,aspire1-ec.yaml     |  69 ++++
 arch/arm64/boot/dts/qcom/sc7180-acer-aspire1.dts   |  40 +-
 drivers/power/supply/Kconfig                       |  14 +
 drivers/power/supply/Makefile                      |   1 +
 drivers/power/supply/acer-aspire1-ec.c             | 453 +++++++++++++++++++++
 5 files changed, 576 insertions(+), 1 deletion(-)
---
base-commit: 2d5c7b7eb345249cb34d42cbc2b97b4c57ea944e
change-id: 20231206-aspire1-ec-6b3d2cac1a72

Best regards,

Comments

Conor Dooley Feb. 20, 2024, 6:41 p.m. UTC | #1
Rob,

On Tue, Feb 20, 2024 at 04:57:12PM +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     | 69 ++++++++++++++++++++++
>  1 file changed, 69 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..984cf19cf806
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml
> @@ -0,0 +1,69 @@
> +# 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,fn-selects-media-keys:
> +    description: Configure the keyboard layout to invert the Fn key.
> +      By default the function row of the keyboard inputs media keys
> +      (i.e Vol-Up) when Fn is not pressed. With this option set, pressing
> +      the key without Fn would input function keys (i.e. F11). The
> +      firmware may choose to add this property when user selects the fn
> +      mode in the firmware setup utility.
> +    type: boolean

We both had some comments on this property, and Nikita tried to follow
up on yours (which was much more substantive than mine) but got no
response:
https://lore.kernel.org/all/20231214220210.GA988134-robh@kernel.org/

Reading what you said, I'm not entirely sure what you were looking for,
my guess is that you were wanted something controllable from userspace,
but I'm not sure how you figured that should work where the firmware
alone is able to control this.

Cheers,
Conor.

> +
> +  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
>
Konrad Dybcio Feb. 20, 2024, 9:27 p.m. UTC | #2
On 20.02.2024 12:57, Nikita Travkin wrote:
> The laptop contains an embedded controller that provides a set of
> features:
> 
> - Battery and charger monitoring
> - USB Type-C DP alt mode HPD monitoring
> - Lid status detection
> - Small amount of keyboard configuration*
> 
> [*] The keyboard is handled by the same EC but it has a dedicated i2c
> bus and is already enabled. This port only provides fn key behavior
> configuration.
> 
> Add the EC to the device tree and describe the relationship between the
> EC-managed type-c port and the SoC DisplayPort.
> 
> Signed-off-by: Nikita Travkin <nikita@trvn.ru>
> ---

Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>

Konrad
Rob Herring Feb. 23, 2024, 4:56 a.m. UTC | #3
On Tue, Feb 20, 2024 at 06:41:06PM +0000, Conor Dooley wrote:
> Rob,
> 
> On Tue, Feb 20, 2024 at 04:57:12PM +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     | 69 ++++++++++++++++++++++
> >  1 file changed, 69 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..984cf19cf806
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/power/supply/acer,aspire1-ec.yaml
> > @@ -0,0 +1,69 @@
> > +# 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,fn-selects-media-keys:
> > +    description: Configure the keyboard layout to invert the Fn key.
> > +      By default the function row of the keyboard inputs media keys
> > +      (i.e Vol-Up) when Fn is not pressed. With this option set, pressing
> > +      the key without Fn would input function keys (i.e. F11). The
> > +      firmware may choose to add this property when user selects the fn
> > +      mode in the firmware setup utility.
> > +    type: boolean
> 
> We both had some comments on this property, and Nikita tried to follow
> up on yours (which was much more substantive than mine) but got no
> response:
> https://lore.kernel.org/all/20231214220210.GA988134-robh@kernel.org/
> 
> Reading what you said, I'm not entirely sure what you were looking for,
> my guess is that you were wanted something controllable from userspace,
> but I'm not sure how you figured that should work where the firmware
> alone is able to control this.

I replied there, but what I want is whatever the solution is to work on 
any laptop, not just this Acer device.

Rob