# SPDX-License-Identifier: GPL-2.0-only
# ALSA PowerMac drivers

menuconfig SND_PPC
	bool "PowerPC sound devices"
	depends on PPC
	default y
	help
	  Support for sound devices specific to PowerPC architectures.

if SND_PPC

config SND_POWERMAC
	tristate "PowerMac (AWACS, DACA, Burgundy, Tumbler, Keywest)"
	depends on I2C && INPUT && PPC_PMAC
	select SND_PCM
	select SND_VMASTER
	help
	  Say Y here to include support for the integrated sound device.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-powermac.

config SND_POWERMAC_AUTO_DRC
	bool "Toggle DRC automatically at headphone/line plug-in"
	depends on SND_POWERMAC
	default y
	help
	  Say Y here to enable the automatic toggle of DRC (dynamic
	  range compression) on Tumbler/Snapper.
	  If this feature is enabled, DRC is turned off when the
	  headphone/line jack is plugged, and turned on when unplugged.

	  Note that you can turn on/off DRC manually even without this
	  option.

config SND_PS3
	tristate "PS3 Audio support"
	depends on PS3_PS3AV
	select SND_PCM
	default m
	help
	  Say Y here to include support for audio on the PS3

	  To compile this driver as a module, choose M here: the module
	  will be called snd_ps3.

config SND_PS3_DEFAULT_START_DELAY
	int "Startup delay time in ms"
	depends on SND_PS3
	default "2000"

endif	# SND_PPC
