On Mon, 22 Apr 2024 11:18:26 +0200 Hans de Goede <hdegoede@xxxxxxxxxx> wrote: > Hi, > > On 4/20/24 1:13 PM, Jonathan Cameron wrote: > > On Wed, 17 Apr 2024 18:46:14 +0200 > > Hans de Goede <hdegoede@xxxxxxxxxx> wrote: > > > >> The ACPI "ROTM" rotation matrix parsing code atm is already duplicated > >> between bmc150-accel-core.c and kxcjk-1013.c and a third user of this is > >> coming. > >> > >> Move the ROTM parsing from kxcjk-1013.c, which has slightly better error > >> logging (and otherwise is 100% identical), into a new acpi-helpers.h file > >> so that it can be shared. > >> > >> Other then moving the code the only 2 other changes are: > >> > >> 1. Rename the function to acpi_read_mount_matrix() to make clear this > >> is a generic ACPI mount matrix read function. > >> 2. Add a "char *acpi_method" parameter since some bmc150 dual-accel setups > >> (360° hinges with 1 accel in kbd/base + 1 in display half) declare both > >> accels in a single ACPI device with 2 different method names for > >> the 2 matrices. > >> > >> Cc: Sean Rhodes <sean@starlabs.systems> > >> Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> > > > > Tempted to ask you to rename this to > > acpi_non_standard_microsoft_extension_that_they_never_agreed_with_aswg_read_mount_matrix() > > but meh, I'll cope with a reference to: > > https://learn.microsoft.com/en-us/windows-hardware/drivers/sensors/sensors-acpi-entries > > and a comment saying this is not part of the ACPI standard. > > Ok, so I have added the following comment to the v2 which I will send out soon: > > diff --git a/drivers/iio/accel/acpi-helpers.h b/drivers/iio/accel/acpi-helpers.h > index a4357925bf07..4f4140694b59 100644 > --- a/drivers/iio/accel/acpi-helpers.h > +++ b/drivers/iio/accel/acpi-helpers.h > @@ -7,6 +7,13 @@ > #include <linux/sprintf.h> > > #ifdef CONFIG_ACPI > +/* > + * Parse mount matrixes defined in the ACPI "ROTM" format from: > + * https://learn.microsoft.com/en-us/windows-hardware/drivers/sensors/sensors-acpi-entries > + * This is a Microsoft extension and not part of the official ACPI spec. > + * The method name is configurable because some dual-accel setups define 2 mount > + * matrices in a single ACPI device using separate "ROMK" and "ROMS" methods. LGTM > + */ > static inline bool acpi_read_mount_matrix(struct device *dev, > struct iio_mount_matrix *orientation, > char *acpi_method) > > Regards, > > Hans