Skip to content

Commit

Permalink
iio: imu: bmi323: Add ACPI Match Table
Browse files Browse the repository at this point in the history
Adds the ACPI match table for ASUS ROG ALLY to load the bmi323
driver with an ACPI match of "BOSC0200", and a comment about duplicate
ACPI identifiers between devices using the bmc150 and bmi323 chips.

Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Co-developed-by: Luke D. Jones <luke@ljones.dev>
Signed-off-by: Luke D. Jones <luke@ljones.dev>
Co-developed-by: Denis Benato <benato.denis96@gmail.com>
Signed-off-by: Denis Benato <benato.denis96@gmail.com>
Co-developed-by: Antheas Kapenekakis <lkml@antheas.dev>
Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
Signed-off-by: Jonathan LoBue <jlobue10@gmail.com>
Tested-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20240216182308.27125-1-jlobue10@gmail.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
  • Loading branch information
Jonathan LoBue authored and Jonathan Cameron committed Feb 19, 2024
1 parent 5a01e81 commit 3cc5ebd
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions drivers/iio/imu/bmi323/bmi323_i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,26 @@ 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" },
{ }
Expand All @@ -109,6 +129,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,
Expand Down

0 comments on commit 3cc5ebd

Please sign in to comment.