#include <linux/err.h>
#include <linux/i2c.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/gpio/consumer.h>
#include <linux/power_supply.h>
#include <linux/regmap.h>
#include <linux/types.h>
#include <linux/delay.h>
#include <linux/device.h>
#include <linux/moduleparam.h>
#include <linux/slab.h>
#include "bq25980_charger.h"
struct bq25980_state { … };
enum bq25980_id { … };
struct bq25980_chip_info { … };
struct bq25980_init_data { … };
struct bq25980_device { … };
static struct reg_default bq25980_reg_defs[] = …;
static struct reg_default bq25975_reg_defs[] = …;
static struct reg_default bq25960_reg_defs[] = …;
static int bq25980_watchdog_time[BQ25980_NUM_WD_VAL] = …;
static int bq25980_get_input_curr_lim(struct bq25980_device *bq)
{ … }
static int bq25980_set_hiz(struct bq25980_device *bq, int setting)
{ … }
static int bq25980_set_input_curr_lim(struct bq25980_device *bq, int busocp)
{ … }
static int bq25980_get_input_volt_lim(struct bq25980_device *bq)
{ … }
static int bq25980_set_input_volt_lim(struct bq25980_device *bq, int busovp)
{ … }
static int bq25980_get_const_charge_curr(struct bq25980_device *bq)
{ … }
static int bq25980_set_const_charge_curr(struct bq25980_device *bq, int batocp)
{ … }
static int bq25980_get_const_charge_volt(struct bq25980_device *bq)
{ … }
static int bq25980_set_const_charge_volt(struct bq25980_device *bq, int batovp)
{ … }
static int bq25980_set_bypass(struct bq25980_device *bq, bool en_bypass)
{ … }
static int bq25980_set_chg_en(struct bq25980_device *bq, bool en_chg)
{ … }
static int bq25980_get_adc_ibus(struct bq25980_device *bq)
{ … }
static int bq25980_get_adc_vbus(struct bq25980_device *bq)
{ … }
static int bq25980_get_ibat_adc(struct bq25980_device *bq)
{ … }
static int bq25980_get_adc_vbat(struct bq25980_device *bq)
{ … }
static int bq25980_get_state(struct bq25980_device *bq,
struct bq25980_state *state)
{ … }
static int bq25980_get_battery_property(struct power_supply *psy,
enum power_supply_property psp,
union power_supply_propval *val)
{ … }
static int bq25980_set_charger_property(struct power_supply *psy,
enum power_supply_property prop,
const union power_supply_propval *val)
{ … }
static int bq25980_get_charger_property(struct power_supply *psy,
enum power_supply_property psp,
union power_supply_propval *val)
{ … }
static bool bq25980_state_changed(struct bq25980_device *bq,
struct bq25980_state *new_state)
{ … }
static irqreturn_t bq25980_irq_handler_thread(int irq, void *private)
{ … }
static enum power_supply_property bq25980_power_supply_props[] = …;
static enum power_supply_property bq25980_battery_props[] = …;
static char *bq25980_charger_supplied_to[] = …;
static int bq25980_property_is_writeable(struct power_supply *psy,
enum power_supply_property prop)
{ … }
static const struct power_supply_desc bq25980_power_supply_desc = …;
static struct power_supply_desc bq25980_battery_desc = …;
static bool bq25980_is_volatile_reg(struct device *dev, unsigned int reg)
{ … }
static const struct regmap_config bq25980_regmap_config = …;
static const struct regmap_config bq25975_regmap_config = …;
static const struct regmap_config bq25960_regmap_config = …;
static const struct bq25980_chip_info bq25980_chip_info_tbl[] = …;
static int bq25980_power_supply_init(struct bq25980_device *bq,
struct device *dev)
{ … }
static int bq25980_hw_init(struct bq25980_device *bq)
{ … }
static int bq25980_parse_dt(struct bq25980_device *bq)
{ … }
static int bq25980_probe(struct i2c_client *client)
{ … }
static const struct i2c_device_id bq25980_i2c_ids[] = …;
MODULE_DEVICE_TABLE(i2c, bq25980_i2c_ids);
static const struct of_device_id bq25980_of_match[] = …;
MODULE_DEVICE_TABLE(of, bq25980_of_match);
static struct i2c_driver bq25980_driver = …;
module_i2c_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;