diff options
Diffstat (limited to 'include/linux/power/cw2015_battery.h')
-rw-r--r-- | include/linux/power/cw2015_battery.h | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/include/linux/power/cw2015_battery.h b/include/linux/power/cw2015_battery.h new file mode 100644 index 000000000000..938dda818e72 --- /dev/null +++ b/include/linux/power/cw2015_battery.h @@ -0,0 +1,118 @@ +/* + * Fuel gauge driver for CellWise 2013 / 2015 + * + * Copyright (C) 2012, RockChip + * + * Authors: xuhuicong <xhc@rock-chips.com> + * + * Based on rk30_adc_battery.c + + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + */ + +#ifndef CW2015_BATTERY_H +#define CW2015_BATTERY_H + +#define SIZE_BATINFO 64 + +#define CW2015_GPIO_HIGH 1 +#define CW2015_GPIO_LOW 0 + +#define REG_VERSION 0x0 +#define REG_VCELL 0x2 +#define REG_SOC 0x4 +#define REG_RRT_ALERT 0x6 +#define REG_CONFIG 0x8 +#define REG_MODE 0xA +#define REG_BATINFO 0x10 + +#define MODE_SLEEP_MASK (0x3<<6) +#define MODE_SLEEP (0x3<<6) +#define MODE_NORMAL (0x0<<6) +#define MODE_QUICK_START (0x3<<4) +#define MODE_RESTART (0xf<<0) + +#define CONFIG_UPDATE_FLG (0x1<<1) +#define ATHD (0x0<<3) + +#define CW_I2C_SPEED 100000 +#define BATTERY_UP_MAX_CHANGE (420 * 1000) +#define BATTERY_DOWN_MAX_CHANGE (120 * 1000) +#define BATTERY_DOWN_CHANGE 60 +#define BATTERY_DOWN_MIN_CHANGE_RUN 30 +#define BATTERY_DOWN_MIN_CHANGE_SLEEP 1800 +#define BATTERY_JUMP_TO_ZERO (30 * 1000) +#define BATTERY_CAPACITY_ERROR (40 * 1000) +#define BATTERY_CHARGING_ZERO (1800 * 1000) + +#define DOUBLE_SERIES_BATTERY 0 + +#define CHARGING_ON 1 +#define NO_CHARGING 0 + +#define BATTERY_DOWN_MAX_CHANGE_RUN_AC_ONLINE 3600 + +#define NO_STANDARD_AC_BIG_CHARGE_MODE 1 +/* #define SYSTEM_SHUTDOWN_VOLTAGE 3400000 */ +#define BAT_LOW_INTERRUPT 1 + +#define USB_CHARGER_MODE 1 +#define AC_CHARGER_MODE 2 +#define CW_QUICKSTART 0 + +#define TIMER_MS_COUNTS 1000 +#define DEFAULT_MONITOR_SEC 8 + +/* virtual params */ +#define VIRTUAL_CURRENT 1000 +#define VIRTUAL_VOLTAGE 3888 +#define VIRTUAL_SOC 66 +#define VIRTUAL_PRESET 1 +#define VIRTUAL_TEMPERATURE 188 +#define VIRTUAL_TIME2EMPTY 60 +#define VIRTUAL_STATUS POWER_SUPPLY_STATUS_CHARGING + +enum bat_mode { + MODE_BATTARY = 0, + MODE_VIRTUAL, +}; + +struct cw_bat_platform_data { + int divider_res1; + int divider_res2; + u32 *cw_bat_config_info; +}; + +struct cw_battery { + struct i2c_client *client; + struct workqueue_struct *battery_workqueue; + struct delayed_work battery_delay_work; + struct cw_bat_platform_data plat_data; + + struct power_supply *rk_bat; + + struct power_supply *chrg_usb_psy; + struct power_supply *chrg_ac_psy; + +#ifdef CONFIG_PM + struct timespec suspend_time_before; + struct timespec after; + int suspend_resume_mark; +#endif + int charger_mode; + int capacity; + int voltage; + int status; + int time_to_empty; + int alt; + u32 monitor_sec; + u32 bat_mode; + int bat_change; + bool dual_battery; + int charge_count; +}; + +#endif |