@@ -30,7 +30,7 @@ struct acpi_smbus_cmi {
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,21 +361,26 @@ static acpi_status acpi_smbus_cmi_query_methods(acpi_handle handle, u32 level,
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 );
367
368
if (!smbus_cmi )
368
369
return - ENOMEM ;
369
370
370
371
smbus_cmi -> handle = device -> handle ;
371
- smbus_cmi -> methods = device_get_match_data (& device -> dev );
372
372
strcpy (acpi_device_name (device ), ACPI_SMBUS_HC_DEVICE_NAME );
373
373
strcpy (acpi_device_class (device ), ACPI_SMBUS_HC_CLASS );
374
374
device -> driver_data = smbus_cmi ;
375
375
smbus_cmi -> cap_info = 0 ;
376
376
smbus_cmi -> cap_read = 0 ;
377
377
smbus_cmi -> cap_write = 0 ;
378
378
379
+ for (id = acpi_smbus_cmi_ids ; id -> id [0 ]; id ++ )
380
+ if (!strcmp (id -> id , acpi_device_hid (device )))
381
+ smbus_cmi -> methods =
382
+ (struct smbus_methods_t * ) id -> driver_data ;
383
+
379
384
acpi_walk_namespace (ACPI_TYPE_METHOD , smbus_cmi -> handle , 1 ,
380
385
acpi_smbus_cmi_query_methods , NULL , smbus_cmi , NULL );
381
386
0 commit comments