From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: Armin Wolf <W_Armin@gmx.de>
Cc: hansg@kernel.org, ilpo.jarvinen@linux.intel.com,
wse@tuxedocomputers.com, platform-driver-x86@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 3/5] platform/x86: uniwill-laptop: Fix breathing animation on Intel QC
Date: Mon, 5 Oct 2026 19:13:23 +0300 (EEST) [thread overview]
Message-ID: <151f0983-9ebd-ee6e-bda9-a9158c69a8b9@linux.intel.com> (raw)
In-Reply-To: <20260905130138.6814-4-W_Armin@gmx.de>
On Sat, 5 Sep 2026, Armin Wolf wrote:
> Intel NUC 9 Extreme (Queens County) devices have a separate bit
> inside the EC_ADDR_LIGHTBAR_AC:CTRL register for enabling the
Should be _
--
i.
> breathing animation in s2idle mode.
>
> Add support for this additional setting.
>
> Signed-off-by: Armin Wolf <W_Armin@gmx.de>
> ---
> .../ABI/testing/sysfs-driver-uniwill-laptop | 4 +--
> drivers/platform/x86/uniwill/uniwill-acpi.c | 27 ++++++++++++++-----
> 2 files changed, 22 insertions(+), 9 deletions(-)
>
> diff --git a/Documentation/ABI/testing/sysfs-driver-uniwill-laptop b/Documentation/ABI/testing/sysfs-driver-uniwill-laptop
> index b9b9feebe2ed..f3060aaf8a76 100644
> --- a/Documentation/ABI/testing/sysfs-driver-uniwill-laptop
> +++ b/Documentation/ABI/testing/sysfs-driver-uniwill-laptop
> @@ -35,8 +35,8 @@ KernelVersion: 6.19
> Contact: Armin Wolf <W_Armin@gmx.de>
> Description:
> Causes the integrated lightbar to display a breathing animation when the machine
> - has been suspended and is running on AC power. Writing "1"/"0" into this file
> - enables/disables this functionality.
> + has been suspended, is running on AC power and the lightbar brightness not zero.
> + Writing "1"/"0" into this file enables/disables this functionality.
>
> Reading this file returns the current status of the breathing animation
> functionality.
> diff --git a/drivers/platform/x86/uniwill/uniwill-acpi.c b/drivers/platform/x86/uniwill/uniwill-acpi.c
> index 6366171c6981..e527ed7461c3 100644
> --- a/drivers/platform/x86/uniwill/uniwill-acpi.c
> +++ b/drivers/platform/x86/uniwill/uniwill-acpi.c
> @@ -165,9 +165,10 @@
> #define EC_ADDR_LIGHTBAR_AC_CTRL 0x0748
> #define LIGHTBAR_APP_EXISTS BIT(0)
> #define LIGHTBAR_POWER_SAVE BIT(1)
> -#define LIGHTBAR_S0_OFF BIT(2)
> -#define LIGHTBAR_S3_OFF BIT(3) // Breathing animation when suspended
> -#define LIGHTBAR_WELCOME BIT(7) // Rainbow animation
> +#define LIGHTBAR_S0_OFF BIT(2) /* Also disables animations */
> +#define LIGHTBAR_S3_OFF BIT(3) /* No breathing animation when in s2ram */
> +#define LIGHTBAR_MODERN_STANDBY_ON BIT(6) /* Breathing animation when in s2idle */
> +#define LIGHTBAR_WELCOME BIT(7) /* Rainbow animation */
>
> #define EC_ADDR_LIGHTBAR_AC_RED 0x0749
>
> @@ -306,7 +307,7 @@
> #define EC_ADDR_USB_C_POWER_PRIORITY 0x07CC
> #define USB_C_POWER_PRIORITY BIT(7)
>
> -/* Same bits as EC_ADDR_LIGHTBAR_AC_CTRL except LIGHTBAR_S3_OFF */
> +/* Same bits as EC_ADDR_LIGHTBAR_AC_CTRL except LIGHTBAR_S3_OFF and LIGHTBAR_MODERN_STANDBY_ON */
> #define EC_ADDR_LIGHTBAR_BAT_CTRL 0x07E2
>
> #define EC_ADDR_LIGHTBAR_BAT_RED 0x07E3
> @@ -911,12 +912,13 @@ static ssize_t breathing_in_suspend_store(struct device *dev, struct device_attr
> return ret;
>
> if (enable)
> - value = 0;
> + value = LIGHTBAR_MODERN_STANDBY_ON;
> else
> value = LIGHTBAR_S3_OFF;
>
> /* We only access a single register here, so we do not need to use data->led_lock */
> - ret = regmap_update_bits(data->regmap, EC_ADDR_LIGHTBAR_AC_CTRL, LIGHTBAR_S3_OFF, value);
> + ret = regmap_update_bits(data->regmap, EC_ADDR_LIGHTBAR_AC_CTRL,
> + LIGHTBAR_S3_OFF | LIGHTBAR_MODERN_STANDBY_ON, value);
> if (ret < 0)
> return ret;
>
> @@ -934,6 +936,10 @@ static ssize_t breathing_in_suspend_show(struct device *dev, struct device_attri
> if (ret < 0)
> return ret;
>
> + /*
> + * We only test LIGHTBAR_S3_OFF here, because LIGHTBAR_MODERN_STANDBY_ON
> + * should have the exact opposite value.
> + */
> return sysfs_emit(buf, "%d\n", !(value & LIGHTBAR_S3_OFF));
> }
>
> @@ -1541,7 +1547,8 @@ static struct led_trigger uniwill_lightbar_trigger = {
> .trigger_type = &uniwill_lightbar_trigger_type,
> };
>
> -#define LIGHTBAR_MASK (LIGHTBAR_APP_EXISTS | LIGHTBAR_S0_OFF | LIGHTBAR_S3_OFF | LIGHTBAR_WELCOME)
> +#define LIGHTBAR_MASK (LIGHTBAR_APP_EXISTS | LIGHTBAR_S0_OFF | LIGHTBAR_S3_OFF | \
> + LIGHTBAR_MODERN_STANDBY_ON | LIGHTBAR_WELCOME)
>
> static int uniwill_led_init(struct uniwill_data *data)
> {
> @@ -1574,6 +1581,11 @@ static int uniwill_led_init(struct uniwill_data *data)
> return ret;
>
> value |= LIGHTBAR_APP_EXISTS;
> + if (value & LIGHTBAR_S3_OFF)
> + value &= ~LIGHTBAR_MODERN_STANDBY_ON;
> + else
> + value |= LIGHTBAR_MODERN_STANDBY_ON;
> +
> ret = regmap_write(data->regmap, EC_ADDR_LIGHTBAR_AC_CTRL, value);
> if (ret < 0)
> return ret;
> @@ -1583,6 +1595,7 @@ static int uniwill_led_init(struct uniwill_data *data)
> * running on battery power.
> */
> value |= LIGHTBAR_S3_OFF;
> + value &= ~LIGHTBAR_MODERN_STANDBY_ON;
> ret = regmap_update_bits(data->regmap, EC_ADDR_LIGHTBAR_BAT_CTRL, LIGHTBAR_MASK, value);
> if (ret < 0)
> return ret;
>
next prev parent reply other threads:[~2026-10-05 16:13 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-05 13:01 [PATCH 0/5] platform/x86: uniwill-laptop: Lightbar fixes Armin Wolf
2026-09-05 13:01 ` [PATCH 1/5] platform/x86: uniwill-laptop: Report correct lightbar brightness Armin Wolf
2026-10-05 16:12 ` Ilpo Järvinen
2026-09-05 13:01 ` [PATCH 2/5] platform/x86: uniwill-laptop: Implement rainbow animation as trigger Armin Wolf
2026-09-05 13:01 ` [PATCH 3/5] platform/x86: uniwill-laptop: Fix breathing animation on Intel QC Armin Wolf
2026-10-05 16:13 ` Ilpo Järvinen [this message]
2026-09-05 13:01 ` [PATCH 4/5] platform/x86: uniwill-laptop: Label multicolor LEDs correctly Armin Wolf
2026-09-05 13:01 ` [PATCH 5/5] platform/x86: uniwill-laptop: Extend support for the Intel NUC x15 Armin Wolf
2026-09-22 20:45 ` [PATCH 0/5] platform/x86: uniwill-laptop: Lightbar fixes Armin Wolf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=151f0983-9ebd-ee6e-bda9-a9158c69a8b9@linux.intel.com \
--to=ilpo.jarvinen@linux.intel.com \
--cc=W_Armin@gmx.de \
--cc=hansg@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=platform-driver-x86@vger.kernel.org \
--cc=wse@tuxedocomputers.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.