From b3271e11e6b2f16e42258b62904911b457f08ffa Mon Sep 17 00:00:00 2001 From: Joseph Chen Date: Wed, 15 May 2019 17:10:30 +0800 Subject: [PATCH] power: fuel gauge: add capability callback Return "FG_CAP_FUEL_GAUGE | FG_CAP_CHARGER" as default value when there's not implementation, which compatibles with all fg drivers. Change-Id: Ie71e1271e504c63be42af41551e10e8c2c7d89ac Signed-off-by: Joseph Chen --- drivers/power/fuel_gauge/fuel_gauge_uclass.c | 10 ++++++++++ include/power/fuel_gauge.h | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/drivers/power/fuel_gauge/fuel_gauge_uclass.c b/drivers/power/fuel_gauge/fuel_gauge_uclass.c index 8d7d400109..d766c57ee9 100644 --- a/drivers/power/fuel_gauge/fuel_gauge_uclass.c +++ b/drivers/power/fuel_gauge/fuel_gauge_uclass.c @@ -10,6 +10,16 @@ DECLARE_GLOBAL_DATA_PTR; +int fuel_gauge_capability(struct udevice *dev) +{ + const struct dm_fuel_gauge_ops *ops = dev_get_driver_ops(dev); + + if (!ops || !ops->capability) + return (FG_CAP_CHARGER | FG_CAP_FUEL_GAUGE); + + return ops->capability(dev); +} + int fuel_gauge_bat_is_exist(struct udevice *dev) { const struct dm_fuel_gauge_ops *ops = dev_get_driver_ops(dev); diff --git a/include/power/fuel_gauge.h b/include/power/fuel_gauge.h index cf9ef8be7e..ee6c3e5f0e 100644 --- a/include/power/fuel_gauge.h +++ b/include/power/fuel_gauge.h @@ -7,7 +7,12 @@ #ifndef _FUEL_GAUGE_H_ #define _FUEL_GAUGE_H_ +/* Capability */ +#define FG_CAP_FUEL_GAUGE BIT(0) +#define FG_CAP_CHARGER BIT(1) + struct dm_fuel_gauge_ops { + int (*capability)(struct udevice *dev); int (*bat_is_exist)(struct udevice *dev); int (*get_soc)(struct udevice *dev); int (*get_voltage)(struct udevice *dev); @@ -15,6 +20,7 @@ struct dm_fuel_gauge_ops { bool (*get_chrg_online)(struct udevice *dev); }; +int fuel_gauge_capability(struct udevice *dev); int fuel_gauge_bat_is_exist(struct udevice *dev); int fuel_gauge_get_soc(struct udevice *dev); int fuel_gauge_get_voltage(struct udevice *dev);