menu "Platform support"

choice
	prompt "Machine type"
	depends on PPC64 || 6xx
	default PPC_MULTIPLATFORM

config PPC_MULTIPLATFORM
	bool "Generic desktop/server/laptop"
	help
	  Select this option if configuring for an IBM pSeries or
	  RS/6000 machine, an Apple machine, or a PReP, CHRP,
	  Maple or Cell-based machine.

config PPC_82xx
	bool "Freescale 82xx"
	depends on 6xx
	select WANT_DEVICE_TREE

config PPC_83xx
	bool "Freescale 83xx"
	depends on 6xx
	select FSL_SOC
	select 83xx
	select WANT_DEVICE_TREE

config PPC_86xx
	bool "Freescale 86xx"
	depends on 6xx
	select FSL_SOC
	select ALTIVEC
	help
	  The Freescale E600 SoCs have 74xx cores.
endchoice

config CLASSIC32
	def_bool y
	depends on 6xx && PPC_MULTIPLATFORM

source "arch/powerpc/platforms/pseries/Kconfig"
source "arch/powerpc/platforms/iseries/Kconfig"
source "arch/powerpc/platforms/chrp/Kconfig"
source "arch/powerpc/platforms/52xx/Kconfig"
source "arch/powerpc/platforms/powermac/Kconfig"
source "arch/powerpc/platforms/prep/Kconfig"
source "arch/powerpc/platforms/maple/Kconfig"
source "arch/powerpc/platforms/pasemi/Kconfig"
source "arch/powerpc/platforms/celleb/Kconfig"
source "arch/powerpc/platforms/ps3/Kconfig"
source "arch/powerpc/platforms/cell/Kconfig"
source "arch/powerpc/platforms/8xx/Kconfig"
source "arch/powerpc/platforms/82xx/Kconfig"
source "arch/powerpc/platforms/83xx/Kconfig"
source "arch/powerpc/platforms/85xx/Kconfig"
source "arch/powerpc/platforms/86xx/Kconfig"
source "arch/powerpc/platforms/embedded6xx/Kconfig"
source "arch/powerpc/platforms/44x/Kconfig"
source "arch/powerpc/platforms/40x/Kconfig"

config PPC_NATIVE
	bool
	depends on PPC_MULTIPLATFORM
	help
	  Support for running natively on the hardware, i.e. without
	  a hypervisor. This option is not user-selectable but should
	  be selected by all platforms that need it.

config UDBG_RTAS_CONSOLE
	bool "RTAS based debug console"
	depends on PPC_RTAS
	default n

config PPC_UDBG_BEAT
	bool "BEAT based debug console"
	depends on PPC_CELLEB
	default n

config XICS
	depends on PPC_PSERIES
	bool
	default y

config MPIC
	bool
	default n

config MPIC_WEIRD
	bool
	default n

config PPC_I8259
	bool
	default n

config U3_DART
	bool
	depends on PPC_MULTIPLATFORM && PPC64
	default n

config PPC_RTAS
	bool
	default n

config RTAS_ERROR_LOGGING
	bool
	depends on PPC_RTAS
	default n

config RTAS_PROC
	bool "Proc interface to RTAS"
	depends on PPC_RTAS
	default y

config RTAS_FLASH
	tristate "Firmware flash interface"
	depends on PPC64 && RTAS_PROC

config PPC_PMI
	tristate "Support for PMI"
	depends PPC_IBM_CELL_BLADE
	help
	  PMI (Platform Management Interrupt) is a way to
	  communicate with the BMC (Baseboard Mangement Controller).
	  It is used in some IBM Cell blades.
	default m

config MMIO_NVRAM
	bool
	default n

config MPIC_U3_HT_IRQS
	bool
	depends on PPC_MAPLE
	default y

config MPIC_BROKEN_REGREAD
	bool
	depends on MPIC
	help
	  This option enables a MPIC driver workaround for some chips
	  that have a bug that causes some interrupt source information
	  to not read back properly. It is safe to use on other chips as
	  well, but enabling it uses about 8KB of memory to keep copies
	  of the register contents in software.

config IBMVIO
	depends on PPC_PSERIES || PPC_ISERIES
	bool
	default y

config IBMEBUS
	depends on PPC_PSERIES
	bool "Support for GX bus based adapters"
	help
	  Bus device driver for GX bus based adapters.

config PPC_MPC106
	bool
	default n

config PPC_970_NAP
	bool
	default n

config PPC_INDIRECT_IO
	bool
	select GENERIC_IOMAP
	default n

config GENERIC_IOMAP
	bool
	default n

source "drivers/cpufreq/Kconfig"

menu "CPU Frequency drivers"
	depends on CPU_FREQ

config CPU_FREQ_PMAC
	bool "Support for Apple PowerBooks"
	depends on ADB_PMU && PPC32
	select CPU_FREQ_TABLE
	help
	  This adds support for frequency switching on Apple PowerBooks,
	  this currently includes some models of iBook & Titanium
	  PowerBook.

config CPU_FREQ_PMAC64
	bool "Support for some Apple G5s"
	depends on PPC_PMAC && PPC64
	select CPU_FREQ_TABLE
	help
	  This adds support for frequency switching on Apple iMac G5,
	  and some of the more recent desktop G5 machines as well.

config PPC_PASEMI_CPUFREQ
	bool "Support for PA Semi PWRficient"
	depends on PPC_PASEMI
	default y
	select CPU_FREQ_TABLE
	help
	  This adds the support for frequency switching on PA Semi
	  PWRficient processors.

endmenu

config PPC601_SYNC_FIX
	bool "Workarounds for PPC601 bugs"
	depends on 6xx && (PPC_PREP || PPC_PMAC)
	help
	  Some versions of the PPC601 (the first PowerPC chip) have bugs which
	  mean that extra synchronization instructions are required near
	  certain instructions, typically those that make major changes to the
	  CPU state.  These extra instructions reduce performance slightly.
	  If you say N here, these extra instructions will not be included,
	  resulting in a kernel which will run faster but may not run at all
	  on some systems with the PPC601 chip.

	  If in doubt, say Y here.

config TAU
	bool "On-chip CPU temperature sensor support"
	depends on CLASSIC32
	help
	  G3 and G4 processors have an on-chip temperature sensor called the
	  'Thermal Assist Unit (TAU)', which, in theory, can measure the on-die
	  temperature within 2-4 degrees Celsius. This option shows the current
	  on-die temperature in /proc/cpuinfo if the cpu supports it.

	  Unfortunately, on some chip revisions, this sensor is very inaccurate
	  and in many cases, does not work at all, so don't assume the cpu
	  temp is actually what /proc/cpuinfo says it is.

config TAU_INT
	bool "Interrupt driven TAU driver (DANGEROUS)"
	depends on TAU
	---help---
	  The TAU supports an interrupt driven mode which causes an interrupt
	  whenever the temperature goes out of range. This is the fastest way
	  to get notified the temp has exceeded a range. With this option off,
	  a timer is used to re-check the temperature periodically.

	  However, on some cpus it appears that the TAU interrupt hardware
	  is buggy and can cause a situation which would lead unexplained hard
	  lockups.

	  Unless you are extending the TAU driver, or enjoy kernel/hardware
	  debugging, leave this option off.

config TAU_AVERAGE
	bool "Average high and low temp"
	depends on TAU
	---help---
	  The TAU hardware can compare the temperature to an upper and lower
	  bound.  The default behavior is to show both the upper and lower
	  bound in /proc/cpuinfo. If the range is large, the temperature is
	  either changing a lot, or the TAU hardware is broken (likely on some
	  G4's). If the range is small (around 4 degrees), the temperature is
	  relatively stable.  If you say Y here, a single temperature value,
	  halfway between the upper and lower bounds, will be reported in
	  /proc/cpuinfo.

	  If in doubt, say N here.

config QUICC_ENGINE
	bool
	help
	  The QUICC Engine (QE) is a new generation of communications
	  coprocessors on Freescale embedded CPUs (akin to CPM in older chips).
	  Selecting this option means that you wish to build a kernel
	  for a machine with a QE coprocessor.

config CPM2
	bool
	default n
	help
	  The CPM2 (Communications Processor Module) is a coprocessor on
	  embedded CPUs made by Freescale.  Selecting this option means that
	  you wish to build a kernel for a machine with a CPM2 coprocessor
	  on it (826x, 827x, 8560).

config AXON_RAM
	tristate "Axon DDR2 memory device driver"
	depends on PPC_IBM_CELL_BLADE
	default m
	help
	  It registers one block device per Axon's DDR2 memory bank found
	  on a system. Block devices are called axonram?, their major and
	  minor numbers are available in /proc/devices, /proc/partitions or
	  in /sys/block/axonram?/dev.

config FSL_ULI1575
	bool
	default n
	select GENERIC_ISA_DMA
	help
	  Supports for the ULI1575 PCIe south bridge that exists on some
	  Freescale reference boards. The boards all use the ULI in pretty
	  much the same way.

endmenu
