aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-16 13:32:02 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-16 13:32:02 -0400
commitb91cba52e9b7b3f1c0037908a192d93a869ca9e5 (patch)
treebbce7f323c8f52b308af5a152673a75b3e445360
parent98283bb49c6c8c070ebde9f47489d3e9a83c1323 (diff)
parente509ac4bbc661052dc73a2e8138800ba77d4ecb9 (diff)
Merge master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6: (68 commits) sh: sh-rtc support for SH7709. sh: Revert __xdiv64_32 size change. sh: Update r7785rp defconfig. sh: Export div symbols for GCC 4.2 and ST GCC. sh: fix race in parallel out-of-tree build sh: Kill off dead mach.c for hp6xx. sh: hd64461.h cleanup and added comments. sh: Update the alignment when 4K stacks are used. sh: Add a .bss.page_aligned section for 4K stacks. sh: Don't let SH-4A clobber SH-4 CFLAGS. sh: Add parport stub for SuperIO ports. sh: Drop -Wa,-dsp for DSP tuning. sh: Update dreamcast defconfig. fb: pvr2fb: A few more __devinit annotations for PCI. fb: pvr2fb: Fix up section mismatch warnings. sh: Select IPR-IRQ for SH7091. sh: Correct __xdiv64_32/div64_32 return value size. sh: Fix timer-tmu build for SH-3. sh: Add cpu and mach links to CLEAN_FILES. sh: Preliminary support for the SH-X3 CPU. ...
-rw-r--r--arch/sh/Kconfig441
-rw-r--r--arch/sh/Kconfig.debug5
-rw-r--r--arch/sh/Makefile104
-rw-r--r--arch/sh/boards/dreamcast/setup.c3
-rw-r--r--arch/sh/boards/hp6xx/mach.c46
-rw-r--r--arch/sh/boards/hp6xx/setup.c3
-rw-r--r--arch/sh/boards/landisk/setup.c3
-rw-r--r--arch/sh/boards/lboxre2/setup.c3
-rw-r--r--arch/sh/boards/mpc1211/setup.c3
-rw-r--r--arch/sh/boards/renesas/edosk7705/setup.c3
-rw-r--r--arch/sh/boards/renesas/hs7751rvoip/setup.c3
-rw-r--r--arch/sh/boards/renesas/r7780rp/Kconfig6
-rw-r--r--arch/sh/boards/renesas/r7780rp/setup.c3
-rw-r--r--arch/sh/boards/renesas/rts7751r2d/setup.c3
-rw-r--r--arch/sh/boards/renesas/sh7710voipgw/setup.c3
-rw-r--r--arch/sh/boards/renesas/systemh/setup.c3
-rw-r--r--arch/sh/boards/saturn/Makefile8
-rw-r--r--arch/sh/boards/saturn/io.c26
-rw-r--r--arch/sh/boards/saturn/irq.c118
-rw-r--r--arch/sh/boards/saturn/setup.c31
-rw-r--r--arch/sh/boards/saturn/smp.c68
-rw-r--r--arch/sh/boards/se/7206/setup.c3
-rw-r--r--arch/sh/boards/se/7300/setup.c3
-rw-r--r--arch/sh/boards/se/73180/setup.c3
-rw-r--r--arch/sh/boards/se/7343/setup.c3
-rw-r--r--arch/sh/boards/se/7619/setup.c3
-rw-r--r--arch/sh/boards/se/770x/irq.c124
-rw-r--r--arch/sh/boards/se/770x/setup.c3
-rw-r--r--arch/sh/boards/se/7722/irq.c15
-rw-r--r--arch/sh/boards/se/7722/setup.c3
-rw-r--r--arch/sh/boards/se/7751/irq.c59
-rw-r--r--arch/sh/boards/se/7751/setup.c3
-rw-r--r--arch/sh/boards/se/7780/irq.c45
-rw-r--r--arch/sh/boards/se/7780/setup.c3
-rw-r--r--arch/sh/boards/sh03/setup.c31
-rw-r--r--arch/sh/boards/shmin/setup.c33
-rw-r--r--arch/sh/boards/snapgear/setup.c31
-rw-r--r--arch/sh/boards/superh/microdev/setup.c3
-rw-r--r--arch/sh/boards/titan/setup.c25
-rw-r--r--arch/sh/boards/unknown/Makefile6
-rw-r--r--arch/sh/boards/unknown/setup.c21
-rw-r--r--arch/sh/cchips/Kconfig6
-rw-r--r--arch/sh/configs/dreamcast_defconfig338
-rw-r--r--arch/sh/configs/r7780mp_defconfig1223
-rw-r--r--arch/sh/configs/r7785rp_defconfig296
-rw-r--r--arch/sh/configs/se7206_defconfig272
-rw-r--r--arch/sh/configs/se7619_defconfig215
-rw-r--r--arch/sh/configs/se7722_defconfig287
-rw-r--r--arch/sh/configs/shx3_defconfig756
-rw-r--r--arch/sh/drivers/dma/Kconfig17
-rw-r--r--arch/sh/drivers/pci/Kconfig1
-rw-r--r--arch/sh/kernel/Makefile9
-rw-r--r--arch/sh/kernel/cf-enabler.c6
-rw-r--r--arch/sh/kernel/cpu/init.c15
-rw-r--r--arch/sh/kernel/cpu/irq/intc2.c63
-rw-r--r--arch/sh/kernel/cpu/irq/ipr.c59
-rw-r--r--arch/sh/kernel/cpu/sh2/entry.S1
-rw-r--r--arch/sh/kernel/cpu/sh2/probe.c13
-rw-r--r--arch/sh/kernel/cpu/sh2/setup-sh7619.c24
-rw-r--r--arch/sh/kernel/cpu/sh2a/setup-sh7206.c24
-rw-r--r--arch/sh/kernel/cpu/sh3/entry.S19
-rw-r--r--arch/sh/kernel/cpu/sh3/setup-sh7705.c40
-rw-r--r--arch/sh/kernel/cpu/sh3/setup-sh7709.c112
-rw-r--r--arch/sh/kernel/cpu/sh3/setup-sh7710.c42
-rw-r--r--arch/sh/kernel/cpu/sh4/Makefile4
-rw-r--r--arch/sh/kernel/cpu/sh4/probe.c8
-rw-r--r--arch/sh/kernel/cpu/sh4/setup-sh7750.c58
-rw-r--r--arch/sh/kernel/cpu/sh4/setup-sh7760.c45
-rw-r--r--arch/sh/kernel/cpu/sh4a/Makefile2
-rw-r--r--arch/sh/kernel/cpu/sh4a/clock-shx3.c135
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7722.c29
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7780.c15
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7785.c16
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-shx3.c85
-rw-r--r--arch/sh/kernel/irq.c8
-rw-r--r--arch/sh/kernel/machvec.c130
-rw-r--r--arch/sh/kernel/process.c18
-rw-r--r--arch/sh/kernel/ptrace.c8
-rw-r--r--arch/sh/kernel/setup.c210
-rw-r--r--arch/sh/kernel/sh_ksyms.c10
-rw-r--r--arch/sh/kernel/signal.c3
-rw-r--r--arch/sh/kernel/syscalls.S6
-rw-r--r--arch/sh/kernel/timers/timer-tmu.c7
-rw-r--r--arch/sh/kernel/topology.c49
-rw-r--r--arch/sh/kernel/traps.c5
-rw-r--r--arch/sh/kernel/vmlinux.lds.S20
-rw-r--r--arch/sh/lib/div64-generic.c9
-rw-r--r--arch/sh/lib/div64.S6
-rw-r--r--arch/sh/math-emu/math.c18
-rw-r--r--arch/sh/mm/Kconfig87
-rw-r--r--arch/sh/mm/Makefile5
-rw-r--r--arch/sh/mm/fault.c45
-rw-r--r--arch/sh/mm/init.c107
-rw-r--r--arch/sh/mm/numa.c92
-rw-r--r--arch/sh/mm/pg-dma.c95
-rw-r--r--arch/sh/tools/Makefile1
-rw-r--r--arch/sh/tools/mach-types2
-rw-r--r--drivers/serial/sh-sci.c4
-rw-r--r--drivers/serial/sh-sci.h50
-rw-r--r--drivers/video/pvr2fb.c101
-rw-r--r--fs/Kconfig2
-rw-r--r--include/asm-sh/bugs.h4
-rw-r--r--include/asm-sh/cache.h4
-rw-r--r--include/asm-sh/cpu-sh2/cache.h20
-rw-r--r--include/asm-sh/cpu-sh3/timer.h4
-rw-r--r--include/asm-sh/cpu-sh4/freq.h2
-rw-r--r--include/asm-sh/cpu-sh4/timer.h57
-rw-r--r--include/asm-sh/futex-irq.h111
-rw-r--r--include/asm-sh/futex.h79
-rw-r--r--include/asm-sh/hd64461.h397
-rw-r--r--include/asm-sh/hw_irq.h42
-rw-r--r--include/asm-sh/irq.h40
-rw-r--r--include/asm-sh/machvec.h4
-rw-r--r--include/asm-sh/machvec_init.h53
-rw-r--r--include/asm-sh/mmzone.h46
-rw-r--r--include/asm-sh/page.h10
-rw-r--r--include/asm-sh/parport.h16
-rw-r--r--include/asm-sh/processor.h8
-rw-r--r--include/asm-sh/rwsem.h6
-rw-r--r--include/asm-sh/saturn/io.h19
-rw-r--r--include/asm-sh/saturn/smpc.h34
-rw-r--r--include/asm-sh/sections.h2
-rw-r--r--include/asm-sh/setup.h1
-rw-r--r--include/asm-sh/sh03/io.h4
-rw-r--r--include/asm-sh/smp.h2
-rw-r--r--include/asm-sh/snapgear.h4
-rw-r--r--include/asm-sh/sparsemem.h16
-rw-r--r--include/asm-sh/system.h16
-rw-r--r--include/asm-sh/topology.h30
-rw-r--r--include/asm-sh/uaccess.h40
-rw-r--r--include/asm-sh/ubc.h9
-rw-r--r--mm/Kconfig2
132 files changed, 4887 insertions, 2834 deletions
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index 038179ecf6a9..d8ed6676ae86 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -55,8 +55,21 @@ config GENERIC_TIME
55config GENERIC_CLOCKEVENTS 55config GENERIC_CLOCKEVENTS
56 def_bool n 56 def_bool n
57 57
58config SYS_SUPPORTS_PM
59 bool
60
58config SYS_SUPPORTS_APM_EMULATION 61config SYS_SUPPORTS_APM_EMULATION
59 bool 62 bool
63 select SYS_SUPPORTS_PM
64
65config SYS_SUPPORTS_SMP
66 bool
67
68config SYS_SUPPORTS_NUMA
69 bool
70
71config SYS_SUPPORTS_PCI
72 bool
60 73
61config ARCH_MAY_HAVE_PC_FDC 74config ARCH_MAY_HAVE_PC_FDC
62 bool 75 bool
@@ -81,24 +94,146 @@ source "init/Kconfig"
81 94
82menu "System type" 95menu "System type"
83 96
84config SOLUTION_ENGINE 97source "arch/sh/mm/Kconfig"
85 bool 98
99menu "Processor features"
86 100
87choice 101choice
88 prompt "SuperH system type" 102 prompt "Endianess selection"
89 default SH_UNKNOWN 103 default CPU_LITTLE_ENDIAN
104 help
105 Some SuperH machines can be configured for either little or big
106 endian byte order. These modes require different kernels.
107
108config CPU_LITTLE_ENDIAN
109 bool "Little Endian"
110
111config CPU_BIG_ENDIAN
112 bool "Big Endian"
113
114endchoice
115
116config SH_FPU
117 bool "FPU support"
118 depends on CPU_SH4
119 default y
120 help
121 Selecting this option will enable support for SH processors that
122 have FPU units (ie, SH77xx).
123
124 This option must be set in order to enable the FPU.
125
126config SH_FPU_EMU
127 bool "FPU emulation support"
128 depends on !SH_FPU && EXPERIMENTAL
129 default n
130 help
131 Selecting this option will enable support for software FPU emulation.
132 Most SH-3 users will want to say Y here, whereas most SH-4 users will
133 want to say N.
134
135config SH_DSP
136 bool "DSP support"
137 default y if SH4AL_DSP || !CPU_SH4
138 default n
139 help
140 Selecting this option will enable support for SH processors that
141 have DSP units (ie, SH2-DSP, SH3-DSP, and SH4AL-DSP).
142
143 This option must be set in order to enable the DSP.
144
145config SH_ADC
146 bool "ADC support"
147 depends on CPU_SH3
148 default y
149 help
150 Selecting this option will allow the Linux kernel to use SH3 on-chip
151 ADC module.
152
153 If unsure, say N.
154
155config SH_STORE_QUEUES
156 bool "Support for Store Queues"
157 depends on CPU_SH4
158 help
159 Selecting this option will enable an in-kernel API for manipulating
160 the store queues integrated in the SH-4 processors.
161
162config SPECULATIVE_EXECUTION
163 bool "Speculative subroutine return"
164 depends on CPU_SUBTYPE_SH7780 && EXPERIMENTAL
165 help
166 This enables support for a speculative instruction fetch for
167 subroutine return. There are various pitfalls associated with
168 this, as outlined in the SH7780 hardware manual.
169
170 If unsure, say N.
171
172config CPU_HAS_INTEVT
173 bool
174
175config CPU_HAS_PINT_IRQ
176 bool
177
178config CPU_HAS_MASKREG_IRQ
179 bool
180
181config CPU_HAS_INTC2_IRQ
182 bool
183
184config CPU_HAS_IPR_IRQ
185 bool
186
187config CPU_HAS_SR_RB
188 bool "CPU has SR.RB"
189 depends on CPU_SH3 || CPU_SH4
190 default y
191 help
192 This will enable the use of SR.RB register bank usage. Processors
193 that are lacking this bit must have another method in place for
194 accomplishing what is taken care of by the banked registers.
195
196 See <file:Documentation/sh/register-banks.txt> for further
197 information on SR.RB and register banking in the kernel in general.
198
199config CPU_HAS_PTEA
200 bool
201
202endmenu
203
204menu "Board support"
205
206config SOLUTION_ENGINE
207 bool
90 208
91config SH_SOLUTION_ENGINE 209config SH_SOLUTION_ENGINE
92 bool "SolutionEngine" 210 bool "SolutionEngine"
93 select SOLUTION_ENGINE 211 select SOLUTION_ENGINE
212 depends on CPU_SUBTYPE_SH7709 || CPU_SUBTYPE_SH7750
94 help 213 help
95 Select SolutionEngine if configuring for a Hitachi SH7709 214 Select SolutionEngine if configuring for a Hitachi SH7709
96 or SH7750 evaluation board. 215 or SH7750 evaluation board.
97 216
217config SH_7206_SOLUTION_ENGINE
218 bool "SolutionEngine7206"
219 select SOLUTION_ENGINE
220 depends on CPU_SUBTYPE_SH7206
221 help
222 Select 7206 SolutionEngine if configuring for a Hitachi SH7206
223 evaluation board.
224
225config SH_7619_SOLUTION_ENGINE
226 bool "SolutionEngine7619"
227 select SOLUTION_ENGINE
228 depends on CPU_SUBTYPE_SH7619
229 help
230 Select 7619 SolutionEngine if configuring for a Hitachi SH7619
231 evaluation board.
232
98config SH_7722_SOLUTION_ENGINE 233config SH_7722_SOLUTION_ENGINE
99 bool "SolutionEngine7722" 234 bool "SolutionEngine7722"
100 select SOLUTION_ENGINE 235 select SOLUTION_ENGINE
101 select CPU_SUBTYPE_SH7722 236 depends on CPU_SUBTYPE_SH7722
102 help 237 help
103 Select 7722 SolutionEngine if configuring for a Hitachi SH772 238 Select 7722 SolutionEngine if configuring for a Hitachi SH772
104 evaluation board. 239 evaluation board.
@@ -106,7 +241,7 @@ config SH_7722_SOLUTION_ENGINE
106config SH_7751_SOLUTION_ENGINE 241config SH_7751_SOLUTION_ENGINE
107 bool "SolutionEngine7751" 242 bool "SolutionEngine7751"
108 select SOLUTION_ENGINE 243 select SOLUTION_ENGINE
109 select CPU_SUBTYPE_SH7751 244 depends on CPU_SUBTYPE_SH7751
110 help 245 help
111 Select 7751 SolutionEngine if configuring for a Hitachi SH7751 246 Select 7751 SolutionEngine if configuring for a Hitachi SH7751
112 evaluation board. 247 evaluation board.
@@ -114,7 +249,8 @@ config SH_7751_SOLUTION_ENGINE
114config SH_7780_SOLUTION_ENGINE 249config SH_7780_SOLUTION_ENGINE
115 bool "SolutionEngine7780" 250 bool "SolutionEngine7780"
116 select SOLUTION_ENGINE 251 select SOLUTION_ENGINE
117 select CPU_SUBTYPE_SH7780 252 select SYS_SUPPORTS_PCI
253 depends on CPU_SUBTYPE_SH7780
118 help 254 help
119 Select 7780 SolutionEngine if configuring for a Renesas SH7780 255 Select 7780 SolutionEngine if configuring for a Renesas SH7780
120 evaluation board. 256 evaluation board.
@@ -122,7 +258,7 @@ config SH_7780_SOLUTION_ENGINE
122config SH_7300_SOLUTION_ENGINE 258config SH_7300_SOLUTION_ENGINE
123 bool "SolutionEngine7300" 259 bool "SolutionEngine7300"
124 select SOLUTION_ENGINE 260 select SOLUTION_ENGINE
125 select CPU_SUBTYPE_SH7300 261 depends on CPU_SUBTYPE_SH7300
126 help 262 help
127 Select 7300 SolutionEngine if configuring for a Hitachi 263 Select 7300 SolutionEngine if configuring for a Hitachi
128 SH7300(SH-Mobile V) evaluation board. 264 SH7300(SH-Mobile V) evaluation board.
@@ -130,22 +266,22 @@ config SH_7300_SOLUTION_ENGINE
130config SH_7343_SOLUTION_ENGINE 266config SH_7343_SOLUTION_ENGINE
131 bool "SolutionEngine7343" 267 bool "SolutionEngine7343"
132 select SOLUTION_ENGINE 268 select SOLUTION_ENGINE
133 select CPU_SUBTYPE_SH7343 269 depends on CPU_SUBTYPE_SH7343
134 help 270 help
135 Select 7343 SolutionEngine if configuring for a Hitachi 271 Select 7343 SolutionEngine if configuring for a Hitachi
136 SH7343 (SH-Mobile 3AS) evaluation board. 272 SH7343 (SH-Mobile 3AS) evaluation board.
137 273
138config SH_73180_SOLUTION_ENGINE 274config SH_73180_SOLUTION_ENGINE
139 bool "SolutionEngine73180" 275 bool "SolutionEngine73180"
140 select SOLUTION_ENGINE 276 select SOLUTION_ENGINE
141 select CPU_SUBTYPE_SH73180 277 depends on CPU_SUBTYPE_SH73180
142 help 278 help
143 Select 73180 SolutionEngine if configuring for a Hitachi 279 Select 73180 SolutionEngine if configuring for a Hitachi
144 SH73180(SH-Mobile 3) evaluation board. 280 SH73180(SH-Mobile 3) evaluation board.
145 281
146config SH_7751_SYSTEMH 282config SH_7751_SYSTEMH
147 bool "SystemH7751R" 283 bool "SystemH7751R"
148 select CPU_SUBTYPE_SH7751R 284 depends on CPU_SUBTYPE_SH7751R
149 help 285 help
150 Select SystemH if you are configuring for a Renesas SystemH 286 Select SystemH if you are configuring for a Renesas SystemH
151 7751R evaluation board. 287 7751R evaluation board.
@@ -153,20 +289,17 @@ config SH_7751_SYSTEMH
153config SH_HP6XX 289config SH_HP6XX
154 bool "HP6XX" 290 bool "HP6XX"
155 select SYS_SUPPORTS_APM_EMULATION 291 select SYS_SUPPORTS_APM_EMULATION
292 select HD6446X_SERIES
293 depends on CPU_SUBTYPE_SH7709
156 help 294 help
157 Select HP6XX if configuring for a HP jornada HP6xx. 295 Select HP6XX if configuring for a HP jornada HP6xx.
158 More information (hardware only) at 296 More information (hardware only) at
159 <http://www.hp.com/jornada/>. 297 <http://www.hp.com/jornada/>.
160 298
161config SH_SATURN
162 bool "Saturn"
163 select CPU_SUBTYPE_SH7604
164 help
165 Select Saturn if configuring for a SEGA Saturn.
166
167config SH_DREAMCAST 299config SH_DREAMCAST
168 bool "Dreamcast" 300 bool "Dreamcast"
169 select CPU_SUBTYPE_SH7091 301 select SYS_SUPPORTS_PCI
302 depends on CPU_SUBTYPE_SH7091
170 help 303 help
171 Select Dreamcast if configuring for a SEGA Dreamcast. 304 Select Dreamcast if configuring for a SEGA Dreamcast.
172 More information at 305 More information at
@@ -175,6 +308,7 @@ config SH_DREAMCAST
175 308
176config SH_MPC1211 309config SH_MPC1211
177 bool "Interface MPC1211" 310 bool "Interface MPC1211"
311 depends on CPU_SUBTYPE_SH7751 && BROKEN
178 help 312 help
179 CTP/PCI-SH02 is a CPU module computer that is produced 313 CTP/PCI-SH02 is a CPU module computer that is produced
180 by Interface Corporation. 314 by Interface Corporation.
@@ -182,6 +316,8 @@ config SH_MPC1211
182 316
183config SH_SH03 317config SH_SH03
184 bool "Interface CTP/PCI-SH03" 318 bool "Interface CTP/PCI-SH03"
319 depends on CPU_SUBTYPE_SH7751 && BROKEN
320 select SYS_SUPPORTS_PCI
185 help 321 help
186 CTP/PCI-SH03 is a CPU module computer that is produced 322 CTP/PCI-SH03 is a CPU module computer that is produced
187 by Interface Corporation. 323 by Interface Corporation.
@@ -189,7 +325,8 @@ config SH_SH03
189 325
190config SH_SECUREEDGE5410 326config SH_SECUREEDGE5410
191 bool "SecureEdge5410" 327 bool "SecureEdge5410"
192 select CPU_SUBTYPE_SH7751R 328 depends on CPU_SUBTYPE_SH7751R
329 select SYS_SUPPORTS_PCI
193 help 330 help
194 Select SecureEdge5410 if configuring for a SnapGear SH board. 331 Select SecureEdge5410 if configuring for a SnapGear SH board.
195 This includes both the OEM SecureEdge products as well as the 332 This includes both the OEM SecureEdge products as well as the
@@ -197,246 +334,76 @@ config SH_SECUREEDGE5410
197 334
198config SH_HS7751RVOIP 335config SH_HS7751RVOIP
199 bool "HS7751RVOIP" 336 bool "HS7751RVOIP"
200 select CPU_SUBTYPE_SH7751R 337 depends on CPU_SUBTYPE_SH7751R
201 help 338 help
202 Select HS7751RVOIP if configuring for a Renesas Technology 339 Select HS7751RVOIP if configuring for a Renesas Technology
203 Sales VoIP board. 340 Sales VoIP board.
204 341
205config SH_7710VOIPGW 342config SH_7710VOIPGW
206 bool "SH7710-VOIP-GW" 343 bool "SH7710-VOIP-GW"
207 select CPU_SUBTYPE_SH7710 344 depends on CPU_SUBTYPE_SH7710
208 help 345 help
209 Select this option to build a kernel for the SH7710 based 346 Select this option to build a kernel for the SH7710 based
210 VOIP GW. 347 VOIP GW.
211 348
212config SH_RTS7751R2D 349config SH_RTS7751R2D
213 bool "RTS7751R2D" 350 bool "RTS7751R2D"
214 select CPU_SUBTYPE_SH7751R 351 depends on CPU_SUBTYPE_SH7751R
352 select SYS_SUPPORTS_PCI
215 help 353 help
216 Select RTS7751R2D if configuring for a Renesas Technology 354 Select RTS7751R2D if configuring for a Renesas Technology
217 Sales SH-Graphics board. 355 Sales SH-Graphics board.
218 356
219config SH_HIGHLANDER 357config SH_HIGHLANDER
220 bool "Highlander" 358 bool "Highlander"
359 depends on CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7785
360 select SYS_SUPPORTS_PCI
221 361
222config SH_EDOSK7705 362config SH_EDOSK7705
223 bool "EDOSK7705" 363 bool "EDOSK7705"
224 select CPU_SUBTYPE_SH7705 364 depends on CPU_SUBTYPE_SH7705
225 365
226config SH_SH4202_MICRODEV 366config SH_SH4202_MICRODEV
227 bool "SH4-202 MicroDev" 367 bool "SH4-202 MicroDev"
228 select CPU_SUBTYPE_SH4_202 368 depends on CPU_SUBTYPE_SH4_202
229 help 369 help
230 Select SH4-202 MicroDev if configuring for a SuperH MicroDev board 370 Select SH4-202 MicroDev if configuring for a SuperH MicroDev board
231 with an SH4-202 CPU. 371 with an SH4-202 CPU.
232 372
233config SH_LANDISK 373config SH_LANDISK
234 bool "LANDISK" 374 bool "LANDISK"
235 select CPU_SUBTYPE_SH7751R 375 depends on CPU_SUBTYPE_SH7751R
376 select SYS_SUPPORTS_PCI
236 help 377 help
237 I-O DATA DEVICE, INC. "LANDISK Series" support. 378 I-O DATA DEVICE, INC. "LANDISK Series" support.
238 379
239config SH_TITAN 380config SH_TITAN
240 bool "TITAN" 381 bool "TITAN"
241 select CPU_SUBTYPE_SH7751R 382 depends on CPU_SUBTYPE_SH7751R
383 select SYS_SUPPORTS_PCI
242 help 384 help
243 Select Titan if you are configuring for a Nimble Microsystems 385 Select Titan if you are configuring for a Nimble Microsystems
244 NetEngine NP51R. 386 NetEngine NP51R.
245 387
246config SH_SHMIN 388config SH_SHMIN
247 bool "SHMIN" 389 bool "SHMIN"
248 select CPU_SUBTYPE_SH7706 390 depends on CPU_SUBTYPE_SH7706
249 help 391 help
250 Select SHMIN if configuring for the SHMIN board. 392 Select SHMIN if configuring for the SHMIN board.
251 393
252config SH_7206_SOLUTION_ENGINE
253 bool "SolutionEngine7206"
254 select CPU_SUBTYPE_SH7206
255 help
256 Select 7206 SolutionEngine if configuring for a Hitachi SH7206
257 evaluation board.
258
259config SH_7619_SOLUTION_ENGINE
260 bool "SolutionEngine7619"
261 select CPU_SUBTYPE_SH7619
262 help
263 Select 7619 SolutionEngine if configuring for a Hitachi SH7619
264 evaluation board.
265
266config SH_LBOX_RE2 394config SH_LBOX_RE2
267 bool "L-BOX RE2" 395 bool "L-BOX RE2"
268 select CPU_SUBTYPE_SH7751R 396 depends on CPU_SUBTYPE_SH7751R
397 select SYS_SUPPORTS_PCI
269 help 398 help
270 Select L-BOX RE2 if configuring for the NTT COMWARE L-BOX RE2. 399 Select L-BOX RE2 if configuring for the NTT COMWARE L-BOX RE2.
271 400
272config SH_UNKNOWN 401endmenu
273 bool "BareCPU"
274 help
275 "Bare CPU" aka "unknown" means an SH-based system which is not one
276 of the specific ones mentioned above, which means you need to enter
277 all sorts of stuff like CONFIG_MEMORY_START because the config
278 system doesn't already know what it is. You get a machine vector
279 without any platform-specific code in it, so things like the RTC may
280 not work.
281
282 This option is for the early stages of porting to a new machine.
283
284endchoice
285 402
286source "arch/sh/boards/renesas/hs7751rvoip/Kconfig" 403source "arch/sh/boards/renesas/hs7751rvoip/Kconfig"
287source "arch/sh/boards/renesas/rts7751r2d/Kconfig" 404source "arch/sh/boards/renesas/rts7751r2d/Kconfig"
288source "arch/sh/boards/renesas/r7780rp/Kconfig" 405source "arch/sh/boards/renesas/r7780rp/Kconfig"
289 406
290source "arch/sh/mm/Kconfig"
291
292config CF_ENABLER
293 bool "Compact Flash Enabler support"
294 depends on SH_SOLUTION_ENGINE || SH_UNKNOWN || SH_SH03
295 ---help---
296 Compact Flash is a small, removable mass storage device introduced
297 in 1994 originally as a PCMCIA device. If you say `Y' here, you
298 compile in support for Compact Flash devices directly connected to
299 a SuperH processor. A Compact Flash FAQ is available at
300 <http://www.compactflash.org/faqs/faq.htm>.
301
302 If your board has "Directly Connected" CompactFlash at area 5 or 6,
303 you may want to enable this option. Then, you can use CF as
304 primary IDE drive (only tested for SanDisk).
305
306 If in doubt, select 'N'.
307
308choice
309 prompt "Compact Flash Connection Area"
310 depends on CF_ENABLER
311 default CF_AREA6
312
313config CF_AREA5
314 bool "Area5"
315 help
316 If your board has "Directly Connected" CompactFlash, You should
317 select the area where your CF is connected to.
318
319 - "Area5" if CompactFlash is connected to Area 5 (0x14000000)
320 - "Area6" if it is connected to Area 6 (0x18000000)
321
322 "Area6" will work for most boards.
323
324config CF_AREA6
325 bool "Area6"
326
327endchoice
328
329config CF_BASE_ADDR
330 hex
331 depends on CF_ENABLER
332 default "0xb8000000" if CF_AREA6
333 default "0xb4000000" if CF_AREA5
334
335menu "Processor features"
336
337choice
338 prompt "Endianess selection"
339 default CPU_LITTLE_ENDIAN
340 help
341 Some SuperH machines can be configured for either little or big
342 endian byte order. These modes require different kernels.
343
344config CPU_LITTLE_ENDIAN
345 bool "Little Endian"
346
347config CPU_BIG_ENDIAN
348 bool "Big Endian"
349
350endchoice
351
352config SH_FPU
353 bool "FPU support"
354 depends on !CPU_SH3
355 default y
356 help
357 Selecting this option will enable support for SH processors that
358 have FPU units (ie, SH77xx).
359
360 This option must be set in order to enable the FPU.
361
362config SH_FPU_EMU
363 bool "FPU emulation support"
364 depends on !SH_FPU && EXPERIMENTAL
365 default n
366 help
367 Selecting this option will enable support for software FPU emulation.
368 Most SH-3 users will want to say Y here, whereas most SH-4 users will
369 want to say N.
370
371config SH_DSP
372 bool "DSP support"
373 default y if SH4AL_DSP || !CPU_SH4
374 default n
375 help
376 Selecting this option will enable support for SH processors that
377 have DSP units (ie, SH2-DSP, SH3-DSP, and SH4AL-DSP).
378
379 This option must be set in order to enable the DSP.
380
381config SH_ADC
382 bool "ADC support"
383 depends on CPU_SH3
384 default y
385 help
386 Selecting this option will allow the Linux kernel to use SH3 on-chip
387 ADC module.
388
389 If unsure, say N.
390
391config SH_STORE_QUEUES
392 bool "Support for Store Queues"
393 depends on CPU_SH4
394 help
395 Selecting this option will enable an in-kernel API for manipulating
396 the store queues integrated in the SH-4 processors.
397
398config SPECULATIVE_EXECUTION
399 bool "Speculative subroutine return"
400 depends on CPU_SUBTYPE_SH7780 && EXPERIMENTAL
401 help
402 This enables support for a speculative instruction fetch for
403 subroutine return. There are various pitfalls associated with
404 this, as outlined in the SH7780 hardware manual.
405
406 If unsure, say N.
407
408config CPU_HAS_INTEVT
409 bool
410
411config CPU_HAS_PINT_IRQ
412 bool
413
414config CPU_HAS_MASKREG_IRQ
415 bool
416
417config CPU_HAS_INTC2_IRQ
418 bool
419
420config CPU_HAS_IPR_IRQ
421 bool
422
423config CPU_HAS_SR_RB
424 bool "CPU has SR.RB"
425 depends on CPU_SH3 || CPU_SH4
426 default y
427 help
428 This will enable the use of SR.RB register bank usage. Processors
429 that are lacking this bit must have another method in place for
430 accomplishing what is taken care of by the banked registers.
431
432 See <file:Documentation/sh/register-banks.txt> for further
433 information on SR.RB and register banking in the kernel in general.
434
435config CPU_HAS_PTEA
436 bool
437
438endmenu
439
440menu "Timer and clock configuration" 407menu "Timer and clock configuration"
441 408
442config SH_TMU 409config SH_TMU
@@ -473,13 +440,13 @@ config SH_PCLK_FREQ
473 int "Peripheral clock frequency (in Hz)" 440 int "Peripheral clock frequency (in Hz)"
474 default "27000000" if CPU_SUBTYPE_SH73180 || CPU_SUBTYPE_SH7343 441 default "27000000" if CPU_SUBTYPE_SH73180 || CPU_SUBTYPE_SH7343
475 default "31250000" if CPU_SUBTYPE_SH7619 442 default "31250000" if CPU_SUBTYPE_SH7619
443 default "32000000" if CPU_SUBTYPE_SH7722
476 default "33333333" if CPU_SUBTYPE_SH7300 || CPU_SUBTYPE_SH7770 || \ 444 default "33333333" if CPU_SUBTYPE_SH7300 || CPU_SUBTYPE_SH7770 || \
477 CPU_SUBTYPE_SH7760 || CPU_SUBTYPE_SH7705 || \ 445 CPU_SUBTYPE_SH7760 || CPU_SUBTYPE_SH7705 || \
478 CPU_SUBTYPE_SH7206 446 CPU_SUBTYPE_SH7206
479 default "50000000" if CPU_SUBTYPE_SH7750 || CPU_SUBTYPE_SH7780 || \ 447 default "60000000" if CPU_SUBTYPE_SH7751 || CPU_SUBTYPE_SH7751R
480 CPU_SUBTYPE_SH7785
481 default "60000000" if CPU_SUBTYPE_SH7751
482 default "66000000" if CPU_SUBTYPE_SH4_202 448 default "66000000" if CPU_SUBTYPE_SH4_202
449 default "50000000"
483 help 450 help
484 This option is used to specify the peripheral clock frequency. 451 This option is used to specify the peripheral clock frequency.
485 This is necessary for determining the reference clock value on 452 This is necessary for determining the reference clock value on
@@ -487,8 +454,10 @@ config SH_PCLK_FREQ
487 454
488config SH_CLK_MD 455config SH_CLK_MD
489 int "CPU Mode Pin Setting" 456 int "CPU Mode Pin Setting"
490 default 0
491 depends on CPU_SUBTYPE_SH7619 || CPU_SUBTYPE_SH7206 457 depends on CPU_SUBTYPE_SH7619 || CPU_SUBTYPE_SH7206
458 default 6 if CPU_SUBTYPE_SH7206
459 default 5 if CPU_SUBTYPE_SH7619
460 default 0
492 help 461 help
493 MD2 - MD0 pin setting. 462 MD2 - MD0 pin setting.
494 463
@@ -560,6 +529,7 @@ config CRASH_DUMP
560 529
561config SMP 530config SMP
562 bool "Symmetric multi-processing support" 531 bool "Symmetric multi-processing support"
532 depends on SYS_SUPPORTS_SMP
563 ---help--- 533 ---help---
564 This enables support for systems with more than one CPU. If you have 534 This enables support for systems with more than one CPU. If you have
565 a system with only one CPU, like most personal computers, say N. If 535 a system with only one CPU, like most personal computers, say N. If
@@ -584,6 +554,7 @@ config NR_CPUS
584 int "Maximum number of CPUs (2-32)" 554 int "Maximum number of CPUs (2-32)"
585 range 2 32 555 range 2 32
586 depends on SMP 556 depends on SMP
557 default "4" if CPU_SHX3
587 default "2" 558 default "2"
588 help 559 help
589 This allows you to specify the maximum number of CPUs which this 560 This allows you to specify the maximum number of CPUs which this
@@ -623,6 +594,7 @@ config BOOT_LINK_OFFSET
623 594
624config UBC_WAKEUP 595config UBC_WAKEUP
625 bool "Wakeup UBC on startup" 596 bool "Wakeup UBC on startup"
597 depends on CPU_SH4
626 help 598 help
627 Selecting this option will wakeup the User Break Controller (UBC) on 599 Selecting this option will wakeup the User Break Controller (UBC) on
628 startup. Although the UBC is left in an awake state when the processor 600 startup. Although the UBC is left in an awake state when the processor
@@ -651,8 +623,8 @@ menu "Bus options"
651# we're not using PCMCIA, so we make it dependent on 623# we're not using PCMCIA, so we make it dependent on
652# PCMCIA outright. -- PFM. 624# PCMCIA outright. -- PFM.
653config ISA 625config ISA
654 bool 626 def_bool y
655 default y if PCMCIA 627 depends on PCMCIA && HD6446X_SERIES
656 help 628 help
657 Find out whether you have ISA slots on your motherboard. ISA is the 629 Find out whether you have ISA slots on your motherboard. ISA is the
658 name of a bus system, i.e. the way the CPU talks to the other stuff 630 name of a bus system, i.e. the way the CPU talks to the other stuff
@@ -690,6 +662,49 @@ config SUPERHYWAY
690 tristate "SuperHyway Bus support" 662 tristate "SuperHyway Bus support"
691 depends on CPU_SUBTYPE_SH4_202 663 depends on CPU_SUBTYPE_SH4_202
692 664
665config CF_ENABLER
666 bool "Compact Flash Enabler support"
667 depends on SOLUTION_ENGINE || SH_SH03
668 ---help---
669 Compact Flash is a small, removable mass storage device introduced
670 in 1994 originally as a PCMCIA device. If you say `Y' here, you
671 compile in support for Compact Flash devices directly connected to
672 a SuperH processor. A Compact Flash FAQ is available at
673 <http://www.compactflash.org/faqs/faq.htm>.
674
675 If your board has "Directly Connected" CompactFlash at area 5 or 6,
676 you may want to enable this option. Then, you can use CF as
677 primary IDE drive (only tested for SanDisk).
678
679 If in doubt, select 'N'.
680
681choice
682 prompt "Compact Flash Connection Area"
683 depends on CF_ENABLER
684 default CF_AREA6
685
686config CF_AREA5
687 bool "Area5"
688 help
689 If your board has "Directly Connected" CompactFlash, You should
690 select the area where your CF is connected to.
691
692 - "Area5" if CompactFlash is connected to Area 5 (0x14000000)
693 - "Area6" if it is connected to Area 6 (0x18000000)
694
695 "Area6" will work for most boards.
696
697config CF_AREA6
698 bool "Area6"
699
700endchoice
701
702config CF_BASE_ADDR
703 hex
704 depends on CF_ENABLER
705 default "0xb8000000" if CF_AREA6
706 default "0xb4000000" if CF_AREA5
707
693source "arch/sh/drivers/pci/Kconfig" 708source "arch/sh/drivers/pci/Kconfig"
694 709
695source "drivers/pci/Kconfig" 710source "drivers/pci/Kconfig"
@@ -707,7 +722,7 @@ source "fs/Kconfig.binfmt"
707endmenu 722endmenu
708 723
709menu "Power management options (EXPERIMENTAL)" 724menu "Power management options (EXPERIMENTAL)"
710depends on EXPERIMENTAL 725depends on EXPERIMENTAL && SYS_SUPPORTS_PM
711 726
712source kernel/power/Kconfig 727source kernel/power/Kconfig
713 728
diff --git a/arch/sh/Kconfig.debug b/arch/sh/Kconfig.debug
index b56307294b67..52f6a99c8ecc 100644
--- a/arch/sh/Kconfig.debug
+++ b/arch/sh/Kconfig.debug
@@ -52,6 +52,10 @@ config EARLY_PRINTK
52 select both the EARLY_SCIF_CONSOLE and SH_STANDARD_BIOS, using 52 select both the EARLY_SCIF_CONSOLE and SH_STANDARD_BIOS, using
53 the kernel command line option to toggle back and forth. 53 the kernel command line option to toggle back and forth.
54 54
55config DEBUG_BOOTMEM
56 depends on DEBUG_KERNEL
57 bool "Debug BOOTMEM initialization"
58
55config DEBUG_STACKOVERFLOW 59config DEBUG_STACKOVERFLOW
56 bool "Check for stack overflows" 60 bool "Check for stack overflows"
57 depends on DEBUG_KERNEL 61 depends on DEBUG_KERNEL
@@ -82,6 +86,7 @@ config SH_KGDB
82 bool "Include KGDB kernel debugger" 86 bool "Include KGDB kernel debugger"
83 select FRAME_POINTER 87 select FRAME_POINTER
84 select DEBUG_INFO 88 select DEBUG_INFO
89 depends on CPU_SH3 || CPU_SH4
85 help 90 help
86 Include in-kernel hooks for kgdb, the Linux kernel source level 91 Include in-kernel hooks for kgdb, the Linux kernel source level
87 debugger. See <http://kgdb.sourceforge.net/> for more information. 92 debugger. See <http://kgdb.sourceforge.net/> for more information.
diff --git a/arch/sh/Makefile b/arch/sh/Makefile
index 883b03b040c4..77fecc62a056 100644
--- a/arch/sh/Makefile
+++ b/arch/sh/Makefile
@@ -34,20 +34,20 @@ isa-y := $(isa-y)-nofpu
34endif 34endif
35endif 35endif
36 36
37cflags-$(CONFIG_CPU_SH2) := -m2 37cflags-$(CONFIG_CPU_SH2) := $(call cc-option,-m2,)
38cflags-$(CONFIG_CPU_SH2A) := -m2a $(call cc-option,-m2a-nofpu,) 38cflags-$(CONFIG_CPU_SH2A) += $(call cc-option,-m2a,) \
39cflags-$(CONFIG_CPU_SH3) := -m3 39 $(call cc-option,-m2a-nofpu,)
40cflags-$(CONFIG_CPU_SH4) := -m4 \ 40cflags-$(CONFIG_CPU_SH3) := $(call cc-option,-m3,)
41cflags-$(CONFIG_CPU_SH4) := $(call cc-option,-m4,) \
41 $(call cc-option,-mno-implicit-fp,-m4-nofpu) 42 $(call cc-option,-mno-implicit-fp,-m4-nofpu)
42cflags-$(CONFIG_CPU_SH4A) := $(call cc-option,-m4a,) $(call cc-option,-m4a-nofpu,) 43cflags-$(CONFIG_CPU_SH4A) += $(call cc-option,-m4a,) \
44 $(call cc-option,-m4a-nofpu,)
43 45
44cflags-$(CONFIG_CPU_BIG_ENDIAN) += -mb 46cflags-$(CONFIG_CPU_BIG_ENDIAN) += -mb
45cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -ml 47cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -ml
46 48
47cflags-y += $(call as-option,-Wa$(comma)-isa=$(isa-y),) -ffreestanding 49cflags-y += $(call as-option,-Wa$(comma)-isa=$(isa-y),) -ffreestanding
48 50
49cflags-$(CONFIG_SH_DSP) += -Wa,-dsp
50
51cflags-$(CONFIG_MORE_COMPILE_OPTIONS) += \ 51cflags-$(CONFIG_MORE_COMPILE_OPTIONS) += \
52 $(shell echo $(CONFIG_COMPILE_OPTIONS) | sed -e 's/"//g') 52 $(shell echo $(CONFIG_COMPILE_OPTIONS) | sed -e 's/"//g')
53 53
@@ -87,39 +87,37 @@ core-y += arch/sh/kernel/ arch/sh/mm/
87core-$(CONFIG_SH_FPU_EMU) += arch/sh/math-emu/ 87core-$(CONFIG_SH_FPU_EMU) += arch/sh/math-emu/
88 88
89# Boards 89# Boards
90machdir-$(CONFIG_SH_SOLUTION_ENGINE) := se/770x 90machdir-$(CONFIG_SH_SOLUTION_ENGINE) += se/770x
91machdir-$(CONFIG_SH_7722_SOLUTION_ENGINE) := se/7722 91machdir-$(CONFIG_SH_7722_SOLUTION_ENGINE) += se/7722
92machdir-$(CONFIG_SH_7751_SOLUTION_ENGINE) := se/7751 92machdir-$(CONFIG_SH_7751_SOLUTION_ENGINE) += se/7751
93machdir-$(CONFIG_SH_7780_SOLUTION_ENGINE) := se/7780 93machdir-$(CONFIG_SH_7780_SOLUTION_ENGINE) += se/7780
94machdir-$(CONFIG_SH_7300_SOLUTION_ENGINE) := se/7300 94machdir-$(CONFIG_SH_7300_SOLUTION_ENGINE) += se/7300
95machdir-$(CONFIG_SH_7343_SOLUTION_ENGINE) := se/7343 95machdir-$(CONFIG_SH_7343_SOLUTION_ENGINE) += se/7343
96machdir-$(CONFIG_SH_73180_SOLUTION_ENGINE) := se/73180 96machdir-$(CONFIG_SH_73180_SOLUTION_ENGINE) += se/73180
97machdir-$(CONFIG_SH_HP6XX) := hp6xx 97machdir-$(CONFIG_SH_HP6XX) += hp6xx
98machdir-$(CONFIG_SH_SATURN) := saturn 98machdir-$(CONFIG_SH_DREAMCAST) += dreamcast
99machdir-$(CONFIG_SH_DREAMCAST) := dreamcast 99machdir-$(CONFIG_SH_MPC1211) += mpc1211
100machdir-$(CONFIG_SH_MPC1211) := mpc1211 100machdir-$(CONFIG_SH_SH03) += sh03
101machdir-$(CONFIG_SH_SH03) := sh03 101machdir-$(CONFIG_SH_SECUREEDGE5410) += snapgear
102machdir-$(CONFIG_SH_SECUREEDGE5410) := snapgear 102machdir-$(CONFIG_SH_HS7751RVOIP) += renesas/hs7751rvoip
103machdir-$(CONFIG_SH_HS7751RVOIP) := renesas/hs7751rvoip 103machdir-$(CONFIG_SH_RTS7751R2D) += renesas/rts7751r2d
104machdir-$(CONFIG_SH_RTS7751R2D) := renesas/rts7751r2d 104machdir-$(CONFIG_SH_7751_SYSTEMH) += renesas/systemh
105machdir-$(CONFIG_SH_7751_SYSTEMH) := renesas/systemh 105machdir-$(CONFIG_SH_EDOSK7705) += renesas/edosk7705
106machdir-$(CONFIG_SH_EDOSK7705) := renesas/edosk7705 106machdir-$(CONFIG_SH_HIGHLANDER) += renesas/r7780rp
107machdir-$(CONFIG_SH_HIGHLANDER) := renesas/r7780rp 107machdir-$(CONFIG_SH_7710VOIPGW) += renesas/sh7710voipgw
108machdir-$(CONFIG_SH_7710VOIPGW) := renesas/sh7710voipgw 108machdir-$(CONFIG_SH_SH4202_MICRODEV) += superh/microdev
109machdir-$(CONFIG_SH_SH4202_MICRODEV) := superh/microdev 109machdir-$(CONFIG_SH_LANDISK) += landisk
110machdir-$(CONFIG_SH_LANDISK) := landisk 110machdir-$(CONFIG_SH_TITAN) += titan
111machdir-$(CONFIG_SH_TITAN) := titan 111machdir-$(CONFIG_SH_SHMIN) += shmin
112machdir-$(CONFIG_SH_SHMIN) := shmin 112machdir-$(CONFIG_SH_7206_SOLUTION_ENGINE) += se/7206
113machdir-$(CONFIG_SH_7206_SOLUTION_ENGINE) := se/7206 113machdir-$(CONFIG_SH_7619_SOLUTION_ENGINE) += se/7619
114machdir-$(CONFIG_SH_7619_SOLUTION_ENGINE) := se/7619 114machdir-$(CONFIG_SH_LBOX_RE2) += lboxre2
115machdir-$(CONFIG_SH_LBOX_RE2) := lboxre2 115
116machdir-$(CONFIG_SH_UNKNOWN) := unknown 116incdir-y := $(notdir $(machdir-y))
117
118incdir-y := $(notdir $(machdir-y))
119incdir-$(CONFIG_SH_HP6XX) := hp6xx
120 117
121ifneq ($(machdir-y),) 118ifneq ($(machdir-y),)
122core-y += arch/sh/boards/$(machdir-y)/ 119core-y += $(addprefix arch/sh/boards/, \
120 $(filter-out ., $(patsubst %,%/,$(machdir-y))))
123endif 121endif
124 122
125# Companion chips 123# Companion chips
@@ -157,19 +155,31 @@ include/asm-sh/.cpu: $(wildcard include/config/cpu/*.h) \
157# Most boards have their own mach directories. For the ones that 155# Most boards have their own mach directories. For the ones that
158# don't, just reference the parent directory so the semantics are 156# don't, just reference the parent directory so the semantics are
159# kept roughly the same. 157# kept roughly the same.
158#
159# When multiple boards are compiled in at the same time, preference
160# for the mach link is given to whichever has a directory for its
161# headers. However, this is only a workaround until platforms that
162# can live in the same kernel image back away from relying on the
163# mach link.
160 164
161include/asm-sh/.mach: $(wildcard include/config/sh/*.h) \ 165include/asm-sh/.mach: $(wildcard include/config/sh/*.h) \
162 include/config/auto.conf FORCE 166 include/config/auto.conf FORCE
163 @echo -n ' SYMLINK include/asm-sh/mach -> '
164 $(Q)if [ ! -d include/asm-sh ]; then mkdir -p include/asm-sh; fi 167 $(Q)if [ ! -d include/asm-sh ]; then mkdir -p include/asm-sh; fi
165 $(Q)if [ -d $(incdir-prefix)$(incdir-y) ]; then \ 168 $(Q)rm -f include/asm-sh/mach
166 echo -e 'include/asm-sh/$(incdir-y)'; \ 169 $(Q)for i in $(incdir-y); do \
167 ln -fsn $(incdir-prefix)$(incdir-y) \ 170 if [ -d $(incdir-prefix)$$i ]; then \
171 echo -n ' SYMLINK include/asm-sh/mach -> '; \
172 echo -e "include/asm-sh/$$i"; \
173 ln -fsn $(incdir-prefix)$$i \
168 include/asm-sh/mach; \ 174 include/asm-sh/mach; \
169 else \ 175 else \
170 echo -e 'include/asm-sh'; \ 176 if [ ! -d include/asm-sh/mach ]; then \
171 ln -fsn $(incdir-prefix) include/asm-sh/mach; \ 177 echo -n ' SYMLINK include/asm-sh/mach -> '; \
172 fi 178 echo -e 'include/asm-sh'; \
179 ln -fsn $(incdir-prefix) include/asm-sh/mach; \
180 fi; \
181 fi; \
182 done
173 @touch $@ 183 @touch $@
174 184
175archprepare: include/asm-sh/.cpu include/asm-sh/.mach maketools 185archprepare: include/asm-sh/.cpu include/asm-sh/.mach maketools
@@ -188,7 +198,9 @@ compressed: zImage
188archclean: 198archclean:
189 $(Q)$(MAKE) $(clean)=$(boot) 199 $(Q)$(MAKE) $(clean)=$(boot)
190 200
191CLEAN_FILES += include/asm-sh/machtypes.h 201CLEAN_FILES += include/asm-sh/machtypes.h \
202 include/asm-sh/cpu include/asm-sh/.cpu \
203 include/asm-sh/mach include/asm-sh/.mach
192 204
193define archhelp 205define archhelp
194 @echo '* zImage - Compressed kernel image' 206 @echo '* zImage - Compressed kernel image'
diff --git a/arch/sh/boards/dreamcast/setup.c b/arch/sh/boards/dreamcast/setup.c
index f13017eeeb27..8799df6e866a 100644
--- a/arch/sh/boards/dreamcast/setup.c
+++ b/arch/sh/boards/dreamcast/setup.c
@@ -60,7 +60,7 @@ static void __init dreamcast_setup(char **cmdline_p)
60#endif 60#endif
61} 61}
62 62
63struct sh_machine_vector mv_dreamcast __initmv = { 63static struct sh_machine_vector mv_dreamcast __initmv = {
64 .mv_name = "Sega Dreamcast", 64 .mv_name = "Sega Dreamcast",
65 .mv_setup = dreamcast_setup, 65 .mv_setup = dreamcast_setup,
66 .mv_irq_demux = systemasic_irq_demux, 66 .mv_irq_demux = systemasic_irq_demux,
@@ -70,4 +70,3 @@ struct sh_machine_vector mv_dreamcast __initmv = {
70 .mv_consistent_free = dreamcast_consistent_free, 70 .mv_consistent_free = dreamcast_consistent_free,
71#endif 71#endif
72}; 72};
73ALIAS_MV(dreamcast)
diff --git a/arch/sh/boards/hp6xx/mach.c b/arch/sh/boards/hp6xx/mach.c
deleted file mode 100644
index 08dbba910f74..000000000000
--- a/arch/sh/boards/hp6xx/mach.c
+++ /dev/null
@@ -1,46 +0,0 @@
1/*
2 * linux/arch/sh/boards/hp6xx/mach.c
3 *
4 * Copyright (C) 2000 Stuart Menefy (stuart.menefy@st.com)
5 *
6 * May be copied or modified under the terms of the GNU General Public
7 * License. See linux/COPYING for more information.
8 *
9 * Machine vector for the HP680
10 */
11#include <asm/machvec.h>
12#include <asm/hd64461.h>
13#include <asm/io.h>
14#include <asm/irq.h>
15
16struct sh_machine_vector mv_hp6xx __initmv = {
17 .mv_nr_irqs = HD64461_IRQBASE + HD64461_IRQ_NUM,
18
19 .mv_inb = hd64461_inb,
20 .mv_inw = hd64461_inw,
21 .mv_inl = hd64461_inl,
22 .mv_outb = hd64461_outb,
23 .mv_outw = hd64461_outw,
24 .mv_outl = hd64461_outl,
25
26 .mv_inb_p = hd64461_inb_p,
27 .mv_inw_p = hd64461_inw,
28 .mv_inl_p = hd64461_inl,
29 .mv_outb_p = hd64461_outb_p,
30 .mv_outw_p = hd64461_outw,
31 .mv_outl_p = hd64461_outl,
32
33 .mv_insb = hd64461_insb,
34 .mv_insw = hd64461_insw,
35 .mv_insl = hd64461_insl,
36 .mv_outsb = hd64461_outsb,
37 .mv_outsw = hd64461_outsw,
38 .mv_outsl = hd64461_outsl,
39
40 .mv_readw = hd64461_readw,
41 .mv_writew = hd64461_writew,
42
43 .mv_irq_demux = hd64461_irq_demux,
44};
45
46ALIAS_MV(hp6xx)
diff --git a/arch/sh/boards/hp6xx/setup.c b/arch/sh/boards/hp6xx/setup.c
index 6aeee85c9785..7ae708930bac 100644
--- a/arch/sh/boards/hp6xx/setup.c
+++ b/arch/sh/boards/hp6xx/setup.c
@@ -98,10 +98,9 @@ static void __init hp6xx_setup(char **cmdline_p)
98} 98}
99device_initcall(hp6xx_devices_setup); 99device_initcall(hp6xx_devices_setup);
100 100
101struct sh_machine_vector mv_hp6xx __initmv = { 101static struct sh_machine_vector mv_hp6xx __initmv = {
102 .mv_name = "hp6xx", 102 .mv_name = "hp6xx",
103 .mv_setup = hp6xx_setup, 103 .mv_setup = hp6xx_setup,
104 .mv_nr_irqs = HD64461_IRQBASE + HD64461_IRQ_NUM, 104 .mv_nr_irqs = HD64461_IRQBASE + HD64461_IRQ_NUM,
105 .mv_irq_demux = hd64461_irq_demux, 105 .mv_irq_demux = hd64461_irq_demux,
106}; 106};
107ALIAS_MV(hp6xx)
diff --git a/arch/sh/boards/landisk/setup.c b/arch/sh/boards/landisk/setup.c
index f953c7427769..eda71763ecc5 100644
--- a/arch/sh/boards/landisk/setup.c
+++ b/arch/sh/boards/landisk/setup.c
@@ -97,10 +97,9 @@ static void __init landisk_setup(char **cmdline_p)
97/* 97/*
98 * The Machine Vector 98 * The Machine Vector
99 */ 99 */
100struct sh_machine_vector mv_landisk __initmv = { 100static struct sh_machine_vector mv_landisk __initmv = {
101 .mv_name = "LANDISK", 101 .mv_name = "LANDISK",
102 .mv_nr_irqs = 72, 102 .mv_nr_irqs = 72,
103 .mv_setup = landisk_setup, 103 .mv_setup = landisk_setup,
104 .mv_init_irq = init_landisk_IRQ, 104 .mv_init_irq = init_landisk_IRQ,
105}; 105};
106ALIAS_MV(landisk)
diff --git a/arch/sh/boards/lboxre2/setup.c b/arch/sh/boards/lboxre2/setup.c
index 4e20f7c63bf3..9c830fdc411b 100644
--- a/arch/sh/boards/lboxre2/setup.c
+++ b/arch/sh/boards/lboxre2/setup.c
@@ -77,9 +77,8 @@ device_initcall(lboxre2_devices_setup);
77/* 77/*
78 * The Machine Vector 78 * The Machine Vector
79 */ 79 */
80struct sh_machine_vector mv_lboxre2 __initmv = { 80static struct sh_machine_vector mv_lboxre2 __initmv = {
81 .mv_name = "L-BOX RE2", 81 .mv_name = "L-BOX RE2",
82 .mv_nr_irqs = 72, 82 .mv_nr_irqs = 72,
83 .mv_init_irq = init_lboxre2_IRQ, 83 .mv_init_irq = init_lboxre2_IRQ,
84}; 84};
85ALIAS_MV(lboxre2)
diff --git a/arch/sh/boards/mpc1211/setup.c b/arch/sh/boards/mpc1211/setup.c
index 1a0604b23ce0..8ce03e00b0ae 100644
--- a/arch/sh/boards/mpc1211/setup.c
+++ b/arch/sh/boards/mpc1211/setup.c
@@ -338,11 +338,10 @@ static void __init mpc1211_setup(char **cmdline_p)
338/* 338/*
339 * The Machine Vector 339 * The Machine Vector
340 */ 340 */
341struct sh_machine_vector mv_mpc1211 __initmv = { 341static struct sh_machine_vector mv_mpc1211 __initmv = {
342 .mv_name = "Interface MPC-1211(CTP/PCI/MPC-SH02)", 342 .mv_name = "Interface MPC-1211(CTP/PCI/MPC-SH02)",
343 .mv_setup = mpc1211_setup, 343 .mv_setup = mpc1211_setup,
344 .mv_nr_irqs = 48, 344 .mv_nr_irqs = 48,
345 .mv_irq_demux = mpc1211_irq_demux, 345 .mv_irq_demux = mpc1211_irq_demux,
346 .mv_init_irq = init_mpc1211_IRQ, 346 .mv_init_irq = init_mpc1211_IRQ,
347}; 347};
348ALIAS_MV(mpc1211)
diff --git a/arch/sh/boards/renesas/edosk7705/setup.c b/arch/sh/boards/renesas/edosk7705/setup.c
index ec5be0107719..f076c45308dd 100644
--- a/arch/sh/boards/renesas/edosk7705/setup.c
+++ b/arch/sh/boards/renesas/edosk7705/setup.c
@@ -21,7 +21,7 @@ static void __init sh_edosk7705_init_irq(void)
21/* 21/*
22 * The Machine Vector 22 * The Machine Vector
23 */ 23 */
24struct sh_machine_vector mv_edosk7705 __initmv = { 24static struct sh_machine_vector mv_edosk7705 __initmv = {
25 .mv_name = "EDOSK7705", 25 .mv_name = "EDOSK7705",
26 .mv_nr_irqs = 80, 26 .mv_nr_irqs = 80,
27 27
@@ -41,4 +41,3 @@ struct sh_machine_vector mv_edosk7705 __initmv = {
41 .mv_isa_port2addr = sh_edosk7705_isa_port2addr, 41 .mv_isa_port2addr = sh_edosk7705_isa_port2addr,
42 .mv_init_irq = sh_edosk7705_init_irq, 42 .mv_init_irq = sh_edosk7705_init_irq,
43}; 43};
44ALIAS_MV(edosk7705)
diff --git a/arch/sh/boards/renesas/hs7751rvoip/setup.c b/arch/sh/boards/renesas/hs7751rvoip/setup.c
index f7d0e304d899..fa5fa3920222 100644
--- a/arch/sh/boards/renesas/hs7751rvoip/setup.c
+++ b/arch/sh/boards/renesas/hs7751rvoip/setup.c
@@ -89,7 +89,7 @@ static void __init hs7751rvoip_setup(char **cmdline_p)
89 printk(KERN_INFO "Renesas Technology Sales HS7751RVoIP-2 support.\n"); 89 printk(KERN_INFO "Renesas Technology Sales HS7751RVoIP-2 support.\n");
90} 90}
91 91
92struct sh_machine_vector mv_hs7751rvoip __initmv = { 92static struct sh_machine_vector mv_hs7751rvoip __initmv = {
93 .mv_name = "HS7751RVoIP", 93 .mv_name = "HS7751RVoIP",
94 .mv_setup = hs7751rvoip_setup, 94 .mv_setup = hs7751rvoip_setup,
95 .mv_nr_irqs = 72, 95 .mv_nr_irqs = 72,
@@ -118,4 +118,3 @@ struct sh_machine_vector mv_hs7751rvoip __initmv = {
118 .mv_init_irq = hs7751rvoip_init_irq, 118 .mv_init_irq = hs7751rvoip_init_irq,
119 .mv_ioport_map = hs7751rvoip_ioport_map, 119 .mv_ioport_map = hs7751rvoip_ioport_map,
120}; 120};
121ALIAS_MV(hs7751rvoip)
diff --git a/arch/sh/boards/renesas/r7780rp/Kconfig b/arch/sh/boards/renesas/r7780rp/Kconfig
index 9fb11641fe13..fc8f28e04ba3 100644
--- a/arch/sh/boards/renesas/r7780rp/Kconfig
+++ b/arch/sh/boards/renesas/r7780rp/Kconfig
@@ -6,18 +6,18 @@ choice
6 6
7config SH_R7780RP 7config SH_R7780RP
8 bool "R7780RP-1 board support" 8 bool "R7780RP-1 board support"
9 select CPU_SUBTYPE_SH7780 9 depends on CPU_SUBTYPE_SH7780
10 10
11config SH_R7780MP 11config SH_R7780MP
12 bool "R7780MP board support" 12 bool "R7780MP board support"
13 select CPU_SUBTYPE_SH7780 13 depends on CPU_SUBTYPE_SH7780
14 help 14 help
15 Selecting this option will enable support for the mass-production 15 Selecting this option will enable support for the mass-production
16 version of the R7780RP. If in doubt, say Y. 16 version of the R7780RP. If in doubt, say Y.
17 17
18config SH_R7785RP 18config SH_R7785RP
19 bool "R7785RP board support" 19 bool "R7785RP board support"
20 select CPU_SUBTYPE_SH7785 20 depends on CPU_SUBTYPE_SH7785
21 21
22endchoice 22endchoice
23 23
diff --git a/arch/sh/boards/renesas/r7780rp/setup.c b/arch/sh/boards/renesas/r7780rp/setup.c
index 0727ef92f2b3..5afb864a1ec5 100644
--- a/arch/sh/boards/renesas/r7780rp/setup.c
+++ b/arch/sh/boards/renesas/r7780rp/setup.c
@@ -166,10 +166,9 @@ static void __init highlander_setup(char **cmdline_p)
166/* 166/*
167 * The Machine Vector 167 * The Machine Vector
168 */ 168 */
169struct sh_machine_vector mv_highlander __initmv = { 169static struct sh_machine_vector mv_highlander __initmv = {
170 .mv_name = "Highlander", 170 .mv_name = "Highlander",
171 .mv_nr_irqs = 109, 171 .mv_nr_irqs = 109,
172 .mv_setup = highlander_setup, 172 .mv_setup = highlander_setup,
173 .mv_init_irq = highlander_init_irq, 173 .mv_init_irq = highlander_init_irq,
174}; 174};
175ALIAS_MV(highlander)
diff --git a/arch/sh/boards/renesas/rts7751r2d/setup.c b/arch/sh/boards/renesas/rts7751r2d/setup.c
index 593f26a85e9c..656fda30ef70 100644
--- a/arch/sh/boards/renesas/rts7751r2d/setup.c
+++ b/arch/sh/boards/renesas/rts7751r2d/setup.c
@@ -176,7 +176,7 @@ static void __init rts7751r2d_setup(char **cmdline_p)
176/* 176/*
177 * The Machine Vector 177 * The Machine Vector
178 */ 178 */
179struct sh_machine_vector mv_rts7751r2d __initmv = { 179static struct sh_machine_vector mv_rts7751r2d __initmv = {
180 .mv_name = "RTS7751R2D", 180 .mv_name = "RTS7751R2D",
181 .mv_setup = rts7751r2d_setup, 181 .mv_setup = rts7751r2d_setup,
182 .mv_nr_irqs = 72, 182 .mv_nr_irqs = 72,
@@ -189,4 +189,3 @@ struct sh_machine_vector mv_rts7751r2d __initmv = {
189 .mv_consistent_free = voyagergx_consistent_free, 189 .mv_consistent_free = voyagergx_consistent_free,
190#endif 190#endif
191}; 191};
192ALIAS_MV(rts7751r2d)
diff --git a/arch/sh/boards/renesas/sh7710voipgw/setup.c b/arch/sh/boards/renesas/sh7710voipgw/setup.c
index 180810b12107..2dce8bd97f90 100644
--- a/arch/sh/boards/renesas/sh7710voipgw/setup.c
+++ b/arch/sh/boards/renesas/sh7710voipgw/setup.c
@@ -88,9 +88,8 @@ static void __init sh7710voipgw_init_irq(void)
88/* 88/*
89 * The Machine Vector 89 * The Machine Vector
90 */ 90 */
91struct sh_machine_vector mv_sh7710voipgw __initmv = { 91static struct sh_machine_vector mv_sh7710voipgw __initmv = {
92 .mv_name = "SH7710 VoIP Gateway", 92 .mv_name = "SH7710 VoIP Gateway",
93 .mv_nr_irqs = 104, 93 .mv_nr_irqs = 104,
94 .mv_init_irq = sh7710voipgw_init_irq, 94 .mv_init_irq = sh7710voipgw_init_irq,
95}; 95};
96ALIAS_MV(sh7710voipgw)
diff --git a/arch/sh/boards/renesas/systemh/setup.c b/arch/sh/boards/renesas/systemh/setup.c
index 936117659b74..ee78af842778 100644
--- a/arch/sh/boards/renesas/systemh/setup.c
+++ b/arch/sh/boards/renesas/systemh/setup.c
@@ -28,7 +28,7 @@ static void __init sh7751systemh_init_irq(void)
28 make_systemh_irq(0xb); /* Ethernet interrupt */ 28 make_systemh_irq(0xb); /* Ethernet interrupt */
29} 29}
30 30
31struct sh_machine_vector mv_7751systemh __initmv = { 31static struct sh_machine_vector mv_7751systemh __initmv = {
32 .mv_name = "7751 SystemH", 32 .mv_name = "7751 SystemH",
33 .mv_nr_irqs = 72, 33 .mv_nr_irqs = 72,
34 34
@@ -55,4 +55,3 @@ struct sh_machine_vector mv_7751systemh __initmv = {
55 55
56 .mv_init_irq = sh7751systemh_init_irq, 56 .mv_init_irq = sh7751systemh_init_irq,
57}; 57};
58ALIAS_MV(7751systemh)
diff --git a/arch/sh/boards/saturn/Makefile b/arch/sh/boards/saturn/Makefile
deleted file mode 100644
index 75a3042e252e..000000000000
--- a/arch/sh/boards/saturn/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
1#
2# Makefile for the Sega Saturn specific parts of the kernel
3#
4
5obj-y := setup.o io.o irq.o
6
7obj-$(CONFIG_SMP) += smp.o
8
diff --git a/arch/sh/boards/saturn/io.c b/arch/sh/boards/saturn/io.c
deleted file mode 100644
index c6e4f7f2e686..000000000000
--- a/arch/sh/boards/saturn/io.c
+++ /dev/null
@@ -1,26 +0,0 @@
1/*
2 * arch/sh/boards/saturn/io.c
3 *
4 * I/O routines for the Sega Saturn.
5 *
6 * Copyright (C) 2002 Paul Mundt
7 *
8 * Released under the terms of the GNU GPL v2.0.
9 */
10#include <asm/saturn/io.h>
11#include <asm/machvec.h>
12
13unsigned long saturn_isa_port2addr(unsigned long offset)
14{
15 return offset;
16}
17
18void *saturn_ioremap(unsigned long offset, unsigned long size)
19{
20 return (void *)offset;
21}
22
23void saturn_iounmap(void *addr)
24{
25}
26
diff --git a/arch/sh/boards/saturn/irq.c b/arch/sh/boards/saturn/irq.c
deleted file mode 100644
index 15d1d3f0f787..000000000000
--- a/arch/sh/boards/saturn/irq.c
+++ /dev/null
@@ -1,118 +0,0 @@
1/*
2 * arch/sh/boards/saturn/irq.c
3 *
4 * Copyright (C) 2002 Paul Mundt
5 *
6 * Released under the terms of the GNU GPL v2.0.
7 */
8#include <linux/kernel.h>
9#include <linux/init.h>
10#include <linux/interrupt.h>
11#include <asm/irq.h>
12#include <asm/io.h>
13
14/*
15 * Interrupts map out as follows:
16 *
17 * Vector Name Mask
18 *
19 * 64 VBLANKIN 0x0001
20 * 65 VBLANKOUT 0x0002
21 * 66 HBLANKIN 0x0004
22 * 67 TIMER0 0x0008
23 * 68 TIMER1 0x0010
24 * 69 DSPEND 0x0020
25 * 70 SOUNDREQUEST 0x0040
26 * 71 SYSTEMMANAGER 0x0080
27 * 72 PAD 0x0100
28 * 73 LEVEL2DMAEND 0x0200
29 * 74 LEVEL1DMAEND 0x0400
30 * 75 LEVEL0DMAEND 0x0800
31 * 76 DMAILLEGAL 0x1000
32 * 77 SRITEDRAWEND 0x2000
33 * 78 ABUS 0x8000
34 *
35 */
36#define SATURN_IRQ_MIN 64 /* VBLANKIN */
37#define SATURN_IRQ_MAX 78 /* ABUS */
38
39#define SATURN_IRQ_MASK 0xbfff
40
41static inline u32 saturn_irq_mask(unsigned int irq_nr)
42{
43 u32 mask;
44
45 mask = (1 << (irq_nr - SATURN_IRQ_MIN));
46 mask <<= (irq_nr == SATURN_IRQ_MAX);
47 mask &= SATURN_IRQ_MASK;
48
49 return mask;
50}
51
52static inline void mask_saturn_irq(unsigned int irq_nr)
53{
54 u32 mask;
55
56 mask = ctrl_inl(SATURN_IMR);
57 mask |= saturn_irq_mask(irq_nr);
58 ctrl_outl(mask, SATURN_IMR);
59}
60
61static inline void unmask_saturn_irq(unsigned int irq_nr)
62{
63 u32 mask;
64
65 mask = ctrl_inl(SATURN_IMR);
66 mask &= ~saturn_irq_mask(irq_nr);
67 ctrl_outl(mask, SATURN_IMR);
68}
69
70static void disable_saturn_irq(unsigned int irq_nr)
71{
72 mask_saturn_irq(irq_nr);
73}
74
75static void enable_saturn_irq(unsigned int irq_nr)
76{
77 unmask_saturn_irq(irq_nr);
78}
79
80static void mask_and_ack_saturn_irq(unsigned int irq_nr)
81{
82 mask_saturn_irq(irq_nr);
83}
84
85static void end_saturn_irq(unsigned int irq_nr)
86{
87 if (!(irq_desc[irq_nr].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
88 unmask_saturn_irq(irq_nr);
89}
90
91static unsigned int startup_saturn_irq(unsigned int irq_nr)
92{
93 unmask_saturn_irq(irq_nr);
94
95 return 0;
96}
97
98static void shutdown_saturn_irq(unsigned int irq_nr)
99{
100 mask_saturn_irq(irq_nr);
101}
102
103static struct hw_interrupt_type saturn_int = {
104 .typename = "Saturn",
105 .enable = enable_saturn_irq,
106 .disable = disable_saturn_irq,
107 .ack = mask_and_ack_saturn_irq,
108 .end = end_saturn_irq,
109 .startup = startup_saturn_irq,
110 .shutdown = shutdown_saturn_irq,
111};
112
113int saturn_irq_demux(int irq_nr)
114{
115 /* FIXME */
116 return irq_nr;
117}
118
diff --git a/arch/sh/boards/saturn/setup.c b/arch/sh/boards/saturn/setup.c
deleted file mode 100644
index a3a37c9aad2e..000000000000
--- a/arch/sh/boards/saturn/setup.c
+++ /dev/null
@@ -1,31 +0,0 @@
1/*
2 * arch/sh/boards/saturn/setup.c
3 *
4 * Hardware support for the Sega Saturn.
5 *
6 * Copyright (c) 2002 Paul Mundt
7 *
8 * Released under the terms of the GNU GPL v2.0.
9 */
10#include <linux/kernel.h>
11#include <linux/init.h>
12#include <asm/io.h>
13#include <asm/machvec.h>
14#include <asm/mach/io.h>
15
16extern int saturn_irq_demux(int irq_nr);
17
18/*
19 * The Machine Vector
20 */
21struct sh_machine_vector mv_saturn __initmv = {
22 .mv_name = "Sega Saturn",
23 .mv_nr_irqs = 80, /* Fix this later */
24
25 .mv_isa_port2addr = saturn_isa_port2addr,
26 .mv_irq_demux = saturn_irq_demux,
27
28 .mv_ioremap = saturn_ioremap,
29 .mv_iounmap = saturn_iounmap,
30};
31ALIAS_MV(saturn)
diff --git a/arch/sh/boards/saturn/smp.c b/arch/sh/boards/saturn/smp.c
deleted file mode 100644
index 76460918c9cd..000000000000
--- a/arch/sh/boards/saturn/smp.c
+++ /dev/null
@@ -1,68 +0,0 @@
1/*
2 * arch/sh/boards/saturn/smp.c
3 *
4 * SMP support for the Sega Saturn.
5 *
6 * Copyright (c) 2002 Paul Mundt
7 *
8 * Released under the terms of the GNU GPL v2.0.
9 */
10#include <linux/kernel.h>
11#include <linux/init.h>
12#include <linux/smp.h>
13
14#include <asm/saturn/smpc.h>
15
16extern void start_secondary(void);
17
18void __smp_send_ipi(unsigned int cpu, unsigned int action)
19{
20 /* Nothing here yet .. */
21}
22
23unsigned int __smp_probe_cpus(void)
24{
25 /*
26 * This is just a straightforward master/slave configuration,
27 * and probing isn't really supported..
28 */
29 return 2;
30}
31
32/*
33 * We're only allowed to do byte-access to SMPC registers. In
34 * addition to which, we treat them as write-only, since
35 * reading from them will return undefined data.
36 */
37static inline void smpc_slave_stop(unsigned int cpu)
38{
39 smpc_barrier();
40 ctrl_outb(1, SMPC_STATUS);
41
42 ctrl_outb(SMPC_CMD_SSHOFF, SMPC_COMMAND);
43 smpc_barrier();
44}
45
46static inline void smpc_slave_start(unsigned int cpu)
47{
48 ctrl_outb(1, SMPC_STATUS);
49 ctrl_outb(SMPC_CMD_SSHON, SMPC_COMMAND);
50
51 smpc_barrier();
52}
53
54void __smp_slave_init(unsigned int cpu)
55{
56 register unsigned long vbr;
57 void **entry;
58
59 __asm__ __volatile__ ("stc vbr, %0\n\t" : "=r" (vbr));
60 entry = (void **)(vbr + 0x310 + 0x94);
61
62 smpc_slave_stop(cpu);
63
64 *(void **)entry = (void *)start_secondary;
65
66 smpc_slave_start(cpu);
67}
68
diff --git a/arch/sh/boards/se/7206/setup.c b/arch/sh/boards/se/7206/setup.c
index ca714879f559..a074b62505ef 100644
--- a/arch/sh/boards/se/7206/setup.c
+++ b/arch/sh/boards/se/7206/setup.c
@@ -70,7 +70,7 @@ __initcall(se7206_devices_setup);
70 * The Machine Vector 70 * The Machine Vector
71 */ 71 */
72 72
73struct sh_machine_vector mv_se __initmv = { 73static struct sh_machine_vector mv_se __initmv = {
74 .mv_name = "SolutionEngine", 74 .mv_name = "SolutionEngine",
75 .mv_nr_irqs = 256, 75 .mv_nr_irqs = 256,
76 .mv_inb = se7206_inb, 76 .mv_inb = se7206_inb,
@@ -96,4 +96,3 @@ struct sh_machine_vector mv_se __initmv = {
96 96
97 .mv_init_irq = init_se7206_IRQ, 97 .mv_init_irq = init_se7206_IRQ,
98}; 98};
99ALIAS_MV(se)
diff --git a/arch/sh/boards/se/7300/setup.c b/arch/sh/boards/se/7300/setup.c
index f1960956bad0..eb469f5b6e97 100644
--- a/arch/sh/boards/se/7300/setup.c
+++ b/arch/sh/boards/se/7300/setup.c
@@ -46,7 +46,7 @@ __initcall(se7300_devices_setup);
46/* 46/*
47 * The Machine Vector 47 * The Machine Vector
48 */ 48 */
49struct sh_machine_vector mv_7300se __initmv = { 49static struct sh_machine_vector mv_7300se __initmv = {
50 .mv_name = "SolutionEngine 7300", 50 .mv_name = "SolutionEngine 7300",
51 .mv_nr_irqs = 109, 51 .mv_nr_irqs = 109,
52 .mv_inb = sh7300se_inb, 52 .mv_inb = sh7300se_inb,
@@ -72,4 +72,3 @@ struct sh_machine_vector mv_7300se __initmv = {
72 72
73 .mv_init_irq = init_7300se_IRQ, 73 .mv_init_irq = init_7300se_IRQ,
74}; 74};
75ALIAS_MV(7300se)
diff --git a/arch/sh/boards/se/73180/setup.c b/arch/sh/boards/se/73180/setup.c
index e143017c8975..1deee8556642 100644
--- a/arch/sh/boards/se/73180/setup.c
+++ b/arch/sh/boards/se/73180/setup.c
@@ -46,7 +46,7 @@ __initcall(se73180_devices_setup);
46/* 46/*
47 * The Machine Vector 47 * The Machine Vector
48 */ 48 */
49struct sh_machine_vector mv_73180se __initmv = { 49static struct sh_machine_vector mv_73180se __initmv = {
50 .mv_name = "SolutionEngine 73180", 50 .mv_name = "SolutionEngine 73180",
51 .mv_nr_irqs = 108, 51 .mv_nr_irqs = 108,
52 .mv_inb = sh73180se_inb, 52 .mv_inb = sh73180se_inb,
@@ -73,4 +73,3 @@ struct sh_machine_vector mv_73180se __initmv = {
73 .mv_init_irq = init_73180se_IRQ, 73 .mv_init_irq = init_73180se_IRQ,
74 .mv_irq_demux = shmse_irq_demux, 74 .mv_irq_demux = shmse_irq_demux,
75}; 75};
76ALIAS_MV(73180se)
diff --git a/arch/sh/boards/se/7343/setup.c b/arch/sh/boards/se/7343/setup.c
index 3fdb16f2cef1..8fec155e2ff7 100644
--- a/arch/sh/boards/se/7343/setup.c
+++ b/arch/sh/boards/se/7343/setup.c
@@ -64,7 +64,7 @@ static void __init sh7343se_setup(char **cmdline_p)
64/* 64/*
65 * The Machine Vector 65 * The Machine Vector
66 */ 66 */
67struct sh_machine_vector mv_7343se __initmv = { 67static struct sh_machine_vector mv_7343se __initmv = {
68 .mv_name = "SolutionEngine 7343", 68 .mv_name = "SolutionEngine 7343",
69 .mv_setup = sh7343se_setup, 69 .mv_setup = sh7343se_setup,
70 .mv_nr_irqs = 108, 70 .mv_nr_irqs = 108,
@@ -92,4 +92,3 @@ struct sh_machine_vector mv_7343se __initmv = {
92 .mv_init_irq = init_7343se_IRQ, 92 .mv_init_irq = init_7343se_IRQ,
93 .mv_irq_demux = shmse_irq_demux, 93 .mv_irq_demux = shmse_irq_demux,
94}; 94};
95ALIAS_MV(7343se)
diff --git a/arch/sh/boards/se/7619/setup.c b/arch/sh/boards/se/7619/setup.c
index 52d2c4d5d2fa..1d0ef7faa10d 100644
--- a/arch/sh/boards/se/7619/setup.c
+++ b/arch/sh/boards/se/7619/setup.c
@@ -15,8 +15,7 @@
15 * The Machine Vector 15 * The Machine Vector
16 */ 16 */
17 17
18struct sh_machine_vector mv_se __initmv = { 18static struct sh_machine_vector mv_se __initmv = {
19 .mv_name = "SolutionEngine", 19 .mv_name = "SolutionEngine",
20 .mv_nr_irqs = 108, 20 .mv_nr_irqs = 108,
21}; 21};
22ALIAS_MV(se)
diff --git a/arch/sh/boards/se/770x/irq.c b/arch/sh/boards/se/770x/irq.c
index c8eccff77a04..cdb0807928a5 100644
--- a/arch/sh/boards/se/770x/irq.c
+++ b/arch/sh/boards/se/770x/irq.c
@@ -15,46 +15,7 @@
15#include <asm/io.h> 15#include <asm/io.h>
16#include <asm/se.h> 16#include <asm/se.h>
17 17
18/* 18static struct ipr_data ipr_irq_table[] = {
19 * If the problem of make_ipr_irq is solved,
20 * this code will become unnecessary. :-)
21 */
22static void se770x_disable_ipr_irq(unsigned int irq)
23{
24 struct ipr_data *p = get_irq_chip_data(irq);
25
26 ctrl_outw(ctrl_inw(p->addr) & (0xffff ^ (0xf << p->shift)), p->addr);
27}
28
29static void se770x_enable_ipr_irq(unsigned int irq)
30{
31 struct ipr_data *p = get_irq_chip_data(irq);
32
33 ctrl_outw(ctrl_inw(p->addr) | (p->priority << p->shift), p->addr);
34}
35
36static struct irq_chip se770x_irq_chip = {
37 .name = "MS770xSE-FPGA",
38 .mask = se770x_disable_ipr_irq,
39 .unmask = se770x_enable_ipr_irq,
40 .mask_ack = se770x_disable_ipr_irq,
41};
42
43void make_se770x_irq(struct ipr_data *table, unsigned int nr_irqs)
44{
45 int i;
46
47 for (i = 0; i < nr_irqs; i++) {
48 unsigned int irq = table[i].irq;
49 disable_irq_nosync(irq);
50 set_irq_chip_and_handler_name(irq, &se770x_irq_chip,
51 handle_level_irq, "level");
52 set_irq_chip_data(irq, &table[i]);
53 se770x_enable_ipr_irq(irq);
54 }
55}
56
57static struct ipr_data se770x_ipr_map[] = {
58 /* 19 /*
59 * Super I/O (Just mimic PC): 20 * Super I/O (Just mimic PC):
60 * 1: keyboard 21 * 1: keyboard
@@ -68,46 +29,67 @@ static struct ipr_data se770x_ipr_map[] = {
68 */ 29 */
69#if defined(CONFIG_CPU_SUBTYPE_SH7705) 30#if defined(CONFIG_CPU_SUBTYPE_SH7705)
70 /* This is default value */ 31 /* This is default value */
71 { 13, 0, 8, 0x0f-13 ,BCR_ILCRA}, 32 { 13, 0, 8, 0x0f-13, },
72 { 5 , 0, 4, 0x0f- 5 ,BCR_ILCRA}, 33 { 5 , 0, 4, 0x0f- 5, },
73 { 10, 0, 0, 0x0f-10, BCR_ILCRB}, 34 { 10, 1, 0, 0x0f-10, },
74 { 7 , 0, 4, 0x0f- 7, BCR_ILCRC}, 35 { 7 , 2, 4, 0x0f- 7, },
75 { 3 , 0, 0, 0x0f- 3, BCR_ILCRC}, 36 { 3 , 2, 0, 0x0f- 3, },
76 { 1 , 0, 12, 0x0f- 1, BCR_ILCRD}, 37 { 1 , 3, 12, 0x0f- 1, },
77 { 12, 0, 4, 0x0f-12, BCR_ILCRD}, /* LAN */ 38 { 12, 3, 4, 0x0f-12, }, /* LAN */
78 { 2 , 0, 8, 0x0f- 2, BCR_ILCRE}, /* PCIRQ2 */ 39 { 2 , 4, 8, 0x0f- 2, }, /* PCIRQ2 */
79 { 6 , 0, 4, 0x0f- 6, BCR_ILCRE}, /* PCIRQ1 */ 40 { 6 , 4, 4, 0x0f- 6, }, /* PCIRQ1 */
80 { 14, 0, 0, 0x0f-14, BCR_ILCRE}, /* PCIRQ0 */ 41 { 14, 4, 0, 0x0f-14, }, /* PCIRQ0 */
81 { 0 , 0, 12, 0x0f , BCR_ILCRF}, 42 { 0 , 5, 12, 0x0f , },
82 { 4 , 0, 4, 0x0f- 4, BCR_ILCRF}, 43 { 4 , 5, 4, 0x0f- 4, },
83 { 8 , 0, 12, 0x0f- 8, BCR_ILCRG}, 44 { 8 , 6, 12, 0x0f- 8, },
84 { 9 , 0, 8, 0x0f- 9, BCR_ILCRG}, 45 { 9 , 6, 8, 0x0f- 9, },
85 { 11, 0, 4, 0x0f-11, BCR_ILCRG}, 46 { 11, 6, 4, 0x0f-11, },
86#else 47#else
87 { 14, 0, 8, 0x0f-14 ,BCR_ILCRA}, 48 { 14, 0, 8, 0x0f-14, },
88 { 12, 0, 4, 0x0f-12 ,BCR_ILCRA}, 49 { 12, 0, 4, 0x0f-12, },
89 { 8, 0, 4, 0x0f- 8 ,BCR_ILCRB}, 50 { 8, 1, 4, 0x0f- 8, },
90 { 6, 0, 12, 0x0f- 6 ,BCR_ILCRC}, 51 { 6, 2, 12, 0x0f- 6, },
91 { 5, 0, 8, 0x0f- 5 ,BCR_ILCRC}, 52 { 5, 2, 8, 0x0f- 5, },
92 { 4, 0, 4, 0x0f- 4 ,BCR_ILCRC}, 53 { 4, 2, 4, 0x0f- 4, },
93 { 3, 0, 0, 0x0f- 3 ,BCR_ILCRC}, 54 { 3, 2, 0, 0x0f- 3, },
94 { 1, 0, 12, 0x0f- 1 ,BCR_ILCRD}, 55 { 1, 3, 12, 0x0f- 1, },
95#if defined(CONFIG_STNIC) 56#if defined(CONFIG_STNIC)
96 /* ST NIC */ 57 /* ST NIC */
97 { 10, 0, 4, 0x0f-10 ,BCR_ILCRD}, /* LAN */ 58 { 10, 3, 4, 0x0f-10, }, /* LAN */
98#endif 59#endif
99 /* MRSHPC IRQs setting */ 60 /* MRSHPC IRQs setting */
100 { 0, 0, 12, 0x0f- 0 ,BCR_ILCRE}, /* PCIRQ3 */ 61 { 0, 4, 12, 0x0f- 0, }, /* PCIRQ3 */
101 { 11, 0, 8, 0x0f-11 ,BCR_ILCRE}, /* PCIRQ2 */ 62 { 11, 4, 8, 0x0f-11, }, /* PCIRQ2 */
102 { 9, 0, 4, 0x0f- 9 ,BCR_ILCRE}, /* PCIRQ1 */ 63 { 9, 4, 4, 0x0f- 9, }, /* PCIRQ1 */
103 { 7, 0, 0, 0x0f- 7 ,BCR_ILCRE}, /* PCIRQ0 */ 64 { 7, 4, 0, 0x0f- 7, }, /* PCIRQ0 */
104 /* #2, #13 are allocated for SLOT IRQ #1 and #2 (for now) */ 65 /* #2, #13 are allocated for SLOT IRQ #1 and #2 (for now) */
105 /* NOTE: #2 and #13 are not used on PC */ 66 /* NOTE: #2 and #13 are not used on PC */
106 { 13, 0, 4, 0x0f-13 ,BCR_ILCRG}, /* SLOTIRQ2 */ 67 { 13, 6, 4, 0x0f-13, }, /* SLOTIRQ2 */
107 { 2, 0, 0, 0x0f- 2 ,BCR_ILCRG}, /* SLOTIRQ1 */ 68 { 2, 6, 0, 0x0f- 2, }, /* SLOTIRQ1 */
108#endif 69#endif
109}; 70};
110 71
72static unsigned long ipr_offsets[] = {
73 BCR_ILCRA,
74 BCR_ILCRB,
75 BCR_ILCRC,
76 BCR_ILCRD,
77 BCR_ILCRE,
78 BCR_ILCRF,
79 BCR_ILCRG,
80};
81
82static struct ipr_desc ipr_irq_desc = {
83 .ipr_offsets = ipr_offsets,
84 .nr_offsets = ARRAY_SIZE(ipr_offsets),
85
86 .ipr_data = ipr_irq_table,
87 .nr_irqs = ARRAY_SIZE(ipr_irq_table),
88 .chip = {
89 .name = "IPR-se770x",
90 },
91};
92
111/* 93/*
112 * Initialize IRQ setting 94 * Initialize IRQ setting
113 */ 95 */
@@ -122,5 +104,5 @@ void __init init_se_IRQ(void)
122 ctrl_outw(0, BCR_ILCRF); 104 ctrl_outw(0, BCR_ILCRF);
123 ctrl_outw(0, BCR_ILCRG); 105 ctrl_outw(0, BCR_ILCRG);
124 106
125 make_se770x_irq(se770x_ipr_map, ARRAY_SIZE(se770x_ipr_map)); 107 register_ipr_controller(&ipr_irq_desc);
126} 108}
diff --git a/arch/sh/boards/se/770x/setup.c b/arch/sh/boards/se/770x/setup.c
index 17a2631de3ba..2962da148f3f 100644
--- a/arch/sh/boards/se/770x/setup.c
+++ b/arch/sh/boards/se/770x/setup.c
@@ -122,7 +122,7 @@ device_initcall(se_devices_setup);
122/* 122/*
123 * The Machine Vector 123 * The Machine Vector
124 */ 124 */
125struct sh_machine_vector mv_se __initmv = { 125static struct sh_machine_vector mv_se __initmv = {
126 .mv_name = "SolutionEngine", 126 .mv_name = "SolutionEngine",
127 .mv_setup = smsc_setup, 127 .mv_setup = smsc_setup,
128#if defined(CONFIG_CPU_SH4) 128#if defined(CONFIG_CPU_SH4)
@@ -160,4 +160,3 @@ struct sh_machine_vector mv_se __initmv = {
160 160
161 .mv_init_irq = init_se_IRQ, 161 .mv_init_irq = init_se_IRQ,
162}; 162};
163ALIAS_MV(se)
diff --git a/arch/sh/boards/se/7722/irq.c b/arch/sh/boards/se/7722/irq.c
index 099e5deb77f8..26cff0efda40 100644
--- a/arch/sh/boards/se/7722/irq.c
+++ b/arch/sh/boards/se/7722/irq.c
@@ -19,15 +19,24 @@
19#define INTC_INTMSK0 0xFFD00044 19#define INTC_INTMSK0 0xFFD00044
20#define INTC_INTMSKCLR0 0xFFD00064 20#define INTC_INTMSKCLR0 0xFFD00064
21 21
22struct se7722_data {
23 unsigned char irq;
24 unsigned char ipr_idx;
25 unsigned char shift;
26 unsigned short priority;
27 unsigned long addr;
28};
29
30
22static void disable_se7722_irq(unsigned int irq) 31static void disable_se7722_irq(unsigned int irq)
23{ 32{
24 struct ipr_data *p = get_irq_chip_data(irq); 33 struct se7722_data *p = get_irq_chip_data(irq);
25 ctrl_outw( ctrl_inw( p->addr ) | p->priority , p->addr ); 34 ctrl_outw( ctrl_inw( p->addr ) | p->priority , p->addr );
26} 35}
27 36
28static void enable_se7722_irq(unsigned int irq) 37static void enable_se7722_irq(unsigned int irq)
29{ 38{
30 struct ipr_data *p = get_irq_chip_data(irq); 39 struct se7722_data *p = get_irq_chip_data(irq);
31 ctrl_outw( ctrl_inw( p->addr ) & ~p->priority , p->addr ); 40 ctrl_outw( ctrl_inw( p->addr ) & ~p->priority , p->addr );
32} 41}
33 42
@@ -38,7 +47,7 @@ static struct irq_chip se7722_irq_chip __read_mostly = {
38 .mask_ack = disable_se7722_irq, 47 .mask_ack = disable_se7722_irq,
39}; 48};
40 49
41static struct ipr_data ipr_irq_table[] = { 50static struct se7722_data ipr_irq_table[] = {
42 /* irq ,idx,sft, priority , addr */ 51 /* irq ,idx,sft, priority , addr */
43 { MRSHPC_IRQ0 , 0 , 0 , MRSHPC_BIT0 , IRQ01_MASK } , 52 { MRSHPC_IRQ0 , 0 , 0 , MRSHPC_BIT0 , IRQ01_MASK } ,
44 { MRSHPC_IRQ1 , 0 , 0 , MRSHPC_BIT1 , IRQ01_MASK } , 53 { MRSHPC_IRQ1 , 0 , 0 , MRSHPC_BIT1 , IRQ01_MASK } ,
diff --git a/arch/sh/boards/se/7722/setup.c b/arch/sh/boards/se/7722/setup.c
index 636ca6c987e0..6cca6cbc8069 100644
--- a/arch/sh/boards/se/7722/setup.c
+++ b/arch/sh/boards/se/7722/setup.c
@@ -137,7 +137,7 @@ static void __init se7722_setup(char **cmdline_p)
137/* 137/*
138 * The Machine Vector 138 * The Machine Vector
139 */ 139 */
140struct sh_machine_vector mv_se7722 __initmv = { 140static struct sh_machine_vector mv_se7722 __initmv = {
141 .mv_name = "Solution Engine 7722" , 141 .mv_name = "Solution Engine 7722" ,
142 .mv_setup = se7722_setup , 142 .mv_setup = se7722_setup ,
143 .mv_nr_irqs = 109 , 143 .mv_nr_irqs = 109 ,
@@ -145,4 +145,3 @@ struct sh_machine_vector mv_se7722 __initmv = {
145 .mv_irq_demux = se7722_irq_demux, 145 .mv_irq_demux = se7722_irq_demux,
146 146
147}; 147};
148ALIAS_MV(se7722)
diff --git a/arch/sh/boards/se/7751/irq.c b/arch/sh/boards/se/7751/irq.c
index e4c63a48296c..c3d12590e5db 100644
--- a/arch/sh/boards/se/7751/irq.c
+++ b/arch/sh/boards/se/7751/irq.c
@@ -14,44 +14,31 @@
14#include <asm/irq.h> 14#include <asm/irq.h>
15#include <asm/se7751.h> 15#include <asm/se7751.h>
16 16
17static struct ipr_data se7751_ipr_map[] = { 17static struct ipr_data ipr_irq_table[] = {
18 /* Leave old Solution Engine code in for reference. */ 18 { 13, 3, 3, 2 },
19#if defined(CONFIG_SH_SOLUTION_ENGINE) 19 /* Add additional entries here as drivers are added and tested. */
20 /* 20};
21 * Super I/O (Just mimic PC):
22 * 1: keyboard
23 * 3: serial 0
24 * 4: serial 1
25 * 5: printer
26 * 6: floppy
27 * 8: rtc
28 * 12: mouse
29 * 14: ide0
30 */
31 { 14, BCR_ILCRA, 2, 0x0f-14 },
32 { 12, BCR_ILCRA, 1, 0x0f-12 },
33 { 8, BCR_ILCRB, 1, 0x0f- 8 },
34 { 6, BCR_ILCRC, 3, 0x0f- 6 },
35 { 5, BCR_ILCRC, 2, 0x0f- 5 },
36 { 4, BCR_ILCRC, 1, 0x0f- 4 },
37 { 3, BCR_ILCRC, 0, 0x0f- 3 },
38 { 1, BCR_ILCRD, 3, 0x0f- 1 },
39 21
40 { 10, BCR_ILCRD, 1, 0x0f-10 }, /* LAN */ 22static unsigned long ipr_offsets[] = {
23 BCR_ILCRA,
24 BCR_ILCRB,
25 BCR_ILCRC,
26 BCR_ILCRD,
27 BCR_ILCRE,
28 BCR_ILCRF,
29 BCR_ILCRG,
30};
41 31
42 { 0, BCR_ILCRE, 3, 0x0f- 0 }, /* PCIRQ3 */ 32static struct ipr_desc ipr_irq_desc = {
43 { 11, BCR_ILCRE, 2, 0x0f-11 }, /* PCIRQ2 */ 33 .ipr_offsets = ipr_offsets,
44 { 9, BCR_ILCRE, 1, 0x0f- 9 }, /* PCIRQ1 */ 34 .nr_offsets = ARRAY_SIZE(ipr_offsets),
45 { 7, BCR_ILCRE, 0, 0x0f- 7 }, /* PCIRQ0 */
46 35
47 /* #2, #13 are allocated for SLOT IRQ #1 and #2 (for now) */ 36 .ipr_data = ipr_irq_table,
48 /* NOTE: #2 and #13 are not used on PC */ 37 .nr_irqs = ARRAY_SIZE(ipr_irq_table),
49 { 13, BCR_ILCRG, 1, 0x0f-13 }, /* SLOTIRQ2 */ 38
50 { 2, BCR_ILCRG, 0, 0x0f- 2 }, /* SLOTIRQ1 */ 39 .chip = {
51#elif defined(CONFIG_SH_7751_SOLUTION_ENGINE) 40 .name = "IPR-se7751",
52 { 13, BCR_ILCRD, 3, 2 }, 41 },
53 /* Add additional entries here as drivers are added and tested. */
54#endif
55}; 42};
56 43
57/* 44/*
@@ -59,5 +46,5 @@ static struct ipr_data se7751_ipr_map[] = {
59 */ 46 */
60void __init init_7751se_IRQ(void) 47void __init init_7751se_IRQ(void)
61{ 48{
62 make_ipr_irq(se7751_ipr_map, ARRAY_SIZE(se7751_ipr_map)); 49 register_ipr_controller(&ipr_irq_desc);
63} 50}
diff --git a/arch/sh/boards/se/7751/setup.c b/arch/sh/boards/se/7751/setup.c
index 52c7bfa57c2c..7873d07e40c1 100644
--- a/arch/sh/boards/se/7751/setup.c
+++ b/arch/sh/boards/se/7751/setup.c
@@ -48,7 +48,7 @@ __initcall(se7751_devices_setup);
48/* 48/*
49 * The Machine Vector 49 * The Machine Vector
50 */ 50 */
51struct sh_machine_vector mv_7751se __initmv = { 51static struct sh_machine_vector mv_7751se __initmv = {
52 .mv_name = "7751 SolutionEngine", 52 .mv_name = "7751 SolutionEngine",
53 .mv_nr_irqs = 72, 53 .mv_nr_irqs = 72,
54 54
@@ -71,4 +71,3 @@ struct sh_machine_vector mv_7751se __initmv = {
71 71
72 .mv_init_irq = init_7751se_IRQ, 72 .mv_init_irq = init_7751se_IRQ,
73}; 73};
74ALIAS_MV(7751se)
diff --git a/arch/sh/boards/se/7780/irq.c b/arch/sh/boards/se/7780/irq.c
index 3d0625c2d07b..874914746009 100644
--- a/arch/sh/boards/se/7780/irq.c
+++ b/arch/sh/boards/se/7780/irq.c
@@ -16,28 +16,6 @@
16#include <asm/io.h> 16#include <asm/io.h>
17#include <asm/se7780.h> 17#include <asm/se7780.h>
18 18
19#define INTC_INTMSK0 0xFFD00044
20#define INTC_INTMSKCLR0 0xFFD00064
21
22static void disable_se7780_irq(unsigned int irq)
23{
24 struct intc2_data *p = get_irq_chip_data(irq);
25 ctrl_outl(1 << p->msk_shift, INTC_INTMSK0 + p->msk_offset);
26}
27
28static void enable_se7780_irq(unsigned int irq)
29{
30 struct intc2_data *p = get_irq_chip_data(irq);
31 ctrl_outl(1 << p->msk_shift, INTC_INTMSKCLR0 + p->msk_offset);
32}
33
34static struct irq_chip se7780_irq_chip __read_mostly = {
35 .name = "SE7780",
36 .mask = disable_se7780_irq,
37 .unmask = enable_se7780_irq,
38 .mask_ack = disable_se7780_irq,
39};
40
41static struct intc2_data intc2_irq_table[] = { 19static struct intc2_data intc2_irq_table[] = {
42 { 2, 0, 31, 0, 31, 3 }, /* daughter board EXTINT1 */ 20 { 2, 0, 31, 0, 31, 3 }, /* daughter board EXTINT1 */
43 { 4, 0, 30, 0, 30, 3 }, /* daughter board EXTINT2 */ 21 { 4, 0, 30, 0, 30, 3 }, /* daughter board EXTINT2 */
@@ -51,13 +29,24 @@ static struct intc2_data intc2_irq_table[] = {
51 { 0 , 0, 24, 0, 24, 3 }, /* SM501 */ 29 { 0 , 0, 24, 0, 24, 3 }, /* SM501 */
52}; 30};
53 31
32static struct intc2_desc intc2_irq_desc __read_mostly = {
33 .prio_base = 0, /* N/A */
34 .msk_base = 0xffd00044,
35 .mskclr_base = 0xffd00064,
36
37 .intc2_data = intc2_irq_table,
38 .nr_irqs = ARRAY_SIZE(intc2_irq_table),
39
40 .chip = {
41 .name = "INTC2-se7780",
42 },
43};
44
54/* 45/*
55 * Initialize IRQ setting 46 * Initialize IRQ setting
56 */ 47 */
57void __init init_se7780_IRQ(void) 48void __init init_se7780_IRQ(void)
58{ 49{
59 int i ;
60
61 /* enable all interrupt at FPGA */ 50 /* enable all interrupt at FPGA */
62 ctrl_outw(0, FPGA_INTMSK1); 51 ctrl_outw(0, FPGA_INTMSK1);
63 /* mask SM501 interrupt */ 52 /* mask SM501 interrupt */
@@ -79,11 +68,5 @@ void __init init_se7780_IRQ(void)
79 /* FPGA + 0x0A */ 68 /* FPGA + 0x0A */
80 ctrl_outw((IRQPIN_PCCPW << IRQPOS_PCCPW), FPGA_INTSEL3); 69 ctrl_outw((IRQPIN_PCCPW << IRQPOS_PCCPW), FPGA_INTSEL3);
81 70
82 for (i = 0; i < ARRAY_SIZE(intc2_irq_table); i++) { 71 register_intc2_controller(&intc2_irq_desc);
83 disable_irq_nosync(intc2_irq_table[i].irq);
84 set_irq_chip_and_handler_name( intc2_irq_table[i].irq, &se7780_irq_chip,
85 handle_level_irq, "level");
86 set_irq_chip_data( intc2_irq_table[i].irq, &intc2_irq_table[i] );
87 disable_se7780_irq(intc2_irq_table[i].irq);
88 }
89} 72}
diff --git a/arch/sh/boards/se/7780/setup.c b/arch/sh/boards/se/7780/setup.c
index df7d08a24c9f..723f2fd4d55b 100644
--- a/arch/sh/boards/se/7780/setup.c
+++ b/arch/sh/boards/se/7780/setup.c
@@ -113,10 +113,9 @@ static void __init se7780_setup(char **cmdline_p)
113/* 113/*
114 * The Machine Vector 114 * The Machine Vector
115 */ 115 */
116struct sh_machine_vector mv_se7780 __initmv = { 116static struct sh_machine_vector mv_se7780 __initmv = {
117 .mv_name = "Solution Engine 7780" , 117 .mv_name = "Solution Engine 7780" ,
118 .mv_setup = se7780_setup , 118 .mv_setup = se7780_setup ,
119 .mv_nr_irqs = 111 , 119 .mv_nr_irqs = 111 ,
120 .mv_init_irq = init_se7780_IRQ, 120 .mv_init_irq = init_se7780_IRQ,
121}; 121};
122ALIAS_MV(se7780)
diff --git a/arch/sh/boards/sh03/setup.c b/arch/sh/boards/sh03/setup.c
index c069c444b4ec..9c031a8c0a1c 100644
--- a/arch/sh/boards/sh03/setup.c
+++ b/arch/sh/boards/sh03/setup.c
@@ -15,17 +15,33 @@
15#include <asm/sh03/sh03.h> 15#include <asm/sh03/sh03.h>
16#include <asm/addrspace.h> 16#include <asm/addrspace.h>
17 17
18static struct ipr_data sh03_ipr_map[] = { 18static struct ipr_data ipr_irq_table[] = {
19 { IRL0_IRQ, IRL0_IPR_ADDR, IRL0_IPR_POS, IRL0_PRIORITY }, 19 { IRL0_IRQ, 0, IRL0_IPR_POS, IRL0_PRIORITY },
20 { IRL1_IRQ, IRL1_IPR_ADDR, IRL1_IPR_POS, IRL1_PRIORITY }, 20 { IRL1_IRQ, 0, IRL1_IPR_POS, IRL1_PRIORITY },
21 { IRL2_IRQ, IRL2_IPR_ADDR, IRL2_IPR_POS, IRL2_PRIORITY }, 21 { IRL2_IRQ, 0, IRL2_IPR_POS, IRL2_PRIORITY },
22 { IRL3_IRQ, IRL3_IPR_ADDR, IRL3_IPR_POS, IRL3_PRIORITY }, 22 { IRL3_IRQ, 0, IRL3_IPR_POS, IRL3_PRIORITY },
23};
24
25static unsigned long ipr_offsets[] = {
26 INTC_IPRD,
27};
28
29static struct ipr_desc ipr_irq_desc = {
30 .ipr_offsets = ipr_offsets,
31 .nr_offsets = ARRAY_SIZE(ipr_offsets),
32
33 .ipr_data = ipr_irq_table,
34 .nr_irqs = ARRAY_SIZE(ipr_irq_table),
35
36 .chip = {
37 .name = "IPR-sh03",
38 },
23}; 39};
24 40
25static void __init init_sh03_IRQ(void) 41static void __init init_sh03_IRQ(void)
26{ 42{
27 ctrl_outw(ctrl_inw(INTC_ICR) | INTC_ICR_IRLM, INTC_ICR); 43 ctrl_outw(ctrl_inw(INTC_ICR) | INTC_ICR_IRLM, INTC_ICR);
28 make_ipr_irq(sh03_ipr_map, ARRAY_SIZE(sh03_ipr_map)); 44 register_ipr_controller(&ipr_irq_desc);
29} 45}
30 46
31extern void *cf_io_base; 47extern void *cf_io_base;
@@ -74,11 +90,10 @@ static int __init sh03_devices_setup(void)
74} 90}
75__initcall(sh03_devices_setup); 91__initcall(sh03_devices_setup);
76 92
77struct sh_machine_vector mv_sh03 __initmv = { 93static struct sh_machine_vector mv_sh03 __initmv = {
78 .mv_name = "Interface (CTP/PCI-SH03)", 94 .mv_name = "Interface (CTP/PCI-SH03)",
79 .mv_setup = sh03_setup, 95 .mv_setup = sh03_setup,
80 .mv_nr_irqs = 48, 96 .mv_nr_irqs = 48,
81 .mv_ioport_map = sh03_ioport_map, 97 .mv_ioport_map = sh03_ioport_map,
82 .mv_init_irq = init_sh03_IRQ, 98 .mv_init_irq = init_sh03_IRQ,
83}; 99};
84ALIAS_MV(sh03)
diff --git a/arch/sh/boards/shmin/setup.c b/arch/sh/boards/shmin/setup.c
index 4a9df4a6b034..dfd124509f42 100644
--- a/arch/sh/boards/shmin/setup.c
+++ b/arch/sh/boards/shmin/setup.c
@@ -6,28 +6,44 @@
6 * SHMIN Support. 6 * SHMIN Support.
7 */ 7 */
8#include <linux/init.h> 8#include <linux/init.h>
9#include <linux/irq.h>
9#include <asm/machvec.h> 10#include <asm/machvec.h>
10#include <asm/shmin.h> 11#include <asm/shmin.h>
11#include <asm/clock.h> 12#include <asm/clock.h>
12#include <asm/irq.h>
13#include <asm/io.h> 13#include <asm/io.h>
14 14
15#define PFC_PHCR 0xa400010eUL 15#define PFC_PHCR 0xa400010eUL
16#define INTC_ICR1 0xa4000010UL 16#define INTC_ICR1 0xa4000010UL
17#define INTC_IPRC 0xa4000016UL 17#define INTC_IPRC 0xa4000016UL
18 18
19static struct ipr_data shmin_ipr_map[] = { 19static struct ipr_data ipr_irq_table[] = {
20 { .irq=32, .addr=INTC_IPRC, .shift= 0, .priority=0 }, 20 { 32, 0, 0, 0 },
21 { .irq=33, .addr=INTC_IPRC, .shift= 4, .priority=0 }, 21 { 33, 0, 4, 0 },
22 { .irq=34, .addr=INTC_IPRC, .shift= 8, .priority=8 }, 22 { 34, 0, 8, 8 },
23 { .irq=35, .addr=INTC_IPRC, .shift=12, .priority=0 }, 23 { 35, 0, 12, 0 },
24};
25
26static unsigned long ipr_offsets[] = {
27 INTC_IPRC,
28};
29
30static struct ipr_desc ipr_irq_desc = {
31 .ipr_offsets = ipr_offsets,
32 .nr_offsets = ARRAY_SIZE(ipr_offsets),
33
34 .ipr_data = ipr_irq_table,
35 .nr_irqs = ARRAY_SIZE(ipr_irq_table),
36
37 .chip = {
38 .name = "IPR-shmin",
39 },
24}; 40};
25 41
26static void __init init_shmin_irq(void) 42static void __init init_shmin_irq(void)
27{ 43{
28 ctrl_outw(0x2a00, PFC_PHCR); // IRQ0-3=IRQ 44 ctrl_outw(0x2a00, PFC_PHCR); // IRQ0-3=IRQ
29 ctrl_outw(0x0aaa, INTC_ICR1); // IRQ0-3=IRQ-mode,Low-active. 45 ctrl_outw(0x0aaa, INTC_ICR1); // IRQ0-3=IRQ-mode,Low-active.
30 make_ipr_irq(shmin_ipr_map, ARRAY_SIZE(shmin_ipr_map)); 46 register_ipr_controller(&ipr_irq_desc);
31} 47}
32 48
33static void __iomem *shmin_ioport_map(unsigned long port, unsigned int size) 49static void __iomem *shmin_ioport_map(unsigned long port, unsigned int size)
@@ -43,9 +59,8 @@ static void __iomem *shmin_ioport_map(unsigned long port, unsigned int size)
43 59
44} 60}
45 61
46struct sh_machine_vector mv_shmin __initmv = { 62static struct sh_machine_vector mv_shmin __initmv = {
47 .mv_name = "SHMIN", 63 .mv_name = "SHMIN",
48 .mv_init_irq = init_shmin_irq, 64 .mv_init_irq = init_shmin_irq,
49 .mv_ioport_map = shmin_ioport_map, 65 .mv_ioport_map = shmin_ioport_map,
50}; 66};
51ALIAS_MV(shmin)
diff --git a/arch/sh/boards/snapgear/setup.c b/arch/sh/boards/snapgear/setup.c
index 650fb3645947..84271d85a8dd 100644
--- a/arch/sh/boards/snapgear/setup.c
+++ b/arch/sh/boards/snapgear/setup.c
@@ -68,11 +68,27 @@ module_init(eraseconfig_init);
68 * IRL3 = crypto 68 * IRL3 = crypto
69 */ 69 */
70 70
71static struct ipr_data snapgear_ipr_map[] = { 71static struct ipr_data ipr_irq_table[] = {
72 make_ipr_irq(IRL0_IRQ, IRL0_IPR_ADDR, IRL0_IPR_POS, IRL0_PRIORITY); 72 { IRL0_IRQ, 0, IRL0_IPR_POS, IRL0_PRIORITY },
73 make_ipr_irq(IRL1_IRQ, IRL1_IPR_ADDR, IRL1_IPR_POS, IRL1_PRIORITY); 73 { IRL1_IRQ, 0, IRL1_IPR_POS, IRL1_PRIORITY },
74 make_ipr_irq(IRL2_IRQ, IRL2_IPR_ADDR, IRL2_IPR_POS, IRL2_PRIORITY); 74 { IRL2_IRQ, 0, IRL2_IPR_POS, IRL2_PRIORITY },
75 make_ipr_irq(IRL3_IRQ, IRL3_IPR_ADDR, IRL3_IPR_POS, IRL3_PRIORITY); 75 { IRL3_IRQ, 0, IRL3_IPR_POS, IRL3_PRIORITY },
76};
77
78static unsigned long ipr_offsets[] = {
79 INTC_IPRD,
80};
81
82static struct ipr_desc ipr_irq_desc = {
83 .ipr_offsets = ipr_offsets,
84 .nr_offsets = ARRAY_SIZE(ipr_offsets),
85
86 .ipr_data = ipr_irq_table,
87 .nr_irqs = ARRAY_SIZE(ipr_irq_table),
88
89 .chip = {
90 .name = "IPR-snapgear",
91 },
76}; 92};
77 93
78static void __init init_snapgear_IRQ(void) 94static void __init init_snapgear_IRQ(void)
@@ -82,7 +98,7 @@ static void __init init_snapgear_IRQ(void)
82 98
83 printk("Setup SnapGear IRQ/IPR ...\n"); 99 printk("Setup SnapGear IRQ/IPR ...\n");
84 100
85 make_ipr_irq(snapgear_ipr_map, ARRAY_SIZE(snapgear_ipr_map)); 101 register_ipr_controller(&ipr_irq_desc);
86} 102}
87 103
88/* 104/*
@@ -96,7 +112,7 @@ static void __init snapgear_setup(char **cmdline_p)
96/* 112/*
97 * The Machine Vector 113 * The Machine Vector
98 */ 114 */
99struct sh_machine_vector mv_snapgear __initmv = { 115static struct sh_machine_vector mv_snapgear __initmv = {
100 .mv_name = "SnapGear SecureEdge5410", 116 .mv_name = "SnapGear SecureEdge5410",
101 .mv_setup = snapgear_setup, 117 .mv_setup = snapgear_setup,
102 .mv_nr_irqs = 72, 118 .mv_nr_irqs = 72,
@@ -117,4 +133,3 @@ struct sh_machine_vector mv_snapgear __initmv = {
117 133
118 .mv_init_irq = init_snapgear_IRQ, 134 .mv_init_irq = init_snapgear_IRQ,
119}; 135};
120ALIAS_MV(snapgear)
diff --git a/arch/sh/boards/superh/microdev/setup.c b/arch/sh/boards/superh/microdev/setup.c
index 6396cea1c896..fc8cd06d66cf 100644
--- a/arch/sh/boards/superh/microdev/setup.c
+++ b/arch/sh/boards/superh/microdev/setup.c
@@ -371,7 +371,7 @@ static void __init microdev_setup(char **cmdline_p)
371/* 371/*
372 * The Machine Vector 372 * The Machine Vector
373 */ 373 */
374struct sh_machine_vector mv_sh4202_microdev __initmv = { 374static struct sh_machine_vector mv_sh4202_microdev __initmv = {
375 .mv_name = "SH4-202 MicroDev", 375 .mv_name = "SH4-202 MicroDev",
376 .mv_setup = microdev_setup, 376 .mv_setup = microdev_setup,
377 .mv_nr_irqs = 72, /* QQQ need to check this - use the MACRO */ 377 .mv_nr_irqs = 72, /* QQQ need to check this - use the MACRO */
@@ -403,4 +403,3 @@ struct sh_machine_vector mv_sh4202_microdev __initmv = {
403 .mv_heartbeat = microdev_heartbeat, 403 .mv_heartbeat = microdev_heartbeat,
404#endif 404#endif
405}; 405};
406ALIAS_MV(sh4202_microdev)
diff --git a/arch/sh/boards/titan/setup.c b/arch/sh/boards/titan/setup.c
index 6bcd939bfaed..606d25a4b870 100644
--- a/arch/sh/boards/titan/setup.c
+++ b/arch/sh/boards/titan/setup.c
@@ -12,7 +12,7 @@
12#include <asm/titan.h> 12#include <asm/titan.h>
13#include <asm/io.h> 13#include <asm/io.h>
14 14
15static struct ipr_data titan_ipr_map[] = { 15static struct ipr_data ipr_irq_table[] = {
16 /* IRQ, IPR idx, shift, prio */ 16 /* IRQ, IPR idx, shift, prio */
17 { TITAN_IRQ_WAN, 3, 12, 8 }, /* eth0 (WAN) */ 17 { TITAN_IRQ_WAN, 3, 12, 8 }, /* eth0 (WAN) */
18 { TITAN_IRQ_LAN, 3, 8, 8 }, /* eth1 (LAN) */ 18 { TITAN_IRQ_LAN, 3, 8, 8 }, /* eth1 (LAN) */
@@ -20,15 +20,33 @@ static struct ipr_data titan_ipr_map[] = {
20 { TITAN_IRQ_USB, 3, 0, 8 }, /* mPCI B (bottom), USB */ 20 { TITAN_IRQ_USB, 3, 0, 8 }, /* mPCI B (bottom), USB */
21}; 21};
22 22
23static unsigned long ipr_offsets[] = { /* stolen from setup-sh7750.c */
24 0xffd00004UL, /* 0: IPRA */
25 0xffd00008UL, /* 1: IPRB */
26 0xffd0000cUL, /* 2: IPRC */
27 0xffd00010UL, /* 3: IPRD */
28};
29
30static struct ipr_desc ipr_irq_desc = {
31 .ipr_offsets = ipr_offsets,
32 .nr_offsets = ARRAY_SIZE(ipr_offsets),
33
34 .ipr_data = ipr_irq_table,
35 .nr_irqs = ARRAY_SIZE(ipr_irq_table),
36
37 .chip = {
38 .name = "IPR-titan",
39 },
40};
23static void __init init_titan_irq(void) 41static void __init init_titan_irq(void)
24{ 42{
25 /* enable individual interrupt mode for externals */ 43 /* enable individual interrupt mode for externals */
26 ipr_irq_enable_irlm(); 44 ipr_irq_enable_irlm();
27 /* register ipr irqs */ 45 /* register ipr irqs */
28 make_ipr_irq(titan_ipr_map, ARRAY_SIZE(titan_ipr_map)); 46 register_ipr_controller(&ipr_irq_desc);
29} 47}
30 48
31struct sh_machine_vector mv_titan __initmv = { 49static struct sh_machine_vector mv_titan __initmv = {
32 .mv_name = "Titan", 50 .mv_name = "Titan",
33 51
34 .mv_inb = titan_inb, 52 .mv_inb = titan_inb,
@@ -52,4 +70,3 @@ struct sh_machine_vector mv_titan __initmv = {
52 70
53 .mv_init_irq = init_titan_irq, 71 .mv_init_irq = init_titan_irq,
54}; 72};
55ALIAS_MV(titan)
diff --git a/arch/sh/boards/unknown/Makefile b/arch/sh/boards/unknown/Makefile
deleted file mode 100644
index 7d18f408b0c5..000000000000
--- a/arch/sh/boards/unknown/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
1#
2# Makefile for unknown SH boards
3#
4
5obj-y := setup.o
6
diff --git a/arch/sh/boards/unknown/setup.c b/arch/sh/boards/unknown/setup.c
deleted file mode 100644
index bee4612de59b..000000000000
--- a/arch/sh/boards/unknown/setup.c
+++ /dev/null
@@ -1,21 +0,0 @@
1/*
2 * linux/arch/sh/boards/unknown/setup.c
3 *
4 * Copyright (C) 2002 Paul Mundt
5 *
6 * May be copied or modified under the terms of the GNU General Public
7 * License. See linux/COPYING for more information.
8 *
9 * Setup code for an unknown machine (internal peripherals only)
10 *
11 * This is the simplest of all boards, and serves only as a quick and dirty
12 * method to start debugging a new board during bring-up until proper board
13 * setup code is written.
14 */
15#include <linux/init.h>
16#include <asm/machvec.h>
17
18struct sh_machine_vector mv_unknown __initmv = {
19 .mv_name = "Unknown",
20};
21ALIAS_MV(unknown)
diff --git a/arch/sh/cchips/Kconfig b/arch/sh/cchips/Kconfig
index 0582ca8346b6..2e516e9a6ede 100644
--- a/arch/sh/cchips/Kconfig
+++ b/arch/sh/cchips/Kconfig
@@ -13,10 +13,8 @@ config VOYAGERGX
13 are additional GPIO bits that can be used to interface to 13 are additional GPIO bits that can be used to interface to
14 external as well. 14 external as well.
15 15
16# A board must have defined HD6446X_SERIES in order to see these
17config HD6446X_SERIES 16config HD6446X_SERIES
18 bool "HD6446x support" 17 bool
19 default n
20 18
21choice 19choice
22 prompt "HD6446x options" 20 prompt "HD6446x options"
@@ -25,7 +23,6 @@ choice
25 23
26config HD64461 24config HD64461
27 bool "Hitachi HD64461 companion chip support" 25 bool "Hitachi HD64461 companion chip support"
28 depends on CPU_SUBTYPE_SH7709
29 ---help--- 26 ---help---
30 The Hitachi HD64461 provides an interface for 27 The Hitachi HD64461 provides an interface for
31 the SH7709 CPU, supporting a LCD controller, 28 the SH7709 CPU, supporting a LCD controller,
@@ -40,7 +37,6 @@ config HD64461
40 37
41config HD64465 38config HD64465
42 bool "Hitachi HD64465 companion chip support" 39 bool "Hitachi HD64465 companion chip support"
43 depends on CPU_SUBTYPE_SH7750
44 ---help--- 40 ---help---
45 The Hitachi HD64465 provides an interface for 41 The Hitachi HD64465 provides an interface for
46 the SH7750 CPU, supporting a LCD controller, 42 the SH7750 CPU, supporting a LCD controller,
diff --git a/arch/sh/configs/dreamcast_defconfig b/arch/sh/configs/dreamcast_defconfig
index 8b6b5a779de8..3fdd270eecf7 100644
--- a/arch/sh/configs/dreamcast_defconfig
+++ b/arch/sh/configs/dreamcast_defconfig
@@ -1,15 +1,23 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18 3# Linux kernel version: 2.6.22-rc4
4# Tue Oct 3 10:51:55 2006 4# Sat Jul 7 03:47:45 2007
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 7CONFIG_RWSEM_GENERIC_SPINLOCK=y
8CONFIG_GENERIC_BUG=y
8CONFIG_GENERIC_FIND_NEXT_BIT=y 9CONFIG_GENERIC_FIND_NEXT_BIT=y
9CONFIG_GENERIC_HWEIGHT=y 10CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_HARDIRQS=y 11CONFIG_GENERIC_HARDIRQS=y
11CONFIG_GENERIC_IRQ_PROBE=y 12CONFIG_GENERIC_IRQ_PROBE=y
12CONFIG_GENERIC_CALIBRATE_DELAY=y 13CONFIG_GENERIC_CALIBRATE_DELAY=y
14CONFIG_GENERIC_TIME=y
15CONFIG_GENERIC_CLOCKEVENTS=y
16CONFIG_SYS_SUPPORTS_PCI=y
17CONFIG_STACKTRACE_SUPPORT=y
18CONFIG_LOCKDEP_SUPPORT=y
19# CONFIG_ARCH_HAS_ILOG2_U32 is not set
20# CONFIG_ARCH_HAS_ILOG2_U64 is not set
13CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 21CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
14 22
15# 23#
@@ -28,6 +36,7 @@ CONFIG_LOCALVERSION_AUTO=y
28CONFIG_SWAP=y 36CONFIG_SWAP=y
29CONFIG_SYSVIPC=y 37CONFIG_SYSVIPC=y
30# CONFIG_IPC_NS is not set 38# CONFIG_IPC_NS is not set
39CONFIG_SYSVIPC_SYSCTL=y
31# CONFIG_POSIX_MQUEUE is not set 40# CONFIG_POSIX_MQUEUE is not set
32CONFIG_BSD_PROCESS_ACCT=y 41CONFIG_BSD_PROCESS_ACCT=y
33# CONFIG_BSD_PROCESS_ACCT_V3 is not set 42# CONFIG_BSD_PROCESS_ACCT_V3 is not set
@@ -35,8 +44,10 @@ CONFIG_BSD_PROCESS_ACCT=y
35# CONFIG_UTS_NS is not set 44# CONFIG_UTS_NS is not set
36# CONFIG_AUDIT is not set 45# CONFIG_AUDIT is not set
37# CONFIG_IKCONFIG is not set 46# CONFIG_IKCONFIG is not set
47CONFIG_LOG_BUF_SHIFT=14
48CONFIG_SYSFS_DEPRECATED=y
38# CONFIG_RELAY is not set 49# CONFIG_RELAY is not set
39CONFIG_INITRAMFS_SOURCE="" 50# CONFIG_BLK_DEV_INITRD is not set
40CONFIG_CC_OPTIMIZE_FOR_SIZE=y 51CONFIG_CC_OPTIMIZE_FOR_SIZE=y
41CONFIG_SYSCTL=y 52CONFIG_SYSCTL=y
42CONFIG_EMBEDDED=y 53CONFIG_EMBEDDED=y
@@ -50,14 +61,19 @@ CONFIG_BUG=y
50CONFIG_ELF_CORE=y 61CONFIG_ELF_CORE=y
51CONFIG_BASE_FULL=y 62CONFIG_BASE_FULL=y
52CONFIG_FUTEX=y 63CONFIG_FUTEX=y
64CONFIG_ANON_INODES=y
53CONFIG_EPOLL=y 65CONFIG_EPOLL=y
66CONFIG_SIGNALFD=y
67CONFIG_TIMERFD=y
68CONFIG_EVENTFD=y
54CONFIG_SHMEM=y 69CONFIG_SHMEM=y
55CONFIG_SLAB=y
56CONFIG_VM_EVENT_COUNTERS=y 70CONFIG_VM_EVENT_COUNTERS=y
71CONFIG_SLAB=y
72# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set
57CONFIG_RT_MUTEXES=y 74CONFIG_RT_MUTEXES=y
58# CONFIG_TINY_SHMEM is not set 75# CONFIG_TINY_SHMEM is not set
59CONFIG_BASE_SMALL=0 76CONFIG_BASE_SMALL=0
60# CONFIG_SLOB is not set
61 77
62# 78#
63# Loadable module support 79# Loadable module support
@@ -93,44 +109,9 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
93# 109#
94# System type 110# System type
95# 111#
96# CONFIG_SH_SOLUTION_ENGINE is not set
97# CONFIG_SH_7751_SOLUTION_ENGINE is not set
98# CONFIG_SH_7300_SOLUTION_ENGINE is not set
99# CONFIG_SH_7343_SOLUTION_ENGINE is not set
100# CONFIG_SH_73180_SOLUTION_ENGINE is not set
101# CONFIG_SH_7751_SYSTEMH is not set
102# CONFIG_SH_HP6XX is not set
103# CONFIG_SH_EC3104 is not set
104# CONFIG_SH_SATURN is not set
105CONFIG_SH_DREAMCAST=y
106# CONFIG_SH_BIGSUR is not set
107# CONFIG_SH_MPC1211 is not set
108# CONFIG_SH_SH03 is not set
109# CONFIG_SH_SECUREEDGE5410 is not set
110# CONFIG_SH_HS7751RVOIP is not set
111# CONFIG_SH_7710VOIPGW is not set
112# CONFIG_SH_RTS7751R2D is not set
113# CONFIG_SH_R7780RP is not set
114# CONFIG_SH_EDOSK7705 is not set
115# CONFIG_SH_SH4202_MICRODEV is not set
116# CONFIG_SH_LANDISK is not set
117# CONFIG_SH_TITAN is not set
118# CONFIG_SH_SHMIN is not set
119# CONFIG_SH_UNKNOWN is not set
120
121#
122# Processor selection
123#
124CONFIG_CPU_SH4=y 112CONFIG_CPU_SH4=y
125 113# CONFIG_CPU_SUBTYPE_SH7619 is not set
126# 114# CONFIG_CPU_SUBTYPE_SH7206 is not set
127# SH-2 Processor Support
128#
129# CONFIG_CPU_SUBTYPE_SH7604 is not set
130
131#
132# SH-3 Processor Support
133#
134# CONFIG_CPU_SUBTYPE_SH7300 is not set 115# CONFIG_CPU_SUBTYPE_SH7300 is not set
135# CONFIG_CPU_SUBTYPE_SH7705 is not set 116# CONFIG_CPU_SUBTYPE_SH7705 is not set
136# CONFIG_CPU_SUBTYPE_SH7706 is not set 117# CONFIG_CPU_SUBTYPE_SH7706 is not set
@@ -138,79 +119,93 @@ CONFIG_CPU_SH4=y
138# CONFIG_CPU_SUBTYPE_SH7708 is not set 119# CONFIG_CPU_SUBTYPE_SH7708 is not set
139# CONFIG_CPU_SUBTYPE_SH7709 is not set 120# CONFIG_CPU_SUBTYPE_SH7709 is not set
140# CONFIG_CPU_SUBTYPE_SH7710 is not set 121# CONFIG_CPU_SUBTYPE_SH7710 is not set
141 122# CONFIG_CPU_SUBTYPE_SH7712 is not set
142# 123# CONFIG_CPU_SUBTYPE_SH7750 is not set
143# SH-4 Processor Support
144#
145CONFIG_CPU_SUBTYPE_SH7750=y
146CONFIG_CPU_SUBTYPE_SH7091=y 124CONFIG_CPU_SUBTYPE_SH7091=y
147CONFIG_CPU_SUBTYPE_SH7750R=y 125# CONFIG_CPU_SUBTYPE_SH7750R is not set
148# CONFIG_CPU_SUBTYPE_SH7750S is not set 126# CONFIG_CPU_SUBTYPE_SH7750S is not set
149# CONFIG_CPU_SUBTYPE_SH7751 is not set 127# CONFIG_CPU_SUBTYPE_SH7751 is not set
150# CONFIG_CPU_SUBTYPE_SH7751R is not set 128# CONFIG_CPU_SUBTYPE_SH7751R is not set
151# CONFIG_CPU_SUBTYPE_SH7760 is not set 129# CONFIG_CPU_SUBTYPE_SH7760 is not set
152# CONFIG_CPU_SUBTYPE_SH4_202 is not set 130# CONFIG_CPU_SUBTYPE_SH4_202 is not set
153
154#
155# ST40 Processor Support
156#
157# CONFIG_CPU_SUBTYPE_ST40STB1 is not set 131# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
158# CONFIG_CPU_SUBTYPE_ST40GX1 is not set 132# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
159
160#
161# SH-4A Processor Support
162#
163# CONFIG_CPU_SUBTYPE_SH7770 is not set 133# CONFIG_CPU_SUBTYPE_SH7770 is not set
164# CONFIG_CPU_SUBTYPE_SH7780 is not set 134# CONFIG_CPU_SUBTYPE_SH7780 is not set
165 135# CONFIG_CPU_SUBTYPE_SH7785 is not set
166# 136# CONFIG_CPU_SUBTYPE_SHX3 is not set
167# SH4AL-DSP Processor Support
168#
169# CONFIG_CPU_SUBTYPE_SH73180 is not set 137# CONFIG_CPU_SUBTYPE_SH73180 is not set
170# CONFIG_CPU_SUBTYPE_SH7343 is not set 138# CONFIG_CPU_SUBTYPE_SH7343 is not set
139# CONFIG_CPU_SUBTYPE_SH7722 is not set
171 140
172# 141#
173# Memory management options 142# Memory management options
174# 143#
144CONFIG_QUICKLIST=y
175CONFIG_MMU=y 145CONFIG_MMU=y
176CONFIG_PAGE_OFFSET=0x80000000 146CONFIG_PAGE_OFFSET=0x80000000
177CONFIG_MEMORY_START=0x0c000000 147CONFIG_MEMORY_START=0x0c000000
178CONFIG_MEMORY_SIZE=0x01000000 148CONFIG_MEMORY_SIZE=0x01000000
179CONFIG_VSYSCALL=y 149CONFIG_VSYSCALL=y
150CONFIG_ARCH_FLATMEM_ENABLE=y
151CONFIG_ARCH_SPARSEMEM_ENABLE=y
152CONFIG_ARCH_SPARSEMEM_DEFAULT=y
153CONFIG_MAX_ACTIVE_REGIONS=1
154CONFIG_ARCH_POPULATES_NODE_MAP=y
155CONFIG_ARCH_SELECT_MEMORY_MODEL=y
156CONFIG_PAGE_SIZE_4KB=y
157# CONFIG_PAGE_SIZE_8KB is not set
158# CONFIG_PAGE_SIZE_64KB is not set
180CONFIG_HUGETLB_PAGE_SIZE_64K=y 159CONFIG_HUGETLB_PAGE_SIZE_64K=y
160# CONFIG_HUGETLB_PAGE_SIZE_256K is not set
181# CONFIG_HUGETLB_PAGE_SIZE_1MB is not set 161# CONFIG_HUGETLB_PAGE_SIZE_1MB is not set
162# CONFIG_HUGETLB_PAGE_SIZE_4MB is not set
163# CONFIG_HUGETLB_PAGE_SIZE_64MB is not set
182CONFIG_SELECT_MEMORY_MODEL=y 164CONFIG_SELECT_MEMORY_MODEL=y
183CONFIG_FLATMEM_MANUAL=y 165CONFIG_FLATMEM_MANUAL=y
184# CONFIG_DISCONTIGMEM_MANUAL is not set 166# CONFIG_DISCONTIGMEM_MANUAL is not set
185# CONFIG_SPARSEMEM_MANUAL is not set 167# CONFIG_SPARSEMEM_MANUAL is not set
186CONFIG_FLATMEM=y 168CONFIG_FLATMEM=y
187CONFIG_FLAT_NODE_MEM_MAP=y 169CONFIG_FLAT_NODE_MEM_MAP=y
188# CONFIG_SPARSEMEM_STATIC is not set 170CONFIG_SPARSEMEM_STATIC=y
189CONFIG_SPLIT_PTLOCK_CPUS=4 171CONFIG_SPLIT_PTLOCK_CPUS=4
190# CONFIG_RESOURCES_64BIT is not set 172# CONFIG_RESOURCES_64BIT is not set
173CONFIG_ZONE_DMA_FLAG=0
174CONFIG_NR_QUICK=2
191 175
192# 176#
193# Cache configuration 177# Cache configuration
194# 178#
195# CONFIG_SH_DIRECT_MAPPED is not set 179# CONFIG_SH_DIRECT_MAPPED is not set
196# CONFIG_SH_WRITETHROUGH is not set 180# CONFIG_SH_WRITETHROUGH is not set
197# CONFIG_SH_OCRAM is not set
198 181
199# 182#
200# Processor features 183# Processor features
201# 184#
202CONFIG_CPU_LITTLE_ENDIAN=y 185CONFIG_CPU_LITTLE_ENDIAN=y
186# CONFIG_CPU_BIG_ENDIAN is not set
203CONFIG_SH_FPU=y 187CONFIG_SH_FPU=y
204# CONFIG_SH_DSP is not set 188# CONFIG_SH_DSP is not set
205CONFIG_SH_STORE_QUEUES=y 189CONFIG_SH_STORE_QUEUES=y
206CONFIG_CPU_HAS_INTEVT=y 190CONFIG_CPU_HAS_INTEVT=y
191CONFIG_CPU_HAS_IPR_IRQ=y
207CONFIG_CPU_HAS_SR_RB=y 192CONFIG_CPU_HAS_SR_RB=y
193CONFIG_CPU_HAS_PTEA=y
208 194
209# 195#
210# Timer support 196# Board support
197#
198CONFIG_SH_DREAMCAST=y
199
200#
201# Timer and clock configuration
211# 202#
212CONFIG_SH_TMU=y 203CONFIG_SH_TMU=y
204CONFIG_SH_TIMER_IRQ=16
213CONFIG_SH_PCLK_FREQ=49876504 205CONFIG_SH_PCLK_FREQ=49876504
206# CONFIG_TICK_ONESHOT is not set
207# CONFIG_NO_HZ is not set
208# CONFIG_HIGH_RES_TIMERS is not set
214 209
215# 210#
216# CPU Frequency scaling 211# CPU Frequency scaling
@@ -232,6 +227,7 @@ CONFIG_CPU_FREQ_GOV_USERSPACE=y
232# 227#
233# DMA support 228# DMA support
234# 229#
230CONFIG_SH_DMA_API=y
235CONFIG_SH_DMA=y 231CONFIG_SH_DMA=y
236CONFIG_NR_ONCHIP_DMA_CHANNELS=4 232CONFIG_NR_ONCHIP_DMA_CHANNELS=4
237CONFIG_NR_DMA_CHANNELS_BOOL=y 233CONFIG_NR_DMA_CHANNELS_BOOL=y
@@ -240,17 +236,23 @@ CONFIG_NR_DMA_CHANNELS=9
240# 236#
241# Companion Chips 237# Companion Chips
242# 238#
243# CONFIG_HD6446X_SERIES is not set 239
240#
241# Additional SuperH Device Drivers
242#
243# CONFIG_HEARTBEAT is not set
244# CONFIG_PUSH_SWITCH is not set
244 245
245# 246#
246# Kernel features 247# Kernel features
247# 248#
248# CONFIG_HZ_100 is not set 249# CONFIG_HZ_100 is not set
249CONFIG_HZ_250=y 250CONFIG_HZ_250=y
251# CONFIG_HZ_300 is not set
250# CONFIG_HZ_1000 is not set 252# CONFIG_HZ_1000 is not set
251CONFIG_HZ=250 253CONFIG_HZ=250
252# CONFIG_KEXEC is not set 254# CONFIG_KEXEC is not set
253# CONFIG_SMP is not set 255# CONFIG_CRASH_DUMP is not set
254# CONFIG_PREEMPT_NONE is not set 256# CONFIG_PREEMPT_NONE is not set
255# CONFIG_PREEMPT_VOLUNTARY is not set 257# CONFIG_PREEMPT_VOLUNTARY is not set
256CONFIG_PREEMPT=y 258CONFIG_PREEMPT=y
@@ -269,33 +271,23 @@ CONFIG_CMDLINE="console=ttySC1,115200 panic=3"
269# Bus options 271# Bus options
270# 272#
271CONFIG_PCI=y 273CONFIG_PCI=y
272# CONFIG_SH_PCIDMA_NONCOHERENT is not set 274CONFIG_SH_PCIDMA_NONCOHERENT=y
273CONFIG_PCI_AUTO=y 275CONFIG_PCI_AUTO=y
274# CONFIG_PCI_MULTITHREAD_PROBE is not set 276# CONFIG_ARCH_SUPPORTS_MSI is not set
275 277
276# 278#
277# PCCARD (PCMCIA/CardBus) support 279# PCCARD (PCMCIA/CardBus) support
278# 280#
279# CONFIG_PCCARD is not set 281# CONFIG_PCCARD is not set
280
281#
282# PCI Hotplug Support
283#
284# CONFIG_HOTPLUG_PCI is not set 282# CONFIG_HOTPLUG_PCI is not set
285 283
286# 284#
287# Executable file formats 285# Executable file formats
288# 286#
289CONFIG_BINFMT_ELF=y 287CONFIG_BINFMT_ELF=y
290# CONFIG_BINFMT_FLAT is not set
291# CONFIG_BINFMT_MISC is not set 288# CONFIG_BINFMT_MISC is not set
292 289
293# 290#
294# Power management options (EXPERIMENTAL)
295#
296# CONFIG_PM is not set
297
298#
299# Networking 291# Networking
300# 292#
301CONFIG_NET=y 293CONFIG_NET=y
@@ -303,13 +295,13 @@ CONFIG_NET=y
303# 295#
304# Networking options 296# Networking options
305# 297#
306# CONFIG_NETDEBUG is not set
307CONFIG_PACKET=y 298CONFIG_PACKET=y
308# CONFIG_PACKET_MMAP is not set 299# CONFIG_PACKET_MMAP is not set
309CONFIG_UNIX=y 300CONFIG_UNIX=y
310CONFIG_XFRM=y 301CONFIG_XFRM=y
311# CONFIG_XFRM_USER is not set 302# CONFIG_XFRM_USER is not set
312# CONFIG_XFRM_SUB_POLICY is not set 303# CONFIG_XFRM_SUB_POLICY is not set
304# CONFIG_XFRM_MIGRATE is not set
313# CONFIG_NET_KEY is not set 305# CONFIG_NET_KEY is not set
314CONFIG_INET=y 306CONFIG_INET=y
315# CONFIG_IP_MULTICAST is not set 307# CONFIG_IP_MULTICAST is not set
@@ -327,30 +319,20 @@ CONFIG_IP_FIB_HASH=y
327# CONFIG_INET_TUNNEL is not set 319# CONFIG_INET_TUNNEL is not set
328CONFIG_INET_XFRM_MODE_TRANSPORT=y 320CONFIG_INET_XFRM_MODE_TRANSPORT=y
329CONFIG_INET_XFRM_MODE_TUNNEL=y 321CONFIG_INET_XFRM_MODE_TUNNEL=y
322CONFIG_INET_XFRM_MODE_BEET=y
330CONFIG_INET_DIAG=y 323CONFIG_INET_DIAG=y
331CONFIG_INET_TCP_DIAG=y 324CONFIG_INET_TCP_DIAG=y
332# CONFIG_TCP_CONG_ADVANCED is not set 325# CONFIG_TCP_CONG_ADVANCED is not set
333CONFIG_TCP_CONG_CUBIC=y 326CONFIG_TCP_CONG_CUBIC=y
334CONFIG_DEFAULT_TCP_CONG="cubic" 327CONFIG_DEFAULT_TCP_CONG="cubic"
328# CONFIG_TCP_MD5SIG is not set
335# CONFIG_IPV6 is not set 329# CONFIG_IPV6 is not set
336# CONFIG_INET6_XFRM_TUNNEL is not set 330# CONFIG_INET6_XFRM_TUNNEL is not set
337# CONFIG_INET6_TUNNEL is not set 331# CONFIG_INET6_TUNNEL is not set
338# CONFIG_NETWORK_SECMARK is not set 332# CONFIG_NETWORK_SECMARK is not set
339# CONFIG_NETFILTER is not set 333# CONFIG_NETFILTER is not set
340
341#
342# DCCP Configuration (EXPERIMENTAL)
343#
344# CONFIG_IP_DCCP is not set 334# CONFIG_IP_DCCP is not set
345
346#
347# SCTP Configuration (EXPERIMENTAL)
348#
349# CONFIG_IP_SCTP is not set 335# CONFIG_IP_SCTP is not set
350
351#
352# TIPC Configuration (EXPERIMENTAL)
353#
354# CONFIG_TIPC is not set 336# CONFIG_TIPC is not set
355# CONFIG_ATM is not set 337# CONFIG_ATM is not set
356# CONFIG_BRIDGE is not set 338# CONFIG_BRIDGE is not set
@@ -376,7 +358,16 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
376# CONFIG_HAMRADIO is not set 358# CONFIG_HAMRADIO is not set
377# CONFIG_IRDA is not set 359# CONFIG_IRDA is not set
378# CONFIG_BT is not set 360# CONFIG_BT is not set
361# CONFIG_AF_RXRPC is not set
362
363#
364# Wireless
365#
366# CONFIG_CFG80211 is not set
367# CONFIG_WIRELESS_EXT is not set
368# CONFIG_MAC80211 is not set
379# CONFIG_IEEE80211 is not set 369# CONFIG_IEEE80211 is not set
370# CONFIG_RFKILL is not set
380 371
381# 372#
382# Device Drivers 373# Device Drivers
@@ -394,10 +385,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
394# Connector - unified userspace <-> kernelspace linker 385# Connector - unified userspace <-> kernelspace linker
395# 386#
396# CONFIG_CONNECTOR is not set 387# CONFIG_CONNECTOR is not set
397
398#
399# Memory Technology Devices (MTD)
400#
401# CONFIG_MTD is not set 388# CONFIG_MTD is not set
402 389
403# 390#
@@ -408,6 +395,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
408# 395#
409# Plug and Play support 396# Plug and Play support
410# 397#
398# CONFIG_PNPACPI is not set
411 399
412# 400#
413# Block devices 401# Block devices
@@ -421,13 +409,16 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
421# CONFIG_BLK_DEV_NBD is not set 409# CONFIG_BLK_DEV_NBD is not set
422# CONFIG_BLK_DEV_SX8 is not set 410# CONFIG_BLK_DEV_SX8 is not set
423# CONFIG_BLK_DEV_RAM is not set 411# CONFIG_BLK_DEV_RAM is not set
424# CONFIG_BLK_DEV_INITRD is not set
425# CONFIG_CDROM_PKTCDVD is not set 412# CONFIG_CDROM_PKTCDVD is not set
426# CONFIG_ATA_OVER_ETH is not set 413# CONFIG_ATA_OVER_ETH is not set
427 414
428# 415#
429# ATA/ATAPI/MFM/RLL support 416# Misc devices
430# 417#
418# CONFIG_PHANTOM is not set
419# CONFIG_SGI_IOC4 is not set
420# CONFIG_TIFM_CORE is not set
421# CONFIG_BLINK is not set
431# CONFIG_IDE is not set 422# CONFIG_IDE is not set
432 423
433# 424#
@@ -436,10 +427,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
436# CONFIG_RAID_ATTRS is not set 427# CONFIG_RAID_ATTRS is not set
437# CONFIG_SCSI is not set 428# CONFIG_SCSI is not set
438# CONFIG_SCSI_NETLINK is not set 429# CONFIG_SCSI_NETLINK is not set
439
440#
441# Serial ATA (prod) and Parallel ATA (experimental) drivers
442#
443# CONFIG_ATA is not set 430# CONFIG_ATA is not set
444 431
445# 432#
@@ -455,6 +442,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
455# 442#
456# IEEE 1394 (FireWire) support 443# IEEE 1394 (FireWire) support
457# 444#
445# CONFIG_FIREWIRE is not set
458# CONFIG_IEEE1394 is not set 446# CONFIG_IEEE1394 is not set
459 447
460# 448#
@@ -470,15 +458,7 @@ CONFIG_NETDEVICES=y
470# CONFIG_BONDING is not set 458# CONFIG_BONDING is not set
471# CONFIG_EQUALIZER is not set 459# CONFIG_EQUALIZER is not set
472# CONFIG_TUN is not set 460# CONFIG_TUN is not set
473
474#
475# ARCnet devices
476#
477# CONFIG_ARCNET is not set 461# CONFIG_ARCNET is not set
478
479#
480# PHY device support
481#
482# CONFIG_PHYLIB is not set 462# CONFIG_PHYLIB is not set
483 463
484# 464#
@@ -521,47 +501,16 @@ CONFIG_8139TOO=y
521# CONFIG_SUNDANCE is not set 501# CONFIG_SUNDANCE is not set
522# CONFIG_TLAN is not set 502# CONFIG_TLAN is not set
523# CONFIG_VIA_RHINE is not set 503# CONFIG_VIA_RHINE is not set
524 504# CONFIG_SC92031 is not set
525# 505# CONFIG_NETDEV_1000 is not set
526# Ethernet (1000 Mbit) 506# CONFIG_NETDEV_10000 is not set
527#
528# CONFIG_ACENIC is not set
529# CONFIG_DL2K is not set
530# CONFIG_E1000 is not set
531# CONFIG_NS83820 is not set
532# CONFIG_HAMACHI is not set
533# CONFIG_YELLOWFIN is not set
534# CONFIG_R8169 is not set
535# CONFIG_SIS190 is not set
536# CONFIG_SKGE is not set
537# CONFIG_SKY2 is not set
538# CONFIG_SK98LIN is not set
539# CONFIG_VIA_VELOCITY is not set
540# CONFIG_TIGON3 is not set
541# CONFIG_BNX2 is not set
542# CONFIG_QLA3XXX is not set
543
544#
545# Ethernet (10000 Mbit)
546#
547# CONFIG_CHELSIO_T1 is not set
548# CONFIG_IXGB is not set
549# CONFIG_S2IO is not set
550# CONFIG_MYRI10GE is not set
551
552#
553# Token Ring devices
554#
555# CONFIG_TR is not set 507# CONFIG_TR is not set
556 508
557# 509#
558# Wireless LAN (non-hamradio) 510# Wireless LAN
559#
560# CONFIG_NET_RADIO is not set
561
562#
563# Wan interfaces
564# 511#
512# CONFIG_WLAN_PRE80211 is not set
513# CONFIG_WLAN_80211 is not set
565# CONFIG_WAN is not set 514# CONFIG_WAN is not set
566# CONFIG_FDDI is not set 515# CONFIG_FDDI is not set
567# CONFIG_HIPPI is not set 516# CONFIG_HIPPI is not set
@@ -604,17 +553,19 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
604# Input Device Drivers 553# Input Device Drivers
605# 554#
606CONFIG_INPUT_KEYBOARD=y 555CONFIG_INPUT_KEYBOARD=y
607CONFIG_KEYBOARD_ATKBD=y 556# CONFIG_KEYBOARD_ATKBD is not set
608# CONFIG_KEYBOARD_SUNKBD is not set 557# CONFIG_KEYBOARD_SUNKBD is not set
609# CONFIG_KEYBOARD_LKKBD is not set 558# CONFIG_KEYBOARD_LKKBD is not set
610# CONFIG_KEYBOARD_XTKBD is not set 559# CONFIG_KEYBOARD_XTKBD is not set
611# CONFIG_KEYBOARD_NEWTON is not set 560# CONFIG_KEYBOARD_NEWTON is not set
612# CONFIG_KEYBOARD_STOWAWAY is not set 561# CONFIG_KEYBOARD_STOWAWAY is not set
613CONFIG_INPUT_MOUSE=y 562CONFIG_INPUT_MOUSE=y
614CONFIG_MOUSE_PS2=y 563# CONFIG_MOUSE_PS2 is not set
615# CONFIG_MOUSE_SERIAL is not set 564# CONFIG_MOUSE_SERIAL is not set
565# CONFIG_MOUSE_APPLETOUCH is not set
616# CONFIG_MOUSE_VSXXXAA is not set 566# CONFIG_MOUSE_VSXXXAA is not set
617# CONFIG_INPUT_JOYSTICK is not set 567# CONFIG_INPUT_JOYSTICK is not set
568# CONFIG_INPUT_TABLET is not set
618# CONFIG_INPUT_TOUCHSCREEN is not set 569# CONFIG_INPUT_TOUCHSCREEN is not set
619# CONFIG_INPUT_MISC is not set 570# CONFIG_INPUT_MISC is not set
620 571
@@ -660,10 +611,6 @@ CONFIG_LEGACY_PTY_COUNT=256
660# IPMI 611# IPMI
661# 612#
662# CONFIG_IPMI_HANDLER is not set 613# CONFIG_IPMI_HANDLER is not set
663
664#
665# Watchdog Cards
666#
667CONFIG_WATCHDOG=y 614CONFIG_WATCHDOG=y
668# CONFIG_WATCHDOG_NOWAYOUT is not set 615# CONFIG_WATCHDOG_NOWAYOUT is not set
669 616
@@ -680,14 +627,8 @@ CONFIG_SH_WDT=y
680# CONFIG_PCIPCWATCHDOG is not set 627# CONFIG_PCIPCWATCHDOG is not set
681# CONFIG_WDTPCI is not set 628# CONFIG_WDTPCI is not set
682CONFIG_HW_RANDOM=y 629CONFIG_HW_RANDOM=y
683# CONFIG_GEN_RTC is not set
684# CONFIG_DTLK is not set
685# CONFIG_R3964 is not set 630# CONFIG_R3964 is not set
686# CONFIG_APPLICOM is not set 631# CONFIG_APPLICOM is not set
687
688#
689# Ftape, the floppy tape device driver
690#
691# CONFIG_DRM is not set 632# CONFIG_DRM is not set
692# CONFIG_RAW_DRIVER is not set 633# CONFIG_RAW_DRIVER is not set
693 634
@@ -695,11 +636,7 @@ CONFIG_HW_RANDOM=y
695# TPM devices 636# TPM devices
696# 637#
697# CONFIG_TCG_TPM is not set 638# CONFIG_TCG_TPM is not set
698# CONFIG_TELCLOCK is not set 639CONFIG_DEVPORT=y
699
700#
701# I2C support
702#
703# CONFIG_I2C is not set 640# CONFIG_I2C is not set
704 641
705# 642#
@@ -711,44 +648,51 @@ CONFIG_HW_RANDOM=y
711# 648#
712# Dallas's 1-wire bus 649# Dallas's 1-wire bus
713# 650#
651# CONFIG_W1 is not set
652# CONFIG_HWMON is not set
714 653
715# 654#
716# Hardware Monitoring support 655# Multifunction device drivers
717#
718CONFIG_HWMON=y
719# CONFIG_HWMON_VID is not set
720# CONFIG_SENSORS_ABITUGURU is not set
721# CONFIG_SENSORS_F71805F is not set
722# CONFIG_SENSORS_VT1211 is not set
723# CONFIG_HWMON_DEBUG_CHIP is not set
724
725#
726# Misc devices
727# 656#
657# CONFIG_MFD_SM501 is not set
728 658
729# 659#
730# Multimedia devices 660# Multimedia devices
731# 661#
732# CONFIG_VIDEO_DEV is not set 662# CONFIG_VIDEO_DEV is not set
733CONFIG_VIDEO_V4L2=y 663# CONFIG_DVB_CORE is not set
664# CONFIG_DAB is not set
734 665
735# 666#
736# Digital Video Broadcasting Devices 667# Graphics support
737# 668#
738# CONFIG_DVB is not set 669# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
739 670
740# 671#
741# Graphics support 672# Display device support
742# 673#
743CONFIG_FIRMWARE_EDID=y 674# CONFIG_DISPLAY_SUPPORT is not set
675# CONFIG_VGASTATE is not set
744CONFIG_FB=y 676CONFIG_FB=y
677CONFIG_FIRMWARE_EDID=y
678# CONFIG_FB_DDC is not set
745CONFIG_FB_CFB_FILLRECT=y 679CONFIG_FB_CFB_FILLRECT=y
746CONFIG_FB_CFB_COPYAREA=y 680CONFIG_FB_CFB_COPYAREA=y
747CONFIG_FB_CFB_IMAGEBLIT=y 681CONFIG_FB_CFB_IMAGEBLIT=y
682# CONFIG_FB_SYS_FILLRECT is not set
683# CONFIG_FB_SYS_COPYAREA is not set
684# CONFIG_FB_SYS_IMAGEBLIT is not set
685# CONFIG_FB_SYS_FOPS is not set
686CONFIG_FB_DEFERRED_IO=y
687# CONFIG_FB_SVGALIB is not set
748# CONFIG_FB_MACMODES is not set 688# CONFIG_FB_MACMODES is not set
749# CONFIG_FB_BACKLIGHT is not set 689# CONFIG_FB_BACKLIGHT is not set
750# CONFIG_FB_MODE_HELPERS is not set 690# CONFIG_FB_MODE_HELPERS is not set
751# CONFIG_FB_TILEBLITTING is not set 691# CONFIG_FB_TILEBLITTING is not set
692
693#
694# Frame buffer hardware drivers
695#
752# CONFIG_FB_CIRRUS is not set 696# CONFIG_FB_CIRRUS is not set
753# CONFIG_FB_PM2 is not set 697# CONFIG_FB_PM2 is not set
754# CONFIG_FB_CYBER2000 is not set 698# CONFIG_FB_CYBER2000 is not set
@@ -763,13 +707,17 @@ CONFIG_FB_PVR2=y
763# CONFIG_FB_RADEON is not set 707# CONFIG_FB_RADEON is not set
764# CONFIG_FB_ATY128 is not set 708# CONFIG_FB_ATY128 is not set
765# CONFIG_FB_ATY is not set 709# CONFIG_FB_ATY is not set
710# CONFIG_FB_S3 is not set
766# CONFIG_FB_SAVAGE is not set 711# CONFIG_FB_SAVAGE is not set
767# CONFIG_FB_SIS is not set 712# CONFIG_FB_SIS is not set
768# CONFIG_FB_NEOMAGIC is not set 713# CONFIG_FB_NEOMAGIC is not set
769# CONFIG_FB_KYRO is not set 714# CONFIG_FB_KYRO is not set
770# CONFIG_FB_3DFX is not set 715# CONFIG_FB_3DFX is not set
771# CONFIG_FB_VOODOO1 is not set 716# CONFIG_FB_VOODOO1 is not set
717# CONFIG_FB_VT8623 is not set
772# CONFIG_FB_TRIDENT is not set 718# CONFIG_FB_TRIDENT is not set
719# CONFIG_FB_ARK is not set
720# CONFIG_FB_PM3 is not set
773# CONFIG_FB_VIRTUAL is not set 721# CONFIG_FB_VIRTUAL is not set
774 722
775# 723#
@@ -789,10 +737,6 @@ CONFIG_FONT_8x16=y
789# CONFIG_FONT_SUN8x16 is not set 737# CONFIG_FONT_SUN8x16 is not set
790# CONFIG_FONT_SUN12x22 is not set 738# CONFIG_FONT_SUN12x22 is not set
791# CONFIG_FONT_10x18 is not set 739# CONFIG_FONT_10x18 is not set
792
793#
794# Logo configuration
795#
796CONFIG_LOGO=y 740CONFIG_LOGO=y
797# CONFIG_LOGO_LINUX_MONO is not set 741# CONFIG_LOGO_LINUX_MONO is not set
798# CONFIG_LOGO_LINUX_VGA16 is not set 742# CONFIG_LOGO_LINUX_VGA16 is not set
@@ -800,7 +744,6 @@ CONFIG_LOGO=y
800# CONFIG_LOGO_SUPERH_MONO is not set 744# CONFIG_LOGO_SUPERH_MONO is not set
801# CONFIG_LOGO_SUPERH_VGA16 is not set 745# CONFIG_LOGO_SUPERH_VGA16 is not set
802CONFIG_LOGO_SUPERH_CLUT224=y 746CONFIG_LOGO_SUPERH_CLUT224=y
803# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
804 747
805# 748#
806# Sound 749# Sound
@@ -808,6 +751,12 @@ CONFIG_LOGO_SUPERH_CLUT224=y
808# CONFIG_SOUND is not set 751# CONFIG_SOUND is not set
809 752
810# 753#
754# HID Devices
755#
756CONFIG_HID=y
757# CONFIG_HID_DEBUG is not set
758
759#
811# USB support 760# USB support
812# 761#
813CONFIG_USB_ARCH_HAS_HCD=y 762CONFIG_USB_ARCH_HAS_HCD=y
@@ -823,10 +772,6 @@ CONFIG_USB_ARCH_HAS_EHCI=y
823# USB Gadget Support 772# USB Gadget Support
824# 773#
825# CONFIG_USB_GADGET is not set 774# CONFIG_USB_GADGET is not set
826
827#
828# MMC/SD Card support
829#
830# CONFIG_MMC is not set 775# CONFIG_MMC is not set
831 776
832# 777#
@@ -874,10 +819,12 @@ CONFIG_USB_ARCH_HAS_EHCI=y
874# 819#
875# CONFIG_EXT2_FS is not set 820# CONFIG_EXT2_FS is not set
876# CONFIG_EXT3_FS is not set 821# CONFIG_EXT3_FS is not set
822# CONFIG_EXT4DEV_FS is not set
877# CONFIG_REISERFS_FS is not set 823# CONFIG_REISERFS_FS is not set
878# CONFIG_JFS_FS is not set 824# CONFIG_JFS_FS is not set
879# CONFIG_FS_POSIX_ACL is not set 825# CONFIG_FS_POSIX_ACL is not set
880# CONFIG_XFS_FS is not set 826# CONFIG_XFS_FS is not set
827# CONFIG_GFS2_FS is not set
881# CONFIG_OCFS2_FS is not set 828# CONFIG_OCFS2_FS is not set
882# CONFIG_MINIX_FS is not set 829# CONFIG_MINIX_FS is not set
883# CONFIG_ROMFS_FS is not set 830# CONFIG_ROMFS_FS is not set
@@ -957,6 +904,11 @@ CONFIG_MSDOS_PARTITION=y
957# CONFIG_NLS is not set 904# CONFIG_NLS is not set
958 905
959# 906#
907# Distributed Lock Manager
908#
909# CONFIG_DLM is not set
910
911#
960# Profiling support 912# Profiling support
961# 913#
962CONFIG_PROFILING=y 914CONFIG_PROFILING=y
@@ -965,17 +917,18 @@ CONFIG_PROFILING=y
965# 917#
966# Kernel hacking 918# Kernel hacking
967# 919#
920CONFIG_TRACE_IRQFLAGS_SUPPORT=y
968# CONFIG_PRINTK_TIME is not set 921# CONFIG_PRINTK_TIME is not set
969CONFIG_ENABLE_MUST_CHECK=y 922CONFIG_ENABLE_MUST_CHECK=y
970# CONFIG_MAGIC_SYSRQ is not set 923# CONFIG_MAGIC_SYSRQ is not set
971# CONFIG_UNUSED_SYMBOLS is not set 924# CONFIG_UNUSED_SYMBOLS is not set
925# CONFIG_DEBUG_FS is not set
926# CONFIG_HEADERS_CHECK is not set
972# CONFIG_DEBUG_KERNEL is not set 927# CONFIG_DEBUG_KERNEL is not set
973CONFIG_LOG_BUF_SHIFT=14
974# CONFIG_DEBUG_BUGVERBOSE is not set 928# CONFIG_DEBUG_BUGVERBOSE is not set
975# CONFIG_DEBUG_FS is not set
976# CONFIG_SH_STANDARD_BIOS is not set 929# CONFIG_SH_STANDARD_BIOS is not set
977# CONFIG_EARLY_SCIF_CONSOLE is not set 930# CONFIG_EARLY_SCIF_CONSOLE is not set
978# CONFIG_KGDB is not set 931# CONFIG_SH_KGDB is not set
979 932
980# 933#
981# Security options 934# Security options
@@ -991,8 +944,13 @@ CONFIG_LOG_BUF_SHIFT=14
991# 944#
992# Library routines 945# Library routines
993# 946#
947CONFIG_BITREVERSE=y
994# CONFIG_CRC_CCITT is not set 948# CONFIG_CRC_CCITT is not set
995# CONFIG_CRC16 is not set 949# CONFIG_CRC16 is not set
950# CONFIG_CRC_ITU_T is not set
996CONFIG_CRC32=y 951CONFIG_CRC32=y
997# CONFIG_LIBCRC32C is not set 952# CONFIG_LIBCRC32C is not set
998CONFIG_PLIST=y 953CONFIG_PLIST=y
954CONFIG_HAS_IOMEM=y
955CONFIG_HAS_IOPORT=y
956CONFIG_HAS_DMA=y
diff --git a/arch/sh/configs/r7780mp_defconfig b/arch/sh/configs/r7780mp_defconfig
new file mode 100644
index 000000000000..17f7402b31d8
--- /dev/null
+++ b/arch/sh/configs/r7780mp_defconfig
@@ -0,0 +1,1223 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.22-rc4
4# Mon Jun 11 10:24:57 2007
5#
6CONFIG_SUPERH=y
7CONFIG_RWSEM_GENERIC_SPINLOCK=y
8CONFIG_GENERIC_BUG=y
9CONFIG_GENERIC_FIND_NEXT_BIT=y
10CONFIG_GENERIC_HWEIGHT=y
11CONFIG_GENERIC_HARDIRQS=y
12CONFIG_GENERIC_IRQ_PROBE=y
13CONFIG_GENERIC_CALIBRATE_DELAY=y
14CONFIG_GENERIC_TIME=y
15CONFIG_GENERIC_CLOCKEVENTS=y
16CONFIG_STACKTRACE_SUPPORT=y
17CONFIG_LOCKDEP_SUPPORT=y
18# CONFIG_ARCH_HAS_ILOG2_U32 is not set
19# CONFIG_ARCH_HAS_ILOG2_U64 is not set
20CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
21
22#
23# Code maturity level options
24#
25CONFIG_EXPERIMENTAL=y
26CONFIG_BROKEN_ON_SMP=y
27CONFIG_LOCK_KERNEL=y
28CONFIG_INIT_ENV_ARG_LIMIT=32
29
30#
31# General setup
32#
33CONFIG_LOCALVERSION=""
34CONFIG_LOCALVERSION_AUTO=y
35CONFIG_SWAP=y
36CONFIG_SYSVIPC=y
37# CONFIG_IPC_NS is not set
38CONFIG_SYSVIPC_SYSCTL=y
39# CONFIG_POSIX_MQUEUE is not set
40CONFIG_BSD_PROCESS_ACCT=y
41# CONFIG_BSD_PROCESS_ACCT_V3 is not set
42# CONFIG_TASKSTATS is not set
43# CONFIG_UTS_NS is not set
44# CONFIG_AUDIT is not set
45CONFIG_IKCONFIG=y
46CONFIG_IKCONFIG_PROC=y
47CONFIG_LOG_BUF_SHIFT=14
48# CONFIG_SYSFS_DEPRECATED is not set
49# CONFIG_RELAY is not set
50# CONFIG_BLK_DEV_INITRD is not set
51CONFIG_CC_OPTIMIZE_FOR_SIZE=y
52CONFIG_SYSCTL=y
53CONFIG_EMBEDDED=y
54CONFIG_UID16=y
55# CONFIG_SYSCTL_SYSCALL is not set
56CONFIG_KALLSYMS=y
57# CONFIG_KALLSYMS_ALL is not set
58# CONFIG_KALLSYMS_EXTRA_PASS is not set
59CONFIG_HOTPLUG=y
60CONFIG_PRINTK=y
61CONFIG_BUG=y
62CONFIG_ELF_CORE=y
63CONFIG_BASE_FULL=y
64# CONFIG_FUTEX is not set
65CONFIG_ANON_INODES=y
66# CONFIG_EPOLL is not set
67CONFIG_SIGNALFD=y
68CONFIG_TIMERFD=y
69CONFIG_EVENTFD=y
70CONFIG_SHMEM=y
71CONFIG_VM_EVENT_COUNTERS=y
72CONFIG_SLAB=y
73# CONFIG_SLUB is not set
74# CONFIG_SLOB is not set
75# CONFIG_TINY_SHMEM is not set
76CONFIG_BASE_SMALL=0
77
78#
79# Loadable module support
80#
81CONFIG_MODULES=y
82CONFIG_MODULE_UNLOAD=y
83# CONFIG_MODULE_FORCE_UNLOAD is not set
84# CONFIG_MODVERSIONS is not set
85# CONFIG_MODULE_SRCVERSION_ALL is not set
86CONFIG_KMOD=y
87
88#
89# Block layer
90#
91CONFIG_BLOCK=y
92# CONFIG_LBD is not set
93# CONFIG_BLK_DEV_IO_TRACE is not set
94# CONFIG_LSF is not set
95
96#
97# IO Schedulers
98#
99CONFIG_IOSCHED_NOOP=y
100# CONFIG_IOSCHED_AS is not set
101# CONFIG_IOSCHED_DEADLINE is not set
102# CONFIG_IOSCHED_CFQ is not set
103# CONFIG_DEFAULT_AS is not set
104# CONFIG_DEFAULT_DEADLINE is not set
105# CONFIG_DEFAULT_CFQ is not set
106CONFIG_DEFAULT_NOOP=y
107CONFIG_DEFAULT_IOSCHED="noop"
108
109#
110# System type
111#
112CONFIG_CPU_SH4=y
113CONFIG_CPU_SH4A=y
114# CONFIG_CPU_SUBTYPE_SH7619 is not set
115# CONFIG_CPU_SUBTYPE_SH7206 is not set
116# CONFIG_CPU_SUBTYPE_SH7300 is not set
117# CONFIG_CPU_SUBTYPE_SH7705 is not set
118# CONFIG_CPU_SUBTYPE_SH7706 is not set
119# CONFIG_CPU_SUBTYPE_SH7707 is not set
120# CONFIG_CPU_SUBTYPE_SH7708 is not set
121# CONFIG_CPU_SUBTYPE_SH7709 is not set
122# CONFIG_CPU_SUBTYPE_SH7710 is not set
123# CONFIG_CPU_SUBTYPE_SH7712 is not set
124# CONFIG_CPU_SUBTYPE_SH7750 is not set
125# CONFIG_CPU_SUBTYPE_SH7091 is not set
126# CONFIG_CPU_SUBTYPE_SH7750R is not set
127# CONFIG_CPU_SUBTYPE_SH7750S is not set
128# CONFIG_CPU_SUBTYPE_SH7751 is not set
129# CONFIG_CPU_SUBTYPE_SH7751R is not set
130# CONFIG_CPU_SUBTYPE_SH7760 is not set
131# CONFIG_CPU_SUBTYPE_SH4_202 is not set
132# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
133# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
134# CONFIG_CPU_SUBTYPE_SH7770 is not set
135CONFIG_CPU_SUBTYPE_SH7780=y
136# CONFIG_CPU_SUBTYPE_SH7785 is not set
137# CONFIG_CPU_SUBTYPE_SH73180 is not set
138# CONFIG_CPU_SUBTYPE_SH7343 is not set
139# CONFIG_CPU_SUBTYPE_SH7722 is not set
140
141#
142# Memory management options
143#
144CONFIG_QUICKLIST=y
145CONFIG_MMU=y
146CONFIG_PAGE_OFFSET=0x80000000
147CONFIG_MEMORY_START=0x08000000
148CONFIG_MEMORY_SIZE=0x08000000
149# CONFIG_32BIT is not set
150CONFIG_VSYSCALL=y
151CONFIG_ARCH_FLATMEM_ENABLE=y
152CONFIG_ARCH_SPARSEMEM_ENABLE=y
153CONFIG_ARCH_SPARSEMEM_DEFAULT=y
154CONFIG_MAX_ACTIVE_REGIONS=1
155CONFIG_ARCH_POPULATES_NODE_MAP=y
156CONFIG_ARCH_SELECT_MEMORY_MODEL=y
157CONFIG_PAGE_SIZE_4KB=y
158# CONFIG_PAGE_SIZE_8KB is not set
159# CONFIG_PAGE_SIZE_64KB is not set
160CONFIG_HUGETLB_PAGE_SIZE_64K=y
161# CONFIG_HUGETLB_PAGE_SIZE_256K is not set
162# CONFIG_HUGETLB_PAGE_SIZE_1MB is not set
163# CONFIG_HUGETLB_PAGE_SIZE_4MB is not set
164# CONFIG_HUGETLB_PAGE_SIZE_64MB is not set
165CONFIG_SELECT_MEMORY_MODEL=y
166CONFIG_FLATMEM_MANUAL=y
167# CONFIG_DISCONTIGMEM_MANUAL is not set
168# CONFIG_SPARSEMEM_MANUAL is not set
169CONFIG_FLATMEM=y
170CONFIG_FLAT_NODE_MEM_MAP=y
171CONFIG_SPARSEMEM_STATIC=y
172CONFIG_SPLIT_PTLOCK_CPUS=4
173# CONFIG_RESOURCES_64BIT is not set
174CONFIG_ZONE_DMA_FLAG=0
175CONFIG_NR_QUICK=2
176
177#
178# Cache configuration
179#
180# CONFIG_SH_DIRECT_MAPPED is not set
181# CONFIG_SH_WRITETHROUGH is not set
182# CONFIG_SH_OCRAM is not set
183
184#
185# Processor features
186#
187CONFIG_CPU_LITTLE_ENDIAN=y
188# CONFIG_CPU_BIG_ENDIAN is not set
189CONFIG_SH_FPU=y
190# CONFIG_SH_DSP is not set
191CONFIG_SH_STORE_QUEUES=y
192CONFIG_SPECULATIVE_EXECUTION=y
193CONFIG_CPU_HAS_INTEVT=y
194CONFIG_CPU_HAS_INTC2_IRQ=y
195CONFIG_CPU_HAS_SR_RB=y
196
197#
198# Board support
199#
200# CONFIG_SH_7780_SOLUTION_ENGINE is not set
201CONFIG_SH_HIGHLANDER=y
202# CONFIG_SH_R7780RP is not set
203CONFIG_SH_R7780MP=y
204# CONFIG_SH_R7785RP is not set
205
206#
207# Timer and clock configuration
208#
209CONFIG_SH_TMU=y
210CONFIG_SH_TIMER_IRQ=28
211CONFIG_SH_PCLK_FREQ=32000000
212# CONFIG_TICK_ONESHOT is not set
213# CONFIG_NO_HZ is not set
214# CONFIG_HIGH_RES_TIMERS is not set
215
216#
217# CPU Frequency scaling
218#
219# CONFIG_CPU_FREQ is not set
220
221#
222# DMA support
223#
224# CONFIG_SH_DMA is not set
225
226#
227# Companion Chips
228#
229# CONFIG_HD6446X_SERIES is not set
230
231#
232# Additional SuperH Device Drivers
233#
234# CONFIG_HEARTBEAT is not set
235CONFIG_PUSH_SWITCH=y
236
237#
238# Kernel features
239#
240# CONFIG_HZ_100 is not set
241CONFIG_HZ_250=y
242# CONFIG_HZ_300 is not set
243# CONFIG_HZ_1000 is not set
244CONFIG_HZ=250
245CONFIG_KEXEC=y
246# CONFIG_CRASH_DUMP is not set
247# CONFIG_SMP is not set
248# CONFIG_PREEMPT_NONE is not set
249# CONFIG_PREEMPT_VOLUNTARY is not set
250CONFIG_PREEMPT=y
251CONFIG_PREEMPT_BKL=y
252
253#
254# Boot options
255#
256CONFIG_ZERO_PAGE_OFFSET=0x00001000
257CONFIG_BOOT_LINK_OFFSET=0x00800000
258# CONFIG_UBC_WAKEUP is not set
259CONFIG_CMDLINE_BOOL=y
260CONFIG_CMDLINE="console=ttySC0,115200 root=/dev/sda1"
261
262#
263# Bus options
264#
265CONFIG_PCI=y
266CONFIG_SH_PCIDMA_NONCOHERENT=y
267CONFIG_PCI_AUTO=y
268CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
269# CONFIG_ARCH_SUPPORTS_MSI is not set
270# CONFIG_PCI_DEBUG is not set
271
272#
273# PCCARD (PCMCIA/CardBus) support
274#
275# CONFIG_PCCARD is not set
276# CONFIG_HOTPLUG_PCI is not set
277
278#
279# Executable file formats
280#
281CONFIG_BINFMT_ELF=y
282# CONFIG_BINFMT_MISC is not set
283
284#
285# Power management options (EXPERIMENTAL)
286#
287# CONFIG_PM is not set
288
289#
290# Networking
291#
292CONFIG_NET=y
293
294#
295# Networking options
296#
297CONFIG_PACKET=y
298# CONFIG_PACKET_MMAP is not set
299CONFIG_UNIX=y
300CONFIG_XFRM=y
301# CONFIG_XFRM_USER is not set
302# CONFIG_XFRM_SUB_POLICY is not set
303# CONFIG_XFRM_MIGRATE is not set
304# CONFIG_NET_KEY is not set
305CONFIG_INET=y
306# CONFIG_IP_MULTICAST is not set
307CONFIG_IP_ADVANCED_ROUTER=y
308CONFIG_ASK_IP_FIB_HASH=y
309# CONFIG_IP_FIB_TRIE is not set
310CONFIG_IP_FIB_HASH=y
311# CONFIG_IP_MULTIPLE_TABLES is not set
312# CONFIG_IP_ROUTE_MULTIPATH is not set
313# CONFIG_IP_ROUTE_VERBOSE is not set
314CONFIG_IP_PNP=y
315CONFIG_IP_PNP_DHCP=y
316# CONFIG_IP_PNP_BOOTP is not set
317# CONFIG_IP_PNP_RARP is not set
318# CONFIG_NET_IPIP is not set
319# CONFIG_NET_IPGRE is not set
320# CONFIG_ARPD is not set
321# CONFIG_SYN_COOKIES is not set
322# CONFIG_INET_AH is not set
323# CONFIG_INET_ESP is not set
324# CONFIG_INET_IPCOMP is not set
325# CONFIG_INET_XFRM_TUNNEL is not set
326# CONFIG_INET_TUNNEL is not set
327CONFIG_INET_XFRM_MODE_TRANSPORT=y
328CONFIG_INET_XFRM_MODE_TUNNEL=y
329CONFIG_INET_XFRM_MODE_BEET=y
330CONFIG_INET_DIAG=y
331CONFIG_INET_TCP_DIAG=y
332# CONFIG_TCP_CONG_ADVANCED is not set
333CONFIG_TCP_CONG_CUBIC=y
334CONFIG_DEFAULT_TCP_CONG="cubic"
335# CONFIG_TCP_MD5SIG is not set
336# CONFIG_IPV6 is not set
337# CONFIG_INET6_XFRM_TUNNEL is not set
338# CONFIG_INET6_TUNNEL is not set
339# CONFIG_NETWORK_SECMARK is not set
340# CONFIG_NETFILTER is not set
341# CONFIG_IP_DCCP is not set
342# CONFIG_IP_SCTP is not set
343# CONFIG_TIPC is not set
344# CONFIG_ATM is not set
345CONFIG_BRIDGE=m
346# CONFIG_VLAN_8021Q is not set
347# CONFIG_DECNET is not set
348CONFIG_LLC=m
349# CONFIG_LLC2 is not set
350# CONFIG_IPX is not set
351# CONFIG_ATALK is not set
352# CONFIG_X25 is not set
353# CONFIG_LAPB is not set
354# CONFIG_ECONET is not set
355# CONFIG_WAN_ROUTER is not set
356
357#
358# QoS and/or fair queueing
359#
360# CONFIG_NET_SCHED is not set
361
362#
363# Network testing
364#
365# CONFIG_NET_PKTGEN is not set
366# CONFIG_HAMRADIO is not set
367# CONFIG_IRDA is not set
368# CONFIG_BT is not set
369# CONFIG_AF_RXRPC is not set
370
371#
372# Wireless
373#
374# CONFIG_CFG80211 is not set
375CONFIG_WIRELESS_EXT=y
376# CONFIG_MAC80211 is not set
377# CONFIG_IEEE80211 is not set
378# CONFIG_RFKILL is not set
379
380#
381# Device Drivers
382#
383
384#
385# Generic Driver Options
386#
387CONFIG_STANDALONE=y
388CONFIG_PREVENT_FIRMWARE_BUILD=y
389CONFIG_FW_LOADER=m
390# CONFIG_DEBUG_DRIVER is not set
391# CONFIG_DEBUG_DEVRES is not set
392# CONFIG_SYS_HYPERVISOR is not set
393
394#
395# Connector - unified userspace <-> kernelspace linker
396#
397# CONFIG_CONNECTOR is not set
398# CONFIG_MTD is not set
399
400#
401# Parallel port support
402#
403# CONFIG_PARPORT is not set
404
405#
406# Plug and Play support
407#
408# CONFIG_PNPACPI is not set
409
410#
411# Block devices
412#
413# CONFIG_BLK_CPQ_DA is not set
414# CONFIG_BLK_CPQ_CISS_DA is not set
415# CONFIG_BLK_DEV_DAC960 is not set
416# CONFIG_BLK_DEV_UMEM is not set
417# CONFIG_BLK_DEV_COW_COMMON is not set
418# CONFIG_BLK_DEV_LOOP is not set
419# CONFIG_BLK_DEV_NBD is not set
420# CONFIG_BLK_DEV_SX8 is not set
421CONFIG_BLK_DEV_RAM=y
422CONFIG_BLK_DEV_RAM_COUNT=16
423CONFIG_BLK_DEV_RAM_SIZE=4096
424CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
425# CONFIG_CDROM_PKTCDVD is not set
426# CONFIG_ATA_OVER_ETH is not set
427
428#
429# Misc devices
430#
431# CONFIG_PHANTOM is not set
432# CONFIG_SGI_IOC4 is not set
433# CONFIG_TIFM_CORE is not set
434# CONFIG_BLINK is not set
435# CONFIG_IDE is not set
436
437#
438# SCSI device support
439#
440# CONFIG_RAID_ATTRS is not set
441CONFIG_SCSI=y
442# CONFIG_SCSI_TGT is not set
443# CONFIG_SCSI_NETLINK is not set
444CONFIG_SCSI_PROC_FS=y
445
446#
447# SCSI support type (disk, tape, CD-ROM)
448#
449CONFIG_BLK_DEV_SD=y
450# CONFIG_CHR_DEV_ST is not set
451# CONFIG_CHR_DEV_OSST is not set
452# CONFIG_BLK_DEV_SR is not set
453CONFIG_CHR_DEV_SG=m
454# CONFIG_CHR_DEV_SCH is not set
455
456#
457# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
458#
459# CONFIG_SCSI_MULTI_LUN is not set
460# CONFIG_SCSI_CONSTANTS is not set
461# CONFIG_SCSI_LOGGING is not set
462# CONFIG_SCSI_SCAN_ASYNC is not set
463CONFIG_SCSI_WAIT_SCAN=m
464
465#
466# SCSI Transports
467#
468# CONFIG_SCSI_SPI_ATTRS is not set
469# CONFIG_SCSI_FC_ATTRS is not set
470# CONFIG_SCSI_ISCSI_ATTRS is not set
471# CONFIG_SCSI_SAS_ATTRS is not set
472# CONFIG_SCSI_SAS_LIBSAS is not set
473
474#
475# SCSI low-level drivers
476#
477# CONFIG_ISCSI_TCP is not set
478# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
479# CONFIG_SCSI_3W_9XXX is not set
480# CONFIG_SCSI_ACARD is not set
481# CONFIG_SCSI_AACRAID is not set
482# CONFIG_SCSI_AIC7XXX is not set
483# CONFIG_SCSI_AIC7XXX_OLD is not set
484# CONFIG_SCSI_AIC79XX is not set
485# CONFIG_SCSI_AIC94XX is not set
486# CONFIG_SCSI_DPT_I2O is not set
487# CONFIG_SCSI_ARCMSR is not set
488# CONFIG_MEGARAID_NEWGEN is not set
489# CONFIG_MEGARAID_LEGACY is not set
490# CONFIG_MEGARAID_SAS is not set
491# CONFIG_SCSI_HPTIOP is not set
492# CONFIG_SCSI_DMX3191D is not set
493# CONFIG_SCSI_FUTURE_DOMAIN is not set
494# CONFIG_SCSI_IPS is not set
495# CONFIG_SCSI_INITIO is not set
496# CONFIG_SCSI_INIA100 is not set
497# CONFIG_SCSI_STEX is not set
498# CONFIG_SCSI_SYM53C8XX_2 is not set
499# CONFIG_SCSI_IPR is not set
500# CONFIG_SCSI_QLOGIC_1280 is not set
501# CONFIG_SCSI_QLA_FC is not set
502# CONFIG_SCSI_QLA_ISCSI is not set
503# CONFIG_SCSI_LPFC is not set
504# CONFIG_SCSI_DC395x is not set
505# CONFIG_SCSI_DC390T is not set
506# CONFIG_SCSI_NSP32 is not set
507# CONFIG_SCSI_DEBUG is not set
508# CONFIG_SCSI_SRP is not set
509CONFIG_ATA=y
510# CONFIG_ATA_NONSTANDARD is not set
511# CONFIG_SATA_AHCI is not set
512# CONFIG_SATA_SVW is not set
513# CONFIG_ATA_PIIX is not set
514# CONFIG_SATA_MV is not set
515# CONFIG_SATA_NV is not set
516# CONFIG_PDC_ADMA is not set
517# CONFIG_SATA_QSTOR is not set
518# CONFIG_SATA_PROMISE is not set
519# CONFIG_SATA_SX4 is not set
520CONFIG_SATA_SIL=y
521# CONFIG_SATA_SIL24 is not set
522# CONFIG_SATA_SIS is not set
523# CONFIG_SATA_ULI is not set
524# CONFIG_SATA_VIA is not set
525# CONFIG_SATA_VITESSE is not set
526# CONFIG_SATA_INIC162X is not set
527# CONFIG_PATA_ALI is not set
528# CONFIG_PATA_AMD is not set
529# CONFIG_PATA_ARTOP is not set
530# CONFIG_PATA_ATIIXP is not set
531# CONFIG_PATA_CMD640_PCI is not set
532# CONFIG_PATA_CMD64X is not set
533# CONFIG_PATA_CS5520 is not set
534# CONFIG_PATA_CS5530 is not set
535# CONFIG_PATA_CYPRESS is not set
536# CONFIG_PATA_EFAR is not set
537# CONFIG_ATA_GENERIC is not set
538# CONFIG_PATA_HPT366 is not set
539# CONFIG_PATA_HPT37X is not set
540# CONFIG_PATA_HPT3X2N is not set
541# CONFIG_PATA_HPT3X3 is not set
542# CONFIG_PATA_IT821X is not set
543# CONFIG_PATA_IT8213 is not set
544# CONFIG_PATA_JMICRON is not set
545# CONFIG_PATA_TRIFLEX is not set
546# CONFIG_PATA_MARVELL is not set
547# CONFIG_PATA_MPIIX is not set
548# CONFIG_PATA_OLDPIIX is not set
549# CONFIG_PATA_NETCELL is not set
550# CONFIG_PATA_NS87410 is not set
551# CONFIG_PATA_OPTI is not set
552# CONFIG_PATA_OPTIDMA is not set
553# CONFIG_PATA_PDC_OLD is not set
554# CONFIG_PATA_RADISYS is not set
555# CONFIG_PATA_RZ1000 is not set
556# CONFIG_PATA_SC1200 is not set
557# CONFIG_PATA_SERVERWORKS is not set
558# CONFIG_PATA_PDC2027X is not set
559# CONFIG_PATA_SIL680 is not set
560# CONFIG_PATA_SIS is not set
561# CONFIG_PATA_VIA is not set
562# CONFIG_PATA_WINBOND is not set
563CONFIG_PATA_PLATFORM=y
564
565#
566# Multi-device support (RAID and LVM)
567#
568# CONFIG_MD is not set
569
570#
571# Fusion MPT device support
572#
573# CONFIG_FUSION is not set
574# CONFIG_FUSION_SPI is not set
575# CONFIG_FUSION_FC is not set
576# CONFIG_FUSION_SAS is not set
577
578#
579# IEEE 1394 (FireWire) support
580#
581# CONFIG_FIREWIRE is not set
582# CONFIG_IEEE1394 is not set
583
584#
585# I2O device support
586#
587# CONFIG_I2O is not set
588
589#
590# Network device support
591#
592CONFIG_NETDEVICES=y
593# CONFIG_DUMMY is not set
594# CONFIG_BONDING is not set
595# CONFIG_EQUALIZER is not set
596# CONFIG_TUN is not set
597# CONFIG_ARCNET is not set
598# CONFIG_PHYLIB is not set
599
600#
601# Ethernet (10 or 100Mbit)
602#
603CONFIG_NET_ETHERNET=y
604CONFIG_MII=y
605# CONFIG_STNIC is not set
606# CONFIG_HAPPYMEAL is not set
607# CONFIG_SUNGEM is not set
608# CONFIG_CASSINI is not set
609# CONFIG_NET_VENDOR_3COM is not set
610# CONFIG_SMC91X is not set
611
612#
613# Tulip family network device support
614#
615# CONFIG_NET_TULIP is not set
616# CONFIG_HP100 is not set
617CONFIG_NET_PCI=y
618CONFIG_PCNET32=m
619# CONFIG_PCNET32_NAPI is not set
620# CONFIG_AMD8111_ETH is not set
621# CONFIG_ADAPTEC_STARFIRE is not set
622# CONFIG_B44 is not set
623# CONFIG_FORCEDETH is not set
624# CONFIG_DGRS is not set
625# CONFIG_EEPRO100 is not set
626# CONFIG_E100 is not set
627# CONFIG_FEALNX is not set
628# CONFIG_NATSEMI is not set
629# CONFIG_NE2K_PCI is not set
630CONFIG_8139CP=m
631CONFIG_8139TOO=m
632# CONFIG_8139TOO_PIO is not set
633# CONFIG_8139TOO_TUNE_TWISTER is not set
634CONFIG_8139TOO_8129=y
635# CONFIG_8139_OLD_RX_RESET is not set
636# CONFIG_SIS900 is not set
637# CONFIG_EPIC100 is not set
638# CONFIG_SUNDANCE is not set
639# CONFIG_TLAN is not set
640CONFIG_VIA_RHINE=m
641CONFIG_VIA_RHINE_MMIO=y
642# CONFIG_VIA_RHINE_NAPI is not set
643# CONFIG_SC92031 is not set
644CONFIG_NETDEV_1000=y
645# CONFIG_ACENIC is not set
646# CONFIG_DL2K is not set
647CONFIG_E1000=m
648# CONFIG_E1000_NAPI is not set
649# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
650# CONFIG_NS83820 is not set
651# CONFIG_HAMACHI is not set
652# CONFIG_YELLOWFIN is not set
653CONFIG_R8169=y
654# CONFIG_R8169_NAPI is not set
655# CONFIG_SIS190 is not set
656# CONFIG_SKGE is not set
657# CONFIG_SKY2 is not set
658# CONFIG_SK98LIN is not set
659# CONFIG_VIA_VELOCITY is not set
660# CONFIG_TIGON3 is not set
661# CONFIG_BNX2 is not set
662# CONFIG_QLA3XXX is not set
663# CONFIG_ATL1 is not set
664CONFIG_NETDEV_10000=y
665# CONFIG_CHELSIO_T1 is not set
666# CONFIG_CHELSIO_T3 is not set
667# CONFIG_IXGB is not set
668# CONFIG_S2IO is not set
669# CONFIG_MYRI10GE is not set
670# CONFIG_NETXEN_NIC is not set
671# CONFIG_MLX4_CORE is not set
672# CONFIG_TR is not set
673
674#
675# Wireless LAN
676#
677# CONFIG_WLAN_PRE80211 is not set
678# CONFIG_WLAN_80211 is not set
679# CONFIG_WAN is not set
680# CONFIG_FDDI is not set
681# CONFIG_HIPPI is not set
682# CONFIG_PPP is not set
683# CONFIG_SLIP is not set
684# CONFIG_NET_FC is not set
685# CONFIG_SHAPER is not set
686# CONFIG_NETCONSOLE is not set
687# CONFIG_NETPOLL is not set
688# CONFIG_NET_POLL_CONTROLLER is not set
689
690#
691# ISDN subsystem
692#
693# CONFIG_ISDN is not set
694
695#
696# Telephony Support
697#
698# CONFIG_PHONE is not set
699
700#
701# Input device support
702#
703CONFIG_INPUT=y
704# CONFIG_INPUT_FF_MEMLESS is not set
705
706#
707# Userland interfaces
708#
709CONFIG_INPUT_MOUSEDEV=y
710# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
711CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
712CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
713# CONFIG_INPUT_JOYDEV is not set
714# CONFIG_INPUT_TSDEV is not set
715# CONFIG_INPUT_EVDEV is not set
716# CONFIG_INPUT_EVBUG is not set
717
718#
719# Input Device Drivers
720#
721CONFIG_INPUT_KEYBOARD=y
722CONFIG_KEYBOARD_ATKBD=y
723# CONFIG_KEYBOARD_SUNKBD is not set
724# CONFIG_KEYBOARD_LKKBD is not set
725# CONFIG_KEYBOARD_XTKBD is not set
726# CONFIG_KEYBOARD_NEWTON is not set
727# CONFIG_KEYBOARD_STOWAWAY is not set
728# CONFIG_INPUT_MOUSE is not set
729# CONFIG_INPUT_JOYSTICK is not set
730# CONFIG_INPUT_TABLET is not set
731# CONFIG_INPUT_TOUCHSCREEN is not set
732# CONFIG_INPUT_MISC is not set
733
734#
735# Hardware I/O ports
736#
737CONFIG_SERIO=y
738# CONFIG_SERIO_I8042 is not set
739# CONFIG_SERIO_SERPORT is not set
740# CONFIG_SERIO_PCIPS2 is not set
741CONFIG_SERIO_LIBPS2=y
742# CONFIG_SERIO_RAW is not set
743# CONFIG_GAMEPORT is not set
744
745#
746# Character devices
747#
748# CONFIG_VT is not set
749# CONFIG_SERIAL_NONSTANDARD is not set
750
751#
752# Serial drivers
753#
754# CONFIG_SERIAL_8250 is not set
755
756#
757# Non-8250 serial port support
758#
759CONFIG_SERIAL_SH_SCI=y
760CONFIG_SERIAL_SH_SCI_NR_UARTS=2
761CONFIG_SERIAL_SH_SCI_CONSOLE=y
762CONFIG_SERIAL_CORE=y
763CONFIG_SERIAL_CORE_CONSOLE=y
764# CONFIG_SERIAL_JSM is not set
765CONFIG_UNIX98_PTYS=y
766CONFIG_LEGACY_PTYS=y
767CONFIG_LEGACY_PTY_COUNT=256
768
769#
770# IPMI
771#
772# CONFIG_IPMI_HANDLER is not set
773# CONFIG_WATCHDOG is not set
774CONFIG_HW_RANDOM=y
775# CONFIG_R3964 is not set
776# CONFIG_APPLICOM is not set
777# CONFIG_DRM is not set
778# CONFIG_RAW_DRIVER is not set
779
780#
781# TPM devices
782#
783# CONFIG_TCG_TPM is not set
784CONFIG_DEVPORT=y
785# CONFIG_I2C is not set
786
787#
788# SPI support
789#
790# CONFIG_SPI is not set
791# CONFIG_SPI_MASTER is not set
792
793#
794# Dallas's 1-wire bus
795#
796# CONFIG_W1 is not set
797CONFIG_HWMON=y
798# CONFIG_HWMON_VID is not set
799# CONFIG_SENSORS_ABITUGURU is not set
800# CONFIG_SENSORS_F71805F is not set
801# CONFIG_SENSORS_PC87427 is not set
802# CONFIG_SENSORS_SMSC47M1 is not set
803# CONFIG_SENSORS_SMSC47B397 is not set
804# CONFIG_SENSORS_VT1211 is not set
805# CONFIG_SENSORS_W83627HF is not set
806# CONFIG_HWMON_DEBUG_CHIP is not set
807
808#
809# Multifunction device drivers
810#
811# CONFIG_MFD_SM501 is not set
812
813#
814# Multimedia devices
815#
816# CONFIG_VIDEO_DEV is not set
817# CONFIG_DVB_CORE is not set
818CONFIG_DAB=y
819
820#
821# Graphics support
822#
823# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
824
825#
826# Display device support
827#
828# CONFIG_DISPLAY_SUPPORT is not set
829# CONFIG_VGASTATE is not set
830# CONFIG_FB is not set
831
832#
833# Sound
834#
835CONFIG_SOUND=m
836
837#
838# Advanced Linux Sound Architecture
839#
840# CONFIG_SND is not set
841
842#
843# Open Sound System
844#
845CONFIG_SOUND_PRIME=m
846# CONFIG_OSS_OBSOLETE is not set
847# CONFIG_SOUND_TRIDENT is not set
848# CONFIG_SOUND_MSNDCLAS is not set
849# CONFIG_SOUND_MSNDPIN is not set
850
851#
852# HID Devices
853#
854CONFIG_HID=y
855# CONFIG_HID_DEBUG is not set
856
857#
858# USB support
859#
860CONFIG_USB_ARCH_HAS_HCD=y
861CONFIG_USB_ARCH_HAS_OHCI=y
862CONFIG_USB_ARCH_HAS_EHCI=y
863# CONFIG_USB is not set
864
865#
866# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
867#
868
869#
870# USB Gadget Support
871#
872# CONFIG_USB_GADGET is not set
873# CONFIG_MMC is not set
874
875#
876# LED devices
877#
878# CONFIG_NEW_LEDS is not set
879
880#
881# LED drivers
882#
883
884#
885# LED Triggers
886#
887
888#
889# InfiniBand support
890#
891# CONFIG_INFINIBAND is not set
892
893#
894# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
895#
896
897#
898# Real Time Clock
899#
900CONFIG_RTC_LIB=y
901CONFIG_RTC_CLASS=y
902CONFIG_RTC_HCTOSYS=y
903CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
904# CONFIG_RTC_DEBUG is not set
905
906#
907# RTC interfaces
908#
909CONFIG_RTC_INTF_SYSFS=y
910CONFIG_RTC_INTF_PROC=y
911CONFIG_RTC_INTF_DEV=y
912# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
913# CONFIG_RTC_DRV_TEST is not set
914
915#
916# I2C RTC drivers
917#
918
919#
920# SPI RTC drivers
921#
922
923#
924# Platform RTC drivers
925#
926# CONFIG_RTC_DRV_DS1553 is not set
927# CONFIG_RTC_DRV_DS1742 is not set
928# CONFIG_RTC_DRV_M48T86 is not set
929# CONFIG_RTC_DRV_V3020 is not set
930
931#
932# on-CPU RTC drivers
933#
934CONFIG_RTC_DRV_SH=y
935
936#
937# DMA Engine support
938#
939# CONFIG_DMA_ENGINE is not set
940
941#
942# DMA Clients
943#
944
945#
946# DMA Devices
947#
948
949#
950# File systems
951#
952CONFIG_EXT2_FS=y
953# CONFIG_EXT2_FS_XATTR is not set
954# CONFIG_EXT2_FS_XIP is not set
955CONFIG_EXT3_FS=y
956CONFIG_EXT3_FS_XATTR=y
957# CONFIG_EXT3_FS_POSIX_ACL is not set
958# CONFIG_EXT3_FS_SECURITY is not set
959# CONFIG_EXT4DEV_FS is not set
960CONFIG_JBD=y
961# CONFIG_JBD_DEBUG is not set
962CONFIG_FS_MBCACHE=y
963# CONFIG_REISERFS_FS is not set
964# CONFIG_JFS_FS is not set
965CONFIG_FS_POSIX_ACL=y
966# CONFIG_XFS_FS is not set
967# CONFIG_GFS2_FS is not set
968# CONFIG_OCFS2_FS is not set
969CONFIG_MINIX_FS=y
970# CONFIG_ROMFS_FS is not set
971CONFIG_INOTIFY=y
972CONFIG_INOTIFY_USER=y
973# CONFIG_QUOTA is not set
974CONFIG_DNOTIFY=y
975# CONFIG_AUTOFS_FS is not set
976# CONFIG_AUTOFS4_FS is not set
977CONFIG_FUSE_FS=m
978
979#
980# CD-ROM/DVD Filesystems
981#
982# CONFIG_ISO9660_FS is not set
983# CONFIG_UDF_FS is not set
984
985#
986# DOS/FAT/NT Filesystems
987#
988CONFIG_FAT_FS=y
989CONFIG_MSDOS_FS=y
990CONFIG_VFAT_FS=y
991CONFIG_FAT_DEFAULT_CODEPAGE=437
992CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
993CONFIG_NTFS_FS=y
994# CONFIG_NTFS_DEBUG is not set
995CONFIG_NTFS_RW=y
996
997#
998# Pseudo filesystems
999#
1000CONFIG_PROC_FS=y
1001CONFIG_PROC_KCORE=y
1002CONFIG_PROC_SYSCTL=y
1003CONFIG_SYSFS=y
1004CONFIG_TMPFS=y
1005# CONFIG_TMPFS_POSIX_ACL is not set
1006CONFIG_HUGETLBFS=y
1007CONFIG_HUGETLB_PAGE=y
1008CONFIG_RAMFS=y
1009CONFIG_CONFIGFS_FS=m
1010
1011#
1012# Miscellaneous filesystems
1013#
1014# CONFIG_ADFS_FS is not set
1015# CONFIG_AFFS_FS is not set
1016# CONFIG_HFS_FS is not set
1017# CONFIG_HFSPLUS_FS is not set
1018# CONFIG_BEFS_FS is not set
1019# CONFIG_BFS_FS is not set
1020# CONFIG_EFS_FS is not set
1021# CONFIG_CRAMFS is not set
1022# CONFIG_VXFS_FS is not set
1023# CONFIG_HPFS_FS is not set
1024# CONFIG_QNX4FS_FS is not set
1025# CONFIG_SYSV_FS is not set
1026# CONFIG_UFS_FS is not set
1027
1028#
1029# Network File Systems
1030#
1031CONFIG_NFS_FS=y
1032CONFIG_NFS_V3=y
1033# CONFIG_NFS_V3_ACL is not set
1034CONFIG_NFS_V4=y
1035# CONFIG_NFS_DIRECTIO is not set
1036CONFIG_NFSD=y
1037CONFIG_NFSD_V3=y
1038# CONFIG_NFSD_V3_ACL is not set
1039CONFIG_NFSD_V4=y
1040CONFIG_NFSD_TCP=y
1041CONFIG_ROOT_NFS=y
1042CONFIG_LOCKD=y
1043CONFIG_LOCKD_V4=y
1044CONFIG_EXPORTFS=y
1045CONFIG_NFS_COMMON=y
1046CONFIG_SUNRPC=y
1047CONFIG_SUNRPC_GSS=y
1048# CONFIG_SUNRPC_BIND34 is not set
1049CONFIG_RPCSEC_GSS_KRB5=y
1050# CONFIG_RPCSEC_GSS_SPKM3 is not set
1051# CONFIG_SMB_FS is not set
1052# CONFIG_CIFS is not set
1053# CONFIG_NCP_FS is not set
1054# CONFIG_CODA_FS is not set
1055# CONFIG_AFS_FS is not set
1056# CONFIG_9P_FS is not set
1057
1058#
1059# Partition Types
1060#
1061# CONFIG_PARTITION_ADVANCED is not set
1062CONFIG_MSDOS_PARTITION=y
1063
1064#
1065# Native Language Support
1066#
1067CONFIG_NLS=y
1068CONFIG_NLS_DEFAULT="iso8859-1"
1069CONFIG_NLS_CODEPAGE_437=y
1070# CONFIG_NLS_CODEPAGE_737 is not set
1071# CONFIG_NLS_CODEPAGE_775 is not set
1072# CONFIG_NLS_CODEPAGE_850 is not set
1073# CONFIG_NLS_CODEPAGE_852 is not set
1074# CONFIG_NLS_CODEPAGE_855 is not set
1075# CONFIG_NLS_CODEPAGE_857 is not set
1076# CONFIG_NLS_CODEPAGE_860 is not set
1077# CONFIG_NLS_CODEPAGE_861 is not set
1078# CONFIG_NLS_CODEPAGE_862 is not set
1079# CONFIG_NLS_CODEPAGE_863 is not set
1080# CONFIG_NLS_CODEPAGE_864 is not set
1081# CONFIG_NLS_CODEPAGE_865 is not set
1082# CONFIG_NLS_CODEPAGE_866 is not set
1083# CONFIG_NLS_CODEPAGE_869 is not set
1084# CONFIG_NLS_CODEPAGE_936 is not set
1085# CONFIG_NLS_CODEPAGE_950 is not set
1086CONFIG_NLS_CODEPAGE_932=y
1087# CONFIG_NLS_CODEPAGE_949 is not set
1088# CONFIG_NLS_CODEPAGE_874 is not set
1089# CONFIG_NLS_ISO8859_8 is not set
1090# CONFIG_NLS_CODEPAGE_1250 is not set
1091# CONFIG_NLS_CODEPAGE_1251 is not set
1092# CONFIG_NLS_ASCII is not set
1093CONFIG_NLS_ISO8859_1=y
1094# CONFIG_NLS_ISO8859_2 is not set
1095# CONFIG_NLS_ISO8859_3 is not set
1096# CONFIG_NLS_ISO8859_4 is not set
1097# CONFIG_NLS_ISO8859_5 is not set
1098# CONFIG_NLS_ISO8859_6 is not set
1099# CONFIG_NLS_ISO8859_7 is not set
1100# CONFIG_NLS_ISO8859_9 is not set
1101# CONFIG_NLS_ISO8859_13 is not set
1102# CONFIG_NLS_ISO8859_14 is not set
1103# CONFIG_NLS_ISO8859_15 is not set
1104# CONFIG_NLS_KOI8_R is not set
1105# CONFIG_NLS_KOI8_U is not set
1106# CONFIG_NLS_UTF8 is not set
1107
1108#
1109# Distributed Lock Manager
1110#
1111# CONFIG_DLM is not set
1112
1113#
1114# Profiling support
1115#
1116CONFIG_PROFILING=y
1117CONFIG_OPROFILE=m
1118
1119#
1120# Kernel hacking
1121#
1122CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1123# CONFIG_PRINTK_TIME is not set
1124CONFIG_ENABLE_MUST_CHECK=y
1125CONFIG_MAGIC_SYSRQ=y
1126# CONFIG_UNUSED_SYMBOLS is not set
1127CONFIG_DEBUG_FS=y
1128# CONFIG_HEADERS_CHECK is not set
1129CONFIG_DEBUG_KERNEL=y
1130# CONFIG_DEBUG_SHIRQ is not set
1131CONFIG_DETECT_SOFTLOCKUP=y
1132# CONFIG_SCHEDSTATS is not set
1133# CONFIG_TIMER_STATS is not set
1134# CONFIG_DEBUG_SLAB is not set
1135# CONFIG_DEBUG_PREEMPT is not set
1136# CONFIG_DEBUG_SPINLOCK is not set
1137# CONFIG_DEBUG_MUTEXES is not set
1138# CONFIG_DEBUG_LOCK_ALLOC is not set
1139# CONFIG_PROVE_LOCKING is not set
1140# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1141# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1142# CONFIG_DEBUG_KOBJECT is not set
1143CONFIG_DEBUG_BUGVERBOSE=y
1144CONFIG_DEBUG_INFO=y
1145# CONFIG_DEBUG_VM is not set
1146# CONFIG_DEBUG_LIST is not set
1147# CONFIG_FRAME_POINTER is not set
1148CONFIG_FORCED_INLINING=y
1149# CONFIG_RCU_TORTURE_TEST is not set
1150# CONFIG_FAULT_INJECTION is not set
1151CONFIG_SH_STANDARD_BIOS=y
1152# CONFIG_EARLY_SCIF_CONSOLE is not set
1153CONFIG_EARLY_PRINTK=y
1154# CONFIG_DEBUG_BOOTMEM is not set
1155CONFIG_DEBUG_STACKOVERFLOW=y
1156# CONFIG_DEBUG_STACK_USAGE is not set
1157# CONFIG_4KSTACKS is not set
1158# CONFIG_SH_KGDB is not set
1159
1160#
1161# Security options
1162#
1163# CONFIG_KEYS is not set
1164# CONFIG_SECURITY is not set
1165
1166#
1167# Cryptographic options
1168#
1169CONFIG_CRYPTO=y
1170CONFIG_CRYPTO_ALGAPI=y
1171CONFIG_CRYPTO_BLKCIPHER=y
1172CONFIG_CRYPTO_HASH=y
1173CONFIG_CRYPTO_MANAGER=y
1174CONFIG_CRYPTO_HMAC=y
1175# CONFIG_CRYPTO_XCBC is not set
1176# CONFIG_CRYPTO_NULL is not set
1177# CONFIG_CRYPTO_MD4 is not set
1178CONFIG_CRYPTO_MD5=y
1179# CONFIG_CRYPTO_SHA1 is not set
1180# CONFIG_CRYPTO_SHA256 is not set
1181# CONFIG_CRYPTO_SHA512 is not set
1182# CONFIG_CRYPTO_WP512 is not set
1183# CONFIG_CRYPTO_TGR192 is not set
1184# CONFIG_CRYPTO_GF128MUL is not set
1185CONFIG_CRYPTO_ECB=m
1186CONFIG_CRYPTO_CBC=y
1187CONFIG_CRYPTO_PCBC=m
1188# CONFIG_CRYPTO_LRW is not set
1189# CONFIG_CRYPTO_CRYPTD is not set
1190CONFIG_CRYPTO_DES=y
1191# CONFIG_CRYPTO_FCRYPT is not set
1192# CONFIG_CRYPTO_BLOWFISH is not set
1193# CONFIG_CRYPTO_TWOFISH is not set
1194# CONFIG_CRYPTO_SERPENT is not set
1195# CONFIG_CRYPTO_AES is not set
1196# CONFIG_CRYPTO_CAST5 is not set
1197# CONFIG_CRYPTO_CAST6 is not set
1198# CONFIG_CRYPTO_TEA is not set
1199# CONFIG_CRYPTO_ARC4 is not set
1200# CONFIG_CRYPTO_KHAZAD is not set
1201# CONFIG_CRYPTO_ANUBIS is not set
1202# CONFIG_CRYPTO_DEFLATE is not set
1203# CONFIG_CRYPTO_MICHAEL_MIC is not set
1204# CONFIG_CRYPTO_CRC32C is not set
1205# CONFIG_CRYPTO_CAMELLIA is not set
1206# CONFIG_CRYPTO_TEST is not set
1207
1208#
1209# Hardware crypto devices
1210#
1211
1212#
1213# Library routines
1214#
1215CONFIG_BITREVERSE=y
1216# CONFIG_CRC_CCITT is not set
1217# CONFIG_CRC16 is not set
1218# CONFIG_CRC_ITU_T is not set
1219CONFIG_CRC32=y
1220# CONFIG_LIBCRC32C is not set
1221CONFIG_HAS_IOMEM=y
1222CONFIG_HAS_IOPORT=y
1223CONFIG_HAS_DMA=y
diff --git a/arch/sh/configs/r7785rp_defconfig b/arch/sh/configs/r7785rp_defconfig
index 0f5ec649daf8..5c29338532da 100644
--- a/arch/sh/configs/r7785rp_defconfig
+++ b/arch/sh/configs/r7785rp_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.21-rc3 3# Linux kernel version: 2.6.22-rc4
4# Mon Mar 12 14:26:33 2007 4# Thu Jul 12 12:33:15 2007
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 7CONFIG_RWSEM_GENERIC_SPINLOCK=y
@@ -11,7 +11,9 @@ CONFIG_GENERIC_HWEIGHT=y
11CONFIG_GENERIC_HARDIRQS=y 11CONFIG_GENERIC_HARDIRQS=y
12CONFIG_GENERIC_IRQ_PROBE=y 12CONFIG_GENERIC_IRQ_PROBE=y
13CONFIG_GENERIC_CALIBRATE_DELAY=y 13CONFIG_GENERIC_CALIBRATE_DELAY=y
14# CONFIG_GENERIC_TIME is not set 14CONFIG_GENERIC_TIME=y
15CONFIG_GENERIC_CLOCKEVENTS=y
16CONFIG_SYS_SUPPORTS_PCI=y
15CONFIG_STACKTRACE_SUPPORT=y 17CONFIG_STACKTRACE_SUPPORT=y
16CONFIG_LOCKDEP_SUPPORT=y 18CONFIG_LOCKDEP_SUPPORT=y
17# CONFIG_ARCH_HAS_ILOG2_U32 is not set 19# CONFIG_ARCH_HAS_ILOG2_U32 is not set
@@ -43,6 +45,7 @@ CONFIG_BSD_PROCESS_ACCT=y
43# CONFIG_AUDIT is not set 45# CONFIG_AUDIT is not set
44CONFIG_IKCONFIG=y 46CONFIG_IKCONFIG=y
45CONFIG_IKCONFIG_PROC=y 47CONFIG_IKCONFIG_PROC=y
48CONFIG_LOG_BUF_SHIFT=14
46# CONFIG_SYSFS_DEPRECATED is not set 49# CONFIG_SYSFS_DEPRECATED is not set
47# CONFIG_RELAY is not set 50# CONFIG_RELAY is not set
48# CONFIG_BLK_DEV_INITRD is not set 51# CONFIG_BLK_DEV_INITRD is not set
@@ -60,13 +63,18 @@ CONFIG_BUG=y
60CONFIG_ELF_CORE=y 63CONFIG_ELF_CORE=y
61CONFIG_BASE_FULL=y 64CONFIG_BASE_FULL=y
62# CONFIG_FUTEX is not set 65# CONFIG_FUTEX is not set
66CONFIG_ANON_INODES=y
63# CONFIG_EPOLL is not set 67# CONFIG_EPOLL is not set
68CONFIG_SIGNALFD=y
69CONFIG_TIMERFD=y
70CONFIG_EVENTFD=y
64CONFIG_SHMEM=y 71CONFIG_SHMEM=y
65CONFIG_SLAB=y
66CONFIG_VM_EVENT_COUNTERS=y 72CONFIG_VM_EVENT_COUNTERS=y
73CONFIG_SLAB=y
74# CONFIG_SLUB is not set
75# CONFIG_SLOB is not set
67# CONFIG_TINY_SHMEM is not set 76# CONFIG_TINY_SHMEM is not set
68CONFIG_BASE_SMALL=0 77CONFIG_BASE_SMALL=0
69# CONFIG_SLOB is not set
70 78
71# 79#
72# Loadable module support 80# Loadable module support
@@ -102,55 +110,11 @@ CONFIG_DEFAULT_IOSCHED="noop"
102# 110#
103# System type 111# System type
104# 112#
105# CONFIG_SH_SOLUTION_ENGINE is not set
106# CONFIG_SH_7751_SOLUTION_ENGINE is not set
107# CONFIG_SH_7300_SOLUTION_ENGINE is not set
108# CONFIG_SH_7343_SOLUTION_ENGINE is not set
109# CONFIG_SH_73180_SOLUTION_ENGINE is not set
110# CONFIG_SH_7751_SYSTEMH is not set
111# CONFIG_SH_HP6XX is not set
112# CONFIG_SH_SATURN is not set
113# CONFIG_SH_DREAMCAST is not set
114# CONFIG_SH_MPC1211 is not set
115# CONFIG_SH_SH03 is not set
116# CONFIG_SH_SECUREEDGE5410 is not set
117# CONFIG_SH_HS7751RVOIP is not set
118# CONFIG_SH_7710VOIPGW is not set
119# CONFIG_SH_RTS7751R2D is not set
120CONFIG_SH_HIGHLANDER=y
121# CONFIG_SH_EDOSK7705 is not set
122# CONFIG_SH_SH4202_MICRODEV is not set
123# CONFIG_SH_LANDISK is not set
124# CONFIG_SH_TITAN is not set
125# CONFIG_SH_SHMIN is not set
126# CONFIG_SH_7206_SOLUTION_ENGINE is not set
127# CONFIG_SH_7619_SOLUTION_ENGINE is not set
128# CONFIG_SH_UNKNOWN is not set
129# CONFIG_SH_R7780RP is not set
130# CONFIG_SH_R7780MP is not set
131CONFIG_SH_R7785RP=y
132
133#
134# Processor selection
135#
136CONFIG_CPU_SH4=y 113CONFIG_CPU_SH4=y
137CONFIG_CPU_SH4A=y 114CONFIG_CPU_SH4A=y
138CONFIG_CPU_SHX2=y 115CONFIG_CPU_SHX2=y
139
140#
141# SH-2 Processor Support
142#
143# CONFIG_CPU_SUBTYPE_SH7604 is not set
144# CONFIG_CPU_SUBTYPE_SH7619 is not set 116# CONFIG_CPU_SUBTYPE_SH7619 is not set
145
146#
147# SH-2A Processor Support
148#
149# CONFIG_CPU_SUBTYPE_SH7206 is not set 117# CONFIG_CPU_SUBTYPE_SH7206 is not set
150
151#
152# SH-3 Processor Support
153#
154# CONFIG_CPU_SUBTYPE_SH7300 is not set 118# CONFIG_CPU_SUBTYPE_SH7300 is not set
155# CONFIG_CPU_SUBTYPE_SH7705 is not set 119# CONFIG_CPU_SUBTYPE_SH7705 is not set
156# CONFIG_CPU_SUBTYPE_SH7706 is not set 120# CONFIG_CPU_SUBTYPE_SH7706 is not set
@@ -158,10 +122,7 @@ CONFIG_CPU_SHX2=y
158# CONFIG_CPU_SUBTYPE_SH7708 is not set 122# CONFIG_CPU_SUBTYPE_SH7708 is not set
159# CONFIG_CPU_SUBTYPE_SH7709 is not set 123# CONFIG_CPU_SUBTYPE_SH7709 is not set
160# CONFIG_CPU_SUBTYPE_SH7710 is not set 124# CONFIG_CPU_SUBTYPE_SH7710 is not set
161 125# CONFIG_CPU_SUBTYPE_SH7712 is not set
162#
163# SH-4 Processor Support
164#
165# CONFIG_CPU_SUBTYPE_SH7750 is not set 126# CONFIG_CPU_SUBTYPE_SH7750 is not set
166# CONFIG_CPU_SUBTYPE_SH7091 is not set 127# CONFIG_CPU_SUBTYPE_SH7091 is not set
167# CONFIG_CPU_SUBTYPE_SH7750R is not set 128# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -170,23 +131,12 @@ CONFIG_CPU_SHX2=y
170# CONFIG_CPU_SUBTYPE_SH7751R is not set 131# CONFIG_CPU_SUBTYPE_SH7751R is not set
171# CONFIG_CPU_SUBTYPE_SH7760 is not set 132# CONFIG_CPU_SUBTYPE_SH7760 is not set
172# CONFIG_CPU_SUBTYPE_SH4_202 is not set 133# CONFIG_CPU_SUBTYPE_SH4_202 is not set
173
174#
175# ST40 Processor Support
176#
177# CONFIG_CPU_SUBTYPE_ST40STB1 is not set 134# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
178# CONFIG_CPU_SUBTYPE_ST40GX1 is not set 135# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
179
180#
181# SH-4A Processor Support
182#
183# CONFIG_CPU_SUBTYPE_SH7770 is not set 136# CONFIG_CPU_SUBTYPE_SH7770 is not set
184# CONFIG_CPU_SUBTYPE_SH7780 is not set 137# CONFIG_CPU_SUBTYPE_SH7780 is not set
185CONFIG_CPU_SUBTYPE_SH7785=y 138CONFIG_CPU_SUBTYPE_SH7785=y
186 139# CONFIG_CPU_SUBTYPE_SHX3 is not set
187#
188# SH4AL-DSP Processor Support
189#
190# CONFIG_CPU_SUBTYPE_SH73180 is not set 140# CONFIG_CPU_SUBTYPE_SH73180 is not set
191# CONFIG_CPU_SUBTYPE_SH7343 is not set 141# CONFIG_CPU_SUBTYPE_SH7343 is not set
192# CONFIG_CPU_SUBTYPE_SH7722 is not set 142# CONFIG_CPU_SUBTYPE_SH7722 is not set
@@ -194,6 +144,7 @@ CONFIG_CPU_SUBTYPE_SH7785=y
194# 144#
195# Memory management options 145# Memory management options
196# 146#
147CONFIG_QUICKLIST=y
197CONFIG_MMU=y 148CONFIG_MMU=y
198CONFIG_PAGE_OFFSET=0x80000000 149CONFIG_PAGE_OFFSET=0x80000000
199CONFIG_MEMORY_START=0x08000000 150CONFIG_MEMORY_START=0x08000000
@@ -201,6 +152,12 @@ CONFIG_MEMORY_SIZE=0x08000000
201CONFIG_32BIT=y 152CONFIG_32BIT=y
202# CONFIG_X2TLB is not set 153# CONFIG_X2TLB is not set
203CONFIG_VSYSCALL=y 154CONFIG_VSYSCALL=y
155CONFIG_ARCH_FLATMEM_ENABLE=y
156CONFIG_ARCH_SPARSEMEM_ENABLE=y
157CONFIG_ARCH_SPARSEMEM_DEFAULT=y
158CONFIG_MAX_ACTIVE_REGIONS=1
159CONFIG_ARCH_POPULATES_NODE_MAP=y
160CONFIG_ARCH_SELECT_MEMORY_MODEL=y
204CONFIG_PAGE_SIZE_4KB=y 161CONFIG_PAGE_SIZE_4KB=y
205# CONFIG_PAGE_SIZE_8KB is not set 162# CONFIG_PAGE_SIZE_8KB is not set
206# CONFIG_PAGE_SIZE_64KB is not set 163# CONFIG_PAGE_SIZE_64KB is not set
@@ -215,17 +172,17 @@ CONFIG_FLATMEM_MANUAL=y
215# CONFIG_SPARSEMEM_MANUAL is not set 172# CONFIG_SPARSEMEM_MANUAL is not set
216CONFIG_FLATMEM=y 173CONFIG_FLATMEM=y
217CONFIG_FLAT_NODE_MEM_MAP=y 174CONFIG_FLAT_NODE_MEM_MAP=y
218# CONFIG_SPARSEMEM_STATIC is not set 175CONFIG_SPARSEMEM_STATIC=y
219CONFIG_SPLIT_PTLOCK_CPUS=4 176CONFIG_SPLIT_PTLOCK_CPUS=4
220# CONFIG_RESOURCES_64BIT is not set 177# CONFIG_RESOURCES_64BIT is not set
221CONFIG_ZONE_DMA_FLAG=0 178CONFIG_ZONE_DMA_FLAG=0
179CONFIG_NR_QUICK=2
222 180
223# 181#
224# Cache configuration 182# Cache configuration
225# 183#
226# CONFIG_SH_DIRECT_MAPPED is not set 184# CONFIG_SH_DIRECT_MAPPED is not set
227# CONFIG_SH_WRITETHROUGH is not set 185# CONFIG_SH_WRITETHROUGH is not set
228# CONFIG_SH_OCRAM is not set
229 186
230# 187#
231# Processor features 188# Processor features
@@ -241,12 +198,22 @@ CONFIG_CPU_HAS_SR_RB=y
241CONFIG_CPU_HAS_PTEA=y 198CONFIG_CPU_HAS_PTEA=y
242 199
243# 200#
201# Board support
202#
203CONFIG_SH_HIGHLANDER=y
204# CONFIG_SH_R7780RP is not set
205# CONFIG_SH_R7780MP is not set
206CONFIG_SH_R7785RP=y
207
208#
244# Timer and clock configuration 209# Timer and clock configuration
245# 210#
246CONFIG_SH_TMU=y 211CONFIG_SH_TMU=y
247CONFIG_SH_TIMER_IRQ=28 212CONFIG_SH_TIMER_IRQ=28
248CONFIG_NO_IDLE_HZ=y
249CONFIG_SH_PCLK_FREQ=50000000 213CONFIG_SH_PCLK_FREQ=50000000
214# CONFIG_TICK_ONESHOT is not set
215# CONFIG_NO_HZ is not set
216# CONFIG_HIGH_RES_TIMERS is not set
250 217
251# 218#
252# CPU Frequency scaling 219# CPU Frequency scaling
@@ -261,7 +228,6 @@ CONFIG_SH_PCLK_FREQ=50000000
261# 228#
262# Companion Chips 229# Companion Chips
263# 230#
264# CONFIG_HD6446X_SERIES is not set
265 231
266# 232#
267# Additional SuperH Device Drivers 233# Additional SuperH Device Drivers
@@ -278,7 +244,7 @@ CONFIG_HZ_250=y
278# CONFIG_HZ_1000 is not set 244# CONFIG_HZ_1000 is not set
279CONFIG_HZ=250 245CONFIG_HZ=250
280CONFIG_KEXEC=y 246CONFIG_KEXEC=y
281# CONFIG_SMP is not set 247# CONFIG_CRASH_DUMP is not set
282# CONFIG_PREEMPT_NONE is not set 248# CONFIG_PREEMPT_NONE is not set
283# CONFIG_PREEMPT_VOLUNTARY is not set 249# CONFIG_PREEMPT_VOLUNTARY is not set
284CONFIG_PREEMPT=y 250CONFIG_PREEMPT=y
@@ -300,31 +266,22 @@ CONFIG_PCI=y
300CONFIG_SH_PCIDMA_NONCOHERENT=y 266CONFIG_SH_PCIDMA_NONCOHERENT=y
301CONFIG_PCI_AUTO=y 267CONFIG_PCI_AUTO=y
302CONFIG_PCI_AUTO_UPDATE_RESOURCES=y 268CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
269# CONFIG_ARCH_SUPPORTS_MSI is not set
303# CONFIG_PCI_DEBUG is not set 270# CONFIG_PCI_DEBUG is not set
304 271
305# 272#
306# PCCARD (PCMCIA/CardBus) support 273# PCCARD (PCMCIA/CardBus) support
307# 274#
308# CONFIG_PCCARD is not set 275# CONFIG_PCCARD is not set
309
310#
311# PCI Hotplug Support
312#
313# CONFIG_HOTPLUG_PCI is not set 276# CONFIG_HOTPLUG_PCI is not set
314 277
315# 278#
316# Executable file formats 279# Executable file formats
317# 280#
318CONFIG_BINFMT_ELF=y 281CONFIG_BINFMT_ELF=y
319# CONFIG_BINFMT_FLAT is not set
320# CONFIG_BINFMT_MISC is not set 282# CONFIG_BINFMT_MISC is not set
321 283
322# 284#
323# Power management options (EXPERIMENTAL)
324#
325# CONFIG_PM is not set
326
327#
328# Networking 285# Networking
329# 286#
330CONFIG_NET=y 287CONFIG_NET=y
@@ -332,7 +289,6 @@ CONFIG_NET=y
332# 289#
333# Networking options 290# Networking options
334# 291#
335# CONFIG_NETDEBUG is not set
336CONFIG_PACKET=y 292CONFIG_PACKET=y
337# CONFIG_PACKET_MMAP is not set 293# CONFIG_PACKET_MMAP is not set
338CONFIG_UNIX=y 294CONFIG_UNIX=y
@@ -377,20 +333,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
377# CONFIG_INET6_TUNNEL is not set 333# CONFIG_INET6_TUNNEL is not set
378# CONFIG_NETWORK_SECMARK is not set 334# CONFIG_NETWORK_SECMARK is not set
379# CONFIG_NETFILTER is not set 335# CONFIG_NETFILTER is not set
380
381#
382# DCCP Configuration (EXPERIMENTAL)
383#
384# CONFIG_IP_DCCP is not set 336# CONFIG_IP_DCCP is not set
385
386#
387# SCTP Configuration (EXPERIMENTAL)
388#
389# CONFIG_IP_SCTP is not set 337# CONFIG_IP_SCTP is not set
390
391#
392# TIPC Configuration (EXPERIMENTAL)
393#
394# CONFIG_TIPC is not set 338# CONFIG_TIPC is not set
395# CONFIG_ATM is not set 339# CONFIG_ATM is not set
396CONFIG_BRIDGE=m 340CONFIG_BRIDGE=m
@@ -417,8 +361,16 @@ CONFIG_LLC=m
417# CONFIG_HAMRADIO is not set 361# CONFIG_HAMRADIO is not set
418# CONFIG_IRDA is not set 362# CONFIG_IRDA is not set
419# CONFIG_BT is not set 363# CONFIG_BT is not set
420# CONFIG_IEEE80211 is not set 364# CONFIG_AF_RXRPC is not set
365
366#
367# Wireless
368#
369# CONFIG_CFG80211 is not set
421CONFIG_WIRELESS_EXT=y 370CONFIG_WIRELESS_EXT=y
371# CONFIG_MAC80211 is not set
372# CONFIG_IEEE80211 is not set
373# CONFIG_RFKILL is not set
422 374
423# 375#
424# Device Drivers 376# Device Drivers
@@ -438,10 +390,6 @@ CONFIG_FW_LOADER=m
438# Connector - unified userspace <-> kernelspace linker 390# Connector - unified userspace <-> kernelspace linker
439# 391#
440# CONFIG_CONNECTOR is not set 392# CONFIG_CONNECTOR is not set
441
442#
443# Memory Technology Devices (MTD)
444#
445# CONFIG_MTD is not set 393# CONFIG_MTD is not set
446 394
447# 395#
@@ -475,12 +423,10 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
475# 423#
476# Misc devices 424# Misc devices
477# 425#
426# CONFIG_PHANTOM is not set
478# CONFIG_SGI_IOC4 is not set 427# CONFIG_SGI_IOC4 is not set
479# CONFIG_TIFM_CORE is not set 428# CONFIG_TIFM_CORE is not set
480 429# CONFIG_BLINK is not set
481#
482# ATA/ATAPI/MFM/RLL support
483#
484# CONFIG_IDE is not set 430# CONFIG_IDE is not set
485 431
486# 432#
@@ -509,6 +455,7 @@ CONFIG_CHR_DEV_SG=m
509# CONFIG_SCSI_CONSTANTS is not set 455# CONFIG_SCSI_CONSTANTS is not set
510# CONFIG_SCSI_LOGGING is not set 456# CONFIG_SCSI_LOGGING is not set
511# CONFIG_SCSI_SCAN_ASYNC is not set 457# CONFIG_SCSI_SCAN_ASYNC is not set
458CONFIG_SCSI_WAIT_SCAN=m
512 459
513# 460#
514# SCSI Transports 461# SCSI Transports
@@ -554,10 +501,6 @@ CONFIG_CHR_DEV_SG=m
554# CONFIG_SCSI_NSP32 is not set 501# CONFIG_SCSI_NSP32 is not set
555# CONFIG_SCSI_DEBUG is not set 502# CONFIG_SCSI_DEBUG is not set
556# CONFIG_SCSI_SRP is not set 503# CONFIG_SCSI_SRP is not set
557
558#
559# Serial ATA (prod) and Parallel ATA (experimental) drivers
560#
561CONFIG_ATA=y 504CONFIG_ATA=y
562# CONFIG_ATA_NONSTANDARD is not set 505# CONFIG_ATA_NONSTANDARD is not set
563# CONFIG_SATA_AHCI is not set 506# CONFIG_SATA_AHCI is not set
@@ -580,6 +523,7 @@ CONFIG_SATA_SIL=y
580# CONFIG_PATA_AMD is not set 523# CONFIG_PATA_AMD is not set
581# CONFIG_PATA_ARTOP is not set 524# CONFIG_PATA_ARTOP is not set
582# CONFIG_PATA_ATIIXP is not set 525# CONFIG_PATA_ATIIXP is not set
526# CONFIG_PATA_CMD640_PCI is not set
583# CONFIG_PATA_CMD64X is not set 527# CONFIG_PATA_CMD64X is not set
584# CONFIG_PATA_CS5520 is not set 528# CONFIG_PATA_CS5520 is not set
585# CONFIG_PATA_CS5530 is not set 529# CONFIG_PATA_CS5530 is not set
@@ -629,6 +573,7 @@ CONFIG_PATA_PLATFORM=y
629# 573#
630# IEEE 1394 (FireWire) support 574# IEEE 1394 (FireWire) support
631# 575#
576# CONFIG_FIREWIRE is not set
632# CONFIG_IEEE1394 is not set 577# CONFIG_IEEE1394 is not set
633 578
634# 579#
@@ -644,15 +589,7 @@ CONFIG_NETDEVICES=y
644# CONFIG_BONDING is not set 589# CONFIG_BONDING is not set
645# CONFIG_EQUALIZER is not set 590# CONFIG_EQUALIZER is not set
646# CONFIG_TUN is not set 591# CONFIG_TUN is not set
647
648#
649# ARCnet devices
650#
651# CONFIG_ARCNET is not set 592# CONFIG_ARCNET is not set
652
653#
654# PHY device support
655#
656# CONFIG_PHYLIB is not set 593# CONFIG_PHYLIB is not set
657 594
658# 595#
@@ -673,10 +610,7 @@ CONFIG_MII=y
673# CONFIG_NET_TULIP is not set 610# CONFIG_NET_TULIP is not set
674# CONFIG_HP100 is not set 611# CONFIG_HP100 is not set
675# CONFIG_NET_PCI is not set 612# CONFIG_NET_PCI is not set
676 613CONFIG_NETDEV_1000=y
677#
678# Ethernet (1000 Mbit)
679#
680# CONFIG_ACENIC is not set 614# CONFIG_ACENIC is not set
681# CONFIG_DL2K is not set 615# CONFIG_DL2K is not set
682# CONFIG_E1000 is not set 616# CONFIG_E1000 is not set
@@ -689,55 +623,26 @@ CONFIG_R8169=y
689# CONFIG_SKGE is not set 623# CONFIG_SKGE is not set
690# CONFIG_SKY2 is not set 624# CONFIG_SKY2 is not set
691# CONFIG_SK98LIN is not set 625# CONFIG_SK98LIN is not set
626# CONFIG_VIA_VELOCITY is not set
692# CONFIG_TIGON3 is not set 627# CONFIG_TIGON3 is not set
693# CONFIG_BNX2 is not set 628# CONFIG_BNX2 is not set
694# CONFIG_QLA3XXX is not set 629# CONFIG_QLA3XXX is not set
695# CONFIG_ATL1 is not set 630# CONFIG_ATL1 is not set
696 631CONFIG_NETDEV_10000=y
697#
698# Ethernet (10000 Mbit)
699#
700# CONFIG_CHELSIO_T1 is not set 632# CONFIG_CHELSIO_T1 is not set
701# CONFIG_CHELSIO_T3 is not set 633# CONFIG_CHELSIO_T3 is not set
702# CONFIG_IXGB is not set 634# CONFIG_IXGB is not set
703# CONFIG_S2IO is not set 635# CONFIG_S2IO is not set
704# CONFIG_MYRI10GE is not set 636# CONFIG_MYRI10GE is not set
705# CONFIG_NETXEN_NIC is not set 637# CONFIG_NETXEN_NIC is not set
706 638# CONFIG_MLX4_CORE is not set
707#
708# Token Ring devices
709#
710# CONFIG_TR is not set 639# CONFIG_TR is not set
711 640
712# 641#
713# Wireless LAN (non-hamradio) 642# Wireless LAN
714#
715CONFIG_NET_RADIO=y
716# CONFIG_NET_WIRELESS_RTNETLINK is not set
717
718#
719# Obsolete Wireless cards support (pre-802.11)
720#
721# CONFIG_STRIP is not set
722
723#
724# Wireless 802.11b ISA/PCI cards support
725#
726# CONFIG_IPW2100 is not set
727# CONFIG_IPW2200 is not set
728# CONFIG_HERMES is not set
729# CONFIG_ATMEL is not set
730
731#
732# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
733#
734# CONFIG_PRISM54 is not set
735# CONFIG_HOSTAP is not set
736CONFIG_NET_WIRELESS=y
737
738#
739# Wan interfaces
740# 643#
644# CONFIG_WLAN_PRE80211 is not set
645# CONFIG_WLAN_80211 is not set
741# CONFIG_WAN is not set 646# CONFIG_WAN is not set
742# CONFIG_FDDI is not set 647# CONFIG_FDDI is not set
743# CONFIG_HIPPI is not set 648# CONFIG_HIPPI is not set
@@ -789,6 +694,7 @@ CONFIG_KEYBOARD_ATKBD=y
789# CONFIG_KEYBOARD_STOWAWAY is not set 694# CONFIG_KEYBOARD_STOWAWAY is not set
790# CONFIG_INPUT_MOUSE is not set 695# CONFIG_INPUT_MOUSE is not set
791# CONFIG_INPUT_JOYSTICK is not set 696# CONFIG_INPUT_JOYSTICK is not set
697# CONFIG_INPUT_TABLET is not set
792# CONFIG_INPUT_TOUCHSCREEN is not set 698# CONFIG_INPUT_TOUCHSCREEN is not set
793# CONFIG_INPUT_MISC is not set 699# CONFIG_INPUT_MISC is not set
794 700
@@ -831,14 +737,8 @@ CONFIG_LEGACY_PTY_COUNT=256
831# IPMI 737# IPMI
832# 738#
833# CONFIG_IPMI_HANDLER is not set 739# CONFIG_IPMI_HANDLER is not set
834
835#
836# Watchdog Cards
837#
838# CONFIG_WATCHDOG is not set 740# CONFIG_WATCHDOG is not set
839CONFIG_HW_RANDOM=y 741CONFIG_HW_RANDOM=y
840# CONFIG_GEN_RTC is not set
841# CONFIG_DTLK is not set
842# CONFIG_R3964 is not set 742# CONFIG_R3964 is not set
843# CONFIG_APPLICOM is not set 743# CONFIG_APPLICOM is not set
844# CONFIG_DRM is not set 744# CONFIG_DRM is not set
@@ -848,10 +748,7 @@ CONFIG_HW_RANDOM=y
848# TPM devices 748# TPM devices
849# 749#
850# CONFIG_TCG_TPM is not set 750# CONFIG_TCG_TPM is not set
851 751CONFIG_DEVPORT=y
852#
853# I2C support
854#
855# CONFIG_I2C is not set 752# CONFIG_I2C is not set
856 753
857# 754#
@@ -864,16 +761,15 @@ CONFIG_HW_RANDOM=y
864# Dallas's 1-wire bus 761# Dallas's 1-wire bus
865# 762#
866# CONFIG_W1 is not set 763# CONFIG_W1 is not set
867
868#
869# Hardware Monitoring support
870#
871CONFIG_HWMON=y 764CONFIG_HWMON=y
872# CONFIG_HWMON_VID is not set 765# CONFIG_HWMON_VID is not set
873# CONFIG_SENSORS_ABITUGURU is not set 766# CONFIG_SENSORS_ABITUGURU is not set
874# CONFIG_SENSORS_F71805F is not set 767# CONFIG_SENSORS_F71805F is not set
875# CONFIG_SENSORS_PC87427 is not set 768# CONFIG_SENSORS_PC87427 is not set
769# CONFIG_SENSORS_SMSC47M1 is not set
770# CONFIG_SENSORS_SMSC47B397 is not set
876# CONFIG_SENSORS_VT1211 is not set 771# CONFIG_SENSORS_VT1211 is not set
772# CONFIG_SENSORS_W83627HF is not set
877# CONFIG_HWMON_DEBUG_CHIP is not set 773# CONFIG_HWMON_DEBUG_CHIP is not set
878 774
879# 775#
@@ -885,22 +781,30 @@ CONFIG_HWMON=y
885# Multimedia devices 781# Multimedia devices
886# 782#
887# CONFIG_VIDEO_DEV is not set 783# CONFIG_VIDEO_DEV is not set
784# CONFIG_DVB_CORE is not set
785# CONFIG_DAB is not set
888 786
889# 787#
890# Digital Video Broadcasting Devices 788# Graphics support
891# 789#
892# CONFIG_DVB is not set 790# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
893 791
894# 792#
895# Graphics support 793# Display device support
896# 794#
897# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 795# CONFIG_DISPLAY_SUPPORT is not set
796# CONFIG_VGASTATE is not set
898CONFIG_FB=y 797CONFIG_FB=y
899# CONFIG_FIRMWARE_EDID is not set 798# CONFIG_FIRMWARE_EDID is not set
900# CONFIG_FB_DDC is not set 799# CONFIG_FB_DDC is not set
901# CONFIG_FB_CFB_FILLRECT is not set 800# CONFIG_FB_CFB_FILLRECT is not set
902# CONFIG_FB_CFB_COPYAREA is not set 801# CONFIG_FB_CFB_COPYAREA is not set
903# CONFIG_FB_CFB_IMAGEBLIT is not set 802# CONFIG_FB_CFB_IMAGEBLIT is not set
803# CONFIG_FB_SYS_FILLRECT is not set
804# CONFIG_FB_SYS_COPYAREA is not set
805# CONFIG_FB_SYS_IMAGEBLIT is not set
806# CONFIG_FB_SYS_FOPS is not set
807CONFIG_FB_DEFERRED_IO=y
904# CONFIG_FB_SVGALIB is not set 808# CONFIG_FB_SVGALIB is not set
905# CONFIG_FB_MACMODES is not set 809# CONFIG_FB_MACMODES is not set
906# CONFIG_FB_BACKLIGHT is not set 810# CONFIG_FB_BACKLIGHT is not set
@@ -908,7 +812,7 @@ CONFIG_FB=y
908# CONFIG_FB_TILEBLITTING is not set 812# CONFIG_FB_TILEBLITTING is not set
909 813
910# 814#
911# Frambuffer hardware drivers 815# Frame buffer hardware drivers
912# 816#
913# CONFIG_FB_CIRRUS is not set 817# CONFIG_FB_CIRRUS is not set
914# CONFIG_FB_PM2 is not set 818# CONFIG_FB_PM2 is not set
@@ -930,12 +834,11 @@ CONFIG_FB=y
930# CONFIG_FB_KYRO is not set 834# CONFIG_FB_KYRO is not set
931# CONFIG_FB_3DFX is not set 835# CONFIG_FB_3DFX is not set
932# CONFIG_FB_VOODOO1 is not set 836# CONFIG_FB_VOODOO1 is not set
837# CONFIG_FB_VT8623 is not set
933# CONFIG_FB_TRIDENT is not set 838# CONFIG_FB_TRIDENT is not set
839# CONFIG_FB_ARK is not set
840# CONFIG_FB_PM3 is not set
934# CONFIG_FB_VIRTUAL is not set 841# CONFIG_FB_VIRTUAL is not set
935
936#
937# Logo configuration
938#
939# CONFIG_LOGO is not set 842# CONFIG_LOGO is not set
940 843
941# 844#
@@ -952,13 +855,10 @@ CONFIG_SOUND=m
952# Open Sound System 855# Open Sound System
953# 856#
954CONFIG_SOUND_PRIME=m 857CONFIG_SOUND_PRIME=m
955# CONFIG_OBSOLETE_OSS is not set 858# CONFIG_OSS_OBSOLETE is not set
956# CONFIG_SOUND_BT878 is not set
957# CONFIG_SOUND_ICH is not set
958# CONFIG_SOUND_TRIDENT is not set 859# CONFIG_SOUND_TRIDENT is not set
959# CONFIG_SOUND_MSNDCLAS is not set 860# CONFIG_SOUND_MSNDCLAS is not set
960# CONFIG_SOUND_MSNDPIN is not set 861# CONFIG_SOUND_MSNDPIN is not set
961# CONFIG_SOUND_VIA82CXXX is not set
962 862
963# 863#
964# HID Devices 864# HID Devices
@@ -982,10 +882,6 @@ CONFIG_USB_ARCH_HAS_EHCI=y
982# USB Gadget Support 882# USB Gadget Support
983# 883#
984# CONFIG_USB_GADGET is not set 884# CONFIG_USB_GADGET is not set
985
986#
987# MMC/SD Card support
988#
989# CONFIG_MMC is not set 885# CONFIG_MMC is not set
990 886
991# 887#
@@ -1026,18 +922,30 @@ CONFIG_RTC_INTF_SYSFS=y
1026CONFIG_RTC_INTF_PROC=y 922CONFIG_RTC_INTF_PROC=y
1027CONFIG_RTC_INTF_DEV=y 923CONFIG_RTC_INTF_DEV=y
1028# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set 924# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
925# CONFIG_RTC_DRV_TEST is not set
926
927#
928# I2C RTC drivers
929#
1029 930
1030# 931#
1031# RTC drivers 932# SPI RTC drivers
933#
934
935#
936# Platform RTC drivers
1032# 937#
1033# CONFIG_RTC_DRV_DS1553 is not set 938# CONFIG_RTC_DRV_DS1553 is not set
1034# CONFIG_RTC_DRV_DS1742 is not set 939# CONFIG_RTC_DRV_DS1742 is not set
1035# CONFIG_RTC_DRV_M48T86 is not set 940# CONFIG_RTC_DRV_M48T86 is not set
1036CONFIG_RTC_DRV_SH=y
1037# CONFIG_RTC_DRV_TEST is not set
1038# CONFIG_RTC_DRV_V3020 is not set 941# CONFIG_RTC_DRV_V3020 is not set
1039 942
1040# 943#
944# on-CPU RTC drivers
945#
946CONFIG_RTC_DRV_SH=y
947
948#
1041# DMA Engine support 949# DMA Engine support
1042# 950#
1043# CONFIG_DMA_ENGINE is not set 951# CONFIG_DMA_ENGINE is not set
@@ -1051,14 +959,6 @@ CONFIG_RTC_DRV_SH=y
1051# 959#
1052 960
1053# 961#
1054# Auxiliary Display support
1055#
1056
1057#
1058# Virtualization
1059#
1060
1061#
1062# File systems 962# File systems
1063# 963#
1064CONFIG_EXT2_FS=y 964CONFIG_EXT2_FS=y
@@ -1157,6 +1057,7 @@ CONFIG_EXPORTFS=y
1157CONFIG_NFS_COMMON=y 1057CONFIG_NFS_COMMON=y
1158CONFIG_SUNRPC=y 1058CONFIG_SUNRPC=y
1159CONFIG_SUNRPC_GSS=y 1059CONFIG_SUNRPC_GSS=y
1060# CONFIG_SUNRPC_BIND34 is not set
1160CONFIG_RPCSEC_GSS_KRB5=y 1061CONFIG_RPCSEC_GSS_KRB5=y
1161# CONFIG_RPCSEC_GSS_SPKM3 is not set 1062# CONFIG_RPCSEC_GSS_SPKM3 is not set
1162# CONFIG_SMB_FS is not set 1063# CONFIG_SMB_FS is not set
@@ -1239,7 +1140,6 @@ CONFIG_DEBUG_FS=y
1239# CONFIG_HEADERS_CHECK is not set 1140# CONFIG_HEADERS_CHECK is not set
1240CONFIG_DEBUG_KERNEL=y 1141CONFIG_DEBUG_KERNEL=y
1241# CONFIG_DEBUG_SHIRQ is not set 1142# CONFIG_DEBUG_SHIRQ is not set
1242CONFIG_LOG_BUF_SHIFT=14
1243# CONFIG_DETECT_SOFTLOCKUP is not set 1143# CONFIG_DETECT_SOFTLOCKUP is not set
1244# CONFIG_SCHEDSTATS is not set 1144# CONFIG_SCHEDSTATS is not set
1245# CONFIG_TIMER_STATS is not set 1145# CONFIG_TIMER_STATS is not set
@@ -1266,6 +1166,7 @@ CONFIG_FORCED_INLINING=y
1266CONFIG_SH_STANDARD_BIOS=y 1166CONFIG_SH_STANDARD_BIOS=y
1267# CONFIG_EARLY_SCIF_CONSOLE is not set 1167# CONFIG_EARLY_SCIF_CONSOLE is not set
1268CONFIG_EARLY_PRINTK=y 1168CONFIG_EARLY_PRINTK=y
1169# CONFIG_DEBUG_BOOTMEM is not set
1269CONFIG_DEBUG_STACKOVERFLOW=y 1170CONFIG_DEBUG_STACKOVERFLOW=y
1270CONFIG_DEBUG_STACK_USAGE=y 1171CONFIG_DEBUG_STACK_USAGE=y
1271# CONFIG_4KSTACKS is not set 1172# CONFIG_4KSTACKS is not set
@@ -1300,6 +1201,7 @@ CONFIG_CRYPTO_ECB=m
1300CONFIG_CRYPTO_CBC=y 1201CONFIG_CRYPTO_CBC=y
1301CONFIG_CRYPTO_PCBC=m 1202CONFIG_CRYPTO_PCBC=m
1302# CONFIG_CRYPTO_LRW is not set 1203# CONFIG_CRYPTO_LRW is not set
1204# CONFIG_CRYPTO_CRYPTD is not set
1303CONFIG_CRYPTO_DES=y 1205CONFIG_CRYPTO_DES=y
1304# CONFIG_CRYPTO_FCRYPT is not set 1206# CONFIG_CRYPTO_FCRYPT is not set
1305# CONFIG_CRYPTO_BLOWFISH is not set 1207# CONFIG_CRYPTO_BLOWFISH is not set
@@ -1328,7 +1230,9 @@ CONFIG_CRYPTO_DES=y
1328CONFIG_BITREVERSE=y 1230CONFIG_BITREVERSE=y
1329# CONFIG_CRC_CCITT is not set 1231# CONFIG_CRC_CCITT is not set
1330# CONFIG_CRC16 is not set 1232# CONFIG_CRC16 is not set
1233# CONFIG_CRC_ITU_T is not set
1331CONFIG_CRC32=y 1234CONFIG_CRC32=y
1332# CONFIG_LIBCRC32C is not set 1235# CONFIG_LIBCRC32C is not set
1333CONFIG_HAS_IOMEM=y 1236CONFIG_HAS_IOMEM=y
1334CONFIG_HAS_IOPORT=y 1237CONFIG_HAS_IOPORT=y
1238CONFIG_HAS_DMA=y
diff --git a/arch/sh/configs/se7206_defconfig b/arch/sh/configs/se7206_defconfig
index 87ab9080fd1d..f2f2a3c9c32d 100644
--- a/arch/sh/configs/se7206_defconfig
+++ b/arch/sh/configs/se7206_defconfig
@@ -1,18 +1,22 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.19 3# Linux kernel version: 2.6.22-rc4
4# Wed Dec 6 14:40:15 2006 4# Fri Jun 15 19:37:46 2007
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 7CONFIG_RWSEM_GENERIC_SPINLOCK=y
8CONFIG_GENERIC_BUG=y
8CONFIG_GENERIC_FIND_NEXT_BIT=y 9CONFIG_GENERIC_FIND_NEXT_BIT=y
9CONFIG_GENERIC_HWEIGHT=y 10CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_HARDIRQS=y 11CONFIG_GENERIC_HARDIRQS=y
11CONFIG_GENERIC_IRQ_PROBE=y 12CONFIG_GENERIC_IRQ_PROBE=y
12CONFIG_GENERIC_CALIBRATE_DELAY=y 13CONFIG_GENERIC_CALIBRATE_DELAY=y
13# CONFIG_GENERIC_TIME is not set 14# CONFIG_GENERIC_TIME is not set
15# CONFIG_GENERIC_CLOCKEVENTS is not set
14CONFIG_STACKTRACE_SUPPORT=y 16CONFIG_STACKTRACE_SUPPORT=y
15CONFIG_LOCKDEP_SUPPORT=y 17CONFIG_LOCKDEP_SUPPORT=y
18# CONFIG_ARCH_HAS_ILOG2_U32 is not set
19# CONFIG_ARCH_HAS_ILOG2_U64 is not set
16CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 20CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
17 21
18# 22#
@@ -34,8 +38,10 @@ CONFIG_LOCALVERSION=""
34# CONFIG_UTS_NS is not set 38# CONFIG_UTS_NS is not set
35# CONFIG_AUDIT is not set 39# CONFIG_AUDIT is not set
36# CONFIG_IKCONFIG is not set 40# CONFIG_IKCONFIG is not set
41CONFIG_LOG_BUF_SHIFT=14
42CONFIG_SYSFS_DEPRECATED=y
37# CONFIG_RELAY is not set 43# CONFIG_RELAY is not set
38CONFIG_INITRAMFS_SOURCE="" 44# CONFIG_BLK_DEV_INITRD is not set
39CONFIG_CC_OPTIMIZE_FOR_SIZE=y 45CONFIG_CC_OPTIMIZE_FOR_SIZE=y
40CONFIG_SYSCTL=y 46CONFIG_SYSCTL=y
41CONFIG_EMBEDDED=y 47CONFIG_EMBEDDED=y
@@ -48,12 +54,17 @@ CONFIG_BUG=y
48# CONFIG_ELF_CORE is not set 54# CONFIG_ELF_CORE is not set
49# CONFIG_BASE_FULL is not set 55# CONFIG_BASE_FULL is not set
50# CONFIG_FUTEX is not set 56# CONFIG_FUTEX is not set
57CONFIG_ANON_INODES=y
51# CONFIG_EPOLL is not set 58# CONFIG_EPOLL is not set
52CONFIG_SLAB=y 59CONFIG_SIGNALFD=y
60CONFIG_TIMERFD=y
61CONFIG_EVENTFD=y
53# CONFIG_VM_EVENT_COUNTERS is not set 62# CONFIG_VM_EVENT_COUNTERS is not set
63CONFIG_SLAB=y
64# CONFIG_SLUB is not set
65# CONFIG_SLOB is not set
54CONFIG_TINY_SHMEM=y 66CONFIG_TINY_SHMEM=y
55CONFIG_BASE_SMALL=1 67CONFIG_BASE_SMALL=1
56# CONFIG_SLOB is not set
57 68
58# 69#
59# Loadable module support 70# Loadable module support
@@ -83,53 +94,10 @@ CONFIG_DEFAULT_IOSCHED="noop"
83# 94#
84# System type 95# System type
85# 96#
86# CONFIG_SH_SOLUTION_ENGINE is not set
87# CONFIG_SH_7751_SOLUTION_ENGINE is not set
88# CONFIG_SH_7300_SOLUTION_ENGINE is not set
89# CONFIG_SH_7343_SOLUTION_ENGINE is not set
90# CONFIG_SH_73180_SOLUTION_ENGINE is not set
91# CONFIG_SH_7751_SYSTEMH is not set
92# CONFIG_SH_HP6XX is not set
93# CONFIG_SH_EC3104 is not set
94# CONFIG_SH_SATURN is not set
95# CONFIG_SH_DREAMCAST is not set
96# CONFIG_SH_BIGSUR is not set
97# CONFIG_SH_MPC1211 is not set
98# CONFIG_SH_SH03 is not set
99# CONFIG_SH_SECUREEDGE5410 is not set
100# CONFIG_SH_HS7751RVOIP is not set
101# CONFIG_SH_7710VOIPGW is not set
102# CONFIG_SH_RTS7751R2D is not set
103# CONFIG_SH_R7780RP is not set
104# CONFIG_SH_EDOSK7705 is not set
105# CONFIG_SH_SH4202_MICRODEV is not set
106# CONFIG_SH_LANDISK is not set
107# CONFIG_SH_TITAN is not set
108# CONFIG_SH_SHMIN is not set
109CONFIG_SH_7206_SOLUTION_ENGINE=y
110# CONFIG_SH_7619_SOLUTION_ENGINE is not set
111# CONFIG_SH_UNKNOWN is not set
112
113#
114# Processor selection
115#
116CONFIG_CPU_SH2=y 97CONFIG_CPU_SH2=y
117CONFIG_CPU_SH2A=y 98CONFIG_CPU_SH2A=y
118
119#
120# SH-2 Processor Support
121#
122# CONFIG_CPU_SUBTYPE_SH7604 is not set
123# CONFIG_CPU_SUBTYPE_SH7619 is not set 99# CONFIG_CPU_SUBTYPE_SH7619 is not set
124
125#
126# SH-2A Processor Support
127#
128CONFIG_CPU_SUBTYPE_SH7206=y 100CONFIG_CPU_SUBTYPE_SH7206=y
129
130#
131# SH-3 Processor Support
132#
133# CONFIG_CPU_SUBTYPE_SH7300 is not set 101# CONFIG_CPU_SUBTYPE_SH7300 is not set
134# CONFIG_CPU_SUBTYPE_SH7705 is not set 102# CONFIG_CPU_SUBTYPE_SH7705 is not set
135# CONFIG_CPU_SUBTYPE_SH7706 is not set 103# CONFIG_CPU_SUBTYPE_SH7706 is not set
@@ -137,10 +105,7 @@ CONFIG_CPU_SUBTYPE_SH7206=y
137# CONFIG_CPU_SUBTYPE_SH7708 is not set 105# CONFIG_CPU_SUBTYPE_SH7708 is not set
138# CONFIG_CPU_SUBTYPE_SH7709 is not set 106# CONFIG_CPU_SUBTYPE_SH7709 is not set
139# CONFIG_CPU_SUBTYPE_SH7710 is not set 107# CONFIG_CPU_SUBTYPE_SH7710 is not set
140 108# CONFIG_CPU_SUBTYPE_SH7712 is not set
141#
142# SH-4 Processor Support
143#
144# CONFIG_CPU_SUBTYPE_SH7750 is not set 109# CONFIG_CPU_SUBTYPE_SH7750 is not set
145# CONFIG_CPU_SUBTYPE_SH7091 is not set 110# CONFIG_CPU_SUBTYPE_SH7091 is not set
146# CONFIG_CPU_SUBTYPE_SH7750R is not set 111# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -149,32 +114,28 @@ CONFIG_CPU_SUBTYPE_SH7206=y
149# CONFIG_CPU_SUBTYPE_SH7751R is not set 114# CONFIG_CPU_SUBTYPE_SH7751R is not set
150# CONFIG_CPU_SUBTYPE_SH7760 is not set 115# CONFIG_CPU_SUBTYPE_SH7760 is not set
151# CONFIG_CPU_SUBTYPE_SH4_202 is not set 116# CONFIG_CPU_SUBTYPE_SH4_202 is not set
152
153#
154# ST40 Processor Support
155#
156# CONFIG_CPU_SUBTYPE_ST40STB1 is not set 117# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
157# CONFIG_CPU_SUBTYPE_ST40GX1 is not set 118# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
158
159#
160# SH-4A Processor Support
161#
162# CONFIG_CPU_SUBTYPE_SH7770 is not set 119# CONFIG_CPU_SUBTYPE_SH7770 is not set
163# CONFIG_CPU_SUBTYPE_SH7780 is not set 120# CONFIG_CPU_SUBTYPE_SH7780 is not set
164# CONFIG_CPU_SUBTYPE_SH7785 is not set 121# CONFIG_CPU_SUBTYPE_SH7785 is not set
165
166#
167# SH4AL-DSP Processor Support
168#
169# CONFIG_CPU_SUBTYPE_SH73180 is not set 122# CONFIG_CPU_SUBTYPE_SH73180 is not set
170# CONFIG_CPU_SUBTYPE_SH7343 is not set 123# CONFIG_CPU_SUBTYPE_SH7343 is not set
124# CONFIG_CPU_SUBTYPE_SH7722 is not set
171 125
172# 126#
173# Memory management options 127# Memory management options
174# 128#
129CONFIG_QUICKLIST=y
175CONFIG_PAGE_OFFSET=0x00000000 130CONFIG_PAGE_OFFSET=0x00000000
176CONFIG_MEMORY_START=0x0c000000 131CONFIG_MEMORY_START=0x0c000000
177CONFIG_MEMORY_SIZE=0x04000000 132CONFIG_MEMORY_SIZE=0x04000000
133CONFIG_ARCH_FLATMEM_ENABLE=y
134CONFIG_ARCH_SPARSEMEM_ENABLE=y
135CONFIG_ARCH_SPARSEMEM_DEFAULT=y
136CONFIG_MAX_ACTIVE_REGIONS=1
137CONFIG_ARCH_POPULATES_NODE_MAP=y
138CONFIG_ARCH_SELECT_MEMORY_MODEL=y
178CONFIG_PAGE_SIZE_4KB=y 139CONFIG_PAGE_SIZE_4KB=y
179# CONFIG_PAGE_SIZE_8KB is not set 140# CONFIG_PAGE_SIZE_8KB is not set
180# CONFIG_PAGE_SIZE_64KB is not set 141# CONFIG_PAGE_SIZE_64KB is not set
@@ -184,35 +145,42 @@ CONFIG_FLATMEM_MANUAL=y
184# CONFIG_SPARSEMEM_MANUAL is not set 145# CONFIG_SPARSEMEM_MANUAL is not set
185CONFIG_FLATMEM=y 146CONFIG_FLATMEM=y
186CONFIG_FLAT_NODE_MEM_MAP=y 147CONFIG_FLAT_NODE_MEM_MAP=y
187# CONFIG_SPARSEMEM_STATIC is not set 148CONFIG_SPARSEMEM_STATIC=y
188CONFIG_SPLIT_PTLOCK_CPUS=4 149CONFIG_SPLIT_PTLOCK_CPUS=4
189# CONFIG_RESOURCES_64BIT is not set 150# CONFIG_RESOURCES_64BIT is not set
151CONFIG_ZONE_DMA_FLAG=0
152CONFIG_NR_QUICK=2
190 153
191# 154#
192# Cache configuration 155# Cache configuration
193# 156#
194# CONFIG_SH_DIRECT_MAPPED is not set 157# CONFIG_SH_DIRECT_MAPPED is not set
195# CONFIG_SH_WRITETHROUGH is not set 158# CONFIG_SH_WRITETHROUGH is not set
196# CONFIG_SH_OCRAM is not set
197 159
198# 160#
199# Processor features 161# Processor features
200# 162#
201# CONFIG_CPU_LITTLE_ENDIAN is not set 163# CONFIG_CPU_LITTLE_ENDIAN is not set
202CONFIG_CPU_BIG_ENDIAN=y 164CONFIG_CPU_BIG_ENDIAN=y
203# CONFIG_SH_FPU is not set
204# CONFIG_SH_FPU_EMU is not set 165# CONFIG_SH_FPU_EMU is not set
205# CONFIG_SH_DSP is not set 166# CONFIG_SH_DSP is not set
167CONFIG_CPU_HAS_IPR_IRQ=y
168
169#
170# Board support
171#
172CONFIG_SOLUTION_ENGINE=y
173CONFIG_SH_7206_SOLUTION_ENGINE=y
206 174
207# 175#
208# Timer support 176# Timer and clock configuration
209# 177#
210CONFIG_SH_CMT=y 178CONFIG_SH_CMT=y
211# CONFIG_SH_MTU2 is not set 179# CONFIG_SH_MTU2 is not set
212CONFIG_SH_TIMER_IRQ=140 180CONFIG_SH_TIMER_IRQ=140
213# CONFIG_NO_IDLE_HZ is not set
214CONFIG_SH_PCLK_FREQ=33333333 181CONFIG_SH_PCLK_FREQ=33333333
215CONFIG_SH_CLK_MD=6 182CONFIG_SH_CLK_MD=6
183# CONFIG_TICK_ONESHOT is not set
216 184
217# 185#
218# CPU Frequency scaling 186# CPU Frequency scaling
@@ -227,11 +195,11 @@ CONFIG_SH_CLK_MD=6
227# 195#
228# Companion Chips 196# Companion Chips
229# 197#
230# CONFIG_HD6446X_SERIES is not set
231 198
232# 199#
233# Additional SuperH Device Drivers 200# Additional SuperH Device Drivers
234# 201#
202# CONFIG_HEARTBEAT is not set
235# CONFIG_PUSH_SWITCH is not set 203# CONFIG_PUSH_SWITCH is not set
236 204
237# 205#
@@ -239,10 +207,11 @@ CONFIG_SH_CLK_MD=6
239# 207#
240CONFIG_HZ_100=y 208CONFIG_HZ_100=y
241# CONFIG_HZ_250 is not set 209# CONFIG_HZ_250 is not set
210# CONFIG_HZ_300 is not set
242# CONFIG_HZ_1000 is not set 211# CONFIG_HZ_1000 is not set
243CONFIG_HZ=100 212CONFIG_HZ=100
244# CONFIG_KEXEC is not set 213# CONFIG_KEXEC is not set
245# CONFIG_SMP is not set 214# CONFIG_CRASH_DUMP is not set
246CONFIG_PREEMPT_NONE=y 215CONFIG_PREEMPT_NONE=y
247# CONFIG_PREEMPT_VOLUNTARY is not set 216# CONFIG_PREEMPT_VOLUNTARY is not set
248# CONFIG_PREEMPT is not set 217# CONFIG_PREEMPT is not set
@@ -252,23 +221,18 @@ CONFIG_PREEMPT_NONE=y
252# 221#
253CONFIG_ZERO_PAGE_OFFSET=0x00001000 222CONFIG_ZERO_PAGE_OFFSET=0x00001000
254CONFIG_BOOT_LINK_OFFSET=0x00800000 223CONFIG_BOOT_LINK_OFFSET=0x00800000
255# CONFIG_UBC_WAKEUP is not set
256# CONFIG_CMDLINE_BOOL is not set 224# CONFIG_CMDLINE_BOOL is not set
257 225
258# 226#
259# Bus options 227# Bus options
260# 228#
261# CONFIG_PCI is not set 229# CONFIG_ARCH_SUPPORTS_MSI is not set
262 230
263# 231#
264# PCCARD (PCMCIA/CardBus) support 232# PCCARD (PCMCIA/CardBus) support
265# 233#
266 234
267# 235#
268# PCI Hotplug Support
269#
270
271#
272# Executable file formats 236# Executable file formats
273# 237#
274CONFIG_BINFMT_FLAT=y 238CONFIG_BINFMT_FLAT=y
@@ -277,11 +241,6 @@ CONFIG_BINFMT_ZFLAT=y
277# CONFIG_BINFMT_MISC is not set 241# CONFIG_BINFMT_MISC is not set
278 242
279# 243#
280# Power management options (EXPERIMENTAL)
281#
282# CONFIG_PM is not set
283
284#
285# Networking 244# Networking
286# 245#
287CONFIG_NET=y 246CONFIG_NET=y
@@ -289,7 +248,6 @@ CONFIG_NET=y
289# 248#
290# Networking options 249# Networking options
291# 250#
292# CONFIG_NETDEBUG is not set
293# CONFIG_PACKET is not set 251# CONFIG_PACKET is not set
294# CONFIG_UNIX is not set 252# CONFIG_UNIX is not set
295# CONFIG_NET_KEY is not set 253# CONFIG_NET_KEY is not set
@@ -314,25 +272,14 @@ CONFIG_IP_FIB_HASH=y
314# CONFIG_TCP_CONG_ADVANCED is not set 272# CONFIG_TCP_CONG_ADVANCED is not set
315CONFIG_TCP_CONG_CUBIC=y 273CONFIG_TCP_CONG_CUBIC=y
316CONFIG_DEFAULT_TCP_CONG="cubic" 274CONFIG_DEFAULT_TCP_CONG="cubic"
275# CONFIG_TCP_MD5SIG is not set
317# CONFIG_IPV6 is not set 276# CONFIG_IPV6 is not set
318# CONFIG_INET6_XFRM_TUNNEL is not set 277# CONFIG_INET6_XFRM_TUNNEL is not set
319# CONFIG_INET6_TUNNEL is not set 278# CONFIG_INET6_TUNNEL is not set
320# CONFIG_NETWORK_SECMARK is not set 279# CONFIG_NETWORK_SECMARK is not set
321# CONFIG_NETFILTER is not set 280# CONFIG_NETFILTER is not set
322
323#
324# DCCP Configuration (EXPERIMENTAL)
325#
326# CONFIG_IP_DCCP is not set 281# CONFIG_IP_DCCP is not set
327
328#
329# SCTP Configuration (EXPERIMENTAL)
330#
331# CONFIG_IP_SCTP is not set 282# CONFIG_IP_SCTP is not set
332
333#
334# TIPC Configuration (EXPERIMENTAL)
335#
336# CONFIG_TIPC is not set 283# CONFIG_TIPC is not set
337# CONFIG_ATM is not set 284# CONFIG_ATM is not set
338# CONFIG_BRIDGE is not set 285# CONFIG_BRIDGE is not set
@@ -358,7 +305,16 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
358# CONFIG_HAMRADIO is not set 305# CONFIG_HAMRADIO is not set
359# CONFIG_IRDA is not set 306# CONFIG_IRDA is not set
360# CONFIG_BT is not set 307# CONFIG_BT is not set
308# CONFIG_AF_RXRPC is not set
309
310#
311# Wireless
312#
313# CONFIG_CFG80211 is not set
314# CONFIG_WIRELESS_EXT is not set
315# CONFIG_MAC80211 is not set
361# CONFIG_IEEE80211 is not set 316# CONFIG_IEEE80211 is not set
317# CONFIG_RFKILL is not set
362 318
363# 319#
364# Device Drivers 320# Device Drivers
@@ -375,10 +331,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
375# Connector - unified userspace <-> kernelspace linker 331# Connector - unified userspace <-> kernelspace linker
376# 332#
377# CONFIG_CONNECTOR is not set 333# CONFIG_CONNECTOR is not set
378
379#
380# Memory Technology Devices (MTD)
381#
382CONFIG_MTD=y 334CONFIG_MTD=y
383# CONFIG_MTD_DEBUG is not set 335# CONFIG_MTD_DEBUG is not set
384CONFIG_MTD_CONCAT=y 336CONFIG_MTD_CONCAT=y
@@ -393,6 +345,7 @@ CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
393# User Modules And Translation Layers 345# User Modules And Translation Layers
394# 346#
395CONFIG_MTD_CHAR=y 347CONFIG_MTD_CHAR=y
348CONFIG_MTD_BLKDEVS=y
396CONFIG_MTD_BLOCK=y 349CONFIG_MTD_BLOCK=y
397# CONFIG_FTL is not set 350# CONFIG_FTL is not set
398# CONFIG_NFTL is not set 351# CONFIG_NFTL is not set
@@ -424,7 +377,6 @@ CONFIG_MTD_CFI_UTIL=y
424# CONFIG_MTD_RAM is not set 377# CONFIG_MTD_RAM is not set
425# CONFIG_MTD_ROM is not set 378# CONFIG_MTD_ROM is not set
426# CONFIG_MTD_ABSENT is not set 379# CONFIG_MTD_ABSENT is not set
427# CONFIG_MTD_OBSOLETE_CHIPS is not set
428 380
429# 381#
430# Mapping drivers for chip access 382# Mapping drivers for chip access
@@ -452,16 +404,13 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=4
452# CONFIG_MTD_DOC2000 is not set 404# CONFIG_MTD_DOC2000 is not set
453# CONFIG_MTD_DOC2001 is not set 405# CONFIG_MTD_DOC2001 is not set
454# CONFIG_MTD_DOC2001PLUS is not set 406# CONFIG_MTD_DOC2001PLUS is not set
455
456#
457# NAND Flash Device Drivers
458#
459# CONFIG_MTD_NAND is not set 407# CONFIG_MTD_NAND is not set
408# CONFIG_MTD_ONENAND is not set
460 409
461# 410#
462# OneNAND Flash Device Drivers 411# UBI - Unsorted block images
463# 412#
464# CONFIG_MTD_ONENAND is not set 413# CONFIG_MTD_UBI is not set
465 414
466# 415#
467# Parallel port support 416# Parallel port support
@@ -471,6 +420,7 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=4
471# 420#
472# Plug and Play support 421# Plug and Play support
473# 422#
423# CONFIG_PNPACPI is not set
474 424
475# 425#
476# Block devices 426# Block devices
@@ -479,18 +429,13 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=4
479# CONFIG_BLK_DEV_LOOP is not set 429# CONFIG_BLK_DEV_LOOP is not set
480# CONFIG_BLK_DEV_NBD is not set 430# CONFIG_BLK_DEV_NBD is not set
481# CONFIG_BLK_DEV_RAM is not set 431# CONFIG_BLK_DEV_RAM is not set
482# CONFIG_BLK_DEV_INITRD is not set
483# CONFIG_CDROM_PKTCDVD is not set 432# CONFIG_CDROM_PKTCDVD is not set
484# CONFIG_ATA_OVER_ETH is not set 433# CONFIG_ATA_OVER_ETH is not set
485 434
486# 435#
487# Misc devices 436# Misc devices
488# 437#
489# CONFIG_TIFM_CORE is not set 438# CONFIG_BLINK is not set
490
491#
492# ATA/ATAPI/MFM/RLL support
493#
494# CONFIG_IDE is not set 439# CONFIG_IDE is not set
495 440
496# 441#
@@ -499,10 +444,6 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=4
499# CONFIG_RAID_ATTRS is not set 444# CONFIG_RAID_ATTRS is not set
500# CONFIG_SCSI is not set 445# CONFIG_SCSI is not set
501# CONFIG_SCSI_NETLINK is not set 446# CONFIG_SCSI_NETLINK is not set
502
503#
504# Serial ATA (prod) and Parallel ATA (experimental) drivers
505#
506# CONFIG_ATA is not set 447# CONFIG_ATA is not set
507 448
508# 449#
@@ -511,19 +452,6 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=4
511# CONFIG_MD is not set 452# CONFIG_MD is not set
512 453
513# 454#
514# Fusion MPT device support
515#
516# CONFIG_FUSION is not set
517
518#
519# IEEE 1394 (FireWire) support
520#
521
522#
523# I2O device support
524#
525
526#
527# Network device support 455# Network device support
528# 456#
529CONFIG_NETDEVICES=y 457CONFIG_NETDEVICES=y
@@ -531,10 +459,6 @@ CONFIG_NETDEVICES=y
531# CONFIG_BONDING is not set 459# CONFIG_BONDING is not set
532# CONFIG_EQUALIZER is not set 460# CONFIG_EQUALIZER is not set
533# CONFIG_TUN is not set 461# CONFIG_TUN is not set
534
535#
536# PHY device support
537#
538# CONFIG_PHYLIB is not set 462# CONFIG_PHYLIB is not set
539 463
540# 464#
@@ -544,27 +468,14 @@ CONFIG_NET_ETHERNET=y
544CONFIG_MII=y 468CONFIG_MII=y
545# CONFIG_STNIC is not set 469# CONFIG_STNIC is not set
546CONFIG_SMC91X=y 470CONFIG_SMC91X=y
471CONFIG_NETDEV_1000=y
472CONFIG_NETDEV_10000=y
547 473
548# 474#
549# Ethernet (1000 Mbit) 475# Wireless LAN
550#
551
552#
553# Ethernet (10000 Mbit)
554#
555
556#
557# Token Ring devices
558#
559
560#
561# Wireless LAN (non-hamradio)
562#
563# CONFIG_NET_RADIO is not set
564
565#
566# Wan interfaces
567# 476#
477# CONFIG_WLAN_PRE80211 is not set
478# CONFIG_WLAN_80211 is not set
568# CONFIG_WAN is not set 479# CONFIG_WAN is not set
569# CONFIG_PPP is not set 480# CONFIG_PPP is not set
570# CONFIG_SLIP is not set 481# CONFIG_SLIP is not set
@@ -604,6 +515,7 @@ CONFIG_INPUT=y
604# CONFIG_INPUT_KEYBOARD is not set 515# CONFIG_INPUT_KEYBOARD is not set
605# CONFIG_INPUT_MOUSE is not set 516# CONFIG_INPUT_MOUSE is not set
606# CONFIG_INPUT_JOYSTICK is not set 517# CONFIG_INPUT_JOYSTICK is not set
518# CONFIG_INPUT_TABLET is not set
607# CONFIG_INPUT_TOUCHSCREEN is not set 519# CONFIG_INPUT_TOUCHSCREEN is not set
608# CONFIG_INPUT_MISC is not set 520# CONFIG_INPUT_MISC is not set
609 521
@@ -639,29 +551,15 @@ CONFIG_SERIAL_CORE_CONSOLE=y
639# IPMI 551# IPMI
640# 552#
641# CONFIG_IPMI_HANDLER is not set 553# CONFIG_IPMI_HANDLER is not set
642
643#
644# Watchdog Cards
645#
646# CONFIG_WATCHDOG is not set 554# CONFIG_WATCHDOG is not set
647# CONFIG_HW_RANDOM is not set 555# CONFIG_HW_RANDOM is not set
648# CONFIG_GEN_RTC is not set
649# CONFIG_DTLK is not set
650# CONFIG_R3964 is not set 556# CONFIG_R3964 is not set
651
652#
653# Ftape, the floppy tape device driver
654#
655# CONFIG_RAW_DRIVER is not set 557# CONFIG_RAW_DRIVER is not set
656 558
657# 559#
658# TPM devices 560# TPM devices
659# 561#
660# CONFIG_TCG_TPM is not set 562# CONFIG_TCG_TPM is not set
661
662#
663# I2C support
664#
665# CONFIG_I2C is not set 563# CONFIG_I2C is not set
666 564
667# 565#
@@ -674,27 +572,30 @@ CONFIG_SERIAL_CORE_CONSOLE=y
674# Dallas's 1-wire bus 572# Dallas's 1-wire bus
675# 573#
676# CONFIG_W1 is not set 574# CONFIG_W1 is not set
575# CONFIG_HWMON is not set
677 576
678# 577#
679# Hardware Monitoring support 578# Multifunction device drivers
680# 579#
681# CONFIG_HWMON is not set 580# CONFIG_MFD_SM501 is not set
682# CONFIG_HWMON_VID is not set
683 581
684# 582#
685# Multimedia devices 583# Multimedia devices
686# 584#
687# CONFIG_VIDEO_DEV is not set 585# CONFIG_VIDEO_DEV is not set
586# CONFIG_DVB_CORE is not set
587CONFIG_DAB=y
688 588
689# 589#
690# Digital Video Broadcasting Devices 590# Graphics support
691# 591#
692# CONFIG_DVB is not set 592# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
693 593
694# 594#
695# Graphics support 595# Display device support
696# 596#
697# CONFIG_FIRMWARE_EDID is not set 597# CONFIG_DISPLAY_SUPPORT is not set
598# CONFIG_VGASTATE is not set
698# CONFIG_FB is not set 599# CONFIG_FB is not set
699 600
700# 601#
@@ -703,6 +604,12 @@ CONFIG_SERIAL_CORE_CONSOLE=y
703# CONFIG_SOUND is not set 604# CONFIG_SOUND is not set
704 605
705# 606#
607# HID Devices
608#
609CONFIG_HID=y
610# CONFIG_HID_DEBUG is not set
611
612#
706# USB support 613# USB support
707# 614#
708# CONFIG_USB_ARCH_HAS_HCD is not set 615# CONFIG_USB_ARCH_HAS_HCD is not set
@@ -717,10 +624,6 @@ CONFIG_SERIAL_CORE_CONSOLE=y
717# USB Gadget Support 624# USB Gadget Support
718# 625#
719# CONFIG_USB_GADGET is not set 626# CONFIG_USB_GADGET is not set
720
721#
722# MMC/SD Card support
723#
724# CONFIG_MMC is not set 627# CONFIG_MMC is not set
725 628
726# 629#
@@ -802,7 +705,6 @@ CONFIG_PROC_FS=y
802CONFIG_PROC_SYSCTL=y 705CONFIG_PROC_SYSCTL=y
803# CONFIG_SYSFS is not set 706# CONFIG_SYSFS is not set
804# CONFIG_TMPFS is not set 707# CONFIG_TMPFS is not set
805# CONFIG_HUGETLBFS is not set
806# CONFIG_HUGETLB_PAGE is not set 708# CONFIG_HUGETLB_PAGE is not set
807CONFIG_RAMFS=y 709CONFIG_RAMFS=y
808 710
@@ -816,7 +718,6 @@ CONFIG_RAMFS=y
816# CONFIG_BEFS_FS is not set 718# CONFIG_BEFS_FS is not set
817# CONFIG_BFS_FS is not set 719# CONFIG_BFS_FS is not set
818# CONFIG_EFS_FS is not set 720# CONFIG_EFS_FS is not set
819# CONFIG_JFFS_FS is not set
820# CONFIG_JFFS2_FS is not set 721# CONFIG_JFFS2_FS is not set
821# CONFIG_CRAMFS is not set 722# CONFIG_CRAMFS is not set
822# CONFIG_VXFS_FS is not set 723# CONFIG_VXFS_FS is not set
@@ -849,6 +750,11 @@ CONFIG_MSDOS_PARTITION=y
849# CONFIG_NLS is not set 750# CONFIG_NLS is not set
850 751
851# 752#
753# Distributed Lock Manager
754#
755# CONFIG_DLM is not set
756
757#
852# Profiling support 758# Profiling support
853# 759#
854# CONFIG_PROFILING is not set 760# CONFIG_PROFILING is not set
@@ -861,14 +767,11 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
861# CONFIG_ENABLE_MUST_CHECK is not set 767# CONFIG_ENABLE_MUST_CHECK is not set
862# CONFIG_MAGIC_SYSRQ is not set 768# CONFIG_MAGIC_SYSRQ is not set
863# CONFIG_UNUSED_SYMBOLS is not set 769# CONFIG_UNUSED_SYMBOLS is not set
770# CONFIG_HEADERS_CHECK is not set
864# CONFIG_DEBUG_KERNEL is not set 771# CONFIG_DEBUG_KERNEL is not set
865CONFIG_LOG_BUF_SHIFT=14
866# CONFIG_DEBUG_BUGVERBOSE is not set 772# CONFIG_DEBUG_BUGVERBOSE is not set
867# CONFIG_UNWIND_INFO is not set
868# CONFIG_HEADERS_CHECK is not set
869# CONFIG_SH_STANDARD_BIOS is not set 773# CONFIG_SH_STANDARD_BIOS is not set
870# CONFIG_EARLY_SCIF_CONSOLE is not set 774# CONFIG_EARLY_SCIF_CONSOLE is not set
871# CONFIG_KGDB is not set
872 775
873# 776#
874# Security options 777# Security options
@@ -883,8 +786,13 @@ CONFIG_LOG_BUF_SHIFT=14
883# 786#
884# Library routines 787# Library routines
885# 788#
789CONFIG_BITREVERSE=y
886# CONFIG_CRC_CCITT is not set 790# CONFIG_CRC_CCITT is not set
887# CONFIG_CRC16 is not set 791# CONFIG_CRC16 is not set
792# CONFIG_CRC_ITU_T is not set
888CONFIG_CRC32=y 793CONFIG_CRC32=y
889# CONFIG_LIBCRC32C is not set 794# CONFIG_LIBCRC32C is not set
890CONFIG_ZLIB_INFLATE=y 795CONFIG_ZLIB_INFLATE=y
796CONFIG_HAS_IOMEM=y
797CONFIG_HAS_IOPORT=y
798CONFIG_HAS_DMA=y
diff --git a/arch/sh/configs/se7619_defconfig b/arch/sh/configs/se7619_defconfig
index 20ac7f4c53fb..3a3c3c1f507d 100644
--- a/arch/sh/configs/se7619_defconfig
+++ b/arch/sh/configs/se7619_defconfig
@@ -1,18 +1,22 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.19 3# Linux kernel version: 2.6.22-rc4
4# Wed Dec 6 16:35:36 2006 4# Fri Jun 15 19:43:06 2007
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 7CONFIG_RWSEM_GENERIC_SPINLOCK=y
8CONFIG_GENERIC_BUG=y
8CONFIG_GENERIC_FIND_NEXT_BIT=y 9CONFIG_GENERIC_FIND_NEXT_BIT=y
9CONFIG_GENERIC_HWEIGHT=y 10CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_HARDIRQS=y 11CONFIG_GENERIC_HARDIRQS=y
11CONFIG_GENERIC_IRQ_PROBE=y 12CONFIG_GENERIC_IRQ_PROBE=y
12CONFIG_GENERIC_CALIBRATE_DELAY=y 13CONFIG_GENERIC_CALIBRATE_DELAY=y
13# CONFIG_GENERIC_TIME is not set 14# CONFIG_GENERIC_TIME is not set
15# CONFIG_GENERIC_CLOCKEVENTS is not set
14CONFIG_STACKTRACE_SUPPORT=y 16CONFIG_STACKTRACE_SUPPORT=y
15CONFIG_LOCKDEP_SUPPORT=y 17CONFIG_LOCKDEP_SUPPORT=y
18# CONFIG_ARCH_HAS_ILOG2_U32 is not set
19# CONFIG_ARCH_HAS_ILOG2_U64 is not set
16CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 20CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
17 21
18# 22#
@@ -31,8 +35,10 @@ CONFIG_LOCALVERSION=""
31# CONFIG_BSD_PROCESS_ACCT is not set 35# CONFIG_BSD_PROCESS_ACCT is not set
32# CONFIG_UTS_NS is not set 36# CONFIG_UTS_NS is not set
33# CONFIG_IKCONFIG is not set 37# CONFIG_IKCONFIG is not set
38CONFIG_LOG_BUF_SHIFT=14
39CONFIG_SYSFS_DEPRECATED=y
34# CONFIG_RELAY is not set 40# CONFIG_RELAY is not set
35CONFIG_INITRAMFS_SOURCE="" 41# CONFIG_BLK_DEV_INITRD is not set
36CONFIG_CC_OPTIMIZE_FOR_SIZE=y 42CONFIG_CC_OPTIMIZE_FOR_SIZE=y
37CONFIG_SYSCTL=y 43CONFIG_SYSCTL=y
38CONFIG_EMBEDDED=y 44CONFIG_EMBEDDED=y
@@ -45,12 +51,17 @@ CONFIG_BUG=y
45# CONFIG_ELF_CORE is not set 51# CONFIG_ELF_CORE is not set
46# CONFIG_BASE_FULL is not set 52# CONFIG_BASE_FULL is not set
47# CONFIG_FUTEX is not set 53# CONFIG_FUTEX is not set
54CONFIG_ANON_INODES=y
48# CONFIG_EPOLL is not set 55# CONFIG_EPOLL is not set
49CONFIG_SLAB=y 56CONFIG_SIGNALFD=y
57CONFIG_TIMERFD=y
58CONFIG_EVENTFD=y
50# CONFIG_VM_EVENT_COUNTERS is not set 59# CONFIG_VM_EVENT_COUNTERS is not set
60CONFIG_SLAB=y
61# CONFIG_SLUB is not set
62# CONFIG_SLOB is not set
51CONFIG_TINY_SHMEM=y 63CONFIG_TINY_SHMEM=y
52CONFIG_BASE_SMALL=1 64CONFIG_BASE_SMALL=1
53# CONFIG_SLOB is not set
54 65
55# 66#
56# Loadable module support 67# Loadable module support
@@ -80,52 +91,9 @@ CONFIG_DEFAULT_IOSCHED="noop"
80# 91#
81# System type 92# System type
82# 93#
83# CONFIG_SH_SOLUTION_ENGINE is not set
84# CONFIG_SH_7751_SOLUTION_ENGINE is not set
85# CONFIG_SH_7300_SOLUTION_ENGINE is not set
86# CONFIG_SH_7343_SOLUTION_ENGINE is not set
87# CONFIG_SH_73180_SOLUTION_ENGINE is not set
88# CONFIG_SH_7751_SYSTEMH is not set
89# CONFIG_SH_HP6XX is not set
90# CONFIG_SH_EC3104 is not set
91# CONFIG_SH_SATURN is not set
92# CONFIG_SH_DREAMCAST is not set
93# CONFIG_SH_BIGSUR is not set
94# CONFIG_SH_MPC1211 is not set
95# CONFIG_SH_SH03 is not set
96# CONFIG_SH_SECUREEDGE5410 is not set
97# CONFIG_SH_HS7751RVOIP is not set
98# CONFIG_SH_7710VOIPGW is not set
99# CONFIG_SH_RTS7751R2D is not set
100# CONFIG_SH_R7780RP is not set
101# CONFIG_SH_EDOSK7705 is not set
102# CONFIG_SH_SH4202_MICRODEV is not set
103# CONFIG_SH_LANDISK is not set
104# CONFIG_SH_TITAN is not set
105# CONFIG_SH_SHMIN is not set
106# CONFIG_SH_7206_SOLUTION_ENGINE is not set
107CONFIG_SH_7619_SOLUTION_ENGINE=y
108# CONFIG_SH_UNKNOWN is not set
109
110#
111# Processor selection
112#
113CONFIG_CPU_SH2=y 94CONFIG_CPU_SH2=y
114
115#
116# SH-2 Processor Support
117#
118# CONFIG_CPU_SUBTYPE_SH7604 is not set
119CONFIG_CPU_SUBTYPE_SH7619=y 95CONFIG_CPU_SUBTYPE_SH7619=y
120
121#
122# SH-2A Processor Support
123#
124# CONFIG_CPU_SUBTYPE_SH7206 is not set 96# CONFIG_CPU_SUBTYPE_SH7206 is not set
125
126#
127# SH-3 Processor Support
128#
129# CONFIG_CPU_SUBTYPE_SH7300 is not set 97# CONFIG_CPU_SUBTYPE_SH7300 is not set
130# CONFIG_CPU_SUBTYPE_SH7705 is not set 98# CONFIG_CPU_SUBTYPE_SH7705 is not set
131# CONFIG_CPU_SUBTYPE_SH7706 is not set 99# CONFIG_CPU_SUBTYPE_SH7706 is not set
@@ -133,10 +101,7 @@ CONFIG_CPU_SUBTYPE_SH7619=y
133# CONFIG_CPU_SUBTYPE_SH7708 is not set 101# CONFIG_CPU_SUBTYPE_SH7708 is not set
134# CONFIG_CPU_SUBTYPE_SH7709 is not set 102# CONFIG_CPU_SUBTYPE_SH7709 is not set
135# CONFIG_CPU_SUBTYPE_SH7710 is not set 103# CONFIG_CPU_SUBTYPE_SH7710 is not set
136 104# CONFIG_CPU_SUBTYPE_SH7712 is not set
137#
138# SH-4 Processor Support
139#
140# CONFIG_CPU_SUBTYPE_SH7750 is not set 105# CONFIG_CPU_SUBTYPE_SH7750 is not set
141# CONFIG_CPU_SUBTYPE_SH7091 is not set 106# CONFIG_CPU_SUBTYPE_SH7091 is not set
142# CONFIG_CPU_SUBTYPE_SH7750R is not set 107# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -145,32 +110,28 @@ CONFIG_CPU_SUBTYPE_SH7619=y
145# CONFIG_CPU_SUBTYPE_SH7751R is not set 110# CONFIG_CPU_SUBTYPE_SH7751R is not set
146# CONFIG_CPU_SUBTYPE_SH7760 is not set 111# CONFIG_CPU_SUBTYPE_SH7760 is not set
147# CONFIG_CPU_SUBTYPE_SH4_202 is not set 112# CONFIG_CPU_SUBTYPE_SH4_202 is not set
148
149#
150# ST40 Processor Support
151#
152# CONFIG_CPU_SUBTYPE_ST40STB1 is not set 113# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
153# CONFIG_CPU_SUBTYPE_ST40GX1 is not set 114# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
154
155#
156# SH-4A Processor Support
157#
158# CONFIG_CPU_SUBTYPE_SH7770 is not set 115# CONFIG_CPU_SUBTYPE_SH7770 is not set
159# CONFIG_CPU_SUBTYPE_SH7780 is not set 116# CONFIG_CPU_SUBTYPE_SH7780 is not set
160# CONFIG_CPU_SUBTYPE_SH7785 is not set 117# CONFIG_CPU_SUBTYPE_SH7785 is not set
161
162#
163# SH4AL-DSP Processor Support
164#
165# CONFIG_CPU_SUBTYPE_SH73180 is not set 118# CONFIG_CPU_SUBTYPE_SH73180 is not set
166# CONFIG_CPU_SUBTYPE_SH7343 is not set 119# CONFIG_CPU_SUBTYPE_SH7343 is not set
120# CONFIG_CPU_SUBTYPE_SH7722 is not set
167 121
168# 122#
169# Memory management options 123# Memory management options
170# 124#
125CONFIG_QUICKLIST=y
171CONFIG_PAGE_OFFSET=0x00000000 126CONFIG_PAGE_OFFSET=0x00000000
172CONFIG_MEMORY_START=0x0c000000 127CONFIG_MEMORY_START=0x0c000000
173CONFIG_MEMORY_SIZE=0x04000000 128CONFIG_MEMORY_SIZE=0x04000000
129CONFIG_ARCH_FLATMEM_ENABLE=y
130CONFIG_ARCH_SPARSEMEM_ENABLE=y
131CONFIG_ARCH_SPARSEMEM_DEFAULT=y
132CONFIG_MAX_ACTIVE_REGIONS=1
133CONFIG_ARCH_POPULATES_NODE_MAP=y
134CONFIG_ARCH_SELECT_MEMORY_MODEL=y
174CONFIG_PAGE_SIZE_4KB=y 135CONFIG_PAGE_SIZE_4KB=y
175# CONFIG_PAGE_SIZE_8KB is not set 136# CONFIG_PAGE_SIZE_8KB is not set
176# CONFIG_PAGE_SIZE_64KB is not set 137# CONFIG_PAGE_SIZE_64KB is not set
@@ -180,34 +141,41 @@ CONFIG_FLATMEM_MANUAL=y
180# CONFIG_SPARSEMEM_MANUAL is not set 141# CONFIG_SPARSEMEM_MANUAL is not set
181CONFIG_FLATMEM=y 142CONFIG_FLATMEM=y
182CONFIG_FLAT_NODE_MEM_MAP=y 143CONFIG_FLAT_NODE_MEM_MAP=y
183# CONFIG_SPARSEMEM_STATIC is not set 144CONFIG_SPARSEMEM_STATIC=y
184CONFIG_SPLIT_PTLOCK_CPUS=4 145CONFIG_SPLIT_PTLOCK_CPUS=4
185# CONFIG_RESOURCES_64BIT is not set 146# CONFIG_RESOURCES_64BIT is not set
147CONFIG_ZONE_DMA_FLAG=0
148CONFIG_NR_QUICK=2
186 149
187# 150#
188# Cache configuration 151# Cache configuration
189# 152#
190# CONFIG_SH_DIRECT_MAPPED is not set 153# CONFIG_SH_DIRECT_MAPPED is not set
191CONFIG_SH_WRITETHROUGH=y 154CONFIG_SH_WRITETHROUGH=y
192# CONFIG_SH_OCRAM is not set
193 155
194# 156#
195# Processor features 157# Processor features
196# 158#
197# CONFIG_CPU_LITTLE_ENDIAN is not set 159# CONFIG_CPU_LITTLE_ENDIAN is not set
198CONFIG_CPU_BIG_ENDIAN=y 160CONFIG_CPU_BIG_ENDIAN=y
199# CONFIG_SH_FPU is not set
200# CONFIG_SH_FPU_EMU is not set 161# CONFIG_SH_FPU_EMU is not set
201# CONFIG_SH_DSP is not set 162# CONFIG_SH_DSP is not set
163CONFIG_CPU_HAS_IPR_IRQ=y
164
165#
166# Board support
167#
168CONFIG_SOLUTION_ENGINE=y
169CONFIG_SH_7619_SOLUTION_ENGINE=y
202 170
203# 171#
204# Timer support 172# Timer and clock configuration
205# 173#
206CONFIG_SH_CMT=y 174CONFIG_SH_CMT=y
207CONFIG_SH_TIMER_IRQ=86 175CONFIG_SH_TIMER_IRQ=86
208# CONFIG_NO_IDLE_HZ is not set
209CONFIG_SH_PCLK_FREQ=31250000 176CONFIG_SH_PCLK_FREQ=31250000
210CONFIG_SH_CLK_MD=5 177CONFIG_SH_CLK_MD=5
178# CONFIG_TICK_ONESHOT is not set
211 179
212# 180#
213# CPU Frequency scaling 181# CPU Frequency scaling
@@ -222,11 +190,11 @@ CONFIG_SH_CLK_MD=5
222# 190#
223# Companion Chips 191# Companion Chips
224# 192#
225# CONFIG_HD6446X_SERIES is not set
226 193
227# 194#
228# Additional SuperH Device Drivers 195# Additional SuperH Device Drivers
229# 196#
197# CONFIG_HEARTBEAT is not set
230# CONFIG_PUSH_SWITCH is not set 198# CONFIG_PUSH_SWITCH is not set
231 199
232# 200#
@@ -234,10 +202,11 @@ CONFIG_SH_CLK_MD=5
234# 202#
235CONFIG_HZ_100=y 203CONFIG_HZ_100=y
236# CONFIG_HZ_250 is not set 204# CONFIG_HZ_250 is not set
205# CONFIG_HZ_300 is not set
237# CONFIG_HZ_1000 is not set 206# CONFIG_HZ_1000 is not set
238CONFIG_HZ=100 207CONFIG_HZ=100
239# CONFIG_KEXEC is not set 208# CONFIG_KEXEC is not set
240# CONFIG_SMP is not set 209# CONFIG_CRASH_DUMP is not set
241CONFIG_PREEMPT_NONE=y 210CONFIG_PREEMPT_NONE=y
242# CONFIG_PREEMPT_VOLUNTARY is not set 211# CONFIG_PREEMPT_VOLUNTARY is not set
243# CONFIG_PREEMPT is not set 212# CONFIG_PREEMPT is not set
@@ -247,23 +216,18 @@ CONFIG_PREEMPT_NONE=y
247# 216#
248CONFIG_ZERO_PAGE_OFFSET=0x00001000 217CONFIG_ZERO_PAGE_OFFSET=0x00001000
249CONFIG_BOOT_LINK_OFFSET=0x00800000 218CONFIG_BOOT_LINK_OFFSET=0x00800000
250# CONFIG_UBC_WAKEUP is not set
251# CONFIG_CMDLINE_BOOL is not set 219# CONFIG_CMDLINE_BOOL is not set
252 220
253# 221#
254# Bus options 222# Bus options
255# 223#
256# CONFIG_PCI is not set 224# CONFIG_ARCH_SUPPORTS_MSI is not set
257 225
258# 226#
259# PCCARD (PCMCIA/CardBus) support 227# PCCARD (PCMCIA/CardBus) support
260# 228#
261 229
262# 230#
263# PCI Hotplug Support
264#
265
266#
267# Executable file formats 231# Executable file formats
268# 232#
269CONFIG_BINFMT_FLAT=y 233CONFIG_BINFMT_FLAT=y
@@ -272,11 +236,6 @@ CONFIG_BINFMT_ZFLAT=y
272# CONFIG_BINFMT_MISC is not set 236# CONFIG_BINFMT_MISC is not set
273 237
274# 238#
275# Power management options (EXPERIMENTAL)
276#
277# CONFIG_PM is not set
278
279#
280# Networking 239# Networking
281# 240#
282# CONFIG_NET is not set 241# CONFIG_NET is not set
@@ -295,10 +254,6 @@ CONFIG_BINFMT_ZFLAT=y
295# 254#
296# Connector - unified userspace <-> kernelspace linker 255# Connector - unified userspace <-> kernelspace linker
297# 256#
298
299#
300# Memory Technology Devices (MTD)
301#
302CONFIG_MTD=y 257CONFIG_MTD=y
303# CONFIG_MTD_DEBUG is not set 258# CONFIG_MTD_DEBUG is not set
304CONFIG_MTD_CONCAT=y 259CONFIG_MTD_CONCAT=y
@@ -313,6 +268,7 @@ CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
313# User Modules And Translation Layers 268# User Modules And Translation Layers
314# 269#
315CONFIG_MTD_CHAR=y 270CONFIG_MTD_CHAR=y
271CONFIG_MTD_BLKDEVS=y
316CONFIG_MTD_BLOCK=y 272CONFIG_MTD_BLOCK=y
317# CONFIG_FTL is not set 273# CONFIG_FTL is not set
318# CONFIG_NFTL is not set 274# CONFIG_NFTL is not set
@@ -344,7 +300,6 @@ CONFIG_MTD_CFI_UTIL=y
344# CONFIG_MTD_RAM is not set 300# CONFIG_MTD_RAM is not set
345# CONFIG_MTD_ROM is not set 301# CONFIG_MTD_ROM is not set
346# CONFIG_MTD_ABSENT is not set 302# CONFIG_MTD_ABSENT is not set
347# CONFIG_MTD_OBSOLETE_CHIPS is not set
348 303
349# 304#
350# Mapping drivers for chip access 305# Mapping drivers for chip access
@@ -372,16 +327,13 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
372# CONFIG_MTD_DOC2000 is not set 327# CONFIG_MTD_DOC2000 is not set
373# CONFIG_MTD_DOC2001 is not set 328# CONFIG_MTD_DOC2001 is not set
374# CONFIG_MTD_DOC2001PLUS is not set 329# CONFIG_MTD_DOC2001PLUS is not set
375
376#
377# NAND Flash Device Drivers
378#
379# CONFIG_MTD_NAND is not set 330# CONFIG_MTD_NAND is not set
331# CONFIG_MTD_ONENAND is not set
380 332
381# 333#
382# OneNAND Flash Device Drivers 334# UBI - Unsorted block images
383# 335#
384# CONFIG_MTD_ONENAND is not set 336# CONFIG_MTD_UBI is not set
385 337
386# 338#
387# Parallel port support 339# Parallel port support
@@ -391,6 +343,7 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
391# 343#
392# Plug and Play support 344# Plug and Play support
393# 345#
346# CONFIG_PNPACPI is not set
394 347
395# 348#
396# Block devices 349# Block devices
@@ -398,17 +351,12 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
398# CONFIG_BLK_DEV_COW_COMMON is not set 351# CONFIG_BLK_DEV_COW_COMMON is not set
399# CONFIG_BLK_DEV_LOOP is not set 352# CONFIG_BLK_DEV_LOOP is not set
400# CONFIG_BLK_DEV_RAM is not set 353# CONFIG_BLK_DEV_RAM is not set
401# CONFIG_BLK_DEV_INITRD is not set
402# CONFIG_CDROM_PKTCDVD is not set 354# CONFIG_CDROM_PKTCDVD is not set
403 355
404# 356#
405# Misc devices 357# Misc devices
406# 358#
407# CONFIG_TIFM_CORE is not set 359# CONFIG_BLINK is not set
408
409#
410# ATA/ATAPI/MFM/RLL support
411#
412# CONFIG_IDE is not set 360# CONFIG_IDE is not set
413 361
414# 362#
@@ -417,10 +365,6 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
417# CONFIG_RAID_ATTRS is not set 365# CONFIG_RAID_ATTRS is not set
418# CONFIG_SCSI is not set 366# CONFIG_SCSI is not set
419# CONFIG_SCSI_NETLINK is not set 367# CONFIG_SCSI_NETLINK is not set
420
421#
422# Serial ATA (prod) and Parallel ATA (experimental) drivers
423#
424# CONFIG_ATA is not set 368# CONFIG_ATA is not set
425 369
426# 370#
@@ -429,19 +373,6 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
429# CONFIG_MD is not set 373# CONFIG_MD is not set
430 374
431# 375#
432# Fusion MPT device support
433#
434# CONFIG_FUSION is not set
435
436#
437# IEEE 1394 (FireWire) support
438#
439
440#
441# I2O device support
442#
443
444#
445# ISDN subsystem 376# ISDN subsystem
446# 377#
447 378
@@ -471,6 +402,7 @@ CONFIG_INPUT=y
471# CONFIG_INPUT_KEYBOARD is not set 402# CONFIG_INPUT_KEYBOARD is not set
472# CONFIG_INPUT_MOUSE is not set 403# CONFIG_INPUT_MOUSE is not set
473# CONFIG_INPUT_JOYSTICK is not set 404# CONFIG_INPUT_JOYSTICK is not set
405# CONFIG_INPUT_TABLET is not set
474# CONFIG_INPUT_TOUCHSCREEN is not set 406# CONFIG_INPUT_TOUCHSCREEN is not set
475# CONFIG_INPUT_MISC is not set 407# CONFIG_INPUT_MISC is not set
476 408
@@ -506,29 +438,15 @@ CONFIG_SERIAL_CORE_CONSOLE=y
506# IPMI 438# IPMI
507# 439#
508# CONFIG_IPMI_HANDLER is not set 440# CONFIG_IPMI_HANDLER is not set
509
510#
511# Watchdog Cards
512#
513# CONFIG_WATCHDOG is not set 441# CONFIG_WATCHDOG is not set
514# CONFIG_HW_RANDOM is not set 442# CONFIG_HW_RANDOM is not set
515# CONFIG_GEN_RTC is not set
516# CONFIG_DTLK is not set
517# CONFIG_R3964 is not set 443# CONFIG_R3964 is not set
518
519#
520# Ftape, the floppy tape device driver
521#
522# CONFIG_RAW_DRIVER is not set 444# CONFIG_RAW_DRIVER is not set
523 445
524# 446#
525# TPM devices 447# TPM devices
526# 448#
527# CONFIG_TCG_TPM is not set 449# CONFIG_TCG_TPM is not set
528
529#
530# I2C support
531#
532# CONFIG_I2C is not set 450# CONFIG_I2C is not set
533 451
534# 452#
@@ -541,26 +459,29 @@ CONFIG_SERIAL_CORE_CONSOLE=y
541# Dallas's 1-wire bus 459# Dallas's 1-wire bus
542# 460#
543# CONFIG_W1 is not set 461# CONFIG_W1 is not set
462# CONFIG_HWMON is not set
544 463
545# 464#
546# Hardware Monitoring support 465# Multifunction device drivers
547# 466#
548# CONFIG_HWMON is not set 467# CONFIG_MFD_SM501 is not set
549# CONFIG_HWMON_VID is not set
550 468
551# 469#
552# Multimedia devices 470# Multimedia devices
553# 471#
554# CONFIG_VIDEO_DEV is not set 472# CONFIG_VIDEO_DEV is not set
473CONFIG_DAB=y
555 474
556# 475#
557# Digital Video Broadcasting Devices 476# Graphics support
558# 477#
478# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
559 479
560# 480#
561# Graphics support 481# Display device support
562# 482#
563# CONFIG_FIRMWARE_EDID is not set 483# CONFIG_DISPLAY_SUPPORT is not set
484# CONFIG_VGASTATE is not set
564# CONFIG_FB is not set 485# CONFIG_FB is not set
565 486
566# 487#
@@ -569,6 +490,12 @@ CONFIG_SERIAL_CORE_CONSOLE=y
569# CONFIG_SOUND is not set 490# CONFIG_SOUND is not set
570 491
571# 492#
493# HID Devices
494#
495CONFIG_HID=y
496# CONFIG_HID_DEBUG is not set
497
498#
572# USB support 499# USB support
573# 500#
574# CONFIG_USB_ARCH_HAS_HCD is not set 501# CONFIG_USB_ARCH_HAS_HCD is not set
@@ -583,10 +510,6 @@ CONFIG_SERIAL_CORE_CONSOLE=y
583# USB Gadget Support 510# USB Gadget Support
584# 511#
585# CONFIG_USB_GADGET is not set 512# CONFIG_USB_GADGET is not set
586
587#
588# MMC/SD Card support
589#
590# CONFIG_MMC is not set 513# CONFIG_MMC is not set
591 514
592# 515#
@@ -668,7 +591,6 @@ CONFIG_PROC_FS=y
668CONFIG_PROC_SYSCTL=y 591CONFIG_PROC_SYSCTL=y
669# CONFIG_SYSFS is not set 592# CONFIG_SYSFS is not set
670# CONFIG_TMPFS is not set 593# CONFIG_TMPFS is not set
671# CONFIG_HUGETLBFS is not set
672# CONFIG_HUGETLB_PAGE is not set 594# CONFIG_HUGETLB_PAGE is not set
673CONFIG_RAMFS=y 595CONFIG_RAMFS=y
674 596
@@ -682,7 +604,6 @@ CONFIG_RAMFS=y
682# CONFIG_BEFS_FS is not set 604# CONFIG_BEFS_FS is not set
683# CONFIG_BFS_FS is not set 605# CONFIG_BFS_FS is not set
684# CONFIG_EFS_FS is not set 606# CONFIG_EFS_FS is not set
685# CONFIG_JFFS_FS is not set
686# CONFIG_JFFS2_FS is not set 607# CONFIG_JFFS2_FS is not set
687# CONFIG_CRAMFS is not set 608# CONFIG_CRAMFS is not set
688# CONFIG_VXFS_FS is not set 609# CONFIG_VXFS_FS is not set
@@ -715,14 +636,11 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y
715# CONFIG_ENABLE_MUST_CHECK is not set 636# CONFIG_ENABLE_MUST_CHECK is not set
716# CONFIG_MAGIC_SYSRQ is not set 637# CONFIG_MAGIC_SYSRQ is not set
717# CONFIG_UNUSED_SYMBOLS is not set 638# CONFIG_UNUSED_SYMBOLS is not set
639# CONFIG_HEADERS_CHECK is not set
718# CONFIG_DEBUG_KERNEL is not set 640# CONFIG_DEBUG_KERNEL is not set
719CONFIG_LOG_BUF_SHIFT=14
720# CONFIG_DEBUG_BUGVERBOSE is not set 641# CONFIG_DEBUG_BUGVERBOSE is not set
721# CONFIG_UNWIND_INFO is not set
722# CONFIG_HEADERS_CHECK is not set
723# CONFIG_SH_STANDARD_BIOS is not set 642# CONFIG_SH_STANDARD_BIOS is not set
724# CONFIG_EARLY_SCIF_CONSOLE is not set 643# CONFIG_EARLY_SCIF_CONSOLE is not set
725# CONFIG_KGDB is not set
726 644
727# 645#
728# Security options 646# Security options
@@ -737,8 +655,13 @@ CONFIG_LOG_BUF_SHIFT=14
737# 655#
738# Library routines 656# Library routines
739# 657#
658CONFIG_BITREVERSE=y
740# CONFIG_CRC_CCITT is not set 659# CONFIG_CRC_CCITT is not set
741# CONFIG_CRC16 is not set 660# CONFIG_CRC16 is not set
661# CONFIG_CRC_ITU_T is not set
742CONFIG_CRC32=y 662CONFIG_CRC32=y
743# CONFIG_LIBCRC32C is not set 663# CONFIG_LIBCRC32C is not set
744CONFIG_ZLIB_INFLATE=y 664CONFIG_ZLIB_INFLATE=y
665CONFIG_HAS_IOMEM=y
666CONFIG_HAS_IOPORT=y
667CONFIG_HAS_DMA=y
diff --git a/arch/sh/configs/se7722_defconfig b/arch/sh/configs/se7722_defconfig
index ca4c663dfa37..764b813c4051 100644
--- a/arch/sh/configs/se7722_defconfig
+++ b/arch/sh/configs/se7722_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.21-rc7 3# Linux kernel version: 2.6.22-rc4
4# Fri Apr 27 16:30:30 2007 4# Wed Jun 20 18:08:04 2007
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 7CONFIG_RWSEM_GENERIC_SPINLOCK=y
@@ -11,7 +11,9 @@ CONFIG_GENERIC_HWEIGHT=y
11CONFIG_GENERIC_HARDIRQS=y 11CONFIG_GENERIC_HARDIRQS=y
12CONFIG_GENERIC_IRQ_PROBE=y 12CONFIG_GENERIC_IRQ_PROBE=y
13CONFIG_GENERIC_CALIBRATE_DELAY=y 13CONFIG_GENERIC_CALIBRATE_DELAY=y
14# CONFIG_GENERIC_TIME is not set 14CONFIG_GENERIC_TIME=y
15CONFIG_GENERIC_CLOCKEVENTS=y
16CONFIG_SYS_SUPPORTS_NUMA=y
15CONFIG_STACKTRACE_SUPPORT=y 17CONFIG_STACKTRACE_SUPPORT=y
16CONFIG_LOCKDEP_SUPPORT=y 18CONFIG_LOCKDEP_SUPPORT=y
17# CONFIG_ARCH_HAS_ILOG2_U32 is not set 19# CONFIG_ARCH_HAS_ILOG2_U32 is not set
@@ -43,6 +45,7 @@ CONFIG_BSD_PROCESS_ACCT=y
43# CONFIG_AUDIT is not set 45# CONFIG_AUDIT is not set
44CONFIG_IKCONFIG=y 46CONFIG_IKCONFIG=y
45CONFIG_IKCONFIG_PROC=y 47CONFIG_IKCONFIG_PROC=y
48CONFIG_LOG_BUF_SHIFT=14
46# CONFIG_SYSFS_DEPRECATED is not set 49# CONFIG_SYSFS_DEPRECATED is not set
47# CONFIG_RELAY is not set 50# CONFIG_RELAY is not set
48CONFIG_BLK_DEV_INITRD=y 51CONFIG_BLK_DEV_INITRD=y
@@ -60,14 +63,20 @@ CONFIG_BUG=y
60CONFIG_ELF_CORE=y 63CONFIG_ELF_CORE=y
61CONFIG_BASE_FULL=y 64CONFIG_BASE_FULL=y
62CONFIG_FUTEX=y 65CONFIG_FUTEX=y
66CONFIG_ANON_INODES=y
63CONFIG_EPOLL=y 67CONFIG_EPOLL=y
68CONFIG_SIGNALFD=y
69CONFIG_TIMERFD=y
70CONFIG_EVENTFD=y
64CONFIG_SHMEM=y 71CONFIG_SHMEM=y
65CONFIG_SLAB=y
66CONFIG_VM_EVENT_COUNTERS=y 72CONFIG_VM_EVENT_COUNTERS=y
73CONFIG_SLUB_DEBUG=y
74# CONFIG_SLAB is not set
75CONFIG_SLUB=y
76# CONFIG_SLOB is not set
67CONFIG_RT_MUTEXES=y 77CONFIG_RT_MUTEXES=y
68# CONFIG_TINY_SHMEM is not set 78# CONFIG_TINY_SHMEM is not set
69CONFIG_BASE_SMALL=0 79CONFIG_BASE_SMALL=0
70# CONFIG_SLOB is not set
71 80
72# 81#
73# Loadable module support 82# Loadable module support
@@ -103,57 +112,12 @@ CONFIG_DEFAULT_IOSCHED="noop"
103# 112#
104# System type 113# System type
105# 114#
106CONFIG_SOLUTION_ENGINE=y
107# CONFIG_SH_SOLUTION_ENGINE is not set
108CONFIG_SH_7722_SOLUTION_ENGINE=y
109# CONFIG_SH_7751_SOLUTION_ENGINE is not set
110# CONFIG_SH_7780_SOLUTION_ENGINE is not set
111# CONFIG_SH_7300_SOLUTION_ENGINE is not set
112# CONFIG_SH_7343_SOLUTION_ENGINE is not set
113# CONFIG_SH_73180_SOLUTION_ENGINE is not set
114# CONFIG_SH_7751_SYSTEMH is not set
115# CONFIG_SH_HP6XX is not set
116# CONFIG_SH_SATURN is not set
117# CONFIG_SH_DREAMCAST is not set
118# CONFIG_SH_MPC1211 is not set
119# CONFIG_SH_SH03 is not set
120# CONFIG_SH_SECUREEDGE5410 is not set
121# CONFIG_SH_HS7751RVOIP is not set
122# CONFIG_SH_7710VOIPGW is not set
123# CONFIG_SH_RTS7751R2D is not set
124# CONFIG_SH_HIGHLANDER is not set
125# CONFIG_SH_EDOSK7705 is not set
126# CONFIG_SH_SH4202_MICRODEV is not set
127# CONFIG_SH_LANDISK is not set
128# CONFIG_SH_TITAN is not set
129# CONFIG_SH_SHMIN is not set
130# CONFIG_SH_7206_SOLUTION_ENGINE is not set
131# CONFIG_SH_7619_SOLUTION_ENGINE is not set
132# CONFIG_SH_LBOX_RE2 is not set
133# CONFIG_SH_UNKNOWN is not set
134
135#
136# Processor selection
137#
138CONFIG_CPU_SH4=y 115CONFIG_CPU_SH4=y
139CONFIG_CPU_SH4A=y 116CONFIG_CPU_SH4A=y
140CONFIG_CPU_SH4AL_DSP=y 117CONFIG_CPU_SH4AL_DSP=y
141CONFIG_CPU_SHX2=y 118CONFIG_CPU_SHX2=y
142
143#
144# SH-2 Processor Support
145#
146# CONFIG_CPU_SUBTYPE_SH7604 is not set
147# CONFIG_CPU_SUBTYPE_SH7619 is not set 119# CONFIG_CPU_SUBTYPE_SH7619 is not set
148
149#
150# SH-2A Processor Support
151#
152# CONFIG_CPU_SUBTYPE_SH7206 is not set 120# CONFIG_CPU_SUBTYPE_SH7206 is not set
153
154#
155# SH-3 Processor Support
156#
157# CONFIG_CPU_SUBTYPE_SH7300 is not set 121# CONFIG_CPU_SUBTYPE_SH7300 is not set
158# CONFIG_CPU_SUBTYPE_SH7705 is not set 122# CONFIG_CPU_SUBTYPE_SH7705 is not set
159# CONFIG_CPU_SUBTYPE_SH7706 is not set 123# CONFIG_CPU_SUBTYPE_SH7706 is not set
@@ -162,10 +126,6 @@ CONFIG_CPU_SHX2=y
162# CONFIG_CPU_SUBTYPE_SH7709 is not set 126# CONFIG_CPU_SUBTYPE_SH7709 is not set
163# CONFIG_CPU_SUBTYPE_SH7710 is not set 127# CONFIG_CPU_SUBTYPE_SH7710 is not set
164# CONFIG_CPU_SUBTYPE_SH7712 is not set 128# CONFIG_CPU_SUBTYPE_SH7712 is not set
165
166#
167# SH-4 Processor Support
168#
169# CONFIG_CPU_SUBTYPE_SH7750 is not set 129# CONFIG_CPU_SUBTYPE_SH7750 is not set
170# CONFIG_CPU_SUBTYPE_SH7091 is not set 130# CONFIG_CPU_SUBTYPE_SH7091 is not set
171# CONFIG_CPU_SUBTYPE_SH7750R is not set 131# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -174,23 +134,11 @@ CONFIG_CPU_SHX2=y
174# CONFIG_CPU_SUBTYPE_SH7751R is not set 134# CONFIG_CPU_SUBTYPE_SH7751R is not set
175# CONFIG_CPU_SUBTYPE_SH7760 is not set 135# CONFIG_CPU_SUBTYPE_SH7760 is not set
176# CONFIG_CPU_SUBTYPE_SH4_202 is not set 136# CONFIG_CPU_SUBTYPE_SH4_202 is not set
177
178#
179# ST40 Processor Support
180#
181# CONFIG_CPU_SUBTYPE_ST40STB1 is not set 137# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
182# CONFIG_CPU_SUBTYPE_ST40GX1 is not set 138# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
183
184#
185# SH-4A Processor Support
186#
187# CONFIG_CPU_SUBTYPE_SH7770 is not set 139# CONFIG_CPU_SUBTYPE_SH7770 is not set
188# CONFIG_CPU_SUBTYPE_SH7780 is not set 140# CONFIG_CPU_SUBTYPE_SH7780 is not set
189# CONFIG_CPU_SUBTYPE_SH7785 is not set 141# CONFIG_CPU_SUBTYPE_SH7785 is not set
190
191#
192# SH4AL-DSP Processor Support
193#
194# CONFIG_CPU_SUBTYPE_SH73180 is not set 142# CONFIG_CPU_SUBTYPE_SH73180 is not set
195# CONFIG_CPU_SUBTYPE_SH7343 is not set 143# CONFIG_CPU_SUBTYPE_SH7343 is not set
196CONFIG_CPU_SUBTYPE_SH7722=y 144CONFIG_CPU_SUBTYPE_SH7722=y
@@ -198,15 +146,21 @@ CONFIG_CPU_SUBTYPE_SH7722=y
198# 146#
199# Memory management options 147# Memory management options
200# 148#
149CONFIG_QUICKLIST=y
201CONFIG_MMU=y 150CONFIG_MMU=y
202CONFIG_PAGE_OFFSET=0x80000000 151CONFIG_PAGE_OFFSET=0x80000000
203CONFIG_MEMORY_START=0x0c000000 152CONFIG_MEMORY_START=0x0c000000
204CONFIG_MEMORY_SIZE=0x04000000 153CONFIG_MEMORY_SIZE=0x04000000
205# CONFIG_32BIT is not set
206# CONFIG_X2TLB is not set 154# CONFIG_X2TLB is not set
207CONFIG_VSYSCALL=y 155CONFIG_VSYSCALL=y
208CONFIG_ARCH_FLATMEM_ENABLE=y 156CONFIG_NUMA=y
157CONFIG_NODES_SHIFT=1
158CONFIG_ARCH_SPARSEMEM_ENABLE=y
159CONFIG_ARCH_SPARSEMEM_DEFAULT=y
160CONFIG_MAX_ACTIVE_REGIONS=2
209CONFIG_ARCH_POPULATES_NODE_MAP=y 161CONFIG_ARCH_POPULATES_NODE_MAP=y
162CONFIG_ARCH_SELECT_MEMORY_MODEL=y
163CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
210CONFIG_PAGE_SIZE_4KB=y 164CONFIG_PAGE_SIZE_4KB=y
211# CONFIG_PAGE_SIZE_8KB is not set 165# CONFIG_PAGE_SIZE_8KB is not set
212# CONFIG_PAGE_SIZE_64KB is not set 166# CONFIG_PAGE_SIZE_64KB is not set
@@ -216,26 +170,25 @@ CONFIG_HUGETLB_PAGE_SIZE_64K=y
216# CONFIG_HUGETLB_PAGE_SIZE_4MB is not set 170# CONFIG_HUGETLB_PAGE_SIZE_4MB is not set
217# CONFIG_HUGETLB_PAGE_SIZE_64MB is not set 171# CONFIG_HUGETLB_PAGE_SIZE_64MB is not set
218CONFIG_SELECT_MEMORY_MODEL=y 172CONFIG_SELECT_MEMORY_MODEL=y
219CONFIG_FLATMEM_MANUAL=y 173# CONFIG_FLATMEM_MANUAL is not set
220# CONFIG_DISCONTIGMEM_MANUAL is not set 174# CONFIG_DISCONTIGMEM_MANUAL is not set
221# CONFIG_SPARSEMEM_MANUAL is not set 175CONFIG_SPARSEMEM_MANUAL=y
222CONFIG_FLATMEM=y 176CONFIG_SPARSEMEM=y
223CONFIG_FLAT_NODE_MEM_MAP=y 177CONFIG_NEED_MULTIPLE_NODES=y
224# CONFIG_SPARSEMEM_STATIC is not set 178CONFIG_HAVE_MEMORY_PRESENT=y
179CONFIG_SPARSEMEM_STATIC=y
180# CONFIG_MEMORY_HOTPLUG is not set
225CONFIG_SPLIT_PTLOCK_CPUS=4 181CONFIG_SPLIT_PTLOCK_CPUS=4
182CONFIG_MIGRATION=y
226# CONFIG_RESOURCES_64BIT is not set 183# CONFIG_RESOURCES_64BIT is not set
227CONFIG_ZONE_DMA_FLAG=0 184CONFIG_ZONE_DMA_FLAG=0
185CONFIG_NR_QUICK=2
228 186
229# 187#
230# Cache configuration 188# Cache configuration
231# 189#
232# CONFIG_SH_DIRECT_MAPPED is not set 190# CONFIG_SH_DIRECT_MAPPED is not set
233# CONFIG_SH_WRITETHROUGH is not set 191# CONFIG_SH_WRITETHROUGH is not set
234# CONFIG_SH_OCRAM is not set
235CONFIG_CF_ENABLER=y
236# CONFIG_CF_AREA5 is not set
237CONFIG_CF_AREA6=y
238CONFIG_CF_BASE_ADDR=0xb8000000
239 192
240# 193#
241# Processor features 194# Processor features
@@ -252,12 +205,20 @@ CONFIG_CPU_HAS_SR_RB=y
252CONFIG_CPU_HAS_PTEA=y 205CONFIG_CPU_HAS_PTEA=y
253 206
254# 207#
208# Board support
209#
210CONFIG_SOLUTION_ENGINE=y
211CONFIG_SH_7722_SOLUTION_ENGINE=y
212
213#
255# Timer and clock configuration 214# Timer and clock configuration
256# 215#
257CONFIG_SH_TMU=y 216CONFIG_SH_TMU=y
258CONFIG_SH_TIMER_IRQ=16 217CONFIG_SH_TIMER_IRQ=16
259CONFIG_NO_IDLE_HZ=y
260CONFIG_SH_PCLK_FREQ=33333333 218CONFIG_SH_PCLK_FREQ=33333333
219CONFIG_TICK_ONESHOT=y
220CONFIG_NO_HZ=y
221CONFIG_HIGH_RES_TIMERS=y
261 222
262# 223#
263# CPU Frequency scaling 224# CPU Frequency scaling
@@ -272,7 +233,6 @@ CONFIG_SH_PCLK_FREQ=33333333
272# 233#
273# Companion Chips 234# Companion Chips
274# 235#
275# CONFIG_HD6446X_SERIES is not set
276 236
277# 237#
278# Additional SuperH Device Drivers 238# Additional SuperH Device Drivers
@@ -290,7 +250,6 @@ CONFIG_HZ_250=y
290CONFIG_HZ=250 250CONFIG_HZ=250
291CONFIG_KEXEC=y 251CONFIG_KEXEC=y
292# CONFIG_CRASH_DUMP is not set 252# CONFIG_CRASH_DUMP is not set
293# CONFIG_SMP is not set
294# CONFIG_PREEMPT_NONE is not set 253# CONFIG_PREEMPT_NONE is not set
295# CONFIG_PREEMPT_VOLUNTARY is not set 254# CONFIG_PREEMPT_VOLUNTARY is not set
296CONFIG_PREEMPT=y 255CONFIG_PREEMPT=y
@@ -307,7 +266,11 @@ CONFIG_BOOT_LINK_OFFSET=0x00800000
307# 266#
308# Bus options 267# Bus options
309# 268#
310# CONFIG_PCI is not set 269CONFIG_CF_ENABLER=y
270# CONFIG_CF_AREA5 is not set
271CONFIG_CF_AREA6=y
272CONFIG_CF_BASE_ADDR=0xb8000000
273# CONFIG_ARCH_SUPPORTS_MSI is not set
311 274
312# 275#
313# PCCARD (PCMCIA/CardBus) support 276# PCCARD (PCMCIA/CardBus) support
@@ -315,22 +278,12 @@ CONFIG_BOOT_LINK_OFFSET=0x00800000
315# CONFIG_PCCARD is not set 278# CONFIG_PCCARD is not set
316 279
317# 280#
318# PCI Hotplug Support
319#
320
321#
322# Executable file formats 281# Executable file formats
323# 282#
324CONFIG_BINFMT_ELF=y 283CONFIG_BINFMT_ELF=y
325# CONFIG_BINFMT_FLAT is not set
326# CONFIG_BINFMT_MISC is not set 284# CONFIG_BINFMT_MISC is not set
327 285
328# 286#
329# Power management options (EXPERIMENTAL)
330#
331# CONFIG_PM is not set
332
333#
334# Networking 287# Networking
335# 288#
336CONFIG_NET=y 289CONFIG_NET=y
@@ -338,7 +291,6 @@ CONFIG_NET=y
338# 291#
339# Networking options 292# Networking options
340# 293#
341# CONFIG_NETDEBUG is not set
342CONFIG_PACKET=y 294CONFIG_PACKET=y
343CONFIG_PACKET_MMAP=y 295CONFIG_PACKET_MMAP=y
344CONFIG_UNIX=y 296CONFIG_UNIX=y
@@ -375,20 +327,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
375# CONFIG_INET6_TUNNEL is not set 327# CONFIG_INET6_TUNNEL is not set
376# CONFIG_NETWORK_SECMARK is not set 328# CONFIG_NETWORK_SECMARK is not set
377# CONFIG_NETFILTER is not set 329# CONFIG_NETFILTER is not set
378
379#
380# DCCP Configuration (EXPERIMENTAL)
381#
382# CONFIG_IP_DCCP is not set 330# CONFIG_IP_DCCP is not set
383
384#
385# SCTP Configuration (EXPERIMENTAL)
386#
387# CONFIG_IP_SCTP is not set 331# CONFIG_IP_SCTP is not set
388
389#
390# TIPC Configuration (EXPERIMENTAL)
391#
392# CONFIG_TIPC is not set 332# CONFIG_TIPC is not set
393# CONFIG_ATM is not set 333# CONFIG_ATM is not set
394# CONFIG_BRIDGE is not set 334# CONFIG_BRIDGE is not set
@@ -414,7 +354,16 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
414# CONFIG_HAMRADIO is not set 354# CONFIG_HAMRADIO is not set
415# CONFIG_IRDA is not set 355# CONFIG_IRDA is not set
416# CONFIG_BT is not set 356# CONFIG_BT is not set
357# CONFIG_AF_RXRPC is not set
358
359#
360# Wireless
361#
362# CONFIG_CFG80211 is not set
363# CONFIG_WIRELESS_EXT is not set
364# CONFIG_MAC80211 is not set
417# CONFIG_IEEE80211 is not set 365# CONFIG_IEEE80211 is not set
366# CONFIG_RFKILL is not set
418 367
419# 368#
420# Device Drivers 369# Device Drivers
@@ -432,10 +381,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
432# Connector - unified userspace <-> kernelspace linker 381# Connector - unified userspace <-> kernelspace linker
433# 382#
434# CONFIG_CONNECTOR is not set 383# CONFIG_CONNECTOR is not set
435
436#
437# Memory Technology Devices (MTD)
438#
439# CONFIG_MTD is not set 384# CONFIG_MTD is not set
440 385
441# 386#
@@ -464,10 +409,7 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
464# 409#
465# Misc devices 410# Misc devices
466# 411#
467 412# CONFIG_BLINK is not set
468#
469# ATA/ATAPI/MFM/RLL support
470#
471# CONFIG_IDE is not set 413# CONFIG_IDE is not set
472 414
473# 415#
@@ -496,6 +438,7 @@ CONFIG_BLK_DEV_SD=y
496# CONFIG_SCSI_CONSTANTS is not set 438# CONFIG_SCSI_CONSTANTS is not set
497# CONFIG_SCSI_LOGGING is not set 439# CONFIG_SCSI_LOGGING is not set
498# CONFIG_SCSI_SCAN_ASYNC is not set 440# CONFIG_SCSI_SCAN_ASYNC is not set
441CONFIG_SCSI_WAIT_SCAN=m
499 442
500# 443#
501# SCSI Transports 444# SCSI Transports
@@ -511,10 +454,6 @@ CONFIG_BLK_DEV_SD=y
511# 454#
512# CONFIG_ISCSI_TCP is not set 455# CONFIG_ISCSI_TCP is not set
513# CONFIG_SCSI_DEBUG is not set 456# CONFIG_SCSI_DEBUG is not set
514
515#
516# Serial ATA (prod) and Parallel ATA (experimental) drivers
517#
518CONFIG_ATA=y 457CONFIG_ATA=y
519# CONFIG_ATA_NONSTANDARD is not set 458# CONFIG_ATA_NONSTANDARD is not set
520CONFIG_PATA_PLATFORM=y 459CONFIG_PATA_PLATFORM=y
@@ -525,19 +464,6 @@ CONFIG_PATA_PLATFORM=y
525# CONFIG_MD is not set 464# CONFIG_MD is not set
526 465
527# 466#
528# Fusion MPT device support
529#
530# CONFIG_FUSION is not set
531
532#
533# IEEE 1394 (FireWire) support
534#
535
536#
537# I2O device support
538#
539
540#
541# Network device support 467# Network device support
542# 468#
543CONFIG_NETDEVICES=y 469CONFIG_NETDEVICES=y
@@ -545,10 +471,6 @@ CONFIG_NETDEVICES=y
545# CONFIG_BONDING is not set 471# CONFIG_BONDING is not set
546# CONFIG_EQUALIZER is not set 472# CONFIG_EQUALIZER is not set
547# CONFIG_TUN is not set 473# CONFIG_TUN is not set
548
549#
550# PHY device support
551#
552# CONFIG_PHYLIB is not set 474# CONFIG_PHYLIB is not set
553 475
554# 476#
@@ -558,27 +480,14 @@ CONFIG_NET_ETHERNET=y
558CONFIG_MII=y 480CONFIG_MII=y
559# CONFIG_STNIC is not set 481# CONFIG_STNIC is not set
560CONFIG_SMC91X=y 482CONFIG_SMC91X=y
483CONFIG_NETDEV_1000=y
484CONFIG_NETDEV_10000=y
561 485
562# 486#
563# Ethernet (1000 Mbit) 487# Wireless LAN
564#
565
566#
567# Ethernet (10000 Mbit)
568#
569
570#
571# Token Ring devices
572#
573
574#
575# Wireless LAN (non-hamradio)
576#
577# CONFIG_NET_RADIO is not set
578
579#
580# Wan interfaces
581# 488#
489# CONFIG_WLAN_PRE80211 is not set
490# CONFIG_WLAN_80211 is not set
582# CONFIG_WAN is not set 491# CONFIG_WAN is not set
583# CONFIG_PPP is not set 492# CONFIG_PPP is not set
584# CONFIG_SLIP is not set 493# CONFIG_SLIP is not set
@@ -627,6 +536,7 @@ CONFIG_KEYBOARD_ATKBD=y
627# CONFIG_KEYBOARD_STOWAWAY is not set 536# CONFIG_KEYBOARD_STOWAWAY is not set
628# CONFIG_INPUT_MOUSE is not set 537# CONFIG_INPUT_MOUSE is not set
629# CONFIG_INPUT_JOYSTICK is not set 538# CONFIG_INPUT_JOYSTICK is not set
539# CONFIG_INPUT_TABLET is not set
630# CONFIG_INPUT_TOUCHSCREEN is not set 540# CONFIG_INPUT_TOUCHSCREEN is not set
631# CONFIG_INPUT_MISC is not set 541# CONFIG_INPUT_MISC is not set
632 542
@@ -667,14 +577,8 @@ CONFIG_LEGACY_PTY_COUNT=256
667# IPMI 577# IPMI
668# 578#
669# CONFIG_IPMI_HANDLER is not set 579# CONFIG_IPMI_HANDLER is not set
670
671#
672# Watchdog Cards
673#
674# CONFIG_WATCHDOG is not set 580# CONFIG_WATCHDOG is not set
675CONFIG_HW_RANDOM=y 581CONFIG_HW_RANDOM=y
676# CONFIG_GEN_RTC is not set
677# CONFIG_DTLK is not set
678# CONFIG_R3964 is not set 582# CONFIG_R3964 is not set
679# CONFIG_RAW_DRIVER is not set 583# CONFIG_RAW_DRIVER is not set
680 584
@@ -682,10 +586,6 @@ CONFIG_HW_RANDOM=y
682# TPM devices 586# TPM devices
683# 587#
684# CONFIG_TCG_TPM is not set 588# CONFIG_TCG_TPM is not set
685
686#
687# I2C support
688#
689# CONFIG_I2C is not set 589# CONFIG_I2C is not set
690 590
691# 591#
@@ -698,16 +598,15 @@ CONFIG_HW_RANDOM=y
698# Dallas's 1-wire bus 598# Dallas's 1-wire bus
699# 599#
700# CONFIG_W1 is not set 600# CONFIG_W1 is not set
701
702#
703# Hardware Monitoring support
704#
705CONFIG_HWMON=y 601CONFIG_HWMON=y
706# CONFIG_HWMON_VID is not set 602# CONFIG_HWMON_VID is not set
707# CONFIG_SENSORS_ABITUGURU is not set 603# CONFIG_SENSORS_ABITUGURU is not set
708# CONFIG_SENSORS_F71805F is not set 604# CONFIG_SENSORS_F71805F is not set
709# CONFIG_SENSORS_PC87427 is not set 605# CONFIG_SENSORS_PC87427 is not set
606# CONFIG_SENSORS_SMSC47M1 is not set
607# CONFIG_SENSORS_SMSC47B397 is not set
710# CONFIG_SENSORS_VT1211 is not set 608# CONFIG_SENSORS_VT1211 is not set
609# CONFIG_SENSORS_W83627HF is not set
711# CONFIG_HWMON_DEBUG_CHIP is not set 610# CONFIG_HWMON_DEBUG_CHIP is not set
712 611
713# 612#
@@ -719,16 +618,19 @@ CONFIG_HWMON=y
719# Multimedia devices 618# Multimedia devices
720# 619#
721# CONFIG_VIDEO_DEV is not set 620# CONFIG_VIDEO_DEV is not set
621# CONFIG_DVB_CORE is not set
622CONFIG_DAB=y
722 623
723# 624#
724# Digital Video Broadcasting Devices 625# Graphics support
725# 626#
726# CONFIG_DVB is not set 627# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
727 628
728# 629#
729# Graphics support 630# Display device support
730# 631#
731# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 632# CONFIG_DISPLAY_SUPPORT is not set
633# CONFIG_VGASTATE is not set
732# CONFIG_FB is not set 634# CONFIG_FB is not set
733 635
734# 636#
@@ -757,10 +659,6 @@ CONFIG_HID=y
757# USB Gadget Support 659# USB Gadget Support
758# 660#
759# CONFIG_USB_GADGET is not set 661# CONFIG_USB_GADGET is not set
760
761#
762# MMC/SD Card support
763#
764# CONFIG_MMC is not set 662# CONFIG_MMC is not set
765 663
766# 664#
@@ -800,18 +698,30 @@ CONFIG_RTC_INTF_SYSFS=y
800CONFIG_RTC_INTF_PROC=y 698CONFIG_RTC_INTF_PROC=y
801CONFIG_RTC_INTF_DEV=y 699CONFIG_RTC_INTF_DEV=y
802# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set 700# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
701# CONFIG_RTC_DRV_TEST is not set
803 702
804# 703#
805# RTC drivers 704# I2C RTC drivers
705#
706
707#
708# SPI RTC drivers
709#
710
711#
712# Platform RTC drivers
806# 713#
807# CONFIG_RTC_DRV_DS1553 is not set 714# CONFIG_RTC_DRV_DS1553 is not set
808# CONFIG_RTC_DRV_DS1742 is not set 715# CONFIG_RTC_DRV_DS1742 is not set
809# CONFIG_RTC_DRV_M48T86 is not set 716# CONFIG_RTC_DRV_M48T86 is not set
810CONFIG_RTC_DRV_SH=y
811# CONFIG_RTC_DRV_TEST is not set
812# CONFIG_RTC_DRV_V3020 is not set 717# CONFIG_RTC_DRV_V3020 is not set
813 718
814# 719#
720# on-CPU RTC drivers
721#
722CONFIG_RTC_DRV_SH=y
723
724#
815# DMA Engine support 725# DMA Engine support
816# 726#
817# CONFIG_DMA_ENGINE is not set 727# CONFIG_DMA_ENGINE is not set
@@ -825,14 +735,6 @@ CONFIG_RTC_DRV_SH=y
825# 735#
826 736
827# 737#
828# Auxiliary Display support
829#
830
831#
832# Virtualization
833#
834
835#
836# File systems 738# File systems
837# 739#
838CONFIG_EXT2_FS=y 740CONFIG_EXT2_FS=y
@@ -937,23 +839,24 @@ CONFIG_MSDOS_PARTITION=y
937# 839#
938# Profiling support 840# Profiling support
939# 841#
940# CONFIG_PROFILING is not set 842CONFIG_PROFILING=y
843# CONFIG_OPROFILE is not set
941 844
942# 845#
943# Kernel hacking 846# Kernel hacking
944# 847#
945CONFIG_TRACE_IRQFLAGS_SUPPORT=y 848CONFIG_TRACE_IRQFLAGS_SUPPORT=y
946# CONFIG_PRINTK_TIME is not set 849CONFIG_PRINTK_TIME=y
947# CONFIG_ENABLE_MUST_CHECK is not set 850# CONFIG_ENABLE_MUST_CHECK is not set
948# CONFIG_MAGIC_SYSRQ is not set 851CONFIG_MAGIC_SYSRQ=y
949# CONFIG_UNUSED_SYMBOLS is not set 852# CONFIG_UNUSED_SYMBOLS is not set
950# CONFIG_DEBUG_FS is not set 853CONFIG_DEBUG_FS=y
951# CONFIG_HEADERS_CHECK is not set 854# CONFIG_HEADERS_CHECK is not set
952# CONFIG_DEBUG_KERNEL is not set 855# CONFIG_DEBUG_KERNEL is not set
953CONFIG_LOG_BUF_SHIFT=14
954# CONFIG_DEBUG_BUGVERBOSE is not set 856# CONFIG_DEBUG_BUGVERBOSE is not set
955# CONFIG_SH_STANDARD_BIOS is not set 857CONFIG_SH_STANDARD_BIOS=y
956# CONFIG_EARLY_SCIF_CONSOLE is not set 858# CONFIG_EARLY_SCIF_CONSOLE is not set
859# CONFIG_EARLY_PRINTK is not set
957# CONFIG_SH_KGDB is not set 860# CONFIG_SH_KGDB is not set
958 861
959# 862#
@@ -973,8 +876,10 @@ CONFIG_LOG_BUF_SHIFT=14
973CONFIG_BITREVERSE=y 876CONFIG_BITREVERSE=y
974# CONFIG_CRC_CCITT is not set 877# CONFIG_CRC_CCITT is not set
975# CONFIG_CRC16 is not set 878# CONFIG_CRC16 is not set
879# CONFIG_CRC_ITU_T is not set
976CONFIG_CRC32=y 880CONFIG_CRC32=y
977# CONFIG_LIBCRC32C is not set 881# CONFIG_LIBCRC32C is not set
978CONFIG_PLIST=y 882CONFIG_PLIST=y
979CONFIG_HAS_IOMEM=y 883CONFIG_HAS_IOMEM=y
980CONFIG_HAS_IOPORT=y 884CONFIG_HAS_IOPORT=y
885CONFIG_HAS_DMA=y
diff --git a/arch/sh/configs/shx3_defconfig b/arch/sh/configs/shx3_defconfig
new file mode 100644
index 000000000000..219bad558b10
--- /dev/null
+++ b/arch/sh/configs/shx3_defconfig
@@ -0,0 +1,756 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.22-rc4
4# Wed Jun 20 14:09:27 2007
5#
6CONFIG_SUPERH=y
7CONFIG_RWSEM_GENERIC_SPINLOCK=y
8CONFIG_GENERIC_BUG=y
9CONFIG_GENERIC_FIND_NEXT_BIT=y
10CONFIG_GENERIC_HWEIGHT=y
11CONFIG_GENERIC_HARDIRQS=y
12CONFIG_GENERIC_IRQ_PROBE=y
13CONFIG_GENERIC_CALIBRATE_DELAY=y
14CONFIG_GENERIC_TIME=y
15CONFIG_GENERIC_CLOCKEVENTS=y
16CONFIG_STACKTRACE_SUPPORT=y
17CONFIG_LOCKDEP_SUPPORT=y
18# CONFIG_ARCH_HAS_ILOG2_U32 is not set
19# CONFIG_ARCH_HAS_ILOG2_U64 is not set
20CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
21
22#
23# Code maturity level options
24#
25CONFIG_EXPERIMENTAL=y
26CONFIG_BROKEN_ON_SMP=y
27CONFIG_LOCK_KERNEL=y
28CONFIG_INIT_ENV_ARG_LIMIT=32
29
30#
31# General setup
32#
33CONFIG_LOCALVERSION=""
34CONFIG_LOCALVERSION_AUTO=y
35CONFIG_SWAP=y
36CONFIG_SYSVIPC=y
37# CONFIG_IPC_NS is not set
38CONFIG_SYSVIPC_SYSCTL=y
39CONFIG_BSD_PROCESS_ACCT=y
40# CONFIG_BSD_PROCESS_ACCT_V3 is not set
41# CONFIG_UTS_NS is not set
42CONFIG_IKCONFIG=y
43CONFIG_IKCONFIG_PROC=y
44CONFIG_LOG_BUF_SHIFT=14
45# CONFIG_SYSFS_DEPRECATED is not set
46# CONFIG_RELAY is not set
47CONFIG_BLK_DEV_INITRD=y
48CONFIG_INITRAMFS_SOURCE=""
49CONFIG_CC_OPTIMIZE_FOR_SIZE=y
50CONFIG_SYSCTL=y
51CONFIG_EMBEDDED=y
52CONFIG_UID16=y
53CONFIG_SYSCTL_SYSCALL=y
54CONFIG_KALLSYMS=y
55CONFIG_KALLSYMS_ALL=y
56# CONFIG_KALLSYMS_EXTRA_PASS is not set
57CONFIG_HOTPLUG=y
58CONFIG_PRINTK=y
59CONFIG_BUG=y
60CONFIG_ELF_CORE=y
61CONFIG_BASE_FULL=y
62CONFIG_FUTEX=y
63CONFIG_ANON_INODES=y
64CONFIG_EPOLL=y
65CONFIG_SIGNALFD=y
66CONFIG_TIMERFD=y
67CONFIG_EVENTFD=y
68CONFIG_SHMEM=y
69CONFIG_VM_EVENT_COUNTERS=y
70CONFIG_SLAB=y
71# CONFIG_SLUB is not set
72# CONFIG_SLOB is not set
73CONFIG_RT_MUTEXES=y
74# CONFIG_TINY_SHMEM is not set
75CONFIG_BASE_SMALL=0
76
77#
78# Loadable module support
79#
80CONFIG_MODULES=y
81CONFIG_MODULE_UNLOAD=y
82# CONFIG_MODULE_FORCE_UNLOAD is not set
83# CONFIG_MODVERSIONS is not set
84# CONFIG_MODULE_SRCVERSION_ALL is not set
85CONFIG_KMOD=y
86
87#
88# Block layer
89#
90CONFIG_BLOCK=y
91# CONFIG_LBD is not set
92# CONFIG_BLK_DEV_IO_TRACE is not set
93# CONFIG_LSF is not set
94
95#
96# IO Schedulers
97#
98CONFIG_IOSCHED_NOOP=y
99# CONFIG_IOSCHED_AS is not set
100# CONFIG_IOSCHED_DEADLINE is not set
101# CONFIG_IOSCHED_CFQ is not set
102# CONFIG_DEFAULT_AS is not set
103# CONFIG_DEFAULT_DEADLINE is not set
104# CONFIG_DEFAULT_CFQ is not set
105CONFIG_DEFAULT_NOOP=y
106CONFIG_DEFAULT_IOSCHED="noop"
107
108#
109# System type
110#
111CONFIG_CPU_SH4=y
112CONFIG_CPU_SH4A=y
113CONFIG_CPU_SHX3=y
114# CONFIG_CPU_SUBTYPE_SH7619 is not set
115# CONFIG_CPU_SUBTYPE_SH7206 is not set
116# CONFIG_CPU_SUBTYPE_SH7300 is not set
117# CONFIG_CPU_SUBTYPE_SH7705 is not set
118# CONFIG_CPU_SUBTYPE_SH7706 is not set
119# CONFIG_CPU_SUBTYPE_SH7707 is not set
120# CONFIG_CPU_SUBTYPE_SH7708 is not set
121# CONFIG_CPU_SUBTYPE_SH7709 is not set
122# CONFIG_CPU_SUBTYPE_SH7710 is not set
123# CONFIG_CPU_SUBTYPE_SH7712 is not set
124# CONFIG_CPU_SUBTYPE_SH7750 is not set
125# CONFIG_CPU_SUBTYPE_SH7091 is not set
126# CONFIG_CPU_SUBTYPE_SH7750R is not set
127# CONFIG_CPU_SUBTYPE_SH7750S is not set
128# CONFIG_CPU_SUBTYPE_SH7751 is not set
129# CONFIG_CPU_SUBTYPE_SH7751R is not set
130# CONFIG_CPU_SUBTYPE_SH7760 is not set
131# CONFIG_CPU_SUBTYPE_SH4_202 is not set
132# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
133# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
134# CONFIG_CPU_SUBTYPE_SH7770 is not set
135# CONFIG_CPU_SUBTYPE_SH7780 is not set
136# CONFIG_CPU_SUBTYPE_SH7785 is not set
137CONFIG_CPU_SUBTYPE_SHX3=y
138# CONFIG_CPU_SUBTYPE_SH73180 is not set
139# CONFIG_CPU_SUBTYPE_SH7343 is not set
140# CONFIG_CPU_SUBTYPE_SH7722 is not set
141
142#
143# Memory management options
144#
145CONFIG_QUICKLIST=y
146CONFIG_MMU=y
147CONFIG_PAGE_OFFSET=0x80000000
148CONFIG_MEMORY_START=0x0c000000
149CONFIG_MEMORY_SIZE=0x04000000
150CONFIG_VSYSCALL=y
151CONFIG_ARCH_FLATMEM_ENABLE=y
152CONFIG_ARCH_SPARSEMEM_ENABLE=y
153CONFIG_ARCH_SPARSEMEM_DEFAULT=y
154CONFIG_MAX_ACTIVE_REGIONS=1
155CONFIG_ARCH_POPULATES_NODE_MAP=y
156CONFIG_ARCH_SELECT_MEMORY_MODEL=y
157CONFIG_PAGE_SIZE_4KB=y
158# CONFIG_PAGE_SIZE_8KB is not set
159# CONFIG_PAGE_SIZE_64KB is not set
160CONFIG_HUGETLB_PAGE_SIZE_64K=y
161# CONFIG_HUGETLB_PAGE_SIZE_256K is not set
162# CONFIG_HUGETLB_PAGE_SIZE_1MB is not set
163# CONFIG_HUGETLB_PAGE_SIZE_4MB is not set
164# CONFIG_HUGETLB_PAGE_SIZE_64MB is not set
165CONFIG_SELECT_MEMORY_MODEL=y
166CONFIG_FLATMEM_MANUAL=y
167# CONFIG_DISCONTIGMEM_MANUAL is not set
168# CONFIG_SPARSEMEM_MANUAL is not set
169CONFIG_FLATMEM=y
170CONFIG_FLAT_NODE_MEM_MAP=y
171CONFIG_SPARSEMEM_STATIC=y
172CONFIG_SPLIT_PTLOCK_CPUS=4
173# CONFIG_RESOURCES_64BIT is not set
174CONFIG_ZONE_DMA_FLAG=0
175CONFIG_NR_QUICK=2
176
177#
178# Cache configuration
179#
180# CONFIG_SH_DIRECT_MAPPED is not set
181# CONFIG_SH_WRITETHROUGH is not set
182
183#
184# Processor features
185#
186CONFIG_CPU_LITTLE_ENDIAN=y
187# CONFIG_CPU_BIG_ENDIAN is not set
188# CONFIG_SH_FPU is not set
189# CONFIG_SH_FPU_EMU is not set
190CONFIG_SH_DSP=y
191CONFIG_SH_STORE_QUEUES=y
192CONFIG_CPU_HAS_INTEVT=y
193CONFIG_CPU_HAS_INTC2_IRQ=y
194CONFIG_CPU_HAS_SR_RB=y
195
196#
197# Board support
198#
199
200#
201# Timer and clock configuration
202#
203CONFIG_SH_TMU=y
204CONFIG_SH_TIMER_IRQ=16
205CONFIG_SH_PCLK_FREQ=50000000
206CONFIG_TICK_ONESHOT=y
207CONFIG_NO_HZ=y
208CONFIG_HIGH_RES_TIMERS=y
209
210#
211# CPU Frequency scaling
212#
213# CONFIG_CPU_FREQ is not set
214
215#
216# DMA support
217#
218# CONFIG_SH_DMA is not set
219
220#
221# Companion Chips
222#
223
224#
225# Additional SuperH Device Drivers
226#
227CONFIG_HEARTBEAT=y
228# CONFIG_PUSH_SWITCH is not set
229
230#
231# Kernel features
232#
233# CONFIG_HZ_100 is not set
234CONFIG_HZ_250=y
235# CONFIG_HZ_300 is not set
236# CONFIG_HZ_1000 is not set
237CONFIG_HZ=250
238CONFIG_KEXEC=y
239# CONFIG_CRASH_DUMP is not set
240# CONFIG_PREEMPT_NONE is not set
241# CONFIG_PREEMPT_VOLUNTARY is not set
242CONFIG_PREEMPT=y
243CONFIG_PREEMPT_BKL=y
244
245#
246# Boot options
247#
248CONFIG_ZERO_PAGE_OFFSET=0x00001000
249CONFIG_BOOT_LINK_OFFSET=0x00800000
250# CONFIG_UBC_WAKEUP is not set
251CONFIG_CMDLINE_BOOL=y
252CONFIG_CMDLINE="console=ttySC0,115200 ip=192.168.1.2:::255.255.255.0 root=/dev/nfs nfsroot=192.168.1.1:/exports/devel/rfs/mobiler noaliencache earlyprintk=bios ignore_loglevel"
253
254#
255# Bus options
256#
257# CONFIG_ARCH_SUPPORTS_MSI is not set
258
259#
260# PCCARD (PCMCIA/CardBus) support
261#
262# CONFIG_PCCARD is not set
263
264#
265# Executable file formats
266#
267CONFIG_BINFMT_ELF=y
268# CONFIG_BINFMT_MISC is not set
269
270#
271# Networking
272#
273# CONFIG_NET is not set
274
275#
276# Device Drivers
277#
278
279#
280# Generic Driver Options
281#
282CONFIG_STANDALONE=y
283CONFIG_PREVENT_FIRMWARE_BUILD=y
284# CONFIG_FW_LOADER is not set
285# CONFIG_DEBUG_DRIVER is not set
286# CONFIG_DEBUG_DEVRES is not set
287# CONFIG_SYS_HYPERVISOR is not set
288
289#
290# Connector - unified userspace <-> kernelspace linker
291#
292# CONFIG_MTD is not set
293
294#
295# Parallel port support
296#
297# CONFIG_PARPORT is not set
298
299#
300# Plug and Play support
301#
302# CONFIG_PNPACPI is not set
303
304#
305# Block devices
306#
307# CONFIG_BLK_DEV_COW_COMMON is not set
308# CONFIG_BLK_DEV_LOOP is not set
309CONFIG_BLK_DEV_RAM=y
310CONFIG_BLK_DEV_RAM_COUNT=16
311CONFIG_BLK_DEV_RAM_SIZE=4096
312CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
313# CONFIG_CDROM_PKTCDVD is not set
314
315#
316# Misc devices
317#
318# CONFIG_BLINK is not set
319# CONFIG_IDE is not set
320
321#
322# SCSI device support
323#
324# CONFIG_RAID_ATTRS is not set
325CONFIG_SCSI=y
326# CONFIG_SCSI_TGT is not set
327# CONFIG_SCSI_NETLINK is not set
328CONFIG_SCSI_PROC_FS=y
329
330#
331# SCSI support type (disk, tape, CD-ROM)
332#
333CONFIG_BLK_DEV_SD=y
334# CONFIG_CHR_DEV_ST is not set
335# CONFIG_CHR_DEV_OSST is not set
336# CONFIG_BLK_DEV_SR is not set
337# CONFIG_CHR_DEV_SG is not set
338# CONFIG_CHR_DEV_SCH is not set
339
340#
341# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
342#
343# CONFIG_SCSI_MULTI_LUN is not set
344# CONFIG_SCSI_CONSTANTS is not set
345# CONFIG_SCSI_LOGGING is not set
346# CONFIG_SCSI_SCAN_ASYNC is not set
347CONFIG_SCSI_WAIT_SCAN=m
348
349#
350# SCSI Transports
351#
352# CONFIG_SCSI_SPI_ATTRS is not set
353# CONFIG_SCSI_FC_ATTRS is not set
354# CONFIG_SCSI_SAS_ATTRS is not set
355# CONFIG_SCSI_SAS_LIBSAS is not set
356
357#
358# SCSI low-level drivers
359#
360# CONFIG_SCSI_DEBUG is not set
361CONFIG_ATA=y
362# CONFIG_ATA_NONSTANDARD is not set
363CONFIG_PATA_PLATFORM=y
364
365#
366# Multi-device support (RAID and LVM)
367#
368# CONFIG_MD is not set
369
370#
371# ISDN subsystem
372#
373
374#
375# Telephony Support
376#
377# CONFIG_PHONE is not set
378
379#
380# Input device support
381#
382CONFIG_INPUT=y
383# CONFIG_INPUT_FF_MEMLESS is not set
384
385#
386# Userland interfaces
387#
388CONFIG_INPUT_MOUSEDEV=y
389# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
390CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
391CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
392# CONFIG_INPUT_JOYDEV is not set
393# CONFIG_INPUT_TSDEV is not set
394# CONFIG_INPUT_EVDEV is not set
395# CONFIG_INPUT_EVBUG is not set
396
397#
398# Input Device Drivers
399#
400CONFIG_INPUT_KEYBOARD=y
401CONFIG_KEYBOARD_ATKBD=y
402# CONFIG_KEYBOARD_SUNKBD is not set
403# CONFIG_KEYBOARD_LKKBD is not set
404# CONFIG_KEYBOARD_XTKBD is not set
405# CONFIG_KEYBOARD_NEWTON is not set
406# CONFIG_KEYBOARD_STOWAWAY is not set
407# CONFIG_INPUT_MOUSE is not set
408# CONFIG_INPUT_JOYSTICK is not set
409# CONFIG_INPUT_TABLET is not set
410# CONFIG_INPUT_TOUCHSCREEN is not set
411# CONFIG_INPUT_MISC is not set
412
413#
414# Hardware I/O ports
415#
416CONFIG_SERIO=y
417# CONFIG_SERIO_I8042 is not set
418# CONFIG_SERIO_SERPORT is not set
419CONFIG_SERIO_LIBPS2=y
420# CONFIG_SERIO_RAW is not set
421# CONFIG_GAMEPORT is not set
422
423#
424# Character devices
425#
426# CONFIG_VT is not set
427# CONFIG_SERIAL_NONSTANDARD is not set
428
429#
430# Serial drivers
431#
432# CONFIG_SERIAL_8250 is not set
433
434#
435# Non-8250 serial port support
436#
437CONFIG_SERIAL_SH_SCI=y
438CONFIG_SERIAL_SH_SCI_NR_UARTS=2
439CONFIG_SERIAL_SH_SCI_CONSOLE=y
440CONFIG_SERIAL_CORE=y
441CONFIG_SERIAL_CORE_CONSOLE=y
442CONFIG_UNIX98_PTYS=y
443CONFIG_LEGACY_PTYS=y
444CONFIG_LEGACY_PTY_COUNT=256
445
446#
447# IPMI
448#
449# CONFIG_IPMI_HANDLER is not set
450# CONFIG_WATCHDOG is not set
451CONFIG_HW_RANDOM=y
452# CONFIG_R3964 is not set
453# CONFIG_RAW_DRIVER is not set
454
455#
456# TPM devices
457#
458# CONFIG_TCG_TPM is not set
459# CONFIG_I2C is not set
460
461#
462# SPI support
463#
464# CONFIG_SPI is not set
465# CONFIG_SPI_MASTER is not set
466
467#
468# Dallas's 1-wire bus
469#
470# CONFIG_W1 is not set
471# CONFIG_HWMON is not set
472
473#
474# Multifunction device drivers
475#
476# CONFIG_MFD_SM501 is not set
477
478#
479# Multimedia devices
480#
481# CONFIG_VIDEO_DEV is not set
482# CONFIG_DAB is not set
483
484#
485# Graphics support
486#
487# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
488
489#
490# Display device support
491#
492# CONFIG_DISPLAY_SUPPORT is not set
493# CONFIG_VGASTATE is not set
494# CONFIG_FB is not set
495
496#
497# Sound
498#
499# CONFIG_SOUND is not set
500
501#
502# HID Devices
503#
504# CONFIG_HID is not set
505
506#
507# USB support
508#
509# CONFIG_USB_ARCH_HAS_HCD is not set
510# CONFIG_USB_ARCH_HAS_OHCI is not set
511# CONFIG_USB_ARCH_HAS_EHCI is not set
512
513#
514# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
515#
516
517#
518# USB Gadget Support
519#
520# CONFIG_USB_GADGET is not set
521# CONFIG_MMC is not set
522
523#
524# LED devices
525#
526# CONFIG_NEW_LEDS is not set
527
528#
529# LED drivers
530#
531
532#
533# LED Triggers
534#
535
536#
537# InfiniBand support
538#
539
540#
541# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
542#
543
544#
545# Real Time Clock
546#
547CONFIG_RTC_LIB=y
548CONFIG_RTC_CLASS=y
549CONFIG_RTC_HCTOSYS=y
550CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
551# CONFIG_RTC_DEBUG is not set
552
553#
554# RTC interfaces
555#
556CONFIG_RTC_INTF_SYSFS=y
557CONFIG_RTC_INTF_PROC=y
558CONFIG_RTC_INTF_DEV=y
559# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
560# CONFIG_RTC_DRV_TEST is not set
561
562#
563# I2C RTC drivers
564#
565
566#
567# SPI RTC drivers
568#
569
570#
571# Platform RTC drivers
572#
573# CONFIG_RTC_DRV_DS1553 is not set
574# CONFIG_RTC_DRV_DS1742 is not set
575# CONFIG_RTC_DRV_M48T86 is not set
576# CONFIG_RTC_DRV_V3020 is not set
577
578#
579# on-CPU RTC drivers
580#
581CONFIG_RTC_DRV_SH=y
582
583#
584# DMA Engine support
585#
586# CONFIG_DMA_ENGINE is not set
587
588#
589# DMA Clients
590#
591
592#
593# DMA Devices
594#
595
596#
597# File systems
598#
599CONFIG_EXT2_FS=y
600# CONFIG_EXT2_FS_XATTR is not set
601# CONFIG_EXT2_FS_XIP is not set
602CONFIG_EXT3_FS=y
603CONFIG_EXT3_FS_XATTR=y
604# CONFIG_EXT3_FS_POSIX_ACL is not set
605# CONFIG_EXT3_FS_SECURITY is not set
606# CONFIG_EXT4DEV_FS is not set
607CONFIG_JBD=y
608# CONFIG_JBD_DEBUG is not set
609CONFIG_FS_MBCACHE=y
610# CONFIG_REISERFS_FS is not set
611# CONFIG_JFS_FS is not set
612# CONFIG_FS_POSIX_ACL is not set
613# CONFIG_XFS_FS is not set
614# CONFIG_GFS2_FS is not set
615# CONFIG_MINIX_FS is not set
616# CONFIG_ROMFS_FS is not set
617CONFIG_INOTIFY=y
618CONFIG_INOTIFY_USER=y
619# CONFIG_QUOTA is not set
620CONFIG_DNOTIFY=y
621# CONFIG_AUTOFS_FS is not set
622# CONFIG_AUTOFS4_FS is not set
623# CONFIG_FUSE_FS is not set
624
625#
626# CD-ROM/DVD Filesystems
627#
628# CONFIG_ISO9660_FS is not set
629# CONFIG_UDF_FS is not set
630
631#
632# DOS/FAT/NT Filesystems
633#
634# CONFIG_MSDOS_FS is not set
635# CONFIG_VFAT_FS is not set
636# CONFIG_NTFS_FS is not set
637
638#
639# Pseudo filesystems
640#
641CONFIG_PROC_FS=y
642CONFIG_PROC_KCORE=y
643CONFIG_PROC_SYSCTL=y
644CONFIG_SYSFS=y
645CONFIG_TMPFS=y
646# CONFIG_TMPFS_POSIX_ACL is not set
647CONFIG_HUGETLBFS=y
648CONFIG_HUGETLB_PAGE=y
649CONFIG_RAMFS=y
650# CONFIG_CONFIGFS_FS is not set
651
652#
653# Miscellaneous filesystems
654#
655# CONFIG_ADFS_FS is not set
656# CONFIG_AFFS_FS is not set
657# CONFIG_HFS_FS is not set
658# CONFIG_HFSPLUS_FS is not set
659# CONFIG_BEFS_FS is not set
660# CONFIG_BFS_FS is not set
661# CONFIG_EFS_FS is not set
662# CONFIG_CRAMFS is not set
663# CONFIG_VXFS_FS is not set
664# CONFIG_HPFS_FS is not set
665# CONFIG_QNX4FS_FS is not set
666# CONFIG_SYSV_FS is not set
667# CONFIG_UFS_FS is not set
668
669#
670# Partition Types
671#
672# CONFIG_PARTITION_ADVANCED is not set
673CONFIG_MSDOS_PARTITION=y
674
675#
676# Native Language Support
677#
678# CONFIG_NLS is not set
679
680#
681# Profiling support
682#
683CONFIG_PROFILING=y
684# CONFIG_OPROFILE is not set
685
686#
687# Kernel hacking
688#
689CONFIG_TRACE_IRQFLAGS_SUPPORT=y
690CONFIG_PRINTK_TIME=y
691# CONFIG_ENABLE_MUST_CHECK is not set
692CONFIG_MAGIC_SYSRQ=y
693# CONFIG_UNUSED_SYMBOLS is not set
694CONFIG_DEBUG_FS=y
695# CONFIG_HEADERS_CHECK is not set
696CONFIG_DEBUG_KERNEL=y
697# CONFIG_DEBUG_SHIRQ is not set
698CONFIG_DETECT_SOFTLOCKUP=y
699# CONFIG_SCHEDSTATS is not set
700# CONFIG_TIMER_STATS is not set
701CONFIG_DEBUG_SLAB=y
702CONFIG_DEBUG_SLAB_LEAK=y
703CONFIG_DEBUG_PREEMPT=y
704# CONFIG_DEBUG_RT_MUTEXES is not set
705# CONFIG_RT_MUTEX_TESTER is not set
706CONFIG_DEBUG_SPINLOCK=y
707CONFIG_DEBUG_MUTEXES=y
708CONFIG_DEBUG_LOCK_ALLOC=y
709# CONFIG_PROVE_LOCKING is not set
710CONFIG_LOCKDEP=y
711CONFIG_DEBUG_LOCKDEP=y
712# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
713# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
714CONFIG_STACKTRACE=y
715# CONFIG_DEBUG_KOBJECT is not set
716CONFIG_DEBUG_BUGVERBOSE=y
717# CONFIG_DEBUG_INFO is not set
718CONFIG_DEBUG_VM=y
719# CONFIG_DEBUG_LIST is not set
720CONFIG_FRAME_POINTER=y
721CONFIG_FORCED_INLINING=y
722# CONFIG_RCU_TORTURE_TEST is not set
723# CONFIG_FAULT_INJECTION is not set
724CONFIG_SH_STANDARD_BIOS=y
725# CONFIG_EARLY_SCIF_CONSOLE is not set
726CONFIG_EARLY_PRINTK=y
727# CONFIG_DEBUG_BOOTMEM is not set
728CONFIG_DEBUG_STACKOVERFLOW=y
729CONFIG_DEBUG_STACK_USAGE=y
730# CONFIG_4KSTACKS is not set
731# CONFIG_SH_KGDB is not set
732
733#
734# Security options
735#
736# CONFIG_KEYS is not set
737# CONFIG_SECURITY is not set
738
739#
740# Cryptographic options
741#
742# CONFIG_CRYPTO is not set
743
744#
745# Library routines
746#
747CONFIG_BITREVERSE=y
748# CONFIG_CRC_CCITT is not set
749# CONFIG_CRC16 is not set
750# CONFIG_CRC_ITU_T is not set
751CONFIG_CRC32=y
752# CONFIG_LIBCRC32C is not set
753CONFIG_PLIST=y
754CONFIG_HAS_IOMEM=y
755CONFIG_HAS_IOPORT=y
756CONFIG_HAS_DMA=y
diff --git a/arch/sh/drivers/dma/Kconfig b/arch/sh/drivers/dma/Kconfig
index 99935f9daf4b..333898077c7c 100644
--- a/arch/sh/drivers/dma/Kconfig
+++ b/arch/sh/drivers/dma/Kconfig
@@ -36,23 +36,6 @@ config NR_DMA_CHANNELS
36 support. Setting this to a higher value allows for cascading DMACs 36 support. Setting this to a higher value allows for cascading DMACs
37 with additional channels. 37 with additional channels.
38 38
39config DMA_PAGE_OPS
40 bool "Use DMAC for page copy/clear"
41 depends on SH_DMA && BROKEN
42 help
43 Selecting this option will use a dual-address mode configured channel
44 in the SH DMAC for copy_page()/clear_page(). Primarily a performance
45 hack.
46
47config DMA_PAGE_OPS_CHANNEL
48 depends on DMA_PAGE_OPS
49 int "DMA channel for sh memory-manager page copy/clear"
50 default "3"
51 help
52 This allows the specification of the dual address dma channel,
53 in case channel 3 is unavailable. On the SH4, channels 1,2, and 3
54 are dual-address capable.
55
56config SH_DMABRG 39config SH_DMABRG
57 bool "SH7760 DMABRG support" 40 bool "SH7760 DMABRG support"
58 depends on CPU_SUBTYPE_SH7760 41 depends on CPU_SUBTYPE_SH7760
diff --git a/arch/sh/drivers/pci/Kconfig b/arch/sh/drivers/pci/Kconfig
index 6d1cbbe6745c..fbc6f2c8649f 100644
--- a/arch/sh/drivers/pci/Kconfig
+++ b/arch/sh/drivers/pci/Kconfig
@@ -1,5 +1,6 @@
1config PCI 1config PCI
2 bool "PCI support" 2 bool "PCI support"
3 depends on SYS_SUPPORTS_PCI
3 help 4 help
4 Find out whether you have a PCI motherboard. PCI is the name of a 5 Find out whether you have a PCI motherboard. PCI is the name of a
5 bus system, i.e. the way the CPU talks to the other stuff inside 6 bus system, i.e. the way the CPU talks to the other stuff inside
diff --git a/arch/sh/kernel/Makefile b/arch/sh/kernel/Makefile
index 9104b6257644..1f141a8ba17c 100644
--- a/arch/sh/kernel/Makefile
+++ b/arch/sh/kernel/Makefile
@@ -4,10 +4,9 @@
4 4
5extra-y := head.o init_task.o vmlinux.lds 5extra-y := head.o init_task.o vmlinux.lds
6 6
7obj-y := process.o signal.o traps.o irq.o \ 7obj-y := debugtraps.o io.o io_generic.o irq.o machvec.o process.o ptrace.o \
8 ptrace.o setup.o time.o sys_sh.o semaphore.o \ 8 semaphore.o setup.o signal.o sys_sh.o syscalls.o \
9 io.o io_generic.o sh_ksyms.o syscalls.o \ 9 time.o topology.o traps.o
10 debugtraps.o
11 10
12obj-y += cpu/ timers/ 11obj-y += cpu/ timers/
13obj-$(CONFIG_VSYSCALL) += vsyscall/ 12obj-$(CONFIG_VSYSCALL) += vsyscall/
@@ -17,7 +16,7 @@ obj-$(CONFIG_CF_ENABLER) += cf-enabler.o
17obj-$(CONFIG_SH_STANDARD_BIOS) += sh_bios.o 16obj-$(CONFIG_SH_STANDARD_BIOS) += sh_bios.o
18obj-$(CONFIG_SH_KGDB) += kgdb_stub.o kgdb_jmp.o 17obj-$(CONFIG_SH_KGDB) += kgdb_stub.o kgdb_jmp.o
19obj-$(CONFIG_SH_CPU_FREQ) += cpufreq.o 18obj-$(CONFIG_SH_CPU_FREQ) += cpufreq.o
20obj-$(CONFIG_MODULES) += module.o 19obj-$(CONFIG_MODULES) += sh_ksyms.o module.o
21obj-$(CONFIG_EARLY_PRINTK) += early_printk.o 20obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
22obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o 21obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o
23obj-$(CONFIG_CRASH_DUMP) += crash_dump.o 22obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
diff --git a/arch/sh/kernel/cf-enabler.c b/arch/sh/kernel/cf-enabler.c
index ebc73b85094a..1c3b99642e1c 100644
--- a/arch/sh/kernel/cf-enabler.c
+++ b/arch/sh/kernel/cf-enabler.c
@@ -75,11 +75,7 @@ static int __init cf_init_default(void)
75#if defined(CONFIG_CPU_SH4) 75#if defined(CONFIG_CPU_SH4)
76 allocate_cf_area(); 76 allocate_cf_area();
77#endif 77#endif
78#if defined(CONFIG_SH_UNKNOWN) 78
79 /* This should be done in each board's init_xxx_irq. */
80 make_imask_irq(14);
81 disable_irq(14);
82#endif
83 return 0; 79 return 0;
84} 80}
85 81
diff --git a/arch/sh/kernel/cpu/init.c b/arch/sh/kernel/cpu/init.c
index 6451ad630174..9172e97dc26a 100644
--- a/arch/sh/kernel/cpu/init.c
+++ b/arch/sh/kernel/cpu/init.c
@@ -21,8 +21,7 @@
21#include <asm/cacheflush.h> 21#include <asm/cacheflush.h>
22#include <asm/cache.h> 22#include <asm/cache.h>
23#include <asm/io.h> 23#include <asm/io.h>
24 24#include <asm/ubc.h>
25extern void detect_cpu_and_cache_system(void);
26 25
27/* 26/*
28 * Generic wrapper for command line arguments to disable on-chip 27 * Generic wrapper for command line arguments to disable on-chip
@@ -152,15 +151,6 @@ static void __init cache_init(void)
152 flags |= CCR_CACHE_CB; 151 flags |= CCR_CACHE_CB;
153#endif 152#endif
154 153
155#ifdef CONFIG_SH_OCRAM
156 /* Turn on OCRAM -- halve the OC */
157 flags |= CCR_CACHE_ORA;
158 current_cpu_data.dcache.sets >>= 1;
159
160 current_cpu_data.dcache.way_size = current_cpu_data.dcache.sets *
161 current_cpu_data.dcache.linesz;
162#endif
163
164 ctrl_outl(flags, CCR); 154 ctrl_outl(flags, CCR);
165 back_to_P1(); 155 back_to_P1();
166} 156}
@@ -269,7 +259,6 @@ asmlinkage void __init sh_cpu_init(void)
269 } 259 }
270#endif 260#endif
271 261
272#ifdef CONFIG_UBC_WAKEUP
273 /* 262 /*
274 * Some brain-damaged loaders decided it would be a good idea to put 263 * Some brain-damaged loaders decided it would be a good idea to put
275 * the UBC to sleep. This causes some issues when it comes to things 264 * the UBC to sleep. This causes some issues when it comes to things
@@ -277,7 +266,5 @@ asmlinkage void __init sh_cpu_init(void)
277 * we wake it up and hope that all is well. 266 * we wake it up and hope that all is well.
278 */ 267 */
279 ubc_wakeup(); 268 ubc_wakeup();
280#endif
281
282 speculative_execution_init(); 269 speculative_execution_init();
283} 270}
diff --git a/arch/sh/kernel/cpu/irq/intc2.c b/arch/sh/kernel/cpu/irq/intc2.c
index d8e22f4ff0f0..cc5221390e09 100644
--- a/arch/sh/kernel/cpu/irq/intc2.c
+++ b/arch/sh/kernel/cpu/irq/intc2.c
@@ -13,36 +13,31 @@
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/interrupt.h> 14#include <linux/interrupt.h>
15#include <linux/io.h> 15#include <linux/io.h>
16#include <asm/smp.h>
16 17
17#if defined(CONFIG_CPU_SUBTYPE_SH7760) 18static inline struct intc2_desc *get_intc2_desc(unsigned int irq)
18#define INTC2_BASE 0xfe080000 19{
19#define INTC2_INTMSK (INTC2_BASE + 0x40) 20 struct irq_chip *chip = get_irq_chip(irq);
20#define INTC2_INTMSKCLR (INTC2_BASE + 0x60) 21 return (void *)((char *)chip - offsetof(struct intc2_desc, chip));
21#elif defined(CONFIG_CPU_SUBTYPE_SH7780) || \ 22}
22 defined(CONFIG_CPU_SUBTYPE_SH7785)
23#define INTC2_BASE 0xffd40000
24#define INTC2_INTMSK (INTC2_BASE + 0x38)
25#define INTC2_INTMSKCLR (INTC2_BASE + 0x3c)
26#endif
27 23
28static void disable_intc2_irq(unsigned int irq) 24static void disable_intc2_irq(unsigned int irq)
29{ 25{
30 struct intc2_data *p = get_irq_chip_data(irq); 26 struct intc2_data *p = get_irq_chip_data(irq);
31 ctrl_outl(1 << p->msk_shift, INTC2_INTMSK + p->msk_offset); 27 struct intc2_desc *d = get_intc2_desc(irq);
28
29 ctrl_outl(1 << p->msk_shift, d->msk_base + p->msk_offset +
30 (hard_smp_processor_id() * 4));
32} 31}
33 32
34static void enable_intc2_irq(unsigned int irq) 33static void enable_intc2_irq(unsigned int irq)
35{ 34{
36 struct intc2_data *p = get_irq_chip_data(irq); 35 struct intc2_data *p = get_irq_chip_data(irq);
37 ctrl_outl(1 << p->msk_shift, INTC2_INTMSKCLR + p->msk_offset); 36 struct intc2_desc *d = get_intc2_desc(irq);
38}
39 37
40static struct irq_chip intc2_irq_chip = { 38 ctrl_outl(1 << p->msk_shift, d->mskclr_base + p->msk_offset +
41 .name = "INTC2", 39 (hard_smp_processor_id() * 4));
42 .mask = disable_intc2_irq, 40}
43 .unmask = enable_intc2_irq,
44 .mask_ack = disable_intc2_irq,
45};
46 41
47/* 42/*
48 * Setup an INTC2 style interrupt. 43 * Setup an INTC2 style interrupt.
@@ -56,30 +51,36 @@ static struct irq_chip intc2_irq_chip = {
56 * 51 *
57 * in the intc2_data table. 52 * in the intc2_data table.
58 */ 53 */
59void make_intc2_irq(struct intc2_data *table, unsigned int nr_irqs) 54void register_intc2_controller(struct intc2_desc *desc)
60{ 55{
61 int i; 56 int i;
62 57
63 for (i = 0; i < nr_irqs; i++) { 58 desc->chip.mask = disable_intc2_irq;
59 desc->chip.unmask = enable_intc2_irq;
60 desc->chip.mask_ack = disable_intc2_irq;
61
62 for (i = 0; i < desc->nr_irqs; i++) {
64 unsigned long ipr, flags; 63 unsigned long ipr, flags;
65 struct intc2_data *p = table + i; 64 struct intc2_data *p = desc->intc2_data + i;
66 65
67 disable_irq_nosync(p->irq); 66 disable_irq_nosync(p->irq);
68 67
69 /* Set the priority level */ 68 if (desc->prio_base) {
70 local_irq_save(flags); 69 /* Set the priority level */
70 local_irq_save(flags);
71 71
72 ipr = ctrl_inl(INTC2_BASE + p->ipr_offset); 72 ipr = ctrl_inl(desc->prio_base + p->ipr_offset);
73 ipr &= ~(0xf << p->ipr_shift); 73 ipr &= ~(0xf << p->ipr_shift);
74 ipr |= p->priority << p->ipr_shift; 74 ipr |= p->priority << p->ipr_shift;
75 ctrl_outl(ipr, INTC2_BASE + p->ipr_offset); 75 ctrl_outl(ipr, desc->prio_base + p->ipr_offset);
76 76
77 local_irq_restore(flags); 77 local_irq_restore(flags);
78 }
78 79
79 set_irq_chip_and_handler_name(p->irq, &intc2_irq_chip, 80 set_irq_chip_and_handler_name(p->irq, &desc->chip,
80 handle_level_irq, "level"); 81 handle_level_irq, "level");
81 set_irq_chip_data(p->irq, p); 82 set_irq_chip_data(p->irq, p);
82 83
83 enable_intc2_irq(p->irq); 84 disable_intc2_irq(p->irq);
84 } 85 }
85} 86}
diff --git a/arch/sh/kernel/cpu/irq/ipr.c b/arch/sh/kernel/cpu/irq/ipr.c
index 210280b6fddf..98e84f40c713 100644
--- a/arch/sh/kernel/cpu/irq/ipr.c
+++ b/arch/sh/kernel/cpu/irq/ipr.c
@@ -22,58 +22,57 @@
22#include <linux/io.h> 22#include <linux/io.h>
23#include <linux/interrupt.h> 23#include <linux/interrupt.h>
24 24
25static inline struct ipr_desc *get_ipr_desc(unsigned int irq)
26{
27 struct irq_chip *chip = get_irq_chip(irq);
28 return (void *)((char *)chip - offsetof(struct ipr_desc, chip));
29}
30
25static void disable_ipr_irq(unsigned int irq) 31static void disable_ipr_irq(unsigned int irq)
26{ 32{
27 struct ipr_data *p = get_irq_chip_data(irq); 33 struct ipr_data *p = get_irq_chip_data(irq);
34 unsigned long addr = get_ipr_desc(irq)->ipr_offsets[p->ipr_idx];
28 /* Set the priority in IPR to 0 */ 35 /* Set the priority in IPR to 0 */
29 ctrl_outw(ctrl_inw(p->addr) & (0xffff ^ (0xf << p->shift)), p->addr); 36 ctrl_outw(ctrl_inw(addr) & (0xffff ^ (0xf << p->shift)), addr);
30} 37}
31 38
32static void enable_ipr_irq(unsigned int irq) 39static void enable_ipr_irq(unsigned int irq)
33{ 40{
34 struct ipr_data *p = get_irq_chip_data(irq); 41 struct ipr_data *p = get_irq_chip_data(irq);
42 unsigned long addr = get_ipr_desc(irq)->ipr_offsets[p->ipr_idx];
35 /* Set priority in IPR back to original value */ 43 /* Set priority in IPR back to original value */
36 ctrl_outw(ctrl_inw(p->addr) | (p->priority << p->shift), p->addr); 44 ctrl_outw(ctrl_inw(addr) | (p->priority << p->shift), addr);
37} 45}
38 46
39static struct irq_chip ipr_irq_chip = { 47/*
40 .name = "IPR", 48 * The shift value is now the number of bits to shift, not the number of
41 .mask = disable_ipr_irq, 49 * bits/4. This is to make it easier to read the value directly from the
42 .unmask = enable_ipr_irq, 50 * datasheets. The IPR address is calculated using the ipr_offset table.
43 .mask_ack = disable_ipr_irq, 51 */
44};
45
46unsigned int map_ipridx_to_addr(int idx) __attribute__ ((weak));
47unsigned int map_ipridx_to_addr(int idx)
48{
49 return 0;
50}
51 52
52void make_ipr_irq(struct ipr_data *table, unsigned int nr_irqs) 53void register_ipr_controller(struct ipr_desc *desc)
53{ 54{
54 int i; 55 int i;
55 56
56 for (i = 0; i < nr_irqs; i++) { 57 desc->chip.mask = disable_ipr_irq;
57 unsigned int irq = table[i].irq; 58 desc->chip.unmask = enable_ipr_irq;
59 desc->chip.mask_ack = disable_ipr_irq;
58 60
59 if (!irq) 61 for (i = 0; i < desc->nr_irqs; i++) {
60 irq = table[i].irq = i; 62 struct ipr_data *p = desc->ipr_data + i;
61 63
62 /* could the IPR index be mapped, if not we ignore this */ 64 BUG_ON(p->ipr_idx >= desc->nr_offsets);
63 if (!table[i].addr) { 65 BUG_ON(!desc->ipr_offsets[p->ipr_idx]);
64 table[i].addr = map_ipridx_to_addr(table[i].ipr_idx);
65 if (!table[i].addr)
66 continue;
67 }
68 66
69 disable_irq_nosync(irq); 67 disable_irq_nosync(p->irq);
70 set_irq_chip_and_handler_name(irq, &ipr_irq_chip, 68 set_irq_chip_and_handler_name(p->irq, &desc->chip,
71 handle_level_irq, "level"); 69 handle_level_irq, "level");
72 set_irq_chip_data(irq, &table[i]); 70 set_irq_chip_data(p->irq, p);
73 enable_ipr_irq(irq); 71 disable_ipr_irq(p->irq);
74 } 72 }
75} 73}
76EXPORT_SYMBOL(make_ipr_irq); 74
75EXPORT_SYMBOL(register_ipr_controller);
77 76
78#if !defined(CONFIG_CPU_HAS_PINT_IRQ) 77#if !defined(CONFIG_CPU_HAS_PINT_IRQ)
79int ipr_irq_demux(int irq) 78int ipr_irq_demux(int irq)
diff --git a/arch/sh/kernel/cpu/sh2/entry.S b/arch/sh/kernel/cpu/sh2/entry.S
index c16dc8fec489..ee8f1fe84b08 100644
--- a/arch/sh/kernel/cpu/sh2/entry.S
+++ b/arch/sh/kernel/cpu/sh2/entry.S
@@ -311,6 +311,7 @@ restore_all:
311 rte 311 rte
312 nop 312 nop
313 313
314 .align 2
314#ifdef CONFIG_TRACE_IRQFLAGS 315#ifdef CONFIG_TRACE_IRQFLAGS
3151: .long trace_hardirqs_off 3161: .long trace_hardirqs_off
316#endif 317#endif
diff --git a/arch/sh/kernel/cpu/sh2/probe.c b/arch/sh/kernel/cpu/sh2/probe.c
index 108e81b682ed..abbf17427e52 100644
--- a/arch/sh/kernel/cpu/sh2/probe.c
+++ b/arch/sh/kernel/cpu/sh2/probe.c
@@ -9,23 +9,14 @@
9 * License. See the file "COPYING" in the main directory of this archive 9 * License. See the file "COPYING" in the main directory of this archive
10 * for more details. 10 * for more details.
11 */ 11 */
12
13
14#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/smp.h>
15#include <asm/processor.h> 14#include <asm/processor.h>
16#include <asm/cache.h> 15#include <asm/cache.h>
17 16
18int __init detect_cpu_and_cache_system(void) 17int __init detect_cpu_and_cache_system(void)
19{ 18{
20#if defined(CONFIG_CPU_SUBTYPE_SH7604) 19#if defined(CONFIG_CPU_SUBTYPE_SH7619)
21 current_cpu_data.type = CPU_SH7604;
22 current_cpu_data.dcache.ways = 4;
23 current_cpu_data.dcache.way_incr = (1<<10);
24 current_cpu_data.dcache.sets = 64;
25 current_cpu_data.dcache.entry_shift = 4;
26 current_cpu_data.dcache.linesz = L1_CACHE_BYTES;
27 current_cpu_data.dcache.flags = 0;
28#elif defined(CONFIG_CPU_SUBTYPE_SH7619)
29 current_cpu_data.type = CPU_SH7619; 20 current_cpu_data.type = CPU_SH7619;
30 current_cpu_data.dcache.ways = 4; 21 current_cpu_data.dcache.ways = 4;
31 current_cpu_data.dcache.way_incr = (1<<12); 22 current_cpu_data.dcache.way_incr = (1<<12);
diff --git a/arch/sh/kernel/cpu/sh2/setup-sh7619.c b/arch/sh/kernel/cpu/sh2/setup-sh7619.c
index f83ff8a68f35..1a107fe22dde 100644
--- a/arch/sh/kernel/cpu/sh2/setup-sh7619.c
+++ b/arch/sh/kernel/cpu/sh2/setup-sh7619.c
@@ -52,7 +52,7 @@ static int __init sh7619_devices_setup(void)
52} 52}
53__initcall(sh7619_devices_setup); 53__initcall(sh7619_devices_setup);
54 54
55static struct ipr_data sh7619_ipr_map[] = { 55static struct ipr_data ipr_irq_table[] = {
56 { 86, 0, 4, 2 }, /* CMI0 */ 56 { 86, 0, 4, 2 }, /* CMI0 */
57 { 88, 1, 12, 3 }, /* SCIF0_ERI */ 57 { 88, 1, 12, 3 }, /* SCIF0_ERI */
58 { 89, 1, 12, 3 }, /* SCIF0_RXI */ 58 { 89, 1, 12, 3 }, /* SCIF0_RXI */
@@ -68,7 +68,7 @@ static struct ipr_data sh7619_ipr_map[] = {
68 { 99, 1, 4, 3 }, /* SCIF2_TXI */ 68 { 99, 1, 4, 3 }, /* SCIF2_TXI */
69}; 69};
70 70
71static unsigned int ipr_offsets[] = { 71static unsigned long ipr_offsets[] = {
72 0xf8080000, /* IPRC */ 72 0xf8080000, /* IPRC */
73 0xf8080002, /* IPRD */ 73 0xf8080002, /* IPRD */
74 0xf8080004, /* IPRE */ 74 0xf8080004, /* IPRE */
@@ -76,15 +76,19 @@ static unsigned int ipr_offsets[] = {
76 0xf8080008, /* IPRG */ 76 0xf8080008, /* IPRG */
77}; 77};
78 78
79/* given the IPR index return the address of the IPR register */ 79static struct ipr_desc ipr_irq_desc = {
80unsigned int map_ipridx_to_addr(int idx) 80 .ipr_offsets = ipr_offsets,
81{ 81 .nr_offsets = ARRAY_SIZE(ipr_offsets),
82 if (unlikely(idx >= ARRAY_SIZE(ipr_offsets))) 82
83 return 0; 83 .ipr_data = ipr_irq_table,
84 return ipr_offsets[idx]; 84 .nr_irqs = ARRAY_SIZE(ipr_irq_table),
85} 85
86 .chip = {
87 .name = "IPR-sh7619",
88 },
89};
86 90
87void __init init_IRQ_ipr(void) 91void __init init_IRQ_ipr(void)
88{ 92{
89 make_ipr_irq(sh7619_ipr_map, ARRAY_SIZE(sh7619_ipr_map)); 93 register_ipr_controller(&ipr_irq_desc);
90} 94}
diff --git a/arch/sh/kernel/cpu/sh2a/setup-sh7206.c b/arch/sh/kernel/cpu/sh2a/setup-sh7206.c
index 4ed9110632bc..b6e3a6351fa6 100644
--- a/arch/sh/kernel/cpu/sh2a/setup-sh7206.c
+++ b/arch/sh/kernel/cpu/sh2a/setup-sh7206.c
@@ -57,7 +57,7 @@ static int __init sh7206_devices_setup(void)
57} 57}
58__initcall(sh7206_devices_setup); 58__initcall(sh7206_devices_setup);
59 59
60static struct ipr_data sh7206_ipr_map[] = { 60static struct ipr_data ipr_irq_table[] = {
61 { 140, 7, 12, 2 }, /* CMI0 */ 61 { 140, 7, 12, 2 }, /* CMI0 */
62 { 164, 8, 4, 2 }, /* MTU2_TGI1A */ 62 { 164, 8, 4, 2 }, /* MTU2_TGI1A */
63 { 240, 13, 12, 3 }, /* SCIF0_BRI */ 63 { 240, 13, 12, 3 }, /* SCIF0_BRI */
@@ -78,7 +78,7 @@ static struct ipr_data sh7206_ipr_map[] = {
78 { 255, 13, 0, 3 }, /* SCIF3_TXI */ 78 { 255, 13, 0, 3 }, /* SCIF3_TXI */
79}; 79};
80 80
81static unsigned int ipr_offsets[] = { 81static unsigned long ipr_offsets[] = {
82 0xfffe0818, /* IPR01 */ 82 0xfffe0818, /* IPR01 */
83 0xfffe081a, /* IPR02 */ 83 0xfffe081a, /* IPR02 */
84 0, /* unused */ 84 0, /* unused */
@@ -95,15 +95,19 @@ static unsigned int ipr_offsets[] = {
95 0xfffe0c10, /* IPR14 */ 95 0xfffe0c10, /* IPR14 */
96}; 96};
97 97
98/* given the IPR index return the address of the IPR register */ 98static struct ipr_desc ipr_irq_desc = {
99unsigned int map_ipridx_to_addr(int idx) 99 .ipr_offsets = ipr_offsets,
100{ 100 .nr_offsets = ARRAY_SIZE(ipr_offsets),
101 if (unlikely(idx >= ARRAY_SIZE(ipr_offsets))) 101
102 return 0; 102 .ipr_data = ipr_irq_table,
103 return ipr_offsets[idx]; 103 .nr_irqs = ARRAY_SIZE(ipr_irq_table),
104} 104
105 .chip = {
106 .name = "IPR-sh7206",
107 },
108};
105 109
106void __init init_IRQ_ipr(void) 110void __init init_IRQ_ipr(void)
107{ 111{
108 make_ipr_irq(sh7206_ipr_map, ARRAY_SIZE(sh7206_ipr_map)); 112 register_ipr_controller(&ipr_irq_desc);
109} 113}
diff --git a/arch/sh/kernel/cpu/sh3/entry.S b/arch/sh/kernel/cpu/sh3/entry.S
index b0b59d4a33ca..d8e122971c3e 100644
--- a/arch/sh/kernel/cpu/sh3/entry.S
+++ b/arch/sh/kernel/cpu/sh3/entry.S
@@ -340,8 +340,27 @@ ENTRY(vbr_base)
340general_exception: 340general_exception:
341 mov.l 1f, k2 341 mov.l 1f, k2
342 mov.l 2f, k3 342 mov.l 2f, k3
343#ifdef CONFIG_CPU_SUBTYPE_SHX3
344 mov.l @k2, k2
345
346 ! Is EXPEVT larger than 0x800?
347 mov #0x8, k0
348 shll8 k0
349 cmp/hs k0, k2
350 bf 0f
351
352 ! then add 0x580 (k2 is 0xd80 or 0xda0)
353 mov #0x58, k0
354 shll2 k0
355 shll2 k0
356 add k0, k2
3570:
358 bra handle_exception
359 nop
360#else
343 bra handle_exception 361 bra handle_exception
344 mov.l @k2, k2 362 mov.l @k2, k2
363#endif
345 .align 2 364 .align 2
3461: .long EXPEVT 3651: .long EXPEVT
3472: .long ret_from_exception 3662: .long ret_from_exception
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7705.c b/arch/sh/kernel/cpu/sh3/setup-sh7705.c
index 1983fb7ad6ea..a55b8ce2c54c 100644
--- a/arch/sh/kernel/cpu/sh3/setup-sh7705.c
+++ b/arch/sh/kernel/cpu/sh3/setup-sh7705.c
@@ -48,7 +48,7 @@ static int __init sh7705_devices_setup(void)
48} 48}
49__initcall(sh7705_devices_setup); 49__initcall(sh7705_devices_setup);
50 50
51static struct ipr_data sh7705_ipr_map[] = { 51static struct ipr_data ipr_irq_table[] = {
52 /* IRQ, IPR-idx, shift, priority */ 52 /* IRQ, IPR-idx, shift, priority */
53 { 16, 0, 12, 2 }, /* TMU0 TUNI*/ 53 { 16, 0, 12, 2 }, /* TMU0 TUNI*/
54 { 17, 0, 8, 2 }, /* TMU1 TUNI */ 54 { 17, 0, 8, 2 }, /* TMU1 TUNI */
@@ -70,25 +70,29 @@ static struct ipr_data sh7705_ipr_map[] = {
70}; 70};
71 71
72static unsigned long ipr_offsets[] = { 72static unsigned long ipr_offsets[] = {
73 0xFFFFFEE2 /* 0: IPRA */ 73 0xFFFFFEE2, /* 0: IPRA */
74, 0xFFFFFEE4 /* 1: IPRB */ 74 0xFFFFFEE4, /* 1: IPRB */
75, 0xA4000016 /* 2: IPRC */ 75 0xA4000016, /* 2: IPRC */
76, 0xA4000018 /* 3: IPRD */ 76 0xA4000018, /* 3: IPRD */
77, 0xA400001A /* 4: IPRE */ 77 0xA400001A, /* 4: IPRE */
78, 0xA4080000 /* 5: IPRF */ 78 0xA4080000, /* 5: IPRF */
79, 0xA4080002 /* 6: IPRG */ 79 0xA4080002, /* 6: IPRG */
80, 0xA4080004 /* 7: IPRH */ 80 0xA4080004, /* 7: IPRH */
81}; 81};
82 82
83/* given the IPR index return the address of the IPR register */ 83static struct ipr_desc ipr_irq_desc = {
84unsigned int map_ipridx_to_addr(int idx) 84 .ipr_offsets = ipr_offsets,
85{ 85 .nr_offsets = ARRAY_SIZE(ipr_offsets),
86 if (idx >= ARRAY_SIZE(ipr_offsets)) 86
87 return 0; 87 .ipr_data = ipr_irq_table,
88 return ipr_offsets[idx]; 88 .nr_irqs = ARRAY_SIZE(ipr_irq_table),
89} 89
90 .chip = {
91 .name = "IPR-sh7705",
92 },
93};
90 94
91void __init init_IRQ_ipr() 95void __init init_IRQ_ipr(void)
92{ 96{
93 make_ipr_irq(sh7705_ipr_map, ARRAY_SIZE(sh7705_ipr_map)); 97 register_ipr_controller(&ipr_irq_desc);
94} 98}
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7709.c b/arch/sh/kernel/cpu/sh3/setup-sh7709.c
index c7d7c35fc834..d79ec0c0522f 100644
--- a/arch/sh/kernel/cpu/sh3/setup-sh7709.c
+++ b/arch/sh/kernel/cpu/sh3/setup-sh7709.c
@@ -12,6 +12,26 @@
12#include <linux/serial.h> 12#include <linux/serial.h>
13#include <asm/sci.h> 13#include <asm/sci.h>
14 14
15static struct resource rtc_resources[] = {
16 [0] = {
17 .start = 0xfffffec0,
18 .end = 0xfffffec0 + 0x1e,
19 .flags = IORESOURCE_IO,
20 },
21 [1] = {
22 .start = 20,
23 .flags = IORESOURCE_IRQ,
24 },
25 [2] = {
26 .start = 21,
27 .flags = IORESOURCE_IRQ,
28 },
29 [3] = {
30 .start = 22,
31 .flags = IORESOURCE_IRQ,
32 },
33};
34
15static struct plat_sci_port sci_platform_data[] = { 35static struct plat_sci_port sci_platform_data[] = {
16 { 36 {
17 .mapbase = 0xfffffe80, 37 .mapbase = 0xfffffe80,
@@ -41,8 +61,16 @@ static struct platform_device sci_device = {
41 }, 61 },
42}; 62};
43 63
64static struct platform_device rtc_device = {
65 .name = "sh-rtc",
66 .id = -1,
67 .num_resources = ARRAY_SIZE(rtc_resources),
68 .resource = rtc_resources,
69};
70
44static struct platform_device *sh7709_devices[] __initdata = { 71static struct platform_device *sh7709_devices[] __initdata = {
45 &sci_device, 72 &sci_device,
73 &rtc_device,
46}; 74};
47 75
48static int __init sh7709_devices_setup(void) 76static int __init sh7709_devices_setup(void)
@@ -52,32 +80,66 @@ static int __init sh7709_devices_setup(void)
52} 80}
53__initcall(sh7709_devices_setup); 81__initcall(sh7709_devices_setup);
54 82
55#define IPRx(A,N) .addr=A, .shift=N 83static struct ipr_data ipr_irq_table[] = {
56#define IPRA(N) IPRx(0xfffffee2UL,N) 84 { 16, 0, 12, 2 }, /* TMU TUNI0 */
57#define IPRB(N) IPRx(0xfffffee4UL,N) 85 { 17, 0, 8, 4 }, /* TMU TUNI1 */
58#define IPRC(N) IPRx(0xa4000016UL,N) 86 { 18, 0, 4, 1 }, /* TMU TUNI1 */
59#define IPRD(N) IPRx(0xa4000018UL,N) 87 { 19, 0, 4, 1 }, /* TMU TUNI1 */
60#define IPRE(N) IPRx(0xa400001aUL,N) 88 { 20, 0, 0, 2 }, /* RTC CUI */
61 89 { 21, 0, 0, 2 }, /* RTC CUI */
62static struct ipr_data sh7709_ipr_map[] = { 90 { 22, 0, 0, 2 }, /* RTC CUI */
63 [16] = { IPRA(12), 2 }, /* TMU TUNI0 */ 91
64 [17] = { IPRA(8), 4 }, /* TMU TUNI1 */ 92 { 23, 1, 4, 3 }, /* SCI */
65 [18 ... 19] = { IPRA(4), 1 }, /* TMU TUNI1 */ 93 { 24, 1, 4, 3 }, /* SCI */
66 [20 ... 22] = { IPRA(0), 2 }, /* RTC CUI */ 94 { 25, 1, 4, 3 }, /* SCI */
67 [23 ... 26] = { IPRB(4), 3 }, /* SCI */ 95 { 26, 1, 4, 3 }, /* SCI */
68 [27] = { IPRB(12), 2 }, /* WDT ITI */ 96 { 27, 1, 12, 3 }, /* WDT ITI */
69 [32] = { IPRC(0), 1 }, /* IRQ 0 */ 97
70 [33] = { IPRC(4), 1 }, /* IRQ 1 */ 98 { 32, 2, 0, 1 }, /* IRQ 0 */
71 [34] = { IPRC(8), 1 }, /* IRQ 2 APM */ 99 { 33, 2, 4, 1 }, /* IRQ 1 */
72 [35] = { IPRC(12), 1 }, /* IRQ 3 TOUCHSCREEN */ 100 { 34, 2, 8, 1 }, /* IRQ 2 APM */
73 [36] = { IPRD(0), 1 }, /* IRQ 4 */ 101 { 35, 2, 12, 1 }, /* IRQ 3 TOUCHSCREEN */
74 [37] = { IPRD(4), 1 }, /* IRQ 5 */ 102
75 [48 ... 51] = { IPRE(12), 7 }, /* DMA */ 103 { 36, 3, 0, 1 }, /* IRQ 4 */
76 [52 ... 55] = { IPRE(8), 3 }, /* IRDA */ 104 { 37, 3, 4, 1 }, /* IRQ 5 */
77 [56 ... 59] = { IPRE(4), 3 }, /* SCIF */ 105
106 { 48, 4, 12, 7 }, /* DMA */
107 { 49, 4, 12, 7 }, /* DMA */
108 { 50, 4, 12, 7 }, /* DMA */
109 { 51, 4, 12, 7 }, /* DMA */
110
111 { 52, 4, 8, 3 }, /* IRDA */
112 { 53, 4, 8, 3 }, /* IRDA */
113 { 54, 4, 8, 3 }, /* IRDA */
114 { 55, 4, 8, 3 }, /* IRDA */
115
116 { 56, 4, 4, 3 }, /* SCIF */
117 { 57, 4, 4, 3 }, /* SCIF */
118 { 58, 4, 4, 3 }, /* SCIF */
119 { 59, 4, 4, 3 }, /* SCIF */
120};
121
122static unsigned long ipr_offsets[] = {
123 0xfffffee2, /* 0: IPRA */
124 0xfffffee4, /* 1: IPRB */
125 0xa4000016, /* 2: IPRC */
126 0xa4000018, /* 3: IPRD */
127 0xa400001a, /* 4: IPRE */
128};
129
130static struct ipr_desc ipr_irq_desc = {
131 .ipr_offsets = ipr_offsets,
132 .nr_offsets = ARRAY_SIZE(ipr_offsets),
133
134 .ipr_data = ipr_irq_table,
135 .nr_irqs = ARRAY_SIZE(ipr_irq_table),
136
137 .chip = {
138 .name = "IPR-sh7709",
139 },
78}; 140};
79 141
80void __init init_IRQ_ipr() 142void __init init_IRQ_ipr(void)
81{ 143{
82 make_ipr_irq(sh7709_ipr_map, ARRAY_SIZE(sh7709_ipr_map)); 144 register_ipr_controller(&ipr_irq_desc);
83} 145}
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7710.c b/arch/sh/kernel/cpu/sh3/setup-sh7710.c
index 51760a7e7f1c..f40e6dac337d 100644
--- a/arch/sh/kernel/cpu/sh3/setup-sh7710.c
+++ b/arch/sh/kernel/cpu/sh3/setup-sh7710.c
@@ -49,7 +49,7 @@ static int __init sh7710_devices_setup(void)
49} 49}
50__initcall(sh7710_devices_setup); 50__initcall(sh7710_devices_setup);
51 51
52static struct ipr_data sh7710_ipr_map[] = { 52static struct ipr_data ipr_irq_table[] = {
53 /* IRQ, IPR-idx, shift, priority */ 53 /* IRQ, IPR-idx, shift, priority */
54 { 16, 0, 12, 2 }, /* TMU0 TUNI*/ 54 { 16, 0, 12, 2 }, /* TMU0 TUNI*/
55 { 17, 0, 8, 2 }, /* TMU1 TUNI */ 55 { 17, 0, 8, 2 }, /* TMU1 TUNI */
@@ -78,26 +78,30 @@ static struct ipr_data sh7710_ipr_map[] = {
78}; 78};
79 79
80static unsigned long ipr_offsets[] = { 80static unsigned long ipr_offsets[] = {
81 0xA414FEE2 /* 0: IPRA */ 81 0xA414FEE2, /* 0: IPRA */
82, 0xA414FEE4 /* 1: IPRB */ 82 0xA414FEE4, /* 1: IPRB */
83, 0xA4140016 /* 2: IPRC */ 83 0xA4140016, /* 2: IPRC */
84, 0xA4140018 /* 3: IPRD */ 84 0xA4140018, /* 3: IPRD */
85, 0xA414001A /* 4: IPRE */ 85 0xA414001A, /* 4: IPRE */
86, 0xA4080000 /* 5: IPRF */ 86 0xA4080000, /* 5: IPRF */
87, 0xA4080002 /* 6: IPRG */ 87 0xA4080002, /* 6: IPRG */
88, 0xA4080004 /* 7: IPRH */ 88 0xA4080004, /* 7: IPRH */
89, 0xA4080006 /* 8: IPRI */ 89 0xA4080006, /* 8: IPRI */
90}; 90};
91 91
92/* given the IPR index return the address of the IPR register */ 92static struct ipr_desc ipr_irq_desc = {
93unsigned int map_ipridx_to_addr(int idx) 93 .ipr_offsets = ipr_offsets,
94{ 94 .nr_offsets = ARRAY_SIZE(ipr_offsets),
95 if (idx >= ARRAY_SIZE(ipr_offsets)) 95
96 return 0; 96 .ipr_data = ipr_irq_table,
97 return ipr_offsets[idx]; 97 .nr_irqs = ARRAY_SIZE(ipr_irq_table),
98} 98
99 .chip = {
100 .name = "IPR-sh7710",
101 },
102};
99 103
100void __init init_IRQ_ipr() 104void __init init_IRQ_ipr(void)
101{ 105{
102 make_ipr_irq(sh7710_ipr_map, ARRAY_SIZE(sh7710_ipr_map)); 106 register_ipr_controller(&ipr_irq_desc);
103} 107}
diff --git a/arch/sh/kernel/cpu/sh4/Makefile b/arch/sh/kernel/cpu/sh4/Makefile
index 8add10bd8268..dadd6bffc128 100644
--- a/arch/sh/kernel/cpu/sh4/Makefile
+++ b/arch/sh/kernel/cpu/sh4/Makefile
@@ -10,7 +10,11 @@ obj-$(CONFIG_SH_STORE_QUEUES) += sq.o
10 10
11# CPU subtype setup 11# CPU subtype setup
12obj-$(CONFIG_CPU_SUBTYPE_SH7750) += setup-sh7750.o 12obj-$(CONFIG_CPU_SUBTYPE_SH7750) += setup-sh7750.o
13obj-$(CONFIG_CPU_SUBTYPE_SH7750R) += setup-sh7750.o
14obj-$(CONFIG_CPU_SUBTYPE_SH7750S) += setup-sh7750.o
15obj-$(CONFIG_CPU_SUBTYPE_SH7091) += setup-sh7750.o
13obj-$(CONFIG_CPU_SUBTYPE_SH7751) += setup-sh7750.o 16obj-$(CONFIG_CPU_SUBTYPE_SH7751) += setup-sh7750.o
17obj-$(CONFIG_CPU_SUBTYPE_SH7751R) += setup-sh7750.o
14obj-$(CONFIG_CPU_SUBTYPE_SH7760) += setup-sh7760.o 18obj-$(CONFIG_CPU_SUBTYPE_SH7760) += setup-sh7760.o
15obj-$(CONFIG_CPU_SUBTYPE_SH4_202) += setup-sh4-202.o 19obj-$(CONFIG_CPU_SUBTYPE_SH4_202) += setup-sh4-202.o
16 20
diff --git a/arch/sh/kernel/cpu/sh4/probe.c b/arch/sh/kernel/cpu/sh4/probe.c
index fab2eb07196b..66c3f75647b2 100644
--- a/arch/sh/kernel/cpu/sh4/probe.c
+++ b/arch/sh/kernel/cpu/sh4/probe.c
@@ -141,6 +141,14 @@ int __init detect_cpu_and_cache_system(void)
141 current_cpu_data.flags |= CPU_HAS_LLSC; 141 current_cpu_data.flags |= CPU_HAS_LLSC;
142 } 142 }
143 break; 143 break;
144 case 0x4000: /* 1st cut */
145 case 0x4001: /* 2nd cut */
146 current_cpu_data.type = CPU_SHX3;
147 current_cpu_data.icache.ways = 4;
148 current_cpu_data.dcache.ways = 4;
149 current_cpu_data.flags |= CPU_HAS_FPU | CPU_HAS_PERF_COUNTER |
150 CPU_HAS_LLSC;
151 break;
144 case 0x8000: 152 case 0x8000:
145 current_cpu_data.type = CPU_ST40RA; 153 current_cpu_data.type = CPU_ST40RA;
146 current_cpu_data.flags |= CPU_HAS_FPU; 154 current_cpu_data.flags |= CPU_HAS_FPU;
diff --git a/arch/sh/kernel/cpu/sh4/setup-sh7750.c b/arch/sh/kernel/cpu/sh4/setup-sh7750.c
index 03b14cf78ddf..da153bcdfeb2 100644
--- a/arch/sh/kernel/cpu/sh4/setup-sh7750.c
+++ b/arch/sh/kernel/cpu/sh4/setup-sh7750.c
@@ -82,7 +82,7 @@ static int __init sh7750_devices_setup(void)
82} 82}
83__initcall(sh7750_devices_setup); 83__initcall(sh7750_devices_setup);
84 84
85static struct ipr_data sh7750_ipr_map[] = { 85static struct ipr_data ipr_irq_table[] = {
86 /* IRQ, IPR-idx, shift, priority */ 86 /* IRQ, IPR-idx, shift, priority */
87 { 16, 0, 12, 2 }, /* TMU0 TUNI*/ 87 { 16, 0, 12, 2 }, /* TMU0 TUNI*/
88 { 17, 0, 12, 2 }, /* TMU1 TUNI */ 88 { 17, 0, 12, 2 }, /* TMU1 TUNI */
@@ -106,8 +106,27 @@ static struct ipr_data sh7750_ipr_map[] = {
106 { 38, 2, 8, 7 }, /* DMAC DMAE */ 106 { 38, 2, 8, 7 }, /* DMAC DMAE */
107}; 107};
108 108
109static unsigned long ipr_offsets[] = {
110 0xffd00004UL, /* 0: IPRA */
111 0xffd00008UL, /* 1: IPRB */
112 0xffd0000cUL, /* 2: IPRC */
113 0xffd00010UL, /* 3: IPRD */
114};
115
116static struct ipr_desc ipr_irq_desc = {
117 .ipr_offsets = ipr_offsets,
118 .nr_offsets = ARRAY_SIZE(ipr_offsets),
119
120 .ipr_data = ipr_irq_table,
121 .nr_irqs = ARRAY_SIZE(ipr_irq_table),
122
123 .chip = {
124 .name = "IPR-sh7750",
125 },
126};
127
109#ifdef CONFIG_CPU_SUBTYPE_SH7751 128#ifdef CONFIG_CPU_SUBTYPE_SH7751
110static struct ipr_data sh7751_ipr_map[] = { 129static struct ipr_data ipr_irq_table_sh7751[] = {
111 { 44, 2, 8, 7 }, /* DMAC DMTE4 */ 130 { 44, 2, 8, 7 }, /* DMAC DMTE4 */
112 { 45, 2, 8, 7 }, /* DMAC DMTE5 */ 131 { 45, 2, 8, 7 }, /* DMAC DMTE5 */
113 { 46, 2, 8, 7 }, /* DMAC DMTE6 */ 132 { 46, 2, 8, 7 }, /* DMAC DMTE6 */
@@ -118,21 +137,26 @@ static struct ipr_data sh7751_ipr_map[] = {
118 /*{ 72, INTPRI00, 8, ? },*/ /* TMU3 TUNI */ 137 /*{ 72, INTPRI00, 8, ? },*/ /* TMU3 TUNI */
119 /*{ 76, INTPRI00, 12, ? },*/ /* TMU4 TUNI */ 138 /*{ 76, INTPRI00, 12, ? },*/ /* TMU4 TUNI */
120}; 139};
121#endif
122 140
123static unsigned long ipr_offsets[] = { 141static struct ipr_desc ipr_irq_desc_sh7751 = {
124 0xffd00004UL, /* 0: IPRA */ 142 .ipr_offsets = ipr_offsets,
125 0xffd00008UL, /* 1: IPRB */ 143 .nr_offsets = ARRAY_SIZE(ipr_offsets),
126 0xffd0000cUL, /* 2: IPRC */ 144
127 0xffd00010UL, /* 3: IPRD */ 145 .ipr_data = ipr_irq_table_sh7751,
146 .nr_irqs = ARRAY_SIZE(ipr_irq_table_sh7751),
147
148 .chip = {
149 .name = "IPR-sh7751",
150 },
128}; 151};
152#endif
129 153
130/* given the IPR index return the address of the IPR register */ 154void __init init_IRQ_ipr(void)
131unsigned int map_ipridx_to_addr(int idx)
132{ 155{
133 if (idx >= ARRAY_SIZE(ipr_offsets)) 156 register_ipr_controller(&ipr_irq_desc);
134 return 0; 157#ifdef CONFIG_CPU_SUBTYPE_SH7751
135 return ipr_offsets[idx]; 158 register_ipr_controller(&ipr_irq_desc_sh7751);
159#endif
136} 160}
137 161
138#define INTC_ICR 0xffd00000UL 162#define INTC_ICR 0xffd00000UL
@@ -143,11 +167,3 @@ void ipr_irq_enable_irlm(void)
143{ 167{
144 ctrl_outw(ctrl_inw(INTC_ICR) | INTC_ICR_IRLM, INTC_ICR); 168 ctrl_outw(ctrl_inw(INTC_ICR) | INTC_ICR_IRLM, INTC_ICR);
145} 169}
146
147void __init init_IRQ_ipr()
148{
149 make_ipr_irq(sh7750_ipr_map, ARRAY_SIZE(sh7750_ipr_map));
150#ifdef CONFIG_CPU_SUBTYPE_SH7751
151 make_ipr_irq(sh7751_ipr_map, ARRAY_SIZE(sh7751_ipr_map));
152#endif
153}
diff --git a/arch/sh/kernel/cpu/sh4/setup-sh7760.c b/arch/sh/kernel/cpu/sh4/setup-sh7760.c
index b7c702821e6f..3df169755673 100644
--- a/arch/sh/kernel/cpu/sh4/setup-sh7760.c
+++ b/arch/sh/kernel/cpu/sh4/setup-sh7760.c
@@ -96,7 +96,25 @@ static struct intc2_data intc2_irq_table[] = {
96 {109,12, 0, 4, 0, 3}, /* CMTI */ 96 {109,12, 0, 4, 0, 3}, /* CMTI */
97}; 97};
98 98
99static struct ipr_data sh7760_ipr_map[] = { 99static struct intc2_desc intc2_irq_desc __read_mostly = {
100 .prio_base = 0xfe080000,
101 .msk_base = 0xfe080040,
102 .mskclr_base = 0xfe080060,
103
104 .intc2_data = intc2_irq_table,
105 .nr_irqs = ARRAY_SIZE(intc2_irq_table),
106
107 .chip = {
108 .name = "INTC2-sh7760",
109 },
110};
111
112void __init init_IRQ_intc2(void)
113{
114 register_intc2_controller(&intc2_irq_desc);
115}
116
117static struct ipr_data ipr_irq_table[] = {
100 /* IRQ, IPR-idx, shift, priority */ 118 /* IRQ, IPR-idx, shift, priority */
101 { 16, 0, 12, 2 }, /* TMU0 TUNI*/ 119 { 16, 0, 12, 2 }, /* TMU0 TUNI*/
102 { 17, 0, 8, 2 }, /* TMU1 TUNI */ 120 { 17, 0, 8, 2 }, /* TMU1 TUNI */
@@ -133,20 +151,19 @@ static unsigned long ipr_offsets[] = {
133 0xffd00010UL, /* 3: IPRD */ 151 0xffd00010UL, /* 3: IPRD */
134}; 152};
135 153
136/* given the IPR index return the address of the IPR register */ 154static struct ipr_desc ipr_irq_desc = {
137unsigned int map_ipridx_to_addr(int idx) 155 .ipr_offsets = ipr_offsets,
138{ 156 .nr_offsets = ARRAY_SIZE(ipr_offsets),
139 if (idx >= ARRAY_SIZE(ipr_offsets))
140 return 0;
141 return ipr_offsets[idx];
142}
143 157
144void __init init_IRQ_intc2(void) 158 .ipr_data = ipr_irq_table,
145{ 159 .nr_irqs = ARRAY_SIZE(ipr_irq_table),
146 make_intc2_irq(intc2_irq_table, ARRAY_SIZE(intc2_irq_table)); 160
147} 161 .chip = {
162 .name = "IPR-sh7760",
163 },
164};
148 165
149void __init init_IRQ_ipr(void) 166void __init init_IRQ_ipr(void)
150{ 167{
151 make_ipr_irq(sh7760_ipr_map, ARRAY_SIZE(sh7760_ipr_map)); 168 register_ipr_controller(&ipr_irq_desc);
152} 169}
diff --git a/arch/sh/kernel/cpu/sh4a/Makefile b/arch/sh/kernel/cpu/sh4a/Makefile
index ab7422f8f820..400623286487 100644
--- a/arch/sh/kernel/cpu/sh4a/Makefile
+++ b/arch/sh/kernel/cpu/sh4a/Makefile
@@ -9,6 +9,7 @@ obj-$(CONFIG_CPU_SUBTYPE_SH7785) += setup-sh7785.o
9obj-$(CONFIG_CPU_SUBTYPE_SH73180) += setup-sh73180.o 9obj-$(CONFIG_CPU_SUBTYPE_SH73180) += setup-sh73180.o
10obj-$(CONFIG_CPU_SUBTYPE_SH7343) += setup-sh7343.o 10obj-$(CONFIG_CPU_SUBTYPE_SH7343) += setup-sh7343.o
11obj-$(CONFIG_CPU_SUBTYPE_SH7722) += setup-sh7722.o 11obj-$(CONFIG_CPU_SUBTYPE_SH7722) += setup-sh7722.o
12obj-$(CONFIG_CPU_SUBTYPE_SHX3) += setup-shx3.o
12 13
13# Primary on-chip clocks (common) 14# Primary on-chip clocks (common)
14clock-$(CONFIG_CPU_SUBTYPE_SH73180) := clock-sh73180.o 15clock-$(CONFIG_CPU_SUBTYPE_SH73180) := clock-sh73180.o
@@ -17,5 +18,6 @@ clock-$(CONFIG_CPU_SUBTYPE_SH7780) := clock-sh7780.o
17clock-$(CONFIG_CPU_SUBTYPE_SH7785) := clock-sh7785.o 18clock-$(CONFIG_CPU_SUBTYPE_SH7785) := clock-sh7785.o
18clock-$(CONFIG_CPU_SUBTYPE_SH7343) := clock-sh7343.o 19clock-$(CONFIG_CPU_SUBTYPE_SH7343) := clock-sh7343.o
19clock-$(CONFIG_CPU_SUBTYPE_SH7722) := clock-sh7722.o 20clock-$(CONFIG_CPU_SUBTYPE_SH7722) := clock-sh7722.o
21clock-$(CONFIG_CPU_SUBTYPE_SHX3) := clock-shx3.o
20 22
21obj-y += $(clock-y) 23obj-y += $(clock-y)
diff --git a/arch/sh/kernel/cpu/sh4a/clock-shx3.c b/arch/sh/kernel/cpu/sh4a/clock-shx3.c
new file mode 100644
index 000000000000..c630b29e06a8
--- /dev/null
+++ b/arch/sh/kernel/cpu/sh4a/clock-shx3.c
@@ -0,0 +1,135 @@
1/*
2 * arch/sh/kernel/cpu/sh4/clock-shx3.c
3 *
4 * SH-X3 support for the clock framework
5 *
6 * Copyright (C) 2006-2007 Renesas Technology Corp.
7 * Copyright (C) 2006-2007 Renesas Solutions Corp.
8 * Copyright (C) 2006-2007 Paul Mundt
9 *
10 * This file is subject to the terms and conditions of the GNU General Public
11 * License. See the file "COPYING" in the main directory of this archive
12 * for more details.
13 */
14#include <linux/init.h>
15#include <linux/kernel.h>
16#include <asm/clock.h>
17#include <asm/freq.h>
18#include <asm/io.h>
19
20static int ifc_divisors[] = { 1, 2, 4 ,6 };
21static int bfc_divisors[] = { 1, 1, 1, 1, 1, 12, 16, 18, 24, 32, 36, 48 };
22static int pfc_divisors[] = { 1, 1, 1, 1, 1, 1, 1, 18, 24, 32, 36, 48 };
23static int cfc_divisors[] = { 1, 1, 4, 6 };
24
25#define IFC_POS 28
26#define IFC_MSK 0x0003
27#define BFC_MSK 0x000f
28#define PFC_MSK 0x000f
29#define CFC_MSK 0x0003
30#define BFC_POS 16
31#define PFC_POS 0
32#define CFC_POS 20
33
34static void master_clk_init(struct clk *clk)
35{
36 clk->rate *= pfc_divisors[(ctrl_inl(FRQCR) >> PFC_POS) & PFC_MSK];
37}
38
39static struct clk_ops shx3_master_clk_ops = {
40 .init = master_clk_init,
41};
42
43static void module_clk_recalc(struct clk *clk)
44{
45 int idx = ((ctrl_inl(FRQCR) >> PFC_POS) & PFC_MSK);
46 clk->rate = clk->parent->rate / pfc_divisors[idx];
47}
48
49static struct clk_ops shx3_module_clk_ops = {
50 .recalc = module_clk_recalc,
51};
52
53static void bus_clk_recalc(struct clk *clk)
54{
55 int idx = ((ctrl_inl(FRQCR) >> BFC_POS) & BFC_MSK);
56 clk->rate = clk->parent->rate / bfc_divisors[idx];
57}
58
59static struct clk_ops shx3_bus_clk_ops = {
60 .recalc = bus_clk_recalc,
61};
62
63static void cpu_clk_recalc(struct clk *clk)
64{
65 int idx = ((ctrl_inl(FRQCR) >> IFC_POS) & IFC_MSK);
66 clk->rate = clk->parent->rate / ifc_divisors[idx];
67}
68
69static struct clk_ops shx3_cpu_clk_ops = {
70 .recalc = cpu_clk_recalc,
71};
72
73static struct clk_ops *shx3_clk_ops[] = {
74 &shx3_master_clk_ops,
75 &shx3_module_clk_ops,
76 &shx3_bus_clk_ops,
77 &shx3_cpu_clk_ops,
78};
79
80void __init arch_init_clk_ops(struct clk_ops **ops, int idx)
81{
82 if (idx < ARRAY_SIZE(shx3_clk_ops))
83 *ops = shx3_clk_ops[idx];
84}
85
86static void shyway_clk_recalc(struct clk *clk)
87{
88 int idx = ((ctrl_inl(FRQCR) >> CFC_POS) & CFC_MSK);
89 clk->rate = clk->parent->rate / cfc_divisors[idx];
90}
91
92static struct clk_ops shx3_shyway_clk_ops = {
93 .recalc = shyway_clk_recalc,
94};
95
96static struct clk shx3_shyway_clk = {
97 .name = "shyway_clk",
98 .flags = CLK_ALWAYS_ENABLED,
99 .ops = &shx3_shyway_clk_ops,
100};
101
102/*
103 * Additional SHx3-specific on-chip clocks that aren't already part of the
104 * clock framework
105 */
106static struct clk *shx3_onchip_clocks[] = {
107 &shx3_shyway_clk,
108};
109
110static int __init shx3_clk_init(void)
111{
112 struct clk *clk = clk_get(NULL, "master_clk");
113 int i;
114
115 for (i = 0; i < ARRAY_SIZE(shx3_onchip_clocks); i++) {
116 struct clk *clkp = shx3_onchip_clocks[i];
117
118 clkp->parent = clk;
119 clk_register(clkp);
120 clk_enable(clkp);
121 }
122
123 /*
124 * Now that we have the rest of the clocks registered, we need to
125 * force the parent clock to propagate so that these clocks will
126 * automatically figure out their rate. We cheat by handing the
127 * parent clock its current rate and forcing child propagation.
128 */
129 clk_set_rate(clk, clk_get_rate(clk));
130
131 clk_put(clk);
132
133 return 0;
134}
135arch_initcall(shx3_clk_init);
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
index 1143fbf65faf..a3e159ef6dfe 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * SH7722 Setup 2 * SH7722 Setup
3 * 3 *
4 * Copyright (C) 2006 Paul Mundt 4 * Copyright (C) 2006 - 2007 Paul Mundt
5 * 5 *
6 * This file is subject to the terms and conditions of the GNU General Public 6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive 7 * License. See the file "COPYING" in the main directory of this archive
@@ -10,6 +10,8 @@
10#include <linux/platform_device.h> 10#include <linux/platform_device.h>
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/serial.h> 12#include <linux/serial.h>
13#include <linux/mm.h>
14#include <asm/mmzone.h>
13#include <asm/sci.h> 15#include <asm/sci.h>
14 16
15static struct plat_sci_port sci_platform_data[] = { 17static struct plat_sci_port sci_platform_data[] = {
@@ -42,7 +44,7 @@ static int __init sh7722_devices_setup(void)
42} 44}
43__initcall(sh7722_devices_setup); 45__initcall(sh7722_devices_setup);
44 46
45static struct ipr_data sh7722_ipr_map[] = { 47static struct ipr_data ipr_irq_table[] = {
46 /* IRQ, IPR-idx, shift, prio */ 48 /* IRQ, IPR-idx, shift, prio */
47 { 16, 0, 12, 2 }, /* TMU0 */ 49 { 16, 0, 12, 2 }, /* TMU0 */
48 { 17, 0, 8, 2 }, /* TMU1 */ 50 { 17, 0, 8, 2 }, /* TMU1 */
@@ -67,14 +69,25 @@ static unsigned long ipr_offsets[] = {
67 0xa408002c, /* 11: IPRL */ 69 0xa408002c, /* 11: IPRL */
68}; 70};
69 71
70unsigned int map_ipridx_to_addr(int idx) 72static struct ipr_desc ipr_irq_desc = {
73 .ipr_offsets = ipr_offsets,
74 .nr_offsets = ARRAY_SIZE(ipr_offsets),
75
76 .ipr_data = ipr_irq_table,
77 .nr_irqs = ARRAY_SIZE(ipr_irq_table),
78
79 .chip = {
80 .name = "IPR-sh7722",
81 },
82};
83
84void __init init_IRQ_ipr(void)
71{ 85{
72 if (unlikely(idx >= ARRAY_SIZE(ipr_offsets))) 86 register_ipr_controller(&ipr_irq_desc);
73 return 0;
74 return ipr_offsets[idx];
75} 87}
76 88
77void __init init_IRQ_ipr(void) 89void __init plat_mem_setup(void)
78{ 90{
79 make_ipr_irq(sh7722_ipr_map, ARRAY_SIZE(sh7722_ipr_map)); 91 /* Register the URAM space as Node 1 */
92 setup_bootmem_node(1, 0x055f0000, 0x05610000);
80} 93}
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7780.c b/arch/sh/kernel/cpu/sh4a/setup-sh7780.c
index 9aeaa2ddaa28..b57c760bffde 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7780.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7780.c
@@ -102,7 +102,20 @@ static struct intc2_data intc2_irq_table[] = {
102 { 68, 0x14, 8, 0, 18, 2 }, /* PCIC4 */ 102 { 68, 0x14, 8, 0, 18, 2 }, /* PCIC4 */
103}; 103};
104 104
105static struct intc2_desc intc2_irq_desc __read_mostly = {
106 .prio_base = 0xffd40000,
107 .msk_base = 0xffd40038,
108 .mskclr_base = 0xffd4003c,
109
110 .intc2_data = intc2_irq_table,
111 .nr_irqs = ARRAY_SIZE(intc2_irq_table),
112
113 .chip = {
114 .name = "INTC2-sh7780",
115 },
116};
117
105void __init init_IRQ_intc2(void) 118void __init init_IRQ_intc2(void)
106{ 119{
107 make_intc2_irq(intc2_irq_table, ARRAY_SIZE(intc2_irq_table)); 120 register_intc2_controller(&intc2_irq_desc);
108} 121}
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7785.c b/arch/sh/kernel/cpu/sh4a/setup-sh7785.c
index 07b0de82cfe6..ce10ec5d6914 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7785.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7785.c
@@ -97,7 +97,21 @@ static struct intc2_data intc2_irq_table[] = {
97 { 60, 12, 16, 0, 7, 3 }, /* SCIF5 ERI, RXI, BRI, TXI */ 97 { 60, 12, 16, 0, 7, 3 }, /* SCIF5 ERI, RXI, BRI, TXI */
98}; 98};
99 99
100static struct intc2_desc intc2_irq_desc __read_mostly = {
101 .prio_base = 0xffd40000,
102 .msk_base = 0xffd40038,
103 .mskclr_base = 0xffd4003c,
104
105 .intc2_data = intc2_irq_table,
106 .nr_irqs = ARRAY_SIZE(intc2_irq_table),
107
108 .chip = {
109 .name = "INTC2-sh7785",
110 },
111};
112
100void __init init_IRQ_intc2(void) 113void __init init_IRQ_intc2(void)
101{ 114{
102 make_intc2_irq(intc2_irq_table, ARRAY_SIZE(intc2_irq_table)); 115 register_intc2_controller(&intc2_irq_desc);
103} 116}
117
diff --git a/arch/sh/kernel/cpu/sh4a/setup-shx3.c b/arch/sh/kernel/cpu/sh4a/setup-shx3.c
new file mode 100644
index 000000000000..70683ea12b83
--- /dev/null
+++ b/arch/sh/kernel/cpu/sh4a/setup-shx3.c
@@ -0,0 +1,85 @@
1/*
2 * SH-X3 Setup
3 *
4 * Copyright (C) 2007 Paul Mundt
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10#include <linux/platform_device.h>
11#include <linux/init.h>
12#include <linux/serial.h>
13#include <linux/io.h>
14#include <asm/sci.h>
15
16static struct plat_sci_port sci_platform_data[] = {
17 {
18 .mapbase = 0xffc30000,
19 .flags = UPF_BOOT_AUTOCONF,
20 .type = PORT_SCIF,
21 .irqs = { 40, 41, 43, 42 },
22 }, {
23 .mapbase = 0xffc40000,
24 .flags = UPF_BOOT_AUTOCONF,
25 .type = PORT_SCIF,
26 .irqs = { 44, 45, 47, 46 },
27 }, {
28 .mapbase = 0xffc50000,
29 .flags = UPF_BOOT_AUTOCONF,
30 .type = PORT_SCIF,
31 .irqs = { 48, 49, 51, 50 },
32 }, {
33 .mapbase = 0xffc60000,
34 .flags = UPF_BOOT_AUTOCONF,
35 .type = PORT_SCIF,
36 .irqs = { 52, 53, 55, 54 },
37 }, {
38 .flags = 0,
39 }
40};
41
42static struct platform_device sci_device = {
43 .name = "sh-sci",
44 .id = -1,
45 .dev = {
46 .platform_data = sci_platform_data,
47 },
48};
49
50static struct platform_device *shx3_devices[] __initdata = {
51 &sci_device,
52};
53
54static int __init shx3_devices_setup(void)
55{
56 return platform_add_devices(shx3_devices,
57 ARRAY_SIZE(shx3_devices));
58}
59__initcall(shx3_devices_setup);
60
61static struct intc2_data intc2_irq_table[] = {
62 { 16, 0, 0, 0, 1, 2 }, /* TMU0 */
63 { 40, 4, 0, 0x20, 0, 3 }, /* SCIF0 ERI */
64 { 41, 4, 0, 0x20, 1, 3 }, /* SCIF0 RXI */
65 { 42, 4, 0, 0x20, 2, 3 }, /* SCIF0 BRI */
66 { 43, 4, 0, 0x20, 3, 3 }, /* SCIF0 TXI */
67};
68
69static struct intc2_desc intc2_irq_desc __read_mostly = {
70 .prio_base = 0xfe410000,
71 .msk_base = 0xfe410820,
72 .mskclr_base = 0xfe410850,
73
74 .intc2_data = intc2_irq_table,
75 .nr_irqs = ARRAY_SIZE(intc2_irq_table),
76
77 .chip = {
78 .name = "INTC2-SHX3",
79 },
80};
81
82void __init init_IRQ_intc2(void)
83{
84 register_intc2_controller(&intc2_irq_desc);
85}
diff --git a/arch/sh/kernel/irq.c b/arch/sh/kernel/irq.c
index 27b923c45b3d..27897798867a 100644
--- a/arch/sh/kernel/irq.c
+++ b/arch/sh/kernel/irq.c
@@ -158,15 +158,11 @@ asmlinkage int do_IRQ(unsigned int irq, struct pt_regs *regs)
158} 158}
159 159
160#ifdef CONFIG_4KSTACKS 160#ifdef CONFIG_4KSTACKS
161/*
162 * These should really be __section__(".bss.page_aligned") as well, but
163 * gcc's 3.0 and earlier don't handle that correctly.
164 */
165static char softirq_stack[NR_CPUS * THREAD_SIZE] 161static char softirq_stack[NR_CPUS * THREAD_SIZE]
166 __attribute__((__aligned__(THREAD_SIZE))); 162 __attribute__((__section__(".bss.page_aligned")));
167 163
168static char hardirq_stack[NR_CPUS * THREAD_SIZE] 164static char hardirq_stack[NR_CPUS * THREAD_SIZE]
169 __attribute__((__aligned__(THREAD_SIZE))); 165 __attribute__((__section__(".bss.page_aligned")));
170 166
171/* 167/*
172 * allocate per-cpu stacks for hardirq and for softirq processing 168 * allocate per-cpu stacks for hardirq and for softirq processing
diff --git a/arch/sh/kernel/machvec.c b/arch/sh/kernel/machvec.c
new file mode 100644
index 000000000000..23c5948f0124
--- /dev/null
+++ b/arch/sh/kernel/machvec.c
@@ -0,0 +1,130 @@
1/*
2 * arch/sh/kernel/machvec.c
3 *
4 * The SuperH machine vector setup handlers, yanked from setup.c
5 *
6 * Copyright (C) 1999 Niibe Yutaka
7 * Copyright (C) 2002 - 2007 Paul Mundt
8 *
9 * This file is subject to the terms and conditions of the GNU General Public
10 * License. See the file "COPYING" in the main directory of this archive
11 * for more details.
12 */
13#include <linux/init.h>
14#include <linux/string.h>
15#include <asm/machvec.h>
16#include <asm/sections.h>
17#include <asm/io.h>
18#include <asm/irq.h>
19
20#define MV_NAME_SIZE 32
21
22#define for_each_mv(mv) \
23 for ((mv) = (struct sh_machine_vector *)&__machvec_start; \
24 (mv) && (unsigned long)(mv) < (unsigned long)&__machvec_end; \
25 (mv)++)
26
27static struct sh_machine_vector * __init get_mv_byname(const char *name)
28{
29 struct sh_machine_vector *mv;
30
31 for_each_mv(mv)
32 if (strcasecmp(name, mv->mv_name) == 0)
33 return mv;
34
35 return NULL;
36}
37
38static unsigned int __initdata machvec_selected;
39
40static int __init early_parse_mv(char *from)
41{
42 char mv_name[MV_NAME_SIZE] = "";
43 char *mv_end;
44 char *mv_comma;
45 int mv_len;
46 struct sh_machine_vector *mvp;
47
48 mv_end = strchr(from, ' ');
49 if (mv_end == NULL)
50 mv_end = from + strlen(from);
51
52 mv_comma = strchr(from, ',');
53 mv_len = mv_end - from;
54 if (mv_len > (MV_NAME_SIZE-1))
55 mv_len = MV_NAME_SIZE-1;
56 memcpy(mv_name, from, mv_len);
57 mv_name[mv_len] = '\0';
58 from = mv_end;
59
60 machvec_selected = 1;
61
62 /* Boot with the generic vector */
63 if (strcmp(mv_name, "generic") == 0)
64 return 0;
65
66 mvp = get_mv_byname(mv_name);
67 if (unlikely(!mvp)) {
68 printk("Available vectors:\n\n\t'%s', ", sh_mv.mv_name);
69 for_each_mv(mvp)
70 printk("'%s', ", mvp->mv_name);
71 printk("\n\n");
72 panic("Failed to select machvec '%s' -- halting.\n",
73 mv_name);
74 } else
75 sh_mv = *mvp;
76
77 return 0;
78}
79early_param("sh_mv", early_parse_mv);
80
81void __init sh_mv_setup(void)
82{
83 /*
84 * Only overload the machvec if one hasn't been selected on
85 * the command line with sh_mv=
86 */
87 if (!machvec_selected) {
88 unsigned long machvec_size;
89
90 machvec_size = ((unsigned long)&__machvec_end -
91 (unsigned long)&__machvec_start);
92
93 /*
94 * If the machvec hasn't been preselected, use the first
95 * vector (usually the only one) from .machvec.init.
96 */
97 if (machvec_size >= sizeof(struct sh_machine_vector))
98 sh_mv = *(struct sh_machine_vector *)&__machvec_start;
99 }
100
101 printk(KERN_NOTICE "Booting machvec: %s\n", get_system_type());
102
103 /*
104 * Manually walk the vec, fill in anything that the board hasn't yet
105 * by hand, wrapping to the generic implementation.
106 */
107#define mv_set(elem) do { \
108 if (!sh_mv.mv_##elem) \
109 sh_mv.mv_##elem = generic_##elem; \
110} while (0)
111
112 mv_set(inb); mv_set(inw); mv_set(inl);
113 mv_set(outb); mv_set(outw); mv_set(outl);
114
115 mv_set(inb_p); mv_set(inw_p); mv_set(inl_p);
116 mv_set(outb_p); mv_set(outw_p); mv_set(outl_p);
117
118 mv_set(insb); mv_set(insw); mv_set(insl);
119 mv_set(outsb); mv_set(outsw); mv_set(outsl);
120
121 mv_set(readb); mv_set(readw); mv_set(readl);
122 mv_set(writeb); mv_set(writew); mv_set(writel);
123
124 mv_set(ioport_map);
125 mv_set(ioport_unmap);
126 mv_set(irq_demux);
127
128 if (!sh_mv.mv_nr_irqs)
129 sh_mv.mv_nr_irqs = NR_IRQS;
130}
diff --git a/arch/sh/kernel/process.c b/arch/sh/kernel/process.c
index a11e2aa73cbc..6334a4c54c7c 100644
--- a/arch/sh/kernel/process.c
+++ b/arch/sh/kernel/process.c
@@ -17,6 +17,7 @@
17#include <linux/kexec.h> 17#include <linux/kexec.h>
18#include <linux/kdebug.h> 18#include <linux/kdebug.h>
19#include <linux/tick.h> 19#include <linux/tick.h>
20#include <linux/reboot.h>
20#include <asm/uaccess.h> 21#include <asm/uaccess.h>
21#include <asm/mmu_context.h> 22#include <asm/mmu_context.h>
22#include <asm/pgalloc.h> 23#include <asm/pgalloc.h>
@@ -319,9 +320,7 @@ static void ubc_set_tracing(int asid, unsigned long pc)
319 ctrl_outl(pc, UBC_BARA); 320 ctrl_outl(pc, UBC_BARA);
320 321
321#ifdef CONFIG_MMU 322#ifdef CONFIG_MMU
322 /* We don't have any ASID settings for the SH-2! */ 323 ctrl_outb(asid, UBC_BASRA);
323 if (current_cpu_data.type != CPU_SH7604)
324 ctrl_outb(asid, UBC_BASRA);
325#endif 324#endif
326 325
327 ctrl_outl(0, UBC_BAMRA); 326 ctrl_outl(0, UBC_BAMRA);
@@ -405,8 +404,8 @@ asmlinkage int sys_fork(unsigned long r4, unsigned long r5,
405 unsigned long r6, unsigned long r7, 404 unsigned long r6, unsigned long r7,
406 struct pt_regs __regs) 405 struct pt_regs __regs)
407{ 406{
408 struct pt_regs *regs = RELOC_HIDE(&__regs, 0);
409#ifdef CONFIG_MMU 407#ifdef CONFIG_MMU
408 struct pt_regs *regs = RELOC_HIDE(&__regs, 0);
410 return do_fork(SIGCHLD, regs->regs[15], regs, 0, NULL, NULL); 409 return do_fork(SIGCHLD, regs->regs[15], regs, 0, NULL, NULL);
411#else 410#else
412 /* fork almost works, enough to trick you into looking elsewhere :-( */ 411 /* fork almost works, enough to trick you into looking elsewhere :-( */
@@ -449,23 +448,20 @@ asmlinkage int sys_vfork(unsigned long r4, unsigned long r5,
449/* 448/*
450 * sys_execve() executes a new program. 449 * sys_execve() executes a new program.
451 */ 450 */
452asmlinkage int sys_execve(char *ufilename, char **uargv, 451asmlinkage int sys_execve(char __user *ufilename, char __user * __user *uargv,
453 char **uenvp, unsigned long r7, 452 char __user * __user *uenvp, unsigned long r7,
454 struct pt_regs __regs) 453 struct pt_regs __regs)
455{ 454{
456 struct pt_regs *regs = RELOC_HIDE(&__regs, 0); 455 struct pt_regs *regs = RELOC_HIDE(&__regs, 0);
457 int error; 456 int error;
458 char *filename; 457 char *filename;
459 458
460 filename = getname((char __user *)ufilename); 459 filename = getname(ufilename);
461 error = PTR_ERR(filename); 460 error = PTR_ERR(filename);
462 if (IS_ERR(filename)) 461 if (IS_ERR(filename))
463 goto out; 462 goto out;
464 463
465 error = do_execve(filename, 464 error = do_execve(filename, uargv, uenvp, regs);
466 (char __user * __user *)uargv,
467 (char __user * __user *)uenvp,
468 regs);
469 if (error == 0) { 465 if (error == 0) {
470 task_lock(current); 466 task_lock(current);
471 current->ptrace &= ~PT_DTRACE; 467 current->ptrace &= ~PT_DTRACE;
diff --git a/arch/sh/kernel/ptrace.c b/arch/sh/kernel/ptrace.c
index 3fb5fc0b550d..f2eaa485d04d 100644
--- a/arch/sh/kernel/ptrace.c
+++ b/arch/sh/kernel/ptrace.c
@@ -99,7 +99,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
99 ret = -EIO; 99 ret = -EIO;
100 if (copied != sizeof(tmp)) 100 if (copied != sizeof(tmp))
101 break; 101 break;
102 ret = put_user(tmp,(unsigned long *) data); 102 ret = put_user(tmp,(unsigned long __user *) data);
103 break; 103 break;
104 } 104 }
105 105
@@ -128,7 +128,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
128 tmp = !!tsk_used_math(child); 128 tmp = !!tsk_used_math(child);
129 else 129 else
130 tmp = 0; 130 tmp = 0;
131 ret = put_user(tmp, (unsigned long *)data); 131 ret = put_user(tmp, (unsigned long __user *)data);
132 break; 132 break;
133 } 133 }
134 134
@@ -196,7 +196,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
196 196
197 case PTRACE_SINGLESTEP: { /* set the trap flag. */ 197 case PTRACE_SINGLESTEP: { /* set the trap flag. */
198 long pc; 198 long pc;
199 struct pt_regs *dummy = NULL; 199 struct pt_regs *regs = NULL;
200 200
201 ret = -EIO; 201 ret = -EIO;
202 if (!valid_signal(data)) 202 if (!valid_signal(data))
@@ -207,7 +207,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
207 child->ptrace |= PT_DTRACE; 207 child->ptrace |= PT_DTRACE;
208 } 208 }
209 209
210 pc = get_stack_long(child, (long)&dummy->pc); 210 pc = get_stack_long(child, (long)&regs->pc);
211 211
212 /* Next scheduling will set up UBC */ 212 /* Next scheduling will set up UBC */
213 if (child->thread.ubc_pc == 0) 213 if (child->thread.ubc_pc == 0)
diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c
index c27729135935..de8e6e2f2c87 100644
--- a/arch/sh/kernel/setup.c
+++ b/arch/sh/kernel/setup.c
@@ -23,6 +23,7 @@
23#include <linux/kexec.h> 23#include <linux/kexec.h>
24#include <asm/uaccess.h> 24#include <asm/uaccess.h>
25#include <asm/io.h> 25#include <asm/io.h>
26#include <asm/page.h>
26#include <asm/sections.h> 27#include <asm/sections.h>
27#include <asm/irq.h> 28#include <asm/irq.h>
28#include <asm/setup.h> 29#include <asm/setup.h>
@@ -41,20 +42,19 @@ extern void * __rd_start, * __rd_end;
41 * The bigger value means no problem. 42 * The bigger value means no problem.
42 */ 43 */
43struct sh_cpuinfo boot_cpu_data = { CPU_SH_NONE, 10000000, }; 44struct sh_cpuinfo boot_cpu_data = { CPU_SH_NONE, 10000000, };
45
46/*
47 * The machine vector. First entry in .machvec.init, or clobbered by
48 * sh_mv= on the command line, prior to .machvec.init teardown.
49 */
50struct sh_machine_vector sh_mv = { .mv_name = "generic", };
51
44#ifdef CONFIG_VT 52#ifdef CONFIG_VT
45struct screen_info screen_info; 53struct screen_info screen_info;
46#endif 54#endif
47 55
48#if defined(CONFIG_SH_UNKNOWN)
49struct sh_machine_vector sh_mv;
50#endif
51
52extern int root_mountflags; 56extern int root_mountflags;
53 57
54#define MV_NAME_SIZE 32
55
56static struct sh_machine_vector* __init get_mv_byname(const char* name);
57
58/* 58/*
59 * This is set up by the setup-routine at boot-time 59 * This is set up by the setup-routine at boot-time
60 */ 60 */
@@ -80,131 +80,17 @@ static struct resource data_resource = { .name = "Kernel data", };
80 80
81unsigned long memory_start, memory_end; 81unsigned long memory_start, memory_end;
82 82
83static inline void parse_cmdline (char ** cmdline_p, char mv_name[MV_NAME_SIZE], 83static int __init early_parse_mem(char *p)
84 struct sh_machine_vector** mvp,
85 unsigned long *mv_io_base)
86{ 84{
87 char c = ' ', *to = command_line, *from = COMMAND_LINE; 85 unsigned long size;
88 int len = 0;
89
90 /* Save unparsed command line copy for /proc/cmdline */
91 memcpy(boot_command_line, COMMAND_LINE, COMMAND_LINE_SIZE);
92 boot_command_line[COMMAND_LINE_SIZE-1] = '\0';
93 86
94 memory_start = (unsigned long)PAGE_OFFSET+__MEMORY_START; 87 memory_start = (unsigned long)PAGE_OFFSET+__MEMORY_START;
95 memory_end = memory_start + __MEMORY_SIZE; 88 size = memparse(p, &p);
96 89 memory_end = memory_start + size;
97 for (;;) {
98 /*
99 * "mem=XXX[kKmM]" defines a size of memory.
100 */
101 if (c == ' ' && !memcmp(from, "mem=", 4)) {
102 if (to != command_line)
103 to--;
104 {
105 unsigned long mem_size;
106
107 mem_size = memparse(from+4, &from);
108 memory_end = memory_start + mem_size;
109 }
110 }
111
112 if (c == ' ' && !memcmp(from, "sh_mv=", 6)) {
113 char* mv_end;
114 char* mv_comma;
115 int mv_len;
116 if (to != command_line)
117 to--;
118 from += 6;
119 mv_end = strchr(from, ' ');
120 if (mv_end == NULL)
121 mv_end = from + strlen(from);
122
123 mv_comma = strchr(from, ',');
124 if ((mv_comma != NULL) && (mv_comma < mv_end)) {
125 int ints[3];
126 get_options(mv_comma+1, ARRAY_SIZE(ints), ints);
127 *mv_io_base = ints[1];
128 mv_len = mv_comma - from;
129 } else {
130 mv_len = mv_end - from;
131 }
132 if (mv_len > (MV_NAME_SIZE-1))
133 mv_len = MV_NAME_SIZE-1;
134 memcpy(mv_name, from, mv_len);
135 mv_name[mv_len] = '\0';
136 from = mv_end;
137
138 *mvp = get_mv_byname(mv_name);
139 }
140
141 c = *(from++);
142 if (!c)
143 break;
144 if (COMMAND_LINE_SIZE <= ++len)
145 break;
146 *(to++) = c;
147 }
148 *to = '\0';
149 *cmdline_p = command_line;
150}
151
152static int __init sh_mv_setup(char **cmdline_p)
153{
154#ifdef CONFIG_SH_UNKNOWN
155 extern struct sh_machine_vector mv_unknown;
156#endif
157 struct sh_machine_vector *mv = NULL;
158 char mv_name[MV_NAME_SIZE] = "";
159 unsigned long mv_io_base = 0;
160
161 parse_cmdline(cmdline_p, mv_name, &mv, &mv_io_base);
162
163#ifdef CONFIG_SH_UNKNOWN
164 if (mv == NULL) {
165 mv = &mv_unknown;
166 if (*mv_name != '\0') {
167 printk("Warning: Unsupported machine %s, using unknown\n",
168 mv_name);
169 }
170 }
171 sh_mv = *mv;
172#endif
173
174 /*
175 * Manually walk the vec, fill in anything that the board hasn't yet
176 * by hand, wrapping to the generic implementation.
177 */
178#define mv_set(elem) do { \
179 if (!sh_mv.mv_##elem) \
180 sh_mv.mv_##elem = generic_##elem; \
181} while (0)
182
183 mv_set(inb); mv_set(inw); mv_set(inl);
184 mv_set(outb); mv_set(outw); mv_set(outl);
185
186 mv_set(inb_p); mv_set(inw_p); mv_set(inl_p);
187 mv_set(outb_p); mv_set(outw_p); mv_set(outl_p);
188
189 mv_set(insb); mv_set(insw); mv_set(insl);
190 mv_set(outsb); mv_set(outsw); mv_set(outsl);
191
192 mv_set(readb); mv_set(readw); mv_set(readl);
193 mv_set(writeb); mv_set(writew); mv_set(writel);
194
195 mv_set(ioport_map);
196 mv_set(ioport_unmap);
197 mv_set(irq_demux);
198
199#ifdef CONFIG_SH_UNKNOWN
200 __set_io_port_base(mv_io_base);
201#endif
202
203 if (!sh_mv.mv_nr_irqs)
204 sh_mv.mv_nr_irqs = NR_IRQS;
205 90
206 return 0; 91 return 0;
207} 92}
93early_param("mem", early_parse_mem);
208 94
209/* 95/*
210 * Register fully available low RAM pages with the bootmem allocator. 96 * Register fully available low RAM pages with the bootmem allocator.
@@ -230,7 +116,7 @@ static void __init register_bootmem_low_pages(void)
230 free_bootmem(PFN_PHYS(curr_pfn), PFN_PHYS(pages)); 116 free_bootmem(PFN_PHYS(curr_pfn), PFN_PHYS(pages));
231} 117}
232 118
233void __init setup_bootmem_allocator(unsigned long start_pfn) 119void __init setup_bootmem_allocator(unsigned long free_pfn)
234{ 120{
235 unsigned long bootmap_size; 121 unsigned long bootmap_size;
236 122
@@ -239,9 +125,10 @@ void __init setup_bootmem_allocator(unsigned long start_pfn)
239 * bootstrap step all allocations (until the page allocator 125 * bootstrap step all allocations (until the page allocator
240 * is intact) must be done via bootmem_alloc(). 126 * is intact) must be done via bootmem_alloc().
241 */ 127 */
242 bootmap_size = init_bootmem_node(NODE_DATA(0), start_pfn, 128 bootmap_size = init_bootmem_node(NODE_DATA(0), free_pfn,
243 min_low_pfn, max_low_pfn); 129 min_low_pfn, max_low_pfn);
244 130
131 add_active_range(0, min_low_pfn, max_low_pfn);
245 register_bootmem_low_pages(); 132 register_bootmem_low_pages();
246 133
247 node_set_online(0); 134 node_set_online(0);
@@ -254,7 +141,7 @@ void __init setup_bootmem_allocator(unsigned long start_pfn)
254 * an invalid RAM area. 141 * an invalid RAM area.
255 */ 142 */
256 reserve_bootmem(__MEMORY_START+PAGE_SIZE, 143 reserve_bootmem(__MEMORY_START+PAGE_SIZE,
257 (PFN_PHYS(start_pfn)+bootmap_size+PAGE_SIZE-1)-__MEMORY_START); 144 (PFN_PHYS(free_pfn)+bootmap_size+PAGE_SIZE-1)-__MEMORY_START);
258 145
259 /* 146 /*
260 * reserve physical page 0 - it's a special BIOS page on many boxes, 147 * reserve physical page 0 - it's a special BIOS page on many boxes,
@@ -262,6 +149,8 @@ void __init setup_bootmem_allocator(unsigned long start_pfn)
262 */ 149 */
263 reserve_bootmem(__MEMORY_START, PAGE_SIZE); 150 reserve_bootmem(__MEMORY_START, PAGE_SIZE);
264 151
152 sparse_memory_present_with_active_regions(0);
153
265#ifdef CONFIG_BLK_DEV_INITRD 154#ifdef CONFIG_BLK_DEV_INITRD
266 ROOT_DEV = MKDEV(RAMDISK_MAJOR, 0); 155 ROOT_DEV = MKDEV(RAMDISK_MAJOR, 0);
267 if (&__rd_start != &__rd_end) { 156 if (&__rd_start != &__rd_end) {
@@ -315,10 +204,6 @@ void __init setup_arch(char **cmdline_p)
315{ 204{
316 enable_mmu(); 205 enable_mmu();
317 206
318#ifdef CONFIG_CMDLINE_BOOL
319 strcpy(COMMAND_LINE, CONFIG_CMDLINE);
320#endif
321
322 ROOT_DEV = old_decode_dev(ORIG_ROOT_DEV); 207 ROOT_DEV = old_decode_dev(ORIG_ROOT_DEV);
323 208
324#ifdef CONFIG_BLK_DEV_RAM 209#ifdef CONFIG_BLK_DEV_RAM
@@ -339,9 +224,22 @@ void __init setup_arch(char **cmdline_p)
339 data_resource.start = virt_to_phys(_etext); 224 data_resource.start = virt_to_phys(_etext);
340 data_resource.end = virt_to_phys(_edata)-1; 225 data_resource.end = virt_to_phys(_edata)-1;
341 226
227 memory_start = (unsigned long)PAGE_OFFSET+__MEMORY_START;
228 memory_end = memory_start + __MEMORY_SIZE;
229
230#ifdef CONFIG_CMDLINE_BOOL
231 strlcpy(command_line, CONFIG_CMDLINE, sizeof(command_line));
232#else
233 strlcpy(command_line, COMMAND_LINE, sizeof(command_line));
234#endif
235
236 /* Save unparsed command line copy for /proc/cmdline */
237 memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE);
238 *cmdline_p = command_line;
239
342 parse_early_param(); 240 parse_early_param();
343 241
344 sh_mv_setup(cmdline_p); 242 sh_mv_setup();
345 243
346 /* 244 /*
347 * Find the highest page frame number we have available 245 * Find the highest page frame number we have available
@@ -355,8 +253,9 @@ void __init setup_arch(char **cmdline_p)
355 min_low_pfn = __MEMORY_START >> PAGE_SHIFT; 253 min_low_pfn = __MEMORY_START >> PAGE_SHIFT;
356 254
357 nodes_clear(node_online_map); 255 nodes_clear(node_online_map);
256
257 /* Setup bootmem with available RAM */
358 setup_memory(); 258 setup_memory();
359 paging_init();
360 sparse_init(); 259 sparse_init();
361 260
362#ifdef CONFIG_DUMMY_CONSOLE 261#ifdef CONFIG_DUMMY_CONSOLE
@@ -366,46 +265,13 @@ void __init setup_arch(char **cmdline_p)
366 /* Perform the machine specific initialisation */ 265 /* Perform the machine specific initialisation */
367 if (likely(sh_mv.mv_setup)) 266 if (likely(sh_mv.mv_setup))
368 sh_mv.mv_setup(cmdline_p); 267 sh_mv.mv_setup(cmdline_p);
369}
370
371struct sh_machine_vector* __init get_mv_byname(const char* name)
372{
373 extern long __machvec_start, __machvec_end;
374 struct sh_machine_vector *all_vecs =
375 (struct sh_machine_vector *)&__machvec_start;
376
377 int i, n = ((unsigned long)&__machvec_end
378 - (unsigned long)&__machvec_start)/
379 sizeof(struct sh_machine_vector);
380
381 for (i = 0; i < n; ++i) {
382 struct sh_machine_vector *mv = &all_vecs[i];
383 if (mv == NULL)
384 continue;
385 if (strcasecmp(name, get_system_type()) == 0) {
386 return mv;
387 }
388 }
389 return NULL;
390}
391
392static struct cpu cpu[NR_CPUS];
393
394static int __init topology_init(void)
395{
396 int cpu_id;
397 268
398 for_each_possible_cpu(cpu_id) 269 paging_init();
399 register_cpu(&cpu[cpu_id], cpu_id);
400
401 return 0;
402} 270}
403 271
404subsys_initcall(topology_init);
405
406static const char *cpu_name[] = { 272static const char *cpu_name[] = {
407 [CPU_SH7206] = "SH7206", [CPU_SH7619] = "SH7619", 273 [CPU_SH7206] = "SH7206", [CPU_SH7619] = "SH7619",
408 [CPU_SH7604] = "SH7604", [CPU_SH7300] = "SH7300", 274 [CPU_SH7300] = "SH7300",
409 [CPU_SH7705] = "SH7705", [CPU_SH7706] = "SH7706", 275 [CPU_SH7705] = "SH7705", [CPU_SH7706] = "SH7706",
410 [CPU_SH7707] = "SH7707", [CPU_SH7708] = "SH7708", 276 [CPU_SH7707] = "SH7707", [CPU_SH7708] = "SH7708",
411 [CPU_SH7709] = "SH7709", [CPU_SH7710] = "SH7710", 277 [CPU_SH7709] = "SH7709", [CPU_SH7710] = "SH7710",
@@ -419,7 +285,7 @@ static const char *cpu_name[] = {
419 [CPU_SH7770] = "SH7770", [CPU_SH7780] = "SH7780", 285 [CPU_SH7770] = "SH7770", [CPU_SH7780] = "SH7780",
420 [CPU_SH7781] = "SH7781", [CPU_SH7343] = "SH7343", 286 [CPU_SH7781] = "SH7781", [CPU_SH7343] = "SH7343",
421 [CPU_SH7785] = "SH7785", [CPU_SH7722] = "SH7722", 287 [CPU_SH7785] = "SH7785", [CPU_SH7722] = "SH7722",
422 [CPU_SH_NONE] = "Unknown" 288 [CPU_SHX3] = "SH-X3", [CPU_SH_NONE] = "Unknown"
423}; 289};
424 290
425const char *get_cpu_subtype(struct sh_cpuinfo *c) 291const char *get_cpu_subtype(struct sh_cpuinfo *c)
diff --git a/arch/sh/kernel/sh_ksyms.c b/arch/sh/kernel/sh_ksyms.c
index c1cfcb9f047c..c968dcf09eee 100644
--- a/arch/sh/kernel/sh_ksyms.c
+++ b/arch/sh/kernel/sh_ksyms.c
@@ -78,6 +78,16 @@ DECLARE_EXPORT(__movstr);
78DECLARE_EXPORT(__movmem_i4_even); 78DECLARE_EXPORT(__movmem_i4_even);
79DECLARE_EXPORT(__movmem_i4_odd); 79DECLARE_EXPORT(__movmem_i4_odd);
80DECLARE_EXPORT(__movmemSI12_i4); 80DECLARE_EXPORT(__movmemSI12_i4);
81
82#if (__GNUC_MINOR__ == 2 || defined(__GNUC_STM_RELEASE__))
83/*
84 * GCC 4.2 emits these for division, as do GCC 4.1.x versions of the ST
85 * compiler which include backported patches.
86 */
87DECLARE_EXPORT(__sdivsi3_i4i);
88DECLARE_EXPORT(__udiv_qrnnd_16);
89DECLARE_EXPORT(__udivsi3_i4i);
90#endif
81#else /* GCC 3.x */ 91#else /* GCC 3.x */
82DECLARE_EXPORT(__movstr_i4_even); 92DECLARE_EXPORT(__movstr_i4_even);
83DECLARE_EXPORT(__movstr_i4_odd); 93DECLARE_EXPORT(__movstr_i4_odd);
diff --git a/arch/sh/kernel/signal.c b/arch/sh/kernel/signal.c
index e323e299878b..706d81ccd101 100644
--- a/arch/sh/kernel/signal.c
+++ b/arch/sh/kernel/signal.c
@@ -23,6 +23,7 @@
23#include <linux/personality.h> 23#include <linux/personality.h>
24#include <linux/binfmts.h> 24#include <linux/binfmts.h>
25#include <linux/freezer.h> 25#include <linux/freezer.h>
26#include <linux/io.h>
26#include <asm/system.h> 27#include <asm/system.h>
27#include <asm/ucontext.h> 28#include <asm/ucontext.h>
28#include <asm/uaccess.h> 29#include <asm/uaccess.h>
@@ -261,7 +262,7 @@ asmlinkage int sys_rt_sigreturn(unsigned long r4, unsigned long r5,
261 goto badframe; 262 goto badframe;
262 /* It is more difficult to avoid calling this function than to 263 /* It is more difficult to avoid calling this function than to
263 call it and ignore errors. */ 264 call it and ignore errors. */
264 do_sigaltstack(&st, NULL, regs->regs[15]); 265 do_sigaltstack((const stack_t __user *)&st, NULL, (unsigned long)frame);
265 266
266 return r0; 267 return r0;
267 268
diff --git a/arch/sh/kernel/syscalls.S b/arch/sh/kernel/syscalls.S
index 7db1c2dc5992..ff5656e60c05 100644
--- a/arch/sh/kernel/syscalls.S
+++ b/arch/sh/kernel/syscalls.S
@@ -308,9 +308,9 @@ ENTRY(sys_call_table)
308 .long sys_utimes 308 .long sys_utimes
309 .long sys_fadvise64_64_wrapper 309 .long sys_fadvise64_64_wrapper
310 .long sys_ni_syscall /* Reserved for vserver */ 310 .long sys_ni_syscall /* Reserved for vserver */
311 .long sys_ni_syscall /* Reserved for mbind */ 311 .long sys_mbind
312 .long sys_ni_syscall /* 275 - get_mempolicy */ 312 .long sys_get_mempolicy /* 275 */
313 .long sys_ni_syscall /* set_mempolicy */ 313 .long sys_set_mempolicy
314 .long sys_mq_open 314 .long sys_mq_open
315 .long sys_mq_unlink 315 .long sys_mq_unlink
316 .long sys_mq_timedsend 316 .long sys_mq_timedsend
diff --git a/arch/sh/kernel/timers/timer-tmu.c b/arch/sh/kernel/timers/timer-tmu.c
index 2d997e2a5b6c..097ebd49f1bf 100644
--- a/arch/sh/kernel/timers/timer-tmu.c
+++ b/arch/sh/kernel/timers/timer-tmu.c
@@ -30,7 +30,7 @@
30 30
31static int tmu_timer_start(void) 31static int tmu_timer_start(void)
32{ 32{
33 ctrl_outb(ctrl_inb(TMU_TSTR) | 0x3, TMU_TSTR); 33 ctrl_outb(ctrl_inb(TMU_012_TSTR) | 0x3, TMU_012_TSTR);
34 return 0; 34 return 0;
35} 35}
36 36
@@ -52,7 +52,7 @@ static void tmu0_timer_set_interval(unsigned long interval, unsigned int reload)
52 52
53static int tmu_timer_stop(void) 53static int tmu_timer_stop(void)
54{ 54{
55 ctrl_outb(ctrl_inb(TMU_TSTR) & ~0x3, TMU_TSTR); 55 ctrl_outb(ctrl_inb(TMU_012_TSTR) & ~0x3, TMU_012_TSTR);
56 return 0; 56 return 0;
57} 57}
58 58
@@ -174,7 +174,8 @@ static int tmu_timer_init(void)
174 174
175#if !defined(CONFIG_CPU_SUBTYPE_SH7300) && \ 175#if !defined(CONFIG_CPU_SUBTYPE_SH7300) && \
176 !defined(CONFIG_CPU_SUBTYPE_SH7760) && \ 176 !defined(CONFIG_CPU_SUBTYPE_SH7760) && \
177 !defined(CONFIG_CPU_SUBTYPE_SH7785) 177 !defined(CONFIG_CPU_SUBTYPE_SH7785) && \
178 !defined(CONFIG_CPU_SUBTYPE_SHX3)
178 ctrl_outb(TMU_TOCR_INIT, TMU_TOCR); 179 ctrl_outb(TMU_TOCR_INIT, TMU_TOCR);
179#endif 180#endif
180 181
diff --git a/arch/sh/kernel/topology.c b/arch/sh/kernel/topology.c
new file mode 100644
index 000000000000..9b5844a1bdaa
--- /dev/null
+++ b/arch/sh/kernel/topology.c
@@ -0,0 +1,49 @@
1/*
2 * arch/sh/kernel/topology.c
3 *
4 * Copyright (C) 2007 Paul Mundt
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10#include <linux/cpu.h>
11#include <linux/cpumask.h>
12#include <linux/init.h>
13#include <linux/percpu.h>
14#include <linux/node.h>
15#include <linux/nodemask.h>
16
17static DEFINE_PER_CPU(struct cpu, cpu_devices);
18
19static int __init topology_init(void)
20{
21 int i, ret;
22
23#ifdef CONFIG_NEED_MULTIPLE_NODES
24 for_each_online_node(i)
25 register_one_node(i);
26#endif
27
28 for_each_present_cpu(i) {
29 ret = register_cpu(&per_cpu(cpu_devices, i), i);
30 if (unlikely(ret))
31 printk(KERN_WARNING "%s: register_cpu %d failed (%d)\n",
32 __FUNCTION__, i, ret);
33 }
34
35#if defined(CONFIG_NUMA) && !defined(CONFIG_SMP)
36 /*
37 * In the UP case, make sure the CPU association is still
38 * registered under each node. Without this, sysfs fails
39 * to make the connection between nodes other than node0
40 * and cpu0.
41 */
42 for_each_online_node(i)
43 if (i != numa_node_id())
44 register_cpu_under_node(raw_smp_processor_id(), i);
45#endif
46
47 return 0;
48}
49subsys_initcall(topology_init);
diff --git a/arch/sh/kernel/traps.c b/arch/sh/kernel/traps.c
index 09480887076b..05a40f3c30bf 100644
--- a/arch/sh/kernel/traps.c
+++ b/arch/sh/kernel/traps.c
@@ -584,7 +584,7 @@ uspace_segv:
584 info.si_signo = SIGBUS; 584 info.si_signo = SIGBUS;
585 info.si_errno = 0; 585 info.si_errno = 0;
586 info.si_code = si_code; 586 info.si_code = si_code;
587 info.si_addr = (void *) address; 587 info.si_addr = (void __user *)address;
588 force_sig_info(SIGBUS, &info, current); 588 force_sig_info(SIGBUS, &info, current);
589 } else { 589 } else {
590 if (regs->pc & 1) 590 if (regs->pc & 1)
@@ -617,7 +617,7 @@ uspace_segv:
617 */ 617 */
618int is_dsp_inst(struct pt_regs *regs) 618int is_dsp_inst(struct pt_regs *regs)
619{ 619{
620 unsigned short inst; 620 unsigned short inst = 0;
621 621
622 /* 622 /*
623 * Safe guard if DSP mode is already enabled or we're lacking 623 * Safe guard if DSP mode is already enabled or we're lacking
@@ -645,7 +645,6 @@ asmlinkage void do_divide_error(unsigned long r4, unsigned long r5,
645 unsigned long r6, unsigned long r7, 645 unsigned long r6, unsigned long r7,
646 struct pt_regs __regs) 646 struct pt_regs __regs)
647{ 647{
648 struct pt_regs *regs = RELOC_HIDE(&__regs, 0);
649 siginfo_t info; 648 siginfo_t info;
650 649
651 switch (r4) { 650 switch (r4) {
diff --git a/arch/sh/kernel/vmlinux.lds.S b/arch/sh/kernel/vmlinux.lds.S
index 4c5b57e9c3c1..0696402f446a 100644
--- a/arch/sh/kernel/vmlinux.lds.S
+++ b/arch/sh/kernel/vmlinux.lds.S
@@ -97,18 +97,20 @@ SECTIONS
97 __initramfs_end = .; 97 __initramfs_end = .;
98#endif 98#endif
99 99
100 . = ALIGN(4);
100 __machvec_start = .; 101 __machvec_start = .;
101 .init.machvec : { *(.init.machvec) } 102 .machvec.init : { *(.machvec.init) }
102 __machvec_end = .; 103 __machvec_end = .;
103 . = ALIGN(PAGE_SIZE);
104 __init_end = .;
105
106 . = ALIGN(4);
107 __bss_start = .; /* BSS */
108 .bss : { *(.bss) }
109 104
110 . = ALIGN(4); 105 . = ALIGN(PAGE_SIZE);
111 _end = . ; 106 .bss : {
107 __init_end = .;
108 __bss_start = .; /* BSS */
109 *(.bss.page_aligned)
110 *(.bss)
111 . = ALIGN(4);
112 _end = . ;
113 }
112 114
113 /* When something in the kernel is NOT compiled as a module, the 115 /* When something in the kernel is NOT compiled as a module, the
114 * module cleanup code and data are put into these segments. Both 116 * module cleanup code and data are put into these segments. Both
diff --git a/arch/sh/lib/div64-generic.c b/arch/sh/lib/div64-generic.c
index c02473afd581..4bef3b5d964a 100644
--- a/arch/sh/lib/div64-generic.c
+++ b/arch/sh/lib/div64-generic.c
@@ -4,16 +4,15 @@
4 4
5#include <linux/types.h> 5#include <linux/types.h>
6 6
7extern u64 __xdiv64_32(u64 n, u32 d); 7extern uint64_t __xdiv64_32(u64 n, u32 d);
8 8
9u64 __div64_32(u64 *xp, u32 y) 9uint32_t __div64_32(u64 *xp, u32 y)
10{ 10{
11 u64 rem; 11 uint32_t rem;
12 u64 q = __xdiv64_32(*xp, y); 12 uint64_t q = __xdiv64_32(*xp, y);
13 13
14 rem = *xp - q * y; 14 rem = *xp - q * y;
15 *xp = q; 15 *xp = q;
16 16
17 return rem; 17 return rem;
18} 18}
19
diff --git a/arch/sh/lib/div64.S b/arch/sh/lib/div64.S
index eefc275d64a7..5ee7334ea64f 100644
--- a/arch/sh/lib/div64.S
+++ b/arch/sh/lib/div64.S
@@ -1,12 +1,12 @@
1/* 1/*
2 * unsigned long long __xdiv64_32(unsigned long long n, unsigned long d); 2 * unsigned long __xdiv64_32(unsigned long long n, unsigned long d);
3 */ 3 */
4 4
5#include <linux/linkage.h> 5#include <linux/linkage.h>
6 6
7.text 7.text
8ENTRY(__xdiv64_32) 8ENTRY(__xdiv64_32)
9#ifdef __LITTLE_ENDIAN__ 9#ifdef CONFIG_CPU_LITTLE_ENDIAN
10 mov r4, r0 10 mov r4, r0
11 mov r5, r1 11 mov r5, r1
12#else 12#else
@@ -34,7 +34,7 @@ ENTRY(__xdiv64_32)
34 rotcl r0 34 rotcl r0
35 div1 r6, r1 35 div1 r6, r1
36 .endr 36 .endr
37#ifdef __LITTLE_ENDIAN__ 37#ifdef CONFIG_CPU_LITTLE_ENDIAN
38 mov r2, r1 38 mov r2, r1
39 rts 39 rts
40 rotcl r0 40 rotcl r0
diff --git a/arch/sh/math-emu/math.c b/arch/sh/math-emu/math.c
index a38e1eed9e77..ac2d7abd2567 100644
--- a/arch/sh/math-emu/math.c
+++ b/arch/sh/math-emu/math.c
@@ -507,6 +507,7 @@ static int ieee_fpe_handler(struct pt_regs *regs)
507 unsigned short insn = *(unsigned short *)regs->pc; 507 unsigned short insn = *(unsigned short *)regs->pc;
508 unsigned short finsn; 508 unsigned short finsn;
509 unsigned long nextpc; 509 unsigned long nextpc;
510 siginfo_t info;
510 int nib[4] = { 511 int nib[4] = {
511 (insn >> 12) & 0xf, 512 (insn >> 12) & 0xf,
512 (insn >> 8) & 0xf, 513 (insn >> 8) & 0xf,
@@ -559,9 +560,11 @@ static int ieee_fpe_handler(struct pt_regs *regs)
559 ~(FPSCR_CAUSE_MASK | FPSCR_FLAG_MASK); 560 ~(FPSCR_CAUSE_MASK | FPSCR_FLAG_MASK);
560 set_tsk_thread_flag(tsk, TIF_USEDFPU); 561 set_tsk_thread_flag(tsk, TIF_USEDFPU);
561 } else { 562 } else {
562 tsk->thread.trap_no = 11; 563 info.si_signo = SIGFPE;
563 tsk->thread.error_code = 0; 564 info.si_errno = 0;
564 force_sig(SIGFPE, tsk); 565 info.si_code = FPE_FLTINV;
566 info.si_addr = (void __user *)regs->pc;
567 force_sig_info(SIGFPE, &info, tsk);
565 } 568 }
566 569
567 regs->pc = nextpc; 570 regs->pc = nextpc;
@@ -576,14 +579,17 @@ asmlinkage void do_fpu_error(unsigned long r4, unsigned long r5,
576 struct pt_regs regs) 579 struct pt_regs regs)
577{ 580{
578 struct task_struct *tsk = current; 581 struct task_struct *tsk = current;
582 siginfo_t info;
579 583
580 if (ieee_fpe_handler (&regs)) 584 if (ieee_fpe_handler (&regs))
581 return; 585 return;
582 586
583 regs.pc += 2; 587 regs.pc += 2;
584 tsk->thread.trap_no = 11; 588 info.si_signo = SIGFPE;
585 tsk->thread.error_code = 0; 589 info.si_errno = 0;
586 force_sig(SIGFPE, tsk); 590 info.si_code = FPE_FLTINV;
591 info.si_addr = (void __user *)regs.pc;
592 force_sig_info(SIGFPE, &info, tsk);
587} 593}
588 594
589/** 595/**
diff --git a/arch/sh/mm/Kconfig b/arch/sh/mm/Kconfig
index 253346d7b316..28d79a474cde 100644
--- a/arch/sh/mm/Kconfig
+++ b/arch/sh/mm/Kconfig
@@ -1,5 +1,3 @@
1menu "Processor selection"
2
3# 1#
4# Processor families 2# Processor families
5# 3#
@@ -38,27 +36,31 @@ config CPU_SUBTYPE_ST40
38config CPU_SHX2 36config CPU_SHX2
39 bool 37 bool
40 38
39config CPU_SHX3
40 bool
41
42choice
43 prompt "Processor sub-type selection"
44
41# 45#
42# Processor subtypes 46# Processor subtypes
43# 47#
44 48
45comment "SH-2 Processor Support" 49# SH-2 Processor Support
46
47config CPU_SUBTYPE_SH7604
48 bool "Support SH7604 processor"
49 select CPU_SH2
50 50
51config CPU_SUBTYPE_SH7619 51config CPU_SUBTYPE_SH7619
52 bool "Support SH7619 processor" 52 bool "Support SH7619 processor"
53 select CPU_SH2 53 select CPU_SH2
54 select CPU_HAS_IPR_IRQ
54 55
55comment "SH-2A Processor Support" 56# SH-2A Processor Support
56 57
57config CPU_SUBTYPE_SH7206 58config CPU_SUBTYPE_SH7206
58 bool "Support SH7206 processor" 59 bool "Support SH7206 processor"
59 select CPU_SH2A 60 select CPU_SH2A
61 select CPU_HAS_IPR_IRQ
60 62
61comment "SH-3 Processor Support" 63# SH-3 Processor Support
62 64
63config CPU_SUBTYPE_SH7300 65config CPU_SUBTYPE_SH7300
64 bool "Support SH7300 processor" 66 bool "Support SH7300 processor"
@@ -113,7 +115,7 @@ config CPU_SUBTYPE_SH7712
113 help 115 help
114 Select SH7712 if you have a SH3-DSP SH7712 CPU. 116 Select SH7712 if you have a SH3-DSP SH7712 CPU.
115 117
116comment "SH-4 Processor Support" 118# SH-4 Processor Support
117 119
118config CPU_SUBTYPE_SH7750 120config CPU_SUBTYPE_SH7750
119 bool "Support SH7750 processor" 121 bool "Support SH7750 processor"
@@ -125,7 +127,7 @@ config CPU_SUBTYPE_SH7750
125config CPU_SUBTYPE_SH7091 127config CPU_SUBTYPE_SH7091
126 bool "Support SH7091 processor" 128 bool "Support SH7091 processor"
127 select CPU_SH4 129 select CPU_SH4
128 select CPU_SUBTYPE_SH7750 130 select CPU_HAS_IPR_IRQ
129 help 131 help
130 Select SH7091 if you have an SH-4 based Sega device (such as 132 Select SH7091 if you have an SH-4 based Sega device (such as
131 the Dreamcast, Naomi, and Naomi 2). 133 the Dreamcast, Naomi, and Naomi 2).
@@ -133,13 +135,11 @@ config CPU_SUBTYPE_SH7091
133config CPU_SUBTYPE_SH7750R 135config CPU_SUBTYPE_SH7750R
134 bool "Support SH7750R processor" 136 bool "Support SH7750R processor"
135 select CPU_SH4 137 select CPU_SH4
136 select CPU_SUBTYPE_SH7750
137 select CPU_HAS_IPR_IRQ 138 select CPU_HAS_IPR_IRQ
138 139
139config CPU_SUBTYPE_SH7750S 140config CPU_SUBTYPE_SH7750S
140 bool "Support SH7750S processor" 141 bool "Support SH7750S processor"
141 select CPU_SH4 142 select CPU_SH4
142 select CPU_SUBTYPE_SH7750
143 select CPU_HAS_IPR_IRQ 143 select CPU_HAS_IPR_IRQ
144 144
145config CPU_SUBTYPE_SH7751 145config CPU_SUBTYPE_SH7751
@@ -153,7 +153,6 @@ config CPU_SUBTYPE_SH7751
153config CPU_SUBTYPE_SH7751R 153config CPU_SUBTYPE_SH7751R
154 bool "Support SH7751R processor" 154 bool "Support SH7751R processor"
155 select CPU_SH4 155 select CPU_SH4
156 select CPU_SUBTYPE_SH7751
157 select CPU_HAS_IPR_IRQ 156 select CPU_HAS_IPR_IRQ
158 157
159config CPU_SUBTYPE_SH7760 158config CPU_SUBTYPE_SH7760
@@ -166,7 +165,7 @@ config CPU_SUBTYPE_SH4_202
166 bool "Support SH4-202 processor" 165 bool "Support SH4-202 processor"
167 select CPU_SH4 166 select CPU_SH4
168 167
169comment "ST40 Processor Support" 168# ST40 Processor Support
170 169
171config CPU_SUBTYPE_ST40STB1 170config CPU_SUBTYPE_ST40STB1
172 bool "Support ST40STB1/ST40RA processors" 171 bool "Support ST40STB1/ST40RA processors"
@@ -181,7 +180,7 @@ config CPU_SUBTYPE_ST40GX1
181 help 180 help
182 Select ST40GX1 if you have a ST40GX1 CPU. 181 Select ST40GX1 if you have a ST40GX1 CPU.
183 182
184comment "SH-4A Processor Support" 183# SH-4A Processor Support
185 184
186config CPU_SUBTYPE_SH7770 185config CPU_SUBTYPE_SH7770
187 bool "Support SH7770 processor" 186 bool "Support SH7770 processor"
@@ -198,7 +197,13 @@ config CPU_SUBTYPE_SH7785
198 select CPU_SHX2 197 select CPU_SHX2
199 select CPU_HAS_INTC2_IRQ 198 select CPU_HAS_INTC2_IRQ
200 199
201comment "SH4AL-DSP Processor Support" 200config CPU_SUBTYPE_SHX3
201 bool "Support SH-X3 processor"
202 select CPU_SH4A
203 select CPU_SHX3
204 select CPU_HAS_INTC2_IRQ
205
206# SH4AL-DSP Processor Support
202 207
203config CPU_SUBTYPE_SH73180 208config CPU_SUBTYPE_SH73180
204 bool "Support SH73180 processor" 209 bool "Support SH73180 processor"
@@ -213,8 +218,10 @@ config CPU_SUBTYPE_SH7722
213 select CPU_SH4AL_DSP 218 select CPU_SH4AL_DSP
214 select CPU_SHX2 219 select CPU_SHX2
215 select CPU_HAS_IPR_IRQ 220 select CPU_HAS_IPR_IRQ
221 select ARCH_SPARSEMEM_ENABLE
222 select SYS_SUPPORTS_NUMA
216 223
217endmenu 224endchoice
218 225
219menu "Memory management options" 226menu "Memory management options"
220 227
@@ -266,7 +273,7 @@ config MEMORY_SIZE
266 273
267config 32BIT 274config 32BIT
268 bool "Support 32-bit physical addressing through PMB" 275 bool "Support 32-bit physical addressing through PMB"
269 depends on CPU_SH4A && MMU && (!X2TLB || BROKEN) 276 depends on MMU && (CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7785)
270 default y 277 default y
271 help 278 help
272 If you say Y here, physical addressing will be extended to 279 If you say Y here, physical addressing will be extended to
@@ -295,6 +302,17 @@ config VSYSCALL
295 For systems with an MMU that can afford to give up a page, 302 For systems with an MMU that can afford to give up a page,
296 (the default value) say Y. 303 (the default value) say Y.
297 304
305config NUMA
306 bool "Non Uniform Memory Access (NUMA) Support"
307 depends on MMU && SYS_SUPPORTS_NUMA && EXPERIMENTAL
308 default n
309 help
310 Some SH systems have many various memories scattered around
311 the address space, each with varying latencies. This enables
312 support for these blocks by binding them to nodes and allowing
313 memory policies to be used for prioritizing and controlling
314 allocation behaviour.
315
298config NODES_SHIFT 316config NODES_SHIFT
299 int 317 int
300 default "1" 318 default "1"
@@ -302,14 +320,34 @@ config NODES_SHIFT
302 320
303config ARCH_FLATMEM_ENABLE 321config ARCH_FLATMEM_ENABLE
304 def_bool y 322 def_bool y
323 depends on !NUMA
324
325config ARCH_SPARSEMEM_ENABLE
326 def_bool y
327 select SPARSEMEM_STATIC
328
329config ARCH_SPARSEMEM_DEFAULT
330 def_bool y
305 331
306config MAX_ACTIVE_REGIONS 332config MAX_ACTIVE_REGIONS
307 int 333 int
334 default "2" if (CPU_SUBTYPE_SH7722 && SPARSEMEM)
308 default "1" 335 default "1"
309 336
310config ARCH_POPULATES_NODE_MAP 337config ARCH_POPULATES_NODE_MAP
311 def_bool y 338 def_bool y
312 339
340config ARCH_SELECT_MEMORY_MODEL
341 def_bool y
342
343config ARCH_ENABLE_MEMORY_HOTPLUG
344 def_bool y
345 depends on SPARSEMEM
346
347config ARCH_MEMORY_PROBE
348 def_bool y
349 depends on MEMORY_HOTPLUG
350
313choice 351choice
314 prompt "Kernel page size" 352 prompt "Kernel page size"
315 default PAGE_SIZE_4KB 353 default PAGE_SIZE_4KB
@@ -394,15 +432,4 @@ config SH_WRITETHROUGH
394 432
395 If unsure, say N. 433 If unsure, say N.
396 434
397config SH_OCRAM
398 bool "Operand Cache RAM (OCRAM) support"
399 help
400 Selecting this option will automatically tear down the number of
401 sets in the dcache by half, which in turn exposes a memory range.
402
403 The addresses for the OC RAM base will vary according to the
404 processor version. Consult vendor documentation for specifics.
405
406 If unsure, say N.
407
408endmenu 435endmenu
diff --git a/arch/sh/mm/Makefile b/arch/sh/mm/Makefile
index 3ffd7f68c0a2..d677d7f3afc1 100644
--- a/arch/sh/mm/Makefile
+++ b/arch/sh/mm/Makefile
@@ -8,9 +8,6 @@ obj-$(CONFIG_CPU_SH2) += cache-sh2.o
8obj-$(CONFIG_CPU_SH3) += cache-sh3.o 8obj-$(CONFIG_CPU_SH3) += cache-sh3.o
9obj-$(CONFIG_CPU_SH4) += cache-sh4.o 9obj-$(CONFIG_CPU_SH4) += cache-sh4.o
10 10
11obj-$(CONFIG_DMA_PAGE_OPS) += pg-dma.o
12obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o
13
14mmu-y := fault-nommu.o tlb-nommu.o pg-nommu.o 11mmu-y := fault-nommu.o tlb-nommu.o pg-nommu.o
15mmu-$(CONFIG_MMU) := fault.o clear_page.o copy_page.o tlb-flush.o \ 12mmu-$(CONFIG_MMU) := fault.o clear_page.o copy_page.o tlb-flush.o \
16 ioremap.o 13 ioremap.o
@@ -27,5 +24,7 @@ obj-$(CONFIG_CPU_SH4) += tlb-sh4.o pg-sh4.o
27obj-$(CONFIG_SH7705_CACHE_32KB) += pg-sh7705.o 24obj-$(CONFIG_SH7705_CACHE_32KB) += pg-sh7705.o
28endif 25endif
29 26
27obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o
30obj-$(CONFIG_SH7705_CACHE_32KB) += cache-sh7705.o 28obj-$(CONFIG_SH7705_CACHE_32KB) += cache-sh7705.o
31obj-$(CONFIG_32BIT) += pmb.o 29obj-$(CONFIG_32BIT) += pmb.o
30obj-$(CONFIG_NUMA) += numa.o
diff --git a/arch/sh/mm/fault.c b/arch/sh/mm/fault.c
index c878faa4ae46..0b3eaf6fbb28 100644
--- a/arch/sh/mm/fault.c
+++ b/arch/sh/mm/fault.c
@@ -32,7 +32,6 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs,
32 struct task_struct *tsk; 32 struct task_struct *tsk;
33 struct mm_struct *mm; 33 struct mm_struct *mm;
34 struct vm_area_struct * vma; 34 struct vm_area_struct * vma;
35 unsigned long page;
36 int si_code; 35 int si_code;
37 siginfo_t info; 36 siginfo_t info;
38 37
@@ -170,24 +169,38 @@ no_context:
170 * terminate things with extreme prejudice. 169 * terminate things with extreme prejudice.
171 * 170 *
172 */ 171 */
173 if (address < PAGE_SIZE) 172
174 printk(KERN_ALERT "Unable to handle kernel NULL pointer dereference"); 173 bust_spinlocks(1);
175 else 174
176 printk(KERN_ALERT "Unable to handle kernel paging request"); 175 if (oops_may_print()) {
177 printk(" at virtual address %08lx\n", address); 176 __typeof__(pte_val(__pte(0))) page;
178 printk(KERN_ALERT "pc = %08lx\n", regs->pc); 177
179 page = (unsigned long)get_TTB(); 178 if (address < PAGE_SIZE)
180 if (page) { 179 printk(KERN_ALERT "Unable to handle kernel NULL "
181 page = ((unsigned long *) page)[address >> PGDIR_SHIFT]; 180 "pointer dereference");
182 printk(KERN_ALERT "*pde = %08lx\n", page); 181 else
183 if (page & _PAGE_PRESENT) { 182 printk(KERN_ALERT "Unable to handle kernel paging "
184 page &= PAGE_MASK; 183 "request");
185 address &= 0x003ff000; 184 printk(" at virtual address %08lx\n", address);
186 page = ((unsigned long *) __va(page))[address >> PAGE_SHIFT]; 185 printk(KERN_ALERT "pc = %08lx\n", regs->pc);
187 printk(KERN_ALERT "*pte = %08lx\n", page); 186 page = (unsigned long)get_TTB();
187 if (page) {
188 page = ((__typeof__(page) *) __va(page))[address >>
189 PGDIR_SHIFT];
190 printk(KERN_ALERT "*pde = %08lx\n", page);
191 if (page & _PAGE_PRESENT) {
192 page &= PAGE_MASK;
193 address &= 0x003ff000;
194 page = ((__typeof__(page) *)
195 __va(page))[address >>
196 PAGE_SHIFT];
197 printk(KERN_ALERT "*pte = %08lx\n", page);
198 }
188 } 199 }
189 } 200 }
201
190 die("Oops", regs, writeaccess); 202 die("Oops", regs, writeaccess);
203 bust_spinlocks(0);
191 do_exit(SIGKILL); 204 do_exit(SIGKILL);
192 205
193/* 206/*
diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c
index e0e644ff3204..82b68c789a5f 100644
--- a/arch/sh/mm/init.c
+++ b/arch/sh/mm/init.c
@@ -18,6 +18,7 @@
18#include <asm/mmu_context.h> 18#include <asm/mmu_context.h>
19#include <asm/tlb.h> 19#include <asm/tlb.h>
20#include <asm/cacheflush.h> 20#include <asm/cacheflush.h>
21#include <asm/sections.h>
21#include <asm/cache.h> 22#include <asm/cache.h>
22 23
23DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); 24DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
@@ -36,14 +37,11 @@ void show_mem(void)
36 show_free_areas(); 37 show_free_areas();
37 38
38 for_each_online_pgdat(pgdat) { 39 for_each_online_pgdat(pgdat) {
39 struct page *page, *end; 40 unsigned long flags, i;
40 unsigned long flags;
41 41
42 pgdat_resize_lock(pgdat, &flags); 42 pgdat_resize_lock(pgdat, &flags);
43 page = pgdat->node_mem_map; 43 for (i = 0; i < pgdat->node_spanned_pages; i++) {
44 end = page + pgdat->node_spanned_pages; 44 struct page *page = pgdat_page_nr(pgdat, i);
45
46 do {
47 total++; 45 total++;
48 if (PageReserved(page)) 46 if (PageReserved(page))
49 reserved++; 47 reserved++;
@@ -55,9 +53,7 @@ void show_mem(void)
55 free++; 53 free++;
56 else 54 else
57 shared += page_count(page) - 1; 55 shared += page_count(page) - 1;
58 page++; 56 }
59 } while (page < end);
60
61 pgdat_resize_unlock(pgdat, &flags); 57 pgdat_resize_unlock(pgdat, &flags);
62 } 58 }
63 59
@@ -137,16 +133,12 @@ void __set_fixmap(enum fixed_addresses idx, unsigned long phys, pgprot_t prot)
137} 133}
138#endif /* CONFIG_MMU */ 134#endif /* CONFIG_MMU */
139 135
140/* References to section boundaries */
141
142extern char _text, _etext, _edata, __bss_start, _end;
143extern char __init_begin, __init_end;
144
145/* 136/*
146 * paging_init() sets up the page tables 137 * paging_init() sets up the page tables
147 */ 138 */
148void __init paging_init(void) 139void __init paging_init(void)
149{ 140{
141 unsigned long max_zone_pfns[MAX_NR_ZONES];
150 int nid; 142 int nid;
151 143
152 /* We don't need to map the kernel through the TLB, as 144 /* We don't need to map the kernel through the TLB, as
@@ -158,43 +150,39 @@ void __init paging_init(void)
158 * check for a null value. */ 150 * check for a null value. */
159 set_TTB(swapper_pg_dir); 151 set_TTB(swapper_pg_dir);
160 152
153 memset(max_zone_pfns, 0, sizeof(max_zone_pfns));
154
161 for_each_online_node(nid) { 155 for_each_online_node(nid) {
162 pg_data_t *pgdat = NODE_DATA(nid); 156 pg_data_t *pgdat = NODE_DATA(nid);
163 unsigned long max_zone_pfns[MAX_NR_ZONES];
164 unsigned long low, start_pfn; 157 unsigned long low, start_pfn;
165 158
166 memset(max_zone_pfns, 0, sizeof(max_zone_pfns));
167
168 start_pfn = pgdat->bdata->node_boot_start >> PAGE_SHIFT; 159 start_pfn = pgdat->bdata->node_boot_start >> PAGE_SHIFT;
169 low = pgdat->bdata->node_low_pfn; 160 low = pgdat->bdata->node_low_pfn;
170 161
171 max_zone_pfns[ZONE_NORMAL] = low; 162 if (max_zone_pfns[ZONE_NORMAL] < low)
172 add_active_range(nid, start_pfn, low); 163 max_zone_pfns[ZONE_NORMAL] = low;
173 164
174 printk("Node %u: start_pfn = 0x%lx, low = 0x%lx\n", 165 printk("Node %u: start_pfn = 0x%lx, low = 0x%lx\n",
175 nid, start_pfn, low); 166 nid, start_pfn, low);
176
177 free_area_init_nodes(max_zone_pfns);
178
179 printk("Node %u: mem_map starts at %p\n",
180 pgdat->node_id, pgdat->node_mem_map);
181 } 167 }
168
169 free_area_init_nodes(max_zone_pfns);
182} 170}
183 171
184static struct kcore_list kcore_mem, kcore_vmalloc; 172static struct kcore_list kcore_mem, kcore_vmalloc;
185 173
186void __init mem_init(void) 174void __init mem_init(void)
187{ 175{
188 int codesize, reservedpages, datasize, initsize; 176 int codesize, datasize, initsize;
189 int nid; 177 int nid;
190 178
191 reservedpages = 0; 179 num_physpages = 0;
180 high_memory = NULL;
192 181
193 for_each_online_node(nid) { 182 for_each_online_node(nid) {
194 pg_data_t *pgdat = NODE_DATA(nid); 183 pg_data_t *pgdat = NODE_DATA(nid);
195 unsigned long node_pages = 0; 184 unsigned long node_pages = 0;
196 void *node_high_memory; 185 void *node_high_memory;
197 int i;
198 186
199 num_physpages += pgdat->node_present_pages; 187 num_physpages += pgdat->node_present_pages;
200 188
@@ -203,13 +191,9 @@ void __init mem_init(void)
203 191
204 totalram_pages += node_pages; 192 totalram_pages += node_pages;
205 193
206 for (i = 0; i < node_pages; i++) 194 node_high_memory = (void *)__va((pgdat->node_start_pfn +
207 if (PageReserved(pgdat->node_mem_map + i)) 195 pgdat->node_spanned_pages) <<
208 reservedpages++; 196 PAGE_SHIFT);
209
210 node_high_memory = (void *)((pgdat->node_start_pfn +
211 pgdat->node_spanned_pages) <<
212 PAGE_SHIFT);
213 if (node_high_memory > high_memory) 197 if (node_high_memory > high_memory)
214 high_memory = node_high_memory; 198 high_memory = node_high_memory;
215 } 199 }
@@ -239,11 +223,10 @@ void __init mem_init(void)
239 VMALLOC_END - VMALLOC_START); 223 VMALLOC_END - VMALLOC_START);
240 224
241 printk(KERN_INFO "Memory: %luk/%luk available (%dk kernel code, " 225 printk(KERN_INFO "Memory: %luk/%luk available (%dk kernel code, "
242 "%dk reserved, %dk data, %dk init)\n", 226 "%dk data, %dk init)\n",
243 (unsigned long) nr_free_pages() << (PAGE_SHIFT-10), 227 (unsigned long) nr_free_pages() << (PAGE_SHIFT-10),
244 totalram_pages << (PAGE_SHIFT-10), 228 num_physpages << (PAGE_SHIFT-10),
245 codesize >> 10, 229 codesize >> 10,
246 reservedpages << (PAGE_SHIFT-10),
247 datasize >> 10, 230 datasize >> 10,
248 initsize >> 10); 231 initsize >> 10);
249 232
@@ -264,7 +247,9 @@ void free_initmem(void)
264 free_page(addr); 247 free_page(addr);
265 totalram_pages++; 248 totalram_pages++;
266 } 249 }
267 printk ("Freeing unused kernel memory: %dk freed\n", (&__init_end - &__init_begin) >> 10); 250 printk("Freeing unused kernel memory: %ldk freed\n",
251 ((unsigned long)&__init_end -
252 (unsigned long)&__init_begin) >> 10);
268} 253}
269 254
270#ifdef CONFIG_BLK_DEV_INITRD 255#ifdef CONFIG_BLK_DEV_INITRD
@@ -277,6 +262,50 @@ void free_initrd_mem(unsigned long start, unsigned long end)
277 free_page(p); 262 free_page(p);
278 totalram_pages++; 263 totalram_pages++;
279 } 264 }
280 printk ("Freeing initrd memory: %ldk freed\n", (end - start) >> 10); 265 printk("Freeing initrd memory: %ldk freed\n", (end - start) >> 10);
266}
267#endif
268
269#ifdef CONFIG_MEMORY_HOTPLUG
270void online_page(struct page *page)
271{
272 ClearPageReserved(page);
273 init_page_count(page);
274 __free_page(page);
275 totalram_pages++;
276 num_physpages++;
281} 277}
278
279int arch_add_memory(int nid, u64 start, u64 size)
280{
281 pg_data_t *pgdat;
282 unsigned long start_pfn = start >> PAGE_SHIFT;
283 unsigned long nr_pages = size >> PAGE_SHIFT;
284 int ret;
285
286 pgdat = NODE_DATA(nid);
287
288 /* We only have ZONE_NORMAL, so this is easy.. */
289 ret = __add_pages(pgdat->node_zones + ZONE_NORMAL, start_pfn, nr_pages);
290 if (unlikely(ret))
291 printk("%s: Failed, __add_pages() == %d\n", __FUNCTION__, ret);
292
293 return ret;
294}
295EXPORT_SYMBOL_GPL(arch_add_memory);
296
297int remove_memory(u64 start, u64 size)
298{
299 return -EINVAL;
300}
301EXPORT_SYMBOL_GPL(remove_memory);
302
303#ifdef CONFIG_NUMA
304int memory_add_physaddr_to_nid(u64 addr)
305{
306 /* Node 0 for now.. */
307 return 0;
308}
309EXPORT_SYMBOL_GPL(memory_add_physaddr_to_nid);
310#endif
282#endif 311#endif
diff --git a/arch/sh/mm/numa.c b/arch/sh/mm/numa.c
new file mode 100644
index 000000000000..8aff065dd307
--- /dev/null
+++ b/arch/sh/mm/numa.c
@@ -0,0 +1,92 @@
1/*
2 * arch/sh/mm/numa.c - Multiple node support for SH machines
3 *
4 * Copyright (C) 2007 Paul Mundt
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10#include <linux/module.h>
11#include <linux/bootmem.h>
12#include <linux/mm.h>
13#include <linux/numa.h>
14#include <linux/pfn.h>
15#include <asm/sections.h>
16
17static bootmem_data_t plat_node_bdata[MAX_NUMNODES];
18struct pglist_data *node_data[MAX_NUMNODES] __read_mostly;
19EXPORT_SYMBOL_GPL(node_data);
20
21/*
22 * On SH machines the conventional approach is to stash system RAM
23 * in node 0, and other memory blocks in to node 1 and up, ordered by
24 * latency. Each node's pgdat is node-local at the beginning of the node,
25 * immediately followed by the node mem map.
26 */
27void __init setup_memory(void)
28{
29 unsigned long free_pfn = PFN_UP(__pa(_end));
30
31 /*
32 * Node 0 sets up its pgdat at the first available pfn,
33 * and bumps it up before setting up the bootmem allocator.
34 */
35 NODE_DATA(0) = pfn_to_kaddr(free_pfn);
36 memset(NODE_DATA(0), 0, sizeof(struct pglist_data));
37 free_pfn += PFN_UP(sizeof(struct pglist_data));
38 NODE_DATA(0)->bdata = &plat_node_bdata[0];
39
40 /* Set up node 0 */
41 setup_bootmem_allocator(free_pfn);
42
43 /* Give the platforms a chance to hook up their nodes */
44 plat_mem_setup();
45}
46
47void __init setup_bootmem_node(int nid, unsigned long start, unsigned long end)
48{
49 unsigned long bootmap_pages, bootmap_start, bootmap_size;
50 unsigned long start_pfn, free_pfn, end_pfn;
51
52 /* Don't allow bogus node assignment */
53 BUG_ON(nid > MAX_NUMNODES || nid == 0);
54
55 /*
56 * The free pfn starts at the beginning of the range, and is
57 * advanced as necessary for pgdat and node map allocations.
58 */
59 free_pfn = start_pfn = start >> PAGE_SHIFT;
60 end_pfn = end >> PAGE_SHIFT;
61
62 add_active_range(nid, start_pfn, end_pfn);
63
64 /* Node-local pgdat */
65 NODE_DATA(nid) = pfn_to_kaddr(free_pfn);
66 free_pfn += PFN_UP(sizeof(struct pglist_data));
67 memset(NODE_DATA(nid), 0, sizeof(struct pglist_data));
68
69 NODE_DATA(nid)->bdata = &plat_node_bdata[nid];
70 NODE_DATA(nid)->node_start_pfn = start_pfn;
71 NODE_DATA(nid)->node_spanned_pages = end_pfn - start_pfn;
72
73 /* Node-local bootmap */
74 bootmap_pages = bootmem_bootmap_pages(end_pfn - start_pfn);
75 bootmap_start = (unsigned long)pfn_to_kaddr(free_pfn);
76 bootmap_size = init_bootmem_node(NODE_DATA(nid), free_pfn, start_pfn,
77 end_pfn);
78
79 free_bootmem_with_active_regions(nid, end_pfn);
80
81 /* Reserve the pgdat and bootmap space with the bootmem allocator */
82 reserve_bootmem_node(NODE_DATA(nid), start_pfn << PAGE_SHIFT,
83 sizeof(struct pglist_data));
84 reserve_bootmem_node(NODE_DATA(nid), free_pfn << PAGE_SHIFT,
85 bootmap_pages << PAGE_SHIFT);
86
87 /* It's up */
88 node_set_online(nid);
89
90 /* Kick sparsemem */
91 sparse_memory_present_with_active_regions(nid);
92}
diff --git a/arch/sh/mm/pg-dma.c b/arch/sh/mm/pg-dma.c
deleted file mode 100644
index bb23679369d6..000000000000
--- a/arch/sh/mm/pg-dma.c
+++ /dev/null
@@ -1,95 +0,0 @@
1/*
2 * arch/sh/mm/pg-dma.c
3 *
4 * Fast clear_page()/copy_page() implementation using the SH DMAC
5 *
6 * Copyright (C) 2003 Paul Mundt
7 *
8 * This file is subject to the terms and conditions of the GNU General Public
9 * License. See the file "COPYING" in the main directory of this archive
10 * for more details.
11 */
12#include <linux/init.h>
13#include <linux/kernel.h>
14#include <linux/module.h>
15#include <asm/semaphore.h>
16#include <asm/mmu_context.h>
17#include <asm/addrspace.h>
18#include <asm/atomic.h>
19#include <asm/page.h>
20#include <asm/dma.h>
21#include <asm/io.h>
22
23/* Channel to use for page ops, must be dual-address mode capable. */
24static int dma_channel = CONFIG_DMA_PAGE_OPS_CHANNEL;
25
26static void copy_page_dma(void *to, void *from)
27{
28 /*
29 * This doesn't seem to get triggered until further along in the
30 * boot process, at which point the DMAC is already initialized.
31 * Fix this in the same fashion as clear_page_dma() in the event
32 * that this crashes due to the DMAC not being initialized.
33 */
34
35 flush_icache_range((unsigned long)from, PAGE_SIZE);
36 dma_write_page(dma_channel, (unsigned long)from, (unsigned long)to);
37 dma_wait_for_completion(dma_channel);
38}
39
40static void clear_page_dma(void *to)
41{
42 /*
43 * We get invoked quite early on, if the DMAC hasn't been initialized
44 * yet, fall back on the slow manual implementation.
45 */
46 if (dma_info[dma_channel].chan != dma_channel) {
47 clear_page_slow(to);
48 return;
49 }
50
51 dma_write_page(dma_channel, (unsigned long)empty_zero_page,
52 (unsigned long)to);
53
54 /*
55 * FIXME: Something is a bit racy here, if we poll the counter right
56 * away, we seem to lock. flushing the page from the dcache doesn't
57 * seem to make a difference one way or the other, though either a full
58 * icache or dcache flush does.
59 *
60 * The location of this is important as well, and must happen prior to
61 * the completion loop but after the transfer was initiated.
62 *
63 * Oddly enough, this doesn't appear to be an issue for copy_page()..
64 */
65 flush_icache_range((unsigned long)to, PAGE_SIZE);
66
67 dma_wait_for_completion(dma_channel);
68}
69
70static int __init pg_dma_init(void)
71{
72 int ret;
73
74 ret = request_dma(dma_channel, "page ops");
75 if (ret != 0)
76 return ret;
77
78 copy_page = copy_page_dma;
79 clear_page = clear_page_dma;
80
81 return ret;
82}
83
84static void __exit pg_dma_exit(void)
85{
86 free_dma(dma_channel);
87}
88
89module_init(pg_dma_init);
90module_exit(pg_dma_exit);
91
92MODULE_AUTHOR("Paul Mundt <lethal@linux-sh.org>");
93MODULE_DESCRIPTION("Optimized page copy/clear routines using a dual-address mode capable DMAC channel");
94MODULE_LICENSE("GPL");
95
diff --git a/arch/sh/tools/Makefile b/arch/sh/tools/Makefile
index 3c370a113291..567516b58acc 100644
--- a/arch/sh/tools/Makefile
+++ b/arch/sh/tools/Makefile
@@ -12,4 +12,5 @@
12 12
13include/asm-sh/machtypes.h: $(src)/gen-mach-types $(src)/mach-types 13include/asm-sh/machtypes.h: $(src)/gen-mach-types $(src)/mach-types
14 @echo ' Generating $@' 14 @echo ' Generating $@'
15 $(Q)if [ ! -d include/asm-sh ]; then mkdir -p include/asm-sh; fi
15 $(Q)$(AWK) -f $^ > $@ || { rm -f $@; /bin/false; } 16 $(Q)$(AWK) -f $^ > $@ || { rm -f $@; /bin/false; }
diff --git a/arch/sh/tools/mach-types b/arch/sh/tools/mach-types
index fb40f188aff9..4b5e9305092e 100644
--- a/arch/sh/tools/mach-types
+++ b/arch/sh/tools/mach-types
@@ -18,7 +18,6 @@ SE SH_SOLUTION_ENGINE
18HP6XX SH_HP6XX 18HP6XX SH_HP6XX
19HD64461 HD64461 19HD64461 HD64461
20HD64465 HD64465 20HD64465 HD64465
21SATURN SH_SATURN
22DREAMCAST SH_DREAMCAST 21DREAMCAST SH_DREAMCAST
23MPC1211 SH_MPC1211 22MPC1211 SH_MPC1211
24SNAPGEAR SH_SECUREEDGE5410 23SNAPGEAR SH_SECUREEDGE5410
@@ -34,3 +33,4 @@ R7785RP SH_R7785RP
34TITAN SH_TITAN 33TITAN SH_TITAN
35SHMIN SH_SHMIN 34SHMIN SH_SHMIN
367710VOIPGW SH_7710VOIPGW 357710VOIPGW SH_7710VOIPGW
36LBOXRE2 SH_LBOX_RE2
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c
index 1f89496d530e..672cd1042539 100644
--- a/drivers/serial/sh-sci.c
+++ b/drivers/serial/sh-sci.c
@@ -367,7 +367,9 @@ static void sci_init_pins_scif(struct uart_port *port, unsigned int cflag)
367 } else { 367 } else {
368#ifdef CONFIG_CPU_SUBTYPE_SH7343 368#ifdef CONFIG_CPU_SUBTYPE_SH7343
369 /* Nothing */ 369 /* Nothing */
370#elif defined(CONFIG_CPU_SUBTYPE_SH7780) || defined(CONFIG_CPU_SUBTYPE_SH7785) 370#elif defined(CONFIG_CPU_SUBTYPE_SH7780) || \
371 defined(CONFIG_CPU_SUBTYPE_SH7785) || \
372 defined(CONFIG_CPU_SUBTYPE_SHX3)
371 ctrl_outw(0x0080, SCSPTR0); /* Set RTS = 1 */ 373 ctrl_outw(0x0080, SCSPTR0); /* Set RTS = 1 */
372#else 374#else
373 ctrl_outw(0x0080, SCSPTR2); /* Set RTS = 1 */ 375 ctrl_outw(0x0080, SCSPTR2); /* Set RTS = 1 */
diff --git a/drivers/serial/sh-sci.h b/drivers/serial/sh-sci.h
index fb04fb5f9843..247fb66bf0f4 100644
--- a/drivers/serial/sh-sci.h
+++ b/drivers/serial/sh-sci.h
@@ -53,7 +53,12 @@
53# define SCIF_ORER 0x0001 /* overrun error bit */ 53# define SCIF_ORER 0x0001 /* overrun error bit */
54# define SCSCR_INIT(port) 0x3a /* TIE=0,RIE=0,TE=1,RE=1,REIE=1 */ 54# define SCSCR_INIT(port) 0x3a /* TIE=0,RIE=0,TE=1,RE=1,REIE=1 */
55# define SCIF_ONLY 55# define SCIF_ONLY
56#elif defined(CONFIG_CPU_SUBTYPE_SH7750) || defined(CONFIG_CPU_SUBTYPE_SH7751) 56#elif defined(CONFIG_CPU_SUBTYPE_SH7750) || \
57 defined(CONFIG_CPU_SUBTYPE_SH7750R) || \
58 defined(CONFIG_CPU_SUBTYPE_SH7750S) || \
59 defined(CONFIG_CPU_SUBTYPE_SH7091) || \
60 defined(CONFIG_CPU_SUBTYPE_SH7751) || \
61 defined(CONFIG_CPU_SUBTYPE_SH7751R)
57# define SCSPTR1 0xffe0001c /* 8 bit SCI */ 62# define SCSPTR1 0xffe0001c /* 8 bit SCI */
58# define SCSPTR2 0xFFE80020 /* 16 bit SCIF */ 63# define SCSPTR2 0xFFE80020 /* 16 bit SCIF */
59# define SCIF_ORER 0x0001 /* overrun error bit */ 64# define SCIF_ORER 0x0001 /* overrun error bit */
@@ -73,7 +78,7 @@
73# define SCPDR 0xA4050136 /* 16 bit SCIF */ 78# define SCPDR 0xA4050136 /* 16 bit SCIF */
74# define SCSCR_INIT(port) 0x0030 /* TIE=0,RIE=0,TE=1,RE=1 */ 79# define SCSCR_INIT(port) 0x0030 /* TIE=0,RIE=0,TE=1,RE=1 */
75# define SCIF_ONLY 80# define SCIF_ONLY
76#elif defined(CONFIG_CPU_SUBTYPE_SH7710) || defined(CONFIG_CPU_SUBTYPE_SH7712) 81#elif defined(CONFIG_CPU_SUBTYPE_SH7710) || defined(CONFIG_CPU_SUBTYPE_SH7712)
77# define SCSPTR0 0xA4400000 /* 16 bit SCIF */ 82# define SCSPTR0 0xA4400000 /* 16 bit SCIF */
78# define SCI_NPORTS 2 83# define SCI_NPORTS 2
79# define SCIF_ORER 0x0001 /* overrun error bit */ 84# define SCIF_ORER 0x0001 /* overrun error bit */
@@ -168,6 +173,14 @@
168# define SCIF_ORER 0x0001 /* overrun error bit */ 173# define SCIF_ORER 0x0001 /* overrun error bit */
169# define SCSCR_INIT(port) 0x38 /* TIE=0,RIE=0,TE=1,RE=1,REIE=1 */ 174# define SCSCR_INIT(port) 0x38 /* TIE=0,RIE=0,TE=1,RE=1,REIE=1 */
170# define SCIF_ONLY 175# define SCIF_ONLY
176#elif defined(CONFIG_CPU_SUBTYPE_SHX3)
177# define SCSPTR0 0xffc30020 /* 16 bit SCIF */
178# define SCSPTR1 0xffc40020 /* 16 bit SCIF */
179# define SCSPTR2 0xffc50020 /* 16 bit SCIF */
180# define SCSPTR3 0xffc60020 /* 16 bit SCIF */
181# define SCIF_ORER 0x0001 /* Overrun error bit */
182# define SCSCR_INIT(port) 0x38 /* TIE=0,RIE=0,TE=1,RE=1,REIE=1 */
183# define SCIF_ONLY
171#else 184#else
172# error CPU subtype not defined 185# error CPU subtype not defined
173#endif 186#endif
@@ -177,10 +190,15 @@
177#define SCI_CTRL_FLAGS_RIE 0x40 /* all */ 190#define SCI_CTRL_FLAGS_RIE 0x40 /* all */
178#define SCI_CTRL_FLAGS_TE 0x20 /* all */ 191#define SCI_CTRL_FLAGS_TE 0x20 /* all */
179#define SCI_CTRL_FLAGS_RE 0x10 /* all */ 192#define SCI_CTRL_FLAGS_RE 0x10 /* all */
180#if defined(CONFIG_CPU_SUBTYPE_SH7750) || \ 193#if defined(CONFIG_CPU_SUBTYPE_SH7750) || \
181 defined(CONFIG_CPU_SUBTYPE_SH7751) || \ 194 defined(CONFIG_CPU_SUBTYPE_SH7091) || \
182 defined(CONFIG_CPU_SUBTYPE_SH7780) || \ 195 defined(CONFIG_CPU_SUBTYPE_SH7750R) || \
183 defined(CONFIG_CPU_SUBTYPE_SH7785) 196 defined(CONFIG_CPU_SUBTYPE_SH7750S) || \
197 defined(CONFIG_CPU_SUBTYPE_SH7751) || \
198 defined(CONFIG_CPU_SUBTYPE_SH7751R) || \
199 defined(CONFIG_CPU_SUBTYPE_SH7780) || \
200 defined(CONFIG_CPU_SUBTYPE_SH7785) || \
201 defined(CONFIG_CPU_SUBTYPE_SHX3)
184#define SCI_CTRL_FLAGS_REIE 0x08 /* 7750 SCIF */ 202#define SCI_CTRL_FLAGS_REIE 0x08 /* 7750 SCIF */
185#else 203#else
186#define SCI_CTRL_FLAGS_REIE 0 204#define SCI_CTRL_FLAGS_REIE 0
@@ -514,8 +532,12 @@ static inline void set_sh771x_scif_pfc(struct uart_port *port)
514 } 532 }
515} 533}
516 534
517#elif defined(CONFIG_CPU_SUBTYPE_SH7750) || \ 535#elif defined(CONFIG_CPU_SUBTYPE_SH7750) || \
518 defined(CONFIG_CPU_SUBTYPE_SH7751) || \ 536 defined(CONFIG_CPU_SUBTYPE_SH7751) || \
537 defined(CONFIG_CPU_SUBTYPE_SH7751R) || \
538 defined(CONFIG_CPU_SUBTYPE_SH7750R) || \
539 defined(CONFIG_CPU_SUBTYPE_SH7750S) || \
540 defined(CONFIG_CPU_SUBTYPE_SH7091) || \
519 defined(CONFIG_CPU_SUBTYPE_SH4_202) 541 defined(CONFIG_CPU_SUBTYPE_SH4_202)
520static inline int sci_rxd_in(struct uart_port *port) 542static inline int sci_rxd_in(struct uart_port *port)
521{ 543{
@@ -653,6 +675,18 @@ static inline int sci_rxd_in(struct uart_port *port)
653 return ctrl_inw(SCSPTR2) & 0x0001 ? 1 : 0; /* SCIF */ 675 return ctrl_inw(SCSPTR2) & 0x0001 ? 1 : 0; /* SCIF */
654 return 1; 676 return 1;
655} 677}
678#elif defined(CONFIG_CPU_SUBTYPE_SHX3)
679static inline int sci_rxd_in(struct uart_port *port)
680{
681 if (port->mapbase == 0xffc30000)
682 return ctrl_inw(SCSPTR0) & 0x0001 ? 1 : 0; /* SCIF */
683 if (port->mapbase == 0xffc40000)
684 return ctrl_inw(SCSPTR1) & 0x0001 ? 1 : 0; /* SCIF */
685 if (port->mapbase == 0xffc50000)
686 return ctrl_inw(SCSPTR2) & 0x0001 ? 1 : 0; /* SCIF */
687 if (port->mapbase == 0xffc60000)
688 return ctrl_inw(SCSPTR3) & 0x0001 ? 1 : 0; /* SCIF */
689}
656#endif 690#endif
657 691
658/* 692/*
diff --git a/drivers/video/pvr2fb.c b/drivers/video/pvr2fb.c
index df2909ae704c..2ba959a83eb0 100644
--- a/drivers/video/pvr2fb.c
+++ b/drivers/video/pvr2fb.c
@@ -115,11 +115,11 @@ enum { VO_PAL, VO_NTSC, VO_VGA };
115enum { PAL_ARGB1555, PAL_RGB565, PAL_ARGB4444, PAL_ARGB8888 }; 115enum { PAL_ARGB1555, PAL_RGB565, PAL_ARGB4444, PAL_ARGB8888 };
116 116
117struct pvr2_params { unsigned int val; char *name; }; 117struct pvr2_params { unsigned int val; char *name; };
118static struct pvr2_params cables[] __initdata = { 118static struct pvr2_params cables[] __devinitdata = {
119 { CT_VGA, "VGA" }, { CT_RGB, "RGB" }, { CT_COMPOSITE, "COMPOSITE" }, 119 { CT_VGA, "VGA" }, { CT_RGB, "RGB" }, { CT_COMPOSITE, "COMPOSITE" },
120}; 120};
121 121
122static struct pvr2_params outputs[] __initdata = { 122static struct pvr2_params outputs[] __devinitdata = {
123 { VO_PAL, "PAL" }, { VO_NTSC, "NTSC" }, { VO_VGA, "VGA" }, 123 { VO_PAL, "PAL" }, { VO_NTSC, "NTSC" }, { VO_VGA, "VGA" },
124}; 124};
125 125
@@ -147,16 +147,16 @@ static struct pvr2fb_par {
147 147
148static struct fb_info *fb_info; 148static struct fb_info *fb_info;
149 149
150static struct fb_fix_screeninfo pvr2_fix __initdata = { 150static struct fb_fix_screeninfo pvr2_fix __devinitdata = {
151 .id = "NEC PowerVR2", 151 .id = "NEC PowerVR2",
152 .type = FB_TYPE_PACKED_PIXELS, 152 .type = FB_TYPE_PACKED_PIXELS,
153 .visual = FB_VISUAL_TRUECOLOR, 153 .visual = FB_VISUAL_TRUECOLOR,
154 .ypanstep = 1, 154 .ypanstep = 1,
155 .ywrapstep = 1, 155 .ywrapstep = 1,
156 .accel = FB_ACCEL_NONE, 156 .accel = FB_ACCEL_NONE,
157}; 157};
158 158
159static struct fb_var_screeninfo pvr2_var __initdata = { 159static struct fb_var_screeninfo pvr2_var __devinitdata = {
160 .xres = 640, 160 .xres = 640,
161 .yres = 480, 161 .yres = 480,
162 .xres_virtual = 640, 162 .xres_virtual = 640,
@@ -195,10 +195,6 @@ static unsigned int shdma = PVR2_CASCADE_CHAN;
195static unsigned int pvr2dma = ONCHIP_NR_DMA_CHANNELS; 195static unsigned int pvr2dma = ONCHIP_NR_DMA_CHANNELS;
196#endif 196#endif
197 197
198/* Interface used by the world */
199
200int pvr2fb_setup(char*);
201
202static int pvr2fb_setcolreg(unsigned int regno, unsigned int red, unsigned int green, unsigned int blue, 198static int pvr2fb_setcolreg(unsigned int regno, unsigned int red, unsigned int green, unsigned int blue,
203 unsigned int transp, struct fb_info *info); 199 unsigned int transp, struct fb_info *info);
204static int pvr2fb_blank(int blank, struct fb_info *info); 200static int pvr2fb_blank(int blank, struct fb_info *info);
@@ -227,12 +223,12 @@ static struct fb_ops pvr2fb_ops = {
227#ifdef CONFIG_SH_DMA 223#ifdef CONFIG_SH_DMA
228 .fb_write = pvr2fb_write, 224 .fb_write = pvr2fb_write,
229#endif 225#endif
230 .fb_fillrect = cfb_fillrect, 226 .fb_fillrect = cfb_fillrect,
231 .fb_copyarea = cfb_copyarea, 227 .fb_copyarea = cfb_copyarea,
232 .fb_imageblit = cfb_imageblit, 228 .fb_imageblit = cfb_imageblit,
233}; 229};
234 230
235static struct fb_videomode pvr2_modedb[] __initdata = { 231static struct fb_videomode pvr2_modedb[] __devinitdata = {
236 /* 232 /*
237 * Broadcast video modes (PAL and NTSC). I'm unfamiliar with 233 * Broadcast video modes (PAL and NTSC). I'm unfamiliar with
238 * PAL-M and PAL-N, but from what I've read both modes parallel PAL and 234 * PAL-M and PAL-N, but from what I've read both modes parallel PAL and
@@ -252,7 +248,7 @@ static struct fb_videomode pvr2_modedb[] __initdata = {
252 /* 640x480 @ 60hz (VGA) */ 248 /* 640x480 @ 60hz (VGA) */
253 "vga_640x480", 60, 640, 480, VGA_CLK, 38, 33, 0, 18, 146, 26, 249 "vga_640x480", 60, 640, 480, VGA_CLK, 38, 33, 0, 18, 146, 26,
254 0, FB_VMODE_YWRAP 250 0, FB_VMODE_YWRAP
255 }, 251 },
256}; 252};
257 253
258#define NUM_TOTAL_MODES ARRAY_SIZE(pvr2_modedb) 254#define NUM_TOTAL_MODES ARRAY_SIZE(pvr2_modedb)
@@ -262,7 +258,7 @@ static struct fb_videomode pvr2_modedb[] __initdata = {
262#define DEFMODE_VGA 2 258#define DEFMODE_VGA 2
263 259
264static int defmode = DEFMODE_NTSC; 260static int defmode = DEFMODE_NTSC;
265static char *mode_option __initdata = NULL; 261static char *mode_option __devinitdata = NULL;
266 262
267static inline void pvr2fb_set_pal_type(unsigned int type) 263static inline void pvr2fb_set_pal_type(unsigned int type)
268{ 264{
@@ -293,7 +289,7 @@ static void set_color_bitfields(struct fb_var_screeninfo *var)
293{ 289{
294 switch (var->bits_per_pixel) { 290 switch (var->bits_per_pixel) {
295 case 16: /* RGB 565 */ 291 case 16: /* RGB 565 */
296 pvr2fb_set_pal_type(PAL_RGB565); 292 pvr2fb_set_pal_type(PAL_RGB565);
297 var->red.offset = 11; var->red.length = 5; 293 var->red.offset = 11; var->red.length = 5;
298 var->green.offset = 5; var->green.length = 6; 294 var->green.offset = 5; var->green.length = 6;
299 var->blue.offset = 0; var->blue.length = 5; 295 var->blue.offset = 0; var->blue.length = 5;
@@ -306,7 +302,7 @@ static void set_color_bitfields(struct fb_var_screeninfo *var)
306 var->transp.offset = 0; var->transp.length = 0; 302 var->transp.offset = 0; var->transp.length = 0;
307 break; 303 break;
308 case 32: /* ARGB 8888 */ 304 case 32: /* ARGB 8888 */
309 pvr2fb_set_pal_type(PAL_ARGB8888); 305 pvr2fb_set_pal_type(PAL_ARGB8888);
310 var->red.offset = 16; var->red.length = 8; 306 var->red.offset = 16; var->red.length = 8;
311 var->green.offset = 8; var->green.length = 8; 307 var->green.offset = 8; var->green.length = 8;
312 var->blue.offset = 0; var->blue.length = 8; 308 var->blue.offset = 0; var->blue.length = 8;
@@ -379,13 +375,13 @@ static int pvr2fb_set_par(struct fb_info *info)
379 var->vmode &= FB_VMODE_MASK; 375 var->vmode &= FB_VMODE_MASK;
380 if (var->vmode & FB_VMODE_INTERLACED && video_output != VO_VGA) 376 if (var->vmode & FB_VMODE_INTERLACED && video_output != VO_VGA)
381 par->is_interlaced = 1; 377 par->is_interlaced = 1;
382 /* 378 /*
383 * XXX: Need to be more creative with this (i.e. allow doublecan for 379 * XXX: Need to be more creative with this (i.e. allow doublecan for
384 * PAL/NTSC output). 380 * PAL/NTSC output).
385 */ 381 */
386 if (var->vmode & FB_VMODE_DOUBLE && video_output == VO_VGA) 382 if (var->vmode & FB_VMODE_DOUBLE && video_output == VO_VGA)
387 par->is_doublescan = 1; 383 par->is_doublescan = 1;
388 384
389 par->hsync_total = var->left_margin + var->xres + var->right_margin + 385 par->hsync_total = var->left_margin + var->xres + var->right_margin +
390 var->hsync_len; 386 var->hsync_len;
391 par->vsync_total = var->upper_margin + var->yres + var->lower_margin + 387 par->vsync_total = var->upper_margin + var->yres + var->lower_margin +
@@ -408,7 +404,7 @@ static int pvr2fb_set_par(struct fb_info *info)
408 } else { 404 } else {
409 /* VGA mode */ 405 /* VGA mode */
410 /* XXX: What else needs to be checked? */ 406 /* XXX: What else needs to be checked? */
411 /* 407 /*
412 * XXX: We have a little freedom in VGA modes, what ranges 408 * XXX: We have a little freedom in VGA modes, what ranges
413 * should be here (i.e. hsync/vsync totals, etc.)? 409 * should be here (i.e. hsync/vsync totals, etc.)?
414 */ 410 */
@@ -419,8 +415,8 @@ static int pvr2fb_set_par(struct fb_info *info)
419 /* Calculate the remainding offsets */ 415 /* Calculate the remainding offsets */
420 par->diwstart_h = par->borderstart_h + var->left_margin; 416 par->diwstart_h = par->borderstart_h + var->left_margin;
421 par->diwstart_v = par->borderstart_v + var->upper_margin; 417 par->diwstart_v = par->borderstart_v + var->upper_margin;
422 par->borderstop_h = par->diwstart_h + var->xres + 418 par->borderstop_h = par->diwstart_h + var->xres +
423 var->right_margin; 419 var->right_margin;
424 par->borderstop_v = par->diwstart_v + var->yres + 420 par->borderstop_v = par->diwstart_v + var->yres +
425 var->lower_margin; 421 var->lower_margin;
426 422
@@ -465,12 +461,12 @@ static int pvr2fb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
465 set_color_bitfields(var); 461 set_color_bitfields(var);
466 462
467 if (var->vmode & FB_VMODE_YWRAP) { 463 if (var->vmode & FB_VMODE_YWRAP) {
468 if (var->xoffset || var->yoffset < 0 || 464 if (var->xoffset || var->yoffset < 0 ||
469 var->yoffset >= var->yres_virtual) { 465 var->yoffset >= var->yres_virtual) {
470 var->xoffset = var->yoffset = 0; 466 var->xoffset = var->yoffset = 0;
471 } else { 467 } else {
472 if (var->xoffset > var->xres_virtual - var->xres || 468 if (var->xoffset > var->xres_virtual - var->xres ||
473 var->yoffset > var->yres_virtual - var->yres || 469 var->yoffset > var->yres_virtual - var->yres ||
474 var->xoffset < 0 || var->yoffset < 0) 470 var->xoffset < 0 || var->yoffset < 0)
475 var->xoffset = var->yoffset = 0; 471 var->xoffset = var->yoffset = 0;
476 } 472 }
@@ -478,7 +474,7 @@ static int pvr2fb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
478 var->xoffset = var->yoffset = 0; 474 var->xoffset = var->yoffset = 0;
479 } 475 }
480 476
481 /* 477 /*
482 * XXX: Need to be more creative with this (i.e. allow doublecan for 478 * XXX: Need to be more creative with this (i.e. allow doublecan for
483 * PAL/NTSC output). 479 * PAL/NTSC output).
484 */ 480 */
@@ -507,7 +503,7 @@ static int pvr2fb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
507 var->vsync_len = par->borderstop_v + 503 var->vsync_len = par->borderstop_v +
508 (par->vsync_total - par->borderstop_v); 504 (par->vsync_total - par->borderstop_v);
509 } 505 }
510 506
511 hsync_total = var->left_margin + var->xres + var->right_margin + 507 hsync_total = var->left_margin + var->xres + var->right_margin +
512 var->hsync_len; 508 var->hsync_len;
513 vtotal = var->upper_margin + var->yres + var->lower_margin + 509 vtotal = var->upper_margin + var->yres + var->lower_margin +
@@ -531,7 +527,7 @@ static int pvr2fb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
531 } 527 }
532 } 528 }
533 } 529 }
534 530
535 /* Check memory sizes */ 531 /* Check memory sizes */
536 line_length = get_line_length(var->xres_virtual, var->bits_per_pixel); 532 line_length = get_line_length(var->xres_virtual, var->bits_per_pixel);
537 if (line_length * var->yres_virtual > info->fix.smem_len) 533 if (line_length * var->yres_virtual > info->fix.smem_len)
@@ -552,7 +548,7 @@ static void pvr2_update_display(struct fb_info *info)
552 DISP_DIWADDRS); 548 DISP_DIWADDRS);
553} 549}
554 550
555/* 551/*
556 * Initialize the video mode. Currently, the 16bpp and 24bpp modes aren't 552 * Initialize the video mode. Currently, the 16bpp and 24bpp modes aren't
557 * very stable. It's probably due to the fact that a lot of the 2D video 553 * very stable. It's probably due to the fact that a lot of the 2D video
558 * registers are still undocumented. 554 * registers are still undocumented.
@@ -592,18 +588,18 @@ static void pvr2_init_display(struct fb_info *info)
592 /* display window start position */ 588 /* display window start position */
593 fb_writel(par->diwstart_h, DISP_DIWHSTRT); 589 fb_writel(par->diwstart_h, DISP_DIWHSTRT);
594 fb_writel((par->diwstart_v << 16) | par->diwstart_v, DISP_DIWVSTRT); 590 fb_writel((par->diwstart_v << 16) | par->diwstart_v, DISP_DIWVSTRT);
595 591
596 /* misc. settings */ 592 /* misc. settings */
597 fb_writel((0x16 << 16) | par->is_lowres, DISP_DIWCONF); 593 fb_writel((0x16 << 16) | par->is_lowres, DISP_DIWCONF);
598 594
599 /* clock doubler (for VGA), scan doubler, display enable */ 595 /* clock doubler (for VGA), scan doubler, display enable */
600 fb_writel(((video_output == VO_VGA) << 23) | 596 fb_writel(((video_output == VO_VGA) << 23) |
601 (par->is_doublescan << 1) | 1, DISP_DIWMODE); 597 (par->is_doublescan << 1) | 1, DISP_DIWMODE);
602 598
603 /* bits per pixel */ 599 /* bits per pixel */
604 fb_writel(fb_readl(DISP_DIWMODE) | (--bytesperpixel << 2), DISP_DIWMODE); 600 fb_writel(fb_readl(DISP_DIWMODE) | (--bytesperpixel << 2), DISP_DIWMODE);
605 601
606 /* video enable, color sync, interlace, 602 /* video enable, color sync, interlace,
607 * hsync and vsync polarity (currently unused) */ 603 * hsync and vsync polarity (currently unused) */
608 fb_writel(0x100 | ((par->is_interlaced /*|4*/) << 4), DISP_SYNCCONF); 604 fb_writel(0x100 | ((par->is_interlaced /*|4*/) << 4), DISP_SYNCCONF);
609} 605}
@@ -657,7 +653,7 @@ static irqreturn_t pvr2fb_interrupt(int irq, void *dev_id)
657static int pvr2_init_cable(void) 653static int pvr2_init_cable(void)
658{ 654{
659 if (cable_type < 0) { 655 if (cable_type < 0) {
660 fb_writel((fb_readl(PCTRA) & 0xfff0ffff) | 0x000a0000, 656 fb_writel((fb_readl(PCTRA) & 0xfff0ffff) | 0x000a0000,
661 PCTRA); 657 PCTRA);
662 cable_type = (fb_readw(PDTRA) >> 8) & 3; 658 cable_type = (fb_readw(PDTRA) >> 8) & 3;
663 } 659 }
@@ -687,7 +683,7 @@ static ssize_t pvr2fb_write(struct fb_info *info, const char *buf,
687 pages = kmalloc(nr_pages * sizeof(struct page *), GFP_KERNEL); 683 pages = kmalloc(nr_pages * sizeof(struct page *), GFP_KERNEL);
688 if (!pages) 684 if (!pages)
689 return -ENOMEM; 685 return -ENOMEM;
690 686
691 down_read(&current->mm->mmap_sem); 687 down_read(&current->mm->mmap_sem);
692 ret = get_user_pages(current, current->mm, (unsigned long)buf, 688 ret = get_user_pages(current, current->mm, (unsigned long)buf,
693 nr_pages, WRITE, 0, pages, NULL); 689 nr_pages, WRITE, 0, pages, NULL);
@@ -700,7 +696,7 @@ static ssize_t pvr2fb_write(struct fb_info *info, const char *buf,
700 } 696 }
701 697
702 dma_configure_channel(shdma, 0x12c1); 698 dma_configure_channel(shdma, 0x12c1);
703 699
704 dst = (unsigned long)fb_info->screen_base + *ppos; 700 dst = (unsigned long)fb_info->screen_base + *ppos;
705 start = (unsigned long)page_address(pages[0]); 701 start = (unsigned long)page_address(pages[0]);
706 end = (unsigned long)page_address(pages[nr_pages]); 702 end = (unsigned long)page_address(pages[nr_pages]);
@@ -744,7 +740,7 @@ out_unmap:
744 kfree(pages); 740 kfree(pages);
745 741
746 return ret; 742 return ret;
747} 743}
748#endif /* CONFIG_SH_DMA */ 744#endif /* CONFIG_SH_DMA */
749 745
750/** 746/**
@@ -765,21 +761,21 @@ out_unmap:
765 * in for flexibility anyways. Who knows, maybe someone has tv-out on a 761 * in for flexibility anyways. Who knows, maybe someone has tv-out on a
766 * PCI-based version of these things ;-) 762 * PCI-based version of these things ;-)
767 */ 763 */
768static int __init pvr2fb_common_init(void) 764static int __devinit pvr2fb_common_init(void)
769{ 765{
770 struct pvr2fb_par *par = currentpar; 766 struct pvr2fb_par *par = currentpar;
771 unsigned long modememused, rev; 767 unsigned long modememused, rev;
772 768
773 fb_info->screen_base = ioremap_nocache(pvr2_fix.smem_start, 769 fb_info->screen_base = ioremap_nocache(pvr2_fix.smem_start,
774 pvr2_fix.smem_len); 770 pvr2_fix.smem_len);
775 771
776 if (!fb_info->screen_base) { 772 if (!fb_info->screen_base) {
777 printk(KERN_ERR "pvr2fb: Failed to remap smem space\n"); 773 printk(KERN_ERR "pvr2fb: Failed to remap smem space\n");
778 goto out_err; 774 goto out_err;
779 } 775 }
780 776
781 par->mmio_base = (unsigned long)ioremap_nocache(pvr2_fix.mmio_start, 777 par->mmio_base = (unsigned long)ioremap_nocache(pvr2_fix.mmio_start,
782 pvr2_fix.mmio_len); 778 pvr2_fix.mmio_len);
783 if (!par->mmio_base) { 779 if (!par->mmio_base) {
784 printk(KERN_ERR "pvr2fb: Failed to remap mmio space\n"); 780 printk(KERN_ERR "pvr2fb: Failed to remap mmio space\n");
785 goto out_err; 781 goto out_err;
@@ -820,7 +816,7 @@ static int __init pvr2fb_common_init(void)
820 printk("fb%d: %s (rev %ld.%ld) frame buffer device, using %ldk/%ldk of video memory\n", 816 printk("fb%d: %s (rev %ld.%ld) frame buffer device, using %ldk/%ldk of video memory\n",
821 fb_info->node, fb_info->fix.id, (rev >> 4) & 0x0f, rev & 0x0f, 817 fb_info->node, fb_info->fix.id, (rev >> 4) & 0x0f, rev & 0x0f,
822 modememused >> 10, (unsigned long)(fb_info->fix.smem_len >> 10)); 818 modememused >> 10, (unsigned long)(fb_info->fix.smem_len >> 10));
823 printk("fb%d: Mode %dx%d-%d pitch = %ld cable: %s video output: %s\n", 819 printk("fb%d: Mode %dx%d-%d pitch = %ld cable: %s video output: %s\n",
824 fb_info->node, fb_info->var.xres, fb_info->var.yres, 820 fb_info->node, fb_info->var.xres, fb_info->var.yres,
825 fb_info->var.bits_per_pixel, 821 fb_info->var.bits_per_pixel,
826 get_line_length(fb_info->var.xres, fb_info->var.bits_per_pixel), 822 get_line_length(fb_info->var.xres, fb_info->var.bits_per_pixel),
@@ -878,8 +874,8 @@ static int __init pvr2fb_dc_init(void)
878 video_output = VO_NTSC; 874 video_output = VO_NTSC;
879 } 875 }
880 } 876 }
881 877
882 /* 878 /*
883 * Nothing exciting about the DC PVR2 .. only a measly 8MiB. 879 * Nothing exciting about the DC PVR2 .. only a measly 8MiB.
884 */ 880 */
885 pvr2_fix.smem_start = 0xa5000000; /* RAM starts here */ 881 pvr2_fix.smem_start = 0xa5000000; /* RAM starts here */
@@ -903,7 +899,7 @@ static int __init pvr2fb_dc_init(void)
903 return pvr2fb_common_init(); 899 return pvr2fb_common_init();
904} 900}
905 901
906static void pvr2fb_dc_exit(void) 902static void __exit pvr2fb_dc_exit(void)
907{ 903{
908 if (fb_info->screen_base) { 904 if (fb_info->screen_base) {
909 iounmap(fb_info->screen_base); 905 iounmap(fb_info->screen_base);
@@ -987,13 +983,13 @@ static int __init pvr2fb_pci_init(void)
987 return pci_register_driver(&pvr2fb_pci_driver); 983 return pci_register_driver(&pvr2fb_pci_driver);
988} 984}
989 985
990static void pvr2fb_pci_exit(void) 986static void __exit pvr2fb_pci_exit(void)
991{ 987{
992 pci_unregister_driver(&pvr2fb_pci_driver); 988 pci_unregister_driver(&pvr2fb_pci_driver);
993} 989}
994#endif /* CONFIG_PCI */ 990#endif /* CONFIG_PCI */
995 991
996static int __init pvr2_get_param(const struct pvr2_params *p, const char *s, 992static int __devinit pvr2_get_param(const struct pvr2_params *p, const char *s,
997 int val, int size) 993 int val, int size)
998{ 994{
999 int i; 995 int i;
@@ -1021,7 +1017,7 @@ static int __init pvr2_get_param(const struct pvr2_params *p, const char *s,
1021 */ 1017 */
1022 1018
1023#ifndef MODULE 1019#ifndef MODULE
1024int __init pvr2fb_setup(char *options) 1020static int __init pvr2fb_setup(char *options)
1025{ 1021{
1026 char *this_opt; 1022 char *this_opt;
1027 char cable_arg[80]; 1023 char cable_arg[80];
@@ -1061,7 +1057,7 @@ static struct pvr2_board {
1061 int (*init)(void); 1057 int (*init)(void);
1062 void (*exit)(void); 1058 void (*exit)(void);
1063 char name[16]; 1059 char name[16];
1064} board_list[] = { 1060} board_driver[] = {
1065#ifdef CONFIG_SH_DREAMCAST 1061#ifdef CONFIG_SH_DREAMCAST
1066 { pvr2fb_dc_init, pvr2fb_dc_exit, "Sega DC PVR2" }, 1062 { pvr2fb_dc_init, pvr2fb_dc_exit, "Sega DC PVR2" },
1067#endif 1063#endif
@@ -1071,7 +1067,7 @@ static struct pvr2_board {
1071 { 0, }, 1067 { 0, },
1072}; 1068};
1073 1069
1074int __init pvr2fb_init(void) 1070static int __init pvr2fb_init(void)
1075{ 1071{
1076 int i, ret = -ENODEV; 1072 int i, ret = -ENODEV;
1077 int size; 1073 int size;
@@ -1095,8 +1091,8 @@ int __init pvr2fb_init(void)
1095 1091
1096 currentpar = (struct pvr2fb_par *)(fb_info + 1); 1092 currentpar = (struct pvr2fb_par *)(fb_info + 1);
1097 1093
1098 for (i = 0; i < ARRAY_SIZE(board_list); i++) { 1094 for (i = 0; i < ARRAY_SIZE(board_driver); i++) {
1099 struct pvr2_board *pvr_board = board_list + i; 1095 struct pvr2_board *pvr_board = board_driver + i;
1100 1096
1101 if (!pvr_board->init) 1097 if (!pvr_board->init)
1102 continue; 1098 continue;
@@ -1118,13 +1114,13 @@ static void __exit pvr2fb_exit(void)
1118{ 1114{
1119 int i; 1115 int i;
1120 1116
1121 for (i = 0; i < ARRAY_SIZE(board_list); i++) { 1117 for (i = 0; i < ARRAY_SIZE(board_driver); i++) {
1122 struct pvr2_board *pvr_board = board_list + i; 1118 struct pvr2_board *pvr_board = board_driver + i;
1123 1119
1124 if (pvr_board->exit) 1120 if (pvr_board->exit)
1125 pvr_board->exit(); 1121 pvr_board->exit();
1126 } 1122 }
1127 1123
1128#ifdef CONFIG_SH_STORE_QUEUES 1124#ifdef CONFIG_SH_STORE_QUEUES
1129 sq_unmap(pvr2fb_map); 1125 sq_unmap(pvr2fb_map);
1130#endif 1126#endif
@@ -1139,4 +1135,3 @@ module_exit(pvr2fb_exit);
1139MODULE_AUTHOR("Paul Mundt <lethal@linux-sh.org>, M. R. Brown <mrbrown@0xd6.org>"); 1135MODULE_AUTHOR("Paul Mundt <lethal@linux-sh.org>, M. R. Brown <mrbrown@0xd6.org>");
1140MODULE_DESCRIPTION("Framebuffer driver for NEC PowerVR 2 based graphics boards"); 1136MODULE_DESCRIPTION("Framebuffer driver for NEC PowerVR 2 based graphics boards");
1141MODULE_LICENSE("GPL"); 1137MODULE_LICENSE("GPL");
1142
diff --git a/fs/Kconfig b/fs/Kconfig
index 94b9d861bf9b..ee11f8d94085 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -991,7 +991,7 @@ config TMPFS_POSIX_ACL
991 991
992config HUGETLBFS 992config HUGETLBFS
993 bool "HugeTLB file system support" 993 bool "HugeTLB file system support"
994 depends on X86 || IA64 || PPC64 || SPARC64 || SUPERH || BROKEN 994 depends on X86 || IA64 || PPC64 || SPARC64 || (SUPERH && MMU) || BROKEN
995 help 995 help
996 hugetlbfs is a filesystem backing for HugeTLB pages, based on 996 hugetlbfs is a filesystem backing for HugeTLB pages, based on
997 ramfs. For architectures that support it, say Y here and read 997 ramfs. For architectures that support it, say Y here and read
diff --git a/include/asm-sh/bugs.h b/include/asm-sh/bugs.h
index 5a117ec43c77..aeee8da9c54f 100644
--- a/include/asm-sh/bugs.h
+++ b/include/asm-sh/bugs.h
@@ -22,7 +22,7 @@ static void __init check_bugs(void)
22 current_cpu_data.loops_per_jiffy = loops_per_jiffy; 22 current_cpu_data.loops_per_jiffy = loops_per_jiffy;
23 23
24 switch (current_cpu_data.type) { 24 switch (current_cpu_data.type) {
25 case CPU_SH7604 ... CPU_SH7619: 25 case CPU_SH7619:
26 *p++ = '2'; 26 *p++ = '2';
27 break; 27 break;
28 case CPU_SH7206: 28 case CPU_SH7206:
@@ -35,7 +35,7 @@ static void __init check_bugs(void)
35 case CPU_SH7750 ... CPU_SH4_501: 35 case CPU_SH7750 ... CPU_SH4_501:
36 *p++ = '4'; 36 *p++ = '4';
37 break; 37 break;
38 case CPU_SH7770 ... CPU_SH7785: 38 case CPU_SH7770 ... CPU_SHX3:
39 *p++ = '4'; 39 *p++ = '4';
40 *p++ = 'a'; 40 *p++ = 'a';
41 break; 41 break;
diff --git a/include/asm-sh/cache.h b/include/asm-sh/cache.h
index 9a3cb6ba9d15..7a18649d1ccb 100644
--- a/include/asm-sh/cache.h
+++ b/include/asm-sh/cache.h
@@ -9,6 +9,7 @@
9#define __ASM_SH_CACHE_H 9#define __ASM_SH_CACHE_H
10#ifdef __KERNEL__ 10#ifdef __KERNEL__
11 11
12#include <linux/init.h>
12#include <asm/cpu/cache.h> 13#include <asm/cpu/cache.h>
13 14
14#define SH_CACHE_VALID 1 15#define SH_CACHE_VALID 1
@@ -48,6 +49,9 @@ struct cache_info {
48 49
49 unsigned long flags; 50 unsigned long flags;
50}; 51};
52
53int __init detect_cpu_and_cache_system(void);
54
51#endif /* __ASSEMBLY__ */ 55#endif /* __ASSEMBLY__ */
52#endif /* __KERNEL__ */ 56#endif /* __KERNEL__ */
53#endif /* __ASM_SH_CACHE_H */ 57#endif /* __ASM_SH_CACHE_H */
diff --git a/include/asm-sh/cpu-sh2/cache.h b/include/asm-sh/cpu-sh2/cache.h
index 20b9796842dc..f02ba7a672b2 100644
--- a/include/asm-sh/cpu-sh2/cache.h
+++ b/include/asm-sh/cpu-sh2/cache.h
@@ -12,23 +12,7 @@
12 12
13#define L1_CACHE_SHIFT 4 13#define L1_CACHE_SHIFT 4
14 14
15#if defined(CONFIG_CPU_SUBTYPE_SH7604) 15#if defined(CONFIG_CPU_SUBTYPE_SH7619)
16#define CCR 0xfffffe92 /* Address of Cache Control Register */
17
18#define CCR_CACHE_CE 0x01 /* Cache enable */
19#define CCR_CACHE_ID 0x02 /* Instruction Replacement disable */
20#define CCR_CACHE_OD 0x04 /* Data Replacement disable */
21#define CCR_CACHE_TW 0x08 /* Two-way mode */
22#define CCR_CACHE_CP 0x10 /* Cache purge */
23
24#define CACHE_OC_ADDRESS_ARRAY 0x60000000
25
26#define CCR_CACHE_ENABLE CCR_CACHE_CE
27#define CCR_CACHE_INVALIDATE CCR_CACHE_CP
28#define CCR_CACHE_ORA CCR_CACHE_TW
29#define CCR_CACHE_WT 0x00 /* SH-2 is _always_ write-through */
30
31#elif defined(CONFIG_CPU_SUBTYPE_SH7619)
32#define CCR1 0xffffffec 16#define CCR1 0xffffffec
33#define CCR CCR1 17#define CCR CCR1
34 18
@@ -49,5 +33,5 @@
49#define CCR_CACHE_ENABLE CCR_CACHE_CE 33#define CCR_CACHE_ENABLE CCR_CACHE_CE
50#define CCR_CACHE_INVALIDATE CCR_CACHE_CF 34#define CCR_CACHE_INVALIDATE CCR_CACHE_CF
51#endif 35#endif
52#endif /* __ASM_CPU_SH2_CACHE_H */
53 36
37#endif /* __ASM_CPU_SH2_CACHE_H */
diff --git a/include/asm-sh/cpu-sh3/timer.h b/include/asm-sh/cpu-sh3/timer.h
index b2394cf76f49..4928b08f9d19 100644
--- a/include/asm-sh/cpu-sh3/timer.h
+++ b/include/asm-sh/cpu-sh3/timer.h
@@ -29,7 +29,7 @@
29#endif 29#endif
30 30
31#if defined(CONFIG_CPU_SUBTYPE_SH7300) || defined(CONFIG_CPU_SUBTYPE_SH7710) 31#if defined(CONFIG_CPU_SUBTYPE_SH7300) || defined(CONFIG_CPU_SUBTYPE_SH7710)
32#define TMU_TSTR 0xa412fe92 /* Byte access */ 32#define TMU_012_TSTR 0xa412fe92 /* Byte access */
33 33
34#define TMU0_TCOR 0xa412fe94 /* Long access */ 34#define TMU0_TCOR 0xa412fe94 /* Long access */
35#define TMU0_TCNT 0xa412fe98 /* Long access */ 35#define TMU0_TCNT 0xa412fe98 /* Long access */
@@ -44,7 +44,7 @@
44#define TMU2_TCR 0xa412feb4 /* Word access */ 44#define TMU2_TCR 0xa412feb4 /* Word access */
45 45
46#else 46#else
47#define TMU_TSTR 0xfffffe92 /* Byte access */ 47#define TMU_012_TSTR 0xfffffe92 /* Byte access */
48 48
49#define TMU0_TCOR 0xfffffe94 /* Long access */ 49#define TMU0_TCOR 0xfffffe94 /* Long access */
50#define TMU0_TCNT 0xfffffe98 /* Long access */ 50#define TMU0_TCNT 0xfffffe98 /* Long access */
diff --git a/include/asm-sh/cpu-sh4/freq.h b/include/asm-sh/cpu-sh4/freq.h
index 39f41fcd509d..026025b51cea 100644
--- a/include/asm-sh/cpu-sh4/freq.h
+++ b/include/asm-sh/cpu-sh4/freq.h
@@ -22,6 +22,8 @@
22#define FRQCR0 0xffc80000 22#define FRQCR0 0xffc80000
23#define FRQCR1 0xffc80004 23#define FRQCR1 0xffc80004
24#define FRQMR1 0xffc80014 24#define FRQMR1 0xffc80014
25#elif defined(CONFIG_CPU_SUBTYPE_SHX3)
26#define FRQCR 0xffc00014
25#else 27#else
26#define FRQCR 0xffc00000 28#define FRQCR 0xffc00000
27#define FRQCR_PSTBY 0x0200 29#define FRQCR_PSTBY 0x0200
diff --git a/include/asm-sh/cpu-sh4/timer.h b/include/asm-sh/cpu-sh4/timer.h
index 8a4af126c890..d1e796b96888 100644
--- a/include/asm-sh/cpu-sh4/timer.h
+++ b/include/asm-sh/cpu-sh4/timer.h
@@ -1,7 +1,7 @@
1/* 1/*
2 * include/asm-sh/cpu-sh4/timer.h 2 * include/asm-sh/cpu-sh4/timer.h
3 * 3 *
4 * Copyright (C) 2004 Lineo Solutions, Inc. 4 * Copyright (C) 2004 Lineo Solutions, Inc.
5 * 5 *
6 * This file is subject to the terms and conditions of the GNU General Public 6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive 7 * License. See the file "COPYING" in the main directory of this archive
@@ -16,36 +16,45 @@
16 * SH7750S/SH7750R 16 * SH7750S/SH7750R
17 * SH7751/SH7751R 17 * SH7751/SH7751R
18 * SH7760 18 * SH7760
19 * SH-X3
19 * --------------------------------------------------------------------------- 20 * ---------------------------------------------------------------------------
20 */ 21 */
21 22#ifdef CONFIG_CPU_SUBTYPE_SHX3
22#if !defined(CONFIG_CPU_SUBTYPE_SH7760) 23#define TMU_012_BASE 0xffc10000
23#define TMU_TOCR 0xffd80000 /* Byte access */ 24#define TMU_345_BASE 0xffc20000
25#else
26#define TMU_012_BASE 0xffd80000
27#define TMU_345_BASE 0xfe100000
24#endif 28#endif
25#define TMU_TSTR 0xffd80004 /* Byte access */
26 29
27#define TMU0_TCOR 0xffd80008 /* Long access */ 30#define TMU_TOCR TMU_012_BASE /* Not supported on all CPUs */
28#define TMU0_TCNT 0xffd8000c /* Long access */
29#define TMU0_TCR 0xffd80010 /* Word access */
30 31
31#define TMU1_TCOR 0xffd80014 /* Long access */ 32#define TMU_012_TSTR (TMU_012_BASE + 0x04)
32#define TMU1_TCNT 0xffd80018 /* Long access */ 33#define TMU_345_TSTR (TMU_345_BASE + 0x04)
33#define TMU1_TCR 0xffd8001c /* Word access */
34 34
35#define TMU2_TCOR 0xffd80020 /* Long access */ 35#define TMU0_TCOR (TMU_012_BASE + 0x08)
36#define TMU2_TCNT 0xffd80024 /* Long access */ 36#define TMU0_TCNT (TMU_012_BASE + 0x0c)
37#define TMU2_TCR 0xffd80028 /* Word access */ 37#define TMU0_TCR (TMU_012_BASE + 0x10)
38#define TMU2_TCPR 0xffd8002c /* Long access */
39 38
40#if !defined(CONFIG_CPU_SUBTYPE_SH7760) 39#define TMU1_TCOR (TMU_012_BASE + 0x14)
41#define TMU3_TCOR 0xfe100008 /* Long access */ 40#define TMU1_TCNT (TMU_012_BASE + 0x18)
42#define TMU3_TCNT 0xfe10000c /* Long access */ 41#define TMU1_TCR (TMU_012_BASE + 0x1c)
43#define TMU3_TCR 0xfe100010 /* Word access */
44 42
45#define TMU4_TCOR 0xfe100014 /* Long access */ 43#define TMU2_TCOR (TMU_012_BASE + 0x20)
46#define TMU4_TCNT 0xfe100018 /* Long access */ 44#define TMU2_TCNT (TMU_012_BASE + 0x24)
47#define TMU4_TCR 0xfe10001c /* Word access */ 45#define TMU2_TCR (TMU_012_BASE + 0x28)
48#endif 46#define TMU2_TCPR (TMU_012_BASE + 0x2c)
49 47
50#endif /* __ASM_CPU_SH4_TIMER_H */ 48#define TMU3_TCOR (TMU_345_BASE + 0x08)
49#define TMU3_TCNT (TMU_345_BASE + 0x0c)
50#define TMU3_TCR (TMU_345_BASE + 0x10)
51 51
52#define TMU4_TCOR (TMU_345_BASE + 0x14)
53#define TMU4_TCNT (TMU_345_BASE + 0x18)
54#define TMU4_TCR (TMU_345_BASE + 0x1c)
55
56#define TMU5_TCOR (TMU_345_BASE + 0x20)
57#define TMU5_TCNT (TMU_345_BASE + 0x24)
58#define TMU5_TCR (TMU_345_BASE + 0x28)
59
60#endif /* __ASM_CPU_SH4_TIMER_H */
diff --git a/include/asm-sh/futex-irq.h b/include/asm-sh/futex-irq.h
new file mode 100644
index 000000000000..a9f16a7f9aea
--- /dev/null
+++ b/include/asm-sh/futex-irq.h
@@ -0,0 +1,111 @@
1#ifndef __ASM_SH_FUTEX_IRQ_H
2#define __ASM_SH_FUTEX_IRQ_H
3
4#include <asm/system.h>
5
6static inline int atomic_futex_op_xchg_set(int oparg, int __user *uaddr,
7 int *oldval)
8{
9 unsigned long flags;
10 int ret;
11
12 local_irq_save(flags);
13
14 ret = get_user(*oldval, uaddr);
15 if (!ret)
16 ret = put_user(oparg, uaddr);
17
18 local_irq_restore(flags);
19
20 return ret;
21}
22
23static inline int atomic_futex_op_xchg_add(int oparg, int __user *uaddr,
24 int *oldval)
25{
26 unsigned long flags;
27 int ret;
28
29 local_irq_save(flags);
30
31 ret = get_user(*oldval, uaddr);
32 if (!ret)
33 ret = put_user(*oldval + oparg, uaddr);
34
35 local_irq_restore(flags);
36
37 return ret;
38}
39
40static inline int atomic_futex_op_xchg_or(int oparg, int __user *uaddr,
41 int *oldval)
42{
43 unsigned long flags;
44 int ret;
45
46 local_irq_save(flags);
47
48 ret = get_user(*oldval, uaddr);
49 if (!ret)
50 ret = put_user(*oldval | oparg, uaddr);
51
52 local_irq_restore(flags);
53
54 return ret;
55}
56
57static inline int atomic_futex_op_xchg_and(int oparg, int __user *uaddr,
58 int *oldval)
59{
60 unsigned long flags;
61 int ret;
62
63 local_irq_save(flags);
64
65 ret = get_user(*oldval, uaddr);
66 if (!ret)
67 ret = put_user(*oldval & oparg, uaddr);
68
69 local_irq_restore(flags);
70
71 return ret;
72}
73
74static inline int atomic_futex_op_xchg_xor(int oparg, int __user *uaddr,
75 int *oldval)
76{
77 unsigned long flags;
78 int ret;
79
80 local_irq_save(flags);
81
82 ret = get_user(*oldval, uaddr);
83 if (!ret)
84 ret = put_user(*oldval ^ oparg, uaddr);
85
86 local_irq_restore(flags);
87
88 return ret;
89}
90
91static inline int atomic_futex_op_cmpxchg_inatomic(int __user *uaddr,
92 int oldval, int newval)
93{
94 unsigned long flags;
95 int ret, prev = 0;
96
97 local_irq_save(flags);
98
99 ret = get_user(prev, uaddr);
100 if (!ret && oldval == prev)
101 ret = put_user(newval, uaddr);
102
103 local_irq_restore(flags);
104
105 if (ret)
106 return ret;
107
108 return prev;
109}
110
111#endif /* __ASM_SH_FUTEX_IRQ_H */
diff --git a/include/asm-sh/futex.h b/include/asm-sh/futex.h
index 6a332a9f099c..74ed3681d33c 100644
--- a/include/asm-sh/futex.h
+++ b/include/asm-sh/futex.h
@@ -1,6 +1,77 @@
1#ifndef _ASM_FUTEX_H 1#ifndef __ASM_SH_FUTEX_H
2#define _ASM_FUTEX_H 2#define __ASM_SH_FUTEX_H
3 3
4#include <asm-generic/futex.h> 4#ifdef __KERNEL__
5 5
6#endif 6#include <linux/futex.h>
7#include <asm/errno.h>
8#include <asm/uaccess.h>
9
10/* XXX: UP variants, fix for SH-4A and SMP.. */
11#include <asm/futex-irq.h>
12
13static inline int futex_atomic_op_inuser(int encoded_op, int __user *uaddr)
14{
15 int op = (encoded_op >> 28) & 7;
16 int cmp = (encoded_op >> 24) & 15;
17 int oparg = (encoded_op << 8) >> 20;
18 int cmparg = (encoded_op << 20) >> 20;
19 int oldval = 0, ret;
20
21 if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
22 oparg = 1 << oparg;
23
24 if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int)))
25 return -EFAULT;
26
27 pagefault_disable();
28
29 switch (op) {
30 case FUTEX_OP_SET:
31 ret = atomic_futex_op_xchg_set(oparg, uaddr, &oldval);
32 break;
33 case FUTEX_OP_ADD:
34 ret = atomic_futex_op_xchg_add(oparg, uaddr, &oldval);
35 break;
36 case FUTEX_OP_OR:
37 ret = atomic_futex_op_xchg_or(oparg, uaddr, &oldval);
38 break;
39 case FUTEX_OP_ANDN:
40 ret = atomic_futex_op_xchg_and(~oparg, uaddr, &oldval);
41 break;
42 case FUTEX_OP_XOR:
43 ret = atomic_futex_op_xchg_xor(oparg, uaddr, &oldval);
44 break;
45 default:
46 ret = -ENOSYS;
47 break;
48 }
49
50 pagefault_enable();
51
52 if (!ret) {
53 switch (cmp) {
54 case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
55 case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
56 case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
57 case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
58 case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
59 case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
60 default: ret = -ENOSYS;
61 }
62 }
63
64 return ret;
65}
66
67static inline int
68futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval)
69{
70 if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int)))
71 return -EFAULT;
72
73 return atomic_futex_op_cmpxchg_inatomic(uaddr, oldval, newval);
74}
75
76#endif /* __KERNEL__ */
77#endif /* __ASM_SH_FUTEX_H */
diff --git a/include/asm-sh/hd64461.h b/include/asm-sh/hd64461.h
index 27e5c34e2659..4dd8592ca014 100644
--- a/include/asm-sh/hd64461.h
+++ b/include/asm-sh/hd64461.h
@@ -1,200 +1,241 @@
1#ifndef __ASM_SH_HD64461 1#ifndef __ASM_SH_HD64461
2#define __ASM_SH_HD64461 2#define __ASM_SH_HD64461
3/* 3/*
4 * $Id: hd64461.h,v 1.5 2004/03/16 00:07:51 lethal Exp $ 4 * Copyright (C) 2007 Kristoffer Ericson <Kristoffer.Ericson@gmail.com>
5 * Copyright (C) 2004 Paul Mundt
5 * Copyright (C) 2000 YAEGASHI Takeshi 6 * Copyright (C) 2000 YAEGASHI Takeshi
6 * Hitachi HD64461 companion chip support 7 *
8 * Hitachi HD64461 companion chip support
9 * (please note manual reference 0x10000000 = 0xb0000000)
7 */ 10 */
8 11
9/* Constants for PCMCIA mappings */ 12/* Constants for PCMCIA mappings */
10#define HD64461_PCC_WINDOW 0x01000000 13#define HD64461_PCC_WINDOW 0x01000000
11 14
12#define HD64461_PCC0_BASE 0xb8000000 /* area 6 */ 15/* Area 6 - Slot 0 - memory and/or IO card */
13#define HD64461_PCC0_ATTR (HD64461_PCC0_BASE) 16#define HD64461_PCC0_BASE (CONFIG_HD64461_IOBASE + 0x8000000)
14#define HD64461_PCC0_COMM (HD64461_PCC0_BASE+HD64461_PCC_WINDOW) 17#define HD64461_PCC0_ATTR (HD64461_PCC0_BASE) /* 0xb80000000 */
15#define HD64461_PCC0_IO (HD64461_PCC0_BASE+2*HD64461_PCC_WINDOW) 18#define HD64461_PCC0_COMM (HD64461_PCC0_BASE+HD64461_PCC_WINDOW) /* 0xb90000000 */
16 19#define HD64461_PCC0_IO (HD64461_PCC0_BASE+2*HD64461_PCC_WINDOW) /* 0xba0000000 */
17#define HD64461_PCC1_BASE 0xb4000000 /* area 5 */ 20
18#define HD64461_PCC1_ATTR (HD64461_PCC1_BASE) 21/* Area 5 - Slot 1 - memory card only */
19#define HD64461_PCC1_COMM (HD64461_PCC1_BASE+HD64461_PCC_WINDOW) 22#define HD64461_PCC1_BASE (CONFIG_HD64461_IOBASE + 0x4000000)
20 23#define HD64461_PCC1_ATTR (HD64461_PCC1_BASE) /* 0xb4000000 */
21#define HD64461_STBCR 0x10000 24#define HD64461_PCC1_COMM (HD64461_PCC1_BASE+HD64461_PCC_WINDOW) /* 0xb5000000 */
22#define HD64461_STBCR_CKIO_STBY 0x2000 25
23#define HD64461_STBCR_SAFECKE_IST 0x1000 26/* Standby Control Register for HD64461 */
24#define HD64461_STBCR_SLCKE_IST 0x0800 27#define HD64461_STBCR CONFIG_HD64461_IOBASE
25#define HD64461_STBCR_SAFECKE_OST 0x0400 28#define HD64461_STBCR_CKIO_STBY 0x2000
26#define HD64461_STBCR_SLCKE_OST 0x0200 29#define HD64461_STBCR_SAFECKE_IST 0x1000
27#define HD64461_STBCR_SMIAST 0x0100 30#define HD64461_STBCR_SLCKE_IST 0x0800
28#define HD64461_STBCR_SLCDST 0x0080 31#define HD64461_STBCR_SAFECKE_OST 0x0400
29#define HD64461_STBCR_SPC0ST 0x0040 32#define HD64461_STBCR_SLCKE_OST 0x0200
30#define HD64461_STBCR_SPC1ST 0x0020 33#define HD64461_STBCR_SMIAST 0x0100
31#define HD64461_STBCR_SAFEST 0x0010 34#define HD64461_STBCR_SLCDST 0x0080
32#define HD64461_STBCR_STM0ST 0x0008 35#define HD64461_STBCR_SPC0ST 0x0040
33#define HD64461_STBCR_STM1ST 0x0004 36#define HD64461_STBCR_SPC1ST 0x0020
34#define HD64461_STBCR_SIRST 0x0002 37#define HD64461_STBCR_SAFEST 0x0010
35#define HD64461_STBCR_SURTST 0x0001 38#define HD64461_STBCR_STM0ST 0x0008
36 39#define HD64461_STBCR_STM1ST 0x0004
37#define HD64461_SYSCR 0x10002 40#define HD64461_STBCR_SIRST 0x0002
38#define HD64461_SCPUCR 0x10004 41#define HD64461_STBCR_SURTST 0x0001
39 42
40#define HD64461_LCDCBAR 0x11000 43/* System Configuration Register */
41#define HD64461_LCDCLOR 0x11002 44#define HD64461_SYSCR (CONFIG_HD64461_IOBASE + 0x02)
42#define HD64461_LCDCCR 0x11004 45
43#define HD64461_LCDCCR_STBACK 0x0400 46/* CPU Data Bus Control Register */
44#define HD64461_LCDCCR_STREQ 0x0100 47#define HD64461_SCPUCR (CONFIG_HD64461_IOBASE + 0x04)
45#define HD64461_LCDCCR_MOFF 0x0080 48
46#define HD64461_LCDCCR_REFSEL 0x0040 49/* Base Adress Register */
47#define HD64461_LCDCCR_EPON 0x0020 50#define HD64461_LCDCBAR (CONFIG_HD64461_IOBASE + 0x1000)
48#define HD64461_LCDCCR_SPON 0x0010 51
49 52/* Line increment adress */
50#define HD64461_LDR1 0x11010 53#define HD64461_LCDCLOR (CONFIG_HD64461_IOBASE + 0x1002)
51#define HD64461_LDR1_DON 0x01 54
52#define HD64461_LDR1_DINV 0x80 55/* Controls LCD controller */
53 56#define HD64461_LCDCCR (CONFIG_HD64461_IOBASE + 0x1004)
54#define HD64461_LDR2 0x11012 57
55#define HD64461_LDHNCR 0x11014 58/* LCCDR control bits */
56#define HD64461_LDHNSR 0x11016 59#define HD64461_LCDCCR_STBACK 0x0400 /* Standby Back */
57#define HD64461_LDVNTR 0x11018 60#define HD64461_LCDCCR_STREQ 0x0100 /* Standby Request */
58#define HD64461_LDVNDR 0x1101a 61#define HD64461_LCDCCR_MOFF 0x0080 /* Memory Off */
59#define HD64461_LDVSPR 0x1101c 62#define HD64461_LCDCCR_REFSEL 0x0040 /* Refresh Select */
60#define HD64461_LDR3 0x1101e 63#define HD64461_LCDCCR_EPON 0x0020 /* End Power On */
61 64#define HD64461_LCDCCR_SPON 0x0010 /* Start Power On */
62#define HD64461_CPTWAR 0x11030 65
63#define HD64461_CPTWDR 0x11032 66/* Controls LCD (1) */
64#define HD64461_CPTRAR 0x11034 67#define HD64461_LDR1 (CONFIG_HD64461_IOBASE + 0x1010)
65#define HD64461_CPTRDR 0x11036 68#define HD64461_LDR1_DON 0x01 /* Display On */
66 69#define HD64461_LDR1_DINV 0x80 /* Display Invert */
67#define HD64461_GRDOR 0x11040 70
68#define HD64461_GRSCR 0x11042 71/* Controls LCD (2) */
69#define HD64461_GRCFGR 0x11044 72#define HD64461_LDR2 (CONFIG_HD64461_IOBASE + 0x1012)
70#define HD64461_GRCFGR_ACCSTATUS 0x10 73#define HD64461_LDHNCR (CONFIG_HD64461_IOBASE + 0x1014) /* Number of horizontal characters */
71#define HD64461_GRCFGR_ACCRESET 0x08 74#define HD64461_LDHNSR (CONFIG_HD64461_IOBASE + 0x1016) /* Specify output start position + width of CL1 */
72#define HD64461_GRCFGR_ACCSTART_BITBLT 0x06 75#define HD64461_LDVNTR (CONFIG_HD64461_IOBASE + 0x1018) /* Specify total vertical lines */
73#define HD64461_GRCFGR_ACCSTART_LINE 0x04 76#define HD64461_LDVNDR (CONFIG_HD64461_IOBASE + 0x101a) /* specify number of display vertical lines */
74#define HD64461_GRCFGR_COLORDEPTH16 0x01 77#define HD64461_LDVSPR (CONFIG_HD64461_IOBASE + 0x101c) /* specify vertical synchronization pos and AC nr */
75 78
76#define HD64461_LNSARH 0x11046 79/* Controls LCD (3) */
77#define HD64461_LNSARL 0x11048 80#define HD64461_LDR3 (CONFIG_HD64461_IOBASE + 0x101e)
78#define HD64461_LNAXLR 0x1104a 81
79#define HD64461_LNDGR 0x1104c 82/* Palette Registers */
80#define HD64461_LNAXR 0x1104e 83#define HD64461_CPTWAR (CONFIG_HD64461_IOBASE + 0x1030) /* Color Palette Write Adress Register */
81#define HD64461_LNERTR 0x11050 84#define HD64461_CPTWDR (CONFIG_HD64461_IOBASE + 0x1032) /* Color Palette Write Data Register */
82#define HD64461_LNMDR 0x11052 85#define HD64461_CPTRAR (CONFIG_HD64461_IOBASE + 0x1034) /* Color Palette Read Adress Register */
83#define HD64461_BBTSSARH 0x11054 86#define HD64461_CPTRDR (CONFIG_HD64461_IOBASE + 0x1036) /* Color Palette Read Data Register */
84#define HD64461_BBTSSARL 0x11056 87
85#define HD64461_BBTDSARH 0x11058 88#define HD64461_GRDOR (CONFIG_HD64461_IOBASE + 0x1040) /* Display Resolution Offset Register */
86#define HD64461_BBTDSARL 0x1105a 89#define HD64461_GRSCR (CONFIG_HD64461_IOBASE + 0x1042) /* Solid Color Register */
87#define HD64461_BBTDWR 0x1105c 90#define HD64461_GRCFGR (CONFIG_HD64461_IOBASE + 0x1044) /* Accelerator Configuration Register */
88#define HD64461_BBTDHR 0x1105e 91
89#define HD64461_BBTPARH 0x11060 92#define HD64461_GRCFGR_ACCSTATUS 0x10 /* Accelerator Status */
90#define HD64461_BBTPARL 0x11062 93#define HD64461_GRCFGR_ACCRESET 0x08 /* Accelerator Reset */
91#define HD64461_BBTMARH 0x11064 94#define HD64461_GRCFGR_ACCSTART_BITBLT 0x06 /* Accelerator Start BITBLT */
92#define HD64461_BBTMARL 0x11066 95#define HD64461_GRCFGR_ACCSTART_LINE 0x04 /* Accelerator Start Line Drawing */
93#define HD64461_BBTROPR 0x11068 96#define HD64461_GRCFGR_COLORDEPTH16 0x01 /* Sets Colordepth 16 for Accelerator */
94#define HD64461_BBTMDR 0x1106a 97#define HD64461_GRCFGR_COLORDEPTH8 0x01 /* Sets Colordepth 8 for Accelerator */
98
99/* Line Drawing Registers */
100#define HD64461_LNSARH (CONFIG_HD64461_IOBASE + 0x1046) /* Line Start Adress Register (H) */
101#define HD64461_LNSARL (CONFIG_HD64461_IOBASE + 0x1048) /* Line Start Adress Register (L) */
102#define HD64461_LNAXLR (CONFIG_HD64461_IOBASE + 0x104a) /* Axis Pixel Length Register */
103#define HD64461_LNDGR (CONFIG_HD64461_IOBASE + 0x104c) /* Diagonal Register */
104#define HD64461_LNAXR (CONFIG_HD64461_IOBASE + 0x104e) /* Axial Register */
105#define HD64461_LNERTR (CONFIG_HD64461_IOBASE + 0x1050) /* Start Error Term Register */
106#define HD64461_LNMDR (CONFIG_HD64461_IOBASE + 0x1052) /* Line Mode Register */
107
108/* BitBLT Registers */
109#define HD64461_BBTSSARH (CONFIG_HD64461_IOBASE + 0x1054) /* Source Start Adress Register (H) */
110#define HD64461_BBTSSARL (CONFIG_HD64461_IOBASE + 0x1056) /* Source Start Adress Register (L) */
111#define HD64461_BBTDSARH (CONFIG_HD64461_IOBASE + 0x1058) /* Destination Start Adress Register (H) */
112#define HD64461_BBTDSARL (CONFIG_HD64461_IOBASE + 0x105a) /* Destination Start Adress Register (L) */
113#define HD64461_BBTDWR (CONFIG_HD64461_IOBASE + 0x105c) /* Destination Block Width Register */
114#define HD64461_BBTDHR (CONFIG_HD64461_IOBASE + 0x105e) /* Destination Block Height Register */
115#define HD64461_BBTPARH (CONFIG_HD64461_IOBASE + 0x1060) /* Pattern Start Adress Register (H) */
116#define HD64461_BBTPARL (CONFIG_HD64461_IOBASE + 0x1062) /* Pattern Start Adress Register (L) */
117#define HD64461_BBTMARH (CONFIG_HD64461_IOBASE + 0x1064) /* Mask Start Adress Register (H) */
118#define HD64461_BBTMARL (CONFIG_HD64461_IOBASE + 0x1066) /* Mask Start Adress Register (L) */
119#define HD64461_BBTROPR (CONFIG_HD64461_IOBASE + 0x1068) /* ROP Register */
120#define HD64461_BBTMDR (CONFIG_HD64461_IOBASE + 0x106a) /* BitBLT Mode Register */
95 121
96/* PC Card Controller Registers */ 122/* PC Card Controller Registers */
97#define HD64461_PCC0ISR 0x12000 /* socket 0 interface status */ 123/* Maps to Physical Area 6 */
98#define HD64461_PCC0GCR 0x12002 /* socket 0 general control */ 124#define HD64461_PCC0ISR (CONFIG_HD64461_IOBASE + 0x2000) /* socket 0 interface status */
99#define HD64461_PCC0CSCR 0x12004 /* socket 0 card status change */ 125#define HD64461_PCC0GCR (CONFIG_HD64461_IOBASE + 0x2002) /* socket 0 general control */
100#define HD64461_PCC0CSCIER 0x12006 /* socket 0 card status change interrupt enable */ 126#define HD64461_PCC0CSCR (CONFIG_HD64461_IOBASE + 0x2004) /* socket 0 card status change */
101#define HD64461_PCC0SCR 0x12008 /* socket 0 software control */ 127#define HD64461_PCC0CSCIER (CONFIG_HD64461_IOBASE + 0x2006) /* socket 0 card status change interrupt enable */
102#define HD64461_PCC1ISR 0x12010 /* socket 1 interface status */ 128#define HD64461_PCC0SCR (CONFIG_HD64461_IOBASE + 0x2008) /* socket 0 software control */
103#define HD64461_PCC1GCR 0x12012 /* socket 1 general control */ 129/* Maps to Physical Area 5 */
104#define HD64461_PCC1CSCR 0x12014 /* socket 1 card status change */ 130#define HD64461_PCC1ISR (CONFIG_HD64461_IOBASE + 0x2010) /* socket 1 interface status */
105#define HD64461_PCC1CSCIER 0x12016 /* socket 1 card status change interrupt enable */ 131#define HD64461_PCC1GCR (CONFIG_HD64461_IOBASE + 0x2012) /* socket 1 general control */
106#define HD64461_PCC1SCR 0x12018 /* socket 1 software control */ 132#define HD64461_PCC1CSCR (CONFIG_HD64461_IOBASE + 0x2014) /* socket 1 card status change */
133#define HD64461_PCC1CSCIER (CONFIG_HD64461_IOBASE + 0x2016) /* socket 1 card status change interrupt enable */
134#define HD64461_PCC1SCR (CONFIG_HD64461_IOBASE + 0x2018) /* socket 1 software control */
107 135
108/* PCC Interface Status Register */ 136/* PCC Interface Status Register */
109#define HD64461_PCCISR_READY 0x80 /* card ready */ 137#define HD64461_PCCISR_READY 0x80 /* card ready */
110#define HD64461_PCCISR_MWP 0x40 /* card write-protected */ 138#define HD64461_PCCISR_MWP 0x40 /* card write-protected */
111#define HD64461_PCCISR_VS2 0x20 /* voltage select pin 2 */ 139#define HD64461_PCCISR_VS2 0x20 /* voltage select pin 2 */
112#define HD64461_PCCISR_VS1 0x10 /* voltage select pin 1 */ 140#define HD64461_PCCISR_VS1 0x10 /* voltage select pin 1 */
113#define HD64461_PCCISR_CD2 0x08 /* card detect 2 */ 141#define HD64461_PCCISR_CD2 0x08 /* card detect 2 */
114#define HD64461_PCCISR_CD1 0x04 /* card detect 1 */ 142#define HD64461_PCCISR_CD1 0x04 /* card detect 1 */
115#define HD64461_PCCISR_BVD2 0x02 /* battery 1 */ 143#define HD64461_PCCISR_BVD2 0x02 /* battery 1 */
116#define HD64461_PCCISR_BVD1 0x01 /* battery 1 */ 144#define HD64461_PCCISR_BVD1 0x01 /* battery 1 */
117 145
118#define HD64461_PCCISR_PCD_MASK 0x0c /* card detect */ 146#define HD64461_PCCISR_PCD_MASK 0x0c /* card detect */
119#define HD64461_PCCISR_BVD_MASK 0x03 /* battery voltage */ 147#define HD64461_PCCISR_BVD_MASK 0x03 /* battery voltage */
120#define HD64461_PCCISR_BVD_BATGOOD 0x03 /* battery good */ 148#define HD64461_PCCISR_BVD_BATGOOD 0x03 /* battery good */
121#define HD64461_PCCISR_BVD_BATWARN 0x01 /* battery low warning */ 149#define HD64461_PCCISR_BVD_BATWARN 0x01 /* battery low warning */
122#define HD64461_PCCISR_BVD_BATDEAD1 0x02 /* battery dead */ 150#define HD64461_PCCISR_BVD_BATDEAD1 0x02 /* battery dead */
123#define HD64461_PCCISR_BVD_BATDEAD2 0x00 /* battery dead */ 151#define HD64461_PCCISR_BVD_BATDEAD2 0x00 /* battery dead */
124 152
125/* PCC General Control Register */ 153/* PCC General Control Register */
126#define HD64461_PCCGCR_DRVE 0x80 /* output drive */ 154#define HD64461_PCCGCR_DRVE 0x80 /* output drive */
127#define HD64461_PCCGCR_PCCR 0x40 /* PC card reset */ 155#define HD64461_PCCGCR_PCCR 0x40 /* PC card reset */
128#define HD64461_PCCGCR_PCCT 0x20 /* PC card type, 1=IO&mem, 0=mem */ 156#define HD64461_PCCGCR_PCCT 0x20 /* PC card type, 1=IO&mem, 0=mem */
129#define HD64461_PCCGCR_VCC0 0x10 /* voltage control pin VCC0SEL0 */ 157#define HD64461_PCCGCR_VCC0 0x10 /* voltage control pin VCC0SEL0 */
130#define HD64461_PCCGCR_PMMOD 0x08 /* memory mode */ 158#define HD64461_PCCGCR_PMMOD 0x08 /* memory mode */
131#define HD64461_PCCGCR_PA25 0x04 /* pin A25 */ 159#define HD64461_PCCGCR_PA25 0x04 /* pin A25 */
132#define HD64461_PCCGCR_PA24 0x02 /* pin A24 */ 160#define HD64461_PCCGCR_PA24 0x02 /* pin A24 */
133#define HD64461_PCCGCR_REG 0x01 /* pin PCC0REG# */ 161#define HD64461_PCCGCR_REG 0x01 /* pin PCC0REG# */
134 162
135/* PCC Card Status Change Register */ 163/* PCC Card Status Change Register */
136#define HD64461_PCCCSCR_SCDI 0x80 /* sw card detect intr */ 164#define HD64461_PCCCSCR_SCDI 0x80 /* sw card detect intr */
137#define HD64461_PCCCSCR_SRV1 0x40 /* reserved */ 165#define HD64461_PCCCSCR_SRV1 0x40 /* reserved */
138#define HD64461_PCCCSCR_IREQ 0x20 /* IREQ intr req */ 166#define HD64461_PCCCSCR_IREQ 0x20 /* IREQ intr req */
139#define HD64461_PCCCSCR_SC 0x10 /* STSCHG (status change) pin */ 167#define HD64461_PCCCSCR_SC 0x10 /* STSCHG (status change) pin */
140#define HD64461_PCCCSCR_CDC 0x08 /* CD (card detect) change */ 168#define HD64461_PCCCSCR_CDC 0x08 /* CD (card detect) change */
141#define HD64461_PCCCSCR_RC 0x04 /* READY change */ 169#define HD64461_PCCCSCR_RC 0x04 /* READY change */
142#define HD64461_PCCCSCR_BW 0x02 /* battery warning change */ 170#define HD64461_PCCCSCR_BW 0x02 /* battery warning change */
143#define HD64461_PCCCSCR_BD 0x01 /* battery dead change */ 171#define HD64461_PCCCSCR_BD 0x01 /* battery dead change */
144 172
145/* PCC Card Status Change Interrupt Enable Register */ 173/* PCC Card Status Change Interrupt Enable Register */
146#define HD64461_PCCCSCIER_CRE 0x80 /* change reset enable */ 174#define HD64461_PCCCSCIER_CRE 0x80 /* change reset enable */
147#define HD64461_PCCCSCIER_IREQE_MASK 0x60 /* IREQ enable */ 175#define HD64461_PCCCSCIER_IREQE_MASK 0x60 /* IREQ enable */
148#define HD64461_PCCCSCIER_IREQE_DISABLED 0x00 /* IREQ disabled */ 176#define HD64461_PCCCSCIER_IREQE_DISABLED 0x00 /* IREQ disabled */
149#define HD64461_PCCCSCIER_IREQE_LEVEL 0x20 /* IREQ level-triggered */ 177#define HD64461_PCCCSCIER_IREQE_LEVEL 0x20 /* IREQ level-triggered */
150#define HD64461_PCCCSCIER_IREQE_FALLING 0x40 /* IREQ falling-edge-trig */ 178#define HD64461_PCCCSCIER_IREQE_FALLING 0x40 /* IREQ falling-edge-trig */
151#define HD64461_PCCCSCIER_IREQE_RISING 0x60 /* IREQ rising-edge-trig */ 179#define HD64461_PCCCSCIER_IREQE_RISING 0x60 /* IREQ rising-edge-trig */
152 180
153#define HD64461_PCCCSCIER_SCE 0x10 /* status change enable */ 181#define HD64461_PCCCSCIER_SCE 0x10 /* status change enable */
154#define HD64461_PCCCSCIER_CDE 0x08 /* card detect change enable */ 182#define HD64461_PCCCSCIER_CDE 0x08 /* card detect change enable */
155#define HD64461_PCCCSCIER_RE 0x04 /* ready change enable */ 183#define HD64461_PCCCSCIER_RE 0x04 /* ready change enable */
156#define HD64461_PCCCSCIER_BWE 0x02 /* battery warn change enable */ 184#define HD64461_PCCCSCIER_BWE 0x02 /* battery warn change enable */
157#define HD64461_PCCCSCIER_BDE 0x01 /* battery dead change enable*/ 185#define HD64461_PCCCSCIER_BDE 0x01 /* battery dead change enable*/
158 186
159/* PCC Software Control Register */ 187/* PCC Software Control Register */
160#define HD64461_PCCSCR_VCC1 0x02 /* voltage control pin 1 */ 188#define HD64461_PCCSCR_VCC1 0x02 /* voltage control pin 1 */
161#define HD64461_PCCSCR_SWP 0x01 /* write protect */ 189#define HD64461_PCCSCR_SWP 0x01 /* write protect */
162 190
163#define HD64461_P0OCR 0x1202a 191/* PCC0 Output Pins Control Register */
164#define HD64461_P1OCR 0x1202c 192#define HD64461_P0OCR (CONFIG_HD64461_IOBASE + 0x202a)
165#define HD64461_PGCR 0x1202e 193
166 194/* PCC1 Output Pins Control Register */
167#define HD64461_GPACR 0x14000 195#define HD64461_P1OCR (CONFIG_HD64461_IOBASE + 0x202c)
168#define HD64461_GPBCR 0x14002 196
169#define HD64461_GPCCR 0x14004 197/* PC Card General Control Register */
170#define HD64461_GPDCR 0x14006 198#define HD64461_PGCR (CONFIG_HD64461_IOBASE + 0x202e)
171#define HD64461_GPADR 0x14010 199
172#define HD64461_GPBDR 0x14012 200/* Port Control Registers */
173#define HD64461_GPCDR 0x14014 201#define HD64461_GPACR (CONFIG_HD64461_IOBASE + 0x4000) /* Port A - Handles IRDA/TIMER */
174#define HD64461_GPDDR 0x14016 202#define HD64461_GPBCR (CONFIG_HD64461_IOBASE + 0x4002) /* Port B - Handles UART */
175#define HD64461_GPAICR 0x14020 203#define HD64461_GPCCR (CONFIG_HD64461_IOBASE + 0x4004) /* Port C - Handles PCMCIA 1 */
176#define HD64461_GPBICR 0x14022 204#define HD64461_GPDCR (CONFIG_HD64461_IOBASE + 0x4006) /* Port D - Handles PCMCIA 1 */
177#define HD64461_GPCICR 0x14024 205
178#define HD64461_GPDICR 0x14026 206/* Port Control Data Registers */
179#define HD64461_GPAISR 0x14040 207#define HD64461_GPADR (CONFIG_HD64461_IOBASE + 0x4010) /* A */
180#define HD64461_GPBISR 0x14042 208#define HD64461_GPBDR (CONFIG_HD64461_IOBASE + 0x4012) /* B */
181#define HD64461_GPCISR 0x14044 209#define HD64461_GPCDR (CONFIG_HD64461_IOBASE + 0x4014) /* C */
182#define HD64461_GPDISR 0x14046 210#define HD64461_GPDDR (CONFIG_HD64461_IOBASE + 0x4016) /* D */
183 211
184#define HD64461_NIRR 0x15000 212/* Interrupt Control Registers */
185#define HD64461_NIMR 0x15002 213#define HD64461_GPAICR (CONFIG_HD64461_IOBASE + 0x4020) /* A */
186 214#define HD64461_GPBICR (CONFIG_HD64461_IOBASE + 0x4022) /* B */
187#define HD64461_IRQBASE OFFCHIP_IRQ_BASE 215#define HD64461_GPCICR (CONFIG_HD64461_IOBASE + 0x4024) /* C */
188#define HD64461_IRQ_NUM 16 216#define HD64461_GPDICR (CONFIG_HD64461_IOBASE + 0x4026) /* D */
189 217
190#define HD64461_IRQ_UART (HD64461_IRQBASE+5) 218/* Interrupt Status Registers */
191#define HD64461_IRQ_IRDA (HD64461_IRQBASE+6) 219#define HD64461_GPAISR (CONFIG_HD64461_IOBASE + 0x4040) /* A */
192#define HD64461_IRQ_TMU1 (HD64461_IRQBASE+9) 220#define HD64461_GPBISR (CONFIG_HD64461_IOBASE + 0x4042) /* B */
193#define HD64461_IRQ_TMU0 (HD64461_IRQBASE+10) 221#define HD64461_GPCISR (CONFIG_HD64461_IOBASE + 0x4044) /* C */
194#define HD64461_IRQ_GPIO (HD64461_IRQBASE+11) 222#define HD64461_GPDISR (CONFIG_HD64461_IOBASE + 0x4046) /* D */
195#define HD64461_IRQ_AFE (HD64461_IRQBASE+12) 223
196#define HD64461_IRQ_PCC1 (HD64461_IRQBASE+13) 224/* Interrupt Request Register & Interrupt Mask Register */
197#define HD64461_IRQ_PCC0 (HD64461_IRQBASE+14) 225#define HD64461_NIRR (CONFIG_HD64461_IOBASE + 0x5000)
226#define HD64461_NIMR (CONFIG_HD64461_IOBASE + 0x5002)
227
228#define HD64461_IRQBASE OFFCHIP_IRQ_BASE
229#define HD64461_IRQ_NUM 16
230
231#define HD64461_IRQ_UART (HD64461_IRQBASE+5)
232#define HD64461_IRQ_IRDA (HD64461_IRQBASE+6)
233#define HD64461_IRQ_TMU1 (HD64461_IRQBASE+9)
234#define HD64461_IRQ_TMU0 (HD64461_IRQBASE+10)
235#define HD64461_IRQ_GPIO (HD64461_IRQBASE+11)
236#define HD64461_IRQ_AFE (HD64461_IRQBASE+12)
237#define HD64461_IRQ_PCC1 (HD64461_IRQBASE+13)
238#define HD64461_IRQ_PCC0 (HD64461_IRQBASE+14)
198 239
199#define __IO_PREFIX hd64461 240#define __IO_PREFIX hd64461
200#include <asm/io_generic.h> 241#include <asm/io_generic.h>
diff --git a/include/asm-sh/hw_irq.h b/include/asm-sh/hw_irq.h
index 80ee1cda7498..4ca3f765bacc 100644
--- a/include/asm-sh/hw_irq.h
+++ b/include/asm-sh/hw_irq.h
@@ -5,4 +5,46 @@
5 5
6extern atomic_t irq_err_count; 6extern atomic_t irq_err_count;
7 7
8struct intc2_data {
9 unsigned short irq;
10 unsigned char ipr_offset, ipr_shift;
11 unsigned char msk_offset, msk_shift;
12 unsigned char priority;
13};
14
15struct intc2_desc {
16 unsigned long prio_base;
17 unsigned long msk_base;
18 unsigned long mskclr_base;
19 struct intc2_data *intc2_data;
20 unsigned int nr_irqs;
21 struct irq_chip chip;
22};
23
24void register_intc2_controller(struct intc2_desc *);
25void init_IRQ_intc2(void);
26
27struct ipr_data {
28 unsigned char irq;
29 unsigned char ipr_idx; /* Index for the IPR registered */
30 unsigned char shift; /* Number of bits to shift the data */
31 unsigned char priority; /* The priority */
32};
33
34struct ipr_desc {
35 unsigned long *ipr_offsets;
36 unsigned int nr_offsets;
37 struct ipr_data *ipr_data;
38 unsigned int nr_irqs;
39 struct irq_chip chip;
40};
41
42void register_ipr_controller(struct ipr_desc *);
43void init_IRQ_ipr(void);
44
45/*
46 * Enable individual interrupt mode for external IPR IRQs.
47 */
48void ipr_irq_enable_irlm(void);
49
8#endif /* __ASM_SH_HW_IRQ_H */ 50#endif /* __ASM_SH_HW_IRQ_H */
diff --git a/include/asm-sh/irq.h b/include/asm-sh/irq.h
index e81bf21c801e..c61d902b8bff 100644
--- a/include/asm-sh/irq.h
+++ b/include/asm-sh/irq.h
@@ -31,47 +31,7 @@ extern unsigned short *irq_mask_register;
31 * PINT IRQs 31 * PINT IRQs
32 */ 32 */
33void init_IRQ_pint(void); 33void init_IRQ_pint(void);
34
35/*
36 * The shift value is now the number of bits to shift, not the number of
37 * bits/4. This is to make it easier to read the value directly from the
38 * datasheets. The IPR address, addr, will be set from ipr_idx via the
39 * map_ipridx_to_addr function.
40 */
41struct ipr_data {
42 unsigned int irq;
43 int ipr_idx; /* Index for the IPR registered */
44 int shift; /* Number of bits to shift the data */
45 int priority; /* The priority */
46 unsigned int addr; /* Address of Interrupt Priority Register */
47};
48
49/*
50 * Given an IPR IDX, map the value to an IPR register address.
51 */
52unsigned int map_ipridx_to_addr(int idx);
53
54/*
55 * Enable individual interrupt mode for external IPR IRQs.
56 */
57void ipr_irq_enable_irlm(void);
58
59/*
60 * Function for "on chip support modules".
61 */
62void make_ipr_irq(struct ipr_data *table, unsigned int nr_irqs);
63void make_imask_irq(unsigned int irq); 34void make_imask_irq(unsigned int irq);
64void init_IRQ_ipr(void);
65
66struct intc2_data {
67 unsigned short irq;
68 unsigned char ipr_offset, ipr_shift;
69 unsigned char msk_offset, msk_shift;
70 unsigned char priority;
71};
72
73void make_intc2_irq(struct intc2_data *, unsigned int nr_irqs);
74void init_IRQ_intc2(void);
75 35
76static inline int generic_irq_demux(int irq) 36static inline int generic_irq_demux(int irq)
77{ 37{
diff --git a/include/asm-sh/machvec.h b/include/asm-sh/machvec.h
index 70389b72ffef..088698bacf2f 100644
--- a/include/asm-sh/machvec.h
+++ b/include/asm-sh/machvec.h
@@ -13,7 +13,6 @@
13#include <linux/types.h> 13#include <linux/types.h>
14#include <linux/time.h> 14#include <linux/time.h>
15#include <asm/machtypes.h> 15#include <asm/machtypes.h>
16#include <asm/machvec_init.h>
17 16
18struct device; 17struct device;
19 18
@@ -68,4 +67,7 @@ extern struct sh_machine_vector sh_mv;
68 67
69#define get_system_type() sh_mv.mv_name 68#define get_system_type() sh_mv.mv_name
70 69
70#define __initmv \
71 __attribute_used__ __attribute__((__section__ (".machvec.init")))
72
71#endif /* _ASM_SH_MACHVEC_H */ 73#endif /* _ASM_SH_MACHVEC_H */
diff --git a/include/asm-sh/machvec_init.h b/include/asm-sh/machvec_init.h
deleted file mode 100644
index e397798ebd94..000000000000
--- a/include/asm-sh/machvec_init.h
+++ /dev/null
@@ -1,53 +0,0 @@
1/*
2 * include/asm-sh/machvec_init.h
3 *
4 * Copyright 2000 Stuart Menefy (stuart.menefy@st.com)
5 *
6 * May be copied or modified under the terms of the GNU General Public
7 * License. See linux/COPYING for more information.
8 *
9 * This file has goodies to help simplify instantiation of machine vectors.
10 */
11
12#ifndef __SH_MACHVEC_INIT_H
13#define __SH_MACHVEC_INIT_H
14
15
16/*
17 * In a GENERIC kernel, we have lots of these vectors floating about,
18 * all but one of which we want to go away. In a non-GENERIC kernel,
19 * we want only one, ever.
20 *
21 * Accomplish this in the GENERIC kernel by puting all of the vectors
22 * in the .init.data section where they'll go away. We'll copy the
23 * one we want to the real alpha_mv vector in setup_arch.
24 *
25 * Accomplish this in a non-GENERIC kernel by ifdef'ing out all but
26 * one of the vectors, which will not reside in .init.data. We then
27 * alias this one vector to alpha_mv, so no copy is needed.
28 *
29 * Upshot: set __initdata to nothing for non-GENERIC kernels.
30 *
31 * Note we do the same thing for the UNKNOWN kernel, as we need to write
32 * to the machine vector while setting it up.
33 */
34
35#if defined(CONFIG_SH_GENERIC) || defined(CONFIG_SH_UNKNOWN)
36#define __initmv __attribute__((unused,__section__ (".machvec.init")))
37#define ALIAS_MV(x)
38#else
39#define __initmv
40
41/* GCC actually has a syntax for defining aliases, but is under some
42 delusion that you shouldn't be able to declare it extern somewhere
43 else beforehand. Fine. We'll do it ourselves. */
44#if 0
45#define ALIAS_MV(system) \
46 struct sh_machine_vector sh_mv __attribute__((alias("mv_"#system)));
47#else
48#define ALIAS_MV(system) \
49 asm(".global sh_mv\nsh_mv = mv_"#system );
50#endif
51#endif /* GENERIC */
52
53#endif /* __SH_MACHVEC_INIT_H */
diff --git a/include/asm-sh/mmzone.h b/include/asm-sh/mmzone.h
new file mode 100644
index 000000000000..7969f381dff2
--- /dev/null
+++ b/include/asm-sh/mmzone.h
@@ -0,0 +1,46 @@
1#ifndef __ASM_SH_MMZONE_H
2#define __ASM_SH_MMZONE_H
3
4#ifdef __KERNEL__
5
6#ifdef CONFIG_NEED_MULTIPLE_NODES
7extern struct pglist_data *node_data[];
8#define NODE_DATA(nid) (node_data[nid])
9
10#define node_start_pfn(nid) (NODE_DATA(nid)->node_start_pfn)
11#define node_end_pfn(nid) (NODE_DATA(nid)->node_start_pfn + \
12 NODE_DATA(nid)->node_spanned_pages)
13
14static inline int pfn_to_nid(unsigned long pfn)
15{
16 int nid;
17
18 for (nid = 0; nid < MAX_NUMNODES; nid++)
19 if (pfn >= node_start_pfn(nid) && pfn <= node_end_pfn(nid))
20 break;
21
22 return nid;
23}
24
25static inline struct pglist_data *pfn_to_pgdat(unsigned long pfn)
26{
27 return NODE_DATA(pfn_to_nid(pfn));
28}
29
30/* arch/sh/mm/numa.c */
31void __init setup_bootmem_node(int nid, unsigned long start, unsigned long end);
32#else
33static inline void
34setup_bootmem_node(int nid, unsigned long start, unsigned long end)
35{
36}
37#endif /* CONFIG_NEED_MULTIPLE_NODES */
38
39/* Platform specific mem init */
40void __init plat_mem_setup(void);
41
42/* arch/sh/kernel/setup.c */
43void __init setup_bootmem_allocator(unsigned long start_pfn);
44
45#endif /* __KERNEL__ */
46#endif /* __ASM_SH_MMZONE_H */
diff --git a/include/asm-sh/page.h b/include/asm-sh/page.h
index 7464de4ba07d..6bc9bba10105 100644
--- a/include/asm-sh/page.h
+++ b/include/asm-sh/page.h
@@ -60,6 +60,7 @@ extern void (*copy_page)(void *to, void *from);
60 60
61extern unsigned long shm_align_mask; 61extern unsigned long shm_align_mask;
62extern unsigned long max_low_pfn, min_low_pfn; 62extern unsigned long max_low_pfn, min_low_pfn;
63extern unsigned long memory_start, memory_end;
63 64
64#ifdef CONFIG_MMU 65#ifdef CONFIG_MMU
65extern void clear_page_slow(void *to); 66extern void clear_page_slow(void *to);
@@ -134,7 +135,9 @@ typedef struct { unsigned long pgd; } pgd_t;
134#define PFN_START (__MEMORY_START >> PAGE_SHIFT) 135#define PFN_START (__MEMORY_START >> PAGE_SHIFT)
135#define ARCH_PFN_OFFSET (PFN_START) 136#define ARCH_PFN_OFFSET (PFN_START)
136#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) 137#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
138#ifdef CONFIG_FLATMEM
137#define pfn_valid(pfn) ((pfn) >= min_low_pfn && (pfn) < max_low_pfn) 139#define pfn_valid(pfn) ((pfn) >= min_low_pfn && (pfn) < max_low_pfn)
140#endif
138#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) 141#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
139 142
140#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ 143#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \
@@ -148,5 +151,12 @@ typedef struct { unsigned long pgd; } pgd_t;
148#define __HAVE_ARCH_GATE_AREA 151#define __HAVE_ARCH_GATE_AREA
149#endif 152#endif
150 153
154/*
155 * Slub defaults to 8-byte alignment, we're only interested in 4.
156 * Slab defaults to BYTES_PER_WORD, which ends up being the same anyways.
157 */
158#define ARCH_KMALLOC_MINALIGN 4
159#define ARCH_SLAB_MINALIGN 4
160
151#endif /* __KERNEL__ */ 161#endif /* __KERNEL__ */
152#endif /* __ASM_SH_PAGE_H */ 162#endif /* __ASM_SH_PAGE_H */
diff --git a/include/asm-sh/parport.h b/include/asm-sh/parport.h
new file mode 100644
index 000000000000..f67ba60a2acd
--- /dev/null
+++ b/include/asm-sh/parport.h
@@ -0,0 +1,16 @@
1/*
2 * Copyright (C) 1999, 2000 Tim Waugh <tim@cyberelk.demon.co.uk>
3 *
4 * This file should only be included by drivers/parport/parport_pc.c.
5 */
6#ifndef __ASM_SH_PARPORT_H
7#define __ASM_SH_PARPORT_H
8
9static int __devinit parport_pc_find_isa_ports(int autoirq, int autodma);
10
11static int __devinit parport_pc_find_nonpci_ports(int autoirq, int autodma)
12{
13 return parport_pc_find_isa_ports(autoirq, autodma);
14}
15
16#endif /* __ASM_SH_PARPORT_H */
diff --git a/include/asm-sh/processor.h b/include/asm-sh/processor.h
index d42f68e724fa..2252e75daa26 100644
--- a/include/asm-sh/processor.h
+++ b/include/asm-sh/processor.h
@@ -36,7 +36,7 @@
36 */ 36 */
37enum cpu_type { 37enum cpu_type {
38 /* SH-2 types */ 38 /* SH-2 types */
39 CPU_SH7604, CPU_SH7619, 39 CPU_SH7619,
40 40
41 /* SH-2A types */ 41 /* SH-2A types */
42 CPU_SH7206, 42 CPU_SH7206,
@@ -52,7 +52,7 @@ enum cpu_type {
52 CPU_SH7760, CPU_ST40RA, CPU_ST40GX1, CPU_SH4_202, CPU_SH4_501, 52 CPU_SH7760, CPU_ST40RA, CPU_ST40GX1, CPU_SH4_202, CPU_SH4_501,
53 53
54 /* SH-4A types */ 54 /* SH-4A types */
55 CPU_SH7770, CPU_SH7780, CPU_SH7781, CPU_SH7785, 55 CPU_SH7770, CPU_SH7780, CPU_SH7781, CPU_SH7785, CPU_SHX3,
56 56
57 /* SH4AL-DSP types */ 57 /* SH4AL-DSP types */
58 CPU_SH73180, CPU_SH7343, CPU_SH7722, 58 CPU_SH73180, CPU_SH7343, CPU_SH7722,
@@ -228,11 +228,7 @@ static __inline__ void grab_fpu(struct pt_regs *regs)
228 regs->sr &= ~SR_FD; 228 regs->sr &= ~SR_FD;
229} 229}
230 230
231#ifdef CONFIG_CPU_SH4
232extern void save_fpu(struct task_struct *__tsk, struct pt_regs *regs); 231extern void save_fpu(struct task_struct *__tsk, struct pt_regs *regs);
233#else
234#define save_fpu(tsk) do { } while (0)
235#endif
236 232
237#define unlazy_fpu(tsk, regs) do { \ 233#define unlazy_fpu(tsk, regs) do { \
238 if (test_tsk_thread_flag(tsk, TIF_USEDFPU)) { \ 234 if (test_tsk_thread_flag(tsk, TIF_USEDFPU)) { \
diff --git a/include/asm-sh/rwsem.h b/include/asm-sh/rwsem.h
index 4931ba817d73..1987f3ea7f1b 100644
--- a/include/asm-sh/rwsem.h
+++ b/include/asm-sh/rwsem.h
@@ -1,11 +1,15 @@
1/* 1/*
2 * include/asm-ppc/rwsem.h: R/W semaphores for SH using the stuff 2 * include/asm-sh/rwsem.h: R/W semaphores for SH using the stuff
3 * in lib/rwsem.c. 3 * in lib/rwsem.c.
4 */ 4 */
5 5
6#ifndef _ASM_SH_RWSEM_H 6#ifndef _ASM_SH_RWSEM_H
7#define _ASM_SH_RWSEM_H 7#define _ASM_SH_RWSEM_H
8 8
9#ifndef _LINUX_RWSEM_H
10#error "please don't include asm/rwsem.h directly, use linux/rwsem.h instead"
11#endif
12
9#ifdef __KERNEL__ 13#ifdef __KERNEL__
10#include <linux/list.h> 14#include <linux/list.h>
11#include <linux/spinlock.h> 15#include <linux/spinlock.h>
diff --git a/include/asm-sh/saturn/io.h b/include/asm-sh/saturn/io.h
deleted file mode 100644
index f1b9b5d633f4..000000000000
--- a/include/asm-sh/saturn/io.h
+++ /dev/null
@@ -1,19 +0,0 @@
1/*
2 * include/asm-sh/saturn/io.h
3 *
4 * I/O functions for use on the Sega Saturn.
5 *
6 * Copyright (C) 2002 Paul Mundt
7 *
8 * Released under the terms of the GNU GPL v2.0.
9 */
10#ifndef __ASM_SH_SATURN_IO_H
11#define __ASM_SH_SATURN_IO_H
12
13/* arch/sh/boards/saturn/io.c */
14extern unsigned long saturn_isa_port2addr(unsigned long offset);
15extern void *saturn_ioremap(unsigned long offset, unsigned long size);
16extern void saturn_iounmap(void *addr);
17
18#endif /* __ASM_SH_SATURN_IO_H */
19
diff --git a/include/asm-sh/saturn/smpc.h b/include/asm-sh/saturn/smpc.h
deleted file mode 100644
index 5de5c12d6347..000000000000
--- a/include/asm-sh/saturn/smpc.h
+++ /dev/null
@@ -1,34 +0,0 @@
1/*
2 * include/asm-sh/saturn/smpc.h
3 *
4 * System Manager / Peripheral Control definitions.
5 *
6 * Copyright (C) 2002 Paul Mundt
7 *
8 * Released under the terms of the GNU GPL v2.0.
9 */
10#ifndef __ASM_SH_SATURN_SMPC_H
11#define __ASM_SH_SATURN_SMPC_H
12
13#include <asm/io.h>
14
15#define SMPC_COMMAND 0x2010001f /* SMPC command register */
16#define SMPC_RESULT 0x2010005f /* SMPC result register */
17#define SMPC_STATUS 0x20100063 /* SMPC status register */
18
19#define SMPC_CMD_MSHON 0x0001 /* Master SH On */
20#define SMPC_CMD_SSHON 0x0002 /* Slave SH On */
21#define SMPC_CMD_SSHOFF 0x0003 /* Slave SH Off */
22#define SMPC_CMD_SNDON 0x0004 /* Sound On */
23#define SMPC_CMD_SNDOFF 0x0005 /* Sound Off */
24#define SMPC_CMD_CDON 0x0006 /* CD On */
25#define SMPC_CMD_CDOFF 0x0007 /* CD Off */
26
27static inline void smpc_barrier(void)
28{
29 while ((ctrl_inb(SMPC_STATUS) & 0x0001) == 0x0001)
30 ;
31}
32
33#endif /* __ASM_SH_SATURN_SMPC_H */
34
diff --git a/include/asm-sh/sections.h b/include/asm-sh/sections.h
index 57abd708b236..2a696b8ee4f5 100644
--- a/include/asm-sh/sections.h
+++ b/include/asm-sh/sections.h
@@ -3,7 +3,7 @@
3 3
4#include <asm-generic/sections.h> 4#include <asm-generic/sections.h>
5 5
6extern char _end[]; 6extern long __machvec_start, __machvec_end;
7 7
8#endif /* __ASM_SH_SECTIONS_H */ 8#endif /* __ASM_SH_SECTIONS_H */
9 9
diff --git a/include/asm-sh/setup.h b/include/asm-sh/setup.h
index 1583c6b7bdaa..586a9711a75d 100644
--- a/include/asm-sh/setup.h
+++ b/include/asm-sh/setup.h
@@ -6,6 +6,7 @@
6#ifdef __KERNEL__ 6#ifdef __KERNEL__
7 7
8int setup_early_printk(char *); 8int setup_early_printk(char *);
9void sh_mv_setup(void);
9 10
10#endif /* __KERNEL__ */ 11#endif /* __KERNEL__ */
11 12
diff --git a/include/asm-sh/sh03/io.h b/include/asm-sh/sh03/io.h
index df3b187ef883..4ff1eb900301 100644
--- a/include/asm-sh/sh03/io.h
+++ b/include/asm-sh/sh03/io.h
@@ -14,22 +14,18 @@
14#define INTC_IPRD 0xffd00010UL 14#define INTC_IPRD 0xffd00010UL
15 15
16#define IRL0_IRQ 2 16#define IRL0_IRQ 2
17#define IRL0_IPR_ADDR INTC_IPRD
18#define IRL0_IPR_POS 3 17#define IRL0_IPR_POS 3
19#define IRL0_PRIORITY 13 18#define IRL0_PRIORITY 13
20 19
21#define IRL1_IRQ 5 20#define IRL1_IRQ 5
22#define IRL1_IPR_ADDR INTC_IPRD
23#define IRL1_IPR_POS 2 21#define IRL1_IPR_POS 2
24#define IRL1_PRIORITY 10 22#define IRL1_PRIORITY 10
25 23
26#define IRL2_IRQ 8 24#define IRL2_IRQ 8
27#define IRL2_IPR_ADDR INTC_IPRD
28#define IRL2_IPR_POS 1 25#define IRL2_IPR_POS 1
29#define IRL2_PRIORITY 7 26#define IRL2_PRIORITY 7
30 27
31#define IRL3_IRQ 11 28#define IRL3_IRQ 11
32#define IRL3_IPR_ADDR INTC_IPRD
33#define IRL3_IPR_POS 0 29#define IRL3_IPR_POS 0
34#define IRL3_PRIORITY 4 30#define IRL3_PRIORITY 4
35 31
diff --git a/include/asm-sh/smp.h b/include/asm-sh/smp.h
index caa7b93f1bce..b99ca786c0c1 100644
--- a/include/asm-sh/smp.h
+++ b/include/asm-sh/smp.h
@@ -39,4 +39,6 @@ extern struct smp_fn_call_struct smp_fn_call;
39 39
40#endif /* CONFIG_SMP */ 40#endif /* CONFIG_SMP */
41 41
42#define hard_smp_processor_id() (0)
43
42#endif /* __ASM_SH_SMP_H */ 44#endif /* __ASM_SH_SMP_H */
diff --git a/include/asm-sh/snapgear.h b/include/asm-sh/snapgear.h
index 2d712e72c9e5..3554e3a74e99 100644
--- a/include/asm-sh/snapgear.h
+++ b/include/asm-sh/snapgear.h
@@ -20,22 +20,18 @@
20 */ 20 */
21 21
22#define IRL0_IRQ 2 22#define IRL0_IRQ 2
23#define IRL0_IPR_ADDR INTC_IPRD
24#define IRL0_IPR_POS 3 23#define IRL0_IPR_POS 3
25#define IRL0_PRIORITY 13 24#define IRL0_PRIORITY 13
26 25
27#define IRL1_IRQ 5 26#define IRL1_IRQ 5
28#define IRL1_IPR_ADDR INTC_IPRD
29#define IRL1_IPR_POS 2 27#define IRL1_IPR_POS 2
30#define IRL1_PRIORITY 10 28#define IRL1_PRIORITY 10
31 29
32#define IRL2_IRQ 8 30#define IRL2_IRQ 8
33#define IRL2_IPR_ADDR INTC_IPRD
34#define IRL2_IPR_POS 1 31#define IRL2_IPR_POS 1
35#define IRL2_PRIORITY 7 32#define IRL2_PRIORITY 7
36 33
37#define IRL3_IRQ 11 34#define IRL3_IRQ 11
38#define IRL3_IPR_ADDR INTC_IPRD
39#define IRL3_IPR_POS 0 35#define IRL3_IPR_POS 0
40#define IRL3_PRIORITY 4 36#define IRL3_PRIORITY 4
41#endif 37#endif
diff --git a/include/asm-sh/sparsemem.h b/include/asm-sh/sparsemem.h
new file mode 100644
index 000000000000..547a540b6667
--- /dev/null
+++ b/include/asm-sh/sparsemem.h
@@ -0,0 +1,16 @@
1#ifndef __ASM_SH_SPARSEMEM_H
2#define __ASM_SH_SPARSEMEM_H
3
4#ifdef __KERNEL__
5/*
6 * SECTION_SIZE_BITS 2^N: how big each section will be
7 * MAX_PHYSADDR_BITS 2^N: how much physical address space we have
8 * MAX_PHYSMEM_BITS 2^N: how much memory we can have in that space
9 */
10#define SECTION_SIZE_BITS 26
11#define MAX_PHYSADDR_BITS 32
12#define MAX_PHYSMEM_BITS 32
13
14#endif
15
16#endif /* __ASM_SH_SPARSEMEM_H */
diff --git a/include/asm-sh/system.h b/include/asm-sh/system.h
index 82f3e229e621..7c75045ae22b 100644
--- a/include/asm-sh/system.h
+++ b/include/asm-sh/system.h
@@ -8,9 +8,13 @@
8 8
9#include <linux/irqflags.h> 9#include <linux/irqflags.h>
10#include <linux/compiler.h> 10#include <linux/compiler.h>
11#include <linux/linkage.h>
11#include <asm/types.h> 12#include <asm/types.h>
12#include <asm/ptrace.h> 13#include <asm/ptrace.h>
13 14
15struct task_struct *__switch_to(struct task_struct *prev,
16 struct task_struct *next);
17
14/* 18/*
15 * switch_to() should switch tasks to task nr n, first 19 * switch_to() should switch tasks to task nr n, first
16 */ 20 */
@@ -122,7 +126,7 @@ static inline void sched_cacheflush(void)
122#define smp_read_barrier_depends() do { } while(0) 126#define smp_read_barrier_depends() do { } while(0)
123#endif 127#endif
124 128
125#define set_mb(var, value) do { xchg(&var, value); } while (0) 129#define set_mb(var, value) do { (void)xchg(&var, value); } while (0)
126 130
127/* 131/*
128 * Jump to P2 area. 132 * Jump to P2 area.
@@ -271,6 +275,16 @@ extern unsigned int instruction_size(unsigned int insn);
271void disable_hlt(void); 275void disable_hlt(void);
272void enable_hlt(void); 276void enable_hlt(void);
273 277
278void default_idle(void);
279
280asmlinkage void break_point_trap(void);
281asmlinkage void debug_trap_handler(unsigned long r4, unsigned long r5,
282 unsigned long r6, unsigned long r7,
283 struct pt_regs __regs);
284asmlinkage void bug_trap_handler(unsigned long r4, unsigned long r5,
285 unsigned long r6, unsigned long r7,
286 struct pt_regs __regs);
287
274#define arch_align_stack(x) (x) 288#define arch_align_stack(x) (x)
275 289
276#endif 290#endif
diff --git a/include/asm-sh/topology.h b/include/asm-sh/topology.h
index cff001c316fe..f402a3b1cfa4 100644
--- a/include/asm-sh/topology.h
+++ b/include/asm-sh/topology.h
@@ -1,6 +1,36 @@
1#ifndef _ASM_SH_TOPOLOGY_H 1#ifndef _ASM_SH_TOPOLOGY_H
2#define _ASM_SH_TOPOLOGY_H 2#define _ASM_SH_TOPOLOGY_H
3 3
4#ifdef CONFIG_NUMA
5
6/* sched_domains SD_NODE_INIT for sh machines */
7#define SD_NODE_INIT (struct sched_domain) { \
8 .span = CPU_MASK_NONE, \
9 .parent = NULL, \
10 .child = NULL, \
11 .groups = NULL, \
12 .min_interval = 8, \
13 .max_interval = 32, \
14 .busy_factor = 32, \
15 .imbalance_pct = 125, \
16 .cache_nice_tries = 2, \
17 .busy_idx = 3, \
18 .idle_idx = 2, \
19 .newidle_idx = 0, \
20 .wake_idx = 1, \
21 .forkexec_idx = 1, \
22 .flags = SD_LOAD_BALANCE \
23 | SD_BALANCE_FORK \
24 | SD_BALANCE_EXEC \
25 | SD_SERIALIZE \
26 | SD_WAKE_BALANCE, \
27 .last_balance = jiffies, \
28 .balance_interval = 1, \
29 .nr_balance_failed = 0, \
30}
31
32#endif
33
4#include <asm-generic/topology.h> 34#include <asm-generic/topology.h>
5 35
6#endif /* _ASM_SH_TOPOLOGY_H */ 36#endif /* _ASM_SH_TOPOLOGY_H */
diff --git a/include/asm-sh/uaccess.h b/include/asm-sh/uaccess.h
index 5c49ed6715f2..f18a1a5c95c0 100644
--- a/include/asm-sh/uaccess.h
+++ b/include/asm-sh/uaccess.h
@@ -61,8 +61,6 @@ static inline void set_fs(mm_segment_t s)
61 */ 61 */
62static inline int __access_ok(unsigned long addr, unsigned long size) 62static inline int __access_ok(unsigned long addr, unsigned long size)
63{ 63{
64 extern unsigned long memory_start, memory_end;
65
66 return ((addr >= memory_start) && ((addr + size) < memory_end)); 64 return ((addr >= memory_start) && ((addr + size) < memory_end));
67} 65}
68#else /* CONFIG_MMU */ 66#else /* CONFIG_MMU */
@@ -76,7 +74,7 @@ static inline int __access_ok(unsigned long addr, unsigned long size)
76 * __access_ok: Check if address with size is OK or not. 74 * __access_ok: Check if address with size is OK or not.
77 * 75 *
78 * We do three checks: 76 * We do three checks:
79 * (1) is it user space? 77 * (1) is it user space?
80 * (2) addr + size --> carry? 78 * (2) addr + size --> carry?
81 * (3) addr + size >= 0x80000000 (PAGE_OFFSET) 79 * (3) addr + size >= 0x80000000 (PAGE_OFFSET)
82 * 80 *
@@ -142,11 +140,12 @@ static inline int access_ok(int type, const void __user *p, unsigned long size)
142 __get_user_nocheck((x),(ptr),sizeof(*(ptr))) 140 __get_user_nocheck((x),(ptr),sizeof(*(ptr)))
143 141
144struct __large_struct { unsigned long buf[100]; }; 142struct __large_struct { unsigned long buf[100]; };
145#define __m(x) (*(struct __large_struct *)(x)) 143#define __m(x) (*(struct __large_struct __user *)(x))
146 144
147#define __get_user_size(x,ptr,size,retval) \ 145#define __get_user_size(x,ptr,size,retval) \
148do { \ 146do { \
149 retval = 0; \ 147 retval = 0; \
148 __chk_user_ptr(ptr); \
150 switch (size) { \ 149 switch (size) { \
151 case 1: \ 150 case 1: \
152 __get_user_asm(x, ptr, retval, "b"); \ 151 __get_user_asm(x, ptr, retval, "b"); \
@@ -175,6 +174,7 @@ do { \
175#define __get_user_check(x,ptr,size) \ 174#define __get_user_check(x,ptr,size) \
176({ \ 175({ \
177 long __gu_err, __gu_val; \ 176 long __gu_err, __gu_val; \
177 __chk_user_ptr(ptr); \
178 switch (size) { \ 178 switch (size) { \
179 case 1: \ 179 case 1: \
180 __get_user_1(__gu_val, (ptr), __gu_err); \ 180 __get_user_1(__gu_val, (ptr), __gu_err); \
@@ -300,6 +300,7 @@ extern void __get_user_unknown(void);
300#define __put_user_size(x,ptr,size,retval) \ 300#define __put_user_size(x,ptr,size,retval) \
301do { \ 301do { \
302 retval = 0; \ 302 retval = 0; \
303 __chk_user_ptr(ptr); \
303 switch (size) { \ 304 switch (size) { \
304 case 1: \ 305 case 1: \
305 __put_user_asm(x, ptr, retval, "b"); \ 306 __put_user_asm(x, ptr, retval, "b"); \
@@ -328,7 +329,7 @@ do { \
328#define __put_user_check(x,ptr,size) \ 329#define __put_user_check(x,ptr,size) \
329({ \ 330({ \
330 long __pu_err = -EFAULT; \ 331 long __pu_err = -EFAULT; \
331 __typeof__(*(ptr)) *__pu_addr = (ptr); \ 332 __typeof__(*(ptr)) __user *__pu_addr = (ptr); \
332 \ 333 \
333 if (__access_ok((unsigned long)__pu_addr,size)) \ 334 if (__access_ok((unsigned long)__pu_addr,size)) \
334 __put_user_size((x),__pu_addr,(size),__pu_err); \ 335 __put_user_size((x),__pu_addr,(size),__pu_err); \
@@ -406,10 +407,10 @@ __asm__ __volatile__( \
406#endif 407#endif
407 408
408extern void __put_user_unknown(void); 409extern void __put_user_unknown(void);
409 410
410/* Generic arbitrary sized copy. */ 411/* Generic arbitrary sized copy. */
411/* Return the number of bytes NOT copied */ 412/* Return the number of bytes NOT copied */
412extern __kernel_size_t __copy_user(void *to, const void *from, __kernel_size_t n); 413__kernel_size_t __copy_user(void *to, const void *from, __kernel_size_t n);
413 414
414#define copy_to_user(to,from,n) ({ \ 415#define copy_to_user(to,from,n) ({ \
415void *__copy_to = (void *) (to); \ 416void *__copy_to = (void *) (to); \
@@ -420,14 +421,6 @@ __copy_res = __copy_user(__copy_to, (void *) (from), __copy_size); \
420} else __copy_res = __copy_size; \ 421} else __copy_res = __copy_size; \
421__copy_res; }) 422__copy_res; })
422 423
423#define __copy_to_user(to,from,n) \
424 __copy_user((void *)(to), \
425 (void *)(from), n)
426
427#define __copy_to_user_inatomic __copy_to_user
428#define __copy_from_user_inatomic __copy_from_user
429
430
431#define copy_from_user(to,from,n) ({ \ 424#define copy_from_user(to,from,n) ({ \
432void *__copy_to = (void *) (to); \ 425void *__copy_to = (void *) (to); \
433void *__copy_from = (void *) (from); \ 426void *__copy_from = (void *) (from); \
@@ -438,9 +431,20 @@ __copy_res = __copy_user(__copy_to, __copy_from, __copy_size); \
438} else __copy_res = __copy_size; \ 431} else __copy_res = __copy_size; \
439__copy_res; }) 432__copy_res; })
440 433
441#define __copy_from_user(to,from,n) \ 434static __always_inline unsigned long
442 __copy_user((void *)(to), \ 435__copy_from_user(void *to, const void __user *from, unsigned long n)
443 (void *)(from), n) 436{
437 return __copy_user(to, (__force void *)from, n);
438}
439
440static __always_inline unsigned long __must_check
441__copy_to_user(void __user *to, const void *from, unsigned long n)
442{
443 return __copy_user((__force void *)to, from, n);
444}
445
446#define __copy_to_user_inatomic __copy_to_user
447#define __copy_from_user_inatomic __copy_from_user
444 448
445/* 449/*
446 * Clear the area and return remaining number of bytes 450 * Clear the area and return remaining number of bytes
diff --git a/include/asm-sh/ubc.h b/include/asm-sh/ubc.h
index ae9bbdeefbe1..38d46e01b846 100644
--- a/include/asm-sh/ubc.h
+++ b/include/asm-sh/ubc.h
@@ -51,9 +51,14 @@
51#define BRCR_UBDE (1 << 0) 51#define BRCR_UBDE (1 << 0)
52 52
53#ifndef __ASSEMBLY__ 53#ifndef __ASSEMBLY__
54/* arch/sh/kernel/ubc.S */ 54/* arch/sh/kernel/cpu/ubc.S */
55extern void ubc_wakeup(void);
56extern void ubc_sleep(void); 55extern void ubc_sleep(void);
56
57#ifdef CONFIG_UBC_WAKEUP
58extern void ubc_wakeup(void);
59#else
60#define ubc_wakeup() do { } while (0)
61#endif
57#endif 62#endif
58 63
59#endif /* __KERNEL__ */ 64#endif /* __KERNEL__ */
diff --git a/mm/Kconfig b/mm/Kconfig
index 40559cfd49f7..086af703da43 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -117,7 +117,7 @@ config MEMORY_HOTPLUG
117 bool "Allow for memory hot-add" 117 bool "Allow for memory hot-add"
118 depends on SPARSEMEM || X86_64_ACPI_NUMA 118 depends on SPARSEMEM || X86_64_ACPI_NUMA
119 depends on HOTPLUG && !SOFTWARE_SUSPEND && ARCH_ENABLE_MEMORY_HOTPLUG 119 depends on HOTPLUG && !SOFTWARE_SUSPEND && ARCH_ENABLE_MEMORY_HOTPLUG
120 depends on (IA64 || X86 || PPC64) 120 depends on (IA64 || X86 || PPC64 || SUPERH)
121 121
122comment "Memory hotplug is currently incompatible with Software Suspend" 122comment "Memory hotplug is currently incompatible with Software Suspend"
123 depends on SPARSEMEM && HOTPLUG && SOFTWARE_SUSPEND 123 depends on SPARSEMEM && HOTPLUG && SOFTWARE_SUSPEND