
menu "Macintosh device drivers"
	depends on PPC || MAC

config ADB
	bool "Apple Desktop Bus (ADB) support"
	depends on MAC || PPC_PMAC
	help
	  Apple Desktop Bus (ADB) support is for support of devices which
	  are connected to an ADB port.  ADB devices tend to have 4 pins.
	  If you have an Apple Macintosh prior to the iMac, an iBook or
	  PowerBook, or a "Blue and White G3", you probably want to say Y
	  here.  Otherwise say N.

config ADB_MACII
	bool "Include Mac II ADB driver"
	depends on ADB && MAC
	help
	  Say Y here if want your kernel to support Macintosh systems that use
	  the Mac II style ADB.  This includes the II, IIx, IIcx, SE/30, IIci,
	  Quadra 610, Quadra 650, Quadra 700, Quadra 800, Centris 610 and
	  Centris 650.

config ADB_MACIISI
	bool "Include Mac IIsi ADB driver"
	depends on ADB && MAC
	help
	  Say Y here if want your kernel to support Macintosh systems that use
	  the Mac IIsi style ADB.  This includes the IIsi, IIvi, IIvx, Classic
	  II, LC, LC II, LC III, Performa 460, and the Performa 600.

config ADB_IOP
	bool "Include IOP (IIfx/Quadra 9x0) ADB driver"
	depends on ADB && MAC
	help
	  The I/O Processor (IOP) is an Apple custom IC designed to provide
	  intelligent support for I/O controllers.  It is described at
	  <http://www.angelfire.com/ca2/dev68k/iopdesc.html> to enable direct
	  support for it, say 'Y' here.

config ADB_PMU68K
	bool "Include PMU (Powerbook) ADB driver"
	depends on ADB && MAC
	help
	  Say Y here if want your kernel to support the m68k based Powerbooks.
	  This includes the PowerBook 140, PowerBook 145, PowerBook 150,
	  PowerBook 160, PowerBook 165, PowerBook 165c, PowerBook 170,
	  PowerBook 180, PowerBook, 180c, PowerBook 190cs, PowerBook 520,
	  PowerBook Duo 210, PowerBook Duo 230, PowerBook Duo 250,
	  PowerBook Duo 270c, PowerBook Duo 280 and PowerBook Duo 280c.

# we want to change this to something like CONFIG_SYSCTRL_CUDA/PMU
config ADB_CUDA
	bool "Support for CUDA based Macs and PowerMacs"
	depends on (ADB || PPC_PMAC) && !PPC_PMAC64
	help
	  This provides support for CUDA based Macintosh and Power Macintosh
	  systems.  This includes many m68k based Macs (Color Classic, Mac TV,
	  Performa 475, Performa 520, Performa 550, Performa 575,
	  Performa 588, Quadra 605, Quadra 630, Quadra/Centris 660AV, and
	  Quadra 840AV), most OldWorld PowerMacs, the first generation iMacs,
	  the Blue&White G3 and the "Yikes" G4 (PCI Graphics).  All later
	  models should use CONFIG_ADB_PMU instead.  It is safe to say Y here
	  even if your machine doesn't have a CUDA.

	  If unsure say Y.

config ADB_PMU
	bool "Support for PMU  based PowerMacs"
	depends on PPC_PMAC
	help
	  On PowerBooks, iBooks, and recent iMacs and Power Macintoshes, the
	  PMU is an embedded microprocessor whose primary function is to
	  control system power, and battery charging on the portable models.
	  The PMU also controls the ADB (Apple Desktop Bus) which connects to
	  the keyboard and mouse on some machines, as well as the non-volatile
	  RAM and the RTC (real time clock) chip.  Say Y to enable support for
	  this device; you should do so if your machine is one of those
	  mentioned above.

config PMAC_SMU
	bool "Support for SMU  based PowerMacs"
	depends on PPC_PMAC64
	help
	  This option adds support for the newer G5 iMacs and PowerMacs based
	  on the "SMU" system control chip which replaces the old PMU.
	  If you don't know, say Y.

config PMAC_PBOOK
	bool "Power management support for PowerBooks"
	depends on ADB_PMU
	---help---
	  This provides support for putting a PowerBook to sleep; it also
	  enables media bay support.  Power management works on the
	  PB2400/3400/3500, Wallstreet, Lombard, and Bronze PowerBook G3 and
	  the Titanium Powerbook G4, as well as the iBooks.  You should get
	  the power management daemon, pmud, to make it work and you must have
	  the /dev/pmu device (see the pmud README).

	  Get pmud from <ftp://ftp.samba.org/pub/ppclinux/pmud/>.

	  If you have a PowerBook, you should say Y here.

	  You may also want to compile the dma sound driver as a module and
	  have it autoloaded. The act of removing the module shuts down the
	  sound hardware for more power savings.

config PM
	bool
	depends on PPC_PMAC && ADB_PMU && PMAC_PBOOK
	default y

config PMAC_APM_EMU
	tristate "APM emulation"
	depends on PMAC_PBOOK

# made a separate option since backlight may end up beeing used
# on non-powerbook machines (but only on PMU based ones AFAIK)
config PMAC_BACKLIGHT
	bool "Backlight control for LCD screens"
	depends on ADB_PMU
	help
	  Say Y here to build in code to manage the LCD backlight on a
	  Macintosh PowerBook.  With this code, the backlight will be turned
	  on and off appropriately on power-management and lid-open/lid-closed
	  events; also, the PowerBook button device will be enabled so you can
	  change the screen brightness.

config MAC_SERIAL
	tristate "Support for PowerMac serial ports (OBSOLETE DRIVER)"
	depends on PPC_PMAC && BROKEN
	help
	  This driver is obsolete. Use CONFIG_SERIAL_PMACZILOG in
	  "Character devices --> Serial drivers --> PowerMac z85c30" option.

config ADB_MACIO
	bool "Include MacIO (CHRP) ADB driver"
	depends on ADB && PPC_CHRP && !PPC_PMAC64
	help
	  Say Y here to include direct support for the ADB controller in the
	  Hydra chip used on PowerPC Macintoshes of the CHRP type.  (The Hydra
	  also includes a MESH II SCSI controller, DBDMA controller, VIA chip,
	  OpenPIC controller and two RS422/Geoports.)

config INPUT_ADBHID
	bool "Support for ADB input devices (keyboard, mice, ...)"
	depends on ADB && INPUT=y
	help
	  Say Y here if you want to have ADB (Apple Desktop Bus) HID devices
	  such as keyboards, mice, joysticks, trackpads  or graphic tablets
	  handled by the input layer.  If you say Y here, make sure to say Y to
	  the corresponding drivers "Keyboard support" (CONFIG_INPUT_KEYBDEV),
	  "Mouse Support" (CONFIG_INPUT_MOUSEDEV) and "Event interface
	  support" (CONFIG_INPUT_EVDEV) as well.

	  If unsure, say Y.

config MAC_EMUMOUSEBTN
	bool "Support for mouse button 2+3 emulation"
	depends on INPUT_ADBHID
	help
	  This provides generic support for emulating the 2nd and 3rd mouse
	  button with keypresses.  If you say Y here, the emulation is still
	  disabled by default.  The emulation is controlled by these sysctl
	  entries:
	  /proc/sys/dev/mac_hid/mouse_button_emulation
	  /proc/sys/dev/mac_hid/mouse_button2_keycode
	  /proc/sys/dev/mac_hid/mouse_button3_keycode

	  If you have an Apple machine with a 1-button mouse, say Y here.

config THERM_WINDTUNNEL
	tristate "Support for thermal management on Windtunnel G4s"
	depends on I2C && I2C_KEYWEST && PPC_PMAC && !PPC_PMAC64
	help
	  This driver provides some thermostat and fan control for the desktop
	  G4 "Windtunnel"

config THERM_ADT746X
	tristate "Support for thermal mgmnt on laptops with ADT 746x chipset"
	depends on I2C && I2C_KEYWEST && PPC_PMAC && !PPC_PMAC64
	help
	  This driver provides some thermostat and fan control for the
          iBook G4, and the ATI based aluminium PowerBooks, allowing slighlty
	  better fan behaviour by default, and some manual control.

config THERM_PM72
	tristate "Support for thermal management on PowerMac G5"
	depends on I2C && I2C_KEYWEST && PPC_PMAC64
	help
	  This driver provides thermostat and fan control for the desktop
	  G5 machines. 

config ANSLCD
	tristate "Support for ANS LCD display"
	depends on ADB_CUDA && PPC_PMAC

endmenu
