* [PATCH v2 01/28] backlight: lcd: Rearrange code in fb_notifier_callback()
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 02/28] backlight: lcd: Test against struct fb_info.lcd_dev Thomas Zimmermann
` (28 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
First acquire the ops_lock and do all tests while holding it. Rearranges
the code in lcd's fb_notifier_callback() to resemble the callback in
the backlight module. This will simplify later changes to these tests.
v2:
- avoid gotos by using guard(mutex) (Daniel)
- fix typos in commit description (Daniel)
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/lcd.c | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/drivers/video/backlight/lcd.c b/drivers/video/backlight/lcd.c
index ceec90ca758b..2f57d6867d42 100644
--- a/drivers/video/backlight/lcd.c
+++ b/drivers/video/backlight/lcd.c
@@ -27,24 +27,25 @@
static int fb_notifier_callback(struct notifier_block *self,
unsigned long event, void *data)
{
- struct lcd_device *ld;
+ struct lcd_device *ld = container_of(self, struct lcd_device, fb_notif);
struct fb_event *evdata = data;
+ struct fb_info *info = evdata->info;
+
+ guard(mutex)(&ld->ops_lock);
- ld = container_of(self, struct lcd_device, fb_notif);
if (!ld->ops)
return 0;
+ if (ld->ops->check_fb && !ld->ops->check_fb(ld, info))
+ return 0;
- mutex_lock(&ld->ops_lock);
- if (!ld->ops->check_fb || ld->ops->check_fb(ld, evdata->info)) {
- if (event == FB_EVENT_BLANK) {
- if (ld->ops->set_power)
- ld->ops->set_power(ld, *(int *)evdata->data);
- } else {
- if (ld->ops->set_mode)
- ld->ops->set_mode(ld, evdata->data);
- }
+ if (event == FB_EVENT_BLANK) {
+ if (ld->ops->set_power)
+ ld->ops->set_power(ld, *(int *)evdata->data);
+ } else {
+ if (ld->ops->set_mode)
+ ld->ops->set_mode(ld, evdata->data);
}
- mutex_unlock(&ld->ops_lock);
+
return 0;
}
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 02/28] backlight: lcd: Test against struct fb_info.lcd_dev
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 01/28] backlight: lcd: Rearrange code in fb_notifier_callback() Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 03/28] backlight: lcd: Add LCD_POWER_ constants for power states Thomas Zimmermann
` (27 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Add struct fb_info.lcd_dev for fbdev drivers to store a reference to
their lcd device. Update the lcd's fb_notifier_callback() to test for
this field. The lcd module can now detect if an lcd device belongs to
an fbdev device.
This works similar to the bl_dev for backlights and will allow for
the removal of the check_fb callback from several fbdev driver's lcd
devices.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/lcd.c | 3 +++
include/linux/fb.h | 13 +++++++++++++
2 files changed, 16 insertions(+)
diff --git a/drivers/video/backlight/lcd.c b/drivers/video/backlight/lcd.c
index 2f57d6867d42..c69407aed296 100644
--- a/drivers/video/backlight/lcd.c
+++ b/drivers/video/backlight/lcd.c
@@ -30,6 +30,7 @@ static int fb_notifier_callback(struct notifier_block *self,
struct lcd_device *ld = container_of(self, struct lcd_device, fb_notif);
struct fb_event *evdata = data;
struct fb_info *info = evdata->info;
+ struct lcd_device *fb_lcd = fb_lcd_device(info);
guard(mutex)(&ld->ops_lock);
@@ -37,6 +38,8 @@ static int fb_notifier_callback(struct notifier_block *self,
return 0;
if (ld->ops->check_fb && !ld->ops->check_fb(ld, info))
return 0;
+ if (fb_lcd && fb_lcd != ld)
+ return 0;
if (event == FB_EVENT_BLANK) {
if (ld->ops->set_power)
diff --git a/include/linux/fb.h b/include/linux/fb.h
index 865dad03e73e..bf1893616e9c 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -21,6 +21,7 @@ struct fb_info;
struct file;
struct i2c_adapter;
struct inode;
+struct lcd_device;
struct module;
struct notifier_block;
struct page;
@@ -480,6 +481,13 @@ struct fb_info {
struct mutex bl_curve_mutex;
u8 bl_curve[FB_BACKLIGHT_LEVELS];
#endif
+
+ /*
+ * Assigned LCD device; set before framebuffer
+ * registration, remove after unregister
+ */
+ struct lcd_device *lcd_dev;
+
#ifdef CONFIG_FB_DEFERRED_IO
struct delayed_work deferred_work;
unsigned long npagerefs;
@@ -753,6 +761,11 @@ static inline struct backlight_device *fb_bl_device(struct fb_info *info)
}
#endif
+static inline struct lcd_device *fb_lcd_device(struct fb_info *info)
+{
+ return info->lcd_dev;
+}
+
/* fbmon.c */
#define FB_MAXTIMINGS 0
#define FB_VSYNCTIMINGS 1
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 03/28] backlight: lcd: Add LCD_POWER_ constants for power states
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 01/28] backlight: lcd: Rearrange code in fb_notifier_callback() Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 02/28] backlight: lcd: Test against struct fb_info.lcd_dev Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 04/28] backlight: corgi_lcd: Use lcd power constants Thomas Zimmermann
` (26 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Duplicate FB_BLANK_ constants as LCD_POWER_ constants in the lcd
header file. Allows lcd drivers to avoid including the fbdev header
file and removes a compile-time dependency between the two subsystems.
The new LCD_POWER_ constants have the same values as their
FB_BLANK_ counterparts. Hence semantics does not change and the lcd
drivers can be converted one by one. Each instance of FB_BLANK_UNBLANK
becomes LCD_POWER_ON, each of FB_BLANK_POWERDOWN becomes LCD_POWER_OFF,
FB_BLANK_NORMAL becomes LCD_POWER_REDUCED and FB_BLANK_VSYNC_SUSPEND
becomes LCD_POWER_REDUCED_VSYNC_SUSPEND.
Lcd code or drivers do not use FB_BLANK_HSYNC_SUSPEND, so no
new constants for this is being added. The tokens LCD_POWER_REDUCED
and LCD_POWER_REDUCED_VSYNC_SUSPEND are deprecated and drivers should
replace them with LCD_POWER_ON and LCD_POWER_OFF.
See also commit a1cacb8a8e70 ("backlight: Add BACKLIGHT_POWER_ constants
for power states"), which added similar constants for backlight drivers.
v2:
- fix typo in commit description
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/lcd.c | 22 +++++++++++++++++++++-
include/linux/lcd.h | 5 +++++
2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/drivers/video/backlight/lcd.c b/drivers/video/backlight/lcd.c
index c69407aed296..713f7fb8b10a 100644
--- a/drivers/video/backlight/lcd.c
+++ b/drivers/video/backlight/lcd.c
@@ -20,6 +20,24 @@
#if defined(CONFIG_FB) || (defined(CONFIG_FB_MODULE) && \
defined(CONFIG_LCD_CLASS_DEVICE_MODULE))
+static int to_lcd_power(int fb_blank)
+{
+ switch (fb_blank) {
+ case FB_BLANK_UNBLANK:
+ return LCD_POWER_ON;
+ /* deprecated; TODO: should become 'off' */
+ case FB_BLANK_NORMAL:
+ return LCD_POWER_REDUCED;
+ case FB_BLANK_VSYNC_SUSPEND:
+ return LCD_POWER_REDUCED_VSYNC_SUSPEND;
+ /* 'off' */
+ case FB_BLANK_HSYNC_SUSPEND:
+ case FB_BLANK_POWERDOWN:
+ default:
+ return LCD_POWER_OFF;
+ }
+}
+
/* This callback gets called when something important happens inside a
* framebuffer driver. We're looking if that important event is blanking,
* and if it is, we're switching lcd power as well ...
@@ -42,8 +60,10 @@ static int fb_notifier_callback(struct notifier_block *self,
return 0;
if (event == FB_EVENT_BLANK) {
+ int power = to_lcd_power(*(int *)evdata->data);
+
if (ld->ops->set_power)
- ld->ops->set_power(ld, *(int *)evdata->data);
+ ld->ops->set_power(ld, power);
} else {
if (ld->ops->set_mode)
ld->ops->set_mode(ld, evdata->data);
diff --git a/include/linux/lcd.h b/include/linux/lcd.h
index 68703a51dc53..dfcc54d327f5 100644
--- a/include/linux/lcd.h
+++ b/include/linux/lcd.h
@@ -14,6 +14,11 @@
#include <linux/notifier.h>
#include <linux/fb.h>
+#define LCD_POWER_ON (0)
+#define LCD_POWER_REDUCED (1) // deprecated; don't use in new code
+#define LCD_POWER_REDUCED_VSYNC_SUSPEND (2) // deprecated; don't use in new code
+#define LCD_POWER_OFF (4)
+
/* Notes on locking:
*
* lcd_device->ops_lock is an internal backlight lock protecting the ops
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 04/28] backlight: corgi_lcd: Use lcd power constants
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (2 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 03/28] backlight: lcd: Add LCD_POWER_ constants for power states Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 05/28] backlight: hx8357: " Thomas Zimmermann
` (25 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Replace FB_BLANK_ constants with their counterparts from the
lcd subsystem. The values are identical, so there's no change
in functionality.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/corgi_lcd.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/video/backlight/corgi_lcd.c b/drivers/video/backlight/corgi_lcd.c
index e4fcfbe38dc6..35c3fd3281ca 100644
--- a/drivers/video/backlight/corgi_lcd.c
+++ b/drivers/video/backlight/corgi_lcd.c
@@ -24,7 +24,7 @@
#include <linux/slab.h>
#include <asm/mach/sharpsl_param.h>
-#define POWER_IS_ON(pwr) ((pwr) <= FB_BLANK_NORMAL)
+#define POWER_IS_ON(pwr) ((pwr) <= LCD_POWER_REDUCED)
/* Register Addresses */
#define RESCTL_ADRS 0x00
@@ -455,7 +455,7 @@ static int corgi_lcd_suspend(struct device *dev)
corgibl_flags |= CORGIBL_SUSPENDED;
corgi_bl_set_intensity(lcd, 0);
- corgi_lcd_set_power(lcd->lcd_dev, FB_BLANK_POWERDOWN);
+ corgi_lcd_set_power(lcd->lcd_dev, LCD_POWER_OFF);
return 0;
}
@@ -464,7 +464,7 @@ static int corgi_lcd_resume(struct device *dev)
struct corgi_lcd *lcd = dev_get_drvdata(dev);
corgibl_flags &= ~CORGIBL_SUSPENDED;
- corgi_lcd_set_power(lcd->lcd_dev, FB_BLANK_UNBLANK);
+ corgi_lcd_set_power(lcd->lcd_dev, LCD_POWER_ON);
backlight_update_status(lcd->bl_dev);
return 0;
}
@@ -513,7 +513,7 @@ static int corgi_lcd_probe(struct spi_device *spi)
if (IS_ERR(lcd->lcd_dev))
return PTR_ERR(lcd->lcd_dev);
- lcd->power = FB_BLANK_POWERDOWN;
+ lcd->power = LCD_POWER_OFF;
lcd->mode = (pdata) ? pdata->init_mode : CORGI_LCD_MODE_VGA;
memset(&props, 0, sizeof(struct backlight_properties));
@@ -535,7 +535,7 @@ static int corgi_lcd_probe(struct spi_device *spi)
lcd->kick_battery = pdata->kick_battery;
spi_set_drvdata(spi, lcd);
- corgi_lcd_set_power(lcd->lcd_dev, FB_BLANK_UNBLANK);
+ corgi_lcd_set_power(lcd->lcd_dev, LCD_POWER_ON);
backlight_update_status(lcd->bl_dev);
lcd->limit_mask = pdata->limit_mask;
@@ -550,7 +550,7 @@ static void corgi_lcd_remove(struct spi_device *spi)
lcd->bl_dev->props.power = BACKLIGHT_POWER_ON;
lcd->bl_dev->props.brightness = 0;
backlight_update_status(lcd->bl_dev);
- corgi_lcd_set_power(lcd->lcd_dev, FB_BLANK_POWERDOWN);
+ corgi_lcd_set_power(lcd->lcd_dev, LCD_POWER_OFF);
}
static struct spi_driver corgi_lcd_driver = {
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 05/28] backlight: hx8357: Use lcd power constants
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (3 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 04/28] backlight: corgi_lcd: Use lcd power constants Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 06/28] backlight: ili922x: " Thomas Zimmermann
` (24 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Replace FB_BLANK_ constants with their counterparts from the
lcd subsystem. The values are identical, so there's no change
in functionality.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/hx8357.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/backlight/hx8357.c b/drivers/video/backlight/hx8357.c
index cdd7b7686723..61a57d38700f 100644
--- a/drivers/video/backlight/hx8357.c
+++ b/drivers/video/backlight/hx8357.c
@@ -532,7 +532,7 @@ static int hx8369_lcd_init(struct lcd_device *lcdev)
return 0;
}
-#define POWER_IS_ON(pwr) ((pwr) <= FB_BLANK_NORMAL)
+#define POWER_IS_ON(pwr) ((pwr) <= LCD_POWER_REDUCED)
static int hx8357_set_power(struct lcd_device *lcdev, int power)
{
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 06/28] backlight: ili922x: Use lcd power constants
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (4 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 05/28] backlight: hx8357: " Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 07/28] backlight: ili9320: " Thomas Zimmermann
` (23 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Replace FB_BLANK_ constants with their counterparts from the
lcd subsystem. The values are identical, so there's no change
in functionality.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/ili922x.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/video/backlight/ili922x.c b/drivers/video/backlight/ili922x.c
index 7683e209ad6b..5e1bf0c5831f 100644
--- a/drivers/video/backlight/ili922x.c
+++ b/drivers/video/backlight/ili922x.c
@@ -8,7 +8,6 @@
* memory is cyclically updated over the RGB interface.
*/
-#include <linux/fb.h>
#include <linux/delay.h>
#include <linux/errno.h>
#include <linux/init.h>
@@ -119,7 +118,7 @@
#define CMD_BUFSIZE 16
-#define POWER_IS_ON(pwr) ((pwr) <= FB_BLANK_NORMAL)
+#define POWER_IS_ON(pwr) ((pwr) <= LCD_POWER_REDUCED)
#define set_tx_byte(b) (tx_invert ? ~(b) : b)
@@ -513,7 +512,7 @@ static int ili922x_probe(struct spi_device *spi)
ili922x_display_init(spi);
- ili->power = FB_BLANK_POWERDOWN;
+ ili->power = LCD_POWER_OFF;
lcd = devm_lcd_device_register(&spi->dev, "ili922xlcd", &spi->dev, ili,
&ili922x_ops);
@@ -525,7 +524,7 @@ static int ili922x_probe(struct spi_device *spi)
ili->ld = lcd;
spi_set_drvdata(spi, ili);
- ili922x_lcd_power(ili, FB_BLANK_UNBLANK);
+ ili922x_lcd_power(ili, LCD_POWER_ON);
return 0;
}
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 07/28] backlight: ili9320: Use lcd power constants
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (5 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 06/28] backlight: ili922x: " Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 08/28] backlight: jornada720_lcd: Include <linux/io.h> for IOMEM() macro Thomas Zimmermann
` (22 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Replace FB_BLANK_ constants with their counterparts from the
lcd subsystem. The values are identical, so there's no change
in functionality.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/ili9320.c | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/drivers/video/backlight/ili9320.c b/drivers/video/backlight/ili9320.c
index 3e318d1891b6..2df96a882119 100644
--- a/drivers/video/backlight/ili9320.c
+++ b/drivers/video/backlight/ili9320.c
@@ -10,7 +10,6 @@
#include <linux/delay.h>
#include <linux/err.h>
-#include <linux/fb.h>
#include <linux/init.h>
#include <linux/lcd.h>
#include <linux/module.h>
@@ -121,7 +120,7 @@ static inline int ili9320_power_off(struct ili9320 *lcd)
return 0;
}
-#define POWER_IS_ON(pwr) ((pwr) <= FB_BLANK_NORMAL)
+#define POWER_IS_ON(pwr) ((pwr) <= LCD_POWER_REDUCED)
static int ili9320_power(struct ili9320 *lcd, int power)
{
@@ -223,7 +222,7 @@ int ili9320_probe_spi(struct spi_device *spi,
ili->dev = dev;
ili->client = client;
- ili->power = FB_BLANK_POWERDOWN;
+ ili->power = LCD_POWER_OFF;
ili->platdata = cfg;
spi_set_drvdata(spi, ili);
@@ -241,7 +240,7 @@ int ili9320_probe_spi(struct spi_device *spi,
dev_info(dev, "initialising %s\n", client->name);
- ret = ili9320_power(ili, FB_BLANK_UNBLANK);
+ ret = ili9320_power(ili, LCD_POWER_ON);
if (ret != 0) {
dev_err(dev, "failed to set lcd power state\n");
return ret;
@@ -253,7 +252,7 @@ EXPORT_SYMBOL_GPL(ili9320_probe_spi);
void ili9320_remove(struct ili9320 *ili)
{
- ili9320_power(ili, FB_BLANK_POWERDOWN);
+ ili9320_power(ili, LCD_POWER_OFF);
}
EXPORT_SYMBOL_GPL(ili9320_remove);
@@ -262,7 +261,7 @@ int ili9320_suspend(struct ili9320 *lcd)
{
int ret;
- ret = ili9320_power(lcd, FB_BLANK_POWERDOWN);
+ ret = ili9320_power(lcd, LCD_POWER_OFF);
if (lcd->platdata->suspend == ILI9320_SUSPEND_DEEP) {
ili9320_write(lcd, ILI9320_POWER1, lcd->power1 |
@@ -282,7 +281,7 @@ int ili9320_resume(struct ili9320 *lcd)
if (lcd->platdata->suspend == ILI9320_SUSPEND_DEEP)
ili9320_write(lcd, ILI9320_POWER1, 0x00);
- return ili9320_power(lcd, FB_BLANK_UNBLANK);
+ return ili9320_power(lcd, LCD_POWER_ON);
}
EXPORT_SYMBOL_GPL(ili9320_resume);
#endif
@@ -290,7 +289,7 @@ EXPORT_SYMBOL_GPL(ili9320_resume);
/* Power down all displays on reboot, poweroff or halt */
void ili9320_shutdown(struct ili9320 *lcd)
{
- ili9320_power(lcd, FB_BLANK_POWERDOWN);
+ ili9320_power(lcd, LCD_POWER_OFF);
}
EXPORT_SYMBOL_GPL(ili9320_shutdown);
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 08/28] backlight: jornada720_lcd: Include <linux/io.h> for IOMEM() macro
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (6 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 07/28] backlight: ili9320: " Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 09/28] backlight: jornada720_lcd: Use lcd power constants Thomas Zimmermann
` (21 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Avoids the proxy include via <linux/fb.h>.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/jornada720_lcd.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/video/backlight/jornada720_lcd.c b/drivers/video/backlight/jornada720_lcd.c
index 5c64fa61e810..73278f6ace64 100644
--- a/drivers/video/backlight/jornada720_lcd.c
+++ b/drivers/video/backlight/jornada720_lcd.c
@@ -7,6 +7,7 @@
#include <linux/device.h>
#include <linux/fb.h>
+#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/lcd.h>
#include <linux/module.h>
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 09/28] backlight: jornada720_lcd: Use lcd power constants
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (7 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 08/28] backlight: jornada720_lcd: Include <linux/io.h> for IOMEM() macro Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 10/28] backlight: l4f00242t03: " Thomas Zimmermann
` (20 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Replace FB_BLANK_ constants with their counterparts from the
lcd subsystem. The values are identical, so there's no change
in functionality.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/jornada720_lcd.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/video/backlight/jornada720_lcd.c b/drivers/video/backlight/jornada720_lcd.c
index 73278f6ace64..31a52dee9060 100644
--- a/drivers/video/backlight/jornada720_lcd.c
+++ b/drivers/video/backlight/jornada720_lcd.c
@@ -6,7 +6,6 @@
*/
#include <linux/device.h>
-#include <linux/fb.h>
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/lcd.h>
@@ -24,14 +23,14 @@
static int jornada_lcd_get_power(struct lcd_device *ld)
{
- return PPSR & PPC_LDD2 ? FB_BLANK_UNBLANK : FB_BLANK_POWERDOWN;
+ return PPSR & PPC_LDD2 ? LCD_POWER_ON : LCD_POWER_OFF;
}
static int jornada_lcd_get_contrast(struct lcd_device *ld)
{
int ret;
- if (jornada_lcd_get_power(ld) != FB_BLANK_UNBLANK)
+ if (jornada_lcd_get_power(ld) != LCD_POWER_ON)
return 0;
jornada_ssp_start();
@@ -72,7 +71,7 @@ static int jornada_lcd_set_contrast(struct lcd_device *ld, int value)
static int jornada_lcd_set_power(struct lcd_device *ld, int power)
{
- if (power != FB_BLANK_UNBLANK) {
+ if (power != LCD_POWER_ON) {
PPSR &= ~PPC_LDD2;
PPDR |= PPC_LDD2;
} else {
@@ -107,7 +106,7 @@ static int jornada_lcd_probe(struct platform_device *pdev)
/* lets set our default values */
jornada_lcd_set_contrast(lcd_device, LCD_DEF_CONTRAST);
- jornada_lcd_set_power(lcd_device, FB_BLANK_UNBLANK);
+ jornada_lcd_set_power(lcd_device, LCD_POWER_ON);
/* give it some time to startup */
msleep(100);
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 10/28] backlight: l4f00242t03: Use lcd power constants
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (8 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 09/28] backlight: jornada720_lcd: Use lcd power constants Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 11/28] backlight: lms283gf05: " Thomas Zimmermann
` (19 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Replace FB_BLANK_ constants with their counterparts from the
lcd subsystem. The values are identical, so there's no change
in functionality.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/l4f00242t03.c | 32 +++++++++++++--------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/drivers/video/backlight/l4f00242t03.c b/drivers/video/backlight/l4f00242t03.c
index dd0874f8c7ff..5b5887607f16 100644
--- a/drivers/video/backlight/l4f00242t03.c
+++ b/drivers/video/backlight/l4f00242t03.c
@@ -112,40 +112,40 @@ static int l4f00242t03_lcd_power_set(struct lcd_device *ld, int power)
const u16 slpin = 0x10;
const u16 disoff = 0x28;
- if (power <= FB_BLANK_NORMAL) {
- if (priv->lcd_state <= FB_BLANK_NORMAL) {
+ if (power <= LCD_POWER_REDUCED) {
+ if (priv->lcd_state <= LCD_POWER_REDUCED) {
/* Do nothing, the LCD is running */
- } else if (priv->lcd_state < FB_BLANK_POWERDOWN) {
+ } else if (priv->lcd_state < LCD_POWER_OFF) {
dev_dbg(&spi->dev, "Resuming LCD\n");
spi_write(spi, (const u8 *)&slpout, sizeof(u16));
msleep(60);
spi_write(spi, (const u8 *)&dison, sizeof(u16));
} else {
- /* priv->lcd_state == FB_BLANK_POWERDOWN */
+ /* priv->lcd_state == LCD_POWER_OFF */
l4f00242t03_lcd_init(spi);
- priv->lcd_state = FB_BLANK_VSYNC_SUSPEND;
+ priv->lcd_state = LCD_POWER_REDUCED_VSYNC_SUSPEND;
l4f00242t03_lcd_power_set(priv->ld, power);
}
- } else if (power < FB_BLANK_POWERDOWN) {
- if (priv->lcd_state <= FB_BLANK_NORMAL) {
+ } else if (power < LCD_POWER_OFF) {
+ if (priv->lcd_state <= LCD_POWER_REDUCED) {
/* Send the display in standby */
dev_dbg(&spi->dev, "Standby the LCD\n");
spi_write(spi, (const u8 *)&disoff, sizeof(u16));
msleep(60);
spi_write(spi, (const u8 *)&slpin, sizeof(u16));
- } else if (priv->lcd_state < FB_BLANK_POWERDOWN) {
+ } else if (priv->lcd_state < LCD_POWER_OFF) {
/* Do nothing, the LCD is already in standby */
} else {
- /* priv->lcd_state == FB_BLANK_POWERDOWN */
+ /* priv->lcd_state == LCD_POWER_OFF */
l4f00242t03_lcd_init(spi);
- priv->lcd_state = FB_BLANK_UNBLANK;
+ priv->lcd_state = LCD_POWER_ON;
l4f00242t03_lcd_power_set(ld, power);
}
} else {
- /* power == FB_BLANK_POWERDOWN */
- if (priv->lcd_state != FB_BLANK_POWERDOWN) {
+ /* power == LCD_POWER_OFF */
+ if (priv->lcd_state != LCD_POWER_OFF) {
/* Clear the screen before shutting down */
spi_write(spi, (const u8 *)&disoff, sizeof(u16));
msleep(60);
@@ -209,8 +209,8 @@ static int l4f00242t03_probe(struct spi_device *spi)
/* Init the LCD */
l4f00242t03_lcd_init(spi);
- priv->lcd_state = FB_BLANK_VSYNC_SUSPEND;
- l4f00242t03_lcd_power_set(priv->ld, FB_BLANK_UNBLANK);
+ priv->lcd_state = LCD_POWER_REDUCED_VSYNC_SUSPEND;
+ l4f00242t03_lcd_power_set(priv->ld, LCD_POWER_ON);
dev_info(&spi->dev, "Epson l4f00242t03 lcd probed.\n");
@@ -221,7 +221,7 @@ static void l4f00242t03_remove(struct spi_device *spi)
{
struct l4f00242t03_priv *priv = spi_get_drvdata(spi);
- l4f00242t03_lcd_power_set(priv->ld, FB_BLANK_POWERDOWN);
+ l4f00242t03_lcd_power_set(priv->ld, LCD_POWER_OFF);
}
static void l4f00242t03_shutdown(struct spi_device *spi)
@@ -229,7 +229,7 @@ static void l4f00242t03_shutdown(struct spi_device *spi)
struct l4f00242t03_priv *priv = spi_get_drvdata(spi);
if (priv)
- l4f00242t03_lcd_power_set(priv->ld, FB_BLANK_POWERDOWN);
+ l4f00242t03_lcd_power_set(priv->ld, LCD_POWER_OFF);
}
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 11/28] backlight: lms283gf05: Use lcd power constants
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (9 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 10/28] backlight: l4f00242t03: " Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 12/28] backlight: lms501kf03: Remove unnecessary include of <linux/backlight.h> Thomas Zimmermann
` (18 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Replace FB_BLANK_ constants with their counterparts from the
lcd subsystem. The values are identical, so there's no change
in functionality.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/lms283gf05.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/backlight/lms283gf05.c b/drivers/video/backlight/lms283gf05.c
index a65490e83d3d..c8b7eeeb333e 100644
--- a/drivers/video/backlight/lms283gf05.c
+++ b/drivers/video/backlight/lms283gf05.c
@@ -126,7 +126,7 @@ static int lms283gf05_power_set(struct lcd_device *ld, int power)
struct lms283gf05_state *st = lcd_get_data(ld);
struct spi_device *spi = st->spi;
- if (power <= FB_BLANK_NORMAL) {
+ if (power <= LCD_POWER_REDUCED) {
if (st->reset)
lms283gf05_reset(st->reset);
lms283gf05_toggle(spi, disp_initseq, ARRAY_SIZE(disp_initseq));
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 12/28] backlight: lms501kf03: Remove unnecessary include of <linux/backlight.h>
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (10 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 11/28] backlight: lms283gf05: " Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 13/28] backlight: lms501kf03: Use lcd power constants Thomas Zimmermann
` (17 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
This lcd driver is independent from the backlight code.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/lms501kf03.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/video/backlight/lms501kf03.c b/drivers/video/backlight/lms501kf03.c
index 8aebe0af3391..e051e6b6036e 100644
--- a/drivers/video/backlight/lms501kf03.c
+++ b/drivers/video/backlight/lms501kf03.c
@@ -6,7 +6,6 @@
* Author: Jingoo Han <jg1.han@samsung.com>
*/
-#include <linux/backlight.h>
#include <linux/delay.h>
#include <linux/fb.h>
#include <linux/lcd.h>
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 13/28] backlight: lms501kf03: Use lcd power constants
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (11 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 12/28] backlight: lms501kf03: Remove unnecessary include of <linux/backlight.h> Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 14/28] backlight: ltv350qv: " Thomas Zimmermann
` (16 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Replace FB_BLANK_ constants with their counterparts from the
lcd subsystem. The values are identical, so there's no change
in functionality.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/lms501kf03.c | 23 +++++++++++------------
1 file changed, 11 insertions(+), 12 deletions(-)
diff --git a/drivers/video/backlight/lms501kf03.c b/drivers/video/backlight/lms501kf03.c
index e051e6b6036e..28721b48b4c7 100644
--- a/drivers/video/backlight/lms501kf03.c
+++ b/drivers/video/backlight/lms501kf03.c
@@ -7,7 +7,6 @@
*/
#include <linux/delay.h>
-#include <linux/fb.h>
#include <linux/lcd.h>
#include <linux/module.h>
#include <linux/spi/spi.h>
@@ -205,7 +204,7 @@ static int lms501kf03_ldi_disable(struct lms501kf03 *lcd)
static int lms501kf03_power_is_on(int power)
{
- return (power) <= FB_BLANK_NORMAL;
+ return (power) <= LCD_POWER_REDUCED;
}
static int lms501kf03_power_on(struct lms501kf03 *lcd)
@@ -294,8 +293,8 @@ static int lms501kf03_set_power(struct lcd_device *ld, int power)
{
struct lms501kf03 *lcd = lcd_get_data(ld);
- if (power != FB_BLANK_UNBLANK && power != FB_BLANK_POWERDOWN &&
- power != FB_BLANK_NORMAL) {
+ if (power != LCD_POWER_ON && power != LCD_POWER_OFF &&
+ power != LCD_POWER_REDUCED) {
dev_err(lcd->dev, "power value should be 0, 1 or 4.\n");
return -EINVAL;
}
@@ -349,11 +348,11 @@ static int lms501kf03_probe(struct spi_device *spi)
* current lcd status is powerdown and then
* it enables lcd panel.
*/
- lcd->power = FB_BLANK_POWERDOWN;
+ lcd->power = LCD_POWER_OFF;
- lms501kf03_power(lcd, FB_BLANK_UNBLANK);
+ lms501kf03_power(lcd, LCD_POWER_ON);
} else {
- lcd->power = FB_BLANK_UNBLANK;
+ lcd->power = LCD_POWER_ON;
}
spi_set_drvdata(spi, lcd);
@@ -367,7 +366,7 @@ static void lms501kf03_remove(struct spi_device *spi)
{
struct lms501kf03 *lcd = spi_get_drvdata(spi);
- lms501kf03_power(lcd, FB_BLANK_POWERDOWN);
+ lms501kf03_power(lcd, LCD_POWER_OFF);
}
#ifdef CONFIG_PM_SLEEP
@@ -381,16 +380,16 @@ static int lms501kf03_suspend(struct device *dev)
* when lcd panel is suspend, lcd panel becomes off
* regardless of status.
*/
- return lms501kf03_power(lcd, FB_BLANK_POWERDOWN);
+ return lms501kf03_power(lcd, LCD_POWER_OFF);
}
static int lms501kf03_resume(struct device *dev)
{
struct lms501kf03 *lcd = dev_get_drvdata(dev);
- lcd->power = FB_BLANK_POWERDOWN;
+ lcd->power = LCD_POWER_OFF;
- return lms501kf03_power(lcd, FB_BLANK_UNBLANK);
+ return lms501kf03_power(lcd, LCD_POWER_ON);
}
#endif
@@ -401,7 +400,7 @@ static void lms501kf03_shutdown(struct spi_device *spi)
{
struct lms501kf03 *lcd = spi_get_drvdata(spi);
- lms501kf03_power(lcd, FB_BLANK_POWERDOWN);
+ lms501kf03_power(lcd, LCD_POWER_OFF);
}
static struct spi_driver lms501kf03_driver = {
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 14/28] backlight: ltv350qv: Use lcd power constants
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (12 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 13/28] backlight: lms501kf03: Use lcd power constants Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 15/28] backlight: otm3225a: " Thomas Zimmermann
` (15 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Replace FB_BLANK_ constants with their counterparts from the
lcd subsystem. The values are identical, so there's no change
in functionality.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/ltv350qv.c | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/drivers/video/backlight/ltv350qv.c b/drivers/video/backlight/ltv350qv.c
index cdc4c087f230..c919b0fe4cd9 100644
--- a/drivers/video/backlight/ltv350qv.c
+++ b/drivers/video/backlight/ltv350qv.c
@@ -6,7 +6,6 @@
*/
#include <linux/delay.h>
#include <linux/err.h>
-#include <linux/fb.h>
#include <linux/init.h>
#include <linux/lcd.h>
#include <linux/module.h>
@@ -15,7 +14,7 @@
#include "ltv350qv.h"
-#define POWER_IS_ON(pwr) ((pwr) <= FB_BLANK_NORMAL)
+#define POWER_IS_ON(pwr) ((pwr) <= LCD_POWER_REDUCED)
struct ltv350qv {
struct spi_device *spi;
@@ -233,7 +232,7 @@ static int ltv350qv_probe(struct spi_device *spi)
return -ENOMEM;
lcd->spi = spi;
- lcd->power = FB_BLANK_POWERDOWN;
+ lcd->power = LCD_POWER_OFF;
lcd->buffer = devm_kzalloc(&spi->dev, 8, GFP_KERNEL);
if (!lcd->buffer)
return -ENOMEM;
@@ -245,7 +244,7 @@ static int ltv350qv_probe(struct spi_device *spi)
lcd->ld = ld;
- ret = ltv350qv_power(lcd, FB_BLANK_UNBLANK);
+ ret = ltv350qv_power(lcd, LCD_POWER_ON);
if (ret)
return ret;
@@ -258,7 +257,7 @@ static void ltv350qv_remove(struct spi_device *spi)
{
struct ltv350qv *lcd = spi_get_drvdata(spi);
- ltv350qv_power(lcd, FB_BLANK_POWERDOWN);
+ ltv350qv_power(lcd, LCD_POWER_OFF);
}
#ifdef CONFIG_PM_SLEEP
@@ -266,14 +265,14 @@ static int ltv350qv_suspend(struct device *dev)
{
struct ltv350qv *lcd = dev_get_drvdata(dev);
- return ltv350qv_power(lcd, FB_BLANK_POWERDOWN);
+ return ltv350qv_power(lcd, LCD_POWER_OFF);
}
static int ltv350qv_resume(struct device *dev)
{
struct ltv350qv *lcd = dev_get_drvdata(dev);
- return ltv350qv_power(lcd, FB_BLANK_UNBLANK);
+ return ltv350qv_power(lcd, LCD_POWER_ON);
}
#endif
@@ -284,7 +283,7 @@ static void ltv350qv_shutdown(struct spi_device *spi)
{
struct ltv350qv *lcd = spi_get_drvdata(spi);
- ltv350qv_power(lcd, FB_BLANK_POWERDOWN);
+ ltv350qv_power(lcd, LCD_POWER_OFF);
}
static struct spi_driver ltv350qv_driver = {
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 15/28] backlight: otm3225a: Use lcd power constants
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (13 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 14/28] backlight: ltv350qv: " Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 16/28] backlight: platform_lcd: Remove include statement for <linux/backlight.h> Thomas Zimmermann
` (14 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Replace FB_BLANK_ constants with their counterparts from the
lcd subsystem. The values are identical, so there's no change
in functionality.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/otm3225a.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/video/backlight/otm3225a.c b/drivers/video/backlight/otm3225a.c
index efe52fa08b07..5c6575f23ea8 100644
--- a/drivers/video/backlight/otm3225a.c
+++ b/drivers/video/backlight/otm3225a.c
@@ -189,7 +189,7 @@ static int otm3225a_set_power(struct lcd_device *ld, int power)
if (power == dd->power)
return 0;
- if (power > FB_BLANK_UNBLANK)
+ if (power > LCD_POWER_ON)
otm3225a_write(dd->spi, display_off, ARRAY_SIZE(display_off));
else
otm3225a_write(dd->spi, display_on, ARRAY_SIZE(display_on));
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 16/28] backlight: platform_lcd: Remove include statement for <linux/backlight.h>
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (14 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 15/28] backlight: otm3225a: " Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 17/28] backlight: platform_lcd: Remove match_fb from struct plat_lcd_data Thomas Zimmermann
` (13 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
This lcd driver does not depend on backlight interfaces. Remove the
include statement.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/platform_lcd.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/video/backlight/platform_lcd.c b/drivers/video/backlight/platform_lcd.c
index b0af612834a7..08d0ff400d88 100644
--- a/drivers/video/backlight/platform_lcd.c
+++ b/drivers/video/backlight/platform_lcd.c
@@ -10,7 +10,6 @@
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/fb.h>
-#include <linux/backlight.h>
#include <linux/lcd.h>
#include <linux/slab.h>
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 17/28] backlight: platform_lcd: Remove match_fb from struct plat_lcd_data
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (15 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 16/28] backlight: platform_lcd: Remove include statement for <linux/backlight.h> Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 18/28] backlight: platform_lcd: Use lcd power constants Thomas Zimmermann
` (12 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
The match_fb callback in struct plat_lcd_data is unused. Remove it.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/platform_lcd.c | 4 ----
include/video/platform_lcd.h | 3 ---
2 files changed, 7 deletions(-)
diff --git a/drivers/video/backlight/platform_lcd.c b/drivers/video/backlight/platform_lcd.c
index 08d0ff400d88..8b89d2f47df7 100644
--- a/drivers/video/backlight/platform_lcd.c
+++ b/drivers/video/backlight/platform_lcd.c
@@ -53,10 +53,6 @@ static int platform_lcd_set_power(struct lcd_device *lcd, int power)
static int platform_lcd_match(struct lcd_device *lcd, struct fb_info *info)
{
struct platform_lcd *plcd = to_our_lcd(lcd);
- struct plat_lcd_data *pdata = plcd->pdata;
-
- if (pdata->match_fb)
- return pdata->match_fb(pdata, info);
return plcd->us->parent == info->device;
}
diff --git a/include/video/platform_lcd.h b/include/video/platform_lcd.h
index 6a95184a28c1..2bdf46519298 100644
--- a/include/video/platform_lcd.h
+++ b/include/video/platform_lcd.h
@@ -8,11 +8,8 @@
*/
struct plat_lcd_data;
-struct fb_info;
struct plat_lcd_data {
int (*probe)(struct plat_lcd_data *);
void (*set_power)(struct plat_lcd_data *, unsigned int power);
- int (*match_fb)(struct plat_lcd_data *, struct fb_info *);
};
-
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 18/28] backlight: platform_lcd: Use lcd power constants
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (16 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 17/28] backlight: platform_lcd: Remove match_fb from struct plat_lcd_data Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 19/28] backlight: tdo24m: " Thomas Zimmermann
` (11 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Replace FB_BLANK_ constants with their counterparts from the
lcd subsystem. The values are identical, so there's no change
in functionality.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/platform_lcd.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/video/backlight/platform_lcd.c b/drivers/video/backlight/platform_lcd.c
index 8b89d2f47df7..69a22d1a8a35 100644
--- a/drivers/video/backlight/platform_lcd.c
+++ b/drivers/video/backlight/platform_lcd.c
@@ -41,7 +41,7 @@ static int platform_lcd_set_power(struct lcd_device *lcd, int power)
struct platform_lcd *plcd = to_our_lcd(lcd);
int lcd_power = 1;
- if (power == FB_BLANK_POWERDOWN || plcd->suspended)
+ if (power == LCD_POWER_OFF || plcd->suspended)
lcd_power = 0;
plcd->pdata->set_power(plcd->pdata, lcd_power);
@@ -97,7 +97,7 @@ static int platform_lcd_probe(struct platform_device *pdev)
}
platform_set_drvdata(pdev, plcd);
- platform_lcd_set_power(plcd->lcd, FB_BLANK_NORMAL);
+ platform_lcd_set_power(plcd->lcd, LCD_POWER_REDUCED);
return 0;
}
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 19/28] backlight: tdo24m: Use lcd power constants
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (17 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 18/28] backlight: platform_lcd: Use lcd power constants Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 20/28] fbdev: clps711x-fb: Replace check_fb in favor of struct fb_info.lcd_dev Thomas Zimmermann
` (10 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Replace FB_BLANK_ constants with their counterparts from the
lcd subsystem. The values are identical, so there's no change
in functionality.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/tdo24m.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/video/backlight/tdo24m.c b/drivers/video/backlight/tdo24m.c
index c413b3c68e95..a14a94114e9d 100644
--- a/drivers/video/backlight/tdo24m.c
+++ b/drivers/video/backlight/tdo24m.c
@@ -16,7 +16,7 @@
#include <linux/lcd.h>
#include <linux/slab.h>
-#define POWER_IS_ON(pwr) ((pwr) <= FB_BLANK_NORMAL)
+#define POWER_IS_ON(pwr) ((pwr) <= LCD_POWER_REDUCED)
#define TDO24M_SPI_BUFF_SIZE (4)
#define MODE_QVGA 0
@@ -354,7 +354,7 @@ static int tdo24m_probe(struct spi_device *spi)
return -ENOMEM;
lcd->spi_dev = spi;
- lcd->power = FB_BLANK_POWERDOWN;
+ lcd->power = LCD_POWER_OFF;
lcd->mode = MODE_VGA; /* default to VGA */
lcd->buf = devm_kzalloc(&spi->dev, TDO24M_SPI_BUFF_SIZE, GFP_KERNEL);
@@ -390,7 +390,7 @@ static int tdo24m_probe(struct spi_device *spi)
return PTR_ERR(lcd->lcd_dev);
spi_set_drvdata(spi, lcd);
- err = tdo24m_power(lcd, FB_BLANK_UNBLANK);
+ err = tdo24m_power(lcd, LCD_POWER_ON);
if (err)
return err;
@@ -401,7 +401,7 @@ static void tdo24m_remove(struct spi_device *spi)
{
struct tdo24m *lcd = spi_get_drvdata(spi);
- tdo24m_power(lcd, FB_BLANK_POWERDOWN);
+ tdo24m_power(lcd, LCD_POWER_OFF);
}
#ifdef CONFIG_PM_SLEEP
@@ -409,14 +409,14 @@ static int tdo24m_suspend(struct device *dev)
{
struct tdo24m *lcd = dev_get_drvdata(dev);
- return tdo24m_power(lcd, FB_BLANK_POWERDOWN);
+ return tdo24m_power(lcd, LCD_POWER_OFF);
}
static int tdo24m_resume(struct device *dev)
{
struct tdo24m *lcd = dev_get_drvdata(dev);
- return tdo24m_power(lcd, FB_BLANK_UNBLANK);
+ return tdo24m_power(lcd, LCD_POWER_ON);
}
#endif
@@ -427,7 +427,7 @@ static void tdo24m_shutdown(struct spi_device *spi)
{
struct tdo24m *lcd = spi_get_drvdata(spi);
- tdo24m_power(lcd, FB_BLANK_POWERDOWN);
+ tdo24m_power(lcd, LCD_POWER_OFF);
}
static struct spi_driver tdo24m_driver = {
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 20/28] fbdev: clps711x-fb: Replace check_fb in favor of struct fb_info.lcd_dev
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (18 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 19/28] backlight: tdo24m: " Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-10-03 18:33 ` Kees Bakker
2024-11-23 20:11 ` Andy Shevchenko
2024-09-06 7:52 ` [PATCH v2 21/28] fbdev: clps711x-fb: Use lcd power constants Thomas Zimmermann
` (9 subsequent siblings)
29 siblings, 2 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Store the lcd device in struct fb_info.lcd_dev. The lcd subsystem can
now detect the lcd's fbdev device from this field.
This makes the implementation of check_fb in clps711x_lcd_ops obsolete.
Remove it.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/fbdev/clps711x-fb.c | 23 ++++++++++-------------
1 file changed, 10 insertions(+), 13 deletions(-)
diff --git a/drivers/video/fbdev/clps711x-fb.c b/drivers/video/fbdev/clps711x-fb.c
index 6171a98a48fd..4340ea3b9660 100644
--- a/drivers/video/fbdev/clps711x-fb.c
+++ b/drivers/video/fbdev/clps711x-fb.c
@@ -162,13 +162,6 @@ static const struct fb_ops clps711x_fb_ops = {
.fb_blank = clps711x_fb_blank,
};
-static int clps711x_lcd_check_fb(struct lcd_device *lcddev, struct fb_info *fi)
-{
- struct clps711x_fb_info *cfb = dev_get_drvdata(&lcddev->dev);
-
- return (!fi || fi->par == cfb) ? 1 : 0;
-}
-
static int clps711x_lcd_get_power(struct lcd_device *lcddev)
{
struct clps711x_fb_info *cfb = dev_get_drvdata(&lcddev->dev);
@@ -198,7 +191,6 @@ static int clps711x_lcd_set_power(struct lcd_device *lcddev, int blank)
}
static const struct lcd_ops clps711x_lcd_ops = {
- .check_fb = clps711x_lcd_check_fb,
.get_power = clps711x_lcd_get_power,
.set_power = clps711x_lcd_set_power,
};
@@ -325,16 +317,21 @@ static int clps711x_fb_probe(struct platform_device *pdev)
if (ret)
goto out_fb_dealloc_cmap;
+ lcd = devm_lcd_device_register(dev, "clps711x-lcd", dev, cfb,
+ &clps711x_lcd_ops);
+ if (IS_ERR(lcd)) {
+ ret = PTR_ERR(lcd);
+ goto out_fb_dealloc_cmap;
+ }
+
+ info->lcd_dev = lcd;
+
ret = register_framebuffer(info);
if (ret)
goto out_fb_dealloc_cmap;
- lcd = devm_lcd_device_register(dev, "clps711x-lcd", dev, cfb,
- &clps711x_lcd_ops);
- if (!IS_ERR(lcd))
- return 0;
+ return 0;
- ret = PTR_ERR(lcd);
unregister_framebuffer(info);
out_fb_dealloc_cmap:
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2 20/28] fbdev: clps711x-fb: Replace check_fb in favor of struct fb_info.lcd_dev
2024-09-06 7:52 ` [PATCH v2 20/28] fbdev: clps711x-fb: Replace check_fb in favor of struct fb_info.lcd_dev Thomas Zimmermann
@ 2024-10-03 18:33 ` Kees Bakker
2024-10-04 14:01 ` Thomas Zimmermann
2024-11-23 20:11 ` Andy Shevchenko
1 sibling, 1 reply; 36+ messages in thread
From: Kees Bakker @ 2024-10-03 18:33 UTC (permalink / raw)
To: Thomas Zimmermann, lee, daniel.thompson, jingoohan1, deller,
bonbons, jikos, bentiss, s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap
Op 06-09-2024 om 09:52 schreef Thomas Zimmermann:
> Store the lcd device in struct fb_info.lcd_dev. The lcd subsystem can
> now detect the lcd's fbdev device from this field.
>
> This makes the implementation of check_fb in clps711x_lcd_ops obsolete.
> Remove it.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
> ---
> drivers/video/fbdev/clps711x-fb.c | 23 ++++++++++-------------
> 1 file changed, 10 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/video/fbdev/clps711x-fb.c b/drivers/video/fbdev/clps711x-fb.c
> index 6171a98a48fd..4340ea3b9660 100644
> --- a/drivers/video/fbdev/clps711x-fb.c
> +++ b/drivers/video/fbdev/clps711x-fb.c
> @@ -162,13 +162,6 @@ static const struct fb_ops clps711x_fb_ops = {
> .fb_blank = clps711x_fb_blank,
> };
>
> -static int clps711x_lcd_check_fb(struct lcd_device *lcddev, struct fb_info *fi)
> -{
> - struct clps711x_fb_info *cfb = dev_get_drvdata(&lcddev->dev);
> -
> - return (!fi || fi->par == cfb) ? 1 : 0;
> -}
> -
> static int clps711x_lcd_get_power(struct lcd_device *lcddev)
> {
> struct clps711x_fb_info *cfb = dev_get_drvdata(&lcddev->dev);
> @@ -198,7 +191,6 @@ static int clps711x_lcd_set_power(struct lcd_device *lcddev, int blank)
> }
>
> static const struct lcd_ops clps711x_lcd_ops = {
> - .check_fb = clps711x_lcd_check_fb,
> .get_power = clps711x_lcd_get_power,
> .set_power = clps711x_lcd_set_power,
> };
> @@ -325,16 +317,21 @@ static int clps711x_fb_probe(struct platform_device *pdev)
> if (ret)
> goto out_fb_dealloc_cmap;
>
> + lcd = devm_lcd_device_register(dev, "clps711x-lcd", dev, cfb,
> + &clps711x_lcd_ops);
> + if (IS_ERR(lcd)) {
> + ret = PTR_ERR(lcd);
> + goto out_fb_dealloc_cmap;
> + }
> +
> + info->lcd_dev = lcd;
> +
> ret = register_framebuffer(info);
> if (ret)
> goto out_fb_dealloc_cmap;
>
> - lcd = devm_lcd_device_register(dev, "clps711x-lcd", dev, cfb,
> - &clps711x_lcd_ops);
> - if (!IS_ERR(lcd))
> - return 0;
> + return 0;
>
> - ret = PTR_ERR(lcd);
> unregister_framebuffer(info);
>
> out_fb_dealloc_cmap:
Something is not right here. With the current patch you'll make the
unregister_framebuffer(info)
unreachable, because there is a return 0 in front.
Please check again.
--
Kees Bakker
^ permalink raw reply [flat|nested] 36+ messages in thread* Re: [PATCH v2 20/28] fbdev: clps711x-fb: Replace check_fb in favor of struct fb_info.lcd_dev
2024-10-03 18:33 ` Kees Bakker
@ 2024-10-04 14:01 ` Thomas Zimmermann
0 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-10-04 14:01 UTC (permalink / raw)
To: Kees Bakker, lee, daniel.thompson, jingoohan1, deller, bonbons,
jikos, bentiss, s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap
Hi
Am 03.10.24 um 20:33 schrieb Kees Bakker:
> Op 06-09-2024 om 09:52 schreef Thomas Zimmermann:
>> Store the lcd device in struct fb_info.lcd_dev. The lcd subsystem can
>> now detect the lcd's fbdev device from this field.
>>
>> This makes the implementation of check_fb in clps711x_lcd_ops obsolete.
>> Remove it.
>>
>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
>> Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
>> ---
>> drivers/video/fbdev/clps711x-fb.c | 23 ++++++++++-------------
>> 1 file changed, 10 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/video/fbdev/clps711x-fb.c
>> b/drivers/video/fbdev/clps711x-fb.c
>> index 6171a98a48fd..4340ea3b9660 100644
>> --- a/drivers/video/fbdev/clps711x-fb.c
>> +++ b/drivers/video/fbdev/clps711x-fb.c
>> @@ -162,13 +162,6 @@ static const struct fb_ops clps711x_fb_ops = {
>> .fb_blank = clps711x_fb_blank,
>> };
>> -static int clps711x_lcd_check_fb(struct lcd_device *lcddev, struct
>> fb_info *fi)
>> -{
>> - struct clps711x_fb_info *cfb = dev_get_drvdata(&lcddev->dev);
>> -
>> - return (!fi || fi->par == cfb) ? 1 : 0;
>> -}
>> -
>> static int clps711x_lcd_get_power(struct lcd_device *lcddev)
>> {
>> struct clps711x_fb_info *cfb = dev_get_drvdata(&lcddev->dev);
>> @@ -198,7 +191,6 @@ static int clps711x_lcd_set_power(struct
>> lcd_device *lcddev, int blank)
>> }
>> static const struct lcd_ops clps711x_lcd_ops = {
>> - .check_fb = clps711x_lcd_check_fb,
>> .get_power = clps711x_lcd_get_power,
>> .set_power = clps711x_lcd_set_power,
>> };
>> @@ -325,16 +317,21 @@ static int clps711x_fb_probe(struct
>> platform_device *pdev)
>> if (ret)
>> goto out_fb_dealloc_cmap;
>> + lcd = devm_lcd_device_register(dev, "clps711x-lcd", dev, cfb,
>> + &clps711x_lcd_ops);
>> + if (IS_ERR(lcd)) {
>> + ret = PTR_ERR(lcd);
>> + goto out_fb_dealloc_cmap;
>> + }
>> +
>> + info->lcd_dev = lcd;
>> +
>> ret = register_framebuffer(info);
>> if (ret)
>> goto out_fb_dealloc_cmap;
>> - lcd = devm_lcd_device_register(dev, "clps711x-lcd", dev, cfb,
>> - &clps711x_lcd_ops);
>> - if (!IS_ERR(lcd))
>> - return 0;
>> + return 0;
>> - ret = PTR_ERR(lcd);
>> unregister_framebuffer(info);
>> out_fb_dealloc_cmap:
> Something is not right here. With the current patch you'll make the
> unregister_framebuffer(info)
> unreachable, because there is a return 0 in front.
> Please check again.
See
https://lore.kernel.org/linux-fbdev/20241004014349.435006-1-qianqiang.liu@163.com/T/#u
This line used to be code for error rollback, but is now unnecessary AFAICT.
Best regards
Thomas
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v2 20/28] fbdev: clps711x-fb: Replace check_fb in favor of struct fb_info.lcd_dev
2024-09-06 7:52 ` [PATCH v2 20/28] fbdev: clps711x-fb: Replace check_fb in favor of struct fb_info.lcd_dev Thomas Zimmermann
2024-10-03 18:33 ` Kees Bakker
@ 2024-11-23 20:11 ` Andy Shevchenko
1 sibling, 0 replies; 36+ messages in thread
From: Andy Shevchenko @ 2024-11-23 20:11 UTC (permalink / raw)
To: Thomas Zimmermann
Cc: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam, dri-devel, linux-fbdev,
linux-omap
Fri, Sep 06, 2024 at 09:52:34AM +0200, Thomas Zimmermann kirjoitti:
> Store the lcd device in struct fb_info.lcd_dev. The lcd subsystem can
> now detect the lcd's fbdev device from this field.
>
> This makes the implementation of check_fb in clps711x_lcd_ops obsolete.
> Remove it.
...
> + lcd = devm_lcd_device_register(dev, "clps711x-lcd", dev, cfb,
> + &clps711x_lcd_ops);
> + if (IS_ERR(lcd)) {
> + ret = PTR_ERR(lcd);
> + goto out_fb_dealloc_cmap;
> + }
> +
> + info->lcd_dev = lcd;
> +
> ret = register_framebuffer(info);
> if (ret)
> goto out_fb_dealloc_cmap;
>
> - lcd = devm_lcd_device_register(dev, "clps711x-lcd", dev, cfb,
> - &clps711x_lcd_ops);
> - if (!IS_ERR(lcd))
> - return 0;
> + return 0;
>
> - ret = PTR_ERR(lcd);
> unregister_framebuffer(info);
Haven't you got a dead code warning here?
>
> out_fb_dealloc_cmap:
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v2 21/28] fbdev: clps711x-fb: Use lcd power constants
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (19 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 20/28] fbdev: clps711x-fb: Replace check_fb in favor of struct fb_info.lcd_dev Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 22/28] fbdev: imxfb: Replace check_fb in favor of struct fb_info.lcd_dev Thomas Zimmermann
` (8 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Replace FB_BLANK_ constants with their counterparts from the
lcd subsystem. The values are identical, so there's no change
in functionality.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/fbdev/clps711x-fb.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/video/fbdev/clps711x-fb.c b/drivers/video/fbdev/clps711x-fb.c
index 4340ea3b9660..9e3df1df5ac4 100644
--- a/drivers/video/fbdev/clps711x-fb.c
+++ b/drivers/video/fbdev/clps711x-fb.c
@@ -168,9 +168,9 @@ static int clps711x_lcd_get_power(struct lcd_device *lcddev)
if (!IS_ERR_OR_NULL(cfb->lcd_pwr))
if (!regulator_is_enabled(cfb->lcd_pwr))
- return FB_BLANK_NORMAL;
+ return LCD_POWER_REDUCED;
- return FB_BLANK_UNBLANK;
+ return LCD_POWER_ON;
}
static int clps711x_lcd_set_power(struct lcd_device *lcddev, int blank)
@@ -178,7 +178,7 @@ static int clps711x_lcd_set_power(struct lcd_device *lcddev, int blank)
struct clps711x_fb_info *cfb = dev_get_drvdata(&lcddev->dev);
if (!IS_ERR_OR_NULL(cfb->lcd_pwr)) {
- if (blank == FB_BLANK_UNBLANK) {
+ if (blank == LCD_POWER_ON) {
if (!regulator_is_enabled(cfb->lcd_pwr))
return regulator_enable(cfb->lcd_pwr);
} else {
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 22/28] fbdev: imxfb: Replace check_fb in favor of struct fb_info.lcd_dev
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (20 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 21/28] fbdev: clps711x-fb: Use lcd power constants Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 23/28] fbdev: imxfb: Use lcd power constants Thomas Zimmermann
` (7 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Store the lcd device in struct fb_info.lcd_dev. The lcd subsystem can
now detect the lcd's fbdev device from this field.
This makes the implementation of check_fb in imxfb_lcd_ops obsolete.
Remove it.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/fbdev/imxfb.c | 26 ++++++++------------------
1 file changed, 8 insertions(+), 18 deletions(-)
diff --git a/drivers/video/fbdev/imxfb.c b/drivers/video/fbdev/imxfb.c
index 4ebfe9b9df60..88c117f29f7f 100644
--- a/drivers/video/fbdev/imxfb.c
+++ b/drivers/video/fbdev/imxfb.c
@@ -782,16 +782,6 @@ static int imxfb_of_read_mode(struct device *dev, struct device_node *np,
return 0;
}
-static int imxfb_lcd_check_fb(struct lcd_device *lcddev, struct fb_info *fi)
-{
- struct imxfb_info *fbi = dev_get_drvdata(&lcddev->dev);
-
- if (!fi || fi->par == fbi)
- return 1;
-
- return 0;
-}
-
static int imxfb_lcd_get_contrast(struct lcd_device *lcddev)
{
struct imxfb_info *fbi = dev_get_drvdata(&lcddev->dev);
@@ -858,7 +848,6 @@ static int imxfb_lcd_set_power(struct lcd_device *lcddev, int power)
}
static const struct lcd_ops imxfb_lcd_ops = {
- .check_fb = imxfb_lcd_check_fb,
.get_contrast = imxfb_lcd_get_contrast,
.set_contrast = imxfb_lcd_set_contrast,
.get_power = imxfb_lcd_get_power,
@@ -1025,11 +1014,6 @@ static int imxfb_probe(struct platform_device *pdev)
goto failed_cmap;
imxfb_set_par(info);
- ret = register_framebuffer(info);
- if (ret < 0) {
- dev_err(&pdev->dev, "failed to register framebuffer\n");
- goto failed_register;
- }
fbi->lcd_pwr = devm_regulator_get(&pdev->dev, "lcd");
if (PTR_ERR(fbi->lcd_pwr) == -EPROBE_DEFER) {
@@ -1046,13 +1030,19 @@ static int imxfb_probe(struct platform_device *pdev)
lcd->props.max_contrast = 0xff;
+ info->lcd_dev = lcd;
+
+ ret = register_framebuffer(info);
+ if (ret < 0) {
+ dev_err(&pdev->dev, "failed to register framebuffer\n");
+ goto failed_lcd;
+ }
+
imxfb_enable_controller(fbi);
return 0;
failed_lcd:
- unregister_framebuffer(info);
-failed_register:
fb_dealloc_cmap(&info->cmap);
failed_cmap:
dma_free_wc(&pdev->dev, fbi->map_size, info->screen_buffer,
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 23/28] fbdev: imxfb: Use lcd power constants
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (21 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 22/28] fbdev: imxfb: Replace check_fb in favor of struct fb_info.lcd_dev Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 24/28] fbdev: omap: " Thomas Zimmermann
` (6 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Replace FB_BLANK_ constants with their counterparts from the
lcd subsystem. The values are identical, so there's no change
in functionality.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/fbdev/imxfb.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/video/fbdev/imxfb.c b/drivers/video/fbdev/imxfb.c
index 88c117f29f7f..97466e0c5877 100644
--- a/drivers/video/fbdev/imxfb.c
+++ b/drivers/video/fbdev/imxfb.c
@@ -814,9 +814,9 @@ static int imxfb_lcd_get_power(struct lcd_device *lcddev)
if (!IS_ERR(fbi->lcd_pwr) &&
!regulator_is_enabled(fbi->lcd_pwr))
- return FB_BLANK_POWERDOWN;
+ return LCD_POWER_OFF;
- return FB_BLANK_UNBLANK;
+ return LCD_POWER_ON;
}
static int imxfb_regulator_set(struct imxfb_info *fbi, int enable)
@@ -842,7 +842,7 @@ static int imxfb_lcd_set_power(struct lcd_device *lcddev, int power)
struct imxfb_info *fbi = dev_get_drvdata(&lcddev->dev);
if (!IS_ERR(fbi->lcd_pwr))
- return imxfb_regulator_set(fbi, power == FB_BLANK_UNBLANK);
+ return imxfb_regulator_set(fbi, power == LCD_POWER_ON);
return 0;
}
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 24/28] fbdev: omap: Use lcd power constants
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (22 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 23/28] fbdev: imxfb: Use lcd power constants Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 25/28] HID: picoLCD: Replace check_fb in favor of struct fb_info.lcd_dev Thomas Zimmermann
` (5 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Replace FB_BLANK_ constants with their counterparts from the
lcd subsystem. The values are identical, so there's no change
in functionality.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/fbdev/omap/lcd_ams_delta.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/video/fbdev/omap/lcd_ams_delta.c b/drivers/video/fbdev/omap/lcd_ams_delta.c
index 97e2b71b64d7..456e6e9e11a9 100644
--- a/drivers/video/fbdev/omap/lcd_ams_delta.c
+++ b/drivers/video/fbdev/omap/lcd_ams_delta.c
@@ -32,7 +32,7 @@ static struct gpio_desc *gpiod_ndisp;
static int ams_delta_lcd_set_power(struct lcd_device *dev, int power)
{
- if (power == FB_BLANK_UNBLANK) {
+ if (power == LCD_POWER_ON) {
if (!(ams_delta_lcd & AMS_DELTA_LCD_POWER)) {
omap_writeb(ams_delta_lcd & AMS_DELTA_MAX_CONTRAST,
OMAP_PWL_ENABLE);
@@ -63,9 +63,9 @@ static int ams_delta_lcd_set_contrast(struct lcd_device *dev, int value)
static int ams_delta_lcd_get_power(struct lcd_device *dev)
{
if (ams_delta_lcd & AMS_DELTA_LCD_POWER)
- return FB_BLANK_UNBLANK;
+ return LCD_POWER_ON;
else
- return FB_BLANK_POWERDOWN;
+ return LCD_POWER_OFF;
}
static int ams_delta_lcd_get_contrast(struct lcd_device *dev)
@@ -155,7 +155,7 @@ static int ams_delta_panel_probe(struct platform_device *pdev)
#endif
ams_delta_lcd_set_contrast(lcd_device, AMS_DELTA_DEFAULT_CONTRAST);
- ams_delta_lcd_set_power(lcd_device, FB_BLANK_UNBLANK);
+ ams_delta_lcd_set_power(lcd_device, LCD_POWER_ON);
omapfb_register_panel(&ams_delta_panel);
return 0;
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 25/28] HID: picoLCD: Replace check_fb in favor of struct fb_info.lcd_dev
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (23 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 24/28] fbdev: omap: " Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 26/28] backlight: lcd: Replace check_fb with controls_device Thomas Zimmermann
` (4 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann,
Jiri Kosina
Store the lcd device in struct fb_info.lcd_dev. The lcd subsystem can
now detect the lcd's fbdev device from this field.
This makes the implementation of check_fb in picolcd_lcdops obsolete.
Remove it.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
Acked-by: Jiri Kosina <jkosina@suse.com>
---
drivers/hid/hid-picolcd_fb.c | 4 ++++
drivers/hid/hid-picolcd_lcd.c | 6 ------
2 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/drivers/hid/hid-picolcd_fb.c b/drivers/hid/hid-picolcd_fb.c
index 83e3409d170c..22188acfcbb0 100644
--- a/drivers/hid/hid-picolcd_fb.c
+++ b/drivers/hid/hid-picolcd_fb.c
@@ -497,6 +497,10 @@ int picolcd_init_framebuffer(struct picolcd_data *data)
#endif
#endif
+#ifdef CONFIG_HID_PICOLCD_LCD
+ info->lcd_dev = data->lcd;
+#endif
+
fbdata = info->par;
spin_lock_init(&fbdata->lock);
fbdata->picolcd = data;
diff --git a/drivers/hid/hid-picolcd_lcd.c b/drivers/hid/hid-picolcd_lcd.c
index 061a33ba7b1d..318f19eac0e7 100644
--- a/drivers/hid/hid-picolcd_lcd.c
+++ b/drivers/hid/hid-picolcd_lcd.c
@@ -41,15 +41,9 @@ static int picolcd_set_contrast(struct lcd_device *ldev, int contrast)
return 0;
}
-static int picolcd_check_lcd_fb(struct lcd_device *ldev, struct fb_info *fb)
-{
- return fb && fb == picolcd_fbinfo((struct picolcd_data *)lcd_get_data(ldev));
-}
-
static const struct lcd_ops picolcd_lcdops = {
.get_contrast = picolcd_get_contrast,
.set_contrast = picolcd_set_contrast,
- .check_fb = picolcd_check_lcd_fb,
};
int picolcd_init_lcd(struct picolcd_data *data, struct hid_report *report)
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 26/28] backlight: lcd: Replace check_fb with controls_device
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (24 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 25/28] HID: picoLCD: Replace check_fb in favor of struct fb_info.lcd_dev Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 27/28] backlight: lcd: Remove struct fb_videomode from set_mode callback Thomas Zimmermann
` (3 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Rename check_fb in struct lcd_ops to controls_device. The callback
is now independent from fbdev's struct fb_info and tests if an lcd
device controls a hardware display device. The new naming and semantics
follow similar functionality for backlight devices.
v2:
- fix typos in commit description (Daniel)
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/lcd.c | 2 +-
drivers/video/backlight/platform_lcd.c | 11 +++++------
include/linux/lcd.h | 16 ++++++++++++----
3 files changed, 18 insertions(+), 11 deletions(-)
diff --git a/drivers/video/backlight/lcd.c b/drivers/video/backlight/lcd.c
index 713f7fb8b10a..dd175b446180 100644
--- a/drivers/video/backlight/lcd.c
+++ b/drivers/video/backlight/lcd.c
@@ -54,7 +54,7 @@ static int fb_notifier_callback(struct notifier_block *self,
if (!ld->ops)
return 0;
- if (ld->ops->check_fb && !ld->ops->check_fb(ld, info))
+ if (ld->ops->controls_device && !ld->ops->controls_device(ld, info->device))
return 0;
if (fb_lcd && fb_lcd != ld)
return 0;
diff --git a/drivers/video/backlight/platform_lcd.c b/drivers/video/backlight/platform_lcd.c
index 69a22d1a8a35..c9fe50f4d8ed 100644
--- a/drivers/video/backlight/platform_lcd.c
+++ b/drivers/video/backlight/platform_lcd.c
@@ -9,7 +9,6 @@
#include <linux/module.h>
#include <linux/platform_device.h>
-#include <linux/fb.h>
#include <linux/lcd.h>
#include <linux/slab.h>
@@ -50,17 +49,17 @@ static int platform_lcd_set_power(struct lcd_device *lcd, int power)
return 0;
}
-static int platform_lcd_match(struct lcd_device *lcd, struct fb_info *info)
+static bool platform_lcd_controls_device(struct lcd_device *lcd, struct device *display_device)
{
struct platform_lcd *plcd = to_our_lcd(lcd);
- return plcd->us->parent == info->device;
+ return plcd->us->parent == display_device;
}
static const struct lcd_ops platform_lcd_ops = {
- .get_power = platform_lcd_get_power,
- .set_power = platform_lcd_set_power,
- .check_fb = platform_lcd_match,
+ .get_power = platform_lcd_get_power,
+ .set_power = platform_lcd_set_power,
+ .controls_device = platform_lcd_controls_device,
};
static int platform_lcd_probe(struct platform_device *pdev)
diff --git a/include/linux/lcd.h b/include/linux/lcd.h
index dfcc54d327f5..8399b5ed48f2 100644
--- a/include/linux/lcd.h
+++ b/include/linux/lcd.h
@@ -35,7 +35,6 @@
*/
struct lcd_device;
-struct fb_info;
struct lcd_properties {
/* The maximum value for contrast (read-only) */
@@ -54,9 +53,18 @@ struct lcd_ops {
int (*set_contrast)(struct lcd_device *, int contrast);
/* Set LCD panel mode (resolutions ...) */
int (*set_mode)(struct lcd_device *, struct fb_videomode *);
- /* Check if given framebuffer device is the one LCD is bound to;
- return 0 if not, !=0 if it is. If NULL, lcd always matches the fb. */
- int (*check_fb)(struct lcd_device *, struct fb_info *);
+
+ /*
+ * Check if the LCD controls the given display device. This
+ * operation is optional and if not implemented it is assumed that
+ * the display is always the one controlled by the LCD.
+ *
+ * RETURNS:
+ *
+ * If display_dev is NULL or display_dev matches the device controlled by
+ * the LCD, return true. Otherwise return false.
+ */
+ bool (*controls_device)(struct lcd_device *lcd, struct device *display_device);
};
struct lcd_device {
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 27/28] backlight: lcd: Remove struct fb_videomode from set_mode callback
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (25 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 26/28] backlight: lcd: Replace check_fb with controls_device Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-06 7:52 ` [PATCH v2 28/28] backlight: lcd: Do not include <linux/fb.h> in lcd header Thomas Zimmermann
` (2 subsequent siblings)
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
Implementations of struct lcd_ops.set_mode only require the resolution
from struct fb_videomode. Pass the xres and yres fields, but remove the
dependency on the fbdev data structure.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
drivers/video/backlight/corgi_lcd.c | 5 ++---
drivers/video/backlight/lcd.c | 4 +++-
drivers/video/backlight/tdo24m.c | 5 ++---
include/linux/lcd.h | 7 +++++--
4 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/drivers/video/backlight/corgi_lcd.c b/drivers/video/backlight/corgi_lcd.c
index 35c3fd3281ca..69f49371ea35 100644
--- a/drivers/video/backlight/corgi_lcd.c
+++ b/drivers/video/backlight/corgi_lcd.c
@@ -17,7 +17,6 @@
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/gpio/consumer.h>
-#include <linux/fb.h>
#include <linux/lcd.h>
#include <linux/spi/spi.h>
#include <linux/spi/corgi_lcd.h>
@@ -332,12 +331,12 @@ static void corgi_lcd_power_off(struct corgi_lcd *lcd)
POWER1_VW_OFF | POWER1_GVSS_OFF | POWER1_VDD_OFF);
}
-static int corgi_lcd_set_mode(struct lcd_device *ld, struct fb_videomode *m)
+static int corgi_lcd_set_mode(struct lcd_device *ld, u32 xres, u32 yres)
{
struct corgi_lcd *lcd = lcd_get_data(ld);
int mode = CORGI_LCD_MODE_QVGA;
- if (m->xres == 640 || m->xres == 480)
+ if (xres == 640 || xres == 480)
mode = CORGI_LCD_MODE_VGA;
if (lcd->mode == mode)
diff --git a/drivers/video/backlight/lcd.c b/drivers/video/backlight/lcd.c
index dd175b446180..3267acf8dc5b 100644
--- a/drivers/video/backlight/lcd.c
+++ b/drivers/video/backlight/lcd.c
@@ -65,8 +65,10 @@ static int fb_notifier_callback(struct notifier_block *self,
if (ld->ops->set_power)
ld->ops->set_power(ld, power);
} else {
+ const struct fb_videomode *videomode = evdata->data;
+
if (ld->ops->set_mode)
- ld->ops->set_mode(ld, evdata->data);
+ ld->ops->set_mode(ld, videomode->xres, videomode->yres);
}
return 0;
diff --git a/drivers/video/backlight/tdo24m.c b/drivers/video/backlight/tdo24m.c
index a14a94114e9d..c04ee3d04d87 100644
--- a/drivers/video/backlight/tdo24m.c
+++ b/drivers/video/backlight/tdo24m.c
@@ -12,7 +12,6 @@
#include <linux/device.h>
#include <linux/spi/spi.h>
#include <linux/spi/tdo24m.h>
-#include <linux/fb.h>
#include <linux/lcd.h>
#include <linux/slab.h>
@@ -308,12 +307,12 @@ static int tdo24m_get_power(struct lcd_device *ld)
return lcd->power;
}
-static int tdo24m_set_mode(struct lcd_device *ld, struct fb_videomode *m)
+static int tdo24m_set_mode(struct lcd_device *ld, u32 xres, u32 yres)
{
struct tdo24m *lcd = lcd_get_data(ld);
int mode = MODE_QVGA;
- if (m->xres == 640 || m->xres == 480)
+ if (xres == 640 || xres == 480)
mode = MODE_VGA;
if (lcd->mode == mode)
diff --git a/include/linux/lcd.h b/include/linux/lcd.h
index 8399b5ed48f2..59a80b396a71 100644
--- a/include/linux/lcd.h
+++ b/include/linux/lcd.h
@@ -51,8 +51,11 @@ struct lcd_ops {
int (*get_contrast)(struct lcd_device *);
/* Set LCD panel contrast */
int (*set_contrast)(struct lcd_device *, int contrast);
- /* Set LCD panel mode (resolutions ...) */
- int (*set_mode)(struct lcd_device *, struct fb_videomode *);
+
+ /*
+ * Set LCD panel mode (resolutions ...)
+ */
+ int (*set_mode)(struct lcd_device *lcd, u32 xres, u32 yres);
/*
* Check if the LCD controls the given display device. This
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* [PATCH v2 28/28] backlight: lcd: Do not include <linux/fb.h> in lcd header
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (26 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 27/28] backlight: lcd: Remove struct fb_videomode from set_mode callback Thomas Zimmermann
@ 2024-09-06 7:52 ` Thomas Zimmermann
2024-09-30 15:50 ` [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Lee Jones
2024-10-01 8:55 ` [GIT PULL] Immutable branch between Backlight, HID and fbdev due for the v6.13 merge window Lee Jones
29 siblings, 0 replies; 36+ messages in thread
From: Thomas Zimmermann @ 2024-09-06 7:52 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam
Cc: dri-devel, linux-fbdev, linux-omap, Thomas Zimmermann
With the exception of fb_notifier_callback(), none of the lcd code
uses fbdev; especially not the lcd drivers. Remove the include
statement for <linux/fb.h> from the public lcd header.
v2:
- fix typos in commit description
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
---
include/linux/lcd.h | 1 -
1 file changed, 1 deletion(-)
diff --git a/include/linux/lcd.h b/include/linux/lcd.h
index 59a80b396a71..c3ccdff4519a 100644
--- a/include/linux/lcd.h
+++ b/include/linux/lcd.h
@@ -12,7 +12,6 @@
#include <linux/device.h>
#include <linux/mutex.h>
#include <linux/notifier.h>
-#include <linux/fb.h>
#define LCD_POWER_ON (0)
#define LCD_POWER_REDUCED (1) // deprecated; don't use in new code
--
2.46.0
^ permalink raw reply related [flat|nested] 36+ messages in thread* Re: [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (27 preceding siblings ...)
2024-09-06 7:52 ` [PATCH v2 28/28] backlight: lcd: Do not include <linux/fb.h> in lcd header Thomas Zimmermann
@ 2024-09-30 15:50 ` Lee Jones
2024-10-01 8:55 ` [GIT PULL] Immutable branch between Backlight, HID and fbdev due for the v6.13 merge window Lee Jones
29 siblings, 0 replies; 36+ messages in thread
From: Lee Jones @ 2024-09-30 15:50 UTC (permalink / raw)
To: lee, daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam, Thomas Zimmermann
Cc: dri-devel, linux-fbdev, linux-omap
On Fri, 06 Sep 2024 09:52:14 +0200, Thomas Zimmermann wrote:
> This series removes most dependencies on fbdev from the lcd subsystem
> and its drivers.
>
> Patches 1 to 3 rework the fbdev notifier, the fbdev's fb_info can
> now refer to a dedicated lcd device, and lcd defines constants for
> power states. These changes resemble similar changes to the backlight
> code.
>
> [...]
Applied, thanks!
[01/28] backlight: lcd: Rearrange code in fb_notifier_callback()
commit: d36870367c187daaa8a2c487d5ff1d57141eb039
[02/28] backlight: lcd: Test against struct fb_info.lcd_dev
commit: 26228256b796eb0145bdfb2ae34ec8c4c0ef1319
[03/28] backlight: lcd: Add LCD_POWER_ constants for power states
commit: 48ffe2074c2864ab64ee2004e7ebf3d6a6730fbf
[04/28] backlight: corgi_lcd: Use lcd power constants
commit: 20929e3691599f9cb3e3a0a7b81718c7a5b716b9
[05/28] backlight: hx8357: Use lcd power constants
commit: 7629628d610658f9cc210b9e969f34d07f2c85bd
[06/28] backlight: ili922x: Use lcd power constants
commit: 4364900b128801d62f9c42b2486bceda82f95b17
[07/28] backlight: ili9320: Use lcd power constants
commit: e844452282f7dba399b86bf9847294c226c8d466
[08/28] backlight: jornada720_lcd: Include <linux/io.h> for IOMEM() macro
commit: a412a18709fd40356a1768c7522db97cb05062d1
[09/28] backlight: jornada720_lcd: Use lcd power constants
commit: 992f5c43fcf26001c1f5a11146be3c4c1533bbcf
[10/28] backlight: l4f00242t03: Use lcd power constants
commit: 4be0de90b7f8816e4a310ec6b2183eee66d54290
[11/28] backlight: lms283gf05: Use lcd power constants
commit: 3b53bf14d4eef8293bf0f826f3345090f4557516
[12/28] backlight: lms501kf03: Remove unnecessary include of <linux/backlight.h>
commit: 2576e64bc8a59838e74ba081a3d05ea6ab30678c
[13/28] backlight: lms501kf03: Use lcd power constants
commit: 7c323fb26465ed294cd34bff77a68a40499148a7
[14/28] backlight: ltv350qv: Use lcd power constants
commit: a42a215d4d4d5ab32af4dee860e964764ed89f65
[15/28] backlight: otm3225a: Use lcd power constants
commit: 7c14e7a3fda5bd7323dcee60c69a47773f1fd6c6
[16/28] backlight: platform_lcd: Remove include statement for <linux/backlight.h>
commit: 516f3251429068a963d498a35441c0afaea6d1a4
[17/28] backlight: platform_lcd: Remove match_fb from struct plat_lcd_data
commit: c38a7db56d18b3ec07f3ad52c1e3f1f05c375011
[18/28] backlight: platform_lcd: Use lcd power constants
commit: 86c0826a7eebf476e46fea81ca3a85f355213a9a
[19/28] backlight: tdo24m: Use lcd power constants
commit: e5dfbbd39ee839ad3d6c1df7b3ec92800ceb4984
[20/28] fbdev: clps711x-fb: Replace check_fb in favor of struct fb_info.lcd_dev
commit: 36462ac193088db17823b592cb2c08fff6898b23
[21/28] fbdev: clps711x-fb: Use lcd power constants
commit: c11de820785fc2f1b58a764ac5529ab3670ce8c4
[22/28] fbdev: imxfb: Replace check_fb in favor of struct fb_info.lcd_dev
commit: 488d807101c208d057c429dd6f9ce00041eda094
[23/28] fbdev: imxfb: Use lcd power constants
commit: 32c913d82ec70af3103608996dbd32aa92004347
[24/28] fbdev: omap: Use lcd power constants
commit: 16d6110e5257bb3718c53186765fa04bc8d53000
[25/28] HID: picoLCD: Replace check_fb in favor of struct fb_info.lcd_dev
commit: 05deb1ce96cda46a1ddc82f82a4645ef14cbe680
[26/28] backlight: lcd: Replace check_fb with controls_device
commit: 43e1120deb3768c86aa3875c7073658e44a30ea5
[27/28] backlight: lcd: Remove struct fb_videomode from set_mode callback
commit: 02e224d096ef58fe59e96609de6018e133f33512
[28/28] backlight: lcd: Do not include <linux/fb.h> in lcd header
commit: 0d580d99749e759b62dc8e28f511310e9235da7a
--
Lee Jones [李琼斯]
^ permalink raw reply [flat|nested] 36+ messages in thread* [GIT PULL] Immutable branch between Backlight, HID and fbdev due for the v6.13 merge window
2024-09-06 7:52 [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Thomas Zimmermann
` (28 preceding siblings ...)
2024-09-30 15:50 ` [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies Lee Jones
@ 2024-10-01 8:55 ` Lee Jones
2024-10-21 15:51 ` Jiri Kosina
29 siblings, 1 reply; 36+ messages in thread
From: Lee Jones @ 2024-10-01 8:55 UTC (permalink / raw)
To: Thomas Zimmermann
Cc: daniel.thompson, jingoohan1, deller, bonbons, jikos, bentiss,
s.hauer, kernel, shawnguo, festevam, dri-devel, linux-fbdev,
linux-omap
Enjoy!
The following changes since commit 9852d85ec9d492ebef56dc5f229416c925758edc:
Linux 6.12-rc1 (2024-09-29 15:06:19 -0700)
are available in the Git repository at:
ssh://git@gitolite.kernel.org/pub/scm/linux/kernel/git/lee/backlight.git tags/ib-backlight-hid-fbdev-v6.13
for you to fetch changes up to 0d580d99749e759b62dc8e28f511310e9235da7a:
backlight: lcd: Do not include <linux/fb.h> in lcd header (2024-09-30 16:49:42 +0100)
----------------------------------------------------------------
Immutable branch between Backlight, HID and fbdev due for the v6.13 merge window
----------------------------------------------------------------
Thomas Zimmermann (28):
backlight: lcd: Rearrange code in fb_notifier_callback()
backlight: lcd: Test against struct fb_info.lcd_dev
backlight: lcd: Add LCD_POWER_ constants for power states
backlight: corgi_lcd: Use lcd power constants
backlight: hx8357: Use lcd power constants
backlight: ili922x: Use lcd power constants
backlight: ili9320: Use lcd power constants
backlight: jornada720_lcd: Include <linux/io.h> for IOMEM() macro
backlight: jornada720_lcd: Use lcd power constants
backlight: l4f00242t03: Use lcd power constants
backlight: lms283gf05: Use lcd power constants
backlight: lms501kf03: Remove unnecessary include of <linux/backlight.h>
backlight: lms501kf03: Use lcd power constants
backlight: ltv350qv: Use lcd power constants
backlight: otm3225a: Use lcd power constants
backlight: platform_lcd: Remove include statement for <linux/backlight.h>
backlight: platform_lcd: Remove match_fb from struct plat_lcd_data
backlight: platform_lcd: Use lcd power constants
backlight: tdo24m: Use lcd power constants
fbdev: clps711x-fb: Replace check_fb in favor of struct fb_info.lcd_dev
fbdev: clps711x-fb: Use lcd power constants
fbdev: imxfb: Replace check_fb in favor of struct fb_info.lcd_dev
fbdev: imxfb: Use lcd power constants
fbdev: omap: Use lcd power constants
HID: picoLCD: Replace check_fb in favor of struct fb_info.lcd_dev
backlight: lcd: Replace check_fb with controls_device
backlight: lcd: Remove struct fb_videomode from set_mode callback
backlight: lcd: Do not include <linux/fb.h> in lcd header
drivers/hid/hid-picolcd_fb.c | 4 +++
drivers/hid/hid-picolcd_lcd.c | 6 ----
drivers/video/backlight/corgi_lcd.c | 17 +++++------
drivers/video/backlight/hx8357.c | 2 +-
drivers/video/backlight/ili922x.c | 7 ++---
drivers/video/backlight/ili9320.c | 15 +++++-----
drivers/video/backlight/jornada720_lcd.c | 10 +++----
drivers/video/backlight/l4f00242t03.c | 32 ++++++++++----------
drivers/video/backlight/lcd.c | 50 ++++++++++++++++++++++++--------
drivers/video/backlight/lms283gf05.c | 2 +-
drivers/video/backlight/lms501kf03.c | 24 +++++++--------
drivers/video/backlight/ltv350qv.c | 15 +++++-----
drivers/video/backlight/otm3225a.c | 2 +-
drivers/video/backlight/platform_lcd.c | 20 +++++--------
drivers/video/backlight/tdo24m.c | 19 ++++++------
drivers/video/fbdev/clps711x-fb.c | 29 +++++++++---------
drivers/video/fbdev/imxfb.c | 32 +++++++-------------
drivers/video/fbdev/omap/lcd_ams_delta.c | 8 ++---
include/linux/fb.h | 13 +++++++++
include/linux/lcd.h | 29 +++++++++++++-----
include/video/platform_lcd.h | 3 --
21 files changed, 181 insertions(+), 158 deletions(-)
--
Lee Jones [李琼斯]
^ permalink raw reply [flat|nested] 36+ messages in thread* Re: [GIT PULL] Immutable branch between Backlight, HID and fbdev due for the v6.13 merge window
2024-10-01 8:55 ` [GIT PULL] Immutable branch between Backlight, HID and fbdev due for the v6.13 merge window Lee Jones
@ 2024-10-21 15:51 ` Jiri Kosina
2024-10-25 8:59 ` Lee Jones
0 siblings, 1 reply; 36+ messages in thread
From: Jiri Kosina @ 2024-10-21 15:51 UTC (permalink / raw)
To: Lee Jones
Cc: Thomas Zimmermann, daniel.thompson, jingoohan1, deller, bonbons,
bentiss, s.hauer, kernel, shawnguo, festevam, dri-devel,
linux-fbdev, linux-omap
On Tue, 1 Oct 2024, Lee Jones wrote:
> Enjoy!
>
> The following changes since commit 9852d85ec9d492ebef56dc5f229416c925758edc:
>
> Linux 6.12-rc1 (2024-09-29 15:06:19 -0700)
>
> are available in the Git repository at:
>
> ssh://git@gitolite.kernel.org/pub/scm/linux/kernel/git/lee/backlight.git tags/ib-backlight-hid-fbdev-v6.13
>
> for you to fetch changes up to 0d580d99749e759b62dc8e28f511310e9235da7a:
>
> backlight: lcd: Do not include <linux/fb.h> in lcd header (2024-09-30 16:49:42 +0100)
>
> ----------------------------------------------------------------
> Immutable branch between Backlight, HID and fbdev due for the v6.13 merge window
As picoLCD is the only affected driver in HID, I will be pulling this only
if there are any patches for picoLCD submitted for 6.13 (which is not yet
the case).
Thanks,
--
Jiri Kosina
SUSE Labs
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [GIT PULL] Immutable branch between Backlight, HID and fbdev due for the v6.13 merge window
2024-10-21 15:51 ` Jiri Kosina
@ 2024-10-25 8:59 ` Lee Jones
0 siblings, 0 replies; 36+ messages in thread
From: Lee Jones @ 2024-10-25 8:59 UTC (permalink / raw)
To: Jiri Kosina
Cc: Thomas Zimmermann, daniel.thompson, jingoohan1, deller, bonbons,
bentiss, s.hauer, kernel, shawnguo, festevam, dri-devel,
linux-fbdev, linux-omap
On Mon, 21 Oct 2024, Jiri Kosina wrote:
> On Tue, 1 Oct 2024, Lee Jones wrote:
>
> > Enjoy!
> >
> > The following changes since commit 9852d85ec9d492ebef56dc5f229416c925758edc:
> >
> > Linux 6.12-rc1 (2024-09-29 15:06:19 -0700)
> >
> > are available in the Git repository at:
> >
> > ssh://git@gitolite.kernel.org/pub/scm/linux/kernel/git/lee/backlight.git tags/ib-backlight-hid-fbdev-v6.13
> >
> > for you to fetch changes up to 0d580d99749e759b62dc8e28f511310e9235da7a:
> >
> > backlight: lcd: Do not include <linux/fb.h> in lcd header (2024-09-30 16:49:42 +0100)
> >
> > ----------------------------------------------------------------
> > Immutable branch between Backlight, HID and fbdev due for the v6.13 merge window
>
> As picoLCD is the only affected driver in HID, I will be pulling this only
> if there are any patches for picoLCD submitted for 6.13 (which is not yet
> the case).
Sounds like a plan. Thanks for letting me know.
--
Lee Jones [李琼斯]
^ permalink raw reply [flat|nested] 36+ messages in thread