Linux IIO development
 help / color / mirror / Atom feed
* [PATCH v3 0/2] Add bmi323 support for ASUS ROG ALLY
@ 2024-02-14 22:48 Jonathan LoBue
  2024-02-14 22:51 ` [PATCH v3 1/2] iio: accel: bmc150: Duplicate ACPI entries Jonathan LoBue
  2024-02-14 22:51 ` [PATCH v3 2/2] iio: imu: bmi323: Add and enable ACPI Match Table Jonathan LoBue
  0 siblings, 2 replies; 3+ messages in thread
From: Jonathan LoBue @ 2024-02-14 22:48 UTC (permalink / raw)
  To: jic23
  Cc: linux-iio, andy.shevchenko, hdegoede, ilpo.jarvinen,
	jagathjog1996, luke, benato.denis96, lkml, derekjohn.clark

[-- Attachment #1: Type: text/plain, Size: 431 bytes --]

From: Jonathan LoBue <jlobue10@gmail.com>

Changes since v2:
- Updated comment wording and locations.
- Formatting fixes.
- Added reviewed by line.

Jonathan LoBue (2):
  iio: accel: bmc150: Duplicate ACPI entries
  iio: imu: bmi323: Add and enable ACPI Match Table

 drivers/iio/accel/bmc150-accel-i2c.c | 12 ++++++++++++
 drivers/iio/imu/bmi323/bmi323_i2c.c  | 20 ++++++++++++++++++++
 2 files changed, 32 insertions(+)
--
2.43.0

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH v3 1/2] iio: accel: bmc150: Duplicate ACPI entries
  2024-02-14 22:48 [PATCH v3 0/2] Add bmi323 support for ASUS ROG ALLY Jonathan LoBue
@ 2024-02-14 22:51 ` Jonathan LoBue
  2024-02-14 22:51 ` [PATCH v3 2/2] iio: imu: bmi323: Add and enable ACPI Match Table Jonathan LoBue
  1 sibling, 0 replies; 3+ messages in thread
From: Jonathan LoBue @ 2024-02-14 22:51 UTC (permalink / raw)
  To: jic23
  Cc: linux-iio, andy.shevchenko, hdegoede, ilpo.jarvinen,
	jagathjog1996, luke, benato.denis96, lkml, derekjohn.clark,
	jlobue10

From: jlobue10 <jlobue10@gmail.com>

---
 drivers/iio/accel/bmc150-accel-i2c.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/iio/accel/bmc150-accel-i2c.c b/drivers/iio/accel/bmc150-accel-i2c.c
index ee1ba134ad42..df7d48a35e41 100644
--- a/drivers/iio/accel/bmc150-accel-i2c.c
+++ b/drivers/iio/accel/bmc150-accel-i2c.c
@@ -15,6 +15,19 @@
 
 #ifdef CONFIG_ACPI
 static const struct acpi_device_id bmc150_acpi_dual_accel_ids[] = {
+	/*
+ 	 * The "BOSC0200" identifier used here is not unique to devices using
+ 	 * bmc150. The same "BOSC0200" identifier is found in the ACPI tables of
+ 	 * the ASUS ROG ALLY and Ayaneo AIR Plus which both use a Bosch BMI323
+ 	 * chip. This creates a conflict with duplicate ACPI identifiers which
+ 	 * multiple drivers want to use. Fortunately, when the bmc150 driver
+ 	 * starts to load on the ASUS ROG ALLY, the chip ID check portion fails
+ 	 * (correctly) because the chip IDs received (via i2c) are unique between
+ 	 * bmc150 and bmi323 and a dmesg output similar to this:
+ 	 * "bmc150_accel_i2c i2c-BOSC0200:00: Invalid chip 0" can be seen.
+ 	 * This allows the bmi323 driver to take over for ASUS ROG ALLY, and
+ 	 * other devices using the bmi323 chip.
+ 	 */
 	{"BOSC0200"},
 	{"DUAL250E"},
 	{ }
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH v3 2/2] iio: imu: bmi323: Add and enable ACPI Match Table
  2024-02-14 22:48 [PATCH v3 0/2] Add bmi323 support for ASUS ROG ALLY Jonathan LoBue
  2024-02-14 22:51 ` [PATCH v3 1/2] iio: accel: bmc150: Duplicate ACPI entries Jonathan LoBue
@ 2024-02-14 22:51 ` Jonathan LoBue
  1 sibling, 0 replies; 3+ messages in thread
From: Jonathan LoBue @ 2024-02-14 22:51 UTC (permalink / raw)
  To: jic23
  Cc: linux-iio, andy.shevchenko, hdegoede, ilpo.jarvinen,
	jagathjog1996, luke, benato.denis96, lkml, derekjohn.clark,
	jlobue10

From: jlobue10 <jlobue10@gmail.com>

---
 drivers/iio/imu/bmi323/bmi323_i2c.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/drivers/iio/imu/bmi323/bmi323_i2c.c b/drivers/iio/imu/bmi323/bmi323_i2c.c
index 20a8001b9956..f7550503e47e 100644
--- a/drivers/iio/imu/bmi323/bmi323_i2c.c
+++ b/drivers/iio/imu/bmi323/bmi323_i2c.c
@@ -93,6 +93,25 @@ static int bmi323_i2c_probe(struct i2c_client *i2c)
 	return bmi323_core_probe(dev);
 }
 
+static const struct acpi_device_id bmi323_acpi_match[] = {
+	/*
+ 	 * The "BOSC0200" identifier used here is not unique to bmi323 devices.
+ 	 * The same "BOSC0200" identifier is found in the ACPI tables of devices
+ 	 * using the bmc150 chip. This creates a conflict with duplicate ACPI
+ 	 * identifiers which multiple drivers want to use. If a non-bmi323 device
+ 	 * starts to load with this "BOSC0200" ACPI match here, then the chip
+ 	 * ID check portion should fail because the chip IDs received (via i2c) are
+ 	 * unique between bmc150 and bmi323 and the driver should relinquish the
+ 	 * device. If and when a different driver (such as bmc150) starts to load
+ 	 * with the "BOSC0200" ACPI match, a short reset should ensure that the
+ 	 * device is not in a bad state during that driver initialization. This
+ 	 * device reset does occur in both the bmi323 and bmc150 init sequences.
+ 	 */
+	{ "BOSC0200" },
+	{ }
+};
+MODULE_DEVICE_TABLE(acpi, bmi323_acpi_match);
+
 static const struct i2c_device_id bmi323_i2c_ids[] = {
 	{ "bmi323" },
 	{ }
@@ -109,6 +128,7 @@ static struct i2c_driver bmi323_i2c_driver = {
 	.driver = {
 		.name = "bmi323",
 		.of_match_table = bmi323_of_i2c_match,
+		.acpi_match_table = bmi323_acpi_match,
 	},
 	.probe = bmi323_i2c_probe,
 	.id_table = bmi323_i2c_ids,
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-02-14 22:51 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-14 22:48 [PATCH v3 0/2] Add bmi323 support for ASUS ROG ALLY Jonathan LoBue
2024-02-14 22:51 ` [PATCH v3 1/2] iio: accel: bmc150: Duplicate ACPI entries Jonathan LoBue
2024-02-14 22:51 ` [PATCH v3 2/2] iio: imu: bmi323: Add and enable ACPI Match Table Jonathan LoBue

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox