config ARCH_SHMOBILE
	bool

menuconfig ARCH_SHMOBILE_MULTI
	bool "Renesas ARM SoCs" if ARCH_MULTI_V7
	depends on MMU
	select ARCH_SHMOBILE
	select HAVE_ARM_SCU if SMP
	select HAVE_ARM_TWD if SMP
	select ARM_GIC
	select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE
	select NO_IOPORT_MAP
	select PINCTRL
	select ARCH_REQUIRE_GPIOLIB
	select ARCH_HAS_OPP

if ARCH_SHMOBILE_MULTI

#comment "Renesas ARM SoCs System Type"

config ARCH_EMEV2
	bool "Emma Mobile EV2"
	select SYS_SUPPORTS_EM_STI

config ARCH_R7S72100
	bool "RZ/A1H (R7S72100)"
	select SYS_SUPPORTS_SH_MTU2

config ARCH_R8A7779
	bool "R-Car H1 (R8A77790)"
	select RENESAS_INTC_IRQPIN
	select SYS_SUPPORTS_SH_TMU

config ARCH_R8A7790
	bool "R-Car H2 (R8A77900)"
	select RENESAS_IRQC
	select SYS_SUPPORTS_SH_CMT

config ARCH_R8A7791
	bool "R-Car M2 (R8A77910)"
	select RENESAS_IRQC
	select SYS_SUPPORTS_SH_CMT

comment "Renesas ARM SoCs Board Type"

config MACH_KOELSCH
	bool "Koelsch board"
	depends on ARCH_R8A7791
	select MICREL_PHY if SH_ETH

config MACH_LAGER
	bool "Lager board"
	depends on ARCH_R8A7790
	select MICREL_PHY if SH_ETH

config MACH_MARZEN
	bool "MARZEN board"
	depends on ARCH_R8A7779
	select REGULATOR_FIXED_VOLTAGE if REGULATOR

comment "Renesas ARM SoCs System Configuration"
endif

if ARCH_SHMOBILE_LEGACY

comment "Renesas ARM SoCs System Type"

config ARCH_SH7372
	bool "SH-Mobile AP4 (SH7372)"
	select ARCH_WANT_OPTIONAL_GPIOLIB
	select ARM_CPU_SUSPEND if PM || CPU_IDLE
	select CPU_V7
	select SH_CLK_CPG
	select SYS_SUPPORTS_SH_CMT
	select SYS_SUPPORTS_SH_TMU

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

config ARCH_R8A73A4
	bool "R-Mobile APE6 (R8A73A40)"
	select ARCH_WANT_OPTIONAL_GPIOLIB
	select ARM_GIC
	select CPU_V7
	select SH_CLK_CPG
	select RENESAS_IRQC
	select SYS_SUPPORTS_SH_CMT
	select SYS_SUPPORTS_SH_TMU

config ARCH_R8A7740
	bool "R-Mobile A1 (R8A77400)"
	select ARCH_WANT_OPTIONAL_GPIOLIB
	select ARM_GIC
	select CPU_V7
	select SH_CLK_CPG
	select RENESAS_INTC_IRQPIN
	select SYS_SUPPORTS_SH_CMT
	select SYS_SUPPORTS_SH_TMU

config ARCH_R8A7778
	bool "R-Car M1A (R8A77781)"
	select ARCH_WANT_OPTIONAL_GPIOLIB
	select CPU_V7
	select SH_CLK_CPG
	select ARM_GIC
	select SYS_SUPPORTS_SH_TMU
	select RENESAS_INTC_IRQPIN

config ARCH_R8A7779
	bool "R-Car H1 (R8A77790)"
	select ARCH_WANT_OPTIONAL_GPIOLIB
	select ARM_GIC
	select CPU_V7
	select SH_CLK_CPG
	select RENESAS_INTC_IRQPIN
	select SYS_SUPPORTS_SH_TMU

config ARCH_R8A7790
	bool "R-Car H2 (R8A77900)"
	select ARCH_WANT_OPTIONAL_GPIOLIB
	select ARM_GIC
	select CPU_V7
	select MIGHT_HAVE_PCI
	select SH_CLK_CPG
	select RENESAS_IRQC
	select SYS_SUPPORTS_SH_CMT
	select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE

config ARCH_R8A7791
	bool "R-Car M2 (R8A77910)"
	select ARCH_WANT_OPTIONAL_GPIOLIB
	select ARM_GIC
	select CPU_V7
	select MIGHT_HAVE_PCI
	select SH_CLK_CPG
	select RENESAS_IRQC
	select SYS_SUPPORTS_SH_CMT
	select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE

config ARCH_R7S72100
	bool "RZ/A1H (R7S72100)"
	select ARCH_WANT_OPTIONAL_GPIOLIB
	select ARM_GIC
	select CPU_V7
	select SH_CLK_CPG
	select SYS_SUPPORTS_SH_MTU2

comment "Renesas ARM SoCs Board Type"

config MACH_APE6EVM
	bool "APE6EVM board"
	depends on ARCH_R8A73A4
	select SMSC_PHY if SMSC911X
	select USE_OF

config MACH_APE6EVM_REFERENCE
	bool "APE6EVM board - Reference Device Tree Implementation"
	depends on ARCH_R8A73A4
	select SMSC_PHY if SMSC911X
	select USE_OF
	---help---
	   Use reference implementation of APE6EVM board support
	   which makes a greater use of device tree at the expense
	   of not supporting a number of devices.

	   This is intended to aid developers

config MACH_MACKEREL
	bool "mackerel board"
	depends on ARCH_SH7372
	select ARCH_REQUIRE_GPIOLIB
	select REGULATOR_FIXED_VOLTAGE if REGULATOR
	select SMSC_PHY if SMSC911X
	select SND_SOC_AK4642 if SND_SIMPLE_CARD
	select USE_OF

config MACH_ARMADILLO800EVA
	bool "Armadillo-800 EVA board"
	depends on ARCH_R8A7740
	select ARCH_REQUIRE_GPIOLIB
	select REGULATOR_FIXED_VOLTAGE if REGULATOR
	select SMSC_PHY if SH_ETH
	select SND_SOC_WM8978 if SND_SIMPLE_CARD
	select USE_OF

config MACH_ARMADILLO800EVA_REFERENCE
	bool "Armadillo-800 EVA board - Reference Device Tree Implementation"
	depends on ARCH_R8A7740
	select ARCH_REQUIRE_GPIOLIB
	select REGULATOR_FIXED_VOLTAGE if REGULATOR
	select SMSC_PHY if SH_ETH
	select SND_SOC_WM8978 if SND_SIMPLE_CARD
	select USE_OF
	---help---
	   Use reference implementation of Armadillo800 EVA board support
	   which makes greater use of device tree at the expense
	   of not supporting a number of devices.

	   This is intended to aid developers

config MACH_BOCKW
	bool "BOCK-W platform"
	depends on ARCH_R8A7778
	select ARCH_REQUIRE_GPIOLIB
	select REGULATOR_FIXED_VOLTAGE if REGULATOR
	select SND_SOC_AK4554 if SND_SIMPLE_CARD
	select SND_SOC_AK4642 if SND_SIMPLE_CARD
	select USE_OF

config MACH_BOCKW_REFERENCE
	bool "BOCK-W  - Reference Device Tree Implementation"
	depends on ARCH_R8A7778
	select ARCH_REQUIRE_GPIOLIB
	select REGULATOR_FIXED_VOLTAGE if REGULATOR
	select USE_OF
	---help---
	   Use reference implementation of BockW board support
	   which makes use of device tree at the expense
	   of not supporting a number of devices.

	   This is intended to aid developers

config MACH_MARZEN
	bool "MARZEN board"
	depends on ARCH_R8A7779
	select ARCH_REQUIRE_GPIOLIB
	select REGULATOR_FIXED_VOLTAGE if REGULATOR
	select USE_OF

config MACH_LAGER
	bool "Lager board"
	depends on ARCH_R8A7790
	select USE_OF
	select MICREL_PHY if SH_ETH
	select SND_SOC_AK4642 if SND_SIMPLE_CARD

config MACH_KOELSCH
	bool "Koelsch board"
	depends on ARCH_R8A7791
	select USE_OF
	select MICREL_PHY if SH_ETH

config MACH_KZM9G
	bool "KZM-A9-GT board"
	depends on ARCH_SH73A0
	select ARCH_REQUIRE_GPIOLIB
	select REGULATOR_FIXED_VOLTAGE if REGULATOR
	select SND_SOC_AK4642 if SND_SIMPLE_CARD
	select USE_OF

config MACH_KZM9G_REFERENCE
	bool "KZM-A9-GT board - Reference Device Tree Implementation"
	depends on ARCH_SH73A0
	select ARCH_REQUIRE_GPIOLIB
	select REGULATOR_FIXED_VOLTAGE if REGULATOR
	select SND_SOC_AK4642 if SND_SIMPLE_CARD
	select USE_OF
	---help---
	   Use reference implementation of KZM-A9-GT board support
	   which makes as greater use of device tree at the expense
	   of not supporting a number of devices.

	   This is intended to aid developers

comment "Renesas ARM SoCs System Configuration"

config CPU_HAS_INTEVT
        bool
	default y

config SH_CLK_CPG
	bool

source "drivers/sh/Kconfig"

endif

if ARCH_SHMOBILE

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.
	  Renesas ARM SoC 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.

endmenu

endif
