@@ -30,7 +30,7 @@ struct acpi_smbus_cmi {
3030 u8 cap_info :1 ;
3131 u8 cap_read :1 ;
3232 u8 cap_write :1 ;
33- const struct smbus_methods_t * methods ;
33+ struct smbus_methods_t * methods ;
3434};
3535
3636static const struct smbus_methods_t smbus_methods = {
@@ -361,21 +361,26 @@ static acpi_status acpi_smbus_cmi_query_methods(acpi_handle handle, u32 level,
361361static int acpi_smbus_cmi_add (struct acpi_device * device )
362362{
363363 struct acpi_smbus_cmi * smbus_cmi ;
364+ const struct acpi_device_id * id ;
364365 int ret ;
365366
366367 smbus_cmi = kzalloc (sizeof (struct acpi_smbus_cmi ), GFP_KERNEL );
367368 if (!smbus_cmi )
368369 return - ENOMEM ;
369370
370371 smbus_cmi -> handle = device -> handle ;
371- smbus_cmi -> methods = device_get_match_data (& device -> dev );
372372 strcpy (acpi_device_name (device ), ACPI_SMBUS_HC_DEVICE_NAME );
373373 strcpy (acpi_device_class (device ), ACPI_SMBUS_HC_CLASS );
374374 device -> driver_data = smbus_cmi ;
375375 smbus_cmi -> cap_info = 0 ;
376376 smbus_cmi -> cap_read = 0 ;
377377 smbus_cmi -> cap_write = 0 ;
378378
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+
379384 acpi_walk_namespace (ACPI_TYPE_METHOD , smbus_cmi -> handle , 1 ,
380385 acpi_smbus_cmi_query_methods , NULL , smbus_cmi , NULL );
381386
0 commit comments