# SPDX-License-Identifier: MIT

config DRM_RADEON
	tristate "ATI Radeon"
	depends on DRM && PCI && MMU
	depends on AGP || !AGP
	select FW_LOADER
	select DRM_DISPLAY_DP_HELPER
	select DRM_DISPLAY_HELPER
        select DRM_KMS_HELPER
	select DRM_SUBALLOC_HELPER
        select DRM_TTM
	select DRM_TTM_HELPER
	select FB_IOMEM_HELPERS if DRM_FBDEV_EMULATION
	select SND_HDA_COMPONENT if SND_HDA_CORE
	select POWER_SUPPLY
	select HWMON
	select BACKLIGHT_CLASS_DEVICE
	select INTERVAL_TREE
	select I2C
	select I2C_ALGOBIT
	# radeon depends on ACPI_VIDEO when ACPI is enabled, for select to work
	# ACPI_VIDEO's dependencies must also be selected.
	select INPUT if ACPI
	select ACPI_VIDEO if ACPI
	# On x86 ACPI_VIDEO also needs ACPI_WMI
	select X86_PLATFORM_DEVICES if ACPI && X86
	select ACPI_WMI if ACPI && X86
	help
	  Choose this option if you have an ATI Radeon graphics card.  There
	  are both PCI and AGP versions.  You don't need to choose this to
	  run the Radeon in plain VGA mode.

	  If M is selected, the module will be called radeon.

config DRM_RADEON_USERPTR
	bool "Always enable userptr support"
	depends on DRM_RADEON
	select MMU_NOTIFIER
	help
	  This option selects CONFIG_MMU_NOTIFIER if it isn't already
	  selected to enabled full userptr support.
