On Tue, 28 May 2024 at 11:43, Oliver Neukum <oneukum@xxxxxxxx> wrote: > > On 28.05.24 01:15, Dmitry Baryshkov wrote: > > On Mon, May 27, 2024 at 02:26:36PM +0200, Oliver Neukum wrote: > >> On 27.05.24 12:03, Dmitry Baryshkov wrote: > > Hi, > > >>> +struct yoga_c630_psy { > >>> + struct yoga_c630_ec *ec; > >>> + struct device *dev; > >>> + struct device_node *of_node; > >>> + struct notifier_block nb; > >>> + struct mutex lock; > >>> + > >>> + struct power_supply *adp_psy; > >>> + struct power_supply *bat_psy; > >>> + > >>> + unsigned long last_status_update; > >>> + > >>> + bool adapter_online; > >>> + > >>> + bool unit_mA; > >>> + > >>> + unsigned int scale; > >> > >> why do you store unit_mA and scale? This looks redundant and like a source > >> of confusion to me. > > > > Here we just followed the AML code in ACPI tables. The unit_mA is a > > returned from the_BIX method, the 'scale' is used internally in the DSDT. > > If you think that it's better, I can change all '* scale * 1000' to > > 'if unit_mA then foo = bar * 10000 else foo = bar * 1000'. > > I think that would indeed be better. Implementation details of the DSDT > should not dictate data structures in a kernel driver. Ack. > > Regards > Oliver > -- With best wishes Dmitry