# arch/arm/mach-s3c6410/Kconfig
#
# Copyright 2008 Openmoko, Inc.
# Copyright 2008 Simtec Electronics
#
# Licensed under GPLv2

# Configuration options for the S3C6410 CPU

config CPU_S3C6410
	bool
	select CPU_S3C6400_INIT
	select CPU_S3C6400_CLOCK
	help
	  Enable S3C6410 CPU support

config S3C6410_SETUP_SDHCI
	bool
	select S3C64XX_SETUP_SDHCI_GPIO
	help
	  Internal helper functions for S3C6410 based SDHCI systems

config MACH_ANW6410
	bool "A&W6410"
	select CPU_S3C6410
	select S3C_DEV_FB
	select S3C64XX_SETUP_FB_24BPP
	help
	  Machine support for the A&W6410

config MACH_SMDK6410
	bool "SMDK6410"
	select CPU_S3C6410
	select S3C_DEV_HSMMC
	select S3C_DEV_HSMMC1
	select S3C_DEV_I2C1
	select S3C_DEV_FB
	select S3C_DEV_USB_HOST
	select S3C_DEV_USB_HSOTG
	select S3C6410_SETUP_SDHCI
	select S3C64XX_SETUP_I2C1
	select S3C64XX_SETUP_FB_24BPP
	help
	  Machine support for the Samsung SMDK6410

# At least some of the SMDK6410s were shipped with the card detect
# for the MMC/SD slots connected to the same input. This means that
# either the boards need to be altered to have channel0 to an alternate
# configuration or that only one slot can be used.

choice
	prompt "SMDK6410 MMC/SD slot setup"
	depends on MACH_SMDK6410

config SMDK6410_SD_CH0
	bool "Use channel 0 only"
	depends on MACH_SMDK6410
	help
          Select CON7 (channel 0) as the MMC/SD slot, as
	  at least some SMDK6410 boards come with the
	  resistors fitted so that the card detects for
	  channels 0 and 1 are the same.
       
config SMDK6410_SD_CH1
	bool "Use channel 1 only"
	depends on MACH_SMDK6410
	help
          Select CON6 (channel 1) as the MMC/SD slot, as
	  at least some SMDK6410 boards come with the
	  resistors fitted so that the card detects for
	  channels 0 and 1 are the same.

endchoice

config SMDK6410_WM1190_EV1
	bool "Support Wolfson Microelectronics 1190-EV1 PMIC card"
	depends on MACH_SMDK6410
	select REGULATOR
	select REGULATOR_WM8350
	select MFD_WM8350_I2C
	select MFD_WM8350_CONFIG_MODE_0
	select MFD_WM8350_CONFIG_MODE_3
	select MFD_WM8352_CONFIG_MODE_0
	help
	  The Wolfson Microelectronics 1190-EV1 is a WM835x based PMIC
	  and audio daughtercard for the Samsung SMDK6410 reference
	  platform.  Enabling this option will build support for this
	  module into the kernel.  The presence of the module will be
	  detected at runtime so the the resulting kernel can be used
	  with or without the 1190-EV1 fitted.

config MACH_NCP
	bool "NCP"
	select CPU_S3C6410
	select S3C_DEV_I2C1
	select S3C_DEV_HSMMC1
	select S3C64XX_SETUP_I2C1
	help
          Machine support for the Samsung NCP

config MACH_HMT
	bool "Airgoo HMT"
	select CPU_S3C6410
	select S3C_DEV_FB
	select S3C_DEV_NAND
	select S3C_DEV_USB_HOST
	select S3C64XX_SETUP_FB_24BPP
	select HAVE_PWM
	help
	  Machine support for the Airgoo HMT
