Message ID | 20231129155218.3475-5-tzimmermann@suse.de |
---|---|
State | New |
Headers | show |
Series | fbdev: Remove global screen_info in efifb/vesafb | expand |
Thomas Zimmermann <tzimmermann@suse.de> writes: > Use the screen_info instance from the device instead of dereferencing > the global screen_info state. Decouples the driver from per-architecture > code. Duplicated the screen_info data, so that vesafb can modify it at > will. > > Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> > --- Same comments that in patch #2. But regardless: Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
diff --git a/drivers/video/fbdev/vesafb.c b/drivers/video/fbdev/vesafb.c index ea89accbec385..8912b16db75a1 100644 --- a/drivers/video/fbdev/vesafb.c +++ b/drivers/video/fbdev/vesafb.c @@ -243,7 +243,7 @@ static int vesafb_setup(char *options) static int vesafb_probe(struct platform_device *dev) { - struct screen_info *si = &screen_info; + struct screen_info *si; struct fb_info *info; struct vesafb_par *par; int i, err; @@ -252,6 +252,13 @@ static int vesafb_probe(struct platform_device *dev) unsigned int size_total; char *option = NULL; + si = dev_get_platdata(&dev->dev); + if (!si) + return -ENODEV; + si = devm_kmemdup(&dev->dev, si, sizeof(*si), GFP_KERNEL); + if (!si) + return -ENOMEM; + /* ignore error return of fb_get_options */ fb_get_options("vesafb", &option); vesafb_setup(option);
Use the screen_info instance from the device instead of dereferencing the global screen_info state. Decouples the driver from per-architecture code. Duplicated the screen_info data, so that vesafb can modify it at will. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> --- drivers/video/fbdev/vesafb.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)