]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - net/rfkill/rfkill-gpio.c
net: rfkill: gpio: get the name and type from device property
[mirror_ubuntu-artful-kernel.git] / net / rfkill / rfkill-gpio.c
index 4b1e3f35f06cf39ecb9bb3f6a88d802a67a37bc3..1a9c0316aad1ad47ff2313dc54128b98712d7007 100644 (file)
@@ -81,7 +81,6 @@ static int rfkill_gpio_acpi_probe(struct device *dev,
        if (!id)
                return -ENODEV;
 
-       rfkill->name = dev_name(dev);
        rfkill->type = (unsigned)id->driver_data;
 
        return acpi_dev_add_driver_gpios(ACPI_COMPANION(dev),
@@ -93,12 +92,21 @@ static int rfkill_gpio_probe(struct platform_device *pdev)
        struct rfkill_gpio_platform_data *pdata = pdev->dev.platform_data;
        struct rfkill_gpio_data *rfkill;
        struct gpio_desc *gpio;
+       const char *type_name;
        int ret;
 
        rfkill = devm_kzalloc(&pdev->dev, sizeof(*rfkill), GFP_KERNEL);
        if (!rfkill)
                return -ENOMEM;
 
+       device_property_read_string(&pdev->dev, "name", &rfkill->name);
+       device_property_read_string(&pdev->dev, "type", &type_name);
+
+       if (!rfkill->name)
+               rfkill->name = dev_name(&pdev->dev);
+
+       rfkill->type = rfkill_find_type(type_name);
+
        if (ACPI_HANDLE(&pdev->dev)) {
                ret = rfkill_gpio_acpi_probe(&pdev->dev, rfkill);
                if (ret)
@@ -124,10 +132,8 @@ static int rfkill_gpio_probe(struct platform_device *pdev)
 
        rfkill->shutdown_gpio = gpio;
 
-       /* Make sure at-least one of the GPIO is defined and that
-        * a name is specified for this instance
-        */
-       if ((!rfkill->reset_gpio && !rfkill->shutdown_gpio) || !rfkill->name) {
+       /* Make sure at-least one GPIO is defined for this instance */
+       if (!rfkill->reset_gpio && !rfkill->shutdown_gpio) {
                dev_err(&pdev->dev, "invalid platform data\n");
                return -EINVAL;
        }