Merge tag 'for-v3.18' of git://git.infradead.org/battery-2.6
Pull power supply and reset updates from Sebastian Reichel: - Initial support for the following chips * max77836 (charger) * max14577 (charger) * bq27742 (battery gauge) * ltc2952 (poweroff) * stih416 (restart) * syscon-reboot (restart) * gpio-restart (restart) - cleanup of power supply core - misc fixes in power supply and reset drivers * tag 'for-v3.18' of git://git.infradead.org/battery-2.6: (48 commits) power: ab8500_fg: Fix build warning Documentation: charger: max14577: Update the date of introducing ABI power: reset: corrections for simple syscon reboot driver Documentation: power: reset: Add documentation for generic SYSCON reboot driver power: reset: Add generic SYSCON register mapped reset bq27x00_battery: Fix flag reading for bq27742 power: reset: use restart_notifier mechanism for msm-poweroff power: Add simple gpio-restart driver power: reset: st: Provide DT bindings for ST's Power Reset driver power: reset: Add restart functionality for STiH41x platforms power: charger-manager: Fix NULL pointer exception with missing cm-fuel-gauge power: max14577: Fix circular config SYSFS dependency power: gpio-charger: do not use gpio value directly power: max8925: Use of_get_child_by_name power: max8925: Fix NULL ptr dereference on memory allocation failure bq27x00_battery: Add support to bq27742 Documentation: charger: max14577: Document exported sysfs entry devicetree: mfd: max14577: Add device tree bindings document power: max17040: Add ID for MAX77836 Fuel Gauge block charger: max14577: Configure battery-dependent settings from DTS and sysfs ... Conflicts: drivers/power/reset/Kconfig drivers/power/reset/Makefile
This commit is contained in:
@@ -72,15 +72,33 @@ enum max14577_muic_reg {
|
||||
MAX14577_MUIC_REG_END,
|
||||
};
|
||||
|
||||
/*
|
||||
* Combined charger types for max14577 and max77836.
|
||||
*
|
||||
* On max14577 three lower bits map to STATUS2/CHGTYP field.
|
||||
* However the max77836 has different two last values of STATUS2/CHGTYP.
|
||||
* To indicate the difference enum has two additional values for max77836.
|
||||
* These values are just a register value bitwise OR with 0x8.
|
||||
*/
|
||||
enum max14577_muic_charger_type {
|
||||
MAX14577_CHARGER_TYPE_NONE = 0,
|
||||
MAX14577_CHARGER_TYPE_USB,
|
||||
MAX14577_CHARGER_TYPE_DOWNSTREAM_PORT,
|
||||
MAX14577_CHARGER_TYPE_DEDICATED_CHG,
|
||||
MAX14577_CHARGER_TYPE_SPECIAL_500MA,
|
||||
MAX14577_CHARGER_TYPE_SPECIAL_1A,
|
||||
MAX14577_CHARGER_TYPE_RESERVED,
|
||||
MAX14577_CHARGER_TYPE_DEAD_BATTERY = 7,
|
||||
MAX14577_CHARGER_TYPE_NONE = 0x0,
|
||||
MAX14577_CHARGER_TYPE_USB = 0x1,
|
||||
MAX14577_CHARGER_TYPE_DOWNSTREAM_PORT = 0x2,
|
||||
MAX14577_CHARGER_TYPE_DEDICATED_CHG = 0x3,
|
||||
MAX14577_CHARGER_TYPE_SPECIAL_500MA = 0x4,
|
||||
/* Special 1A or 2A charger */
|
||||
MAX14577_CHARGER_TYPE_SPECIAL_1A = 0x5,
|
||||
/* max14577: reserved, used on max77836 */
|
||||
MAX14577_CHARGER_TYPE_RESERVED = 0x6,
|
||||
/* max14577: dead-battery charing with maximum current 100mA */
|
||||
MAX14577_CHARGER_TYPE_DEAD_BATTERY = 0x7,
|
||||
/*
|
||||
* max77836: special charger (bias on D+/D-),
|
||||
* matches register value of 0x6
|
||||
*/
|
||||
MAX77836_CHARGER_TYPE_SPECIAL_BIAS = 0xe,
|
||||
/* max77836: reserved, register value 0x7 */
|
||||
MAX77836_CHARGER_TYPE_RESERVED = 0xf,
|
||||
};
|
||||
|
||||
/* MAX14577 interrupts */
|
||||
@@ -121,13 +139,15 @@ enum max14577_muic_charger_type {
|
||||
#define STATUS2_CHGTYP_SHIFT 0
|
||||
#define STATUS2_CHGDETRUN_SHIFT 3
|
||||
#define STATUS2_DCDTMR_SHIFT 4
|
||||
#define STATUS2_DBCHG_SHIFT 5
|
||||
#define MAX14577_STATUS2_DBCHG_SHIFT 5
|
||||
#define MAX77836_STATUS2_DXOVP_SHIFT 5
|
||||
#define STATUS2_VBVOLT_SHIFT 6
|
||||
#define MAX77836_STATUS2_VIDRM_SHIFT 7
|
||||
#define STATUS2_CHGTYP_MASK (0x7 << STATUS2_CHGTYP_SHIFT)
|
||||
#define STATUS2_CHGDETRUN_MASK BIT(STATUS2_CHGDETRUN_SHIFT)
|
||||
#define STATUS2_DCDTMR_MASK BIT(STATUS2_DCDTMR_SHIFT)
|
||||
#define STATUS2_DBCHG_MASK BIT(STATUS2_DBCHG_SHIFT)
|
||||
#define MAX14577_STATUS2_DBCHG_MASK BIT(MAX14577_STATUS2_DBCHG_SHIFT)
|
||||
#define MAX77836_STATUS2_DXOVP_MASK BIT(MAX77836_STATUS2_DXOVP_SHIFT)
|
||||
#define STATUS2_VBVOLT_MASK BIT(STATUS2_VBVOLT_SHIFT)
|
||||
#define MAX77836_STATUS2_VIDRM_MASK BIT(MAX77836_STATUS2_VIDRM_SHIFT)
|
||||
|
||||
@@ -177,9 +197,11 @@ enum max14577_muic_charger_type {
|
||||
#define CTRL3_JIGSET_SHIFT 0
|
||||
#define CTRL3_BOOTSET_SHIFT 2
|
||||
#define CTRL3_ADCDBSET_SHIFT 4
|
||||
#define CTRL3_WBTH_SHIFT 6
|
||||
#define CTRL3_JIGSET_MASK (0x3 << CTRL3_JIGSET_SHIFT)
|
||||
#define CTRL3_BOOTSET_MASK (0x3 << CTRL3_BOOTSET_SHIFT)
|
||||
#define CTRL3_ADCDBSET_MASK (0x3 << CTRL3_ADCDBSET_SHIFT)
|
||||
#define CTRL3_WBTH_MASK (0x3 << CTRL3_WBTH_SHIFT)
|
||||
|
||||
/* Slave addr = 0x4A: Charger */
|
||||
enum max14577_charger_reg {
|
||||
@@ -210,16 +232,20 @@ enum max14577_charger_reg {
|
||||
#define CDETCTRL1_CHGTYPMAN_SHIFT 1
|
||||
#define CDETCTRL1_DCDEN_SHIFT 2
|
||||
#define CDETCTRL1_DCD2SCT_SHIFT 3
|
||||
#define CDETCTRL1_DCHKTM_SHIFT 4
|
||||
#define CDETCTRL1_DBEXIT_SHIFT 5
|
||||
#define MAX14577_CDETCTRL1_DCHKTM_SHIFT 4
|
||||
#define MAX77836_CDETCTRL1_CDLY_SHIFT 4
|
||||
#define MAX14577_CDETCTRL1_DBEXIT_SHIFT 5
|
||||
#define MAX77836_CDETCTRL1_DCDCPL_SHIFT 5
|
||||
#define CDETCTRL1_DBIDLE_SHIFT 6
|
||||
#define CDETCTRL1_CDPDET_SHIFT 7
|
||||
#define CDETCTRL1_CHGDETEN_MASK BIT(CDETCTRL1_CHGDETEN_SHIFT)
|
||||
#define CDETCTRL1_CHGTYPMAN_MASK BIT(CDETCTRL1_CHGTYPMAN_SHIFT)
|
||||
#define CDETCTRL1_DCDEN_MASK BIT(CDETCTRL1_DCDEN_SHIFT)
|
||||
#define CDETCTRL1_DCD2SCT_MASK BIT(CDETCTRL1_DCD2SCT_SHIFT)
|
||||
#define CDETCTRL1_DCHKTM_MASK BIT(CDETCTRL1_DCHKTM_SHIFT)
|
||||
#define CDETCTRL1_DBEXIT_MASK BIT(CDETCTRL1_DBEXIT_SHIFT)
|
||||
#define MAX14577_CDETCTRL1_DCHKTM_MASK BIT(MAX14577_CDETCTRL1_DCHKTM_SHIFT)
|
||||
#define MAX77836_CDETCTRL1_CDDLY_MASK BIT(MAX77836_CDETCTRL1_CDDLY_SHIFT)
|
||||
#define MAX14577_CDETCTRL1_DBEXIT_MASK BIT(MAX14577_CDETCTRL1_DBEXIT_SHIFT)
|
||||
#define MAX77836_CDETCTRL1_DCDCPL_MASK BIT(MAX77836_CDETCTRL1_DCDCPL_SHIFT)
|
||||
#define CDETCTRL1_DBIDLE_MASK BIT(CDETCTRL1_DBIDLE_SHIFT)
|
||||
#define CDETCTRL1_CDPDET_MASK BIT(CDETCTRL1_CDPDET_SHIFT)
|
||||
|
||||
@@ -255,17 +281,36 @@ enum max14577_charger_reg {
|
||||
#define CHGCTRL7_OTPCGHCVS_SHIFT 0
|
||||
#define CHGCTRL7_OTPCGHCVS_MASK (0x3 << CHGCTRL7_OTPCGHCVS_SHIFT)
|
||||
|
||||
/* MAX14577 regulator current limits (as in CHGCTRL4 register), uA */
|
||||
#define MAX14577_REGULATOR_CURRENT_LIMIT_MIN 90000
|
||||
#define MAX14577_REGULATOR_CURRENT_LIMIT_HIGH_START 200000
|
||||
#define MAX14577_REGULATOR_CURRENT_LIMIT_HIGH_STEP 50000
|
||||
#define MAX14577_REGULATOR_CURRENT_LIMIT_MAX 950000
|
||||
/* MAX14577 charger current limits (as in CHGCTRL4 register), uA */
|
||||
#define MAX14577_CHARGER_CURRENT_LIMIT_MIN 90000U
|
||||
#define MAX14577_CHARGER_CURRENT_LIMIT_HIGH_START 200000U
|
||||
#define MAX14577_CHARGER_CURRENT_LIMIT_HIGH_STEP 50000U
|
||||
#define MAX14577_CHARGER_CURRENT_LIMIT_MAX 950000U
|
||||
|
||||
/* MAX77836 regulator current limits (as in CHGCTRL4 register), uA */
|
||||
#define MAX77836_REGULATOR_CURRENT_LIMIT_MIN 45000
|
||||
#define MAX77836_REGULATOR_CURRENT_LIMIT_HIGH_START 100000
|
||||
#define MAX77836_REGULATOR_CURRENT_LIMIT_HIGH_STEP 25000
|
||||
#define MAX77836_REGULATOR_CURRENT_LIMIT_MAX 475000
|
||||
/* MAX77836 charger current limits (as in CHGCTRL4 register), uA */
|
||||
#define MAX77836_CHARGER_CURRENT_LIMIT_MIN 45000U
|
||||
#define MAX77836_CHARGER_CURRENT_LIMIT_HIGH_START 100000U
|
||||
#define MAX77836_CHARGER_CURRENT_LIMIT_HIGH_STEP 25000U
|
||||
#define MAX77836_CHARGER_CURRENT_LIMIT_MAX 475000U
|
||||
|
||||
/*
|
||||
* MAX14577 charger End-Of-Charge current limits
|
||||
* (as in CHGCTRL5 register), uA
|
||||
*/
|
||||
#define MAX14577_CHARGER_EOC_CURRENT_LIMIT_MIN 50000U
|
||||
#define MAX14577_CHARGER_EOC_CURRENT_LIMIT_STEP 10000U
|
||||
#define MAX14577_CHARGER_EOC_CURRENT_LIMIT_MAX 200000U
|
||||
|
||||
/*
|
||||
* MAX14577/MAX77836 Battery Constant Voltage
|
||||
* (as in CHGCTRL3 register), uV
|
||||
*/
|
||||
#define MAXIM_CHARGER_CONSTANT_VOLTAGE_MIN 4000000U
|
||||
#define MAXIM_CHARGER_CONSTANT_VOLTAGE_STEP 20000U
|
||||
#define MAXIM_CHARGER_CONSTANT_VOLTAGE_MAX 4350000U
|
||||
|
||||
/* Default value for fast charge timer, in hours */
|
||||
#define MAXIM_CHARGER_FAST_CHARGE_TIMER_DEFAULT 5
|
||||
|
||||
/* MAX14577 regulator SFOUT LDO voltage, fixed, uV */
|
||||
#define MAX14577_REGULATOR_SAFEOUT_VOLTAGE 4900000
|
||||
|
@@ -54,6 +54,13 @@ struct max14577_regulator_platform_data {
|
||||
struct device_node *of_node;
|
||||
};
|
||||
|
||||
struct max14577_charger_platform_data {
|
||||
u32 constant_uvolt;
|
||||
u32 fast_charge_uamp;
|
||||
u32 eoc_uamp;
|
||||
u32 ovp_uvolt;
|
||||
};
|
||||
|
||||
/*
|
||||
* MAX14577 MFD platform data
|
||||
*/
|
||||
@@ -74,4 +81,27 @@ struct max14577_platform_data {
|
||||
struct max14577_regulator_platform_data *regulators;
|
||||
};
|
||||
|
||||
/*
|
||||
* Valid limits of current for max14577 and max77836 chargers.
|
||||
* They must correspond to MBCICHWRCL and MBCICHWRCH fields in CHGCTRL4
|
||||
* register for given chipset.
|
||||
*/
|
||||
struct maxim_charger_current {
|
||||
/* Minimal current, set in CHGCTRL4/MBCICHWRCL, uA */
|
||||
unsigned int min;
|
||||
/*
|
||||
* Minimal current when high setting is active,
|
||||
* set in CHGCTRL4/MBCICHWRCH, uA
|
||||
*/
|
||||
unsigned int high_start;
|
||||
/* Value of one step in high setting, uA */
|
||||
unsigned int high_step;
|
||||
/* Maximum current of high setting, uA */
|
||||
unsigned int max;
|
||||
};
|
||||
|
||||
extern const struct maxim_charger_current maxim_charger_currents[];
|
||||
extern int maxim_charger_calc_reg_current(const struct maxim_charger_current *limits,
|
||||
unsigned int min_ua, unsigned int max_ua, u8 *dst);
|
||||
|
||||
#endif /* __MAX14577_H__ */
|
||||
|
@@ -18,8 +18,6 @@
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/notifier.h>
|
||||
|
||||
struct device;
|
||||
|
||||
/*
|
||||
* All voltages, currents, charges, energies, time and temperatures in uV,
|
||||
* µA, µAh, µWh, seconds and tenths of degree Celsius unless otherwise
|
||||
@@ -102,9 +100,11 @@ enum power_supply_property {
|
||||
POWER_SUPPLY_PROP_VOLTAGE_NOW,
|
||||
POWER_SUPPLY_PROP_VOLTAGE_AVG,
|
||||
POWER_SUPPLY_PROP_VOLTAGE_OCV,
|
||||
POWER_SUPPLY_PROP_VOLTAGE_BOOT,
|
||||
POWER_SUPPLY_PROP_CURRENT_MAX,
|
||||
POWER_SUPPLY_PROP_CURRENT_NOW,
|
||||
POWER_SUPPLY_PROP_CURRENT_AVG,
|
||||
POWER_SUPPLY_PROP_CURRENT_BOOT,
|
||||
POWER_SUPPLY_PROP_POWER_NOW,
|
||||
POWER_SUPPLY_PROP_POWER_AVG,
|
||||
POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN,
|
||||
@@ -146,6 +146,7 @@ enum power_supply_property {
|
||||
POWER_SUPPLY_PROP_TYPE, /* use power_supply.type instead */
|
||||
POWER_SUPPLY_PROP_SCOPE,
|
||||
POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT,
|
||||
POWER_SUPPLY_PROP_CALIBRATE,
|
||||
/* Properties of type `const char *' */
|
||||
POWER_SUPPLY_PROP_MODEL_NAME,
|
||||
POWER_SUPPLY_PROP_MANUFACTURER,
|
||||
@@ -172,6 +173,7 @@ union power_supply_propval {
|
||||
const char *strval;
|
||||
};
|
||||
|
||||
struct device;
|
||||
struct device_node;
|
||||
|
||||
struct power_supply {
|
||||
@@ -291,6 +293,7 @@ static inline bool power_supply_is_amp_property(enum power_supply_property psp)
|
||||
case POWER_SUPPLY_PROP_CURRENT_MAX:
|
||||
case POWER_SUPPLY_PROP_CURRENT_NOW:
|
||||
case POWER_SUPPLY_PROP_CURRENT_AVG:
|
||||
case POWER_SUPPLY_PROP_CURRENT_BOOT:
|
||||
return 1;
|
||||
default:
|
||||
break;
|
||||
@@ -315,6 +318,7 @@ static inline bool power_supply_is_watt_property(enum power_supply_property psp)
|
||||
case POWER_SUPPLY_PROP_VOLTAGE_NOW:
|
||||
case POWER_SUPPLY_PROP_VOLTAGE_AVG:
|
||||
case POWER_SUPPLY_PROP_VOLTAGE_OCV:
|
||||
case POWER_SUPPLY_PROP_VOLTAGE_BOOT:
|
||||
case POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE:
|
||||
case POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE_MAX:
|
||||
case POWER_SUPPLY_PROP_POWER_NOW:
|
||||
|
Reference in New Issue
Block a user