Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

fbdev: imxfb: Replace check_fb in favor of struct fb_info.lcd_dev

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>
Link: https://lore.kernel.org/r/20240906075439.98476-23-tzimmermann@suse.de
Signed-off-by: Lee Jones <lee@kernel.org>

authored by

Thomas Zimmermann and committed by
Lee Jones
488d8071 c11de820

+8 -18
+8 -18
drivers/video/fbdev/imxfb.c
··· 782 782 return 0; 783 783 } 784 784 785 - static int imxfb_lcd_check_fb(struct lcd_device *lcddev, struct fb_info *fi) 786 - { 787 - struct imxfb_info *fbi = dev_get_drvdata(&lcddev->dev); 788 - 789 - if (!fi || fi->par == fbi) 790 - return 1; 791 - 792 - return 0; 793 - } 794 - 795 785 static int imxfb_lcd_get_contrast(struct lcd_device *lcddev) 796 786 { 797 787 struct imxfb_info *fbi = dev_get_drvdata(&lcddev->dev); ··· 848 858 } 849 859 850 860 static const struct lcd_ops imxfb_lcd_ops = { 851 - .check_fb = imxfb_lcd_check_fb, 852 861 .get_contrast = imxfb_lcd_get_contrast, 853 862 .set_contrast = imxfb_lcd_set_contrast, 854 863 .get_power = imxfb_lcd_get_power, ··· 1014 1025 goto failed_cmap; 1015 1026 1016 1027 imxfb_set_par(info); 1017 - ret = register_framebuffer(info); 1018 - if (ret < 0) { 1019 - dev_err(&pdev->dev, "failed to register framebuffer\n"); 1020 - goto failed_register; 1021 - } 1022 1028 1023 1029 fbi->lcd_pwr = devm_regulator_get(&pdev->dev, "lcd"); 1024 1030 if (PTR_ERR(fbi->lcd_pwr) == -EPROBE_DEFER) { ··· 1030 1046 1031 1047 lcd->props.max_contrast = 0xff; 1032 1048 1049 + info->lcd_dev = lcd; 1050 + 1051 + ret = register_framebuffer(info); 1052 + if (ret < 0) { 1053 + dev_err(&pdev->dev, "failed to register framebuffer\n"); 1054 + goto failed_lcd; 1055 + } 1056 + 1033 1057 imxfb_enable_controller(fbi); 1034 1058 1035 1059 return 0; 1036 1060 1037 1061 failed_lcd: 1038 - unregister_framebuffer(info); 1039 - failed_register: 1040 1062 fb_dealloc_cmap(&info->cmap); 1041 1063 failed_cmap: 1042 1064 dma_free_wc(&pdev->dev, fbi->map_size, info->screen_buffer,