config ARCH_SHMOBILE
	bool

config PM_RCAR
	bool

config ARCH_RCAR_GEN1
	bool
	select PM_RCAR if PM || SMP
	select RENESAS_INTC_IRQPIN
	select SYS_SUPPORTS_SH_TMU

config ARCH_RCAR_GEN2
	bool
	select PM_RCAR if PM || SMP
	select RENESAS_IRQC
	select SYS_SUPPORTS_SH_CMT

config ARCH_RMOBILE
	bool
	select SYS_SUPPORTS_SH_CMT
	select SYS_SUPPORTS_SH_TMU

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 ARCH_RCAR_GEN1

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

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

comment "Renesas ARM SoCs Board Type"

config MACH_GENMAI
	bool "Genmai board"
	depends on ARCH_R7S72100

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_RMOBILE
	select ARCH_WANT_OPTIONAL_GPIOLIB
	select ARM_CPU_SUSPEND if PM || CPU_IDLE
	select CPU_V7
	select SH_CLK_CPG
	select SH_INTC

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

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

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

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

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

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

config ARCH_R8A7791
	bool "R-Car M2 (R8A77910)"
	select ARCH_RCAR_GEN2
	select ARCH_WANT_OPTIONAL_GPIOLIB
	select ARM_GIC
	select CPU_V7
	select MIGHT_HAVE_PCI
	select SH_CLK_CPG
	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_GENMAI
	bool "Genmai board"
	depends on ARCH_R7S72100
	select USE_OF

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
