# arch/arm/mach-s3c24xx/Kconfig
#
# Copyright (c) 2012 Samsung Electronics Co., Ltd.
#		http://www.samsung.com/
#
# Copyright 2007 Simtec Electronics
#
# Licensed under GPLv2

if ARCH_S3C24XX

config PLAT_S3C24XX
	def_bool y
	select ARCH_REQUIRE_GPIOLIB
	select NO_IOPORT
	select S3C_DEV_NAND
	select IRQ_DOMAIN
	help
	  Base platform code for any Samsung S3C24XX device

menu "SAMSUNG S3C24XX SoCs Support"

comment "S3C24XX SoCs"

config CPU_S3C2410
	bool "SAMSUNG S3C2410"
	default y
	select CPU_ARM920T
	select CPU_LLSERIAL_S3C2410
	select S3C2410_CLOCK
	select ARM_S3C2410_CPUFREQ if ARM_S3C24XX_CPUFREQ
	select S3C2410_PM if PM
	select SAMSUNG_HRT
	select SAMSUNG_WDT_RESET
	help
	  Support for S3C2410 and S3C2410A family from the S3C24XX line
	  of Samsung Mobile CPUs.

config CPU_S3C2412
	bool "SAMSUNG S3C2412"
	select CPU_ARM926T
	select CPU_LLSERIAL_S3C2440
	select S3C2412_DMA if S3C24XX_DMA
	select S3C2412_PM if PM
	select SAMSUNG_HRT
	help
	  Support for the S3C2412 and S3C2413 SoCs from the S3C24XX line

config CPU_S3C2416
	bool "SAMSUNG S3C2416/S3C2450"
	select CPU_ARM926T
	select CPU_LLSERIAL_S3C2440
	select S3C2416_PM if PM
	select S3C2443_COMMON
	select S3C2443_DMA if S3C24XX_DMA
	select SAMSUNG_CLKSRC
	select SAMSUNG_HRT
	help
	  Support for the S3C2416 SoC from the S3C24XX line

config CPU_S3C2440
	bool "SAMSUNG S3C2440"
	select CPU_ARM920T
	select CPU_LLSERIAL_S3C2440
	select S3C2410_CLOCK
	select S3C2410_PM if PM
	select S3C2440_DMA if S3C24XX_DMA
	select SAMSUNG_HRT
	help
	  Support for S3C2440 Samsung Mobile CPU based systems.

config CPU_S3C2442
	bool "SAMSUNG S3C2442"
	select CPU_ARM920T
	select CPU_LLSERIAL_S3C2440
	select S3C2410_CLOCK
	select S3C2410_PM if PM
	select SAMSUNG_HRT
	help
	  Support for S3C2442 Samsung Mobile CPU based systems.

config CPU_S3C244X
	def_bool y
	depends on CPU_S3C2440 || CPU_S3C2442
	select SAMSUNG_WDT_RESET

config CPU_S3C2443
	bool "SAMSUNG S3C2443"
	select CPU_ARM920T
	select CPU_LLSERIAL_S3C2440
	select S3C2443_COMMON
	select S3C2443_DMA if S3C24XX_DMA
	select SAMSUNG_CLKSRC
	select SAMSUNG_HRT
	help
	  Support for the S3C2443 SoC from the S3C24XX line

# common code

config S3C2410_CLOCK
	bool
	help
	  Clock code for the S3C2410, and similar processors which
	  is currently includes the S3C2410, S3C2440, S3C2442.

config S3C24XX_DCLK
	bool
	help
	  Clock code for supporting DCLK/CLKOUT on S3C24XX architectures

config S3C24XX_SMDK
	bool
	help
	  Common machine code for SMDK2410 and SMDK2440

config S3C24XX_SIMTEC_AUDIO
	bool
	depends on (ARCH_BAST || MACH_VR1000 || MACH_OSIRIS || MACH_ANUBIS)
	default y
	help
	  Add audio devices for common Simtec S3C24XX boards

config S3C24XX_SIMTEC_PM
	bool
	help
	  Common power management code for systems that are
	  compatible with the Simtec style of power management

config S3C24XX_SIMTEC_USB
	bool
	help
	  USB management code for common Simtec S3C24XX boards

config S3C24XX_SETUP_TS
	bool
	help
	  Compile in platform device definition for Samsung TouchScreen.

config S3C24XX_DMA
	bool "S3C2410 DMA support"
	select S3C_DMA
	help
	  S3C2410 DMA support. This is needed for drivers like sound which
	  use the S3C2410's DMA system to move data to and from the
	  peripheral blocks.

config S3C2410_DMA_DEBUG
	bool "S3C2410 DMA support debug"
	depends on S3C2410_DMA
	help
	  Enable debugging output for the DMA code. This option sends info
	  to the kernel log, at priority KERN_DEBUG.

config S3C2410_DMA
	bool
	depends on S3C24XX_DMA && (CPU_S3C2410 || CPU_S3C2442)
	default y if CPU_S3C2410 || CPU_S3C2442
	help
	  DMA device selection for S3C2410 and compatible CPUs

config S3C2410_PM
	bool
	help
	  Power Management code common to S3C2410 and better

# low-level serial option nodes

config CPU_LLSERIAL_S3C2410_ONLY
	bool
	default y if CPU_LLSERIAL_S3C2410 && !CPU_LLSERIAL_S3C2440

config CPU_LLSERIAL_S3C2440_ONLY
	bool
	default y if CPU_LLSERIAL_S3C2440 && !CPU_LLSERIAL_S3C2410

config CPU_LLSERIAL_S3C2410
	bool
	help
	  Selected if there is an S3C2410 (or register compatible) serial
	  low-level implementation needed

config CPU_LLSERIAL_S3C2440
	bool
	help
	  Selected if there is an S3C2440 (or register compatible) serial
	  low-level implementation needed

# gpio configurations

config S3C24XX_GPIO_EXTRA
	int
	default 128 if S3C24XX_GPIO_EXTRA128
	default 64 if S3C24XX_GPIO_EXTRA64
	default 16 if ARCH_H1940
	default 0

config S3C24XX_GPIO_EXTRA64
	bool
	help
	  Add an extra 64 gpio numbers to the available GPIO pool. This is
	  available for boards that need extra gpios for external devices.

config S3C24XX_GPIO_EXTRA128
	bool
	help
	  Add an extra 128 gpio numbers to the available GPIO pool. This is
	  available for boards that need extra gpios for external devices.

config S3C24XX_PLL
	bool "Support CPUfreq changing of PLL frequency (EXPERIMENTAL)"
	depends on ARM_S3C24XX
	help
	  Compile in support for changing the PLL frequency from the
	  S3C24XX series CPUfreq driver. The PLL takes time to settle
	  after a frequency change, so by default it is not enabled.

	  This also means that the PLL tables for the selected CPU(s) will
	  be built which may increase the size of the kernel image.

# cpu frequency items common between s3c2410 and s3c2440/s3c2442

config S3C2410_IOTIMING
	bool
	depends on ARM_S3C24XX_CPUFREQ
	help
	  Internal node to select io timing code that is common to the s3c2410
	  and s3c2440/s3c2442 cpu frequency support.

config S3C2410_CPUFREQ_UTILS
       bool
       depends on ARM_S3C24XX_CPUFREQ
       help
         Internal node to select timing code that is common to the s3c2410
         and s3c2440/s3c244 cpu frequency support.

# cpu frequency support common to s3c2412, s3c2413 and s3c2442

config S3C2412_IOTIMING
	bool
	depends on ARM_S3C24XX_CPUFREQ && (CPU_S3C2412 || CPU_S3C2443)
	help
	  Intel node to select io timing code that is common to the s3c2412
	  and the s3c2443.

# cpu-specific sections

if CPU_S3C2410

config S3C2410_PLL
	bool
	depends on ARM_S3C2410_CPUFREQ && S3C24XX_PLL
	default y
	help
	  Select the PLL table for the S3C2410

config S3C24XX_SIMTEC_NOR
	bool
	help
	  Internal node to specify machine has simtec NOR mapping

config MACH_BAST_IDE
	bool
	select HAVE_PATA_PLATFORM
	help
	  Internal node for machines with an BAST style IDE
	  interface

comment "S3C2410 Boards"

#
# The "S3C2410 Boards" list is ordered alphabetically by option text.
# (without ARCH_ or MACH_)
#

config MACH_AML_M5900
	bool "AML M5900 Series"
	select S3C24XX_SIMTEC_PM if PM
	select S3C_DEV_USB_HOST
	help
	  Say Y here if you are using the American Microsystems M5900 Series
	  <http://www.amltd.com>

config ARCH_BAST
	bool "Simtec Electronics BAST (EB2410ITX)"
	select ISA
	select MACH_BAST_IDE
	select S3C2410_IOTIMING if ARM_S3C2410_CPUFREQ
	select S3C24XX_DCLK
	select S3C24XX_SIMTEC_NOR
	select S3C24XX_SIMTEC_PM if PM
	select S3C24XX_SIMTEC_USB
	select S3C_DEV_HWMON
	select S3C_DEV_NAND
	select S3C_DEV_USB_HOST
	help
	  Say Y here if you are using the Simtec Electronics EB2410ITX
	  development board (also known as BAST)

config BAST_PC104_IRQ
	bool "BAST PC104 IRQ support"
	depends on ARCH_BAST
	default y
	help
	  Say Y	here to enable the PC104 IRQ routing on the
	  Simtec BAST (EB2410ITX)

config ARCH_H1940
	bool "IPAQ H1940"
	select PM_H1940 if PM
	select S3C24XX_SETUP_TS
	select S3C_DEV_NAND
	select S3C_DEV_USB_HOST
	help
	  Say Y here if you are using the HP IPAQ H1940

config H1940BT
	tristate "Control the state of H1940 bluetooth chip"
	depends on ARCH_H1940
	select RFKILL
	help
	  This is a simple driver that is able to control
	  the state of built in bluetooth chip on h1940.

config PM_H1940
	bool
	help
	  Internal node for H1940 and related PM

config MACH_N30
	bool "Acer N30 family"
	select S3C_DEV_NAND
	select S3C_DEV_USB_HOST
	help
	  Say Y here if you want suppt for the Acer N30, Acer N35,
	  Navman PiN570, Yakumo AlphaX or Airis NC05 PDAs.

config MACH_OTOM
	bool "NexVision OTOM Board"
	select S3C_DEV_NAND
	select S3C_DEV_USB_HOST
	help
	  Say Y here if you are using the Nex Vision OTOM board

config MACH_QT2410
	bool "QT2410"
	select S3C_DEV_NAND
	select S3C_DEV_USB_HOST
	help
	  Say Y here if you are using the Armzone QT2410

config ARCH_SMDK2410
	bool "SMDK2410/A9M2410"
	select S3C24XX_SMDK
	select S3C_DEV_USB_HOST
	help
	  Say Y here if you are using the SMDK2410 or the derived module A9M2410
	  <http://www.fsforth.de>

config MACH_TCT_HAMMER
	bool "TCT Hammer Board"
	select S3C_DEV_USB_HOST
	help
	  Say Y here if you are using the TinCanTools Hammer Board
	  <http://www.tincantools.com>

config MACH_VR1000
	bool "Thorcom VR1000"
	select MACH_BAST_IDE
	select S3C24XX_DCLK
	select S3C24XX_SIMTEC_NOR
	select S3C24XX_SIMTEC_PM if PM
	select S3C24XX_SIMTEC_USB
	select S3C_DEV_USB_HOST
	help
	  Say Y here if you are using the Thorcom VR1000 board.

endif	# CPU_S3C2410

config S3C2412_PM_SLEEP
	bool
	help
	  Internal config node to apply sleep for S3C2412 power management.
	  Can be selected by another SoCs such as S3C2416 with similar
	  sleep procedure.

if CPU_S3C2412

config CPU_S3C2412_ONLY
	bool
	depends on !CPU_S3C2410 && !CPU_S3C2416 && !CPU_S3C2440 && \
		   !CPU_S3C2442 && !CPU_S3C2443
	default y

config S3C2412_DMA
	bool
	help
	  Internal config node for S3C2412 DMA support

config S3C2412_PM
	bool
	select S3C2412_PM_SLEEP
	select SAMSUNG_WAKEMASK
	help
	  Internal config node to apply S3C2412 power management

comment "S3C2412 Boards"

#
# The "S3C2412 Boards" list is ordered alphabetically by option text.
# (without ARCH_ or MACH_)
#

config MACH_JIVE
	bool "Logitech Jive"
	select S3C_DEV_NAND
	select S3C_DEV_USB_HOST
	help
	  Say Y here if you are using the Logitech Jive.

config MACH_JIVE_SHOW_BOOTLOADER
	bool "Allow access to bootloader partitions in MTD"
	depends on MACH_JIVE

config MACH_S3C2413
	bool
	help
	  Internal node for S3C2413 version of SMDK2413, so that
	  machine_is_s3c2413() will work when MACH_SMDK2413 is
	  selected

config MACH_SMDK2412
	bool "SMDK2412"
	select MACH_SMDK2413
	help
	  Say Y here if you are using an SMDK2412

	  Note, this shares support with SMDK2413, so will automatically
	  select MACH_SMDK2413.

config MACH_SMDK2413
	bool "SMDK2413"
	select MACH_S3C2413
	select S3C24XX_SMDK
	select S3C_DEV_NAND
	select S3C_DEV_USB_HOST
	help
	  Say Y here if you are using an SMDK2413

config MACH_VSTMS
	bool "VMSTMS"
	select S3C_DEV_NAND
	select S3C_DEV_USB_HOST
	help
	  Say Y here if you are using an VSTMS board

endif	# CPU_S3C2412

if CPU_S3C2416

config S3C2416_PM
	bool
	select S3C2412_PM_SLEEP
	help
	  Internal config node to apply S3C2416 power management

config S3C2416_SETUP_SDHCI
	bool
	select S3C2416_SETUP_SDHCI_GPIO
	help
	  Internal helper functions for S3C2416 based SDHCI systems

config S3C2416_SETUP_SDHCI_GPIO
	bool
	help
	  Common setup code for SDHCI gpio.

comment "S3C2416 Boards"

config MACH_SMDK2416
	bool "SMDK2416"
	select S3C2416_SETUP_SDHCI
	select S3C24XX_SMDK
	select S3C_DEV_FB
	select S3C_DEV_HSMMC
	select S3C_DEV_HSMMC1
	select S3C_DEV_NAND
	select S3C_DEV_USB_HOST
	help
	  Say Y here if you are using an SMDK2416

config MACH_S3C2416_DT
	bool "Samsung S3C2416 machine using devicetree"
	select CLKSRC_OF
	select USE_OF
	select PINCTRL
	select PINCTRL_S3C24XX
	help
	  Machine support for Samsung S3C2416 machines with device tree enabled.
	  Select this if a fdt blob is available for the S3C2416 SoC based board.
	  Note: This is under development and not all peripherals can be supported
	  with this machine file.

endif	# CPU_S3C2416

if CPU_S3C2440

config S3C2440_DMA
	bool
	help
	  Support for S3C2440 specific DMA code5A

config S3C2440_XTAL_12000000
	bool
	help
	  Indicate that the build needs to support 12MHz system
	  crystal.

config S3C2440_XTAL_16934400
	bool
	help
	  Indicate that the build needs to support 16.9344MHz system
	  crystal.

config S3C2440_PLL_12000000
	bool
	depends on ARM_S3C2440_CPUFREQ && S3C2440_XTAL_12000000
	default y if S3C24XX_PLL
	help
	  PLL tables for S3C2440 or S3C2442 CPUs with 12MHz crystals.

config S3C2440_PLL_16934400
	bool
	depends on ARM_S3C2440_CPUFREQ && S3C2440_XTAL_16934400
	default y if S3C24XX_PLL
	help
	  PLL tables for S3C2440 or S3C2442 CPUs with 16.934MHz crystals.

comment "S3C2440 Boards"

#
# The "S3C2440 Boards" list is ordered alphabetically by option text.
# (without ARCH_ or MACH_)
#

config MACH_ANUBIS
	bool "Simtec Electronics ANUBIS"
	select HAVE_PATA_PLATFORM
	select S3C2440_XTAL_12000000
	select S3C24XX_DCLK
	select S3C24XX_GPIO_EXTRA64
	select S3C24XX_SIMTEC_PM if PM
	select S3C_DEV_USB_HOST
	help
	  Say Y here if you are using the Simtec Electronics ANUBIS
	  development system

config MACH_AT2440EVB
	bool "Avantech AT2440EVB development board"
	select S3C_DEV_NAND
	select S3C_DEV_USB_HOST
	help
	  Say Y here if you are using the AT2440EVB development board

config MACH_MINI2440
	bool "MINI2440 development board"
	select EEPROM_AT24
	select LEDS_CLASS
	select LEDS_TRIGGERS
	select LEDS_TRIGGER_BACKLIGHT
	select NEW_LEDS
	select S3C_DEV_NAND
	select S3C_DEV_USB_HOST
	select S3C_SETUP_CAMIF
	help
	  Say Y here to select support for the MINI2440. Is a 10cm x 10cm board
	  available via various sources. It can come with a 3.5" or 7" touch LCD.

config MACH_NEXCODER_2440
	bool "NexVision NEXCODER 2440 Light Board"
	select S3C2440_XTAL_12000000
	select S3C_DEV_NAND
	select S3C_DEV_USB_HOST
	help
	  Say Y here if you are using the Nex Vision NEXCODER 2440 Light Board

config MACH_OSIRIS
	bool "Simtec IM2440D20 (OSIRIS) module"
	select S3C2410_IOTIMING if ARM_S3C2440_CPUFREQ
	select S3C2440_XTAL_12000000
	select S3C24XX_DCLK
	select S3C24XX_GPIO_EXTRA128
	select S3C24XX_SIMTEC_PM if PM
	select S3C_DEV_NAND
	select S3C_DEV_USB_HOST
	help
	  Say Y here if you are using the Simtec IM2440D20 module, also
	  known as the Osiris.

config MACH_OSIRIS_DVS
	tristate "Simtec IM2440D20 (OSIRIS) Dynamic Voltage Scaling driver"
	depends on MACH_OSIRIS
	select TPS65010
	help
	  Say Y/M here if you want to have dynamic voltage scaling support
	  on the Simtec IM2440D20 (OSIRIS) module via the TPS65011.

	  The DVS driver alters the voltage supplied to the ARM core
	  depending on the frequency it is running at. The driver itself
	  does not do any of the frequency alteration, which is left up
	  to the cpufreq driver.

config MACH_RX3715
	bool "HP iPAQ rx3715"
	select PM_H1940 if PM
	select S3C2440_XTAL_16934400
	select S3C_DEV_NAND
	help
	  Say Y here if you are using the HP iPAQ rx3715.

config ARCH_S3C2440
	bool "SMDK2440"
	select S3C2440_XTAL_16934400
	select S3C24XX_SMDK
	select S3C_DEV_NAND
	select S3C_DEV_USB_HOST
	help
	  Say Y here if you are using the SMDK2440.

config SMDK2440_CPU2440
	bool "SMDK2440 with S3C2440 CPU module"
	default y if ARCH_S3C2440
	select S3C2440_XTAL_16934400

endif	# CPU_S3C2440

if CPU_S3C2442

comment "S3C2442 Boards"

#
# The "S3C2442 Boards" list is ordered alphabetically by option text.
# (without ARCH_ or MACH_)
#

config MACH_NEO1973_GTA02
	bool "Openmoko GTA02 / Freerunner phone"
	select I2C
	select MFD_PCF50633
	select PCF50633_GPIO
	select POWER_SUPPLY
	select S3C24XX_PWM
	select S3C_DEV_USB_HOST
	help
	   Say Y here if you are using the Openmoko GTA02 / Freerunner GSM Phone

config MACH_RX1950
	bool "HP iPAQ rx1950"
	select I2C
	select PM_H1940 if PM
	select S3C2410_IOTIMING if ARM_S3C2440_CPUFREQ
	select S3C2440_XTAL_16934400
	select S3C24XX_DCLK
	select S3C24XX_PWM
	select S3C_DEV_NAND
	help
	   Say Y here if you're using HP iPAQ rx1950

endif	# CPU_S3C2442

if CPU_S3C2443 || CPU_S3C2416

config S3C2443_COMMON
	bool
	help
	  Common code for the S3C2443 and similar processors, which includes
	  the S3C2416 and S3C2450.

config S3C2443_DMA
	bool
	help
	  Internal config node for S3C2443 DMA support

config S3C2443_SETUP_SPI
	bool
	help
	  Common setup code for SPI GPIO configurations

endif	# CPU_S3C2443 || CPU_S3C2416

if CPU_S3C2443

comment "S3C2443 Boards"

config MACH_SMDK2443
	bool "SMDK2443"
	select S3C24XX_SMDK
	select S3C_DEV_HSMMC1
	help
	  Say Y here if you are using an SMDK2443

endif	# CPU_S3C2443

endmenu	# SAMSUNG S3C24XX SoCs Support

endif	# ARCH_S3C24XX
