return AE_OK;
 }
 
-static acpi_status acpi_platform_get_device_uid(struct acpi_device *adev,
-                                               int *uid)
-{
-       struct acpi_device_info *info;
-       acpi_status status;
-
-       status = acpi_get_object_info(adev->handle, &info);
-       if (ACPI_FAILURE(status))
-               return status;
-
-       status = AE_NOT_EXIST;
-       if ((info->valid & ACPI_VALID_UID) &&
-            !kstrtoint(info->unique_id.string, 0, uid))
-               status = AE_OK;
-
-       kfree(info);
-       return status;
-}
-
 /**
  * acpi_create_platform_device - Create platform device for ACPI device node
  * @adev: ACPI device node to create a platform device for.
        struct device *parent = NULL;
        struct resource_info ri;
        acpi_status status;
-       int devid;
 
        /* If the ACPI node already has a physical device attached, skip it. */
        if (adev->physical_node_count)
                return NULL;
 
-       /* Use the UID of the device as the new platform device id if found. */
-       status = acpi_platform_get_device_uid(adev, &devid);
-       if (ACPI_FAILURE(status))
-               devid = -1;
-
        memset(&ri, 0, sizeof(ri));
-
        /* First, count the resources. */
        status = acpi_walk_resources(adev->handle, METHOD_NAME__CRS,
                                     acpi_platform_count_resources, &ri);
                }
                mutex_unlock(&acpi_parent->physical_node_lock);
        }
-       pdev = platform_device_register_resndata(parent, acpi_device_hid(adev),
-                                                devid, ri.res, ri.n, NULL, 0);
+       pdev = platform_device_register_resndata(parent, dev_name(&adev->dev),
+                                                -1, ri.res, ri.n, NULL, 0);
        if (IS_ERR(pdev)) {
                dev_err(&adev->dev, "platform device creation failed: %ld\n",
                        PTR_ERR(pdev));
        if (adev->physical_node_count)
                return AE_OK;
 
-       if (!strcmp(pdev->name, acpi_device_hid(adev))) {
-               int devid;
-
-               /* Check that both name and UID match if it exists */
-               status = acpi_platform_get_device_uid(adev, &devid);
-               if (ACPI_FAILURE(status))
-                       devid = -1;
-
-               if (pdev->id != devid)
-                       return AE_OK;
-
+       if (!strcmp(dev_name(&pdev->dev), dev_name(&adev->dev))) {
                *(acpi_handle *)return_value = handle;
                return AE_CTRL_TERMINATE;
        }
 static int acpi_platform_find_device(struct device *dev, acpi_handle *handle)
 {
        struct platform_device *pdev = to_platform_device(dev);
+       char *name, *tmp, *hid;
+
+       /*
+        * The platform device is named using the ACPI device name
+        * _HID:INSTANCE so we strip the INSTANCE out in order to find the
+        * correct device using its _HID.
+        */
+       name = kstrdup(dev_name(dev), GFP_KERNEL);
+       if (!name)
+               return -ENOMEM;
+
+       tmp = name;
+       hid = strsep(&tmp, ":");
+       if (!hid) {
+               kfree(name);
+               return -ENODEV;
+       }
 
        *handle = NULL;
-       acpi_get_devices(pdev->name, acpi_platform_match, pdev, handle);
+       acpi_get_devices(hid, acpi_platform_match, pdev, handle);
 
+       kfree(name);
        return *handle ? 0 : -ENODEV;
 }