diff mbox series

[v2] simplefb: Enable boot time VESA graphic mode selection.

Message ID 20220218105138.5384-1-msuchanek@suse.de (mailing list archive)
State New, archived
Headers show
Series [v2] simplefb: Enable boot time VESA graphic mode selection. | expand

Commit Message

Michal Suchanek Feb. 18, 2022, 10:51 a.m. UTC
Since switch to simplefb/simpledrm VESA graphic modes are no longer
available with legacy BIOS.

The x86 realmode boot code enables the VESA graphic modes when option
FB_BOOT_VESA_SUPPORT is enabled.

To enable use of VESA modes with simpledrm in legacy BIOS boot mode drop
dependency of BOOT_VESA_SUPPORT on FB, also drop the FB_ prefix, and
select the option when simpledrm is built-in on x86.

Fixes: e3263ab389a7 ("x86: provide platform-devices for boot-framebuffers")
Signed-off-by: Michal Suchanek <msuchanek@suse.de>
---
v2: Select BOOT_VESA_SUPPORT from simplefb rather than simpledrm. The
simpledrm driver uses the firmware provided video modes only indirectly
through simplefb, and both can be enabled independently.
---
 arch/x86/boot/video-vesa.c  | 4 ++--
 drivers/firmware/Kconfig    | 1 +
 drivers/video/fbdev/Kconfig | 9 ++++-----
 3 files changed, 7 insertions(+), 7 deletions(-)

Comments

Thomas Zimmermann Feb. 18, 2022, 11:36 a.m. UTC | #1
Hi

Am 18.02.22 um 11:51 schrieb Michal Suchanek:
> Since switch to simplefb/simpledrm VESA graphic modes are no longer
> available with legacy BIOS.
> 
> The x86 realmode boot code enables the VESA graphic modes when option
> FB_BOOT_VESA_SUPPORT is enabled.
> 
> To enable use of VESA modes with simpledrm in legacy BIOS boot mode drop
> dependency of BOOT_VESA_SUPPORT on FB, also drop the FB_ prefix, and
> select the option when simpledrm is built-in on x86.
> 
> Fixes: e3263ab389a7 ("x86: provide platform-devices for boot-framebuffers")
> Signed-off-by: Michal Suchanek <msuchanek@suse.de>
> ---
> v2: Select BOOT_VESA_SUPPORT from simplefb rather than simpledrm. The
> simpledrm driver uses the firmware provided video modes only indirectly
> through simplefb, and both can be enabled independently.
> ---
>   arch/x86/boot/video-vesa.c  | 4 ++--
>   drivers/firmware/Kconfig    | 1 +
>   drivers/video/fbdev/Kconfig | 9 ++++-----
>   3 files changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/x86/boot/video-vesa.c b/arch/x86/boot/video-vesa.c
> index 7e185977a984..c2c6d35e3a43 100644
> --- a/arch/x86/boot/video-vesa.c
> +++ b/arch/x86/boot/video-vesa.c
> @@ -83,7 +83,7 @@ static int vesa_probe(void)
>   			   (vminfo.memory_layout == 4 ||
>   			    vminfo.memory_layout == 6) &&
>   			   vminfo.memory_planes == 1) {
> -#ifdef CONFIG_FB_BOOT_VESA_SUPPORT
> +#ifdef CONFIG_BOOT_VESA_SUPPORT
>   			/* Graphics mode, color, linear frame buffer
>   			   supported.  Only register the mode if
>   			   if framebuffer is configured, however,
> @@ -121,7 +121,7 @@ static int vesa_set_mode(struct mode_info *mode)
>   	if ((vminfo.mode_attr & 0x15) == 0x05) {
>   		/* It's a supported text mode */
>   		is_graphic = 0;
> -#ifdef CONFIG_FB_BOOT_VESA_SUPPORT
> +#ifdef CONFIG_BOOT_VESA_SUPPORT
>   	} else if ((vminfo.mode_attr & 0x99) == 0x99) {
>   		/* It's a graphics mode with linear frame buffer */
>   		is_graphic = 1;
> diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig
> index 75cb91055c17..8053c75b8645 100644
> --- a/drivers/firmware/Kconfig
> +++ b/drivers/firmware/Kconfig
> @@ -224,6 +224,7 @@ config SYSFB
>   config SYSFB_SIMPLEFB
>   	bool "Mark VGA/VBE/EFI FB as generic system framebuffer"
>   	depends on SYSFB
> +	select BOOT_VESA_SUPPORT if X86
>   	help
>   	  Firmwares often provide initial graphics framebuffers so the BIOS,
>   	  bootloader or kernel can show basic video-output during boot for
> diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig
> index 6ed5e608dd04..4f3be9b7a520 100644
> --- a/drivers/video/fbdev/Kconfig
> +++ b/drivers/video/fbdev/Kconfig
> @@ -66,9 +66,8 @@ config FB_DDC
>   	select I2C_ALGOBIT
>   	select I2C
>   
> -config FB_BOOT_VESA_SUPPORT
> +config BOOT_VESA_SUPPORT
>   	bool
> -	depends on FB
>   	help
>   	  If true, at least one selected framebuffer driver can take advantage
>   	  of VESA video modes set at an early boot stage via the vga= parameter.

This isn't an fb option any longer. Should we move this into 
arch/x86/Kconfig ?

Best regards
Thomas

> @@ -627,7 +626,7 @@ config FB_VESA
>   	select FB_CFB_FILLRECT
>   	select FB_CFB_COPYAREA
>   	select FB_CFB_IMAGEBLIT
> -	select FB_BOOT_VESA_SUPPORT
> +	select BOOT_VESA_SUPPORT
>   	help
>   	  This is the frame buffer device driver for generic VESA 2.0
>   	  compliant graphic cards. The older VESA 1.2 cards are not supported.
> @@ -1051,7 +1050,7 @@ config FB_INTEL
>   	select FB_CFB_FILLRECT
>   	select FB_CFB_COPYAREA
>   	select FB_CFB_IMAGEBLIT
> -	select FB_BOOT_VESA_SUPPORT if FB_INTEL = y
> +	select BOOT_VESA_SUPPORT if FB_INTEL = y
>   	depends on !DRM_I915
>   	help
>   	  This driver supports the on-board graphics built in to the Intel
> @@ -1378,7 +1377,7 @@ config FB_SIS
>   	select FB_CFB_FILLRECT
>   	select FB_CFB_COPYAREA
>   	select FB_CFB_IMAGEBLIT
> -	select FB_BOOT_VESA_SUPPORT if FB_SIS = y
> +	select BOOT_VESA_SUPPORT if FB_SIS = y
>   	select FB_SIS_300 if !FB_SIS_315
>   	help
>   	  This is the frame buffer device driver for the SiS 300, 315, 330
Michal Suchanek Feb. 18, 2022, 12:05 p.m. UTC | #2
On Fri, Feb 18, 2022 at 12:36:10PM +0100, Thomas Zimmermann wrote:
> Hi
> 
> Am 18.02.22 um 11:51 schrieb Michal Suchanek:
> > Since switch to simplefb/simpledrm VESA graphic modes are no longer
> > available with legacy BIOS.
> > 
> > The x86 realmode boot code enables the VESA graphic modes when option
> > FB_BOOT_VESA_SUPPORT is enabled.
> > 
> > To enable use of VESA modes with simpledrm in legacy BIOS boot mode drop
> > dependency of BOOT_VESA_SUPPORT on FB, also drop the FB_ prefix, and
> > select the option when simpledrm is built-in on x86.
> > 
> > Fixes: e3263ab389a7 ("x86: provide platform-devices for boot-framebuffers")
> > Signed-off-by: Michal Suchanek <msuchanek@suse.de>
> > ---
> > v2: Select BOOT_VESA_SUPPORT from simplefb rather than simpledrm. The
> > simpledrm driver uses the firmware provided video modes only indirectly
> > through simplefb, and both can be enabled independently.
> > ---
> >   arch/x86/boot/video-vesa.c  | 4 ++--
> >   drivers/firmware/Kconfig    | 1 +
> >   drivers/video/fbdev/Kconfig | 9 ++++-----
> >   3 files changed, 7 insertions(+), 7 deletions(-)
> > 
> > diff --git a/arch/x86/boot/video-vesa.c b/arch/x86/boot/video-vesa.c
> > index 7e185977a984..c2c6d35e3a43 100644
> > --- a/arch/x86/boot/video-vesa.c
> > +++ b/arch/x86/boot/video-vesa.c
> > @@ -83,7 +83,7 @@ static int vesa_probe(void)
> >   			   (vminfo.memory_layout == 4 ||
> >   			    vminfo.memory_layout == 6) &&
> >   			   vminfo.memory_planes == 1) {
> > -#ifdef CONFIG_FB_BOOT_VESA_SUPPORT
> > +#ifdef CONFIG_BOOT_VESA_SUPPORT
> >   			/* Graphics mode, color, linear frame buffer
> >   			   supported.  Only register the mode if
> >   			   if framebuffer is configured, however,
> > @@ -121,7 +121,7 @@ static int vesa_set_mode(struct mode_info *mode)
> >   	if ((vminfo.mode_attr & 0x15) == 0x05) {
> >   		/* It's a supported text mode */
> >   		is_graphic = 0;
> > -#ifdef CONFIG_FB_BOOT_VESA_SUPPORT
> > +#ifdef CONFIG_BOOT_VESA_SUPPORT
> >   	} else if ((vminfo.mode_attr & 0x99) == 0x99) {
> >   		/* It's a graphics mode with linear frame buffer */
> >   		is_graphic = 1;
> > diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig
> > index 75cb91055c17..8053c75b8645 100644
> > --- a/drivers/firmware/Kconfig
> > +++ b/drivers/firmware/Kconfig
> > @@ -224,6 +224,7 @@ config SYSFB
> >   config SYSFB_SIMPLEFB
> >   	bool "Mark VGA/VBE/EFI FB as generic system framebuffer"
> >   	depends on SYSFB
> > +	select BOOT_VESA_SUPPORT if X86
> >   	help
> >   	  Firmwares often provide initial graphics framebuffers so the BIOS,
> >   	  bootloader or kernel can show basic video-output during boot for
> > diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig
> > index 6ed5e608dd04..4f3be9b7a520 100644
> > --- a/drivers/video/fbdev/Kconfig
> > +++ b/drivers/video/fbdev/Kconfig
> > @@ -66,9 +66,8 @@ config FB_DDC
> >   	select I2C_ALGOBIT
> >   	select I2C
> > -config FB_BOOT_VESA_SUPPORT
> > +config BOOT_VESA_SUPPORT
> >   	bool
> > -	depends on FB
> >   	help
> >   	  If true, at least one selected framebuffer driver can take advantage
> >   	  of VESA video modes set at an early boot stage via the vga= parameter.
> 
> This isn't an fb option any longer. Should we move this into
> arch/x86/Kconfig ?

I tried moving it just a directory up but then found that it works even
where it is. It's specific to x86 boot code so moving to x86 may make
sense. Then the 'if X86' should not be needed, either.

Thanks

Michal

> 
> Best regards
> Thomas
> 
> > @@ -627,7 +626,7 @@ config FB_VESA
> >   	select FB_CFB_FILLRECT
> >   	select FB_CFB_COPYAREA
> >   	select FB_CFB_IMAGEBLIT
> > -	select FB_BOOT_VESA_SUPPORT
> > +	select BOOT_VESA_SUPPORT
> >   	help
> >   	  This is the frame buffer device driver for generic VESA 2.0
> >   	  compliant graphic cards. The older VESA 1.2 cards are not supported.
> > @@ -1051,7 +1050,7 @@ config FB_INTEL
> >   	select FB_CFB_FILLRECT
> >   	select FB_CFB_COPYAREA
> >   	select FB_CFB_IMAGEBLIT
> > -	select FB_BOOT_VESA_SUPPORT if FB_INTEL = y
> > +	select BOOT_VESA_SUPPORT if FB_INTEL = y
> >   	depends on !DRM_I915
> >   	help
> >   	  This driver supports the on-board graphics built in to the Intel
> > @@ -1378,7 +1377,7 @@ config FB_SIS
> >   	select FB_CFB_FILLRECT
> >   	select FB_CFB_COPYAREA
> >   	select FB_CFB_IMAGEBLIT
> > -	select FB_BOOT_VESA_SUPPORT if FB_SIS = y
> > +	select BOOT_VESA_SUPPORT if FB_SIS = y
> >   	select FB_SIS_300 if !FB_SIS_315
> >   	help
> >   	  This is the frame buffer device driver for the SiS 300, 315, 330
> 
> -- 
> Thomas Zimmermann
> Graphics Driver Developer
> SUSE Software Solutions Germany GmbH
> Maxfeldstr. 5, 90409 Nürnberg, Germany
> (HRB 36809, AG Nürnberg)
> Geschäftsführer: Ivo Totev
diff mbox series

Patch

diff --git a/arch/x86/boot/video-vesa.c b/arch/x86/boot/video-vesa.c
index 7e185977a984..c2c6d35e3a43 100644
--- a/arch/x86/boot/video-vesa.c
+++ b/arch/x86/boot/video-vesa.c
@@ -83,7 +83,7 @@  static int vesa_probe(void)
 			   (vminfo.memory_layout == 4 ||
 			    vminfo.memory_layout == 6) &&
 			   vminfo.memory_planes == 1) {
-#ifdef CONFIG_FB_BOOT_VESA_SUPPORT
+#ifdef CONFIG_BOOT_VESA_SUPPORT
 			/* Graphics mode, color, linear frame buffer
 			   supported.  Only register the mode if
 			   if framebuffer is configured, however,
@@ -121,7 +121,7 @@  static int vesa_set_mode(struct mode_info *mode)
 	if ((vminfo.mode_attr & 0x15) == 0x05) {
 		/* It's a supported text mode */
 		is_graphic = 0;
-#ifdef CONFIG_FB_BOOT_VESA_SUPPORT
+#ifdef CONFIG_BOOT_VESA_SUPPORT
 	} else if ((vminfo.mode_attr & 0x99) == 0x99) {
 		/* It's a graphics mode with linear frame buffer */
 		is_graphic = 1;
diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig
index 75cb91055c17..8053c75b8645 100644
--- a/drivers/firmware/Kconfig
+++ b/drivers/firmware/Kconfig
@@ -224,6 +224,7 @@  config SYSFB
 config SYSFB_SIMPLEFB
 	bool "Mark VGA/VBE/EFI FB as generic system framebuffer"
 	depends on SYSFB
+	select BOOT_VESA_SUPPORT if X86
 	help
 	  Firmwares often provide initial graphics framebuffers so the BIOS,
 	  bootloader or kernel can show basic video-output during boot for
diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig
index 6ed5e608dd04..4f3be9b7a520 100644
--- a/drivers/video/fbdev/Kconfig
+++ b/drivers/video/fbdev/Kconfig
@@ -66,9 +66,8 @@  config FB_DDC
 	select I2C_ALGOBIT
 	select I2C
 
-config FB_BOOT_VESA_SUPPORT
+config BOOT_VESA_SUPPORT
 	bool
-	depends on FB
 	help
 	  If true, at least one selected framebuffer driver can take advantage
 	  of VESA video modes set at an early boot stage via the vga= parameter.
@@ -627,7 +626,7 @@  config FB_VESA
 	select FB_CFB_FILLRECT
 	select FB_CFB_COPYAREA
 	select FB_CFB_IMAGEBLIT
-	select FB_BOOT_VESA_SUPPORT
+	select BOOT_VESA_SUPPORT
 	help
 	  This is the frame buffer device driver for generic VESA 2.0
 	  compliant graphic cards. The older VESA 1.2 cards are not supported.
@@ -1051,7 +1050,7 @@  config FB_INTEL
 	select FB_CFB_FILLRECT
 	select FB_CFB_COPYAREA
 	select FB_CFB_IMAGEBLIT
-	select FB_BOOT_VESA_SUPPORT if FB_INTEL = y
+	select BOOT_VESA_SUPPORT if FB_INTEL = y
 	depends on !DRM_I915
 	help
 	  This driver supports the on-board graphics built in to the Intel
@@ -1378,7 +1377,7 @@  config FB_SIS
 	select FB_CFB_FILLRECT
 	select FB_CFB_COPYAREA
 	select FB_CFB_IMAGEBLIT
-	select FB_BOOT_VESA_SUPPORT if FB_SIS = y
+	select BOOT_VESA_SUPPORT if FB_SIS = y
 	select FB_SIS_300 if !FB_SIS_315
 	help
 	  This is the frame buffer device driver for the SiS 300, 315, 330