On 08/03/2023 09:44, Svyatoslav Ryhel wrote: > Since fuel gauge does not support thermal monitoring, > some vendors may couple this fuel gauge with thermal/adc > sensor to monitor battery cell exact temperature. > > Add this feature by adding optional iio thermal channel. > > Signed-off-by: Svyatoslav Ryhel <clamor95@xxxxxxxxx> > --- > drivers/power/supply/max17040_battery.c | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/drivers/power/supply/max17040_battery.c b/drivers/power/supply/max17040_battery.c > index 6dfce7b1309e..8c743c26dc6e 100644 > --- a/drivers/power/supply/max17040_battery.c > +++ b/drivers/power/supply/max17040_battery.c > @@ -18,6 +18,7 @@ > #include <linux/of_device.h> > #include <linux/regmap.h> > #include <linux/slab.h> > +#include <linux/iio/consumer.h> > > #define MAX17040_VCELL 0x02 > #define MAX17040_SOC 0x04 > @@ -143,6 +144,7 @@ struct max17040_chip { > struct power_supply *battery; > struct power_supply_battery_info *batt_info; > struct chip_data data; > + struct iio_channel *channel_temp; > > /* battery capacity */ > int soc; > @@ -416,6 +418,11 @@ static int max17040_get_property(struct power_supply *psy, > case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN: > val->intval = chip->batt_info->charge_full_design_uah; > break; > + case POWER_SUPPLY_PROP_TEMP: > + iio_read_channel_raw(chip->channel_temp, > + &val->intval); > + val->intval *= 10; I am not convinced this is needed at all. You basically chain two subsystems only to report to user-space via power supply, but it is already reported via IIO. I would understand it if you use the value for something, e.g. control the charger. Here, it's just feeding different user-space interface. Therefore: 1. IO channels are not a hardware property of the fuel gauge, 2. I have doubts this should be even exposed via power supply interface. Best regards, Krzysztof