power: supply: Introduces bypass charging property
authorRicardo Rivera-Matos <rriveram@opensource.cirrus.com>
Tue, 15 Feb 2022 00:07:56 +0000 (18:07 -0600)
committerSebastian Reichel <sebastian.reichel@collabora.com>
Thu, 24 Feb 2022 11:09:20 +0000 (12:09 +0100)
Adds a POWER_SUPPLY_CHARGE_TYPE_BYPASS option to the POWER_SUPPLY_PROP_CHARGE_TYPE
property to facilitate bypass charging operation.

In bypass charging operation, the charger bypasses the charging path around the
integrated converter allowing for a "smart" wall adaptor to perform the power
conversion externally.

This operational mode is critical for the USB PPS standard of power adaptors and is
becoming a common feature in modern charging ICs such as:

- BQ25980
- BQ25975
- BQ25960
- LN8000
- LN8410

Signed-off-by: Ricardo Rivera-Matos <rriveram@opensource.cirrus.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Documentation/ABI/testing/sysfs-class-power
drivers/power/supply/power_supply_sysfs.c
include/linux/power_supply.h

index fde21d9..738dcb0 100644 (file)
@@ -380,13 +380,16 @@ Description:
                algorithm to adjust the charge rate dynamically, without
                any user configuration required. "Custom" means that the charger
                uses the charge_control_* properties as configuration for some
-               different algorithm.
+               different algorithm. "Bypass" means the charger bypasses the
+               charging path around the integrated converter allowing for a
+               "smart" wall adaptor to perform the power conversion
+               externally.
 
                Access: Read, Write
 
                Valid values:
                              "Unknown", "N/A", "Trickle", "Fast", "Standard",
-                             "Adaptive", "Custom"
+                             "Adaptive", "Custom", "Bypass"
 
 What:          /sys/class/power_supply/<supply_name>/charge_term_current
 Date:          July 2014
index c0dfcfa..4239591 100644 (file)
@@ -89,6 +89,7 @@ static const char * const POWER_SUPPLY_CHARGE_TYPE_TEXT[] = {
        [POWER_SUPPLY_CHARGE_TYPE_ADAPTIVE]     = "Adaptive",
        [POWER_SUPPLY_CHARGE_TYPE_CUSTOM]       = "Custom",
        [POWER_SUPPLY_CHARGE_TYPE_LONGLIFE]     = "Long Life",
+       [POWER_SUPPLY_CHARGE_TYPE_BYPASS]       = "Bypass",
 };
 
 static const char * const POWER_SUPPLY_HEALTH_TEXT[] = {
index 0061119..c135196 100644 (file)
@@ -49,6 +49,7 @@ enum {
        POWER_SUPPLY_CHARGE_TYPE_ADAPTIVE,      /* dynamically adjusted speed */
        POWER_SUPPLY_CHARGE_TYPE_CUSTOM,        /* use CHARGE_CONTROL_* props */
        POWER_SUPPLY_CHARGE_TYPE_LONGLIFE,      /* slow speed, longer life */
+       POWER_SUPPLY_CHARGE_TYPE_BYPASS,        /* bypassing the charger */
 };
 
 enum {