Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Revert "i2c: scmi: Replace open coded device_get_match_data()"

This reverts commit 9ae551ded5ba55f96a83cd0811f7ef8c2f329d0c. We got a
regression report, so ensure this machine boots again. We will come back
with a better version hopefully.

Reported-by: Josef Johansson <josef@oderland.se>
Link: https://lore.kernel.org/r/4d2d5b04-0b6c-1cb1-a63f-dc06dfe1b5da@oderland.se
Signed-off-by: Wolfram Sang <wsa@kernel.org>

+7 -2
+7 -2
drivers/i2c/busses/i2c-scmi.c
··· 30 30 u8 cap_info:1; 31 31 u8 cap_read:1; 32 32 u8 cap_write:1; 33 - const struct smbus_methods_t *methods; 33 + struct smbus_methods_t *methods; 34 34 }; 35 35 36 36 static const struct smbus_methods_t smbus_methods = { ··· 361 361 static int acpi_smbus_cmi_add(struct acpi_device *device) 362 362 { 363 363 struct acpi_smbus_cmi *smbus_cmi; 364 + const struct acpi_device_id *id; 364 365 int ret; 365 366 366 367 smbus_cmi = kzalloc(sizeof(struct acpi_smbus_cmi), GFP_KERNEL); ··· 369 368 return -ENOMEM; 370 369 371 370 smbus_cmi->handle = device->handle; 372 - smbus_cmi->methods = device_get_match_data(&device->dev); 373 371 strcpy(acpi_device_name(device), ACPI_SMBUS_HC_DEVICE_NAME); 374 372 strcpy(acpi_device_class(device), ACPI_SMBUS_HC_CLASS); 375 373 device->driver_data = smbus_cmi; 376 374 smbus_cmi->cap_info = 0; 377 375 smbus_cmi->cap_read = 0; 378 376 smbus_cmi->cap_write = 0; 377 + 378 + for (id = acpi_smbus_cmi_ids; id->id[0]; id++) 379 + if (!strcmp(id->id, acpi_device_hid(device))) 380 + smbus_cmi->methods = 381 + (struct smbus_methods_t *) id->driver_data; 379 382 380 383 acpi_walk_namespace(ACPI_TYPE_METHOD, smbus_cmi->handle, 1, 381 384 acpi_smbus_cmi_query_methods, NULL, smbus_cmi, NULL);