linux-fbdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/28] backlight: lcd: Remove fbdev dependencies
@ 2024-09-06  7:52 Thomas Zimmermann
  2024-09-06  7:52 ` [PATCH v2 01/28] backlight: lcd: Rearrange code in fb_notifier_callback() Thomas Zimmermann
                   ` (29 more replies)
  0 siblings, 30 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 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.

Patches 4 to 19 update lcd drivers to the new interfaces and perform
minor cleanups during the process. Patches 20 to 24 update fbdev
drivers and patch 25 updates the picolcd driver from the hid subsystem.

Patches 25 to 28 finally clean up various lcd interfaces and files.

This patchset is part of a larger effort to implement the lcd code
without depending on fbdev. Similar patches have been sent out for
the backlight subsystem, such as in [1] and [2].

Hopefully this series can be merged at once through the lcd tree.

v2:
- use guard(mutex) (Daniel)
- fix typos in various commit descriptions (Daniel)

[1] https://patchwork.freedesktop.org/series/129782/
[2] https://patchwork.freedesktop.org/series/134718/

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(-)

-- 
2.46.0


^ permalink raw reply	[flat|nested] 36+ messages in thread

* [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

* [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: [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: [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

* 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

end of thread, other threads:[~2024-11-23 20:11 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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 ` [PATCH v2 03/28] backlight: lcd: Add LCD_POWER_ constants for power states Thomas Zimmermann
2024-09-06  7:52 ` [PATCH v2 04/28] backlight: corgi_lcd: Use lcd power constants Thomas Zimmermann
2024-09-06  7:52 ` [PATCH v2 05/28] backlight: hx8357: " Thomas Zimmermann
2024-09-06  7:52 ` [PATCH v2 06/28] backlight: ili922x: " Thomas Zimmermann
2024-09-06  7:52 ` [PATCH v2 07/28] backlight: ili9320: " Thomas Zimmermann
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 ` [PATCH v2 09/28] backlight: jornada720_lcd: Use lcd power constants Thomas Zimmermann
2024-09-06  7:52 ` [PATCH v2 10/28] backlight: l4f00242t03: " Thomas Zimmermann
2024-09-06  7:52 ` [PATCH v2 11/28] backlight: lms283gf05: " Thomas Zimmermann
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 ` [PATCH v2 13/28] backlight: lms501kf03: Use lcd power constants Thomas Zimmermann
2024-09-06  7:52 ` [PATCH v2 14/28] backlight: ltv350qv: " Thomas Zimmermann
2024-09-06  7:52 ` [PATCH v2 15/28] backlight: otm3225a: " Thomas Zimmermann
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 ` [PATCH v2 17/28] backlight: platform_lcd: Remove match_fb from struct plat_lcd_data Thomas Zimmermann
2024-09-06  7:52 ` [PATCH v2 18/28] backlight: platform_lcd: Use lcd power constants Thomas Zimmermann
2024-09-06  7:52 ` [PATCH v2 19/28] backlight: tdo24m: " 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
2024-10-03 18:33   ` Kees Bakker
2024-10-04 14:01     ` Thomas Zimmermann
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
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 ` [PATCH v2 23/28] fbdev: imxfb: Use lcd power constants Thomas Zimmermann
2024-09-06  7:52 ` [PATCH v2 24/28] fbdev: omap: " 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
2024-09-06  7:52 ` [PATCH v2 26/28] backlight: lcd: Replace check_fb with controls_device Thomas Zimmermann
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 ` [PATCH v2 28/28] backlight: lcd: Do not include <linux/fb.h> in lcd header 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
2024-10-21 15:51   ` Jiri Kosina
2024-10-25  8:59     ` Lee Jones

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).