# SPDX-License-Identifier: GPL-2.0
#
# Copyright 2008 Openmoko, Inc.
#	Simtec Electronics, Ben Dooks <ben@simtec.co.uk>

menuconfig ARCH_S3C64XX
	bool "Samsung S3C64XX (deprecated, see help)"
	depends on ARCH_MULTI_V6
	select ARM_AMBA
	select ARM_VIC
	select CLKSRC_SAMSUNG_PWM
	select COMMON_CLK_SAMSUNG
	select GPIO_SAMSUNG if ATAGS
	select GPIOLIB
	select HAVE_TCM
	select PLAT_SAMSUNG
	select PM_GENERIC_DOMAINS if PM
	select S3C_GPIO_TRACK if ATAGS
	select S3C2410_WATCHDOG
	select SAMSUNG_ATAGS if ATAGS
	select SAMSUNG_WAKEMASK if PM
	select WATCHDOG
	help
	  Samsung S3C64XX series based systems

	  The platform is deprecated and scheduled for removal. Please reach to
	  the maintainers of the platform and linux-samsung-soc@vger.kernel.org if
	  you still use it.
	  Without such feedback, the platform will be removed after 2024.

if ARCH_S3C64XX

# Configuration options for the S3C6410 CPU

config CPU_S3C6400
	bool
	help
	  Enable S3C6400 CPU support

config CPU_S3C6410
	bool
	help
	  Enable S3C6410 CPU support

config S3C64XX_PL080
	def_bool DMADEVICES
	select AMBA_PL08X

config S3C64XX_SETUP_SDHCI
	bool
	select S3C64XX_SETUP_SDHCI_GPIO
	help
	  Internal configuration for default SDHCI setup for S3C6400 and
	  S3C6410 SoCs.

# 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_KEYPAD
	bool
	help
	  Common setup code for S3C64XX KEYPAD GPIO configurations

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

config S3C64XX_SETUP_SPI
	bool
	help
	  Common setup code for SPI GPIO configurations

config S3C64XX_SETUP_USB_PHY
	bool
	help
	  Common setup code for USB PHY controller

# S36400 Macchine support

config MACH_WLF_CRAGG_6410
	bool "Wolfson Cragganmore 6410"
	depends on ATAGS
	depends on I2C=y
	select CPU_S3C6410
	select LEDS_GPIO_REGISTER
	select S3C64XX_DEV_SPI0
	select S3C64XX_SETUP_FB_24BPP
	select S3C64XX_SETUP_I2C1
	select S3C64XX_SETUP_KEYPAD
	select S3C64XX_SETUP_SDHCI
	select S3C64XX_SETUP_SPI
	select S3C64XX_SETUP_USB_PHY
	select S3C_DEV_FB
	select S3C_DEV_HSMMC
	select S3C_DEV_HSMMC1
	select S3C_DEV_HSMMC2
	select S3C_DEV_I2C1
	select S3C_DEV_USB_HOST
	select S3C_DEV_USB_HSOTG
	select SAMSUNG_DEV_KEYPAD
	select SAMSUNG_DEV_PWM
	help
	  Machine support for the Wolfson Cragganmore S3C6410 variant.

config MACH_S3C64XX_DT
	bool "Samsung S3C6400/S3C6410 machine using Device Tree"
	select CPU_S3C6400
	select CPU_S3C6410
	select PINCTRL
	select PINCTRL_S3C64XX
	help
	  Machine support for Samsung S3C6400/S3C6410 machines with Device Tree
	  enabled.
	  Select this if a fdt blob is available for your S3C64XX SoC based
	  board.
	  Note: This is under development and not all peripherals can be
	  supported with this machine file.

endif
