#
# CDROM driver configuration
#

menu "Old CD-ROM drivers (not SCSI, not IDE)"
	depends on ISA

config CD_NO_IDESCSI
	bool "Support non-SCSI/IDE/ATAPI CDROM drives"
	---help---
	  If you have a CD-ROM drive that is neither SCSI nor IDE/ATAPI, say Y
	  here, otherwise N. Read the CD-ROM-HOWTO, available from
	  <http://www.tldp.org/docs.html#howto>.

	  Note that the answer to this question doesn't directly affect the
	  kernel: saying N will just cause the configurator to skip all
	  the questions about these CD-ROM drives. If you are unsure what you
	  have, say Y and find out whether you have one of the following
	  drives.

	  For each of these drivers, a <file:Documentation/cdrom/{driver_name}>
	  exists. Especially in cases where you do not know exactly which kind
	  of drive you have you should read there. Most of these drivers use a
	  file drivers/cdrom/{driver_name}.h where you can define your
	  interface parameters and switch some internal goodies.

	  To compile these CD-ROM drivers as a module, choose M instead of Y.

	  If you want to use any of these CD-ROM drivers, you also have to
	  answer Y or M to "ISO 9660 CD-ROM file system support" below (this
	  answer will get "defaulted" for you if you enable any of the Linux
	  CD-ROM drivers).

config AZTCD
	tristate "Aztech/Orchid/Okano/Wearnes/TXC/CyDROM  CDROM support"
	depends on CD_NO_IDESCSI
	---help---
	  This is your driver if you have an Aztech CDA268-01A, Orchid
	  CD-3110, Okano or Wearnes CDD110, Conrad TXC, or CyCD-ROM CR520 or
	  CR540 CD-ROM drive.  This driver -- just like all these CD-ROM
	  drivers -- is NOT for CD-ROM drives with IDE/ATAPI interfaces, such
	  as Aztech CDA269-031SE. Please read the file
	  <file:Documentation/cdrom/aztcd>.

	  If you say Y here, you should also say Y or M to "ISO 9660 CD-ROM
	  file system support" below, because that's the file system used on
	  CD-ROMs.

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

config GSCD
	tristate "Goldstar R420 CDROM support"
	depends on CD_NO_IDESCSI
	---help---
	  If this is your CD-ROM drive, say Y here.  As described in the file
	  <file:Documentation/cdrom/gscd>, you might have to change a setting
	  in the file <file:drivers/cdrom/gscd.h> before compiling the
	  kernel.  Please read the file <file:Documentation/cdrom/gscd>.

	  If you say Y here, you should also say Y or M to "ISO 9660 CD-ROM
	  file system support" below, because that's the file system used on
	  CD-ROMs.

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

config SBPCD
	tristate "Matsushita/Panasonic/Creative, Longshine, TEAC CDROM support"
	depends on CD_NO_IDESCSI && BROKEN_ON_SMP
	---help---
	  This driver supports most of the drives which use the Panasonic or
	  Sound Blaster interface.  Please read the file
	  <file:Documentation/cdrom/sbpcd>.

	  The Matsushita CR-521, CR-522, CR-523, CR-562, CR-563 drives
	  (sometimes labeled "Creative"), the Creative Labs CD200, the
	  Longshine LCS-7260, the "IBM External ISA CD-ROM" (in fact a CR-56x
	  model), the TEAC CD-55A fall under this category.  Some other
	  "electrically compatible" drives (Vertos, Genoa, some Funai models)
	  are currently not supported; for the Sanyo H94A drive currently a
	  separate driver (asked later) is responsible.  Most drives have a
	  uniquely shaped faceplate, with a caddyless motorized drawer, but
	  without external brand markings.  The older CR-52x drives have a
	  caddy and manual loading/eject, but still no external markings.  The
	  driver is able to do an extended auto-probing for interface
	  addresses and drive types; this can help to find facts in cases you
	  are not sure, but can consume some time during the boot process if
	  none of the supported drives gets found.  Once your drive got found,
	  you should enter the reported parameters into
	  <file:drivers/cdrom/sbpcd.h> and set "DISTRIBUTION 0" there.

	  This driver can support up to four CD-ROM controller cards, and each
	  card can support up to four CD-ROM drives; if you say Y here, you
	  will be asked how many controller cards you have.  If compiled as a
	  module, only one controller card (but with up to four drives) is
	  usable.

	  If you say Y here, you should also say Y or M to "ISO 9660 CD-ROM
	  file system support" below, because that's the file system used on
	  CD-ROMs.

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

config MCDX
	tristate "Mitsumi CDROM support"
	depends on CD_NO_IDESCSI
	---help---
	  Use this driver if you want to be able to use your Mitsumi LU-005,
	  FX-001 or FX-001D CD-ROM drive.

	  Please read the file <file:Documentation/cdrom/mcdx>.

	  If you say Y here, you should also say Y or M to "ISO 9660 CD-ROM
	  file system support" below, because that's the file system used on
	  CD-ROMs.

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

config OPTCD
	tristate "Optics Storage DOLPHIN 8000AT CDROM support"
	depends on CD_NO_IDESCSI
	---help---
	  This is the driver for the 'DOLPHIN' drive with a 34-pin Sony
	  compatible interface. It also works with the Lasermate CR328A. If
	  you have one of those, say Y. This driver does not work for the
	  Optics Storage 8001 drive; use the IDE-ATAPI CD-ROM driver for that
	  one. Please read the file <file:Documentation/cdrom/optcd>.

	  If you say Y here, you should also say Y or M to "ISO 9660 CD-ROM
	  file system support" below, because that's the file system used on
	  CD-ROMs.

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

config CM206
	tristate "Philips/LMS CM206 CDROM support"
	depends on CD_NO_IDESCSI && BROKEN_ON_SMP
	---help---
	  If you have a Philips/LMS CD-ROM drive cm206 in combination with a
	  cm260 host adapter card, say Y here. Please also read the file
	  <file:Documentation/cdrom/cm206>.

	  If you say Y here, you should also say Y or M to "ISO 9660 CD-ROM
	  file system support" below, because that's the file system used on
	  CD-ROMs.

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

config SJCD
	tristate "Sanyo CDR-H94A CDROM support"
	depends on CD_NO_IDESCSI
	help
	  If this is your CD-ROM drive, say Y here and read the file
	  <file:Documentation/cdrom/sjcd>. You should then also say Y or M to
	  "ISO 9660 CD-ROM file system support" below, because that's the
	  file system used on CD-ROMs.

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

config ISP16_CDI
	tristate "ISP16/MAD16/Mozart soft configurable cdrom interface support"
	depends on CD_NO_IDESCSI
	---help---
	  These are sound cards with built-in cdrom interfaces using the OPTi
	  82C928 or 82C929 chips. Say Y here to have them detected and
	  possibly configured at boot time. In addition, You'll have to say Y
	  to a driver for the particular cdrom drive you have attached to the
	  card. Read <file:Documentation/cdrom/isp16> for details.

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

config CDU31A
	tristate "Sony CDU31A/CDU33A CDROM support"
	depends on CD_NO_IDESCSI && BROKEN_ON_SMP
	---help---
	  These CD-ROM drives have a spring-pop-out caddyless drawer, and a
	  rectangular green LED centered beneath it.  NOTE: these CD-ROM
	  drives will not be auto detected by the kernel at boot time; you
	  have to provide the interface address as an option to the kernel at
	  boot time as described in <file:Documentation/cdrom/cdu31a> or fill
	  in your parameters into <file:drivers/cdrom/cdu31a.c>.  Try "man
	  bootparam" or see the documentation of your boot loader (lilo or
	  loadlin) about how to pass options to the kernel.

	  If you say Y here, you should also say Y or M to "ISO 9660 CD-ROM
	  file system support" below, because that's the file system used on
	  CD-ROMs.

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

config CDU535
	tristate "Sony CDU535 CDROM support"
	depends on CD_NO_IDESCSI
	---help---
	  This is the driver for the older Sony CDU-535 and CDU-531 CD-ROM
	  drives. Please read the file <file:Documentation/cdrom/sonycd535>.

	  If you say Y here, you should also say Y or M to "ISO 9660 CD-ROM
	  file system support" below, because that's the file system used on
	  CD-ROMs.

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

endmenu
