mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-23 05:56:14 -04:00
Most of the functions that read values return a status and put the value itself in an a function parameter. Update health reading to match. As health is not checked for changes as part of the update loop, remove the read of this from the periodic update loop. This saves I2C/1W bandwidth. It also means we do not have to cache it, fresh values are read when requested. Signed-off-by: Andrew Davis <afd@ti.com> Link: https://lore.kernel.org/r/20240325203129.150030-6-afd@ti.com Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
80 lines
1.9 KiB
C
80 lines
1.9 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef __LINUX_BQ27X00_BATTERY_H__
|
|
#define __LINUX_BQ27X00_BATTERY_H__
|
|
|
|
#include <linux/power_supply.h>
|
|
|
|
enum bq27xxx_chip {
|
|
BQ27000 = 1, /* bq27000, bq27200 */
|
|
BQ27010, /* bq27010, bq27210 */
|
|
BQ2750X, /* bq27500 deprecated alias */
|
|
BQ2751X, /* bq27510, bq27520 deprecated alias */
|
|
BQ2752X,
|
|
BQ27500, /* bq27500/1 */
|
|
BQ27510G1, /* bq27510G1 */
|
|
BQ27510G2, /* bq27510G2 */
|
|
BQ27510G3, /* bq27510G3 */
|
|
BQ27520G1, /* bq27520G1 */
|
|
BQ27520G2, /* bq27520G2 */
|
|
BQ27520G3, /* bq27520G3 */
|
|
BQ27520G4, /* bq27520G4 */
|
|
BQ27521, /* bq27521 */
|
|
BQ27530, /* bq27530, bq27531 */
|
|
BQ27531,
|
|
BQ27541, /* bq27541, bq27542, bq27546, bq27742 */
|
|
BQ27542,
|
|
BQ27546,
|
|
BQ27742,
|
|
BQ27545, /* bq27545 */
|
|
BQ27411,
|
|
BQ27421, /* bq27421, bq27441, bq27621 */
|
|
BQ27425,
|
|
BQ27426,
|
|
BQ27441,
|
|
BQ27621,
|
|
BQ27Z561,
|
|
BQ28Z610,
|
|
BQ34Z100,
|
|
BQ78Z100,
|
|
};
|
|
|
|
struct bq27xxx_device_info;
|
|
struct bq27xxx_access_methods {
|
|
int (*read)(struct bq27xxx_device_info *di, u8 reg, bool single);
|
|
int (*write)(struct bq27xxx_device_info *di, u8 reg, int value, bool single);
|
|
int (*read_bulk)(struct bq27xxx_device_info *di, u8 reg, u8 *data, int len);
|
|
int (*write_bulk)(struct bq27xxx_device_info *di, u8 reg, u8 *data, int len);
|
|
};
|
|
|
|
struct bq27xxx_reg_cache {
|
|
int capacity;
|
|
int flags;
|
|
};
|
|
|
|
struct bq27xxx_device_info {
|
|
struct device *dev;
|
|
enum bq27xxx_chip chip;
|
|
u32 opts;
|
|
const char *name;
|
|
struct bq27xxx_dm_reg *dm_regs;
|
|
u32 unseal_key;
|
|
struct bq27xxx_access_methods bus;
|
|
struct bq27xxx_reg_cache cache;
|
|
int charge_design_full;
|
|
bool removed;
|
|
unsigned long last_update;
|
|
union power_supply_propval last_status;
|
|
struct delayed_work work;
|
|
struct power_supply *bat;
|
|
struct list_head list;
|
|
struct mutex lock;
|
|
u8 *regs;
|
|
};
|
|
|
|
void bq27xxx_battery_update(struct bq27xxx_device_info *di);
|
|
int bq27xxx_battery_setup(struct bq27xxx_device_info *di);
|
|
void bq27xxx_battery_teardown(struct bq27xxx_device_info *di);
|
|
extern const struct dev_pm_ops bq27xxx_battery_battery_pm_ops;
|
|
|
|
#endif
|