Documentation/power/power_supply_class.rst

Source file repositories/reference/linux-study-clean/Documentation/power/power_supply_class.rst

File Facts

System
Linux kernel
Corpus path
Documentation/power/power_supply_class.rst
Extension
.rst
Size
10734 bytes
Lines
289
Domain
Support Tooling And Documentation
Bucket
Documentation
Inferred role
Support Tooling And Documentation: documentation
Status
atlas-only

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

========================
Linux power supply class
========================

Synopsis
~~~~~~~~
Power supply class used to represent battery, UPS, AC or DC power supply
properties to user-space.

It defines a core set of attributes which should be applicable to (almost)
every power supply out there. Attributes are available via sysfs and uevent
interfaces.

Each attribute has a well-defined meaning, up to the unit of measure used. While
the attributes provided are believed to be universally applicable to any
power supply, specific monitoring hardware may not be able to provide them
all, so any of them may be skipped.

The power supply class is extensible and allows drivers to define their own
attributes.  The core attribute set is subject to the standard Linux evolution
(i.e., if some attribute is found to be applicable to many power
supply types or their drivers, it can be added to the core set).

It also integrates with the LED framework, for the purpose of providing
typically expected feedback of battery charging/fully charged status and
AC/USB power supply online status. (Note that specific details of the
indication (including whether to use it at all) are fully controllable by
user and/or specific machine defaults, per design principles of the LED
framework.)


Attributes/properties
~~~~~~~~~~~~~~~~~~~~~
The power supply class has a predefined set of attributes. This eliminates code
duplication across drivers. The power supply class insists on reusing its
predefined attributes *and* their units.

So, userspace gets a predictable set of attributes and their units for any
kind of power supply, and can process/present them to a user in consistent
manner. Results for different power supplies and machines are also directly
comparable.

See drivers/power/supply/ds2760_battery.c for the example how to declare
and handle attributes.


Units
~~~~~
Quoting include/linux/power_supply.h:

  All voltages, currents, charges, energies, time and temperatures in µV,
  µA, µAh, µWh, seconds and tenths of degree Celsius unless otherwise
  stated. It's driver's job to convert its raw values to units in which
  this class operates.


Attributes/properties detailed
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+--------------------------------------------------------------------------+
|               **Charge/Energy/Capacity - how to not confuse**            |
+--------------------------------------------------------------------------+
| **Because both "charge" (µAh) and "energy" (µWh) represents "capacity"   |
| of battery, this class distinguishes these terms. Don't mix them!**      |
|                                                                          |
| - `CHARGE_*`                                                             |
|	attributes represents capacity in µAh only.                        |
| - `ENERGY_*`                                                             |
|	attributes represents capacity in µWh only.                        |
| - `CAPACITY`                                                             |

Annotation

Implementation Notes