if ARCH_SHMOBILE

comment "SH-Mobile System Type"

config ARCH_SH7367
	bool "SH-Mobile G3 (SH7367)"
	select CPU_V6
	select SH_CLK_CPG
	select ARCH_WANT_OPTIONAL_GPIOLIB

config ARCH_SH7377
	bool "SH-Mobile G4 (SH7377)"
	select CPU_V7
	select SH_CLK_CPG
	select ARCH_WANT_OPTIONAL_GPIOLIB

config ARCH_SH7372
	bool "SH-Mobile AP4 (SH7372)"
	select CPU_V7
	select SH_CLK_CPG
	select ARCH_WANT_OPTIONAL_GPIOLIB

config ARCH_SH73A0
	bool "SH-Mobile AG5 (R8A73A00)"
	select CPU_V7
	select SH_CLK_CPG
	select ARCH_WANT_OPTIONAL_GPIOLIB
	select ARM_GIC
	select I2C

comment "SH-Mobile Board Type"

config MACH_G3EVM
	bool "G3EVM board"
	depends on ARCH_SH7367
	select ARCH_REQUIRE_GPIOLIB

config MACH_G4EVM
	bool "G4EVM board"
	depends on ARCH_SH7377
	select ARCH_REQUIRE_GPIOLIB

config MACH_AP4EVB
	bool "AP4EVB board"
	depends on ARCH_SH7372
	select ARCH_REQUIRE_GPIOLIB
	select SH_LCD_MIPI_DSI

choice
	prompt "AP4EVB LCD panel selection"
	default AP4EVB_QHD
	depends on MACH_AP4EVB

config AP4EVB_QHD
	bool "MIPI-DSI QHD (960x540)"

config AP4EVB_WVGA
	bool "Parallel WVGA (800x480)"

endchoice

config MACH_AG5EVM
	bool "AG5EVM board"
	select ARCH_REQUIRE_GPIOLIB
	select SH_LCD_MIPI_DSI
	depends on ARCH_SH73A0

config MACH_MACKEREL
	bool "mackerel board"
	depends on ARCH_SH7372
	select ARCH_REQUIRE_GPIOLIB

config MACH_KOTA2
	bool "KOTA2 board"
	select ARCH_REQUIRE_GPIOLIB
	depends on ARCH_SH73A0

comment "SH-Mobile System Configuration"

menu "Memory configuration"

config MEMORY_START
	hex "Physical memory start address"
	default "0x50000000" if MACH_G3EVM
	default "0x40000000" if MACH_G4EVM || MACH_AP4EVB || MACH_AG5EVM || \
				MACH_MACKEREL
	default "0x41000000" if MACH_KOTA2
	default "0x00000000"
	---help---
	  Tweak this only when porting to a new machine which does not
	  already have a defconfig. Changing it from the known correct
	  value on any of the known systems will only lead to disaster.

config MEMORY_SIZE
	hex "Physical memory size"
	default "0x08000000" if MACH_G3EVM
	default "0x08000000" if MACH_G4EVM
	default "0x20000000" if MACH_AG5EVM
	default "0x1e000000" if MACH_KOTA2
	default "0x10000000" if MACH_AP4EVB || MACH_MACKEREL
	default "0x04000000"
	help
	  This sets the default memory size assumed by your kernel. It can
	  be overridden as normal by the 'mem=' argument on the kernel command
	  line.

endmenu

menu "Timer and clock configuration"

config SHMOBILE_TIMER_HZ
	int "Kernel HZ (jiffies per second)"
	range 32 1024
	default "128"
	help
	  Allows the configuration of the timer frequency. It is customary
	  to have the timer interrupt run at 1000 Hz or 100 Hz, but in the
	  case of low timer frequencies other values may be more suitable.
	  SH-Mobile systems using a 32768 Hz RCLK for clock events may want
	  to select a HZ value such as 128 that can evenly divide RCLK.
	  A HZ value that does not divide evenly may cause timer drift.

config SH_TIMER_CMT
	bool "CMT timer driver"
	default y
	help
	  This enables build of the CMT timer driver.

config SH_TIMER_TMU
	bool "TMU timer driver"
	default y
	help
	  This enables build of the TMU timer driver.

endmenu

config SH_CLK_CPG
	bool

source "drivers/sh/Kconfig"

endif
