From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1DCA1C433F5 for ; Wed, 29 Sep 2021 09:38:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 05D6961368 for ; Wed, 29 Sep 2021 09:38:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245098AbhI2Jj6 (ORCPT ); Wed, 29 Sep 2021 05:39:58 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:54240 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S245070AbhI2Jj6 (ORCPT ); Wed, 29 Sep 2021 05:39:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1632908297; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=a2VLRqIeQMjxdhXChG02+zBG9Ub9Twsnh9MImIQkR/c=; b=Mu0SM/pmGUo9+X74hlmiPiHqzmEiVJSzxVoyfEzv1RbTd2/x6btSzXxBHMGuIqMQVufS0B BxhhO9VdpAXdUar+bJyMagSoHRTm2/VG/wUuojoHRrHX609Ycht3i/nbe4JEKQeeeMsMMt U6gZqUwSMBV4g7yE5Ic/8uyX0kjkDX4= Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com [209.85.208.71]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-521-_z-oeIaYNLC9ANan3YHb4w-1; Wed, 29 Sep 2021 05:38:15 -0400 X-MC-Unique: _z-oeIaYNLC9ANan3YHb4w-1 Received: by mail-ed1-f71.google.com with SMTP id ec14-20020a0564020d4e00b003cf5630c190so1824203edb.3 for ; Wed, 29 Sep 2021 02:38:15 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=a2VLRqIeQMjxdhXChG02+zBG9Ub9Twsnh9MImIQkR/c=; b=3z7zAXGBGz0rsbY4wH4ffWtQfbxgU2d/q5aBZR3tXGZeVDRqeNMcMInuJGPb2BWbaF W3uCV9j905TRUwSxYzJbkHe53be5HAbs7/tUG9G35W0/HpxDoI/W80VfU1XJphcA9P0P P14t+zIBjtNKH9ffIWht+AY0+qCytyZH7XVpgcZUjlhA1uDmPOKM/mU8gYH4VYr2nYfS subWF5KFRo7UZEi1syjuFTpBwZpOvDTs+fr8HRqQrThNigZZr0kUYABfAPVcRxuBMJii aJ5mmGXqO6Y6Mow8z/f/qEhaC22jjAsow2346KCEL7RqBzEFo+D86uGZNy4tRWa+sbpk exfg== X-Gm-Message-State: AOAM530LEWGyvGZA+AkpGhLq4yDsppqEAAJxXH11IphNcBF0//qagENt qy10/RPgUSslur5gQLxotbZkL5SBh3Z7czCzzYurSp/9J1YV4J62tGQHCsiFKDPGXQqm8s0NGTV DTTaQZOFdOL8S/ls1+2kSDf8uaDgADdZZOg== X-Received: by 2002:a50:9d49:: with SMTP id j9mr13265807edk.39.1632908293597; Wed, 29 Sep 2021 02:38:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzRfSVCIAdDZnCC26aPSj1/BggBi+9ozAXUqI2G8dfol8PLMfmrcvmbuXLCr/aa/3YEFJMEAQ== X-Received: by 2002:a50:9d49:: with SMTP id j9mr13265787edk.39.1632908293427; Wed, 29 Sep 2021 02:38:13 -0700 (PDT) Received: from x1.localdomain (2001-1c00-0c1e-bf00-1054-9d19-e0f0-8214.cable.dynamic.v6.ziggo.nl. [2001:1c00:c1e:bf00:1054:9d19:e0f0:8214]) by smtp.gmail.com with ESMTPSA id dk27sm1137855edb.19.2021.09.29.02.38.12 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 29 Sep 2021 02:38:12 -0700 (PDT) Subject: Re: [RFC] add standardized attributes for force_discharge and inhibit_charge To: =?UTF-8?Q?Nicol=c3=b2_Piazzalunga?= , Sebastian Reichel Cc: linux-pm@vger.kernel.org, "platform-driver-x86@vger.kernel.org" , Thomas Koch , "smclt30p@gmail.com" References: <21569a89-8303-8573-05fb-c2fec29983d1@gmail.com> From: Hans de Goede Message-ID: <77e39b3e-fa51-54fe-1898-4f43895ac2c6@redhat.com> Date: Wed, 29 Sep 2021 11:38:12 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <21569a89-8303-8573-05fb-c2fec29983d1@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: platform-driver-x86@vger.kernel.org Hi, On 9/28/21 10:11 PM, Nicolò Piazzalunga wrote: > Hi Sebastian, > > this is a proposal to introduce separate and standardized attributes > for force_discharge and inhibit_charge of a battery. > These are simpler than using status from a user-space perspective, > as discussed on the platform-driver-x86 mail list. To clarify things a bit here, the reasons for not using status for this are: 1. This would require adding new status-es which so far have never been seen by userspace, which will likely cause confusion of e.g. upower. IOW I believe that adding new status-es for this would be a userspace ABI break. 2. The devices where we currently want to use this functionality use the ACPI battery interface, which is standardized between vendors and dealt with by drivers/apci/battery.c but this kinda extra functionality is vendor specific. The drivers/apci/battery.c has code allowing vendor drivers to "hook" ACPI batteries and get add/remove calls for them. Then in these calls currently the vendor drivers do: device_add_groups(&battery->dev, my_prop_group)) Which allows them to register extra sysfs_attributes for for example charge_control_start_threshold and charge_control_end_threshold. This works well, but having vendor drivers somehow intercept / muck with the status handling in drivers/apci/battery.c is a non trival problem. Where as with new separate attributes this is already a solved problem. > --- > Documentation/ABI/testing/sysfs-class-power | 27 +++++++++++++++++++++ > drivers/power/supply/power_supply_sysfs.c | 2 ++ > include/linux/power_supply.h | 2 ++ > 3 files changed, 31 insertions(+) > > diff --git a/Documentation/ABI/testing/sysfs-class-power b/Documentation/ABI/testing/sysfs-class-power > index ca830c6cd809..2c5f48f49273 100644 > --- a/Documentation/ABI/testing/sysfs-class-power > +++ b/Documentation/ABI/testing/sysfs-class-power > @@ -455,6 +455,33 @@ Description: > "Unknown", "Charging", "Discharging", > "Not charging", "Full" > > +What: /sys/class/power_supply//force_discharge > +Date: September 2021 > +Contact: linux-pm@vger.kernel.org > +Description: > + Represents the forced discharging status of the battery. > + > + Access: Read, Write > + > + Valid values: > + == ==================================== > + 0: Force discharge while AC is attached > + 1: Terminate forced discharging > + I think you have 0 and 1 swapped here? I would expect 1 to be enable forced discharging and 0 be normal operation, iow only discharge when not on AC. > +What: /sys/class/power_supply//inhibit_charge > +Date: September 2021 > +Contact: linux-pm@vger.kernel.org > +Description: > + Represents the presence of a manual override over the threshold > + attributes of the battery, thus inhibiting battery charge. > + > + Access: Read, Write > + > + Valid values: > + == ====================== > + 1: Stop charging > + 0: Terminate the override > + > What: /sys/class/power_supply//technology > Date: May 2007 > Contact: linux-pm@vger.kernel.org > diff --git a/drivers/power/supply/power_supply_sysfs.c b/drivers/power/supply/power_supply_sysfs.c > index c3d7cbcd4fad..6e7303935810 100644 > --- a/drivers/power/supply/power_supply_sysfs.c > +++ b/drivers/power/supply/power_supply_sysfs.c > @@ -136,6 +136,8 @@ static const char * const POWER_SUPPLY_SCOPE_TEXT[] = { > static struct power_supply_attr power_supply_attrs[] = { > /* Properties of type `int' */ > POWER_SUPPLY_ENUM_ATTR(STATUS), > + POWER_SUPPLY_ENUM_ATTR(FORCE_DISCHARGE), > + POWER_SUPPLY_ENUM_ATTR(INHIBIT_CHARGE), > POWER_SUPPLY_ENUM_ATTR(CHARGE_TYPE), > POWER_SUPPLY_ENUM_ATTR(HEALTH), > POWER_SUPPLY_ATTR(PRESENT), > diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h > index 9ca1f120a211..4340fe65df4d 100644 > --- a/include/linux/power_supply.h > +++ b/include/linux/power_supply.h > @@ -96,6 +96,8 @@ enum { > enum power_supply_property { > /* Properties of type `int' */ > POWER_SUPPLY_PROP_STATUS = 0, > + POWER_SUPPLY_PROP_FORCE_DISCHARGE, > + POWER_SUPPLY_PROP_INHIBIT_CHARGE, > POWER_SUPPLY_PROP_CHARGE_TYPE, > POWER_SUPPLY_PROP_HEALTH, > POWER_SUPPLY_PROP_PRESENT, > Regards, Hans