hc
2024-10-09 05e59e5fb0064c97a1c10921ecd549f2d4a58565
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/*
 * (C) Copyright 2017 Rockchip Electronics Co., Ltd
 *
 * SPDX-License-Identifier:     GPL-2.0+
 */
 
#include <errno.h>
#include <dm.h>
#include <power/fuel_gauge.h>
 
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);
 
   if (!ops || !ops->bat_is_exist)
       return -ENOSYS;
 
   return ops->bat_is_exist(dev);
}
 
int fuel_gauge_get_current(struct udevice *dev)
{
   const struct dm_fuel_gauge_ops *ops = dev_get_driver_ops(dev);
 
   if (!ops || !ops->get_current)
       return -ENOSYS;
 
   return ops->get_current(dev);
}
 
int fuel_gauge_get_voltage(struct udevice *dev)
{
   const struct dm_fuel_gauge_ops *ops = dev_get_driver_ops(dev);
 
   if (!ops || !ops->get_voltage)
       return -ENOSYS;
 
   return ops->get_voltage(dev);
}
 
int fuel_gauge_update_get_soc(struct udevice *dev)
{
   const struct dm_fuel_gauge_ops *ops = dev_get_driver_ops(dev);
 
   if (!ops || !ops->get_soc)
       return -ENOSYS;
 
   return ops->get_soc(dev);
}
 
bool fuel_gauge_get_chrg_online(struct udevice *dev)
{
   const struct dm_fuel_gauge_ops *ops = dev_get_driver_ops(dev);
 
   if (!ops || !ops->get_chrg_online)
       return -ENOSYS;
 
   return ops->get_chrg_online(dev);
}
 
int fuel_gauge_get_temperature(struct udevice *dev, int *temp)
{
   const struct dm_fuel_gauge_ops *ops = dev_get_driver_ops(dev);
 
   if (!ops || !ops->get_temperature)
       return -ENOSYS;
 
   return ops->get_temperature(dev, temp);
}
 
int charger_set_charger_voltage(struct udevice *dev, int uV)
{
   const struct dm_fuel_gauge_ops *ops = dev_get_driver_ops(dev);
 
   if (!ops || !ops->set_charger_voltage)
       return -ENOSYS;
 
   return ops->set_charger_voltage(dev, uV);
}
 
int charger_set_current(struct udevice *dev, int ichrg_uA)
{
   const struct dm_fuel_gauge_ops *ops = dev_get_driver_ops(dev);
 
   if (!ops || !ops->set_charger_current)
       return -ENOSYS;
 
   return ops->set_charger_current(dev, ichrg_uA);
}
 
int charger_set_iprechg_current(struct udevice *dev, int iprechrg_uA)
{
   const struct dm_fuel_gauge_ops *ops = dev_get_driver_ops(dev);
 
   if (!ops || !ops->set_iprechg_current)
       return -ENOSYS;
 
   return ops->set_iprechg_current(dev, iprechrg_uA);
}
 
int charger_set_enable(struct udevice *dev)
{
   const struct dm_fuel_gauge_ops *ops = dev_get_driver_ops(dev);
 
   if (!ops || !ops->set_charger_enable)
       return -ENOSYS;
 
   return ops->set_charger_enable(dev);
}
 
int charger_set_disable(struct udevice *dev)
{
   const struct dm_fuel_gauge_ops *ops = dev_get_driver_ops(dev);
 
   if (!ops || !ops->set_charger_disable)
       return -ENOSYS;
 
   return ops->set_charger_disable(dev);
}
 
UCLASS_DRIVER(fuel_guage) = {
   .id        = UCLASS_FG,
   .name        = "fuel_gauge",
};