Merge tag 'for-v6.1' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 7 Oct 2022 18:48:30 +0000 (11:48 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 7 Oct 2022 18:48:30 +0000 (11:48 -0700)
Pull power supply and reset updates from Sebastian Reichel:

 - new maintenance charging documentation

 - mt6370: new charger driver

 - bq25890: support input current limit

 - added Qualcomm PMK8350 PON support

 - misc minor fixes

* tag 'for-v6.1' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply: (22 commits)
  power: supply: ab8500: remove unused static local variable
  power: supply: mt6370: Fix return value check in mt6370_chg_probe()
  power: supply: ab8500: Remove unused struct ab8500_chargalg_sysfs_entry
  power: supply: mt6370: uses IIO interfaces, depends on IIO
  power: supply: max1721x: Fix spelling mistake "Gauage" -> "Gauge"
  power: supply: mt6370: Add MediaTek MT6370 charger driver
  dt-bindings: power: supply: Add MediaTek MT6370 Charger
  lib: add linear range index macro
  power: supply: bq25890: Fix enum conversion in bq25890_power_supply_set_property()
  power: supply: bq27xxx: fix NULL vs 0 warnings
  power: supply: bq27xxx: fix __be16 warnings
  power: supply: bq25890: Add support for setting IINLIM
  power: supply: bq25890: Disable PUMPX_EN on errors
  power: supply: Fix repeated word in comments
  power: supply: adp5061: show unknown capacity_level as text
  power: supply: adp5061: fix out-of-bounds read in adp5061_get_chg_type()
  power: supply: tps65217: Fix comments typo
  power: reset: qcom-pon: add support for qcom,pmk8350-pon compatible string
  dt-bindings: power: reset: qcom-pon: Add new compatible "qcom,pmk8350-pon"
  power: supply: cw2015: Use device managed API to simplify the code
  ...

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

index 56e70a68679a6a4c62f59d3e117d4963e4974156,62111f4bb093162b7163241dd4ff13e1a3a90d7f..0bbfe6a7ce4d2b58d10e61226e206382b03acba2
@@@ -619,6 -619,21 +619,21 @@@ config CHARGER_MT636
          Average Input Current Regulation, Battery Temperature Sensing,
          Over-Temperature Protection, DPDM Detection for BC1.2.
  
+ config CHARGER_MT6370
+       tristate "MediaTek MT6370 Charger Driver"
+       depends on MFD_MT6370
+       depends on REGULATOR
+       depends on IIO
+       select LINEAR_RANGES
+       help
+         Say Y here to enable MT6370 Charger Part.
+         The device supports High-Accuracy Voltage/Current Regulation,
+         Average Input Current Regulation, Battery Temperature Sensing,
+         Over-Temperature Protection, DPDM Detection for BC1.2.
+         This driver can also be built as a module. If so, the module
+         will be called "mt6370-charger".
  config CHARGER_QCOM_SMBB
        tristate "Qualcomm Switch-Mode Battery Charger and Boost"
        depends on MFD_SPMI_PMIC || COMPILE_TEST
@@@ -708,12 -723,6 +723,12 @@@ config CHARGER_BQ256X
          charge management and system power path management devices for single
          cell Li-ion and Li-polymer batteries.
  
 +config CHARGER_RK817
 +      tristate "Rockchip RK817 PMIC Battery Charger"
 +      depends on MFD_RK808
 +      help
 +        Say Y to include support for Rockchip RK817 Battery Charger.
 +
  config CHARGER_SMB347
        tristate "Summit Microelectronics SMB3XX Battery Charger"
        depends on I2C
index 3040a1de81b8d72eeda558ee224f2fbd8934e3d8,8c9527643c862eeade8a7d17063d7c9dbfd9cee6..0ee8653e882e7a0e5f3c621a358533f5cb90e280
@@@ -82,6 -82,7 +82,7 @@@ obj-$(CONFIG_CHARGER_MAX8997) += max899
  obj-$(CONFIG_CHARGER_MAX8998) += max8998_charger.o
  obj-$(CONFIG_CHARGER_MP2629)  += mp2629_charger.o
  obj-$(CONFIG_CHARGER_MT6360)  += mt6360_charger.o
+ obj-$(CONFIG_CHARGER_MT6370)  += mt6370-charger.o
  obj-$(CONFIG_CHARGER_QCOM_SMBB)       += qcom_smbb.o
  obj-$(CONFIG_CHARGER_BQ2415X) += bq2415x_charger.o
  obj-$(CONFIG_CHARGER_BQ24190) += bq24190_charger.o
@@@ -91,7 -92,6 +92,7 @@@ obj-$(CONFIG_CHARGER_BQ2515X) += bq2515
  obj-$(CONFIG_CHARGER_BQ25890) += bq25890_charger.o
  obj-$(CONFIG_CHARGER_BQ25980) += bq25980_charger.o
  obj-$(CONFIG_CHARGER_BQ256XX) += bq256xx_charger.o
 +obj-$(CONFIG_CHARGER_RK817)   += rk817_charger.o
  obj-$(CONFIG_CHARGER_SMB347)  += smb347-charger.o
  obj-$(CONFIG_CHARGER_TPS65090)        += tps65090-charger.o
  obj-$(CONFIG_CHARGER_TPS65217)        += tps65217_charger.o
index 06ea7399d1516cca78d37a7eac05324b17468b86,e6bd60fef0f6d2cd9dcb5801a2f89d0b7ed31c62..6020b58c641d237de3cbc4da18d61bd64a353efd
@@@ -613,6 -613,33 +613,33 @@@ static int bq25890_power_supply_get_pro
        return 0;
  }
  
+ static int bq25890_power_supply_set_property(struct power_supply *psy,
+                                            enum power_supply_property psp,
+                                            const union power_supply_propval *val)
+ {
+       struct bq25890_device *bq = power_supply_get_drvdata(psy);
+       u8 lval;
+       switch (psp) {
+       case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT:
+               lval = bq25890_find_idx(val->intval, TBL_IINLIM);
+               return bq25890_field_write(bq, F_IINLIM, lval);
+       default:
+               return -EINVAL;
+       }
+ }
+ static int bq25890_power_supply_property_is_writeable(struct power_supply *psy,
+                                                     enum power_supply_property psp)
+ {
+       switch (psp) {
+       case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT:
+               return true;
+       default:
+               return false;
+       }
+ }
  /* On the BQ25892 try to get charger-type info from our supplier */
  static void bq25890_charger_external_power_changed(struct power_supply *psy)
  {
@@@ -874,6 -901,8 +901,8 @@@ static const struct power_supply_desc b
        .properties = bq25890_power_supply_props,
        .num_properties = ARRAY_SIZE(bq25890_power_supply_props),
        .get_property = bq25890_power_supply_get_property,
+       .set_property = bq25890_power_supply_set_property,
+       .property_is_writeable = bq25890_power_supply_property_is_writeable,
        .external_power_changed = bq25890_charger_external_power_changed,
  };
  
@@@ -946,6 -975,7 +975,7 @@@ static void bq25890_pump_express_work(s
  
        return;
  error_print:
+       bq25890_field_write(bq, F_PUMPX_EN, 0);
        dev_err(bq->dev, "Failed to request hi-voltage charging\n");
  }
  
@@@ -1258,7 -1288,7 +1288,7 @@@ err_unregister_usb_notifier
        return ret;
  }
  
 -static int bq25890_remove(struct i2c_client *client)
 +static void bq25890_remove(struct i2c_client *client)
  {
        struct bq25890_device *bq = i2c_get_clientdata(client);
  
                /* reset all registers to default values */
                bq25890_chip_reset(bq);
        }
 -
 -      return 0;
  }
  
  static void bq25890_shutdown(struct i2c_client *client)