# Copyright 2008 Openmoko, Inc.
# Copyright 2008 Simtec Electronics
#	Ben Dooks <ben@simtec.co.uk>
#
# Licensed under GPLv2

config PLAT_S3C64XX
	bool
	depends on ARCH_S3C64XX
	default y
	select CPU_V6
	select PLAT_S3C
	select ARM_VIC
	select NO_IOPORT
	select ARCH_REQUIRE_GPIOLIB
	select SAMSUNG_CLKSRC
	select S3C_GPIO_TRACK
	select S3C_GPIO_PULL_UPDOWN
	select S3C_GPIO_CFG_S3C24XX
	select S3C_GPIO_CFG_S3C64XX
	select S3C_DEV_NAND
	select USB_ARCH_HAS_OHCI
	help
	  Base platform code for any Samsung S3C64XX device

if PLAT_S3C64XX

# Configuration options shared by all S3C64XX implementations

config CPU_S3C6400_INIT
	bool
	help
	  Common initialisation code for the S3C6400 that is shared
	  by other CPUs in the series, such as the S3C6410.

config CPU_S3C6400_CLOCK
	bool
	help
	  Common clock support code for the S3C6400 that is shared
	  by other CPUs in the series, such as the S3C6410.

config S3C64XX_DMA
	bool "S3C64XX DMA"
	select S3C_DMA

# platform specific device setup

config S3C64XX_SETUP_I2C0
	bool
	default y
	help
	  Common setup code for i2c bus 0.

	  Note, currently since i2c0 is always compiled, this setup helper
	  is always compiled with it.

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

config S3C64XX_SETUP_FB_24BPP
	bool
	help
	  Common setup code for S3C64XX with an 24bpp RGB display helper.

config S3C64XX_SETUP_SDHCI_GPIO
	bool
	help
	  Common setup code for S3C64XX SDHCI GPIO configurations

endif
