* [RESEND PATCH v3 1/7] sh: ecovec24: add additional properties to the backlight device
2019-09-02 12:34 [RESEND PATCH v3 0/7] backlight: gpio: simplify the driver Bartosz Golaszewski
@ 2019-09-02 12:34 ` Bartosz Golaszewski
2019-09-02 12:34 ` [RESEND PATCH v3 2/7] backlight: gpio: simplify the platform data handling Bartosz Golaszewski
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Bartosz Golaszewski @ 2019-09-02 12:34 UTC (permalink / raw)
To: Yoshinori Sato, Rich Felker, Lee Jones, Daniel Thompson,
Jingoo Han, Bartlomiej Zolnierkiewicz, Linus Walleij,
Andy Shevchenko
Cc: linux-sh, linux-kernel, dri-devel, linux-fbdev, Bartosz Golaszewski
From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Add a GPIO lookup entry and a device property for GPIO backlight to the
board file. Tie them to the platform device which is now registered using
platform_device_register_full() because of the properties. These changes
are inactive now but will be used once the gpio backlight driver is
modified.
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
---
arch/sh/boards/mach-ecovec24/setup.c | 30 +++++++++++++++++++++++-----
1 file changed, 25 insertions(+), 5 deletions(-)
diff --git a/arch/sh/boards/mach-ecovec24/setup.c b/arch/sh/boards/mach-ecovec24/setup.c
index f402aa741bf3..6926bb3865b9 100644
--- a/arch/sh/boards/mach-ecovec24/setup.c
+++ b/arch/sh/boards/mach-ecovec24/setup.c
@@ -371,6 +371,19 @@ static struct platform_device lcdc_device = {
},
};
+static struct gpiod_lookup_table gpio_backlight_lookup = {
+ .dev_id = "gpio-backlight.0",
+ .table = {
+ GPIO_LOOKUP("sh7724_pfc", GPIO_PTR1, NULL, GPIO_ACTIVE_HIGH),
+ { }
+ },
+};
+
+static struct property_entry gpio_backlight_props[] = {
+ PROPERTY_ENTRY_BOOL("default-on"),
+ { }
+};
+
static struct gpio_backlight_platform_data gpio_backlight_data = {
.fbdev = &lcdc_device.dev,
.gpio = GPIO_PTR1,
@@ -378,13 +391,15 @@ static struct gpio_backlight_platform_data gpio_backlight_data = {
.name = "backlight",
};
-static struct platform_device gpio_backlight_device = {
+static const struct platform_device_info gpio_backlight_device_info = {
.name = "gpio-backlight",
- .dev = {
- .platform_data = &gpio_backlight_data,
- },
+ .data = &gpio_backlight_data,
+ .size_data = sizeof(gpio_backlight_data),
+ .properties = gpio_backlight_props,
};
+static struct platform_device *gpio_backlight_device;
+
/* CEU0 */
static struct ceu_platform_data ceu0_pdata = {
.num_subdevs = 2,
@@ -1006,7 +1021,6 @@ static struct platform_device *ecovec_devices[] __initdata = {
&usb1_common_device,
&usbhs_device,
&lcdc_device,
- &gpio_backlight_device,
&keysc_device,
&cn12_power,
#if defined(CONFIG_MMC_SDHI) || defined(CONFIG_MMC_SDHI_MODULE)
@@ -1464,6 +1478,12 @@ static int __init arch_setup(void)
#endif
#endif
+ gpiod_add_lookup_table(&gpio_backlight_lookup);
+ gpio_backlight_device = platform_device_register_full(
+ &gpio_backlight_device_info);
+ if (IS_ERR(gpio_backlight_device))
+ return PTR_ERR(gpio_backlight_device);
+
return platform_add_devices(ecovec_devices,
ARRAY_SIZE(ecovec_devices));
}
--
2.21.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [RESEND PATCH v3 2/7] backlight: gpio: simplify the platform data handling
2019-09-02 12:34 [RESEND PATCH v3 0/7] backlight: gpio: simplify the driver Bartosz Golaszewski
2019-09-02 12:34 ` [RESEND PATCH v3 1/7] sh: ecovec24: add additional properties to the backlight device Bartosz Golaszewski
@ 2019-09-02 12:34 ` Bartosz Golaszewski
2019-09-02 12:34 ` [RESEND PATCH v3 3/7] sh: ecovec24: don't set unused fields in platform data Bartosz Golaszewski
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Bartosz Golaszewski @ 2019-09-02 12:34 UTC (permalink / raw)
To: Yoshinori Sato, Rich Felker, Lee Jones, Daniel Thompson,
Jingoo Han, Bartlomiej Zolnierkiewicz, Linus Walleij,
Andy Shevchenko
Cc: linux-sh, linux-kernel, dri-devel, linux-fbdev, Bartosz Golaszewski
From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Now that the last user of platform data (sh ecovec24) defines a proper
GPIO lookup and sets the 'default-on' device property, we can drop the
platform_data-specific GPIO handling and unify a big chunk of code.
The only field used from the platform data is now the fbdev pointer.
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/video/backlight/gpio_backlight.c | 64 +++++-------------------
1 file changed, 13 insertions(+), 51 deletions(-)
diff --git a/drivers/video/backlight/gpio_backlight.c b/drivers/video/backlight/gpio_backlight.c
index e84f3087e29f..01262186fa1e 100644
--- a/drivers/video/backlight/gpio_backlight.c
+++ b/drivers/video/backlight/gpio_backlight.c
@@ -55,30 +55,6 @@ static const struct backlight_ops gpio_backlight_ops = {
.check_fb = gpio_backlight_check_fb,
};
-static int gpio_backlight_probe_dt(struct platform_device *pdev,
- struct gpio_backlight *gbl)
-{
- struct device *dev = &pdev->dev;
- enum gpiod_flags flags;
- int ret;
-
- 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);
- if (IS_ERR(gbl->gpiod)) {
- ret = PTR_ERR(gbl->gpiod);
-
- if (ret != -EPROBE_DEFER) {
- dev_err(dev,
- "Error: The gpios parameter is missing or invalid.\n");
- }
- return ret;
- }
-
- return 0;
-}
-
static int gpio_backlight_probe(struct platform_device *pdev)
{
struct gpio_backlight_platform_data *pdata =
@@ -86,6 +62,7 @@ static int gpio_backlight_probe(struct platform_device *pdev)
struct backlight_properties props;
struct backlight_device *bl;
struct gpio_backlight *gbl;
+ enum gpiod_flags flags;
int ret;
gbl = devm_kzalloc(&pdev->dev, sizeof(*gbl), GFP_KERNEL);
@@ -94,35 +71,20 @@ static int gpio_backlight_probe(struct platform_device *pdev)
gbl->dev = &pdev->dev;
- if (pdev->dev.fwnode) {
- ret = gpio_backlight_probe_dt(pdev, gbl);
- if (ret)
- return ret;
- } else if (pdata) {
- /*
- * Legacy platform data GPIO retrieveal. Do not expand
- * the use of this code path, currently only used by one
- * SH board.
- */
- unsigned long flags = GPIOF_DIR_OUT;
-
+ if (pdata)
gbl->fbdev = pdata->fbdev;
- gbl->def_value = pdata->def_value;
- flags |= gbl->def_value ? GPIOF_INIT_HIGH : GPIOF_INIT_LOW;
-
- ret = devm_gpio_request_one(gbl->dev, pdata->gpio, flags,
- pdata ? pdata->name : "backlight");
- if (ret < 0) {
- dev_err(&pdev->dev, "unable to request GPIO\n");
- return ret;
+
+ gbl->def_value = device_property_read_bool(&pdev->dev, "default-on");
+ flags = gbl->def_value ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW;
+
+ gbl->gpiod = devm_gpiod_get(&pdev->dev, NULL, flags);
+ if (IS_ERR(gbl->gpiod)) {
+ ret = PTR_ERR(gbl->gpiod);
+ if (ret != -EPROBE_DEFER) {
+ dev_err(&pdev->dev,
+ "Error: The gpios parameter is missing or invalid.\n");
}
- 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;
+ return ret;
}
memset(&props, 0, sizeof(props));
--
2.21.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [RESEND PATCH v3 3/7] sh: ecovec24: don't set unused fields in platform data
2019-09-02 12:34 [RESEND PATCH v3 0/7] backlight: gpio: simplify the driver Bartosz Golaszewski
2019-09-02 12:34 ` [RESEND PATCH v3 1/7] sh: ecovec24: add additional properties to the backlight device Bartosz Golaszewski
2019-09-02 12:34 ` [RESEND PATCH v3 2/7] backlight: gpio: simplify the platform data handling Bartosz Golaszewski
@ 2019-09-02 12:34 ` Bartosz Golaszewski
2019-09-02 12:34 ` [RESEND PATCH v3 4/7] backlight: gpio: remove unused fields from " Bartosz Golaszewski
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Bartosz Golaszewski @ 2019-09-02 12:34 UTC (permalink / raw)
To: Yoshinori Sato, Rich Felker, Lee Jones, Daniel Thompson,
Jingoo Han, Bartlomiej Zolnierkiewicz, Linus Walleij,
Andy Shevchenko
Cc: linux-sh, linux-kernel, dri-devel, linux-fbdev, Bartosz Golaszewski
From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Platform data fields other than fbdev are no longer used by the
backlight driver. Remove them.
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
---
arch/sh/boards/mach-ecovec24/setup.c | 3 ---
1 file changed, 3 deletions(-)
diff --git a/arch/sh/boards/mach-ecovec24/setup.c b/arch/sh/boards/mach-ecovec24/setup.c
index 6926bb3865b9..64a5a1662b6d 100644
--- a/arch/sh/boards/mach-ecovec24/setup.c
+++ b/arch/sh/boards/mach-ecovec24/setup.c
@@ -386,9 +386,6 @@ static struct property_entry gpio_backlight_props[] = {
static struct gpio_backlight_platform_data gpio_backlight_data = {
.fbdev = &lcdc_device.dev,
- .gpio = GPIO_PTR1,
- .def_value = 1,
- .name = "backlight",
};
static const struct platform_device_info gpio_backlight_device_info = {
--
2.21.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [RESEND PATCH v3 4/7] backlight: gpio: remove unused fields from platform data
2019-09-02 12:34 [RESEND PATCH v3 0/7] backlight: gpio: simplify the driver Bartosz Golaszewski
` (2 preceding siblings ...)
2019-09-02 12:34 ` [RESEND PATCH v3 3/7] sh: ecovec24: don't set unused fields in platform data Bartosz Golaszewski
@ 2019-09-02 12:34 ` Bartosz Golaszewski
2019-09-02 12:34 ` [RESEND PATCH v3 5/7] backlight: gpio: remove dev from struct gpio_backlight Bartosz Golaszewski
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Bartosz Golaszewski @ 2019-09-02 12:34 UTC (permalink / raw)
To: Yoshinori Sato, Rich Felker, Lee Jones, Daniel Thompson,
Jingoo Han, Bartlomiej Zolnierkiewicz, Linus Walleij,
Andy Shevchenko
Cc: linux-sh, linux-kernel, dri-devel, linux-fbdev, Bartosz Golaszewski
From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Remove the platform data fields that nobody uses.
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
include/linux/platform_data/gpio_backlight.h | 3 ---
1 file changed, 3 deletions(-)
diff --git a/include/linux/platform_data/gpio_backlight.h b/include/linux/platform_data/gpio_backlight.h
index 34179d600360..1a8b5b1946fe 100644
--- a/include/linux/platform_data/gpio_backlight.h
+++ b/include/linux/platform_data/gpio_backlight.h
@@ -9,9 +9,6 @@ struct device;
struct gpio_backlight_platform_data {
struct device *fbdev;
- int gpio;
- int def_value;
- const char *name;
};
#endif
--
2.21.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [RESEND PATCH v3 5/7] backlight: gpio: remove dev from struct gpio_backlight
2019-09-02 12:34 [RESEND PATCH v3 0/7] backlight: gpio: simplify the driver Bartosz Golaszewski
` (3 preceding siblings ...)
2019-09-02 12:34 ` [RESEND PATCH v3 4/7] backlight: gpio: remove unused fields from " Bartosz Golaszewski
@ 2019-09-02 12:34 ` Bartosz Golaszewski
2019-09-02 12:34 ` [RESEND PATCH v3 6/7] backlight: gpio: remove def_value " Bartosz Golaszewski
2019-09-02 12:34 ` [RESEND PATCH v3 7/7] backlight: gpio: use a helper variable for &pdev->dev Bartosz Golaszewski
6 siblings, 0 replies; 8+ messages in thread
From: Bartosz Golaszewski @ 2019-09-02 12:34 UTC (permalink / raw)
To: Yoshinori Sato, Rich Felker, Lee Jones, Daniel Thompson,
Jingoo Han, Bartlomiej Zolnierkiewicz, Linus Walleij,
Andy Shevchenko
Cc: linux-sh, linux-kernel, dri-devel, linux-fbdev, Bartosz Golaszewski
From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
This field is unused. Remove it.
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/gpio_backlight.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/drivers/video/backlight/gpio_backlight.c b/drivers/video/backlight/gpio_backlight.c
index 01262186fa1e..70882556f047 100644
--- a/drivers/video/backlight/gpio_backlight.c
+++ b/drivers/video/backlight/gpio_backlight.c
@@ -19,9 +19,7 @@
#include <linux/slab.h>
struct gpio_backlight {
- struct device *dev;
struct device *fbdev;
-
struct gpio_desc *gpiod;
int def_value;
};
@@ -69,8 +67,6 @@ static int gpio_backlight_probe(struct platform_device *pdev)
if (gbl == NULL)
return -ENOMEM;
- gbl->dev = &pdev->dev;
-
if (pdata)
gbl->fbdev = pdata->fbdev;
--
2.21.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [RESEND PATCH v3 6/7] backlight: gpio: remove def_value from struct gpio_backlight
2019-09-02 12:34 [RESEND PATCH v3 0/7] backlight: gpio: simplify the driver Bartosz Golaszewski
` (4 preceding siblings ...)
2019-09-02 12:34 ` [RESEND PATCH v3 5/7] backlight: gpio: remove dev from struct gpio_backlight Bartosz Golaszewski
@ 2019-09-02 12:34 ` Bartosz Golaszewski
2019-09-02 12:34 ` [RESEND PATCH v3 7/7] backlight: gpio: use a helper variable for &pdev->dev Bartosz Golaszewski
6 siblings, 0 replies; 8+ messages in thread
From: Bartosz Golaszewski @ 2019-09-02 12:34 UTC (permalink / raw)
To: Yoshinori Sato, Rich Felker, Lee Jones, Daniel Thompson,
Jingoo Han, Bartlomiej Zolnierkiewicz, Linus Walleij,
Andy Shevchenko
Cc: linux-sh, linux-kernel, dri-devel, linux-fbdev, Bartosz Golaszewski
From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
This field is unused outside of probe(). There's no need to store it.
We can make it into a local variable.
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/gpio_backlight.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/video/backlight/gpio_backlight.c b/drivers/video/backlight/gpio_backlight.c
index 70882556f047..cd6a75bca9cc 100644
--- a/drivers/video/backlight/gpio_backlight.c
+++ b/drivers/video/backlight/gpio_backlight.c
@@ -21,7 +21,6 @@
struct gpio_backlight {
struct device *fbdev;
struct gpio_desc *gpiod;
- int def_value;
};
static int gpio_backlight_update_status(struct backlight_device *bl)
@@ -61,7 +60,7 @@ static int gpio_backlight_probe(struct platform_device *pdev)
struct backlight_device *bl;
struct gpio_backlight *gbl;
enum gpiod_flags flags;
- int ret;
+ int ret, def_value;
gbl = devm_kzalloc(&pdev->dev, sizeof(*gbl), GFP_KERNEL);
if (gbl == NULL)
@@ -70,8 +69,8 @@ static int gpio_backlight_probe(struct platform_device *pdev)
if (pdata)
gbl->fbdev = pdata->fbdev;
- gbl->def_value = device_property_read_bool(&pdev->dev, "default-on");
- flags = gbl->def_value ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW;
+ def_value = device_property_read_bool(&pdev->dev, "default-on");
+ flags = def_value ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW;
gbl->gpiod = devm_gpiod_get(&pdev->dev, NULL, flags);
if (IS_ERR(gbl->gpiod)) {
@@ -94,7 +93,7 @@ static int gpio_backlight_probe(struct platform_device *pdev)
return PTR_ERR(bl);
}
- bl->props.brightness = gbl->def_value;
+ bl->props.brightness = def_value;
backlight_update_status(bl);
platform_set_drvdata(pdev, bl);
--
2.21.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [RESEND PATCH v3 7/7] backlight: gpio: use a helper variable for &pdev->dev
2019-09-02 12:34 [RESEND PATCH v3 0/7] backlight: gpio: simplify the driver Bartosz Golaszewski
` (5 preceding siblings ...)
2019-09-02 12:34 ` [RESEND PATCH v3 6/7] backlight: gpio: remove def_value " Bartosz Golaszewski
@ 2019-09-02 12:34 ` Bartosz Golaszewski
6 siblings, 0 replies; 8+ messages in thread
From: Bartosz Golaszewski @ 2019-09-02 12:34 UTC (permalink / raw)
To: Yoshinori Sato, Rich Felker, Lee Jones, Daniel Thompson,
Jingoo Han, Bartlomiej Zolnierkiewicz, Linus Walleij,
Andy Shevchenko
Cc: linux-sh, linux-kernel, dri-devel, linux-fbdev, Bartosz Golaszewski
From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Instead of dereferencing pdev each time, use a helper variable for
the associated device pointer.
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/video/backlight/gpio_backlight.c | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/drivers/video/backlight/gpio_backlight.c b/drivers/video/backlight/gpio_backlight.c
index cd6a75bca9cc..7dc4f90d926b 100644
--- a/drivers/video/backlight/gpio_backlight.c
+++ b/drivers/video/backlight/gpio_backlight.c
@@ -54,29 +54,29 @@ static const struct backlight_ops gpio_backlight_ops = {
static int gpio_backlight_probe(struct platform_device *pdev)
{
- struct gpio_backlight_platform_data *pdata =
- dev_get_platdata(&pdev->dev);
+ struct device *dev = &pdev->dev;
+ struct gpio_backlight_platform_data *pdata = dev_get_platdata(dev);
struct backlight_properties props;
struct backlight_device *bl;
struct gpio_backlight *gbl;
enum gpiod_flags flags;
int ret, def_value;
- gbl = devm_kzalloc(&pdev->dev, sizeof(*gbl), GFP_KERNEL);
+ gbl = devm_kzalloc(dev, sizeof(*gbl), GFP_KERNEL);
if (gbl == NULL)
return -ENOMEM;
if (pdata)
gbl->fbdev = pdata->fbdev;
- def_value = device_property_read_bool(&pdev->dev, "default-on");
+ def_value = device_property_read_bool(dev, "default-on");
flags = def_value ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW;
- gbl->gpiod = devm_gpiod_get(&pdev->dev, NULL, flags);
+ gbl->gpiod = devm_gpiod_get(dev, NULL, flags);
if (IS_ERR(gbl->gpiod)) {
ret = PTR_ERR(gbl->gpiod);
if (ret != -EPROBE_DEFER) {
- dev_err(&pdev->dev,
+ dev_err(dev,
"Error: The gpios parameter is missing or invalid.\n");
}
return ret;
@@ -85,11 +85,10 @@ static int gpio_backlight_probe(struct platform_device *pdev)
memset(&props, 0, sizeof(props));
props.type = BACKLIGHT_RAW;
props.max_brightness = 1;
- bl = devm_backlight_device_register(&pdev->dev, dev_name(&pdev->dev),
- &pdev->dev, gbl, &gpio_backlight_ops,
- &props);
+ bl = devm_backlight_device_register(dev, dev_name(dev), dev, gbl,
+ &gpio_backlight_ops, &props);
if (IS_ERR(bl)) {
- dev_err(&pdev->dev, "failed to register backlight\n");
+ dev_err(dev, "failed to register backlight\n");
return PTR_ERR(bl);
}
--
2.21.0
^ permalink raw reply related [flat|nested] 8+ messages in thread