diff options
| -rw-r--r-- | net/rfkill/rfkill-gpio.c | 18 | 
1 files changed, 15 insertions, 3 deletions
| diff --git a/net/rfkill/rfkill-gpio.c b/net/rfkill/rfkill-gpio.c index 0f62326c0f5e..2a4717967502 100644 --- a/net/rfkill/rfkill-gpio.c +++ b/net/rfkill/rfkill-gpio.c @@ -63,6 +63,15 @@ static const struct rfkill_ops rfkill_gpio_ops = {  	.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)  { @@ -75,7 +84,8 @@ static int rfkill_gpio_acpi_probe(struct device *dev,  	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) @@ -102,7 +112,7 @@ 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) @@ -110,7 +120,7 @@ static int rfkill_gpio_probe(struct platform_device *pdev)  		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) @@ -150,6 +160,8 @@ static int rfkill_gpio_remove(struct platform_device *pdev)  	rfkill_unregister(rfkill->rfkill_dev);  	rfkill_destroy(rfkill->rfkill_dev); +	acpi_dev_remove_driver_gpios(ACPI_COMPANION(&pdev->dev)); +  	return 0;  } | 
