Commit 02e224d0 authored by Thomas Zimmermann's avatar Thomas Zimmermann Committed by Lee Jones
Browse files

backlight: lcd: Remove struct fb_videomode from set_mode callback



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: default avatarThomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: default avatarDaniel Thompson <daniel.thompson@linaro.org>
Link: https://lore.kernel.org/r/20240906075439.98476-28-tzimmermann@suse.de


Signed-off-by: default avatarLee Jones <lee@kernel.org>
parent 43e1120d
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -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)
+3 −1
Original line number Diff line number Diff line
@@ -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;
+2 −3
Original line number Diff line number Diff line
@@ -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)
+5 −2
Original line number Diff line number Diff line
@@ -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