Files
2026-08-24 10:03:24 +08:00

121 lines
2.7 KiB
C

/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
//#include<linux/time.h>
//#include<linux/coda.h>
#include <linux/types.h>
#include<linux/time64.h>
#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 (0x5 << 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 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
#define DOUBLE_SERIES_BATTERY 0
#define UI_FULL 100
#define queue_delayed_work_time 8000
#define BATTERY_CHARGING_ZERO (1800 * 1000)
enum bat_mode {
MODE_BATTARY = 0,
MODE_VIRTUAL,
};
struct cw_bat_platform_data {
int divider_res1;
int divider_res2;
u32 *cw_bat_config_info;
int design_capacity;
};
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 timespec64 suspend_time_before;
struct timespec64 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;
int dual_battery;
int charge_count;
};
#endif