|
|
Subscribe / Log in / New account

platform/x86: ayaneo-ec: Add Ayaneo Embedded Controller platform driver

From:  Antheas Kapenekakis <lkml-AT-antheas.dev>
To:  platform-driver-x86-AT-vger.kernel.org
Subject:  [PATCH v3 0/6] platform/x86: ayaneo-ec: Add Ayaneo Embedded Controller platform driver
Date:  Fri, 31 Oct 2025 17:36:45 +0100
Message-ID:  <20251031163651.1465981-1-lkml@antheas.dev>
Cc:  linux-kernel-AT-vger.kernel.org, linux-hwmon-AT-vger.kernel.org, Hans de Goede <hansg-AT-kernel.org>, Ilpo Järvinen <ilpo.jarvinen-AT-linux.intel.com>, Derek John Clark <derekjohn.clark-AT-gmail.com>, Joaquín Ignacio Aramendía <samsagax-AT-gmail.com>, Jean Delvare <jdelvare-AT-suse.com>, Guenter Roeck <linux-AT-roeck-us.net>, Antheas Kapenekakis <lkml-AT-antheas.dev>
Archive-link:  Article

This series introduces a platform driver for Ayaneo devices, ayaneo-ec.
This driver provides hwmon support, power management, and module management
(for the new Ayaneo 3 device). Module management is done through the new
firmware attributes sysfs interface.

Luckily, all Ayaneo devices with an ACPI mapped EC use the same registers.
Older devices also use a memory mapped region for RGB[1], but that is
replaced by HID in the new Ayaneo 3. Therefore, this allows for a simple
driver design that provides robust future support. The memory mapped region
can be upstreamed as a different RGB driver in the future or remain
out-of-tree[1].

This change also allows cleaning up the oxpec driver, by removing Ayaneo
devices from it. In parallel, charge limiting is added for these devices.

[1] https://github.com/ShadowBlip/ayaneo-platform

---

V3: https://lore.kernel.org/all/20251015084414.1391595-1-lkml...
V2: https://lore.kernel.org/all/20251015084414.1391595-1-lkml...
V1: https://lore.kernel.org/all/20250820160628.99678-1-lkml@a...

Changes since V3:
  - Fix various non-functional nits
  - On hibernation restore, use restore instead of thaw, switch to bools,
    and restore fan pwm mode, but only after the first pwm write after
    hibernation. Also, release pwm when entering hibernation.

Changes since V2:
  - Remove i counter from suspend hook by hardcoding the index
    (we already allocate the maximum size for the cache anyway)
  - Rename quirks to end in quirks
  - Add missing includes to controller sysfs patch, use switch statement

Changes since V1:
  - Use plain sysfs attrs for magic module attributes
  - Combine quirk for power and modules, so attribute tree is simpler
  - Use switch statement in hwmon
  - Add hibernation hook for charge bypass in last patch
    - Restoring fan speed is a liability so it is omitted, see patch notes
      Note that for EC managed fan curves, it would be acceptable
    - Regmap comment: Using regmap is unprecedented for ACPI mapped ECs
      and overkill for one value (> 100 LOC)
  - fixp_linear_interpolate() comment: it requires importing an extra header,
    is not used for static parameters in other modules, and expands to the
    same equation for parameters used, so it is omitted

Antheas Kapenekakis (6):
  platform/x86: ayaneo-ec: Add Ayaneo Embedded Controller platform
    driver
  platform/x86: ayaneo-ec: Add hwmon support
  platform/x86: ayaneo-ec: Add charge control support
  platform/x86: ayaneo-ec: Add controller power and modules attributes
  platform/x86: ayaneo-ec: Move Ayaneo devices from oxpec to ayaneo-ec
  platform/x86: ayaneo-ec: Add suspend hook

 .../ABI/testing/sysfs-platform-ayaneo-ec      |  19 +
 MAINTAINERS                                   |   7 +
 drivers/platform/x86/Kconfig                  |  16 +-
 drivers/platform/x86/Makefile                 |   3 +
 drivers/platform/x86/ayaneo-ec.c              | 582 ++++++++++++++++++
 drivers/platform/x86/oxpec.c                  | 115 +---
 6 files changed, 625 insertions(+), 117 deletions(-)
 create mode 100644 Documentation/ABI/testing/sysfs-platform-ayaneo-ec
 create mode 100644 drivers/platform/x86/ayaneo-ec.c


base-commit: 211ddde0823f1442e4ad052a2f30f050145ccada
-- 
2.51.1





Copyright © 2025, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds