On Wed, May 29, 2024 at 06:41:36PM +0300, Ilpo Järvinen wrote: > On Tue, 28 May 2024, Dmitry Baryshkov wrote: > > > On the Lenovo Yoga C630 WOS laptop the EC provides access to the adapter > > and battery status. Add the driver to read power supply status on the > > laptop. > > > > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> > > --- > > drivers/power/supply/Kconfig | 9 + > > drivers/power/supply/Makefile | 1 + > > drivers/power/supply/lenovo_yoga_c630_battery.c | 479 ++++++++++++++++++++++++ > > 3 files changed, 489 insertions(+) > > > > + > > + val = yoga_c630_ec_read16(ec, LENOVO_EC_BAT_DESIGN_CAPACITY); > > + if (val < 0) > > + return val; > > + ecbat->design_capacity = val * 1000; > > Check linux/units.h if some WATT related one matches to that literal 1000. I'd rather not do that. The capacity might be either in microWatt-hours or in microAmp-hours. Using WATT will be confusing in the second case. > > + msleep(50); > > + > > + val = yoga_c630_ec_read16(ec, LENOVO_EC_BAT_VOLTAGE); > > + if (val < 0) > > + return val; > > + ecbat->voltage_now = val * 1000; > > Ditto. No, Volts and Amps don't have units in <linux/units.h> > > > + msleep(50); > > + > > + val = yoga_c630_ec_read16(ec, LENOVO_EC_BAT_CURRENT); > > + if (val < 0) > > + return val; > > + current_mA = sign_extend32(val, 15); > > + ecbat->current_now = current_mA * 1000; > > + ecbat->rate_now = current_mA * (ecbat->voltage_now / 1000); > > Ditto. The same > > > + msleep(50); > > + > > + if (!ecbat->unit_mA) > > + ecbat->capacity_now *= 10; > > + > > + ecbat->last_status_update = jiffies; -- With best wishes Dmitry