# SPDX-License-Identifier: GPL-2.0-only

menu "Drivers for system framebuffers"
	depends on DRM

config DRM_SYSFB_HELPER
	tristate
	depends on DRM

config DRM_COREBOOTDRM
	tristate "Coreboot framebuffer driver"
	depends on DRM && MMU
	depends on GOOGLE_FRAMEBUFFER_COREBOOT
	select APERTURE_HELPERS
	select DRM_CLIENT_SELECTION
	select DRM_GEM_SHMEM_HELPER
	select DRM_KMS_HELPER
	select DRM_SYSFB_HELPER
	help
	  DRM driver for coreboot-provided framebuffers.

	  This driver assumes that the display hardware has been initialized
	  by coreboot firmware before the kernel boots. Scanout buffer, size,
	  and display format must be provided via coreboot framebuffer device.

config DRM_EFIDRM
	tristate "EFI framebuffer driver"
	depends on DRM && MMU && EFI && (!SYSFB_SIMPLEFB || COMPILE_TEST)
	select APERTURE_HELPERS
	select DRM_CLIENT_SELECTION
	select DRM_GEM_SHMEM_HELPER
	select DRM_KMS_HELPER
	select DRM_SYSFB_HELPER
	select SYSFB
	help
	  DRM driver for EFI framebuffers.

	  This driver assumes that the display hardware has been initialized
	  by the firmware or bootloader before the kernel boots. Scanout
	  buffer, size, and display format must be provided via EFI interfaces.

config DRM_OFDRM
	tristate "Open Firmware display driver"
	depends on DRM && MMU && OF && (PPC || COMPILE_TEST)
	select APERTURE_HELPERS
	select DRM_CLIENT_SELECTION
	select DRM_GEM_SHMEM_HELPER
	select DRM_KMS_HELPER
	select DRM_SYSFB_HELPER
	help
	  DRM driver for Open Firmware framebuffers.

	  This driver assumes that the display hardware has been initialized
	  by the Open Firmware before the kernel boots. Scanout buffer, size,
	  and display format must be provided via device tree.

config DRM_SIMPLEDRM
	tristate "Simple framebuffer driver"
	depends on DRM && MMU
	select APERTURE_HELPERS
	select DRM_CLIENT_SELECTION
	select DRM_GEM_SHMEM_HELPER
	select DRM_KMS_HELPER
	select DRM_SYSFB_HELPER
	help
	  DRM driver for simple platform-provided framebuffers.

	  This driver assumes that the display hardware has been initialized
	  by the firmware or bootloader before the kernel boots. Scanout
	  buffer, size, and display format must be provided via device tree's
	  simple-framebuffer node.

config DRM_VESADRM
	tristate "VESA framebuffer driver"
	depends on DRM && MMU && X86 && (!SYSFB_SIMPLEFB || COMPILE_TEST)
	select APERTURE_HELPERS
	select DRM_CLIENT_SELECTION
	select DRM_GEM_SHMEM_HELPER
	select DRM_KMS_HELPER
	select DRM_SYSFB_HELPER
	select SYSFB
	help
	  DRM driver for VESA framebuffers.

	  This driver assumes that the display hardware has been initialized
	  by the firmware or bootloader before the kernel boots. Scanout
	  buffer, size, and display format must be provided via VBE interfaces.

endmenu
