mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-08 09:12:39 -04:00
Merge tag 'for-v6.14' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply
Pull power supply and reset updates from Sebastian Reichel:
"Power-supply core:
- introduce power supply extensions, which allows adding properties
to a power supply device from a separate driver. This will be used
initially to extend the generic ACPI charger/battery driver with
vendor extensions for charge thresholds.
- convert all drivers from power_supply_for_each_device to new
power_supply_for_each_psy(), which avoids lots of casting being
done in the drivers.
- avoid LED trigger like values in uevent for
POWER_SUPPLY_PROP_CHARGE_BEHAVIOUR
- introduce POWER_SUPPLY_PROP_CHARGE_TYPES, which is similar to the
POWER_SUPPLY_PROP_CHARGE_TYPE property, but also lists the
available options on the specific platform
Power-supply drivers
- dell-laptop: use new power_supply_charge_types_show/_parse helpers
- stc3117: new driver for equally named fuel gauge chip
- bq24190: add support for new POWER_SUPPLY_PROP_CHARGE_TYPES
- bq24190: add BQ24297 support
- bq27xxx: add voltage min design for bq27000/bq27200
- cros_charge-control: convert to new power supply extension API
- multiple drivers: constify 'struct bin_attribute'
- ds2782: convert to device managed resources
- max1720x: add charge full property
- max1720x: support extra thermistor temperatures
- max17042: add max77705 support
- ip5xxx-power: add support for IP5306
- ltc4162-l-charger: add ltc4162-f/s and ltc4015 support
- gpio-charger: support for default charge current limit
- misc small cleanups and fixes
Reset drivers:
- at91-poweroff: add sam9x7 support"
* tag 'for-v6.14' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply: (77 commits)
power: supply: max1720x: add support for reading internal and thermistor temperatures
power: supply: ltc4162l: Use GENMASK macro in bitmask operation
power: supply: max17042: add max77705 fuel gauge support
dt-bindings: power: supply: max17042: add max77705 support
power: supply: add undervoltage health status property
power: supply: max17042: add platform driver variant
power: supply: max17042: make interrupt shared
power: reset: keystone: Use syscon_regmap_lookup_by_phandle_args
power: supply: Use str_enable_disable-like helpers
platform/x86: dell-laptop: Use power_supply_charge_types_show/_parse() helpers
power: supply: bq2415x_charger: Immediately reschedule delayed work on notifier events
power: supply: Add STC3117 fuel gauge unit driver
dt-bindings: power: supply: Add STC3117 Fuel Gauge
power: supply: ug3105_battery: Let the core handle POWER_SUPPLY_PROP_TECHNOLOGY
power: supply: gpio-charger: add support for default charge current limit
dt-bindings: power: supply: gpio-charger: add support for default charge current limit
power: supply: Use power_supply_external_power_changed() in __power_supply_changed_work()
power: supply: core: fix build of extension sysfs group if CONFIG_SYSFS=n
power: supply: bq2415x_charger: report charging state changes to userspace
bq27xxx: add voltage min design for bq27000 and bq27200
...
This commit is contained in:
@@ -61,6 +61,7 @@ struct bq27xxx_device_info {
|
||||
struct bq27xxx_access_methods bus;
|
||||
struct bq27xxx_reg_cache cache;
|
||||
int charge_design_full;
|
||||
int voltage_min_design;
|
||||
bool removed;
|
||||
unsigned long last_update;
|
||||
union power_supply_propval last_status;
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
#include <linux/device.h>
|
||||
#include <linux/workqueue.h>
|
||||
#include <linux/leds.h>
|
||||
#include <linux/rwsem.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/notifier.h>
|
||||
|
||||
@@ -40,7 +42,7 @@ enum {
|
||||
};
|
||||
|
||||
/* What algorithm is the charger using? */
|
||||
enum {
|
||||
enum power_supply_charge_type {
|
||||
POWER_SUPPLY_CHARGE_TYPE_UNKNOWN = 0,
|
||||
POWER_SUPPLY_CHARGE_TYPE_NONE,
|
||||
POWER_SUPPLY_CHARGE_TYPE_TRICKLE, /* slow speed */
|
||||
@@ -58,6 +60,7 @@ enum {
|
||||
POWER_SUPPLY_HEALTH_OVERHEAT,
|
||||
POWER_SUPPLY_HEALTH_DEAD,
|
||||
POWER_SUPPLY_HEALTH_OVERVOLTAGE,
|
||||
POWER_SUPPLY_HEALTH_UNDERVOLTAGE,
|
||||
POWER_SUPPLY_HEALTH_UNSPEC_FAILURE,
|
||||
POWER_SUPPLY_HEALTH_COLD,
|
||||
POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE,
|
||||
@@ -99,6 +102,7 @@ enum power_supply_property {
|
||||
/* Properties of type `int' */
|
||||
POWER_SUPPLY_PROP_STATUS = 0,
|
||||
POWER_SUPPLY_PROP_CHARGE_TYPE,
|
||||
POWER_SUPPLY_PROP_CHARGE_TYPES,
|
||||
POWER_SUPPLY_PROP_HEALTH,
|
||||
POWER_SUPPLY_PROP_PRESENT,
|
||||
POWER_SUPPLY_PROP_ONLINE,
|
||||
@@ -245,6 +249,7 @@ struct power_supply_desc {
|
||||
const char *name;
|
||||
enum power_supply_type type;
|
||||
u8 charge_behaviours;
|
||||
u32 charge_types;
|
||||
u32 usb_types;
|
||||
const enum power_supply_property *properties;
|
||||
size_t num_properties;
|
||||
@@ -281,6 +286,28 @@ struct power_supply_desc {
|
||||
int use_for_apm;
|
||||
};
|
||||
|
||||
struct power_supply_ext {
|
||||
const char *const name;
|
||||
u8 charge_behaviours;
|
||||
const enum power_supply_property *properties;
|
||||
size_t num_properties;
|
||||
|
||||
int (*get_property)(struct power_supply *psy,
|
||||
const struct power_supply_ext *ext,
|
||||
void *data,
|
||||
enum power_supply_property psp,
|
||||
union power_supply_propval *val);
|
||||
int (*set_property)(struct power_supply *psy,
|
||||
const struct power_supply_ext *ext,
|
||||
void *data,
|
||||
enum power_supply_property psp,
|
||||
const union power_supply_propval *val);
|
||||
int (*property_is_writeable)(struct power_supply *psy,
|
||||
const struct power_supply_ext *ext,
|
||||
void *data,
|
||||
enum power_supply_property psp);
|
||||
};
|
||||
|
||||
struct power_supply {
|
||||
const struct power_supply_desc *desc;
|
||||
|
||||
@@ -300,10 +327,13 @@ struct power_supply {
|
||||
struct delayed_work deferred_register_work;
|
||||
spinlock_t changed_lock;
|
||||
bool changed;
|
||||
bool update_groups;
|
||||
bool initialized;
|
||||
bool removing;
|
||||
atomic_t use_cnt;
|
||||
struct power_supply_battery_info *battery_info;
|
||||
struct rw_semaphore extensions_sem; /* protects "extensions" */
|
||||
struct list_head extensions;
|
||||
#ifdef CONFIG_THERMAL
|
||||
struct thermal_zone_device *tzd;
|
||||
struct thermal_cooling_device *tcd;
|
||||
@@ -318,6 +348,8 @@ struct power_supply {
|
||||
#endif
|
||||
};
|
||||
|
||||
#define dev_to_psy(__dev) container_of_const(__dev, struct power_supply, dev)
|
||||
|
||||
/*
|
||||
* This is recommended structure to specify static power supply parameters.
|
||||
* Generic one, parametrizable for different power supplies. Power supply
|
||||
@@ -878,10 +910,18 @@ devm_power_supply_register(struct device *parent,
|
||||
extern void power_supply_unregister(struct power_supply *psy);
|
||||
extern int power_supply_powers(struct power_supply *psy, struct device *dev);
|
||||
|
||||
extern int __must_check
|
||||
power_supply_register_extension(struct power_supply *psy,
|
||||
const struct power_supply_ext *ext,
|
||||
struct device *dev,
|
||||
void *data);
|
||||
extern void power_supply_unregister_extension(struct power_supply *psy,
|
||||
const struct power_supply_ext *ext);
|
||||
|
||||
#define to_power_supply(device) container_of(device, struct power_supply, dev)
|
||||
|
||||
extern void *power_supply_get_drvdata(struct power_supply *psy);
|
||||
extern int power_supply_for_each_device(void *data, int (*fn)(struct device *dev, void *data));
|
||||
extern int power_supply_for_each_psy(void *data, int (*fn)(struct power_supply *psy, void *data));
|
||||
|
||||
static inline bool power_supply_is_amp_property(enum power_supply_property psp)
|
||||
{
|
||||
@@ -944,6 +984,11 @@ ssize_t power_supply_charge_behaviour_show(struct device *dev,
|
||||
char *buf);
|
||||
|
||||
int power_supply_charge_behaviour_parse(unsigned int available_behaviours, const char *buf);
|
||||
ssize_t power_supply_charge_types_show(struct device *dev,
|
||||
unsigned int available_types,
|
||||
enum power_supply_charge_type current_type,
|
||||
char *buf);
|
||||
int power_supply_charge_types_parse(unsigned int available_types, const char *buf);
|
||||
#else
|
||||
static inline
|
||||
ssize_t power_supply_charge_behaviour_show(struct device *dev,
|
||||
@@ -959,6 +1004,20 @@ static inline int power_supply_charge_behaviour_parse(unsigned int available_beh
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
static inline
|
||||
ssize_t power_supply_charge_types_show(struct device *dev,
|
||||
unsigned int available_types,
|
||||
enum power_supply_charge_type current_type,
|
||||
char *buf)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
static inline int power_supply_charge_types_parse(unsigned int available_types, const char *buf)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __LINUX_POWER_SUPPLY_H__ */
|
||||
|
||||
Reference in New Issue
Block a user