1a7ca45e8SJoseph Chen /* 2a7ca45e8SJoseph Chen * (C) Copyright 2017 Rockchip Electronics Co., Ltd 3a7ca45e8SJoseph Chen * 4a7ca45e8SJoseph Chen * SPDX-License-Identifier: GPL-2.0+ 5a7ca45e8SJoseph Chen */ 6a7ca45e8SJoseph Chen 7a7ca45e8SJoseph Chen #ifndef _FUEL_GAUGE_H_ 8a7ca45e8SJoseph Chen #define _FUEL_GAUGE_H_ 9a7ca45e8SJoseph Chen 10b3271e11SJoseph Chen /* Capability */ 11b3271e11SJoseph Chen #define FG_CAP_FUEL_GAUGE BIT(0) 12b3271e11SJoseph Chen #define FG_CAP_CHARGER BIT(1) 13b3271e11SJoseph Chen 14a7ca45e8SJoseph Chen struct dm_fuel_gauge_ops { 15b3271e11SJoseph Chen int (*capability)(struct udevice *dev); 1661a7a6d6SJoseph Chen int (*bat_is_exist)(struct udevice *dev); 17a7ca45e8SJoseph Chen int (*get_soc)(struct udevice *dev); 18a7ca45e8SJoseph Chen int (*get_voltage)(struct udevice *dev); 1923c01640SJoseph Chen int (*get_current)(struct udevice *dev); 20*b27ffc98Sshengfei Xu int (*get_temperature)(struct udevice *dev, int *temp); 21a7ca45e8SJoseph Chen bool (*get_chrg_online)(struct udevice *dev); 22*b27ffc98Sshengfei Xu int (*set_charger_voltage)(struct udevice *dev, int uV); 23*b27ffc98Sshengfei Xu int (*set_charger_enable)(struct udevice *dev); 24*b27ffc98Sshengfei Xu int (*set_charger_disable)(struct udevice *dev); 25*b27ffc98Sshengfei Xu int (*set_iprechg_current)(struct udevice *dev, int iprechrg_uA); 26*b27ffc98Sshengfei Xu int (*set_charger_current)(struct udevice *dev, int ichrg_uA); 27a7ca45e8SJoseph Chen }; 28a7ca45e8SJoseph Chen 29b3271e11SJoseph Chen int fuel_gauge_capability(struct udevice *dev); 3061a7a6d6SJoseph Chen int fuel_gauge_bat_is_exist(struct udevice *dev); 314f9cab27SJoseph Chen int fuel_gauge_update_get_soc(struct udevice *dev); 32a7ca45e8SJoseph Chen int fuel_gauge_get_voltage(struct udevice *dev); 3323c01640SJoseph Chen int fuel_gauge_get_current(struct udevice *dev); 34a7ca45e8SJoseph Chen bool fuel_gauge_get_chrg_online(struct udevice *dev); 35*b27ffc98Sshengfei Xu int fuel_gauge_get_temperature(struct udevice *dev, int *temp); 36*b27ffc98Sshengfei Xu int charger_set_charger_voltage(struct udevice *dev, int uV); 37*b27ffc98Sshengfei Xu int charger_set_iprechg_current(struct udevice *dev, int iprechrg_uA); 38*b27ffc98Sshengfei Xu int charger_set_current(struct udevice *dev, int ichrg_uA); 39*b27ffc98Sshengfei Xu int charger_set_enable(struct udevice *dev); 40*b27ffc98Sshengfei Xu int charger_set_disable(struct udevice *dev); 41a7ca45e8SJoseph Chen 42a7ca45e8SJoseph Chen #endif 43