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

# Configuration options for the S5PV310

if ARCH_S5PV310

config CPU_S5PV310
	bool
	select S3C_PL330_DMA
	help
	  Enable S5PV310 CPU support

config S5PV310_SETUP_I2C1
	bool
	help
	  Common setup code for i2c bus 1.

config S5PV310_SETUP_I2C2
	bool
	help
	  Common setup code for i2c bus 2.

config S5PV310_SETUP_I2C3
	bool
	help
	  Common setup code for i2c bus 3.

config S5PV310_SETUP_I2C4
	bool
	help
	  Common setup code for i2c bus 4.

config S5PV310_SETUP_I2C5
	bool
	help
	  Common setup code for i2c bus 5.

config S5PV310_SETUP_I2C6
	bool
	help
	  Common setup code for i2c bus 6.

config S5PV310_SETUP_I2C7
	bool
	help
	  Common setup code for i2c bus 7.

config S5PV310_SETUP_SDHCI
	bool
	select S5PV310_SETUP_SDHCI_GPIO
	help
	  Internal helper functions for S5PV310 based SDHCI systems.

config S5PV310_SETUP_SDHCI_GPIO
	bool
	help
	  Common setup code for SDHCI gpio.

# machine support

menu "S5PC210 Machines"

config MACH_SMDKC210
	bool "SMDKC210"
	select CPU_S5PV310
	select S3C_DEV_RTC
	select S3C_DEV_WDT
	select S3C_DEV_HSMMC
	select S3C_DEV_HSMMC1
	select S3C_DEV_HSMMC2
	select S3C_DEV_HSMMC3
	select S5PV310_SETUP_SDHCI
	help
	  Machine support for Samsung SMDKC210
	  S5PC210(MCP) is one of package option of S5PV310

config MACH_UNIVERSAL_C210
	bool "Mobile UNIVERSAL_C210 Board"
	select CPU_S5PV310
	select S5P_DEV_ONENAND
	select S3C_DEV_I2C1
	select S5PV310_SETUP_I2C1
	help
	  Machine support for Samsung Mobile Universal S5PC210 Reference
	  Board. S5PC210(MCP) is one of package option of S5PV310

endmenu

menu "S5PV310 Machines"

config MACH_SMDKV310
	bool "SMDKV310"
	select CPU_S5PV310
	select S3C_DEV_RTC
	select S3C_DEV_WDT
	select S3C_DEV_HSMMC
	select S3C_DEV_HSMMC1
	select S3C_DEV_HSMMC2
	select S3C_DEV_HSMMC3
	select S5PV310_SETUP_SDHCI
	help
	  Machine support for Samsung SMDKV310

endmenu

comment "Configuration for HSMMC bus width"

menu "Use 8-bit bus width"

config S5PV310_SDHCI_CH0_8BIT
	bool "Channel 0 with 8-bit bus"
	help
	  Support HSMMC Channel 0 8-bit bus.
	  If selected, Channel 1 is disabled.

config S5PV310_SDHCI_CH2_8BIT
	bool "Channel 2 with 8-bit bus"
	help
	  Support HSMMC Channel 2 8-bit bus.
	  If selected, Channel 3 is disabled.

endmenu

endif
