backlight: lcd: Remove struct fb_videomode from set_mode callback
authorThomas Zimmermann <tzimmermann@suse.de>
Fri, 6 Sep 2024 07:52:41 +0000 (09:52 +0200)
committerLee Jones <lee@kernel.org>
Mon, 30 Sep 2024 15:49:42 +0000 (16:49 +0100)
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>
Link: https://lore.kernel.org/r/20240906075439.98476-28-tzimmermann@suse.de
Signed-off-by: Lee Jones <lee@kernel.org>
drivers/video/backlight/corgi_lcd.c
drivers/video/backlight/lcd.c
drivers/video/backlight/tdo24m.c
include/linux/lcd.h

index 35c3fd3..69f4937 100644 (file)
@@ -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)
index dd175b4..3267acf 100644 (file)
@@ -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;
index a14a941..c04ee3d 100644 (file)
@@ -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)
index 8399b5e..59a80b3 100644 (file)
@@ -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