Received: by 2002:a05:7208:1509:b0:82:bbfa:f723 with SMTP id o9csp218038rbf; Tue, 23 Apr 2024 23:55:08 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCW/0DDIeaPYDvEuYaEf1wFn8dKJDKTKVamgOi6VuTpTZPXNlXsRF20fZlsa0t6R7r+i3b+A29D9iat0izqttSgbup+5hUpzpeYEtZYKkQ== X-Google-Smtp-Source: AGHT+IHY/xBvg0Ooj+2jBv/kdrCSpSYThZZFQyis+CwBZK1nGPel7TqN9lE8blmg5xI1ryE9VTXm X-Received: by 2002:a17:907:700c:b0:a55:9a35:5e9d with SMTP id wr12-20020a170907700c00b00a559a355e9dmr956866ejb.42.1713941707851; Tue, 23 Apr 2024 23:55:07 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1713941707; cv=pass; d=google.com; s=arc-20160816; b=geEo2coJCxFAEQZAiDvnNNnRHWe/sLJVgWZyC1g6pdkorV3R3qW5iWZuTFRvzOuprq yqE0KFly5dPb8HeryrB568U5y0OzxokGUJyFHP3zqzHZVhTg8wDsfFbo5wHqFjRgAmz8 URZTptGH5yUDpMau15OmsHPgT9aUiXPOHW8NhPCCXkkn22jb9TUnD4jNmVq+KiOZ7Ahw XQvss47lWSr6ks5tbQMIkqK5M8KParnwXPYIfhAZ/g6a6eY1WzxFhBLrW2ydIeF8wiTW s9+tExZGX524KYZkNGzUNblfnTIX7ShhznGEmC4GumzEPkd649+Kp4V7gNaJ0IeUYJJq o/4Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=9Rnl11haAjWuBjoVyJ0eh/5ru7REz1Y+lwr2vaY6F40=; fh=2t/qjhwLO1DZuN3cBK/n/BLQ8w9sR+3JoTuh8C/uS64=; b=H0sc55/ujqA9mJRmiWSkDz6qhcFlYE5PTIZ5y518XyHFu3E1fBdnDTgq/yim10ZWym pZ1QY9MiXyeGXK8F30i2R0+khCFUZ22Bqgzzud7/NInu3TRy998ir7sRNOURjvUypuJo DTXPvDfbstpp/jK6F2QqjP1ucXO39dJHCfXzS89Kz+WfqqRBXLqTsZm2mhpsBXPxIrXA DU5gTxC0c68lRvI9tj8/ZruFTcwPuVAQrzDWqETd6/06jcot50SNNnQgeAiZGp6K0r13 glatSei6W1VPiKWp1KwSRzxyY5KLUB0ZdlDUjBiAhrFnOUFnw3KpPm00SQtvAKbacwht xK6Q==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=jVkePhGc; arc=pass (i=1 spf=pass spfdomain=redhat.com dkim=pass dkdomain=redhat.com dmarc=pass fromdomain=redhat.com); spf=pass (google.com: domain of linux-kernel+bounces-156417-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-156417-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id x23-20020a1709065ad700b00a5235631222si7808456ejs.240.2024.04.23.23.55.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Apr 2024 23:55:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-156417-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=jVkePhGc; arc=pass (i=1 spf=pass spfdomain=redhat.com dkim=pass dkdomain=redhat.com dmarc=pass fromdomain=redhat.com); spf=pass (google.com: domain of linux-kernel+bounces-156417-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-156417-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 6EA7E1F23A7F for ; Wed, 24 Apr 2024 06:55:07 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id F3EF2158A16; Wed, 24 Apr 2024 06:54:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="jVkePhGc" Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7DF53158A14 for ; Wed, 24 Apr 2024 06:53:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713941642; cv=none; b=UKiZLXeNUk8ZWExGrt54dQon4lZYpPzvKQX+ixomW9HtZxjUxTLFaS5EpawcW+HS+I2+gKSeaRM4lP6s8yTzBnzO62sxMDyQB97MxQMvNKX3F+X3HpehU3HJcAB5b5wzAjKUY7By+/y6rtMmprZ6Jd5XV0ds5WlgFuO6BwH2UtE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713941642; c=relaxed/simple; bh=GHM4v7qpxT7Qn4cPthLtv8WaQ+fD/Vhfx1fxzBalrng=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HFD73+QoUhlS11ROjgNQadojjfClI2WwmYY41rgCBKW998yxs6mk9odMDeMoC4Ct0fLAdiY2fGYQt2T3lpQOCU7Zw6QmNsCi5WAxQk/tw0Dx2Yv7komv/m3HFJf8QxenDhaPrbUvqWaMJUCfV/3thwHNlKfytH/YPpg8LCYq+xQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=jVkePhGc; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1713941638; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9Rnl11haAjWuBjoVyJ0eh/5ru7REz1Y+lwr2vaY6F40=; b=jVkePhGc2/b9aBCNKjmdfeQxIWCBo8KdZBU+IbB2l1X1stILsjZRgTVM7vAdg+0N2ezrKu UkFrUN1cVkwg0VGdQMZwojFn9nuPS0XcqOQOpVekj5MO5JeAtyNXhhre8PIGjHg1C796Ma JsCEEf+VbZjigYPNs+07bmbRwN+l+nQ= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-31-W3V5_z2HOJCdUSBkY0COGQ-1; Wed, 24 Apr 2024 02:53:54 -0400 X-MC-Unique: W3V5_z2HOJCdUSBkY0COGQ-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id B0D7F104B501; Wed, 24 Apr 2024 06:53:53 +0000 (UTC) Received: from fedora.redhat.com (unknown [10.39.193.73]) by smtp.corp.redhat.com (Postfix) with ESMTP id 44E00C13FA3; Wed, 24 Apr 2024 06:53:46 +0000 (UTC) From: Kate Hsuan To: Pavel Machek , Lee Jones , linux-leds@vger.kernel.org, platform-driver-x86@vger.kernel.org, Hans de Goede , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , =?UTF-8?q?Andr=C3=A9=20Apitzsch?= , linux-kernel@vger.kernel.org, Andy Shevchenko , Sebastian Reichel , linux-pm@vger.kernel.org Cc: Kate Hsuan , Sebastian Reichel Subject: [PATCH v7 5/6] power: supply: power-supply-leds: Add charging_orange_full_green trigger for RGB LED Date: Wed, 24 Apr 2024 14:52:11 +0800 Message-ID: <20240424065212.263784-6-hpa@redhat.com> In-Reply-To: <20240424065212.263784-1-hpa@redhat.com> References: <20240424065212.263784-1-hpa@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.8 Add a charging_orange_full_green LED trigger and the trigger is based on led_mc_trigger_event() which can set an RGB LED when the trigger is triggered. The LED will show orange when the battery status is charging. The LED will show green when the battery status is full. Link: https://lore.kernel.org/linux-leds/f40a0b1a-ceac-e269-c2dd-0158c5b4a1ad@gmail.com/ Signed-off-by: Kate Hsuan Acked-by: Sebastian Reichel --- drivers/power/supply/power_supply_leds.c | 26 ++++++++++++++++++++++++ include/linux/power_supply.h | 2 ++ 2 files changed, 28 insertions(+) diff --git a/drivers/power/supply/power_supply_leds.c b/drivers/power/supply/power_supply_leds.c index c7db29d5fcb8..8dd99199c65b 100644 --- a/drivers/power/supply/power_supply_leds.c +++ b/drivers/power/supply/power_supply_leds.c @@ -22,6 +22,9 @@ static void power_supply_update_bat_leds(struct power_supply *psy) { union power_supply_propval status; + unsigned int intensity_green[3] = {255, 0, 0}; + unsigned int intensity_orange[3] = {128, 0, 255}; + unsigned int intensity_red[3] = {0, 0, 255}; if (power_supply_get_property(psy, POWER_SUPPLY_PROP_STATUS, &status)) return; @@ -36,12 +39,20 @@ static void power_supply_update_bat_leds(struct power_supply *psy) /* Going from blink to LED on requires a LED_OFF event to stop blink */ led_trigger_event(psy->charging_blink_full_solid_trig, LED_OFF); led_trigger_event(psy->charging_blink_full_solid_trig, LED_FULL); + led_mc_trigger_event(psy->charging_orange_full_green_trig, + intensity_green, + ARRAY_SIZE(intensity_green), + LED_FULL); break; case POWER_SUPPLY_STATUS_CHARGING: led_trigger_event(psy->charging_full_trig, LED_FULL); led_trigger_event(psy->charging_trig, LED_FULL); led_trigger_event(psy->full_trig, LED_OFF); led_trigger_blink(psy->charging_blink_full_solid_trig, 0, 0); + led_mc_trigger_event(psy->charging_orange_full_green_trig, + intensity_orange, + ARRAY_SIZE(intensity_orange), + LED_FULL); break; default: led_trigger_event(psy->charging_full_trig, LED_OFF); @@ -49,6 +60,10 @@ static void power_supply_update_bat_leds(struct power_supply *psy) led_trigger_event(psy->full_trig, LED_OFF); led_trigger_event(psy->charging_blink_full_solid_trig, LED_OFF); + led_mc_trigger_event(psy->charging_orange_full_green_trig, + intensity_red, + ARRAY_SIZE(intensity_red), + LED_OFF); break; } } @@ -74,6 +89,11 @@ static int power_supply_create_bat_triggers(struct power_supply *psy) if (!psy->charging_blink_full_solid_trig_name) goto charging_blink_full_solid_failed; + psy->charging_orange_full_green_trig_name = kasprintf(GFP_KERNEL, + "%s-charging-orange-full-green", psy->desc->name); + if (!psy->charging_orange_full_green_trig_name) + goto charging_red_full_green_failed; + led_trigger_register_simple(psy->charging_full_trig_name, &psy->charging_full_trig); led_trigger_register_simple(psy->charging_trig_name, @@ -82,9 +102,13 @@ static int power_supply_create_bat_triggers(struct power_supply *psy) &psy->full_trig); led_trigger_register_simple(psy->charging_blink_full_solid_trig_name, &psy->charging_blink_full_solid_trig); + led_trigger_register_simple(psy->charging_orange_full_green_trig_name, + &psy->charging_orange_full_green_trig); return 0; +charging_red_full_green_failed: + kfree(psy->charging_blink_full_solid_trig_name); charging_blink_full_solid_failed: kfree(psy->full_trig_name); full_failed: @@ -101,10 +125,12 @@ static void power_supply_remove_bat_triggers(struct power_supply *psy) led_trigger_unregister_simple(psy->charging_trig); led_trigger_unregister_simple(psy->full_trig); led_trigger_unregister_simple(psy->charging_blink_full_solid_trig); + led_trigger_unregister_simple(psy->charging_orange_full_green_trig); kfree(psy->charging_blink_full_solid_trig_name); kfree(psy->full_trig_name); kfree(psy->charging_trig_name); kfree(psy->charging_full_trig_name); + kfree(psy->charging_orange_full_green_trig_name); } /* Generated power specific LEDs triggers. */ diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h index c0992a77feea..9b6898085224 100644 --- a/include/linux/power_supply.h +++ b/include/linux/power_supply.h @@ -318,6 +318,8 @@ struct power_supply { char *online_trig_name; struct led_trigger *charging_blink_full_solid_trig; char *charging_blink_full_solid_trig_name; + struct led_trigger *charging_orange_full_green_trig; + char *charging_orange_full_green_trig_name; #endif }; -- 2.44.0