Contributors: 11
Author Tokens Token Proportion Commits Commit Proportion
Anton Vorontsov 200 56.02% 2 9.52%
Thomas Weißschuh 106 29.69% 8 38.10%
Andrey Smirnov 13 3.64% 1 4.76%
Ricardo B. Marliere 13 3.64% 3 14.29%
Paul Gortmaker 9 2.52% 1 4.76%
Daniel Mack 6 1.68% 1 4.76%
Kay Sievers 3 0.84% 1 4.76%
Krzysztof Kozlowski 3 0.84% 1 4.76%
Thomas Gleixner 2 0.56% 1 4.76%
Greg Kroah-Hartman 1 0.28% 1 4.76%
Nathan Chancellor 1 0.28% 1 4.76%
Total 357 21


/* SPDX-License-Identifier: GPL-2.0-only */
/*
 *  Functions private to power supply class
 *
 *  Copyright © 2007  Anton Vorontsov <cbou@mail.ru>
 *  Copyright © 2004  Szabolcs Gyurko
 *  Copyright © 2003  Ian Molton <spyro@f2s.com>
 *
 *  Modified: 2004, Oct     Szabolcs Gyurko
 */

#include <linux/lockdep.h>

struct device;
struct device_type;
struct power_supply;

extern int power_supply_property_is_writeable(struct power_supply *psy,
					      enum power_supply_property psp);
extern bool power_supply_has_property(struct power_supply *psy,
				      enum power_supply_property psp);
extern bool power_supply_ext_has_property(const struct power_supply_ext *ext,
					  enum power_supply_property psp);

struct power_supply_ext_registration {
	struct list_head list_head;
	const struct power_supply_ext *ext;
	struct device *dev;
	void *data;
};

/* Make sure that the macro is a single expression */
#define power_supply_for_each_extension(pos, psy)			\
	if ( ({ lockdep_assert_held(&(psy)->extensions_sem); 0; }) )	\
		;							\
	else								\
		list_for_each_entry(pos, &(psy)->extensions, list_head)	\

#ifdef CONFIG_SYSFS

extern void __init power_supply_init_attrs(void);
extern int power_supply_uevent(const struct device *dev, struct kobj_uevent_env *env);
extern const struct attribute_group *power_supply_attr_groups[];
extern int power_supply_sysfs_add_extension(struct power_supply *psy,
					    const struct power_supply_ext *ext,
					    struct device *dev);
extern void power_supply_sysfs_remove_extension(struct power_supply *psy,
						const struct power_supply_ext *ext);

#else

static inline void power_supply_init_attrs(void) {}
#define power_supply_attr_groups NULL
#define power_supply_uevent NULL
static inline int power_supply_sysfs_add_extension(struct power_supply *psy,
						   const struct power_supply_ext *ext,
						   struct device *dev)
{ return 0; }
static inline void power_supply_sysfs_remove_extension(struct power_supply *psy,
						       const struct power_supply_ext *ext) {}

#endif /* CONFIG_SYSFS */

#ifdef CONFIG_LEDS_TRIGGERS

extern void power_supply_update_leds(struct power_supply *psy);
extern int power_supply_create_triggers(struct power_supply *psy);
extern void power_supply_remove_triggers(struct power_supply *psy);

#else

static inline void power_supply_update_leds(struct power_supply *psy) {}
static inline int power_supply_create_triggers(struct power_supply *psy)
{ return 0; }
static inline void power_supply_remove_triggers(struct power_supply *psy) {}

#endif /* CONFIG_LEDS_TRIGGERS */

#ifdef CONFIG_POWER_SUPPLY_HWMON

int power_supply_add_hwmon_sysfs(struct power_supply *psy);
void power_supply_remove_hwmon_sysfs(struct power_supply *psy);

#else

static inline int power_supply_add_hwmon_sysfs(struct power_supply *psy)
{
	return 0;
}

static inline
void power_supply_remove_hwmon_sysfs(struct power_supply *psy) {}

#endif /* CONFIG_POWER_SUPPLY_HWMON */