Re: [PATCH 3/3] hwmon: (asus_wmi_sensors) Support access via Asus WMI.
From: Eugene Shalygin
Date: Mon Oct 04 2021 - 10:32:00 EST
Hello,
When I first wrote the EC sensor driver, I thought there were only a
few sensor configurations, but it turned out the assumption was wrong
and even with currently supported 6 boards the sensor to board mapping
is already hardly readable. Thus I redone that part in a declarative
way so that the sensor list for each board is condensed and is easy to
digest [1]. Please consider updating the submitted patches.
Best regards,
Eugene
[1] https://github.com/zeule/asus-wmi-ec-sensors/pull/4
On Sun, 3 Oct 2021 at 22:49, Denis Pauk <pauk.denis@xxxxxxxxx> wrote:
>
> Hi Eugene,
>
> On Sat, 2 Oct 2021 23:56:20 +0200
> Eugene Shalygin <eugene.shalygin@xxxxxxxxx> wrote:
>
> > Hi, Denis!
> >
> > Thank you for submitting this driver to the mainline! I have a few
> > comments/suggestions, please find them below.
> >
> > > +#define HWMON_MAX 9
> >
> > There is a hwmon_max enum member, whose current value is 10.
> Thank you, I will check.
>
> >
> > > +#define ASUS_WMI_BLOCK_READ_REGISTERS_MAX 0x10 /* from the ASUS
> > > DSDT source */ +/* from the ASUS_WMI_BLOCK_READ_REGISTERS_MAX value
> > > */ +#define ASUS_WMI_MAX_BUF_LEN 0x80
> > Suggestion:
> > #define ASUS_WMI_MAX_BUF_LEN 0x80 /* from the
> > ASUS_WMI_BLOCK_READ_REGISTERS_MAX value */
> >
> > > +#define ASUSWMI_SENSORS_MAX 11
> > This one is for the EC only, maybe rename it accordingly?
> >
> Thank you, I will check.
>
> > > +struct asus_wmi_data {
> > > + int ec_board;
> > > +};
> >
> > Duplicates the value in the asus_wmi_sensors struct. Refactoring
> > artifact?
> >
> I have used different structures for data in platform and device.
>
> > asus_wmi_ec_set_sensor_info(si++, "Water", hwmon_fan,
> > > +
> > > asus_wmi_ec_make_sensor_address(2, 0x00, 0xBC),
> > > + &ec->nr_registers);
> > This one is named "W_FLOW" in the BIOS and ASUS software. Maybe append
> > "_flow" to the label?
> >
> Thank you, I will check.
>
> > > + * The next four functions converts to/from BRxx string argument
> > > format
> > convert (remove "s")
> >
> > > + // assert(len <= 30)
> > Makes little sense in the kernel.
> >
> Thank you, I will check.
>
> > > +static void asus_wmi_ec_make_block_read_query(struct
> > > asus_wmi_ec_info *ec) +{
> > > + u16 registers[ASUS_EC_KNOWN_EC_REGISTERS];
> > > + u8 i, j, register_idx = 0;
> > > +
> > > + /* if we can get values for all the registers in a single
> > > query,
> > > + * the query will not change from call to call
> > > + */
> > > + if (ec->nr_registers <= ASUS_WMI_BLOCK_READ_REGISTERS_MAX &&
> > > + ec->read_arg[0] > 0) {
> > > + /* no need to update */
> > > + return;
> > > + }
> > > +
> > I would add a test for ec->nr_registers >
> > ASUS_WMI_BLOCK_READ_REGISTERS_MAX and a warning log message here.
> >
> Thank you, I will check.
>
> > > +static int asus_wmi_probe(struct platform_device *pdev)
> >
> > Can we add a module alias or to load the module automatically by other
> > means? For module aliases we know DMI parameters for the supported
> > boards.
> >
> I will look, I prefer to reuse same module code for boards with/without
> EC endpoints same as in
> https://bugzilla.kernel.org/show_bug.cgi?id=204807#c128.
>
> > Best regards,
> > Eugene
>
> Best regards,
> Denis.