check_acpi_dev(acpi_handle handle, u32 lvl, void *context, void **rv)
 {
        const struct acpi_device_id *ids = context;
-       struct acpi_device *dev;
+       struct acpi_device *dev = acpi_fetch_acpi_dev(handle);
 
-       if (acpi_bus_get_device(handle, &dev) != 0)
-               return AE_OK;
-
-       if (acpi_match_device_ids(dev, ids) == 0)
+       if (dev && acpi_match_device_ids(dev, ids) == 0)
                if (!IS_ERR_OR_NULL(acpi_create_platform_device(dev, NULL)))
                        dev_info(&dev->dev,
                                 "intel-hid: created platform device\n");
 
        struct acpi_device *adev;
        acpi_handle handle;
        acpi_status status;
-       int ret;
 
        if (int3472->n_sensor_gpios >= INT3472_MAX_SENSOR_GPIOS) {
                dev_warn(int3472->dev, "Too many GPIOs mapped\n");
        if (ACPI_FAILURE(status))
                return -EINVAL;
 
-       ret = acpi_bus_get_device(handle, &adev);
-       if (ret)
+       adev = acpi_fetch_acpi_dev(handle);
+       if (!adev)
                return -ENODEV;
 
        table_entry = &int3472->gpios.table[int3472->n_sensor_gpios];
 
 check_acpi_dev(acpi_handle handle, u32 lvl, void *context, void **rv)
 {
        const struct acpi_device_id *ids = context;
-       struct acpi_device *dev;
+       struct acpi_device *dev = acpi_fetch_acpi_dev(handle);
 
-       if (acpi_bus_get_device(handle, &dev) != 0)
-               return AE_OK;
-
-       if (acpi_match_device_ids(dev, ids) == 0)
+       if (dev && acpi_match_device_ids(dev, ids) == 0)
                if (!IS_ERR_OR_NULL(acpi_create_platform_device(dev, NULL)))
                        dev_info(&dev->dev,
                                 "intel-vbtn: created platform device\n");
 
 static acpi_status __init tpacpi_acpi_handle_locate_callback(acpi_handle handle,
                        u32 level, void *context, void **return_value)
 {
-       struct acpi_device *dev;
        if (!strcmp(context, "video")) {
-               if (acpi_bus_get_device(handle, &dev))
-                       return AE_OK;
-               if (strcmp(ACPI_VIDEO_HID, acpi_device_hid(dev)))
+               struct acpi_device *dev = acpi_fetch_acpi_dev(handle);
+
+               if (!dev || strcmp(ACPI_VIDEO_HID, acpi_device_hid(dev)))
                        return AE_OK;
        }
 
 static int __init setup_acpi_notify(struct ibm_struct *ibm)
 {
        acpi_status status;
-       int rc;
 
        BUG_ON(!ibm->acpi);
 
        vdbg_printk(TPACPI_DBG_INIT,
                "setting up ACPI notify for %s\n", ibm->name);
 
-       rc = acpi_bus_get_device(*ibm->acpi->handle, &ibm->acpi->device);
-       if (rc < 0) {
-               pr_err("acpi_bus_get_device(%s) failed: %d\n", ibm->name, rc);
+       ibm->acpi->device = acpi_fetch_acpi_dev(*ibm->acpi->handle);
+       if (!ibm->acpi->device) {
+               pr_err("acpi_fetch_acpi_dev(%s) failed\n", ibm->name);
                return -ENODEV;
        }
 
        struct acpi_device *device, *child;
        int rc;
 
-       if (acpi_bus_get_device(handle, &device))
+       device = acpi_fetch_acpi_dev(handle);
+       if (!device)
                return 0;
 
        rc = 0;
 
                        return -ENODEV;
                }
 
-               acpi_bus_get_device(handle, &adev);
+               adev = acpi_fetch_acpi_dev(handle);
                if (!adev) {
                        pr_err("error could not get %s adev\n", data->chip);
                        return -ENODEV;