if MMU

config ARCH_MAY_HAVE_PC_FDC
	bool
	depends on BROKEN && (Q40 || SUN3X)
	default y

menu "Platform devices"

config HEARTBEAT
	bool "Use power LED as a heartbeat" if AMIGA || APOLLO || ATARI || Q40
	default y if !AMIGA && !APOLLO && !ATARI && !Q40 && HP300
	help
	  Use the power-on LED on your machine as a load meter.  The exact
	  behavior is platform-dependent, but normally the flash frequency is
	  a hyperbolic function of the 5-minute load average.

# We have a dedicated heartbeat LED. :-)
config PROC_HARDWARE
	bool "/proc/hardware support"
	help
	  Say Y here to support the /proc/hardware file, which gives you
	  access to information about the machine you're running on,
	  including the model, CPU, MMU, clock speed, BogoMIPS rating,
	  and memory size.

config NATFEAT
	bool "ARAnyM emulator support"
	depends on ATARI
	help
	  This option enables support for ARAnyM native features, such as
	  access to a disk image as /dev/hda.

config NFBLOCK
	tristate "NatFeat block device support"
	depends on BLOCK && NATFEAT
	help
	  Say Y to include support for the ARAnyM NatFeat block device
	  which allows direct access to the hard drives without using
	  the hardware emulation.

config NFCON
	tristate "NatFeat console driver"
	depends on NATFEAT
	help
	  Say Y to include support for the ARAnyM NatFeat console driver
	  which allows the console output to be redirected to the stderr
	  output of ARAnyM.

config NFETH
	tristate "NatFeat Ethernet support"
	depends on ETHERNET && NATFEAT
	help
	  Say Y to include support for the ARAnyM NatFeat network device
	  which will emulate a regular ethernet device while presenting an
	  ethertap device to the host system.

endmenu

menu "Character devices"

config ATARI_DSP56K
	tristate "Atari DSP56k support (EXPERIMENTAL)"
	depends on ATARI && EXPERIMENTAL
	help
	  If you want to be able to use the DSP56001 in Falcons, say Y. This
	  driver is still experimental, and if you don't know what it is, or
	  if you don't have this processor, just say N.

	  To compile this driver as a module, choose M here.

config AMIGA_BUILTIN_SERIAL
	tristate "Amiga builtin serial support"
	depends on AMIGA
	help
	  If you want to use your Amiga's built-in serial port in Linux,
	  answer Y.

	  To compile this driver as a module, choose M here.

config HPDCA
	tristate "HP DCA serial support"
	depends on DIO && SERIAL_8250
	help
	  If you want to use the internal "DCA" serial ports on an HP300
	  machine, say Y here.

config HPAPCI
	tristate "HP APCI serial support"
	depends on HP300 && SERIAL_8250 && EXPERIMENTAL
	help
	  If you want to use the internal "APCI" serial ports on an HP400
	  machine, say Y here.

config SERIAL_CONSOLE
	bool "Support for serial port console"
	depends on AMIGA_BUILTIN_SERIAL=y
	---help---
	  If you say Y here, it will be possible to use a serial port as the
	  system console (the system console is the device which receives all
	  kernel messages and warnings and which allows logins in single user
	  mode). This could be useful if some terminal or printer is connected
	  to that serial port.

	  Even if you say Y here, the currently visible virtual console
	  (/dev/tty0) will still be used as the system console by default, but
	  you can alter that using a kernel command line option such as
	  "console=ttyS1". (Try "man bootparam" or see the documentation of
	  your boot loader about how to pass options to the kernel at boot
	  time.)

	  If you don't have a graphical console and you say Y here, the
	  kernel will automatically use the first serial line, /dev/ttyS0, as
	  system console.

	  If unsure, say N.

endmenu

endif
