]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mfd: intel_soc_pmic_crc: Add support for non ACPI instantiated i2c_client
authorHans de Goede <hdegoede@redhat.com>
Mon, 4 Nov 2024 15:06:55 +0000 (16:06 +0100)
committerLee Jones <lee@kernel.org>
Tue, 12 Nov 2024 12:15:42 +0000 (12:15 +0000)
On some x86 Bay Trail tablets which shipped with Android as factory OS,
the DSDT is so broken that the PMIC needs to be manually instantiated by
the special x86-android-tablets.ko "fixup" driver for cases like this.

Add an i2c_device_id table so that the driver can match on manually
instantiated i2c_client-s (which lack an ACPI fwnode to match on).

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20241104150655.41402-3-hdegoede@redhat.com
Signed-off-by: Lee Jones <lee@kernel.org>
drivers/mfd/intel_soc_pmic_crc.c

index 663a9e93ce87b66657f140e653738ad2ce7d8308..879fbf5cd1622bb51ae7400c2b9a481e99eebdba 100644 (file)
@@ -259,12 +259,19 @@ static const struct acpi_device_id crystal_cove_acpi_match[] = {
 };
 MODULE_DEVICE_TABLE(acpi, crystal_cove_acpi_match);
 
+static const struct i2c_device_id crystal_cove_i2c_match[] = {
+       { "intel_soc_pmic_crc" },
+       { }
+};
+MODULE_DEVICE_TABLE(i2c, crystal_cove_i2c_match);
+
 static struct i2c_driver crystal_cove_i2c_driver = {
        .driver = {
                .name = "intel_soc_pmic_crc",
                .pm = pm_sleep_ptr(&crystal_cove_pm_ops),
                .acpi_match_table = crystal_cove_acpi_match,
        },
+       .id_table = crystal_cove_i2c_match,
        .probe = crystal_cove_i2c_probe,
        .remove = crystal_cove_i2c_remove,
        .shutdown = crystal_cove_shutdown,