Merge tag 'for-v5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 16 May 2019 01:50:40 +0000 (18:50 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 16 May 2019 01:50:40 +0000 (18:50 -0700)
Pull power supply and reset updates from Sebastian Reichel:
 "Core:
   - Add over-current health state
   - Add standard, adaptive and custom charge types
   - Add new properties for start/end charge threshold

  New Drivers / Hardware:
   - UCS1002 Programmable USB Port Power Controller
   - Ingenic JZ47xx Battery Fuel Gauge
   - AXP20x USB Power: Add AXP813 support
   - AT91 poweroff: Add SAM9X60 support
   - OLPC battery: Add XO-1.5 and XO-1.75 support

  Misc Changes:
   - syscon-reboot: support mask property
   - AXP288 fuel gauge: Blacklist ACEPC T8/T11. Looks like some vendor
     thought it's a good idea to build a desktop system with a fuel
     gauge, that slowly "discharges"...
   - cpcap-battery: Fix calculation errors
   - misc fixes"

* tag 'for-v5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply: (54 commits)
  power: supply: olpc_battery: force the le/be casts
  power: supply: ucs1002: Fix build error without CONFIG_REGULATOR
  power: supply: ucs1002: Fix wrong return value checking
  power: supply: Add driver for Microchip UCS1002
  dt-bindings: power: supply: Add bindings for Microchip UCS1002
  power: supply: core: Add POWER_SUPPLY_HEALTH_OVERCURRENT constant
  power: supply: core: fix clang -Wunsequenced
  power: supply: core: Add missing documentation for CHARGE_CONTROL_* properties
  power: supply: core: Add CHARGE_CONTROL_{START_THRESHOLD,END_THRESHOLD} properties
  power: supply: core: Add Standard, Adaptive, and Custom charge types
  power: supply: axp288_fuel_gauge: Add ACEPC T8 and T11 mini PCs to the blacklist
  power: supply: bq27xxx_battery: Notify also about status changes
  power: supply: olpc_battery: Have the framework register sysfs files for us
  power: supply: olpc_battery: Add OLPC XO 1.75 support
  power: supply: olpc_battery: Avoid using platform_info
  power: supply: olpc_battery: Use devm_power_supply_register()
  power: supply: olpc_battery: Move priv data to a struct
  power: supply: olpc_battery: Use DT to get battery version
  x86/platform/olpc: Use a correct version when making up a battery node
  x86/platform/olpc: Trivial code move in DT fixup
  ...

1  2 
drivers/power/supply/Kconfig
drivers/power/supply/Makefile
drivers/power/supply/power_supply_sysfs.c

@@@ -169,6 -169,17 +169,17 @@@ config BATTERY_COLLI
          Say Y to enable support for the battery on the Sharp Zaurus
          SL-5500 (collie) models.
  
+ config BATTERY_INGENIC
+       tristate "Ingenic JZ47xx SoCs battery driver"
+       depends on MIPS || COMPILE_TEST
+       depends on INGENIC_ADC
+       help
+         Choose this option if you want to monitor battery status on
+         Ingenic JZ47xx SoC based devices.
+         This driver can also be built as a module. If so, the module will be
+         called ingenic-battery.
  config BATTERY_IPAQ_MICRO
        tristate "iPAQ Atmel Micro ASIC battery driver"
        depends on MFD_IPAQ_MICRO
@@@ -475,12 -486,12 +486,12 @@@ config CHARGER_MANAGE
            runtime and in suspend-to-RAM by waking up the system periodically
            with help of suspend_again support.
  
- config CHARGER_LTC3651
-       tristate "LTC3651 charger"
+ config CHARGER_LT3651
+       tristate "Analog Devices LT3651 charger"
        depends on GPIOLIB
        help
-         Say Y to include support for the LTC3651 battery charger which reports
-         its status via GPIO lines.
+         Say Y to include support for the Analog Devices (Linear Technology)
+         LT3651 battery charger which reports its status via GPIO lines.
  
  config CHARGER_MAX14577
        tristate "Maxim MAX14577/77836 battery charger driver"
@@@ -499,13 -510,6 +510,13 @@@ config CHARGER_DETECTOR_MAX1465
          Revision 1.2 and can be found e.g. in Kindle 4/5th generation
          readers and certain LG devices.
  
 +config CHARGER_MAX77650
 +      tristate "Maxim MAX77650 battery charger driver"
 +      depends on MFD_MAX77650
 +      help
 +        Say Y to enable support for the battery charger control of MAX77650
 +        PMICs.
 +
  config CHARGER_MAX77693
        tristate "Maxim MAX77693 battery charger driver"
        depends on MFD_MAX77693
@@@ -667,4 -671,14 +678,14 @@@ config FUEL_GAUGE_SC27X
         Say Y here to enable support for fuel gauge with SC27XX
         PMIC chips.
  
+ config CHARGER_UCS1002
+       tristate "Microchip UCS1002 USB Port Power Controller"
+       depends on I2C
+       depends on OF
+       depends on REGULATOR
+       select REGMAP_I2C
+       help
+         Say Y to enable support for Microchip UCS1002 Programmable
+         USB Port Power Controller with Charger Emulation.
  endif # POWER_SUPPLY
@@@ -34,6 -34,7 +34,7 @@@ obj-$(CONFIG_BATTERY_PMU)     += pmu_batter
  obj-$(CONFIG_BATTERY_OLPC)    += olpc_battery.o
  obj-$(CONFIG_BATTERY_TOSA)    += tosa_battery.o
  obj-$(CONFIG_BATTERY_COLLIE)  += collie_battery.o
+ obj-$(CONFIG_BATTERY_INGENIC) += ingenic-battery.o
  obj-$(CONFIG_BATTERY_IPAQ_MICRO) += ipaq_micro_battery.o
  obj-$(CONFIG_BATTERY_WM97XX)  += wm97xx_battery.o
  obj-$(CONFIG_BATTERY_SBS)     += sbs-battery.o
@@@ -67,10 -68,9 +68,10 @@@ obj-$(CONFIG_CHARGER_LP8727)        += lp8727_
  obj-$(CONFIG_CHARGER_LP8788)  += lp8788-charger.o
  obj-$(CONFIG_CHARGER_GPIO)    += gpio-charger.o
  obj-$(CONFIG_CHARGER_MANAGER) += charger-manager.o
- obj-$(CONFIG_CHARGER_LTC3651) += ltc3651-charger.o
+ obj-$(CONFIG_CHARGER_LT3651)  += lt3651-charger.o
  obj-$(CONFIG_CHARGER_MAX14577)        += max14577_charger.o
  obj-$(CONFIG_CHARGER_DETECTOR_MAX14656)       += max14656_charger_detector.o
 +obj-$(CONFIG_CHARGER_MAX77650)        += max77650-charger.o
  obj-$(CONFIG_CHARGER_MAX77693)        += max77693_charger.o
  obj-$(CONFIG_CHARGER_MAX8997) += max8997_charger.o
  obj-$(CONFIG_CHARGER_MAX8998) += max8998_charger.o
@@@ -88,3 -88,4 +89,4 @@@ obj-$(CONFIG_AXP288_CHARGER)  += axp288_
  obj-$(CONFIG_CHARGER_CROS_USBPD)      += cros_usbpd-charger.o
  obj-$(CONFIG_CHARGER_SC2731)  += sc2731_charger.o
  obj-$(CONFIG_FUEL_GAUGE_SC27XX)       += sc27xx_fuel_gauge.o
+ obj-$(CONFIG_CHARGER_UCS1002) += ucs1002_power.o
@@@ -56,13 -56,13 +56,13 @@@ static const char * const power_supply_
  };
  
  static const char * const power_supply_charge_type_text[] = {
-       "Unknown", "N/A", "Trickle", "Fast"
+       "Unknown", "N/A", "Trickle", "Fast", "Standard", "Adaptive", "Custom"
  };
  
  static const char * const power_supply_health_text[] = {
        "Unknown", "Good", "Overheat", "Dead", "Over voltage",
        "Unspecified failure", "Cold", "Watchdog timer expire",
-       "Safety timer expire"
+       "Safety timer expire", "Over current"
  };
  
  static const char * const power_supply_technology_text[] = {
@@@ -274,6 -274,8 +274,8 @@@ static struct device_attribute power_su
        POWER_SUPPLY_ATTR(constant_charge_voltage_max),
        POWER_SUPPLY_ATTR(charge_control_limit),
        POWER_SUPPLY_ATTR(charge_control_limit_max),
+       POWER_SUPPLY_ATTR(charge_control_start_threshold),
+       POWER_SUPPLY_ATTR(charge_control_end_threshold),
        POWER_SUPPLY_ATTR(input_current_limit),
        POWER_SUPPLY_ATTR(energy_full_design),
        POWER_SUPPLY_ATTR(energy_empty_design),
@@@ -383,11 -385,15 +385,11 @@@ int power_supply_uevent(struct device *
        char *prop_buf;
        char *attrname;
  
 -      dev_dbg(dev, "uevent\n");
 -
        if (!psy || !psy->desc) {
                dev_dbg(dev, "No power supply yet\n");
                return ret;
        }
  
 -      dev_dbg(dev, "POWER_SUPPLY_NAME=%s\n", psy->desc->name);
 -
        ret = add_uevent_var(env, "POWER_SUPPLY_NAME=%s", psy->desc->name);
        if (ret)
                return ret;
                        goto out;
                }
  
 -              dev_dbg(dev, "prop %s=%s\n", attrname, prop_buf);
 -
                ret = add_uevent_var(env, "POWER_SUPPLY_%s=%s", attrname, prop_buf);
                kfree(attrname);
                if (ret)