root/include/linux/power_supply.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. power_supply_get_by_phandle
  2. devm_power_supply_get_by_phandle
  3. power_supply_is_system_supplied
  4. power_supply_is_amp_property
  5. power_supply_is_watt_property
  6. power_supply_add_hwmon_sysfs
  7. power_supply_remove_hwmon_sysfs

   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  *  Universal power supply monitor class
   4  *
   5  *  Copyright © 2007  Anton Vorontsov <cbou@mail.ru>
   6  *  Copyright © 2004  Szabolcs Gyurko
   7  *  Copyright © 2003  Ian Molton <spyro@f2s.com>
   8  *
   9  *  Modified: 2004, Oct     Szabolcs Gyurko
  10  */
  11 
  12 #ifndef __LINUX_POWER_SUPPLY_H__
  13 #define __LINUX_POWER_SUPPLY_H__
  14 
  15 #include <linux/device.h>
  16 #include <linux/workqueue.h>
  17 #include <linux/leds.h>
  18 #include <linux/spinlock.h>
  19 #include <linux/notifier.h>
  20 
  21 /*
  22  * All voltages, currents, charges, energies, time and temperatures in uV,
  23  * µA, µAh, µWh, seconds and tenths of degree Celsius unless otherwise
  24  * stated. It's driver's job to convert its raw values to units in which
  25  * this class operates.
  26  */
  27 
  28 /*
  29  * For systems where the charger determines the maximum battery capacity
  30  * the min and max fields should be used to present these values to user
  31  * space. Unused/unknown fields will not appear in sysfs.
  32  */
  33 
  34 enum {
  35         POWER_SUPPLY_STATUS_UNKNOWN = 0,
  36         POWER_SUPPLY_STATUS_CHARGING,
  37         POWER_SUPPLY_STATUS_DISCHARGING,
  38         POWER_SUPPLY_STATUS_NOT_CHARGING,
  39         POWER_SUPPLY_STATUS_FULL,
  40 };
  41 
  42 /* What algorithm is the charger using? */
  43 enum {
  44         POWER_SUPPLY_CHARGE_TYPE_UNKNOWN = 0,
  45         POWER_SUPPLY_CHARGE_TYPE_NONE,
  46         POWER_SUPPLY_CHARGE_TYPE_TRICKLE,       /* slow speed */
  47         POWER_SUPPLY_CHARGE_TYPE_FAST,          /* fast speed */
  48         POWER_SUPPLY_CHARGE_TYPE_STANDARD,      /* normal speed */
  49         POWER_SUPPLY_CHARGE_TYPE_ADAPTIVE,      /* dynamically adjusted speed */
  50         POWER_SUPPLY_CHARGE_TYPE_CUSTOM,        /* use CHARGE_CONTROL_* props */
  51 };
  52 
  53 enum {
  54         POWER_SUPPLY_HEALTH_UNKNOWN = 0,
  55         POWER_SUPPLY_HEALTH_GOOD,
  56         POWER_SUPPLY_HEALTH_OVERHEAT,
  57         POWER_SUPPLY_HEALTH_DEAD,
  58         POWER_SUPPLY_HEALTH_OVERVOLTAGE,
  59         POWER_SUPPLY_HEALTH_UNSPEC_FAILURE,
  60         POWER_SUPPLY_HEALTH_COLD,
  61         POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE,
  62         POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE,
  63         POWER_SUPPLY_HEALTH_OVERCURRENT,
  64 };
  65 
  66 enum {
  67         POWER_SUPPLY_TECHNOLOGY_UNKNOWN = 0,
  68         POWER_SUPPLY_TECHNOLOGY_NiMH,
  69         POWER_SUPPLY_TECHNOLOGY_LION,
  70         POWER_SUPPLY_TECHNOLOGY_LIPO,
  71         POWER_SUPPLY_TECHNOLOGY_LiFe,
  72         POWER_SUPPLY_TECHNOLOGY_NiCd,
  73         POWER_SUPPLY_TECHNOLOGY_LiMn,
  74 };
  75 
  76 enum {
  77         POWER_SUPPLY_CAPACITY_LEVEL_UNKNOWN = 0,
  78         POWER_SUPPLY_CAPACITY_LEVEL_CRITICAL,
  79         POWER_SUPPLY_CAPACITY_LEVEL_LOW,
  80         POWER_SUPPLY_CAPACITY_LEVEL_NORMAL,
  81         POWER_SUPPLY_CAPACITY_LEVEL_HIGH,
  82         POWER_SUPPLY_CAPACITY_LEVEL_FULL,
  83 };
  84 
  85 enum {
  86         POWER_SUPPLY_SCOPE_UNKNOWN = 0,
  87         POWER_SUPPLY_SCOPE_SYSTEM,
  88         POWER_SUPPLY_SCOPE_DEVICE,
  89 };
  90 
  91 enum power_supply_property {
  92         /* Properties of type `int' */
  93         POWER_SUPPLY_PROP_STATUS = 0,
  94         POWER_SUPPLY_PROP_CHARGE_TYPE,
  95         POWER_SUPPLY_PROP_HEALTH,
  96         POWER_SUPPLY_PROP_PRESENT,
  97         POWER_SUPPLY_PROP_ONLINE,
  98         POWER_SUPPLY_PROP_AUTHENTIC,
  99         POWER_SUPPLY_PROP_TECHNOLOGY,
 100         POWER_SUPPLY_PROP_CYCLE_COUNT,
 101         POWER_SUPPLY_PROP_VOLTAGE_MAX,
 102         POWER_SUPPLY_PROP_VOLTAGE_MIN,
 103         POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN,
 104         POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN,
 105         POWER_SUPPLY_PROP_VOLTAGE_NOW,
 106         POWER_SUPPLY_PROP_VOLTAGE_AVG,
 107         POWER_SUPPLY_PROP_VOLTAGE_OCV,
 108         POWER_SUPPLY_PROP_VOLTAGE_BOOT,
 109         POWER_SUPPLY_PROP_CURRENT_MAX,
 110         POWER_SUPPLY_PROP_CURRENT_NOW,
 111         POWER_SUPPLY_PROP_CURRENT_AVG,
 112         POWER_SUPPLY_PROP_CURRENT_BOOT,
 113         POWER_SUPPLY_PROP_POWER_NOW,
 114         POWER_SUPPLY_PROP_POWER_AVG,
 115         POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN,
 116         POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN,
 117         POWER_SUPPLY_PROP_CHARGE_FULL,
 118         POWER_SUPPLY_PROP_CHARGE_EMPTY,
 119         POWER_SUPPLY_PROP_CHARGE_NOW,
 120         POWER_SUPPLY_PROP_CHARGE_AVG,
 121         POWER_SUPPLY_PROP_CHARGE_COUNTER,
 122         POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT,
 123         POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX,
 124         POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE,
 125         POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE_MAX,
 126         POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT,
 127         POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT_MAX,
 128         POWER_SUPPLY_PROP_CHARGE_CONTROL_START_THRESHOLD, /* in percents! */
 129         POWER_SUPPLY_PROP_CHARGE_CONTROL_END_THRESHOLD, /* in percents! */
 130         POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT,
 131         POWER_SUPPLY_PROP_INPUT_VOLTAGE_LIMIT,
 132         POWER_SUPPLY_PROP_INPUT_POWER_LIMIT,
 133         POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN,
 134         POWER_SUPPLY_PROP_ENERGY_EMPTY_DESIGN,
 135         POWER_SUPPLY_PROP_ENERGY_FULL,
 136         POWER_SUPPLY_PROP_ENERGY_EMPTY,
 137         POWER_SUPPLY_PROP_ENERGY_NOW,
 138         POWER_SUPPLY_PROP_ENERGY_AVG,
 139         POWER_SUPPLY_PROP_CAPACITY, /* in percents! */
 140         POWER_SUPPLY_PROP_CAPACITY_ALERT_MIN, /* in percents! */
 141         POWER_SUPPLY_PROP_CAPACITY_ALERT_MAX, /* in percents! */
 142         POWER_SUPPLY_PROP_CAPACITY_LEVEL,
 143         POWER_SUPPLY_PROP_TEMP,
 144         POWER_SUPPLY_PROP_TEMP_MAX,
 145         POWER_SUPPLY_PROP_TEMP_MIN,
 146         POWER_SUPPLY_PROP_TEMP_ALERT_MIN,
 147         POWER_SUPPLY_PROP_TEMP_ALERT_MAX,
 148         POWER_SUPPLY_PROP_TEMP_AMBIENT,
 149         POWER_SUPPLY_PROP_TEMP_AMBIENT_ALERT_MIN,
 150         POWER_SUPPLY_PROP_TEMP_AMBIENT_ALERT_MAX,
 151         POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW,
 152         POWER_SUPPLY_PROP_TIME_TO_EMPTY_AVG,
 153         POWER_SUPPLY_PROP_TIME_TO_FULL_NOW,
 154         POWER_SUPPLY_PROP_TIME_TO_FULL_AVG,
 155         POWER_SUPPLY_PROP_TYPE, /* use power_supply.type instead */
 156         POWER_SUPPLY_PROP_USB_TYPE,
 157         POWER_SUPPLY_PROP_SCOPE,
 158         POWER_SUPPLY_PROP_PRECHARGE_CURRENT,
 159         POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT,
 160         POWER_SUPPLY_PROP_CALIBRATE,
 161         /* Properties of type `const char *' */
 162         POWER_SUPPLY_PROP_MODEL_NAME,
 163         POWER_SUPPLY_PROP_MANUFACTURER,
 164         POWER_SUPPLY_PROP_SERIAL_NUMBER,
 165 };
 166 
 167 enum power_supply_type {
 168         POWER_SUPPLY_TYPE_UNKNOWN = 0,
 169         POWER_SUPPLY_TYPE_BATTERY,
 170         POWER_SUPPLY_TYPE_UPS,
 171         POWER_SUPPLY_TYPE_MAINS,
 172         POWER_SUPPLY_TYPE_USB,                  /* Standard Downstream Port */
 173         POWER_SUPPLY_TYPE_USB_DCP,              /* Dedicated Charging Port */
 174         POWER_SUPPLY_TYPE_USB_CDP,              /* Charging Downstream Port */
 175         POWER_SUPPLY_TYPE_USB_ACA,              /* Accessory Charger Adapters */
 176         POWER_SUPPLY_TYPE_USB_TYPE_C,           /* Type C Port */
 177         POWER_SUPPLY_TYPE_USB_PD,               /* Power Delivery Port */
 178         POWER_SUPPLY_TYPE_USB_PD_DRP,           /* PD Dual Role Port */
 179         POWER_SUPPLY_TYPE_APPLE_BRICK_ID,       /* Apple Charging Method */
 180 };
 181 
 182 enum power_supply_usb_type {
 183         POWER_SUPPLY_USB_TYPE_UNKNOWN = 0,
 184         POWER_SUPPLY_USB_TYPE_SDP,              /* Standard Downstream Port */
 185         POWER_SUPPLY_USB_TYPE_DCP,              /* Dedicated Charging Port */
 186         POWER_SUPPLY_USB_TYPE_CDP,              /* Charging Downstream Port */
 187         POWER_SUPPLY_USB_TYPE_ACA,              /* Accessory Charger Adapters */
 188         POWER_SUPPLY_USB_TYPE_C,                /* Type C Port */
 189         POWER_SUPPLY_USB_TYPE_PD,               /* Power Delivery Port */
 190         POWER_SUPPLY_USB_TYPE_PD_DRP,           /* PD Dual Role Port */
 191         POWER_SUPPLY_USB_TYPE_PD_PPS,           /* PD Programmable Power Supply */
 192         POWER_SUPPLY_USB_TYPE_APPLE_BRICK_ID,   /* Apple Charging Method */
 193 };
 194 
 195 enum power_supply_notifier_events {
 196         PSY_EVENT_PROP_CHANGED,
 197 };
 198 
 199 union power_supply_propval {
 200         int intval;
 201         const char *strval;
 202 };
 203 
 204 struct device_node;
 205 struct power_supply;
 206 
 207 /* Run-time specific power supply configuration */
 208 struct power_supply_config {
 209         struct device_node *of_node;
 210         struct fwnode_handle *fwnode;
 211 
 212         /* Driver private data */
 213         void *drv_data;
 214 
 215         /* Device specific sysfs attributes */
 216         const struct attribute_group **attr_grp;
 217 
 218         char **supplied_to;
 219         size_t num_supplicants;
 220 };
 221 
 222 /* Description of power supply */
 223 struct power_supply_desc {
 224         const char *name;
 225         enum power_supply_type type;
 226         enum power_supply_usb_type *usb_types;
 227         size_t num_usb_types;
 228         enum power_supply_property *properties;
 229         size_t num_properties;
 230 
 231         /*
 232          * Functions for drivers implementing power supply class.
 233          * These shouldn't be called directly by other drivers for accessing
 234          * this power supply. Instead use power_supply_*() functions (for
 235          * example power_supply_get_property()).
 236          */
 237         int (*get_property)(struct power_supply *psy,
 238                             enum power_supply_property psp,
 239                             union power_supply_propval *val);
 240         int (*set_property)(struct power_supply *psy,
 241                             enum power_supply_property psp,
 242                             const union power_supply_propval *val);
 243         /*
 244          * property_is_writeable() will be called during registration
 245          * of power supply. If this happens during device probe then it must
 246          * not access internal data of device (because probe did not end).
 247          */
 248         int (*property_is_writeable)(struct power_supply *psy,
 249                                      enum power_supply_property psp);
 250         void (*external_power_changed)(struct power_supply *psy);
 251         void (*set_charged)(struct power_supply *psy);
 252 
 253         /*
 254          * Set if thermal zone should not be created for this power supply.
 255          * For example for virtual supplies forwarding calls to actual
 256          * sensors or other supplies.
 257          */
 258         bool no_thermal;
 259         /* For APM emulation, think legacy userspace. */
 260         int use_for_apm;
 261 };
 262 
 263 struct power_supply {
 264         const struct power_supply_desc *desc;
 265 
 266         char **supplied_to;
 267         size_t num_supplicants;
 268 
 269         char **supplied_from;
 270         size_t num_supplies;
 271         struct device_node *of_node;
 272 
 273         /* Driver private data */
 274         void *drv_data;
 275 
 276         /* private */
 277         struct device dev;
 278         struct work_struct changed_work;
 279         struct delayed_work deferred_register_work;
 280         spinlock_t changed_lock;
 281         bool changed;
 282         bool initialized;
 283         bool removing;
 284         atomic_t use_cnt;
 285 #ifdef CONFIG_THERMAL
 286         struct thermal_zone_device *tzd;
 287         struct thermal_cooling_device *tcd;
 288 #endif
 289 
 290 #ifdef CONFIG_LEDS_TRIGGERS
 291         struct led_trigger *charging_full_trig;
 292         char *charging_full_trig_name;
 293         struct led_trigger *charging_trig;
 294         char *charging_trig_name;
 295         struct led_trigger *full_trig;
 296         char *full_trig_name;
 297         struct led_trigger *online_trig;
 298         char *online_trig_name;
 299         struct led_trigger *charging_blink_full_solid_trig;
 300         char *charging_blink_full_solid_trig_name;
 301 #endif
 302 };
 303 
 304 /*
 305  * This is recommended structure to specify static power supply parameters.
 306  * Generic one, parametrizable for different power supplies. Power supply
 307  * class itself does not use it, but that's what implementing most platform
 308  * drivers, should try reuse for consistency.
 309  */
 310 
 311 struct power_supply_info {
 312         const char *name;
 313         int technology;
 314         int voltage_max_design;
 315         int voltage_min_design;
 316         int charge_full_design;
 317         int charge_empty_design;
 318         int energy_full_design;
 319         int energy_empty_design;
 320         int use_for_apm;
 321 };
 322 
 323 struct power_supply_battery_ocv_table {
 324         int ocv;        /* microVolts */
 325         int capacity;   /* percent */
 326 };
 327 
 328 #define POWER_SUPPLY_OCV_TEMP_MAX 20
 329 
 330 /*
 331  * This is the recommended struct to manage static battery parameters,
 332  * populated by power_supply_get_battery_info(). Most platform drivers should
 333  * use these for consistency.
 334  * Its field names must correspond to elements in enum power_supply_property.
 335  * The default field value is -EINVAL.
 336  * Power supply class itself doesn't use this.
 337  */
 338 
 339 struct power_supply_battery_info {
 340         int energy_full_design_uwh;         /* microWatt-hours */
 341         int charge_full_design_uah;         /* microAmp-hours */
 342         int voltage_min_design_uv;          /* microVolts */
 343         int voltage_max_design_uv;          /* microVolts */
 344         int precharge_current_ua;           /* microAmps */
 345         int charge_term_current_ua;         /* microAmps */
 346         int constant_charge_current_max_ua; /* microAmps */
 347         int constant_charge_voltage_max_uv; /* microVolts */
 348         int factory_internal_resistance_uohm;   /* microOhms */
 349         int ocv_temp[POWER_SUPPLY_OCV_TEMP_MAX];/* celsius */
 350         struct power_supply_battery_ocv_table *ocv_table[POWER_SUPPLY_OCV_TEMP_MAX];
 351         int ocv_table_size[POWER_SUPPLY_OCV_TEMP_MAX];
 352 };
 353 
 354 extern struct atomic_notifier_head power_supply_notifier;
 355 extern int power_supply_reg_notifier(struct notifier_block *nb);
 356 extern void power_supply_unreg_notifier(struct notifier_block *nb);
 357 extern struct power_supply *power_supply_get_by_name(const char *name);
 358 extern void power_supply_put(struct power_supply *psy);
 359 #ifdef CONFIG_OF
 360 extern struct power_supply *power_supply_get_by_phandle(struct device_node *np,
 361                                                         const char *property);
 362 extern struct power_supply *devm_power_supply_get_by_phandle(
 363                                     struct device *dev, const char *property);
 364 #else /* !CONFIG_OF */
 365 static inline struct power_supply *
 366 power_supply_get_by_phandle(struct device_node *np, const char *property)
 367 { return NULL; }
 368 static inline struct power_supply *
 369 devm_power_supply_get_by_phandle(struct device *dev, const char *property)
 370 { return NULL; }
 371 #endif /* CONFIG_OF */
 372 
 373 extern int power_supply_get_battery_info(struct power_supply *psy,
 374                                          struct power_supply_battery_info *info);
 375 extern void power_supply_put_battery_info(struct power_supply *psy,
 376                                           struct power_supply_battery_info *info);
 377 extern int power_supply_ocv2cap_simple(struct power_supply_battery_ocv_table *table,
 378                                        int table_len, int ocv);
 379 extern struct power_supply_battery_ocv_table *
 380 power_supply_find_ocv2cap_table(struct power_supply_battery_info *info,
 381                                 int temp, int *table_len);
 382 extern int power_supply_batinfo_ocv2cap(struct power_supply_battery_info *info,
 383                                         int ocv, int temp);
 384 extern void power_supply_changed(struct power_supply *psy);
 385 extern int power_supply_am_i_supplied(struct power_supply *psy);
 386 extern int power_supply_set_input_current_limit_from_supplier(
 387                                          struct power_supply *psy);
 388 extern int power_supply_set_battery_charged(struct power_supply *psy);
 389 
 390 #ifdef CONFIG_POWER_SUPPLY
 391 extern int power_supply_is_system_supplied(void);
 392 #else
 393 static inline int power_supply_is_system_supplied(void) { return -ENOSYS; }
 394 #endif
 395 
 396 extern int power_supply_get_property(struct power_supply *psy,
 397                             enum power_supply_property psp,
 398                             union power_supply_propval *val);
 399 extern int power_supply_set_property(struct power_supply *psy,
 400                             enum power_supply_property psp,
 401                             const union power_supply_propval *val);
 402 extern int power_supply_property_is_writeable(struct power_supply *psy,
 403                                         enum power_supply_property psp);
 404 extern void power_supply_external_power_changed(struct power_supply *psy);
 405 
 406 extern struct power_supply *__must_check
 407 power_supply_register(struct device *parent,
 408                                  const struct power_supply_desc *desc,
 409                                  const struct power_supply_config *cfg);
 410 extern struct power_supply *__must_check
 411 power_supply_register_no_ws(struct device *parent,
 412                                  const struct power_supply_desc *desc,
 413                                  const struct power_supply_config *cfg);
 414 extern struct power_supply *__must_check
 415 devm_power_supply_register(struct device *parent,
 416                                  const struct power_supply_desc *desc,
 417                                  const struct power_supply_config *cfg);
 418 extern struct power_supply *__must_check
 419 devm_power_supply_register_no_ws(struct device *parent,
 420                                  const struct power_supply_desc *desc,
 421                                  const struct power_supply_config *cfg);
 422 extern void power_supply_unregister(struct power_supply *psy);
 423 extern int power_supply_powers(struct power_supply *psy, struct device *dev);
 424 
 425 #define to_power_supply(device) container_of(device, struct power_supply, dev)
 426 
 427 extern void *power_supply_get_drvdata(struct power_supply *psy);
 428 /* For APM emulation, think legacy userspace. */
 429 extern struct class *power_supply_class;
 430 
 431 static inline bool power_supply_is_amp_property(enum power_supply_property psp)
 432 {
 433         switch (psp) {
 434         case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN:
 435         case POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN:
 436         case POWER_SUPPLY_PROP_CHARGE_FULL:
 437         case POWER_SUPPLY_PROP_CHARGE_EMPTY:
 438         case POWER_SUPPLY_PROP_CHARGE_NOW:
 439         case POWER_SUPPLY_PROP_CHARGE_AVG:
 440         case POWER_SUPPLY_PROP_CHARGE_COUNTER:
 441         case POWER_SUPPLY_PROP_PRECHARGE_CURRENT:
 442         case POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT:
 443         case POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT:
 444         case POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX:
 445         case POWER_SUPPLY_PROP_CURRENT_MAX:
 446         case POWER_SUPPLY_PROP_CURRENT_NOW:
 447         case POWER_SUPPLY_PROP_CURRENT_AVG:
 448         case POWER_SUPPLY_PROP_CURRENT_BOOT:
 449                 return 1;
 450         default:
 451                 break;
 452         }
 453 
 454         return 0;
 455 }
 456 
 457 static inline bool power_supply_is_watt_property(enum power_supply_property psp)
 458 {
 459         switch (psp) {
 460         case POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN:
 461         case POWER_SUPPLY_PROP_ENERGY_EMPTY_DESIGN:
 462         case POWER_SUPPLY_PROP_ENERGY_FULL:
 463         case POWER_SUPPLY_PROP_ENERGY_EMPTY:
 464         case POWER_SUPPLY_PROP_ENERGY_NOW:
 465         case POWER_SUPPLY_PROP_ENERGY_AVG:
 466         case POWER_SUPPLY_PROP_VOLTAGE_MAX:
 467         case POWER_SUPPLY_PROP_VOLTAGE_MIN:
 468         case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN:
 469         case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN:
 470         case POWER_SUPPLY_PROP_VOLTAGE_NOW:
 471         case POWER_SUPPLY_PROP_VOLTAGE_AVG:
 472         case POWER_SUPPLY_PROP_VOLTAGE_OCV:
 473         case POWER_SUPPLY_PROP_VOLTAGE_BOOT:
 474         case POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE:
 475         case POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE_MAX:
 476         case POWER_SUPPLY_PROP_POWER_NOW:
 477                 return 1;
 478         default:
 479                 break;
 480         }
 481 
 482         return 0;
 483 }
 484 
 485 #ifdef CONFIG_POWER_SUPPLY_HWMON
 486 int power_supply_add_hwmon_sysfs(struct power_supply *psy);
 487 void power_supply_remove_hwmon_sysfs(struct power_supply *psy);
 488 #else
 489 static inline int power_supply_add_hwmon_sysfs(struct power_supply *psy)
 490 {
 491         return 0;
 492 }
 493 
 494 static inline
 495 void power_supply_remove_hwmon_sysfs(struct power_supply *psy) {}
 496 #endif
 497 
 498 #endif /* __LINUX_POWER_SUPPLY_H__ */

/* [<][>][^][v][top][bottom][index][help] */