From: Jared Wuerzburger <jwuerz@gmail.com>
To: Jonathan Cameron <jic23@kernel.org>,
Lorenzo Bianconi <lorenzo@kernel.org>
Cc: "Andy Shevchenko" <andriy.shevchenko@intel.com>,
"David Lechner" <dlechner@baylibre.com>,
"Nuno Sá" <nuno.sa@analog.com>,
"Andy Shevchenko" <andy@kernel.org>,
"Samuel Dionne-Riel" <samuel@dionne-riel.com>,
linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH v4 2/2] iio: imu: st_lsm6dsx: Add ACPI ID SMOCF05 for LSM6DS3TR-C
Date: Mon, 28 Sep 2026 12:50:49 -0500 [thread overview]
Message-ID: <20260928175049.86941-3-jwuerz@gmail.com> (raw)
In-Reply-To: <20260928175049.86941-1-jwuerz@gmail.com>
From: Samuel Dionne-Riel <samuel@dionne-riel.com>
The Minisforum V3 and V3 SE tablets declare their ST LSM6DS3TR-C IMU in
the DSDT with the hardware ID SMOCF05 instead of SMO8B30, so the driver
never binds and the accelerometer and gyroscope are missing. The
Windows driver (version 1.0.4.3) binds the LSM6DS3TR-C to both IDs.
Relevant part of the DSDT, identical on both models:
Scope (_SB.I2CD) { Device (STS) {
Name (_HID, EisaId ("SMOCF05"))
Name (_CID, EisaId ("SMOCF05"))
_CRS: I2cSerialBusV2 (0x006A, ..., "\\_SB.I2CD") vendor data "SLA0"
I2cSerialBusV2 (0x006A, ..., "\\_SB.I2CD") vendor data "SLG0"
GpioInt (Edge, ActiveHigh, ..., "\\_SB.GPIO") { 9 } "SLA0"
Method (SLA0): "-1 0 0", "0 -1 0", "0 0 -1"
Method (SLG0): "1 0 0", "0 1 0", "0 0 1"
} }
Both I2C resources describe the same address; the I2C core uses the
first one.
The vendor-specific SLA0/SLG0 methods are not parsed, because SLA0 is
not usable as a mount matrix as it is. Its X and Y signs are right, but
it also negates Z. It follows the Windows sensor convention, which
reports Z = -1g with the screen facing up, while iio-sensor-proxy uses
the same X and Y signs but expects Z = +1g in that posture. Applied as
a mount matrix, SLA0 gives correct screen rotation, but iio-sensor-proxy
reports the tilt inverted. The actual mounting is a plain 180 degree
rotation about Z (-1 0 0; 0 -1 0; 0 0 1), with which orientation and
tilt are both right. As for SMOCF00, the matrix is therefore provided
by the systemd hwdb instead.
Tested on:
- V3 SE (Ryzen 7 7735U, BIOS 1.03) with this change.
- V3 (Ryzen 7 8840U, BIOS 1.06), kernel 7.2.7, with this change and
the stock firmware tables. The driver binds to i2c-SMOCF05:00, the
WHO_AM_I check passes (0x6a), and both lsm6ds3tr-c_accel and
lsm6ds3tr-c_gyro are registered. Screen auto-rotation and tilt work
with iio-sensor-proxy and the matrix above (checked with the device
renamed to SMO8B30 via a DSDT override, i.e. the same
ST_LSM6DS3TRC_ID driver data).
Closes: https://github.com/mudkipme/awesome-minisforum-v3/issues/2
Signed-off-by: Samuel Dionne-Riel <samuel@dionne-riel.com>
[Jared Wuerzburger: rewrote the changelog with the DSDT excerpt, test
results and mount matrix rationale, converted the entry to C99
initializers, dropped the mount matrix patch]
Assisted-by: LLM
Signed-off-by: Jared Wuerzburger <jwuerz@gmail.com>
---
Notes:
Jonathan, when applying, could you add a Link: to this series? The
cover letter has the full DSDT excerpt, too long for the changelog.
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
index c4097ce2bf..11e5ec3798 100644
--- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
+++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
@@ -145,6 +145,7 @@ MODULE_DEVICE_TABLE(of, st_lsm6dsx_i2c_of_match);
static const struct acpi_device_id st_lsm6dsx_i2c_acpi_match[] = {
{ .id = "SMO8B30", .driver_data = ST_LSM6DS3TRC_ID },
{ .id = "SMOCF00", .driver_data = ST_LSM6DSO_ID },
+ { .id = "SMOCF05", .driver_data = ST_LSM6DS3TRC_ID },
{ }
};
MODULE_DEVICE_TABLE(acpi, st_lsm6dsx_i2c_acpi_match);
--
2.55.0
next prev parent reply other threads:[~2026-09-28 17:52 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-28 17:50 [PATCH v4 0/2] iio: imu: st_lsm6dsx: Add ACPI ID SMOCF05 (Minisforum V3 / V3 SE) Jared Wuerzburger
2026-09-28 17:50 ` [PATCH v4 1/2] iio: imu: st_lsm6dsx: Use C99 initializers in ACPI match table Jared Wuerzburger
2026-09-28 17:59 ` Andy Shevchenko
2026-09-28 17:50 ` Jared Wuerzburger [this message]
2026-09-28 18:04 ` [PATCH v4 2/2] iio: imu: st_lsm6dsx: Add ACPI ID SMOCF05 for LSM6DS3TR-C Andy Shevchenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260928175049.86941-3-jwuerz@gmail.com \
--to=jwuerz@gmail.com \
--cc=andriy.shevchenko@intel.com \
--cc=andy@kernel.org \
--cc=dlechner@baylibre.com \
--cc=jic23@kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lorenzo@kernel.org \
--cc=nuno.sa@analog.com \
--cc=samuel@dionne-riel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®