Skip to content

Commit

Permalink
backlight: gpio_backlight: Enable ACPI enumeration
Browse files Browse the repository at this point in the history
ACPI allows to enumerate specific devices by using compatible strings.
Enable that enumeration for GPIO based backlight devices.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Daniel Thompson <daniel.thompson@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
  • Loading branch information
Andy Shevchenko authored and Lee Jones committed Jun 27, 2019
1 parent 5076fbe commit 98b7404
Showing 1 changed file with 9 additions and 14 deletions.
23 changes: 9 additions & 14 deletions drivers/video/backlight/gpio_backlight.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#include <linux/of_gpio.h>
#include <linux/platform_data/gpio_backlight.h>
#include <linux/platform_device.h>
#include <linux/property.h>
#include <linux/slab.h>

struct gpio_backlight {
Expand Down Expand Up @@ -61,11 +62,10 @@ static int gpio_backlight_probe_dt(struct platform_device *pdev,
struct gpio_backlight *gbl)
{
struct device *dev = &pdev->dev;
struct device_node *np = dev->of_node;
enum gpiod_flags flags;
int ret;

gbl->def_value = of_property_read_bool(np, "default-on");
gbl->def_value = device_property_read_bool(dev, "default-on");
flags = gbl->def_value ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW;

gbl->gpiod = devm_gpiod_get(dev, NULL, flags);
Expand All @@ -89,26 +89,19 @@ static int gpio_backlight_probe(struct platform_device *pdev)
struct backlight_properties props;
struct backlight_device *bl;
struct gpio_backlight *gbl;
struct device_node *np = pdev->dev.of_node;
int ret;

if (!pdata && !np) {
dev_err(&pdev->dev,
"failed to find platform data or device tree node.\n");
return -ENODEV;
}

gbl = devm_kzalloc(&pdev->dev, sizeof(*gbl), GFP_KERNEL);
if (gbl == NULL)
return -ENOMEM;

gbl->dev = &pdev->dev;

if (np) {
if (pdev->dev.fwnode) {
ret = gpio_backlight_probe_dt(pdev, gbl);
if (ret)
return ret;
} else {
} else if (pdata) {
/*
* Legacy platform data GPIO retrieveal. Do not expand
* the use of this code path, currently only used by one
Expand All @@ -129,6 +122,10 @@ static int gpio_backlight_probe(struct platform_device *pdev)
gbl->gpiod = gpio_to_desc(pdata->gpio);
if (!gbl->gpiod)
return -EINVAL;
} else {
dev_err(&pdev->dev,
"failed to find platform data or device tree node.\n");
return -ENODEV;
}

memset(&props, 0, sizeof(props));
Expand All @@ -149,19 +146,17 @@ static int gpio_backlight_probe(struct platform_device *pdev)
return 0;
}

#ifdef CONFIG_OF
static struct of_device_id gpio_backlight_of_match[] = {
{ .compatible = "gpio-backlight" },
{ /* sentinel */ }
};

MODULE_DEVICE_TABLE(of, gpio_backlight_of_match);
#endif

static struct platform_driver gpio_backlight_driver = {
.driver = {
.name = "gpio-backlight",
.of_match_table = of_match_ptr(gpio_backlight_of_match),
.of_match_table = gpio_backlight_of_match,
},
.probe = gpio_backlight_probe,
};
Expand Down

0 comments on commit 98b7404

Please sign in to comment.