diff --git a/drivers/acpi/acpi_platform.c b/drivers/acpi/acpi_platform.c index a5a2346..4ed97a7 100644 --- a/drivers/acpi/acpi_platform.c +++ b/drivers/acpi/acpi_platform.c @@ -230,6 +230,44 @@ struct platform_device *acpi_create_platform_device(struct acpi_device *adev) return pdev; } +/* + * The following ACPI IDs are known to be suitable for representing as + * platform devices. + */ +static const struct acpi_device_id acpi_platform_device_ids[] = { + + { } +}; + +#define ACPI_PLATFORM_CLASS "acpi_platform" +static int __devinit acpi_platform_device_add(struct acpi_device *device) +{ + acpi_create_platform_device(device); +} +static int acpi_platform_device_remove(struct acpi_device *device, int type) +{ + /* TODO: remove that platfrom_device and resource */ +} + +static struct acpi_driver acpi_platform_driver = { + .name = "acpi_platform", + .class = ACPI_PLATFORM_CLASS, + .ids = acpi_platform_device_ids, + .ops = { + .add = acpi_platform_device_add, + .remove = acpi_platform_device_remove, + }, +}; + +static int __init acpi_platform_init(void) +{ + if (acpi_bus_register_driver(&acpi_platform_driver) < 0) + return -ENODEV; + + return 0; +} +subsys_initcall(acpi_platform_init); + static acpi_status acpi_platform_match(acpi_handle handle, u32 depth, void *data, void **return_value) { diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c index e7afba1..73bfa3d 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c @@ -29,15 +29,6 @@ extern struct acpi_device *acpi_root; static const char *dummy_hid = "device"; -/* - * The following ACPI IDs are known to be suitable for representing as - * platform devices. - */ -static const struct acpi_device_id acpi_platform_device_ids[] = { - - { } -}; - static LIST_HEAD(acpi_device_list); static LIST_HEAD(acpi_bus_id_list); DEFINE_MUTEX(acpi_device_lock); @@ -1553,13 +1544,8 @@ static acpi_status acpi_bus_check_add(acpi_handle handle, u32 lvl, */ device = NULL; acpi_bus_get_device(handle, &device); - if (ops->acpi_op_add && !device) { + if (ops->acpi_op_add && !device) acpi_add_single_object(&device, handle, type, sta, ops); - /* Is the device a known good platform device? */ - if (device - && !acpi_match_device_ids(device, acpi_platform_device_ids)) - acpi_create_platform_device(device); - } if (!device) return AE_CTRL_DEPTH;