net: rfkill: gpio: get the name and type from device property
authorHeikki Krogerus <heikki.krogerus@linux.intel.com>
Mon, 25 Jan 2016 09:03:47 +0000 (12:03 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 24 Feb 2016 08:13:08 +0000 (09:13 +0100)
This prepares the driver for removal of platform data.

Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
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;
        }