drivers/mfd/intel_soc_pmic_crc.c | 7 +++++++ 1 file changed, 7 insertions(+)
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>
---
drivers/mfd/intel_soc_pmic_crc.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/mfd/intel_soc_pmic_crc.c b/drivers/mfd/intel_soc_pmic_crc.c
index 876d017f74fe..ba22458ccb84 100644
--- a/drivers/mfd/intel_soc_pmic_crc.c
+++ b/drivers/mfd/intel_soc_pmic_crc.c
@@ -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-crystal-cove" },
+ { }
+};
+MODULE_DEVICE_TABLE(i2c, crystal_cove_i2c_match);
+
static struct i2c_driver crystal_cove_i2c_driver = {
.driver = {
.name = "crystal_cove_i2c",
.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,
--
2.47.0
On Fri, Oct 25, 2024 at 10:37:12AM +0200, Hans de Goede wrote: > 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). ... > +static const struct i2c_device_id crystal_cove_i2c_match[] = { > + { "intel-crystal-cove" }, Why this can't be "crystal_cove_i2c"? > + { } > +}; ... > .driver = { > .name = "crystal_cove_i2c", > .pm = pm_sleep_ptr(&crystal_cove_pm_ops), > .acpi_match_table = crystal_cove_acpi_match, > }, -- With Best Regards, Andy Shevchenko
Hi Andy, On 25-Oct-24 3:27 PM, Andy Shevchenko wrote: > On Fri, Oct 25, 2024 at 10:37:12AM +0200, Hans de Goede wrote: >> 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). > > ... > >> +static const struct i2c_device_id crystal_cove_i2c_match[] = { >> + { "intel-crystal-cove" }, > > Why this can't be "crystal_cove_i2c"? It can be any string as long as it is unique. Typically this will be vendor-model-name though and having i2c in there is a bit weird since this is used for the modalias, which gets prefixed with "i2c:" already. Therefor I would prefer to keep this as is. But if you have a strong preference I can change this for v2. Please let me know how you want to proceed with this patch. Regards, Hans > >> + { } >> +}; > > ... > >> .driver = { >> .name = "crystal_cove_i2c", >> .pm = pm_sleep_ptr(&crystal_cove_pm_ops), >> .acpi_match_table = crystal_cove_acpi_match, >> }, >
On Sat, Oct 26, 2024 at 01:42:36PM +0200, Hans de Goede wrote: > On 25-Oct-24 3:27 PM, Andy Shevchenko wrote: > > On Fri, Oct 25, 2024 at 10:37:12AM +0200, Hans de Goede wrote: ... > >> +static const struct i2c_device_id crystal_cove_i2c_match[] = { > >> + { "intel-crystal-cove" }, > > > > Why this can't be "crystal_cove_i2c"? > > It can be any string as long as it is unique. Typically this will > be vendor-model-name though and having i2c in there is a bit weird > since this is used for the modalias, which gets prefixed with > "i2c:" already. > > Therefor I would prefer to keep this as is. But if you have > a strong preference I can change this for v2. > > Please let me know how you want to proceed with this patch. I think that I would like to have the same name there and in the .driver below. If you think we need align these across PMIC MFD drivers, I'm fine with that as well. > >> + { } > >> +}; ... > >> .driver = { > >> .name = "crystal_cove_i2c", At least two options based on the existing code: "Crystal Cove PMIC" or "intel_soc_pmic_crc". I'm also not against other one as long as it's done for all PMIC MFD drivers. > >> .pm = pm_sleep_ptr(&crystal_cove_pm_ops), > >> .acpi_match_table = crystal_cove_acpi_match, > >> }, -- With Best Regards, Andy Shevchenko
© 2016 - 2024 Red Hat, Inc.