From f3d2229852697062d530f19742f0ab792b92873d Mon Sep 17 00:00:00 2001
From: Paul Mundt <lethal@linux-sh.org>
Date: Mon, 14 May 2007 17:29:12 +0900
Subject: sh: Rework CPU/board dependencies.

This was a big mess, rework the logic a bit so that we constrain
to a particular subtype and figure out the board support based
on that. This makes building subtype specific kernels supporting
multiple boards possible again.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
---
 arch/sh/Kconfig                        | 296 +++++++++++++++++----------------
 arch/sh/boards/renesas/r7780rp/Kconfig |   6 +-
 arch/sh/mm/Kconfig                     |  21 +--
 3 files changed, 165 insertions(+), 158 deletions(-)

(limited to 'arch/sh')

diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index 038179ecf6a..4c9d8fc59fe 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -81,24 +81,146 @@ source "init/Kconfig"
 
 menu "System type"
 
-config SOLUTION_ENGINE
-	bool
+source "arch/sh/mm/Kconfig"
+
+menu "Processor features"
 
 choice
-	prompt "SuperH system type"
-	default SH_UNKNOWN
+	prompt "Endianess selection" 
+	default CPU_LITTLE_ENDIAN
+	help
+	  Some SuperH machines can be configured for either little or big
+	  endian byte order. These modes require different kernels.
+
+config CPU_LITTLE_ENDIAN
+	bool "Little Endian"
+
+config CPU_BIG_ENDIAN
+	bool "Big Endian"
+
+endchoice
+
+config SH_FPU
+	bool "FPU support"
+	depends on !CPU_SH3
+	default y
+	help
+	  Selecting this option will enable support for SH processors that
+	  have FPU units (ie, SH77xx).
+
+	  This option must be set in order to enable the FPU.
+
+config SH_FPU_EMU
+	bool "FPU emulation support"
+	depends on !SH_FPU && EXPERIMENTAL
+	default n
+	help
+	  Selecting this option will enable support for software FPU emulation.
+	  Most SH-3 users will want to say Y here, whereas most SH-4 users will
+	  want to say N.
+
+config SH_DSP
+	bool "DSP support"
+	default y if SH4AL_DSP || !CPU_SH4
+	default n
+	help
+	  Selecting this option will enable support for SH processors that
+	  have DSP units (ie, SH2-DSP, SH3-DSP, and SH4AL-DSP).
+
+	  This option must be set in order to enable the DSP.
+
+config SH_ADC
+	bool "ADC support"
+	depends on CPU_SH3
+	default y
+	help
+	  Selecting this option will allow the Linux kernel to use SH3 on-chip
+	  ADC module.
+
+	  If unsure, say N.
+
+config SH_STORE_QUEUES
+	bool "Support for Store Queues"
+	depends on CPU_SH4
+	help
+	  Selecting this option will enable an in-kernel API for manipulating
+	  the store queues integrated in the SH-4 processors.
+
+config SPECULATIVE_EXECUTION
+	bool "Speculative subroutine return"
+	depends on CPU_SUBTYPE_SH7780 && EXPERIMENTAL
+	help
+	  This enables support for a speculative instruction fetch for
+	  subroutine return. There are various pitfalls associated with
+	  this, as outlined in the SH7780 hardware manual.
+
+	  If unsure, say N.
+
+config CPU_HAS_INTEVT
+	bool
+
+config CPU_HAS_PINT_IRQ
+	bool
+
+config CPU_HAS_MASKREG_IRQ
+	bool
+
+config CPU_HAS_INTC2_IRQ
+	bool
+
+config CPU_HAS_IPR_IRQ
+	bool
+
+config CPU_HAS_SR_RB
+	bool "CPU has SR.RB"
+	depends on CPU_SH3 || CPU_SH4
+	default y
+	help
+	  This will enable the use of SR.RB register bank usage. Processors
+	  that are lacking this bit must have another method in place for
+	  accomplishing what is taken care of by the banked registers.
+
+	  See <file:Documentation/sh/register-banks.txt> for further
+	  information on SR.RB and register banking in the kernel in general.
+
+config CPU_HAS_PTEA
+	bool
+
+endmenu
+
+menu "Board support"
+
+config SOLUTION_ENGINE
+	bool
 
 config SH_SOLUTION_ENGINE
 	bool "SolutionEngine"
 	select SOLUTION_ENGINE
+	depends on CPU_SUBTYPE_SH7709 || CPU_SUBTYPE_SH7750
 	help
 	  Select SolutionEngine if configuring for a Hitachi SH7709
 	  or SH7750 evaluation board.
 
+config SH_7206_SOLUTION_ENGINE
+	bool "SolutionEngine7206"
+	select SOLUTION_ENGINE
+	depends on CPU_SUBTYPE_SH7206
+	help
+	  Select 7206 SolutionEngine if configuring for a Hitachi SH7206
+	  evaluation board.
+
+config SH_7619_SOLUTION_ENGINE
+	bool "SolutionEngine7619"
+	select SOLUTION_ENGINE
+	depends on CPU_SUBTYPE_SH7619
+	help
+	  Select 7619 SolutionEngine if configuring for a Hitachi SH7619
+	  evaluation board.
+	
 config SH_7722_SOLUTION_ENGINE
 	bool "SolutionEngine7722"
 	select SOLUTION_ENGINE
-	select CPU_SUBTYPE_SH7722
+	depends on CPU_SUBTYPE_SH7722
 	help
 	  Select 7722 SolutionEngine if configuring for a Hitachi SH772
 	  evaluation board.
@@ -106,7 +228,7 @@ config SH_7722_SOLUTION_ENGINE
 config SH_7751_SOLUTION_ENGINE
 	bool "SolutionEngine7751"
 	select SOLUTION_ENGINE
-	select CPU_SUBTYPE_SH7751
+	depends on CPU_SUBTYPE_SH7751
 	help
 	  Select 7751 SolutionEngine if configuring for a Hitachi SH7751
 	  evaluation board.
@@ -114,7 +236,7 @@ config SH_7751_SOLUTION_ENGINE
 config SH_7780_SOLUTION_ENGINE
 	bool "SolutionEngine7780"
 	select SOLUTION_ENGINE
-	select CPU_SUBTYPE_SH7780
+	depends on CPU_SUBTYPE_SH7780
 	help
 	  Select 7780 SolutionEngine if configuring for a Renesas SH7780
 	  evaluation board.
@@ -122,7 +244,7 @@ config SH_7780_SOLUTION_ENGINE
 config SH_7300_SOLUTION_ENGINE
 	bool "SolutionEngine7300"
 	select SOLUTION_ENGINE
-	select CPU_SUBTYPE_SH7300
+	depends on CPU_SUBTYPE_SH7300
 	help
 	  Select 7300 SolutionEngine if configuring for a Hitachi
 	  SH7300(SH-Mobile V) evaluation board.
@@ -130,22 +252,22 @@ config SH_7300_SOLUTION_ENGINE
 config SH_7343_SOLUTION_ENGINE
 	bool "SolutionEngine7343"
 	select SOLUTION_ENGINE
-	select CPU_SUBTYPE_SH7343
+	depends on CPU_SUBTYPE_SH7343
 	help
 	  Select 7343 SolutionEngine if configuring for a Hitachi
 	  SH7343 (SH-Mobile 3AS) evaluation board.
 
 config SH_73180_SOLUTION_ENGINE
-       bool "SolutionEngine73180"
+	bool "SolutionEngine73180"
 	select SOLUTION_ENGINE
-	select CPU_SUBTYPE_SH73180
+	depends on CPU_SUBTYPE_SH73180
 	help
 	  Select 73180 SolutionEngine if configuring for a Hitachi
 	  SH73180(SH-Mobile 3) evaluation board.
 
 config SH_7751_SYSTEMH
 	bool "SystemH7751R"
-	select CPU_SUBTYPE_SH7751R
+	depends on CPU_SUBTYPE_SH7751R
 	help
 	  Select SystemH if you are configuring for a Renesas SystemH
 	  7751R evaluation board.
@@ -153,6 +275,7 @@ config SH_7751_SYSTEMH
 config SH_HP6XX
 	bool "HP6XX"
 	select SYS_SUPPORTS_APM_EMULATION
+	depends on CPU_SUBTYPE_SH7709
 	help
 	  Select HP6XX if configuring for a HP jornada HP6xx.
 	  More information (hardware only) at
@@ -160,13 +283,13 @@ config SH_HP6XX
 
 config SH_SATURN
 	bool "Saturn"
-	select CPU_SUBTYPE_SH7604
+	depends on CPU_SUBTYPE_SH7604
 	help
 	  Select Saturn if configuring for a SEGA Saturn.
 
 config SH_DREAMCAST
 	bool "Dreamcast"
-	select CPU_SUBTYPE_SH7091
+	depends on CPU_SUBTYPE_SH7091
 	help
 	  Select Dreamcast if configuring for a SEGA Dreamcast.
 	  More information at
@@ -175,6 +298,7 @@ config SH_DREAMCAST
 
 config SH_MPC1211
 	bool "Interface MPC1211"
+	depends on CPU_SUBTYPE_SH7751 && BROKEN
 	help
 	  CTP/PCI-SH02 is a CPU module computer that is produced
 	  by Interface Corporation.
@@ -182,6 +306,7 @@ config SH_MPC1211
 
 config SH_SH03
 	bool "Interface CTP/PCI-SH03"
+	depends on CPU_SUBTYPE_SH7751 && BROKEN
 	help
 	  CTP/PCI-SH03 is a CPU module computer that is produced
 	  by Interface Corporation.
@@ -189,7 +314,7 @@ config SH_SH03
 
 config SH_SECUREEDGE5410
 	bool "SecureEdge5410"
-	select CPU_SUBTYPE_SH7751R
+	depends on CPU_SUBTYPE_SH7751R
 	help
 	  Select SecureEdge5410 if configuring for a SnapGear SH board.
 	  This includes both the OEM SecureEdge products as well as the
@@ -197,75 +322,62 @@ config SH_SECUREEDGE5410
 
 config SH_HS7751RVOIP
 	bool "HS7751RVOIP"
-	select CPU_SUBTYPE_SH7751R
+	depends on CPU_SUBTYPE_SH7751R
 	help
 	  Select HS7751RVOIP if configuring for a Renesas Technology
 	  Sales VoIP board.
 
 config SH_7710VOIPGW
 	bool "SH7710-VOIP-GW"
-	select CPU_SUBTYPE_SH7710
+	depends on CPU_SUBTYPE_SH7710
 	help
 	  Select this option to build a kernel for the SH7710 based
 	  VOIP GW.
 
 config SH_RTS7751R2D
 	bool "RTS7751R2D"
-	select CPU_SUBTYPE_SH7751R
+	depends on CPU_SUBTYPE_SH7751R
 	help
 	  Select RTS7751R2D if configuring for a Renesas Technology
 	  Sales SH-Graphics board.
 
 config SH_HIGHLANDER
 	bool "Highlander"
+	depends on CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7785
 
 config SH_EDOSK7705
 	bool "EDOSK7705"
-	select CPU_SUBTYPE_SH7705
+	depends on CPU_SUBTYPE_SH7705
 
 config SH_SH4202_MICRODEV
 	bool "SH4-202 MicroDev"
-	select CPU_SUBTYPE_SH4_202
+	depends on CPU_SUBTYPE_SH4_202
 	help
 	  Select SH4-202 MicroDev if configuring for a SuperH MicroDev board
 	  with an SH4-202 CPU.
 
 config SH_LANDISK
 	bool "LANDISK"
-	select CPU_SUBTYPE_SH7751R
+	depends on CPU_SUBTYPE_SH7751R
 	help
 	  I-O DATA DEVICE, INC. "LANDISK Series" support.
 
 config SH_TITAN
 	bool "TITAN"
-	select CPU_SUBTYPE_SH7751R
+	depends on CPU_SUBTYPE_SH7751R
 	help
 	  Select Titan if you are configuring for a Nimble Microsystems
 	  NetEngine NP51R.
 
 config SH_SHMIN
 	bool "SHMIN"
-	select CPU_SUBTYPE_SH7706
+	depends on CPU_SUBTYPE_SH7706
 	help
 	  Select SHMIN if configuring for the SHMIN board.
 
-config SH_7206_SOLUTION_ENGINE
-	bool "SolutionEngine7206"
-	select CPU_SUBTYPE_SH7206
-	help
-	  Select 7206 SolutionEngine if configuring for a Hitachi SH7206
-	  evaluation board.
-
-config SH_7619_SOLUTION_ENGINE
-	bool "SolutionEngine7619"
-	select CPU_SUBTYPE_SH7619
-	help
-	  Select 7619 SolutionEngine if configuring for a Hitachi SH7619
-	  evaluation board.
-	
 config SH_LBOX_RE2
 	bool "L-BOX RE2"
-	select CPU_SUBTYPE_SH7751R
+	depends on CPU_SUBTYPE_SH7751R
 	help
 	  Select L-BOX RE2 if configuring for the NTT COMWARE L-BOX RE2.
 
@@ -281,14 +393,12 @@ config SH_UNKNOWN
 
 	  This option is for the early stages of porting to a new machine.
 
-endchoice
+endmenu
 
 source "arch/sh/boards/renesas/hs7751rvoip/Kconfig"
 source "arch/sh/boards/renesas/rts7751r2d/Kconfig"
 source "arch/sh/boards/renesas/r7780rp/Kconfig"
 
-source "arch/sh/mm/Kconfig"
-
 config CF_ENABLER
 	bool "Compact Flash Enabler support"
 	depends on SH_SOLUTION_ENGINE || SH_UNKNOWN || SH_SH03
@@ -332,110 +442,6 @@ config CF_BASE_ADDR
 	default "0xb8000000" if CF_AREA6
 	default "0xb4000000" if CF_AREA5
 
-menu "Processor features"
-
-choice
-	prompt "Endianess selection" 
-	default CPU_LITTLE_ENDIAN
-	help
-	  Some SuperH machines can be configured for either little or big
-	  endian byte order. These modes require different kernels.
-
-config CPU_LITTLE_ENDIAN
-	bool "Little Endian"
-
-config CPU_BIG_ENDIAN
-	bool "Big Endian"
-
-endchoice
-
-config SH_FPU
-	bool "FPU support"
-	depends on !CPU_SH3
-	default y
-	help
-	  Selecting this option will enable support for SH processors that
-	  have FPU units (ie, SH77xx).
-
-	  This option must be set in order to enable the FPU.
-
-config SH_FPU_EMU
-	bool "FPU emulation support"
-	depends on !SH_FPU && EXPERIMENTAL
-	default n
-	help
-	  Selecting this option will enable support for software FPU emulation.
-	  Most SH-3 users will want to say Y here, whereas most SH-4 users will
-	  want to say N.
-
-config SH_DSP
-	bool "DSP support"
-	default y if SH4AL_DSP || !CPU_SH4
-	default n
-	help
-	  Selecting this option will enable support for SH processors that
-	  have DSP units (ie, SH2-DSP, SH3-DSP, and SH4AL-DSP).
-
-	  This option must be set in order to enable the DSP.
-
-config SH_ADC
-	bool "ADC support"
-	depends on CPU_SH3
-	default y
-	help
-	  Selecting this option will allow the Linux kernel to use SH3 on-chip
-	  ADC module.
-
-	  If unsure, say N.
-
-config SH_STORE_QUEUES
-	bool "Support for Store Queues"
-	depends on CPU_SH4
-	help
-	  Selecting this option will enable an in-kernel API for manipulating
-	  the store queues integrated in the SH-4 processors.
-
-config SPECULATIVE_EXECUTION
-	bool "Speculative subroutine return"
-	depends on CPU_SUBTYPE_SH7780 && EXPERIMENTAL
-	help
-	  This enables support for a speculative instruction fetch for
-	  subroutine return. There are various pitfalls associated with
-	  this, as outlined in the SH7780 hardware manual.
-
-	  If unsure, say N.
-
-config CPU_HAS_INTEVT
-	bool
-
-config CPU_HAS_PINT_IRQ
-	bool
-
-config CPU_HAS_MASKREG_IRQ
-	bool
-
-config CPU_HAS_INTC2_IRQ
-	bool
-
-config CPU_HAS_IPR_IRQ
-	bool
-
-config CPU_HAS_SR_RB
-	bool "CPU has SR.RB"
-	depends on CPU_SH3 || CPU_SH4
-	default y
-	help
-	  This will enable the use of SR.RB register bank usage. Processors
-	  that are lacking this bit must have another method in place for
-	  accomplishing what is taken care of by the banked registers.
-
-	  See <file:Documentation/sh/register-banks.txt> for further
-	  information on SR.RB and register banking in the kernel in general.
-
-config CPU_HAS_PTEA
-	bool
-
-endmenu
 
 menu "Timer and clock configuration"
 
diff --git a/arch/sh/boards/renesas/r7780rp/Kconfig b/arch/sh/boards/renesas/r7780rp/Kconfig
index 9fb11641fe1..fc8f28e04ba 100644
--- a/arch/sh/boards/renesas/r7780rp/Kconfig
+++ b/arch/sh/boards/renesas/r7780rp/Kconfig
@@ -6,18 +6,18 @@ choice
 
 config SH_R7780RP
 	bool "R7780RP-1 board support"
-	select CPU_SUBTYPE_SH7780
+	depends on CPU_SUBTYPE_SH7780
 
 config SH_R7780MP
 	bool "R7780MP board support"
-	select CPU_SUBTYPE_SH7780
+	depends on CPU_SUBTYPE_SH7780
 	help
 	  Selecting this option will enable support for the mass-production
 	  version of the R7780RP. If in doubt, say Y.
 
 config SH_R7785RP
 	bool "R7785RP board support"
-	select CPU_SUBTYPE_SH7785
+	depends on CPU_SUBTYPE_SH7785
 
 endchoice
 
diff --git a/arch/sh/mm/Kconfig b/arch/sh/mm/Kconfig
index 253346d7b31..8f826b03f9f 100644
--- a/arch/sh/mm/Kconfig
+++ b/arch/sh/mm/Kconfig
@@ -1,5 +1,3 @@
-menu "Processor selection"
-
 #
 # Processor families
 #
@@ -38,11 +36,14 @@ config CPU_SUBTYPE_ST40
 config CPU_SHX2
 	bool
 
+choice
+	prompt "Processor sub-type selection"
+
 #
 # Processor subtypes
 #
 
-comment "SH-2 Processor Support"
+# SH-2 Processor Support
 
 config CPU_SUBTYPE_SH7604
 	bool "Support SH7604 processor"
@@ -52,13 +53,13 @@ config CPU_SUBTYPE_SH7619
 	bool "Support SH7619 processor"
 	select CPU_SH2
 
-comment "SH-2A Processor Support"
+# SH-2A Processor Support
 
 config CPU_SUBTYPE_SH7206
 	bool "Support SH7206 processor"
 	select CPU_SH2A
 
-comment "SH-3 Processor Support"
+# SH-3 Processor Support
 
 config CPU_SUBTYPE_SH7300
 	bool "Support SH7300 processor"
@@ -113,7 +114,7 @@ config CPU_SUBTYPE_SH7712
 	help
 	  Select SH7712 if you have a SH3-DSP SH7712 CPU.
 
-comment "SH-4 Processor Support"
+# SH-4 Processor Support
 
 config CPU_SUBTYPE_SH7750
 	bool "Support SH7750 processor"
@@ -166,7 +167,7 @@ config CPU_SUBTYPE_SH4_202
 	bool "Support SH4-202 processor"
 	select CPU_SH4
 
-comment "ST40 Processor Support"
+# ST40 Processor Support
 
 config CPU_SUBTYPE_ST40STB1
 	bool "Support ST40STB1/ST40RA processors"
@@ -181,7 +182,7 @@ config CPU_SUBTYPE_ST40GX1
 	help
 	  Select ST40GX1 if you have a ST40GX1 CPU.
 
-comment "SH-4A Processor Support"
+# SH-4A Processor Support
 
 config CPU_SUBTYPE_SH7770
 	bool "Support SH7770 processor"
@@ -198,7 +199,7 @@ config CPU_SUBTYPE_SH7785
 	select CPU_SHX2
 	select CPU_HAS_INTC2_IRQ
 
-comment "SH4AL-DSP Processor Support"
+# SH4AL-DSP Processor Support
 
 config CPU_SUBTYPE_SH73180
 	bool "Support SH73180 processor"
@@ -214,7 +215,7 @@ config CPU_SUBTYPE_SH7722
 	select CPU_SHX2
 	select CPU_HAS_IPR_IRQ
 
-endmenu
+endchoice
 
 menu "Memory management options"
 
-- 
cgit v1.2.3-70-g09d2