#
# For a description of the syntax of this configuration file,
# see Documentation/kbuild/kconfig-language.txt.
#

mainmenu "uClinux/68k (w/o MMU) Kernel Configuration"

config M68KNOMMU
	bool
	default y

config MMU
	bool
	default n

config FPU
	bool
	default n

config UID16
	bool
	default y

config RWSEM_GENERIC_SPINLOCK
	bool
	default y

config RWSEM_XCHGADD_ALGORITHM
	bool
	default n

config GENERIC_CALIBRATE_DELAY
	bool
	default y

source "init/Kconfig"

menu "Processor type and features"

choice
	prompt "CPU"
	default M68EZ328

config M68328
	bool "MC68328"
	help
	  Motorola 68328 processor support.

config M68EZ328
	bool "MC68EZ328"
	help
	  Motorola 68EX328 processor support.

config M68VZ328
	bool "MC68VZ328"
	help
	  Motorola 68VZ328 processor support.

config M68360
	bool "MC68360"
	help
	  Motorola 68360 processor support.

config M5206
	bool "MCF5206"
	help
	  Motorola ColdFire 5206 processor support.

config M5206e
	bool "MCF5206e"
	help
	  Motorola ColdFire 5206e processor support.

config M520x
	bool "MCF520x"
	help
	   Freescale Coldfire 5207/5208 processor support.

config M523x
	bool "MCF523x"
	help
	  Freescale Coldfire 5230/1/2/4/5 processor support

config M5249
	bool "MCF5249"
	help
	  Motorola ColdFire 5249 processor support.

config M5271
	bool "MCF5271"
	help
	  Freescale (Motorola) ColdFire 5270/5271 processor support.

config M5272
	bool "MCF5272"
	help
	  Motorola ColdFire 5272 processor support.

config M5275
	bool "MCF5275"
	help
	  Freescale (Motorola) ColdFire 5274/5275 processor support.

config M528x
	bool "MCF528x"
	help
	  Motorola ColdFire 5280/5282 processor support.

config M5307
	bool "MCF5307"
	help
	  Motorola ColdFire 5307 processor support.

config M5407
	bool "MCF5407"
	help
	  Motorola ColdFire 5407 processor support.

endchoice

config M527x
	bool
	depends on (M5271 || M5275)
	default y

config COLDFIRE
	bool
	depends on (M5206 || M5206e || M520x || M523x || M5249 || M527x || M5272 || M528x || M5307 || M5407)
	default y

choice
	prompt "CPU CLOCK Frequency"
	default AUTO

config CLOCK_AUTO
	bool "AUTO"
	---help---
	  Define the CPU clock frequency in use. On many boards you don't
	  really need to know, so you can select the AUTO option. On some
	  boards you need to know the real clock frequency to determine other
	  system timing (for example baud rate dividors, etc). Some processors
	  have an internal PLL and you can select a frequency to run at.
	  You need to know a little about the internals of your processor to
	  set this. If in doubt choose the AUTO option.

config CLOCK_11MHz
	bool "11MHz"
	help
	  Select a 11MHz CPU clock frequency.

config CLOCK_16MHz
	bool "16MHz"
	help
	  Select a 16MHz CPU clock frequency.

config CLOCK_20MHz
	bool "20MHz"
	help
	  Select a 20MHz CPU clock frequency.

config CLOCK_24MHz
	bool "24MHz"
	help
	  Select a 24MHz CPU clock frequency.

config CLOCK_25MHz
	bool "25MHz"
	help
	  Select a 25MHz CPU clock frequency.

config CLOCK_33MHz
	bool "33MHz"
	help
	  Select a 33MHz CPU clock frequency.

config CLOCK_40MHz
	bool "40MHz"
	help
	  Select a 40MHz CPU clock frequency.

config CLOCK_45MHz
	bool "45MHz"
	help
	  Select a 45MHz CPU clock frequency.

config CLOCK_48MHz
	bool "48MHz"
	help
	  Select a 48MHz CPU clock frequency.

config CLOCK_50MHz
	bool "50MHz"
	help
	  Select a 50MHz CPU clock frequency.

config CLOCK_54MHz
	bool "54MHz"
	help
	  Select a 54MHz CPU clock frequency.

config CLOCK_60MHz
	bool "60MHz"
	help
	  Select a 60MHz CPU clock frequency.

config CLOCK_62_5MHz
	bool "62.5MHz"
	help
	  Select a 62.5MHz CPU clock frequency.

config CLOCK_64MHz
	bool "64MHz"
	help
	  Select a 64MHz CPU clock frequency.

config CLOCK_66MHz
	bool "66MHz"
	help
	  Select a 66MHz CPU clock frequency.

config CLOCK_70MHz
	bool "70MHz"
	help
	  Select a 70MHz CPU clock frequency.

config CLOCK_100MHz
	bool "100MHz"
	help
	  Select a 100MHz CPU clock frequency.

config CLOCK_140MHz
	bool "140MHz"
	help
	  Select a 140MHz CPU clock frequency.

config CLOCK_150MHz
	bool "150MHz"
	help
	  Select a 150MHz CPU clock frequency.

config CLOCK_166MHz
	bool "166MHz"
	help
	  Select a 166MHz CPU clock frequency.

endchoice

config OLDMASK
	bool "Old mask 5307 (1H55J) silicon"
	depends on M5307
	help
	  Build support for the older revision ColdFire 5307 silicon.
	  Specifically this is the 1H55J mask revision.

comment "Platform"

config PILOT3
	bool "Pilot 1000/5000, PalmPilot Personal/Pro, or PalmIII support"
	depends on M68328
	help
	  Support for the Palm Pilot 1000/5000, Personal/Pro and PalmIII.

config XCOPILOT_BUGS
	bool "  (X)Copilot support"
	depends on PILOT3
	help
	  Support the bugs of Xcopilot.

config UCSIMM
	bool "uCsimm module support"
	depends on M68EZ328
	help
	  Support for the Arcturus Networks uCsimm module.

config UCDIMM
	bool "uDsimm module support"
	depends on M68VZ328
	help
	  Support for the Arcturus Networks uDsimm module.

config DRAGEN2
	bool "DragenEngine II board support"
	depends on M68VZ328
	help
	  Support for the DragenEngine II board.

config DIRECT_IO_ACCESS
	bool "  Allow user to access IO directly"
	depends on (UCSIMM || UCDIMM || DRAGEN2)
	help
	  Disable the CPU internal registers protection in user mode,
          to allow a user application to read/write them.

config INIT_LCD
	bool "  Initialize LCD"
	depends on (UCSIMM || UCDIMM || DRAGEN2)
	help
	  Initialize the LCD controller of the 68x328 processor.

config MEMORY_RESERVE
	int "  Memory reservation (MiB)"
	depends on (UCSIMM || UCDIMM)
	help
	  Reserve certain memory regions on 68x328 based boards.

config UCQUICC
	bool "Lineo uCquicc board support"
	depends on M68360
	help
	  Support for the Lineo uCquicc board.

config ARN5206
	bool "Arnewsh 5206 board support"
	depends on M5206
	help
	  Support for the Arnewsh 5206 board.

config M5206eC3
	bool "Motorola M5206eC3 board support"
	depends on M5206e
	help
	  Support for the Motorola M5206eC3 board.

config ELITE
	bool "Motorola M5206eLITE board support"
	depends on M5206e
	help
	  Support for the Motorola M5206eLITE board.

config M5208EVB
	bool "Freescale M5208EVB board support"
	depends on M520x
	help
	  Support for the Freescale Coldfire M5208EVB.

config M5235EVB
	bool "Freescale M5235EVB support"
	depends on M523x
	help
	  Support for the Freescale M5235EVB board.

config M5249C3
	bool "Motorola M5249C3 board support"
	depends on M5249
	help
	  Support for the Motorola M5249C3 board.

config M5271EVB
	bool "Freescale (Motorola) M5271EVB board support"
	depends on M5271
	help
	  Support for the Freescale (Motorola) M5271EVB board.

config M5275EVB
	bool "Freescale (Motorola) M5275EVB board support"
	depends on M5275
	help
	  Support for the Freescale (Motorola) M5275EVB board.

config M5272C3
	bool "Motorola M5272C3 board support"
	depends on M5272
	help
	  Support for the Motorola M5272C3 board.

config COBRA5272
	bool "senTec COBRA5272 board support"
	depends on M5272
	help
	  Support for the senTec COBRA5272 board.

config M5282EVB
	bool "Motorola M5282EVB board support"
	depends on M528x
	help
	  Support for the Motorola M5282EVB board.

config COBRA5282
	bool "senTec COBRA5282 board support"
	depends on M528x
	help
	  Support for the senTec COBRA5282 board.
	  
config SOM5282EM
	bool "EMAC.Inc SOM5282EM board support"
	depends on M528x
	help
	  Support for the EMAC.Inc SOM5282EM module.  

config ARN5307
	bool "Arnewsh 5307 board support"
	depends on M5307
	help
	  Support for the Arnewsh 5307 board.

config M5307C3
	bool "Motorola M5307C3 board support"
	depends on M5307
	help
	  Support for the Motorola M5307C3 board.

config eLIA
	bool "Moreton Bay eLIA board support"
	depends on M5307
	help
	  Support for the Moreton Bay eLIA board.

config SECUREEDGEMP3
	bool "SnapGear SecureEdge/MP3 platform support"
	depends on M5307
	help
	  Support for the SnapGear SecureEdge/MP3 platform.

config M5407C3
	bool "Motorola M5407C3 board support"
	depends on M5407
	help
	  Support for the Motorola M5407C3 board.

config CLEOPATRA
	bool "Feith CLEOPATRA board support"
	depends on (M5307 || M5407)
	help
	  Support for the Feith Cleopatra boards.

config CANCam
	bool "Feith CANCam board support"
	depends on M5272
	help
	  Support for the Feith CANCam board.

config SCALES
	bool "Feith SCALES board support"
	depends on M5272
	help
	  Support for the Feith SCALES board.

config NETtel
	bool "SecureEdge/NETtel board support"
	depends on (M5206e || M5272 || M5307)
	help
	  Support for the SnapGear NETtel/SecureEdge/SnapGear boards.

config SNAPGEAR
	bool "SnapGear router board support"
	depends on NETtel
	help
	  Special additional support for SnapGear router boards.

config CPU16B
	bool "Sneha Technologies S.L. Sarasvati board support"
	depends on M5272
	help
	  Support for the SNEHA CPU16B board.

config MOD5272
	bool "Netburner MOD-5272 board support"
	depends on M5272
	help
	  Support for the Netburner MOD-5272 board.

config ROMFS_FROM_ROM
	bool "  ROMFS image not RAM resident"
	depends on (NETtel || SNAPGEAR)
	help
	  The ROMfs filesystem will stay resident in the FLASH/ROM, not be
	  moved into RAM.

config PILOT
	bool
	default y
	depends on (PILOT3 || PILOT5)

config ARNEWSH
	bool
	default y
	depends on (ARN5206 || ARN5307)

config FREESCALE
	bool
	default y
	depends on (M5206eC3 || M5208EVB || M5235EVB || M5249C3 || M5271EVB || M5272C3 || M5275EVB || M5282EVB || M5307C3 || M5407C3)

config HW_FEITH
	bool
	default y
	depends on (CLEOPATRA || CANCam || SCALES)

config senTec
	bool
	default y
	depends on (COBRA5272 || COBRA5282)
	
config EMAC_INC
	bool
	default y
	depends on (SOM5282EM)

config SNEHA
        bool
	default y
	depends on CPU16B

config LARGE_ALLOCS
	bool "Allow allocating large blocks (> 1MB) of memory"
	help
	  Allow the slab memory allocator to keep chains for very large
	  memory sizes - upto 32MB. You may need this if your system has
	  a lot of RAM, and you need to able to allocate very large
	  contiguous chunks. If unsure, say N.

config 4KSTACKS
	bool "Use 4Kb for kernel stacks instead of 8Kb"
	default y
	help
	  If you say Y here the kernel will use a 4Kb stacksize for the
	  kernel stack attached to each process/thread. This facilitates
	  running more threads on a system and also reduces the pressure
	  on the VM subsystem for higher order allocations.

choice
	prompt "RAM size"
	default AUTO

config RAMAUTO
	bool "AUTO"
	---help---
	  Configure the RAM size on your platform. Many platforms can auto
	  detect this, on those choose the AUTO option. Otherwise set the
	  RAM size you intend using.

config RAM4MB
	bool "4MiB"
	help
	  Set RAM size to be 4MiB.

config RAM8MB
	bool "8MiB"
	help
	  Set RAM size to be 8MiB.

config RAM16MB
	bool "16MiB"
	help
	  Set RAM size to be 16MiB.

config RAM32MB
	bool "32MiB"
	help
	  Set RAM size to be 32MiB.

endchoice

choice
	prompt "RAM bus width"
	default RAMAUTOBIT

config RAMAUTOBIT
	bool "AUTO"
	---help---
	  Select the physical RAM data bus size. Not needed on most platforms,
	  so you can generally choose AUTO.

config RAM8BIT
	bool "8bit"
	help
	  Configure RAM bus to be 8 bits wide.

config RAM16BIT
	bool "16bit"
	help
	  Configure RAM bus to be 16 bits wide.

config RAM32BIT
	bool "32bit"
	help
	  Configure RAM bus to be 32 bits wide.

endchoice

choice
	prompt "Kernel executes from"
	---help---
	  Choose the memory type that the kernel will be running in.

config RAMKERNEL
	bool "RAM"
	help
	  The kernel will be resident in RAM when running.

config ROMKERNEL
	bool "ROM"
	help
	  The kernel will be resident in FLASH/ROM when running.

endchoice

source "mm/Kconfig"

endmenu

config ISA_DMA_API
	bool
	depends on !M5272
	default y

menu "Bus options (PCI, PCMCIA, EISA, MCA, ISA)"

config PCI
	bool "PCI support"
	help
	  Support for PCI bus.

config COMEMPCI
	bool "CO-MEM lite PCI controller support"
	depends on (M5307 || M5407)

source "drivers/pci/Kconfig"

source "drivers/pcmcia/Kconfig"

source "drivers/pci/hotplug/Kconfig"

endmenu

menu "Executable file formats"

source "fs/Kconfig.binfmt"

endmenu

menu "Power management options"

config PM
	bool "Power Management support"
	help
	  Support processor power management modes

endmenu

source "net/Kconfig"

source "drivers/Kconfig"

source "fs/Kconfig"

source "arch/m68knommu/Kconfig.debug"

source "security/Kconfig"

source "crypto/Kconfig"

source "lib/Kconfig"
