.set_block = rfkill_gpio_set_power,
 };
 
+static const struct acpi_gpio_params reset_gpios = { 0, 0, false };
+static const struct acpi_gpio_params shutdown_gpios = { 1, 0, false };
+
+static const struct acpi_gpio_mapping acpi_rfkill_default_gpios[] = {
+       { "reset-gpios", &reset_gpios, 1 },
+       { "shutdown-gpios", &shutdown_gpios, 1 },
+       { },
+};
+
 static int rfkill_gpio_acpi_probe(struct device *dev,
                                  struct rfkill_gpio_data *rfkill)
 {
        rfkill->name = dev_name(dev);
        rfkill->type = (unsigned)id->driver_data;
 
-       return 0;
+       return acpi_dev_add_driver_gpios(ACPI_COMPANION(dev),
+                                        acpi_rfkill_default_gpios);
 }
 
 static int rfkill_gpio_probe(struct platform_device *pdev)
 
        rfkill->clk = devm_clk_get(&pdev->dev, NULL);
 
-       gpio = devm_gpiod_get_index(&pdev->dev, "reset", 0);
+       gpio = devm_gpiod_get(&pdev->dev, "reset");
        if (!IS_ERR(gpio)) {
                ret = gpiod_direction_output(gpio, 0);
                if (ret)
                rfkill->reset_gpio = gpio;
        }
 
-       gpio = devm_gpiod_get_index(&pdev->dev, "shutdown", 1);
+       gpio = devm_gpiod_get(&pdev->dev, "shutdown");
        if (!IS_ERR(gpio)) {
                ret = gpiod_direction_output(gpio, 0);
                if (ret)
        rfkill_unregister(rfkill->rfkill_dev);
        rfkill_destroy(rfkill->rfkill_dev);
 
+       acpi_dev_remove_driver_gpios(ACPI_COMPANION(&pdev->dev));
+
        return 0;
 }