platform: arm64: add Huawei Matebook E Go EC driver
authorPengyu Luo <mitltlatltl@gmail.com>
Fri, 14 Feb 2025 18:06:55 +0000 (02:06 +0800)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Mon, 3 Mar 2025 08:55:36 +0000 (10:55 +0200)
commit7636f090d02e791918bb3c924e695880123d0c59
treeb2360c87bcaca510b1ab3dae43e3058b6830359e
parentdefcf2fb30f7bf128c0be5e571f4db2b7fff66cc
platform: arm64: add Huawei Matebook E Go EC driver

There are three variants of which Huawei released the first two
simultaneously.

Huawei Matebook E Go LTE(sc8180x), codename seems to be gaokun2.
Huawei Matebook E Go(sc8280xp@3.0GHz), codename must be gaokun3. (see [1])
Huawei Matebook E Go 2023(sc8280xp@2.69GHz), codename should be also gaokun3.

Adding support for the latter two variants for now, this driver should
also work for the sc8180x variant according to acpi table files, but I
don't have the device to test yet.

Different from other Qualcomm Snapdragon sc8280xp based machines, the
Huawei Matebook E Go uses an embedded controller while others use
a system called PMIC GLink. This embedded controller can be used to
perform a set of various functions, including, but not limited to:

- Battery and charger monitoring;
- Charge control and smart charge;
- Fn_lock settings;
- Tablet lid status;
- Temperature sensors;
- USB Type-C notifications (ports orientation,  DP alt mode HPD);
- USB Type-C PD (according to observation, up to 48w).

Add a driver for the EC which creates devices for UCSI and power supply
devices.

This driver is inspired by the following drivers:
        drivers/platform/arm64/acer-aspire1-ec.c
        drivers/platform/arm64/lenovo-yoga-c630.c
        drivers/platform/x86/huawei-wmi.c

Also thanks for reviewers' working. They have made this patch improve
a lot.

[1] https://bugzilla.kernel.org/show_bug.cgi?id=219645

Signed-off-by: Pengyu Luo <mitltlatltl@gmail.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Link: https://lore.kernel.org/r/20250214180656.28599-3-mitltlatltl@gmail.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
MAINTAINERS
drivers/platform/arm64/Kconfig
drivers/platform/arm64/Makefile
drivers/platform/arm64/huawei-gaokun-ec.c [new file with mode: 0644]
include/linux/platform_data/huawei-gaokun-ec.h [new file with mode: 0644]