aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/sh/clk.txt32
-rw-r--r--Documentation/sysrq.txt4
-rw-r--r--arch/sh/Kconfig97
-rw-r--r--arch/sh/Kconfig.debug20
-rw-r--r--arch/sh/Makefile6
-rw-r--r--arch/sh/boards/hp6xx/Makefile4
-rw-r--r--arch/sh/boards/hp6xx/setup.c67
-rw-r--r--arch/sh/boards/landisk/Makefile2
-rw-r--r--arch/sh/boards/landisk/gio.c167
-rw-r--r--arch/sh/boards/landisk/io.c250
-rw-r--r--arch/sh/boards/landisk/irq.c83
-rw-r--r--arch/sh/boards/landisk/landisk_pwb.c346
-rw-r--r--arch/sh/boards/landisk/psw.c143
-rw-r--r--arch/sh/boards/landisk/rtc.c91
-rw-r--r--arch/sh/boards/landisk/setup.c163
-rw-r--r--arch/sh/boards/lboxre2/Makefile5
-rw-r--r--arch/sh/boards/lboxre2/irq.c31
-rw-r--r--arch/sh/boards/lboxre2/setup.c85
-rw-r--r--arch/sh/boards/renesas/r7780rp/Kconfig18
-rw-r--r--arch/sh/boards/renesas/r7780rp/Makefile6
-rw-r--r--arch/sh/boards/renesas/r7780rp/irq-r7780rp.c21
-rw-r--r--arch/sh/boards/renesas/r7780rp/irq-r7785rp.c29
-rw-r--r--arch/sh/boards/renesas/r7780rp/irq.c25
-rw-r--r--arch/sh/boards/renesas/r7780rp/setup.c78
-rw-r--r--arch/sh/boards/se/770x/io.c2
-rw-r--r--arch/sh/boards/se/770x/irq.c57
-rw-r--r--arch/sh/boards/se/770x/setup.c30
-rw-r--r--arch/sh/boards/se/7722/Makefile10
-rw-r--r--arch/sh/boards/se/7722/irq.c101
-rw-r--r--arch/sh/boards/se/7722/setup.c148
-rw-r--r--arch/sh/boards/se/7751/setup.c148
-rw-r--r--arch/sh/boards/se/7780/Makefile10
-rw-r--r--arch/sh/boards/se/7780/irq.c89
-rw-r--r--arch/sh/boards/se/7780/setup.c122
-rw-r--r--arch/sh/configs/lboxre2_defconfig1271
-rw-r--r--arch/sh/configs/r7780rp_defconfig108
-rw-r--r--arch/sh/configs/r7785rp_defconfig1334
-rw-r--r--arch/sh/configs/se7705_defconfig106
-rw-r--r--arch/sh/configs/se7712_defconfig1088
-rw-r--r--arch/sh/configs/se7722_defconfig980
-rw-r--r--arch/sh/configs/se7780_defconfig1309
-rw-r--r--arch/sh/drivers/Kconfig10
-rw-r--r--arch/sh/drivers/heartbeat.c13
-rw-r--r--arch/sh/drivers/pci/Makefile5
-rw-r--r--arch/sh/drivers/pci/fixups-lboxre2.c41
-rw-r--r--arch/sh/drivers/pci/fixups-se7780.c60
-rw-r--r--arch/sh/drivers/pci/ops-landisk.c4
-rw-r--r--arch/sh/drivers/pci/ops-lboxre2.c63
-rw-r--r--arch/sh/drivers/pci/ops-r7780rp.c27
-rw-r--r--arch/sh/drivers/pci/ops-se7780.c96
-rw-r--r--arch/sh/drivers/pci/ops-sh4.c6
-rw-r--r--arch/sh/drivers/pci/pci-sh4.h2
-rw-r--r--arch/sh/drivers/pci/pci-sh7751.c15
-rw-r--r--arch/sh/drivers/pci/pci-sh7780.c45
-rw-r--r--arch/sh/drivers/pci/pci-sh7780.h19
-rw-r--r--arch/sh/kernel/Makefile1
-rw-r--r--arch/sh/kernel/cf-enabler.c28
-rw-r--r--arch/sh/kernel/cpu/clock.c102
-rw-r--r--arch/sh/kernel/cpu/init.c19
-rw-r--r--arch/sh/kernel/cpu/irq/Makefile2
-rw-r--r--arch/sh/kernel/cpu/irq/intc2.c3
-rw-r--r--arch/sh/kernel/cpu/irq/pint.c56
-rw-r--r--arch/sh/kernel/cpu/sh3/Makefile1
-rw-r--r--arch/sh/kernel/cpu/sh3/probe.c3
-rw-r--r--arch/sh/kernel/cpu/sh3/setup-sh7705.c54
-rw-r--r--arch/sh/kernel/cpu/sh3/setup-sh7709.c29
-rw-r--r--arch/sh/kernel/cpu/sh3/setup-sh7710.c60
-rw-r--r--arch/sh/kernel/cpu/sh4/clock-sh4-202.c3
-rw-r--r--arch/sh/kernel/cpu/sh4/probe.c8
-rw-r--r--arch/sh/kernel/cpu/sh4a/Makefile4
-rw-r--r--arch/sh/kernel/cpu/sh4a/clock-sh7722.c600
-rw-r--r--arch/sh/kernel/cpu/sh4a/clock-sh7785.c162
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7785.c103
-rw-r--r--arch/sh/kernel/crash_dump.c46
-rw-r--r--arch/sh/kernel/irq.c5
-rw-r--r--arch/sh/kernel/kgdb_stub.c490
-rw-r--r--arch/sh/kernel/machine_kexec.c29
-rw-r--r--arch/sh/kernel/process.c14
-rw-r--r--arch/sh/kernel/setup.c267
-rw-r--r--arch/sh/kernel/sh_ksyms.c1
-rw-r--r--arch/sh/kernel/timers/timer-tmu.c4
-rw-r--r--arch/sh/kernel/traps.c73
-rw-r--r--arch/sh/kernel/vmlinux.lds.S47
-rw-r--r--arch/sh/lib/Makefile4
-rw-r--r--arch/sh/lib/udivdi3.c16
-rw-r--r--arch/sh/mm/Kconfig20
-rw-r--r--arch/sh/mm/fault.c39
-rw-r--r--arch/sh/mm/init.c197
-rw-r--r--arch/sh/tools/mach-types2
-rw-r--r--drivers/input/touchscreen/hp680_ts_input.c2
-rw-r--r--drivers/serial/sh-sci.c113
-rw-r--r--drivers/serial/sh-sci.h83
-rw-r--r--include/asm-sh/bug.h92
-rw-r--r--include/asm-sh/clock.h32
-rw-r--r--include/asm-sh/cpu-sh3/mmu_context.h1
-rw-r--r--include/asm-sh/cpu-sh4/freq.h8
-rw-r--r--include/asm-sh/irq.h91
-rw-r--r--include/asm-sh/kdebug.h35
-rw-r--r--include/asm-sh/kexec.h42
-rw-r--r--include/asm-sh/kgdb.h51
-rw-r--r--include/asm-sh/lboxre2.h27
-rw-r--r--include/asm-sh/mmu_context.h6
-rw-r--r--include/asm-sh/page.h10
-rw-r--r--include/asm-sh/param.h2
-rw-r--r--include/asm-sh/pci.h2
-rw-r--r--include/asm-sh/processor.h2
-rw-r--r--include/asm-sh/r7780rp.h76
-rw-r--r--include/asm-sh/se.h4
-rw-r--r--include/asm-sh/se7722.h118
-rw-r--r--include/asm-sh/se7751.h2
-rw-r--r--include/asm-sh/se7780.h108
-rw-r--r--include/asm-sh/stat.h19
-rw-r--r--include/asm-sh/system.h3
-rw-r--r--sound/oss/sh_dac_audio.c2
114 files changed, 10104 insertions, 2411 deletions
diff --git a/Documentation/sh/clk.txt b/Documentation/sh/clk.txt
new file mode 100644
index 000000000000..9aef710e9a4b
--- /dev/null
+++ b/Documentation/sh/clk.txt
@@ -0,0 +1,32 @@
1Clock framework on SuperH architecture
2
3The framework on SH extends existing API by the function clk_set_rate_ex,
4which prototype is as follows:
5
6 clk_set_rate_ex (struct clk *clk, unsigned long rate, int algo_id)
7
8The algo_id parameter is used to specify algorithm used to recalculate clocks,
9adjanced to clock, specified as first argument. It is assumed that algo_id==0
10means no changes to adjanced clock
11
12Internally, the clk_set_rate_ex forwards request to clk->ops->set_rate method,
13if it is present in ops structure. The method should set the clock rate and adjust
14all needed clocks according to the passed algo_id.
15Exact values for algo_id are machine-dependend. For the sh7722, the following
16values are defined:
17
18 NO_CHANGE = 0,
19 IUS_N1_N1, /* I:U = N:1, U:Sh = N:1 */
20 IUS_322, /* I:U:Sh = 3:2:2 */
21 IUS_522, /* I:U:Sh = 5:2:2 */
22 IUS_N11, /* I:U:Sh = N:1:1 */
23 SB_N1, /* Sh:B = N:1 */
24 SB3_N1, /* Sh:B3 = N:1 */
25 SB3_32, /* Sh:B3 = 3:2 */
26 SB3_43, /* Sh:B3 = 4:3 */
27 SB3_54, /* Sh:B3 = 5:4 */
28 BP_N1, /* B:P = N:1 */
29 IP_N1 /* I:P = N:1 */
30
31Each of these constants means relation between clocks that can be set via the FRQCR
32register
diff --git a/Documentation/sysrq.txt b/Documentation/sysrq.txt
index d43aa9d3c105..ba328f255417 100644
--- a/Documentation/sysrq.txt
+++ b/Documentation/sysrq.txt
@@ -1,6 +1,6 @@
1Linux Magic System Request Key Hacks 1Linux Magic System Request Key Hacks
2Documentation for sysrq.c 2Documentation for sysrq.c
3Last update: 2007-JAN-06 3Last update: 2007-MAR-14
4 4
5* What is the magic SysRq key? 5* What is the magic SysRq key?
6~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -75,7 +75,7 @@ On all - write a character to /proc/sysrq-trigger. e.g.:
75 75
76'f' - Will call oom_kill to kill a memory hog process. 76'f' - Will call oom_kill to kill a memory hog process.
77 77
78'g' - Used by kgdb on ppc platforms. 78'g' - Used by kgdb on ppc and sh platforms.
79 79
80'h' - Will display help (actually any other key than those listed 80'h' - Will display help (actually any other key than those listed
81 above will display help. but 'h' is easy to remember :-) 81 above will display help. but 'h' is easy to remember :-)
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index 4d16d8917074..d74eb120a9c6 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -22,6 +22,10 @@ config RWSEM_GENERIC_SPINLOCK
22config RWSEM_XCHGADD_ALGORITHM 22config RWSEM_XCHGADD_ALGORITHM
23 bool 23 bool
24 24
25config GENERIC_BUG
26 def_bool y
27 depends on BUG
28
25config GENERIC_FIND_NEXT_BIT 29config GENERIC_FIND_NEXT_BIT
26 bool 30 bool
27 default y 31 default y
@@ -88,6 +92,14 @@ config SH_SOLUTION_ENGINE
88 Select SolutionEngine if configuring for a Hitachi SH7709 92 Select SolutionEngine if configuring for a Hitachi SH7709
89 or SH7750 evaluation board. 93 or SH7750 evaluation board.
90 94
95config SH_7722_SOLUTION_ENGINE
96 bool "SolutionEngine7722"
97 select SOLUTION_ENGINE
98 select CPU_SUBTYPE_SH7722
99 help
100 Select 7722 SolutionEngine if configuring for a Hitachi SH772
101 evaluation board.
102
91config SH_7751_SOLUTION_ENGINE 103config SH_7751_SOLUTION_ENGINE
92 bool "SolutionEngine7751" 104 bool "SolutionEngine7751"
93 select SOLUTION_ENGINE 105 select SOLUTION_ENGINE
@@ -95,6 +107,14 @@ config SH_7751_SOLUTION_ENGINE
95 help 107 help
96 Select 7751 SolutionEngine if configuring for a Hitachi SH7751 108 Select 7751 SolutionEngine if configuring for a Hitachi SH7751
97 evaluation board. 109 evaluation board.
110
111config SH_7780_SOLUTION_ENGINE
112 bool "SolutionEngine7780"
113 select SOLUTION_ENGINE
114 select CPU_SUBTYPE_SH7780
115 help
116 Select 7780 SolutionEngine if configuring for a Renesas SH7780
117 evaluation board.
98 118
99config SH_7300_SOLUTION_ENGINE 119config SH_7300_SOLUTION_ENGINE
100 bool "SolutionEngine7300" 120 bool "SolutionEngine7300"
@@ -193,12 +213,8 @@ config SH_RTS7751R2D
193 Select RTS7751R2D if configuring for a Renesas Technology 213 Select RTS7751R2D if configuring for a Renesas Technology
194 Sales SH-Graphics board. 214 Sales SH-Graphics board.
195 215
196config SH_R7780RP 216config SH_HIGHLANDER
197 bool "R7780RP-1" 217 bool "Highlander"
198 select CPU_SUBTYPE_SH7780
199 help
200 Select R7780RP-1 if configuring for a Renesas Solutions
201 HIGHLANDER board.
202 218
203config SH_EDOSK7705 219config SH_EDOSK7705
204 bool "EDOSK7705" 220 bool "EDOSK7705"
@@ -243,6 +259,12 @@ config SH_7619_SOLUTION_ENGINE
243 help 259 help
244 Select 7619 SolutionEngine if configuring for a Hitachi SH7619 260 Select 7619 SolutionEngine if configuring for a Hitachi SH7619
245 evaluation board. 261 evaluation board.
262
263config SH_LBOX_RE2
264 bool "L-BOX RE2"
265 select CPU_SUBTYPE_SH7751R
266 help
267 Select L-BOX RE2 if configuring for the NTT COMWARE L-BOX RE2.
246 268
247config SH_UNKNOWN 269config SH_UNKNOWN
248 bool "BareCPU" 270 bool "BareCPU"
@@ -258,6 +280,10 @@ config SH_UNKNOWN
258 280
259endchoice 281endchoice
260 282
283source "arch/sh/boards/renesas/hs7751rvoip/Kconfig"
284source "arch/sh/boards/renesas/rts7751r2d/Kconfig"
285source "arch/sh/boards/renesas/r7780rp/Kconfig"
286
261source "arch/sh/mm/Kconfig" 287source "arch/sh/mm/Kconfig"
262 288
263config CF_ENABLER 289config CF_ENABLER
@@ -366,6 +392,16 @@ config SH_STORE_QUEUES
366 Selecting this option will enable an in-kernel API for manipulating 392 Selecting this option will enable an in-kernel API for manipulating
367 the store queues integrated in the SH-4 processors. 393 the store queues integrated in the SH-4 processors.
368 394
395config SPECULATIVE_EXECUTION
396 bool "Speculative subroutine return"
397 depends on CPU_SUBTYPE_SH7780 && EXPERIMENTAL
398 help
399 This enables support for a speculative instruction fetch for
400 subroutine return. There are various pitfalls associated with
401 this, as outlined in the SH7780 hardware manual.
402
403 If unsure, say N.
404
369config CPU_HAS_INTEVT 405config CPU_HAS_INTEVT
370 bool 406 bool
371 407
@@ -398,8 +434,9 @@ config CPU_HAS_PTEA
398 434
399endmenu 435endmenu
400 436
401menu "Timer support" 437menu "Timer and clock configuration"
402depends on !GENERIC_TIME 438
439if !GENERIC_TIME
403 440
404config SH_TMU 441config SH_TMU
405 bool "TMU timer support" 442 bool "TMU timer support"
@@ -422,17 +459,11 @@ config SH_MTU2
422 help 459 help
423 This enables the use of the MTU2 as the system timer. 460 This enables the use of the MTU2 as the system timer.
424 461
425endmenu 462endif
426
427source "arch/sh/boards/renesas/hs7751rvoip/Kconfig"
428
429source "arch/sh/boards/renesas/rts7751r2d/Kconfig"
430
431source "arch/sh/boards/renesas/r7780rp/Kconfig"
432 463
433config SH_TIMER_IRQ 464config SH_TIMER_IRQ
434 int 465 int
435 default "28" if CPU_SUBTYPE_SH7780 466 default "28" if CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7785
436 default "86" if CPU_SUBTYPE_SH7619 467 default "86" if CPU_SUBTYPE_SH7619
437 default "140" if CPU_SUBTYPE_SH7206 468 default "140" if CPU_SUBTYPE_SH7206
438 default "16" 469 default "16"
@@ -462,7 +493,8 @@ config SH_PCLK_FREQ
462 default "33333333" if CPU_SUBTYPE_SH7300 || CPU_SUBTYPE_SH7770 || \ 493 default "33333333" if CPU_SUBTYPE_SH7300 || CPU_SUBTYPE_SH7770 || \
463 CPU_SUBTYPE_SH7760 || CPU_SUBTYPE_SH7705 || \ 494 CPU_SUBTYPE_SH7760 || CPU_SUBTYPE_SH7705 || \
464 CPU_SUBTYPE_SH7206 495 CPU_SUBTYPE_SH7206
465 default "50000000" if CPU_SUBTYPE_SH7750 || CPU_SUBTYPE_SH7780 496 default "50000000" if CPU_SUBTYPE_SH7750 || CPU_SUBTYPE_SH7780 || \
497 CPU_SUBTYPE_SH7785
466 default "60000000" if CPU_SUBTYPE_SH7751 498 default "60000000" if CPU_SUBTYPE_SH7751
467 default "66000000" if CPU_SUBTYPE_SH4_202 499 default "66000000" if CPU_SUBTYPE_SH4_202
468 help 500 help
@@ -477,6 +509,8 @@ config SH_CLK_MD
477 help 509 help
478 MD2 - MD0 pin setting. 510 MD2 - MD0 pin setting.
479 511
512endmenu
513
480menu "CPU Frequency scaling" 514menu "CPU Frequency scaling"
481 515
482source "drivers/cpufreq/Kconfig" 516source "drivers/cpufreq/Kconfig"
@@ -495,21 +529,6 @@ config SH_CPU_FREQ
495 529
496endmenu 530endmenu
497 531
498source "arch/sh/drivers/dma/Kconfig"
499
500source "arch/sh/cchips/Kconfig"
501
502config HEARTBEAT
503 bool "Heartbeat LED"
504 depends on SH_MPC1211 || SH_SH03 || \
505 SOLUTION_ENGINE || \
506 SH_RTS7751R2D || SH_SH4202_MICRODEV || SH_LANDISK || \
507 SH_R7780RP
508 help
509 Use the power-on LED on your machine as a load meter. The exact
510 behavior is platform-dependent, but normally the flash frequency is
511 a hyperbolic function of the 5-minute load average.
512
513source "arch/sh/drivers/Kconfig" 532source "arch/sh/drivers/Kconfig"
514 533
515endmenu 534endmenu
@@ -540,6 +559,20 @@ config KEXEC
540 support. As of this writing the exact hardware interface is 559 support. As of this writing the exact hardware interface is
541 strongly in flux, so no good recommendation can be made. 560 strongly in flux, so no good recommendation can be made.
542 561
562config CRASH_DUMP
563 bool "kernel crash dumps (EXPERIMENTAL)"
564 depends on EXPERIMENTAL
565 help
566 Generate crash dump after being started by kexec.
567 This should be normally only set in special crash dump kernels
568 which are loaded in the main kernel with kexec-tools into
569 a specially reserved region and then later executed after
570 a crash by kdump/kexec. The crash dump kernel must be compiled
571 to a memory address not used by the main kernel using
572 MEMORY_START.
573
574 For more details see Documentation/kdump/kdump.txt
575
543config SMP 576config SMP
544 bool "Symmetric multi-processing support" 577 bool "Symmetric multi-processing support"
545 ---help--- 578 ---help---
diff --git a/arch/sh/Kconfig.debug b/arch/sh/Kconfig.debug
index 87902e0298e2..b56307294b67 100644
--- a/arch/sh/Kconfig.debug
+++ b/arch/sh/Kconfig.debug
@@ -33,6 +33,7 @@ config EARLY_SCIF_CONSOLE_PORT
33 default "0xffe00000" if CPU_SUBTYPE_SH7780 33 default "0xffe00000" if CPU_SUBTYPE_SH7780
34 default "0xfffe9800" if CPU_SUBTYPE_SH7206 34 default "0xfffe9800" if CPU_SUBTYPE_SH7206
35 default "0xf8420000" if CPU_SUBTYPE_SH7619 35 default "0xf8420000" if CPU_SUBTYPE_SH7619
36 default "0xa4400000" if CPU_SUBTYPE_SH7712 || CPU_SUBTYPE_SH7705
36 default "0xffe80000" if CPU_SH4 37 default "0xffe80000" if CPU_SH4
37 38
38config EARLY_PRINTK 39config EARLY_PRINTK
@@ -77,16 +78,17 @@ config 4KSTACKS
77 on the VM subsystem for higher order allocations. This option 78 on the VM subsystem for higher order allocations. This option
78 will also use IRQ stacks to compensate for the reduced stackspace. 79 will also use IRQ stacks to compensate for the reduced stackspace.
79 80
80config KGDB 81config SH_KGDB
81 bool "Include KGDB kernel debugger" 82 bool "Include KGDB kernel debugger"
82 select FRAME_POINTER 83 select FRAME_POINTER
84 select DEBUG_INFO
83 help 85 help
84 Include in-kernel hooks for kgdb, the Linux kernel source level 86 Include in-kernel hooks for kgdb, the Linux kernel source level
85 debugger. See <http://kgdb.sourceforge.net/> for more information. 87 debugger. See <http://kgdb.sourceforge.net/> for more information.
86 Unless you are intending to debug the kernel, say N here. 88 Unless you are intending to debug the kernel, say N here.
87 89
88menu "KGDB configuration options" 90menu "KGDB configuration options"
89 depends on KGDB 91 depends on SH_KGDB
90 92
91config MORE_COMPILE_OPTIONS 93config MORE_COMPILE_OPTIONS
92 bool "Add any additional compile options" 94 bool "Add any additional compile options"
@@ -103,22 +105,16 @@ config KGDB_NMI
103 bool "Enter KGDB on NMI" 105 bool "Enter KGDB on NMI"
104 default n 106 default n
105 107
106config KGDB_THREAD
107 bool "Include KGDB thread support"
108 default y
109
110config SH_KGDB_CONSOLE 108config SH_KGDB_CONSOLE
111 bool "Console messages through GDB" 109 bool "Console messages through GDB"
110 depends on !SERIAL_SH_SCI_CONSOLE
111 select SERIAL_CORE_CONSOLE
112 default n 112 default n
113 113
114config KGDB_SYSRQ 114config KGDB_SYSRQ
115 bool "Allow SysRq 'G' to enter KGDB" 115 bool "Allow SysRq 'G' to enter KGDB"
116 default y 116 default y
117 117
118config KGDB_KERNEL_ASSERTS
119 bool "Include KGDB kernel assertions"
120 default n
121
122comment "Serial port setup" 118comment "Serial port setup"
123 119
124config KGDB_DEFPORT 120config KGDB_DEFPORT
@@ -131,7 +127,7 @@ config KGDB_DEFBAUD
131 127
132choice 128choice
133 prompt "Parity" 129 prompt "Parity"
134 depends on KGDB 130 depends on SH_KGDB
135 default KGDB_DEFPARITY_N 131 default KGDB_DEFPARITY_N
136 132
137config KGDB_DEFPARITY_N 133config KGDB_DEFPARITY_N
@@ -147,7 +143,7 @@ endchoice
147 143
148choice 144choice
149 prompt "Data bits" 145 prompt "Data bits"
150 depends on KGDB 146 depends on SH_KGDB
151 default KGDB_DEFBITS_8 147 default KGDB_DEFBITS_8
152 148
153config KGDB_DEFBITS_8 149config KGDB_DEFBITS_8
diff --git a/arch/sh/Makefile b/arch/sh/Makefile
index bd9b1729f8b8..7b1122417050 100644
--- a/arch/sh/Makefile
+++ b/arch/sh/Makefile
@@ -47,7 +47,6 @@ cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -ml
47cflags-y += $(call as-option,-Wa$(comma)-isa=$(isa-y),) -ffreestanding 47cflags-y += $(call as-option,-Wa$(comma)-isa=$(isa-y),) -ffreestanding
48 48
49cflags-$(CONFIG_SH_DSP) += -Wa,-dsp 49cflags-$(CONFIG_SH_DSP) += -Wa,-dsp
50cflags-$(CONFIG_SH_KGDB) += -g
51 50
52cflags-$(CONFIG_MORE_COMPILE_OPTIONS) += \ 51cflags-$(CONFIG_MORE_COMPILE_OPTIONS) += \
53 $(shell echo $(CONFIG_COMPILE_OPTIONS) | sed -e 's/"//g') 52 $(shell echo $(CONFIG_COMPILE_OPTIONS) | sed -e 's/"//g')
@@ -89,7 +88,9 @@ core-$(CONFIG_SH_FPU_EMU) += arch/sh/math-emu/
89 88
90# Boards 89# Boards
91machdir-$(CONFIG_SH_SOLUTION_ENGINE) := se/770x 90machdir-$(CONFIG_SH_SOLUTION_ENGINE) := se/770x
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_7300_SOLUTION_ENGINE) := se/7300 94machdir-$(CONFIG_SH_7300_SOLUTION_ENGINE) := se/7300
94machdir-$(CONFIG_SH_7343_SOLUTION_ENGINE) := se/7343 95machdir-$(CONFIG_SH_7343_SOLUTION_ENGINE) := se/7343
95machdir-$(CONFIG_SH_73180_SOLUTION_ENGINE) := se/73180 96machdir-$(CONFIG_SH_73180_SOLUTION_ENGINE) := se/73180
@@ -103,7 +104,7 @@ machdir-$(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_R7780RP) := 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
@@ -111,6 +112,7 @@ machdir-$(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
115machdir-$(CONFIG_SH_LBOX_RE2) := lboxre2
114machdir-$(CONFIG_SH_UNKNOWN) := unknown 116machdir-$(CONFIG_SH_UNKNOWN) := unknown
115 117
116incdir-y := $(notdir $(machdir-y)) 118incdir-y := $(notdir $(machdir-y))
diff --git a/arch/sh/boards/hp6xx/Makefile b/arch/sh/boards/hp6xx/Makefile
index ff1b7f5b4e91..b3124278247c 100644
--- a/arch/sh/boards/hp6xx/Makefile
+++ b/arch/sh/boards/hp6xx/Makefile
@@ -2,6 +2,6 @@
2# Makefile for the HP6xx specific parts of the kernel 2# Makefile for the HP6xx specific parts of the kernel
3# 3#
4 4
5obj-y := setup.o 5obj-y := setup.o
6obj-$(CONFIG_PM) += pm.o pm_wakeup.o 6obj-$(CONFIG_PM) += pm.o pm_wakeup.o
7obj-$(CONFIG_APM) += hp6xx_apm.o 7obj-$(CONFIG_APM_EMULATION) += hp6xx_apm.o
diff --git a/arch/sh/boards/hp6xx/setup.c b/arch/sh/boards/hp6xx/setup.c
index b5a96649ed26..6aeee85c9785 100644
--- a/arch/sh/boards/hp6xx/setup.c
+++ b/arch/sh/boards/hp6xx/setup.c
@@ -2,6 +2,7 @@
2 * linux/arch/sh/boards/hp6xx/setup.c 2 * linux/arch/sh/boards/hp6xx/setup.c
3 * 3 *
4 * Copyright (C) 2002 Andriy Skulysh 4 * Copyright (C) 2002 Andriy Skulysh
5 * Copyright (C) 2007 Kristoffer Ericson <Kristoffer_e1@hotmail.com>
5 * 6 *
6 * May be copied or modified under the terms of the GNU General Public 7 * May be copied or modified under the terms of the GNU General Public
7 * License. See linux/COPYING for more information. 8 * License. See linux/COPYING for more information.
@@ -10,6 +11,7 @@
10 */ 11 */
11#include <linux/types.h> 12#include <linux/types.h>
12#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/platform_device.h>
13#include <asm/hd64461.h> 15#include <asm/hd64461.h>
14#include <asm/io.h> 16#include <asm/io.h>
15#include <asm/irq.h> 17#include <asm/irq.h>
@@ -19,6 +21,40 @@
19#define SCPCR 0xa4000116 21#define SCPCR 0xa4000116
20#define SCPDR 0xa4000136 22#define SCPDR 0xa4000136
21 23
24/* CF Slot */
25static struct resource cf_ide_resources[] = {
26 [0] = {
27 .start = 0x15000000 + 0x1f0,
28 .end = 0x15000000 + 0x1f0 + 0x08 - 0x01,
29 .flags = IORESOURCE_MEM,
30 },
31 [1] = {
32 .start = 0x15000000 + 0x1fe,
33 .end = 0x15000000 + 0x1fe + 0x01,
34 .flags = IORESOURCE_MEM,
35 },
36 [2] = {
37 .start = 93,
38 .flags = IORESOURCE_IRQ,
39 },
40};
41
42static struct platform_device cf_ide_device = {
43 .name = "pata_platform",
44 .id = -1,
45 .num_resources = ARRAY_SIZE(cf_ide_resources),
46 .resource = cf_ide_resources,
47};
48
49static struct platform_device *hp6xx_devices[] __initdata = {
50 &cf_ide_device,
51};
52
53static int __init hp6xx_devices_setup(void)
54{
55 return platform_add_devices(hp6xx_devices, ARRAY_SIZE(hp6xx_devices));
56}
57
22static void __init hp6xx_setup(char **cmdline_p) 58static void __init hp6xx_setup(char **cmdline_p)
23{ 59{
24 u8 v8; 60 u8 v8;
@@ -60,41 +96,12 @@ static void __init hp6xx_setup(char **cmdline_p)
60 v |= SCPCR_TS_ENABLE; 96 v |= SCPCR_TS_ENABLE;
61 ctrl_outw(v, SCPCR); 97 ctrl_outw(v, SCPCR);
62} 98}
99device_initcall(hp6xx_devices_setup);
63 100
64/*
65 * XXX: This is stupid, we should have a generic machine vector for the cchips
66 * and just wrap the platform setup code in to this, as it's the only thing
67 * that ends up being different.
68 */
69struct sh_machine_vector mv_hp6xx __initmv = { 101struct sh_machine_vector mv_hp6xx __initmv = {
70 .mv_name = "hp6xx", 102 .mv_name = "hp6xx",
71 .mv_setup = hp6xx_setup, 103 .mv_setup = hp6xx_setup,
72 .mv_nr_irqs = HD64461_IRQBASE + HD64461_IRQ_NUM, 104 .mv_nr_irqs = HD64461_IRQBASE + HD64461_IRQ_NUM,
73
74 .mv_inb = hd64461_inb,
75 .mv_inw = hd64461_inw,
76 .mv_inl = hd64461_inl,
77 .mv_outb = hd64461_outb,
78 .mv_outw = hd64461_outw,
79 .mv_outl = hd64461_outl,
80
81 .mv_inb_p = hd64461_inb_p,
82 .mv_inw_p = hd64461_inw,
83 .mv_inl_p = hd64461_inl,
84 .mv_outb_p = hd64461_outb_p,
85 .mv_outw_p = hd64461_outw,
86 .mv_outl_p = hd64461_outl,
87
88 .mv_insb = hd64461_insb,
89 .mv_insw = hd64461_insw,
90 .mv_insl = hd64461_insl,
91 .mv_outsb = hd64461_outsb,
92 .mv_outsw = hd64461_outsw,
93 .mv_outsl = hd64461_outsl,
94
95 .mv_readw = hd64461_readw,
96 .mv_writew = hd64461_writew,
97
98 .mv_irq_demux = hd64461_irq_demux, 105 .mv_irq_demux = hd64461_irq_demux,
99}; 106};
100ALIAS_MV(hp6xx) 107ALIAS_MV(hp6xx)
diff --git a/arch/sh/boards/landisk/Makefile b/arch/sh/boards/landisk/Makefile
index 89e4beb2ad47..a696b4277fa9 100644
--- a/arch/sh/boards/landisk/Makefile
+++ b/arch/sh/boards/landisk/Makefile
@@ -2,4 +2,4 @@
2# Makefile for I-O DATA DEVICE, INC. "LANDISK Series" 2# Makefile for I-O DATA DEVICE, INC. "LANDISK Series"
3# 3#
4 4
5obj-y := setup.o io.o irq.o rtc.o landisk_pwb.o 5obj-y := setup.o irq.o psw.o gio.o
diff --git a/arch/sh/boards/landisk/gio.c b/arch/sh/boards/landisk/gio.c
new file mode 100644
index 000000000000..50d38be62f01
--- /dev/null
+++ b/arch/sh/boards/landisk/gio.c
@@ -0,0 +1,167 @@
1/*
2 * arch/sh/boards/landisk/gio.c - driver for landisk
3 *
4 * This driver will also support the I-O DATA Device, Inc. LANDISK Board.
5 * LANDISK and USL-5P Button, LED and GIO driver drive function.
6 *
7 * Copylight (C) 2006 kogiidena
8 * Copylight (C) 2002 Atom Create Engineering Co., Ltd. *
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 */
15#include <linux/module.h>
16#include <linux/init.h>
17#include <linux/kdev_t.h>
18#include <linux/cdev.h>
19#include <linux/fs.h>
20#include <asm/io.h>
21#include <asm/uaccess.h>
22#include <asm/landisk/gio.h>
23#include <asm/landisk/iodata_landisk.h>
24
25#define DEVCOUNT 4
26#define GIO_MINOR 2 /* GIO minor no. */
27
28static dev_t dev;
29static struct cdev *cdev_p;
30static int openCnt;
31
32static int gio_open(struct inode *inode, struct file *filp)
33{
34 int minor;
35
36 minor = MINOR(inode->i_rdev);
37 if (minor < DEVCOUNT) {
38 if (openCnt > 0) {
39 return -EALREADY;
40 } else {
41 openCnt++;
42 return 0;
43 }
44 }
45 return -ENOENT;
46}
47
48static int gio_close(struct inode *inode, struct file *filp)
49{
50 int minor;
51
52 minor = MINOR(inode->i_rdev);
53 if (minor < DEVCOUNT) {
54 openCnt--;
55 }
56 return 0;
57}
58
59static int gio_ioctl(struct inode *inode, struct file *filp,
60 unsigned int cmd, unsigned long arg)
61{
62 unsigned int data;
63 static unsigned int addr = 0;
64
65 if (cmd & 0x01) { /* write */
66 if (copy_from_user(&data, (int *)arg, sizeof(int))) {
67 return -EFAULT;
68 }
69 }
70
71 switch (cmd) {
72 case GIODRV_IOCSGIOSETADDR: /* addres set */
73 addr = data;
74 break;
75
76 case GIODRV_IOCSGIODATA1: /* write byte */
77 ctrl_outb((unsigned char)(0x0ff & data), addr);
78 break;
79
80 case GIODRV_IOCSGIODATA2: /* write word */
81 if (addr & 0x01) {
82 return -EFAULT;
83 }
84 ctrl_outw((unsigned short int)(0x0ffff & data), addr);
85 break;
86
87 case GIODRV_IOCSGIODATA4: /* write long */
88 if (addr & 0x03) {
89 return -EFAULT;
90 }
91 ctrl_outl(data, addr);
92 break;
93
94 case GIODRV_IOCGGIODATA1: /* read byte */
95 data = ctrl_inb(addr);
96 break;
97
98 case GIODRV_IOCGGIODATA2: /* read word */
99 if (addr & 0x01) {
100 return -EFAULT;
101 }
102 data = ctrl_inw(addr);
103 break;
104
105 case GIODRV_IOCGGIODATA4: /* read long */
106 if (addr & 0x03) {
107 return -EFAULT;
108 }
109 data = ctrl_inl(addr);
110 break;
111 default:
112 return -EFAULT;
113 break;
114 }
115
116 if ((cmd & 0x01) == 0) { /* read */
117 if (copy_to_user((int *)arg, &data, sizeof(int))) {
118 return -EFAULT;
119 }
120 }
121 return 0;
122}
123
124static struct file_operations gio_fops = {
125 .owner = THIS_MODULE,
126 .open = gio_open, /* open */
127 .release = gio_close, /* release */
128 .ioctl = gio_ioctl, /* ioctl */
129};
130
131static int __init gio_init(void)
132{
133 int error;
134
135 printk(KERN_INFO "gio: driver initialized\n");
136
137 openCnt = 0;
138
139 if ((error = alloc_chrdev_region(&dev, 0, DEVCOUNT, "gio")) < 0) {
140 printk(KERN_ERR
141 "gio: Couldn't alloc_chrdev_region, error=%d\n",
142 error);
143 return 1;
144 }
145
146 cdev_p = cdev_alloc();
147 cdev_p->ops = &gio_fops;
148 error = cdev_add(cdev_p, dev, DEVCOUNT);
149 if (error) {
150 printk(KERN_ERR
151 "gio: Couldn't cdev_add, error=%d\n", error);
152 return 1;
153 }
154
155 return 0;
156}
157
158static void __exit gio_exit(void)
159{
160 cdev_del(cdev_p);
161 unregister_chrdev_region(dev, DEVCOUNT);
162}
163
164module_init(gio_init);
165module_exit(gio_exit);
166
167MODULE_LICENSE("GPL");
diff --git a/arch/sh/boards/landisk/io.c b/arch/sh/boards/landisk/io.c
deleted file mode 100644
index 92498b4947d5..000000000000
--- a/arch/sh/boards/landisk/io.c
+++ /dev/null
@@ -1,250 +0,0 @@
1/*
2 * arch/sh/boards/landisk/io.c
3 *
4 * Copyright (C) 2001 Ian da Silva, Jeremy Siegel
5 * Based largely on io_se.c.
6 *
7 * I/O routine for I-O Data Device, Inc. LANDISK.
8 *
9 * Initial version only to support LAN access; some
10 * placeholder code from io_landisk.c left in with the
11 * expectation of later SuperIO and PCMCIA access.
12 */
13/*
14 * modifed by kogiidena
15 * 2005.03.03
16 */
17#include <linux/kernel.h>
18#include <linux/types.h>
19#include <linux/pci.h>
20#include <asm/landisk/iodata_landisk.h>
21#include <asm/addrspace.h>
22#include <asm/io.h>
23
24extern void *area5_io_base; /* Area 5 I/O Base address */
25extern void *area6_io_base; /* Area 6 I/O Base address */
26
27static inline unsigned long port2adr(unsigned int port)
28{
29 if ((0x1f0 <= port && port < 0x1f8) || port == 0x3f6)
30 if (port == 0x3f6)
31 return ((unsigned long)area5_io_base + 0x2c);
32 else
33 return ((unsigned long)area5_io_base + PA_PIDE_OFFSET +
34 ((port - 0x1f0) << 1));
35 else if ((0x170 <= port && port < 0x178) || port == 0x376)
36 if (port == 0x376)
37 return ((unsigned long)area6_io_base + 0x2c);
38 else
39 return ((unsigned long)area6_io_base + PA_SIDE_OFFSET +
40 ((port - 0x170) << 1));
41 else
42 maybebadio((unsigned long)port);
43
44 return port;
45}
46
47/*
48 * General outline: remap really low stuff [eventually] to SuperIO,
49 * stuff in PCI IO space (at or above window at pci.h:PCIBIOS_MIN_IO)
50 * is mapped through the PCI IO window. Stuff with high bits (PXSEG)
51 * should be way beyond the window, and is used w/o translation for
52 * compatibility.
53 */
54u8 landisk_inb(unsigned long port)
55{
56 if (PXSEG(port))
57 return ctrl_inb(port);
58 else if (is_pci_ioaddr(port))
59 return ctrl_inb(pci_ioaddr(port));
60
61 return ctrl_inw(port2adr(port)) & 0xff;
62}
63
64u8 landisk_inb_p(unsigned long port)
65{
66 u8 v;
67
68 if (PXSEG(port))
69 v = ctrl_inb(port);
70 else if (is_pci_ioaddr(port))
71 v = ctrl_inb(pci_ioaddr(port));
72 else
73 v = ctrl_inw(port2adr(port)) & 0xff;
74
75 ctrl_delay();
76
77 return v;
78}
79
80u16 landisk_inw(unsigned long port)
81{
82 if (PXSEG(port))
83 return ctrl_inw(port);
84 else if (is_pci_ioaddr(port))
85 return ctrl_inw(pci_ioaddr(port));
86 else
87 maybebadio(port);
88
89 return 0;
90}
91
92u32 landisk_inl(unsigned long port)
93{
94 if (PXSEG(port))
95 return ctrl_inl(port);
96 else if (is_pci_ioaddr(port))
97 return ctrl_inl(pci_ioaddr(port));
98 else
99 maybebadio(port);
100
101 return 0;
102}
103
104void landisk_outb(u8 value, unsigned long port)
105{
106 if (PXSEG(port))
107 ctrl_outb(value, port);
108 else if (is_pci_ioaddr(port))
109 ctrl_outb(value, pci_ioaddr(port));
110 else
111 ctrl_outw(value, port2adr(port));
112}
113
114void landisk_outb_p(u8 value, unsigned long port)
115{
116 if (PXSEG(port))
117 ctrl_outb(value, port);
118 else if (is_pci_ioaddr(port))
119 ctrl_outb(value, pci_ioaddr(port));
120 else
121 ctrl_outw(value, port2adr(port));
122 ctrl_delay();
123}
124
125void landisk_outw(u16 value, unsigned long port)
126{
127 if (PXSEG(port))
128 ctrl_outw(value, port);
129 else if (is_pci_ioaddr(port))
130 ctrl_outw(value, pci_ioaddr(port));
131 else
132 maybebadio(port);
133}
134
135void landisk_outl(u32 value, unsigned long port)
136{
137 if (PXSEG(port))
138 ctrl_outl(value, port);
139 else if (is_pci_ioaddr(port))
140 ctrl_outl(value, pci_ioaddr(port));
141 else
142 maybebadio(port);
143}
144
145void landisk_insb(unsigned long port, void *dst, unsigned long count)
146{
147 volatile u16 *p;
148 u8 *buf = dst;
149
150 if (PXSEG(port)) {
151 while (count--)
152 *buf++ = *(volatile u8 *)port;
153 } else if (is_pci_ioaddr(port)) {
154 volatile u8 *bp = (volatile u8 *)pci_ioaddr(port);
155
156 while (count--)
157 *buf++ = *bp;
158 } else {
159 p = (volatile u16 *)port2adr(port);
160 while (count--)
161 *buf++ = *p & 0xff;
162 }
163}
164
165void landisk_insw(unsigned long port, void *dst, unsigned long count)
166{
167 volatile u16 *p;
168 u16 *buf = dst;
169
170 if (PXSEG(port))
171 p = (volatile u16 *)port;
172 else if (is_pci_ioaddr(port))
173 p = (volatile u16 *)pci_ioaddr(port);
174 else
175 p = (volatile u16 *)port2adr(port);
176 while (count--)
177 *buf++ = *p;
178}
179
180void landisk_insl(unsigned long port, void *dst, unsigned long count)
181{
182 u32 *buf = dst;
183
184 if (is_pci_ioaddr(port)) {
185 volatile u32 *p = (volatile u32 *)pci_ioaddr(port);
186
187 while (count--)
188 *buf++ = *p;
189 } else
190 maybebadio(port);
191}
192
193void landisk_outsb(unsigned long port, const void *src, unsigned long count)
194{
195 volatile u16 *p;
196 const u8 *buf = src;
197
198 if (PXSEG(port))
199 while (count--)
200 ctrl_outb(*buf++, port);
201 else if (is_pci_ioaddr(port)) {
202 volatile u8 *bp = (volatile u8 *)pci_ioaddr(port);
203
204 while (count--)
205 *bp = *buf++;
206 } else {
207 p = (volatile u16 *)port2adr(port);
208 while (count--)
209 *p = *buf++;
210 }
211}
212
213void landisk_outsw(unsigned long port, const void *src, unsigned long count)
214{
215 volatile u16 *p;
216 const u16 *buf = src;
217
218 if (PXSEG(port))
219 p = (volatile u16 *)port;
220 else if (is_pci_ioaddr(port))
221 p = (volatile u16 *)pci_ioaddr(port);
222 else
223 p = (volatile u16 *)port2adr(port);
224
225 while (count--)
226 *p = *buf++;
227}
228
229void landisk_outsl(unsigned long port, const void *src, unsigned long count)
230{
231 const u32 *buf = src;
232
233 if (is_pci_ioaddr(port)) {
234 volatile u32 *p = (volatile u32 *)pci_ioaddr(port);
235
236 while (count--)
237 *p = *buf++;
238 } else
239 maybebadio(port);
240}
241
242void __iomem *landisk_ioport_map(unsigned long port, unsigned int size)
243{
244 if (PXSEG(port))
245 return (void __iomem *)port;
246 else if (is_pci_ioaddr(port))
247 return (void __iomem *)pci_ioaddr(port);
248
249 return (void __iomem *)port2adr(port);
250}
diff --git a/arch/sh/boards/landisk/irq.c b/arch/sh/boards/landisk/irq.c
index 3eba6d086d7f..258649491d44 100644
--- a/arch/sh/boards/landisk/irq.c
+++ b/arch/sh/boards/landisk/irq.c
@@ -1,18 +1,16 @@
1/* 1/*
2 * arch/sh/boards/landisk/irq.c 2 * arch/sh/boards/landisk/irq.c
3 * 3 *
4 * I-O DATA Device, Inc. LANDISK Support
5 *
6 * Copyright (C) 2005-2007 kogiidena
7 *
4 * Copyright (C) 2001 Ian da Silva, Jeremy Siegel 8 * Copyright (C) 2001 Ian da Silva, Jeremy Siegel
5 * Based largely on io_se.c. 9 * Based largely on io_se.c.
6 * 10 *
7 * I/O routine for I-O Data Device, Inc. LANDISK. 11 * This file is subject to the terms and conditions of the GNU General Public
8 * 12 * License. See the file "COPYING" in the main directory of this archive
9 * Initial version only to support LAN access; some 13 * for more details.
10 * placeholder code from io_landisk.c left in with the
11 * expectation of later SuperIO and PCMCIA access.
12 */
13/*
14 * modified by kogiidena
15 * 2005.03.03
16 */ 14 */
17#include <linux/init.h> 15#include <linux/init.h>
18#include <linux/irq.h> 16#include <linux/irq.h>
@@ -20,71 +18,27 @@
20#include <linux/io.h> 18#include <linux/io.h>
21#include <asm/landisk/iodata_landisk.h> 19#include <asm/landisk/iodata_landisk.h>
22 20
23static void enable_landisk_irq(unsigned int irq);
24static void disable_landisk_irq(unsigned int irq);
25
26/* shutdown is same as "disable" */
27#define shutdown_landisk_irq disable_landisk_irq
28
29static void ack_landisk_irq(unsigned int irq);
30static void end_landisk_irq(unsigned int irq);
31
32static unsigned int startup_landisk_irq(unsigned int irq)
33{
34 enable_landisk_irq(irq);
35 return 0; /* never anything pending */
36}
37
38static void disable_landisk_irq(unsigned int irq) 21static void disable_landisk_irq(unsigned int irq)
39{ 22{
40 unsigned char val;
41 unsigned char mask = 0xff ^ (0x01 << (irq - 5)); 23 unsigned char mask = 0xff ^ (0x01 << (irq - 5));
42 24
43 /* Set the priority in IPR to 0 */ 25 ctrl_outb(ctrl_inb(PA_IMASK) & mask, PA_IMASK);
44 val = ctrl_inb(PA_IMASK);
45 val &= mask;
46 ctrl_outb(val, PA_IMASK);
47} 26}
48 27
49static void enable_landisk_irq(unsigned int irq) 28static void enable_landisk_irq(unsigned int irq)
50{ 29{
51 unsigned char val;
52 unsigned char value = (0x01 << (irq - 5)); 30 unsigned char value = (0x01 << (irq - 5));
53 31
54 /* Set priority in IPR back to original value */ 32 ctrl_outb(ctrl_inb(PA_IMASK) | value, PA_IMASK);
55 val = ctrl_inb(PA_IMASK);
56 val |= value;
57 ctrl_outb(val, PA_IMASK);
58}
59
60static void ack_landisk_irq(unsigned int irq)
61{
62 disable_landisk_irq(irq);
63}
64
65static void end_landisk_irq(unsigned int irq)
66{
67 if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS)))
68 enable_landisk_irq(irq);
69} 33}
70 34
71static struct hw_interrupt_type landisk_irq_type = { 35static struct irq_chip landisk_irq_chip __read_mostly = {
72 .typename = "LANDISK IRQ", 36 .name = "LANDISK",
73 .startup = startup_landisk_irq, 37 .mask = disable_landisk_irq,
74 .shutdown = shutdown_landisk_irq, 38 .unmask = enable_landisk_irq,
75 .enable = enable_landisk_irq, 39 .mask_ack = disable_landisk_irq,
76 .disable = disable_landisk_irq,
77 .ack = ack_landisk_irq,
78 .end = end_landisk_irq
79}; 40};
80 41
81static void make_landisk_irq(unsigned int irq)
82{
83 disable_irq_nosync(irq);
84 irq_desc[irq].chip = &landisk_irq_type;
85 disable_landisk_irq(irq);
86}
87
88/* 42/*
89 * Initialize IRQ setting 43 * Initialize IRQ setting
90 */ 44 */
@@ -92,6 +46,11 @@ void __init init_landisk_IRQ(void)
92{ 46{
93 int i; 47 int i;
94 48
95 for (i = 5; i < 14; i++) 49 for (i = 5; i < 14; i++) {
96 make_landisk_irq(i); 50 disable_irq_nosync(i);
51 set_irq_chip_and_handler_name(i, &landisk_irq_chip,
52 handle_level_irq, "level");
53 enable_landisk_irq(i);
54 }
55 ctrl_outb(0x00, PA_PWRINT_CLR);
97} 56}
diff --git a/arch/sh/boards/landisk/landisk_pwb.c b/arch/sh/boards/landisk/landisk_pwb.c
deleted file mode 100644
index 47a63c6617ed..000000000000
--- a/arch/sh/boards/landisk/landisk_pwb.c
+++ /dev/null
@@ -1,346 +0,0 @@
1/*
2 * arch/sh/boards/landisk/landisk_pwb.c -- driver for the Power control switch.
3 *
4 * This driver will also support the I-O DATA Device, Inc. LANDISK Board.
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 * Copylight (C) 2002 Atom Create Engineering Co., Ltd.
11 *
12 * LED control drive function added by kogiidena
13 */
14#include <linux/module.h>
15#include <linux/errno.h>
16#include <linux/signal.h>
17#include <linux/major.h>
18#include <linux/poll.h>
19#include <linux/init.h>
20#include <linux/delay.h>
21#include <linux/sched.h>
22#include <linux/timer.h>
23#include <linux/interrupt.h>
24
25#include <asm/system.h>
26#include <asm/io.h>
27#include <asm/irq.h>
28#include <asm/uaccess.h>
29#include <asm/landisk/iodata_landisk.h>
30
31#define SHUTDOWN_BTN_MINOR 1 /* Shutdown button device minor no. */
32#define LED_MINOR 21 /* LED minor no. */
33#define BTN_MINOR 22 /* BUTTON minor no. */
34#define GIO_MINOR 40 /* GIO minor no. */
35
36static int openCnt;
37static int openCntLED;
38static int openCntGio;
39static int openCntBtn;
40static int landisk_btn;
41static int landisk_btnctrlpid;
42/*
43 * Functions prototypes
44 */
45
46static int gio_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
47 unsigned long arg);
48
49static int swdrv_open(struct inode *inode, struct file *filp)
50{
51 int minor;
52
53 minor = MINOR(inode->i_rdev);
54 filp->private_data = (void *)minor;
55
56 if (minor == SHUTDOWN_BTN_MINOR) {
57 if (openCnt > 0) {
58 return -EALREADY;
59 } else {
60 openCnt++;
61 return 0;
62 }
63 } else if (minor == LED_MINOR) {
64 if (openCntLED > 0) {
65 return -EALREADY;
66 } else {
67 openCntLED++;
68 return 0;
69 }
70 } else if (minor == BTN_MINOR) {
71 if (openCntBtn > 0) {
72 return -EALREADY;
73 } else {
74 openCntBtn++;
75 return 0;
76 }
77 } else if (minor == GIO_MINOR) {
78 if (openCntGio > 0) {
79 return -EALREADY;
80 } else {
81 openCntGio++;
82 return 0;
83 }
84 }
85 return -ENOENT;
86
87}
88
89static int swdrv_close(struct inode *inode, struct file *filp)
90{
91 int minor;
92
93 minor = MINOR(inode->i_rdev);
94 if (minor == SHUTDOWN_BTN_MINOR) {
95 openCnt--;
96 } else if (minor == LED_MINOR) {
97 openCntLED--;
98 } else if (minor == BTN_MINOR) {
99 openCntBtn--;
100 } else if (minor == GIO_MINOR) {
101 openCntGio--;
102 }
103 return 0;
104}
105
106static int swdrv_read(struct file *filp, char *buff, size_t count,
107 loff_t * ppos)
108{
109 int minor;
110 minor = (int)(filp->private_data);
111
112 if (!access_ok(VERIFY_WRITE, (void *)buff, count))
113 return -EFAULT;
114
115 if (minor == SHUTDOWN_BTN_MINOR) {
116 if (landisk_btn & 0x10) {
117 put_user(1, buff);
118 return 1;
119 } else {
120 return 0;
121 }
122 }
123 return 0;
124}
125
126static int swdrv_write(struct file *filp, const char *buff, size_t count,
127 loff_t * ppos)
128{
129 int minor;
130 minor = (int)(filp->private_data);
131
132 if (minor == SHUTDOWN_BTN_MINOR) {
133 return count;
134 }
135 return count;
136}
137
138static irqreturn_t sw_interrupt(int irq, void *dev_id)
139{
140 landisk_btn = (0x0ff & (~ctrl_inb(PA_STATUS)));
141 disable_irq(IRQ_BUTTON);
142 disable_irq(IRQ_POWER);
143 ctrl_outb(0x00, PA_PWRINT_CLR);
144
145 if (landisk_btnctrlpid != 0) {
146 kill_proc(landisk_btnctrlpid, SIGUSR1, 1);
147 landisk_btnctrlpid = 0;
148 }
149
150 return IRQ_HANDLED;
151}
152
153static const struct file_operations swdrv_fops = {
154 .read = swdrv_read, /* read */
155 .write = swdrv_write, /* write */
156 .open = swdrv_open, /* open */
157 .release = swdrv_close, /* release */
158 .ioctl = gio_ioctl, /* ioctl */
159
160};
161
162static char banner[] __initdata =
163 KERN_INFO "LANDISK and USL-5P Button, LED and GIO driver initialized\n";
164
165int __init swdrv_init(void)
166{
167 int error;
168
169 printk("%s", banner);
170
171 openCnt = 0;
172 openCntLED = 0;
173 openCntBtn = 0;
174 openCntGio = 0;
175 landisk_btn = 0;
176 landisk_btnctrlpid = 0;
177
178 if ((error = register_chrdev(SHUTDOWN_BTN_MAJOR, "swdrv", &swdrv_fops))) {
179 printk(KERN_ERR
180 "Button, LED and GIO driver:Couldn't register driver, error=%d\n",
181 error);
182 return 1;
183 }
184
185 if (request_irq(IRQ_POWER, sw_interrupt, 0, "SHUTDOWNSWITCH", NULL)) {
186 printk(KERN_ERR "Unable to get IRQ 11.\n");
187 return 1;
188 }
189 if (request_irq(IRQ_BUTTON, sw_interrupt, 0, "USL-5P BUTTON", NULL)) {
190 printk(KERN_ERR "Unable to get IRQ 12.\n");
191 return 1;
192 }
193 ctrl_outb(0x00, PA_PWRINT_CLR);
194
195 return 0;
196}
197
198module_init(swdrv_init);
199
200/*
201 * gio driver
202 *
203 */
204
205#include <asm/landisk/gio.h>
206
207static int gio_ioctl(struct inode *inode, struct file *filp,
208 unsigned int cmd, unsigned long arg)
209{
210 int minor;
211 unsigned int data, mask;
212 static unsigned int addr = 0;
213
214 minor = (int)(filp->private_data);
215
216 /* access control */
217 if (minor == GIO_MINOR) {
218 ;
219 } else if (minor == LED_MINOR) {
220 if (((cmd & 0x0ff) >= 9) && ((cmd & 0x0ff) < 20)) {
221 ;
222 } else {
223 return -EINVAL;
224 }
225 } else if (minor == BTN_MINOR) {
226 if (((cmd & 0x0ff) >= 20) && ((cmd & 0x0ff) < 30)) {
227 ;
228 } else {
229 return -EINVAL;
230 }
231 } else {
232 return -EINVAL;
233 }
234
235 if (cmd & 0x01) { /* write */
236 if (copy_from_user(&data, (int *)arg, sizeof(int))) {
237 return -EFAULT;
238 }
239 }
240
241 switch (cmd) {
242 case GIODRV_IOCSGIOSETADDR: /* addres set */
243 addr = data;
244 break;
245
246 case GIODRV_IOCSGIODATA1: /* write byte */
247 ctrl_outb((unsigned char)(0x0ff & data), addr);
248 break;
249
250 case GIODRV_IOCSGIODATA2: /* write word */
251 if (addr & 0x01) {
252 return -EFAULT;
253 }
254 ctrl_outw((unsigned short int)(0x0ffff & data), addr);
255 break;
256
257 case GIODRV_IOCSGIODATA4: /* write long */
258 if (addr & 0x03) {
259 return -EFAULT;
260 }
261 ctrl_outl(data, addr);
262 break;
263
264 case GIODRV_IOCGGIODATA1: /* read byte */
265 data = ctrl_inb(addr);
266 break;
267
268 case GIODRV_IOCGGIODATA2: /* read word */
269 if (addr & 0x01) {
270 return -EFAULT;
271 }
272 data = ctrl_inw(addr);
273 break;
274
275 case GIODRV_IOCGGIODATA4: /* read long */
276 if (addr & 0x03) {
277 return -EFAULT;
278 }
279 data = ctrl_inl(addr);
280 break;
281 case GIODRV_IOCSGIO_LED: /* write */
282 mask = ((data & 0x00ffffff) << 8)
283 | ((data & 0x0000ffff) << 16)
284 | ((data & 0x000000ff) << 24);
285 landisk_ledparam = data & (~mask);
286 if (landisk_arch == 0) { /* arch == landisk */
287 landisk_ledparam &= 0x03030303;
288 mask = (~(landisk_ledparam >> 22)) & 0x000c;
289 landisk_ledparam |= mask;
290 } else { /* arch == usl-5p */
291 mask = (landisk_ledparam >> 24) & 0x0001;
292 landisk_ledparam |= mask;
293 landisk_ledparam &= 0x007f7f7f;
294 }
295 landisk_ledparam |= 0x80;
296 break;
297 case GIODRV_IOCGGIO_LED: /* read */
298 data = landisk_ledparam;
299 if (landisk_arch == 0) { /* arch == landisk */
300 data &= 0x03030303;
301 } else { /* arch == usl-5p */
302 ;
303 }
304 data &= (~0x080);
305 break;
306 case GIODRV_IOCSGIO_BUZZER: /* write */
307 landisk_buzzerparam = data;
308 landisk_ledparam |= 0x80;
309 break;
310 case GIODRV_IOCGGIO_LANDISK: /* read */
311 data = landisk_arch & 0x01;
312 break;
313 case GIODRV_IOCGGIO_BTN: /* read */
314 data = (0x0ff & ctrl_inb(PA_PWRINT_CLR));
315 data <<= 8;
316 data |= (0x0ff & ctrl_inb(PA_IMASK));
317 data <<= 8;
318 data |= (0x0ff & landisk_btn);
319 data <<= 8;
320 data |= (0x0ff & (~ctrl_inb(PA_STATUS)));
321 break;
322 case GIODRV_IOCSGIO_BTNPID: /* write */
323 landisk_btnctrlpid = data;
324 landisk_btn = 0;
325 if (irq_desc[IRQ_BUTTON].depth) {
326 enable_irq(IRQ_BUTTON);
327 }
328 if (irq_desc[IRQ_POWER].depth) {
329 enable_irq(IRQ_POWER);
330 }
331 break;
332 case GIODRV_IOCGGIO_BTNPID: /* read */
333 data = landisk_btnctrlpid;
334 break;
335 default:
336 return -EFAULT;
337 break;
338 }
339
340 if ((cmd & 0x01) == 0) { /* read */
341 if (copy_to_user((int *)arg, &data, sizeof(int))) {
342 return -EFAULT;
343 }
344 }
345 return 0;
346}
diff --git a/arch/sh/boards/landisk/psw.c b/arch/sh/boards/landisk/psw.c
new file mode 100644
index 000000000000..5a9b70b5decb
--- /dev/null
+++ b/arch/sh/boards/landisk/psw.c
@@ -0,0 +1,143 @@
1/*
2 * arch/sh/boards/landisk/psw.c
3 *
4 * push switch support for LANDISK and USL-5P
5 *
6 * Copyright (C) 2006-2007 Paul Mundt
7 * Copyright (C) 2007 kogiidena
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/io.h>
14#include <linux/init.h>
15#include <linux/interrupt.h>
16#include <linux/platform_device.h>
17#include <asm/landisk/iodata_landisk.h>
18#include <asm/push-switch.h>
19
20static irqreturn_t psw_irq_handler(int irq, void *arg)
21{
22 struct platform_device *pdev = arg;
23 struct push_switch *psw = platform_get_drvdata(pdev);
24 struct push_switch_platform_info *psw_info = pdev->dev.platform_data;
25 unsigned int sw_value;
26 int ret = 0;
27
28 sw_value = (0x0ff & (~ctrl_inb(PA_STATUS)));
29
30 /* Nothing to do if there's no state change */
31 if (psw->state) {
32 ret = 1;
33 goto out;
34 }
35
36 /* Figure out who raised it */
37 if (sw_value & (1 << psw_info->bit)) {
38 psw->state = 1;
39 mod_timer(&psw->debounce, jiffies + 50);
40 ret = 1;
41 }
42
43out:
44 /* Clear the switch IRQs */
45 ctrl_outb(0x00, PA_PWRINT_CLR);
46
47 return IRQ_RETVAL(ret);
48}
49
50static struct resource psw_power_resources[] = {
51 [0] = {
52 .start = IRQ_POWER,
53 .flags = IORESOURCE_IRQ,
54 },
55};
56
57static struct resource psw_usl5p_resources[] = {
58 [0] = {
59 .start = IRQ_BUTTON,
60 .flags = IORESOURCE_IRQ,
61 },
62};
63
64static struct push_switch_platform_info psw_power_platform_data = {
65 .name = "psw_power",
66 .bit = 4,
67 .irq_flags = IRQF_SHARED,
68 .irq_handler = psw_irq_handler,
69};
70
71static struct push_switch_platform_info psw1_platform_data = {
72 .name = "psw1",
73 .bit = 0,
74 .irq_flags = IRQF_SHARED,
75 .irq_handler = psw_irq_handler,
76};
77
78static struct push_switch_platform_info psw2_platform_data = {
79 .name = "psw2",
80 .bit = 2,
81 .irq_flags = IRQF_SHARED,
82 .irq_handler = psw_irq_handler,
83};
84
85static struct push_switch_platform_info psw3_platform_data = {
86 .name = "psw3",
87 .bit = 1,
88 .irq_flags = IRQF_SHARED,
89 .irq_handler = psw_irq_handler,
90};
91
92static struct platform_device psw_power_switch_device = {
93 .name = "push-switch",
94 .id = 0,
95 .num_resources = ARRAY_SIZE(psw_power_resources),
96 .resource = psw_power_resources,
97 .dev = {
98 .platform_data = &psw_power_platform_data,
99 },
100};
101
102static struct platform_device psw1_switch_device = {
103 .name = "push-switch",
104 .id = 1,
105 .num_resources = ARRAY_SIZE(psw_usl5p_resources),
106 .resource = psw_usl5p_resources,
107 .dev = {
108 .platform_data = &psw1_platform_data,
109 },
110};
111
112static struct platform_device psw2_switch_device = {
113 .name = "push-switch",
114 .id = 2,
115 .num_resources = ARRAY_SIZE(psw_usl5p_resources),
116 .resource = psw_usl5p_resources,
117 .dev = {
118 .platform_data = &psw2_platform_data,
119 },
120};
121
122static struct platform_device psw3_switch_device = {
123 .name = "push-switch",
124 .id = 3,
125 .num_resources = ARRAY_SIZE(psw_usl5p_resources),
126 .resource = psw_usl5p_resources,
127 .dev = {
128 .platform_data = &psw3_platform_data,
129 },
130};
131
132static struct platform_device *psw_devices[] = {
133 &psw_power_switch_device,
134 &psw1_switch_device,
135 &psw2_switch_device,
136 &psw3_switch_device,
137};
138
139static int __init psw_init(void)
140{
141 return platform_add_devices(psw_devices, ARRAY_SIZE(psw_devices));
142}
143module_init(psw_init);
diff --git a/arch/sh/boards/landisk/rtc.c b/arch/sh/boards/landisk/rtc.c
deleted file mode 100644
index 0a9a2a2ad05b..000000000000
--- a/arch/sh/boards/landisk/rtc.c
+++ /dev/null
@@ -1,91 +0,0 @@
1/*
2 * arch/sh/boards/landisk/rtc.c -- RTC support
3 *
4 * Copyright (C) 2000 Philipp Rumpf <prumpf@tux.org>
5 * Copyright (C) 1999 Tetsuya Okada & Niibe Yutaka
6 */
7/*
8 * modifed by kogiidena
9 * 2005.09.16
10 */
11#include <linux/init.h>
12#include <linux/kernel.h>
13#include <linux/sched.h>
14#include <linux/time.h>
15#include <linux/delay.h>
16#include <linux/spinlock.h>
17#include <linux/bcd.h>
18#include <asm/rtc.h>
19
20extern spinlock_t rtc_lock;
21
22extern void
23rs5c313_set_cmos_time(unsigned int BCD_yr, unsigned int BCD_mon,
24 unsigned int BCD_day, unsigned int BCD_hr,
25 unsigned int BCD_min, unsigned int BCD_sec);
26
27extern unsigned long
28rs5c313_get_cmos_time(unsigned int *BCD_yr, unsigned int *BCD_mon,
29 unsigned int *BCD_day, unsigned int *BCD_hr,
30 unsigned int *BCD_min, unsigned int *BCD_sec);
31
32void landisk_rtc_gettimeofday(struct timespec *tv)
33{
34 unsigned int BCD_yr, BCD_mon, BCD_day, BCD_hr, BCD_min, BCD_sec;
35 unsigned long flags;
36
37 spin_lock_irqsave(&rtc_lock, flags);
38 tv->tv_sec = rs5c313_get_cmos_time
39 (&BCD_yr, &BCD_mon, &BCD_day, &BCD_hr, &BCD_min, &BCD_sec);
40 tv->tv_nsec = 0;
41 spin_unlock_irqrestore(&rtc_lock, flags);
42}
43
44int landisk_rtc_settimeofday(const time_t secs)
45{
46 int retval = 0;
47 int real_seconds, real_minutes, cmos_minutes;
48 unsigned long flags;
49 unsigned long nowtime = secs;
50 unsigned int BCD_yr, BCD_mon, BCD_day, BCD_hr, BCD_min, BCD_sec;
51
52 spin_lock_irqsave(&rtc_lock, flags);
53
54 rs5c313_get_cmos_time
55 (&BCD_yr, &BCD_mon, &BCD_day, &BCD_hr, &BCD_min, &BCD_sec);
56 cmos_minutes = BCD_min;
57 BCD_TO_BIN(cmos_minutes);
58
59 /*
60 * since we're only adjusting minutes and seconds,
61 * don't interfere with hour overflow. This avoids
62 * messing with unknown time zones but requires your
63 * RTC not to be off by more than 15 minutes
64 */
65 real_seconds = nowtime % 60;
66 real_minutes = nowtime / 60;
67 if (((abs(real_minutes - cmos_minutes) + 15) / 30) & 1)
68 real_minutes += 30; /* correct for half hour time zone */
69 real_minutes %= 60;
70
71 if (abs(real_minutes - cmos_minutes) < 30) {
72 BIN_TO_BCD(real_seconds);
73 BIN_TO_BCD(real_minutes);
74 rs5c313_set_cmos_time(BCD_yr, BCD_mon, BCD_day, BCD_hr,
75 real_minutes, real_seconds);
76 } else {
77 printk(KERN_WARNING
78 "set_rtc_time: can't update from %d to %d\n",
79 cmos_minutes, real_minutes);
80 retval = -1;
81 }
82
83 spin_unlock_irqrestore(&rtc_lock, flags);
84 return retval;
85}
86
87void landisk_time_init(void)
88{
89 rtc_sh_get_time = landisk_rtc_gettimeofday;
90 rtc_sh_set_time = landisk_rtc_settimeofday;
91}
diff --git a/arch/sh/boards/landisk/setup.c b/arch/sh/boards/landisk/setup.c
index 122d69962637..a83a5d9587bb 100644
--- a/arch/sh/boards/landisk/setup.c
+++ b/arch/sh/boards/landisk/setup.c
@@ -1,144 +1,90 @@
1/* 1/*
2 * arch/sh/boards/landisk/setup.c 2 * arch/sh/boards/landisk/setup.c
3 * 3 *
4 * Copyright (C) 2000 Kazumoto Kojima
5 * Copyright (C) 2002 Paul Mundt
6 *
7 * I-O DATA Device, Inc. LANDISK Support. 4 * I-O DATA Device, Inc. LANDISK Support.
8 * 5 *
9 * Modified for LANDISK by 6 * Copyright (C) 2000 Kazumoto Kojima
10 * Atom Create Engineering Co., Ltd. 2002. 7 * Copyright (C) 2002 Paul Mundt
11 * 8 * Copylight (C) 2002 Atom Create Engineering Co., Ltd.
12 * modifed by kogiidena 9 * Copyright (C) 2005-2007 kogiidena
13 * 2005.09.16
14 * 10 *
15 * This file is subject to the terms and conditions of the GNU General Public 11 * This file is subject to the terms and conditions of the GNU General Public
16 * License. See the file "COPYING" in the main directory of this archive 12 * License. See the file "COPYING" in the main directory of this archive
17 * for more details. 13 * for more details.
18 */ 14 */
19#include <linux/init.h> 15#include <linux/init.h>
16#include <linux/platform_device.h>
17#include <linux/pata_platform.h>
20#include <linux/pm.h> 18#include <linux/pm.h>
21#include <linux/mm.h> 19#include <linux/mm.h>
22#include <asm/machvec.h> 20#include <asm/machvec.h>
23#include <asm/rtc.h>
24#include <asm/landisk/iodata_landisk.h> 21#include <asm/landisk/iodata_landisk.h>
25#include <asm/io.h> 22#include <asm/io.h>
26 23
27void landisk_time_init(void);
28void init_landisk_IRQ(void); 24void init_landisk_IRQ(void);
29 25
30int landisk_ledparam;
31int landisk_buzzerparam;
32int landisk_arch;
33
34/* cycle the led's in the clasic knightrider/sun pattern */
35static void heartbeat_landisk(void)
36{
37 static unsigned int cnt = 0, blink = 0x00, period = 25;
38 volatile u8 *p = (volatile u8 *)PA_LED;
39 char data;
40
41 if ((landisk_ledparam & 0x080) == 0)
42 return;
43
44 cnt += 1;
45
46 if (cnt < period)
47 return;
48
49 cnt = 0;
50 blink++;
51
52 data = (blink & 0x01) ? (landisk_ledparam >> 16) : 0;
53 data |= (blink & 0x02) ? (landisk_ledparam >> 8) : 0;
54 data |= landisk_ledparam;
55
56 /* buzzer */
57 if (landisk_buzzerparam & 0x1) {
58 data |= 0x80;
59 } else {
60 data &= 0x7f;
61 }
62 *p = data;
63
64 if (((landisk_ledparam & 0x007f7f00) == 0) &&
65 (landisk_buzzerparam == 0))
66 landisk_ledparam &= (~0x0080);
67
68 landisk_buzzerparam >>= 1;
69}
70
71static void landisk_power_off(void) 26static void landisk_power_off(void)
72{ 27{
73 ctrl_outb(0x01, PA_SHUTDOWN); 28 ctrl_outb(0x01, PA_SHUTDOWN);
74} 29}
75 30
76static void check_usl5p(void) 31static struct resource cf_ide_resources[3];
77{
78 volatile u8 *p = (volatile u8 *)PA_LED;
79 u8 tmp1, tmp2;
80 32
81 tmp1 = *p; 33static struct pata_platform_info pata_info = {
82 *p = 0x40; 34 .ioport_shift = 1,
83 tmp2 = *p; 35};
84 *p = tmp1;
85 36
86 landisk_arch = (tmp2 == 0x40); 37static struct platform_device cf_ide_device = {
87 if (landisk_arch == 1) { 38 .name = "pata_platform",
88 /* arch == usl-5p */ 39 .id = -1,
89 landisk_ledparam = 0x00000380; 40 .num_resources = ARRAY_SIZE(cf_ide_resources),
90 landisk_ledparam |= (tmp1 & 0x07c); 41 .resource = cf_ide_resources,
91 } else { 42 .dev = {
92 /* arch == landisk */ 43 .platform_data = &pata_info,
93 landisk_ledparam = 0x02000180; 44 },
94 landisk_ledparam |= 0x04; 45};
95 }
96}
97 46
98void *area5_io_base; 47static struct platform_device *landisk_devices[] __initdata = {
99void *area6_io_base; 48 &cf_ide_device,
49};
100 50
101static int __init landisk_cf_init(void) 51static int __init landisk_devices_setup(void)
102{ 52{
103 pgprot_t prot; 53 pgprot_t prot;
104 unsigned long paddrbase, psize; 54 unsigned long paddrbase;
55 void *cf_ide_base;
105 56
106 /* open I/O area window */ 57 /* open I/O area window */
107 paddrbase = virt_to_phys((void *)PA_AREA5_IO); 58 paddrbase = virt_to_phys((void *)PA_AREA5_IO);
108 psize = PAGE_SIZE;
109 prot = PAGE_KERNEL_PCC(1, _PAGE_PCC_IO16); 59 prot = PAGE_KERNEL_PCC(1, _PAGE_PCC_IO16);
110 area5_io_base = p3_ioremap(paddrbase, psize, prot.pgprot); 60 cf_ide_base = p3_ioremap(paddrbase, PAGE_SIZE, prot.pgprot);
111 if (!area5_io_base) { 61 if (!cf_ide_base) {
112 printk("allocate_cf_area : can't open CF I/O window!\n"); 62 printk("allocate_cf_area : can't open CF I/O window!\n");
113 return -ENOMEM; 63 return -ENOMEM;
114 } 64 }
115 65
116 paddrbase = virt_to_phys((void *)PA_AREA6_IO); 66 /* IDE cmd address : 0x1f0-0x1f7 and 0x3f6 */
117 psize = PAGE_SIZE; 67 cf_ide_resources[0].start = (unsigned long)cf_ide_base + 0x40;
118 prot = PAGE_KERNEL_PCC(0, _PAGE_PCC_IO16); 68 cf_ide_resources[0].end = (unsigned long)cf_ide_base + 0x40 + 0x0f;
119 area6_io_base = p3_ioremap(paddrbase, psize, prot.pgprot); 69 cf_ide_resources[0].flags = IORESOURCE_IO;
120 if (!area6_io_base) { 70 cf_ide_resources[1].start = (unsigned long)cf_ide_base + 0x2c;
121 printk("allocate_cf_area : can't open HDD I/O window!\n"); 71 cf_ide_resources[1].end = (unsigned long)cf_ide_base + 0x2c + 0x03;
122 return -ENOMEM; 72 cf_ide_resources[1].flags = IORESOURCE_IO;
123 } 73 cf_ide_resources[2].start = IRQ_FATA;
124 74 cf_ide_resources[2].flags = IORESOURCE_IRQ;
125 printk(KERN_INFO "Allocate Area5/6 success.\n"); 75
126 76 return platform_add_devices(landisk_devices,
127 /* XXX : do we need attribute and common-memory area also? */ 77 ARRAY_SIZE(landisk_devices));
128
129 return 0;
130} 78}
131 79
80__initcall(landisk_devices_setup);
81
132static void __init landisk_setup(char **cmdline_p) 82static void __init landisk_setup(char **cmdline_p)
133{ 83{
134 device_initcall(landisk_cf_init); 84 /* LED ON */
135 85 ctrl_outb(ctrl_inb(PA_LED) | 0x03, PA_LED);
136 landisk_buzzerparam = 0;
137 check_usl5p();
138 86
139 printk(KERN_INFO "I-O DATA DEVICE, INC. \"LANDISK Series\" support.\n"); 87 printk(KERN_INFO "I-O DATA DEVICE, INC. \"LANDISK Series\" support.\n");
140
141 board_time_init = landisk_time_init;
142 pm_power_off = landisk_power_off; 88 pm_power_off = landisk_power_off;
143} 89}
144 90
@@ -148,29 +94,6 @@ static void __init landisk_setup(char **cmdline_p)
148struct sh_machine_vector mv_landisk __initmv = { 94struct sh_machine_vector mv_landisk __initmv = {
149 .mv_name = "LANDISK", 95 .mv_name = "LANDISK",
150 .mv_setup = landisk_setup, 96 .mv_setup = landisk_setup,
151 .mv_nr_irqs = 72,
152 .mv_inb = landisk_inb,
153 .mv_inw = landisk_inw,
154 .mv_inl = landisk_inl,
155 .mv_outb = landisk_outb,
156 .mv_outw = landisk_outw,
157 .mv_outl = landisk_outl,
158 .mv_inb_p = landisk_inb_p,
159 .mv_inw_p = landisk_inw,
160 .mv_inl_p = landisk_inl,
161 .mv_outb_p = landisk_outb_p,
162 .mv_outw_p = landisk_outw,
163 .mv_outl_p = landisk_outl,
164 .mv_insb = landisk_insb,
165 .mv_insw = landisk_insw,
166 .mv_insl = landisk_insl,
167 .mv_outsb = landisk_outsb,
168 .mv_outsw = landisk_outsw,
169 .mv_outsl = landisk_outsl,
170 .mv_ioport_map = landisk_ioport_map,
171 .mv_init_irq = init_landisk_IRQ, 97 .mv_init_irq = init_landisk_IRQ,
172#ifdef CONFIG_HEARTBEAT
173 .mv_heartbeat = heartbeat_landisk,
174#endif
175}; 98};
176ALIAS_MV(landisk) 99ALIAS_MV(landisk)
diff --git a/arch/sh/boards/lboxre2/Makefile b/arch/sh/boards/lboxre2/Makefile
new file mode 100644
index 000000000000..e9ed140c06f6
--- /dev/null
+++ b/arch/sh/boards/lboxre2/Makefile
@@ -0,0 +1,5 @@
1#
2# Makefile for the L-BOX RE2 specific parts of the kernel
3# Copyright (c) 2007 Nobuhiro Iwamatsu
4
5obj-y := setup.o irq.o
diff --git a/arch/sh/boards/lboxre2/irq.c b/arch/sh/boards/lboxre2/irq.c
new file mode 100644
index 000000000000..5a1c3bbe7b50
--- /dev/null
+++ b/arch/sh/boards/lboxre2/irq.c
@@ -0,0 +1,31 @@
1/*
2 * linux/arch/sh/boards/lboxre2/irq.c
3 *
4 * Copyright (C) 2007 Nobuhiro Iwamatsu
5 *
6 * NTT COMWARE L-BOX RE2 Support.
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 */
13#include <linux/init.h>
14#include <linux/interrupt.h>
15#include <linux/irq.h>
16#include <asm/irq.h>
17#include <asm/io.h>
18#include <asm/lboxre2.h>
19
20/*
21 * Initialize IRQ setting
22 */
23void __init init_lboxre2_IRQ(void)
24{
25 make_imask_irq(IRQ_CF1);
26 make_imask_irq(IRQ_CF0);
27 make_imask_irq(IRQ_INTD);
28 make_imask_irq(IRQ_ETH1);
29 make_imask_irq(IRQ_ETH0);
30 make_imask_irq(IRQ_INTA);
31}
diff --git a/arch/sh/boards/lboxre2/setup.c b/arch/sh/boards/lboxre2/setup.c
new file mode 100644
index 000000000000..4e20f7c63bf3
--- /dev/null
+++ b/arch/sh/boards/lboxre2/setup.c
@@ -0,0 +1,85 @@
1/*
2 * linux/arch/sh/boards/lbox/setup.c
3 *
4 * Copyright (C) 2007 Nobuhiro Iwamatsu
5 *
6 * NTT COMWARE L-BOX RE2 Support
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 */
13
14#include <linux/init.h>
15#include <linux/platform_device.h>
16#include <linux/pata_platform.h>
17#include <asm/machvec.h>
18#include <asm/addrspace.h>
19#include <asm/lboxre2.h>
20#include <asm/io.h>
21
22static struct resource cf_ide_resources[] = {
23 [0] = {
24 .start = 0x1f0,
25 .end = 0x1f0 + 8 ,
26 .flags = IORESOURCE_IO,
27 },
28 [1] = {
29 .start = 0x1f0 + 0x206,
30 .end = 0x1f0 +8 + 0x206 + 8,
31 .flags = IORESOURCE_IO,
32 },
33 [2] = {
34 .start = IRQ_CF0,
35 .flags = IORESOURCE_IRQ,
36 },
37};
38
39static struct platform_device cf_ide_device = {
40 .name = "pata_platform",
41 .id = -1,
42 .num_resources = ARRAY_SIZE(cf_ide_resources),
43 .resource = cf_ide_resources,
44};
45
46static struct platform_device *lboxre2_devices[] __initdata = {
47 &cf_ide_device,
48};
49
50static int __init lboxre2_devices_setup(void)
51{
52 u32 cf0_io_base; /* Boot CF base address */
53 pgprot_t prot;
54 unsigned long paddrbase, psize;
55
56 /* open I/O area window */
57 paddrbase = virt_to_phys((void*)PA_AREA5_IO);
58 psize = PAGE_SIZE;
59 prot = PAGE_KERNEL_PCC( 1 , _PAGE_PCC_IO16);
60 cf0_io_base = (u32)p3_ioremap(paddrbase, psize, prot.pgprot);
61 if (!cf0_io_base) {
62 printk(KERN_ERR "%s : can't open CF I/O window!\n" , __func__ );
63 return -ENOMEM;
64 }
65
66 cf_ide_resources[0].start += cf0_io_base ;
67 cf_ide_resources[0].end += cf0_io_base ;
68 cf_ide_resources[1].start += cf0_io_base ;
69 cf_ide_resources[1].end += cf0_io_base ;
70
71 return platform_add_devices(lboxre2_devices,
72 ARRAY_SIZE(lboxre2_devices));
73
74}
75device_initcall(lboxre2_devices_setup);
76
77/*
78 * The Machine Vector
79 */
80struct sh_machine_vector mv_lboxre2 __initmv = {
81 .mv_name = "L-BOX RE2",
82 .mv_nr_irqs = 72,
83 .mv_init_irq = init_lboxre2_IRQ,
84};
85ALIAS_MV(lboxre2)
diff --git a/arch/sh/boards/renesas/r7780rp/Kconfig b/arch/sh/boards/renesas/r7780rp/Kconfig
index c26d9813d239..9fb11641fe13 100644
--- a/arch/sh/boards/renesas/r7780rp/Kconfig
+++ b/arch/sh/boards/renesas/r7780rp/Kconfig
@@ -1,14 +1,24 @@
1if SH_R7780RP 1if SH_HIGHLANDER
2 2
3menu "R7780RP options" 3choice
4 prompt "Highlander options"
5 default SH_R7780MP
6
7config SH_R7780RP
8 bool "R7780RP-1 board support"
9 select CPU_SUBTYPE_SH7780
4 10
5config SH_R7780MP 11config SH_R7780MP
6 bool "R7780MP board support" 12 bool "R7780MP board support"
7 default y 13 select CPU_SUBTYPE_SH7780
8 help 14 help
9 Selecting this option will enable support for the mass-production 15 Selecting this option will enable support for the mass-production
10 version of the R7780RP. If in doubt, say Y. 16 version of the R7780RP. If in doubt, say Y.
11 17
12endmenu 18config SH_R7785RP
19 bool "R7785RP board support"
20 select CPU_SUBTYPE_SH7785
21
22endchoice
13 23
14endif 24endif
diff --git a/arch/sh/boards/renesas/r7780rp/Makefile b/arch/sh/boards/renesas/r7780rp/Makefile
index ed5f5a9a3b3e..609e5d50dde8 100644
--- a/arch/sh/boards/renesas/r7780rp/Makefile
+++ b/arch/sh/boards/renesas/r7780rp/Makefile
@@ -1,7 +1,7 @@
1# 1#
2# Makefile for the R7780RP-1 specific parts of the kernel 2# Makefile for the R7780RP-1 specific parts of the kernel
3# 3#
4 4irqinit-y := irq-r7780rp.o
5obj-y := setup.o irq.o 5irqinit-$(CONFIG_SH_R7785RP) := irq-r7785rp.o
6
7obj-$(CONFIG_PUSH_SWITCH) += psw.o 6obj-$(CONFIG_PUSH_SWITCH) += psw.o
7obj-y := setup.o irq.o $(irqinit-y)
diff --git a/arch/sh/boards/renesas/r7780rp/irq-r7780rp.c b/arch/sh/boards/renesas/r7780rp/irq-r7780rp.c
new file mode 100644
index 000000000000..f5f358746c9e
--- /dev/null
+++ b/arch/sh/boards/renesas/r7780rp/irq-r7780rp.c
@@ -0,0 +1,21 @@
1/*
2 * Renesas Solutions Highlander R7780RP-1 Support.
3 *
4 * Copyright (C) 2002 Atom Create Engineering Co., Ltd.
5 * Copyright (C) 2006 Paul Mundt
6 *
7 * This file is subject to the terms and conditions of the GNU General Public
8 * License. See the file "COPYING" in the main directory of this archive
9 * for more details.
10 */
11#include <linux/init.h>
12#include <asm/io.h>
13#include <asm/r7780rp.h>
14
15void __init highlander_init_irq(void)
16{
17 int i;
18
19 for (i = 0; i < 15; i++)
20 make_r7780rp_irq(i);
21}
diff --git a/arch/sh/boards/renesas/r7780rp/irq-r7785rp.c b/arch/sh/boards/renesas/r7780rp/irq-r7785rp.c
new file mode 100644
index 000000000000..dd6ec4ce44dc
--- /dev/null
+++ b/arch/sh/boards/renesas/r7780rp/irq-r7785rp.c
@@ -0,0 +1,29 @@
1/*
2 * Renesas Solutions Highlander R7780RP-1 Support.
3 *
4 * Copyright (C) 2002 Atom Create Engineering Co., Ltd.
5 * Copyright (C) 2006 Paul Mundt
6 *
7 * This file is subject to the terms and conditions of the GNU General Public
8 * License. See the file "COPYING" in the main directory of this archive
9 * for more details.
10 */
11#include <linux/init.h>
12#include <asm/io.h>
13#include <asm/r7780rp.h>
14
15void __init highlander_init_irq(void)
16{
17 ctrl_outw(0x0000, PA_IRLSSR1); /* FPGA IRLSSR1(CF_CD clear) */
18
19 /* Setup the FPGA IRL */
20 ctrl_outw(0x0000, PA_IRLPRA); /* FPGA IRLA */
21 ctrl_outw(0xe598, PA_IRLPRB); /* FPGA IRLB */
22 ctrl_outw(0x7060, PA_IRLPRC); /* FPGA IRLC */
23 ctrl_outw(0x0000, PA_IRLPRD); /* FPGA IRLD */
24 ctrl_outw(0x4321, PA_IRLPRE); /* FPGA IRLE */
25 ctrl_outw(0x0000, PA_IRLPRF); /* FPGA IRLF */
26
27 make_r7780rp_irq(1); /* CF card */
28 make_r7780rp_irq(10); /* On-board ethernet */
29}
diff --git a/arch/sh/boards/renesas/r7780rp/irq.c b/arch/sh/boards/renesas/r7780rp/irq.c
index cc381e197783..e0b8eb52f376 100644
--- a/arch/sh/boards/renesas/r7780rp/irq.c
+++ b/arch/sh/boards/renesas/r7780rp/irq.c
@@ -14,10 +14,12 @@
14#include <linux/io.h> 14#include <linux/io.h>
15#include <asm/r7780rp.h> 15#include <asm/r7780rp.h>
16 16
17#ifdef CONFIG_SH_R7780MP 17#ifdef CONFIG_SH_R7780RP
18static int mask_pos[] = {12, 11, 9, 14, 15, 8, 13, 6, 5, 4, 3, 2, 0, 0, 1, 0};
19#else
20static int mask_pos[] = {15, 14, 13, 12, 11, 10, 9, 8, 7, 5, 6, 4, 0, 1, 2, 0}; 18static int mask_pos[] = {15, 14, 13, 12, 11, 10, 9, 8, 7, 5, 6, 4, 0, 1, 2, 0};
19#elif defined(CONFIG_SH_R7780MP)
20static int mask_pos[] = {12, 11, 9, 14, 15, 8, 13, 6, 5, 4, 3, 2, 0, 0, 1, 0};
21#elif defined(CONFIG_SH_R7785RP)
22static int mask_pos[] = {2, 11, 2, 2, 2, 2, 9, 8, 7, 5, 10, 2, 2, 2, 2, 2};
21#endif 23#endif
22 24
23static void enable_r7780rp_irq(unsigned int irq) 25static void enable_r7780rp_irq(unsigned int irq)
@@ -40,17 +42,10 @@ static struct irq_chip r7780rp_irq_chip __read_mostly = {
40 .mask_ack = disable_r7780rp_irq, 42 .mask_ack = disable_r7780rp_irq,
41}; 43};
42 44
43/* 45void make_r7780rp_irq(unsigned int irq)
44 * Initialize IRQ setting
45 */
46void __init init_r7780rp_IRQ(void)
47{ 46{
48 int i; 47 disable_irq_nosync(irq);
49 48 set_irq_chip_and_handler_name(irq, &r7780rp_irq_chip,
50 for (i = 0; i < 15; i++) { 49 handle_level_irq, "level");
51 disable_irq_nosync(i); 50 enable_r7780rp_irq(irq);
52 set_irq_chip_and_handler_name(i, &r7780rp_irq_chip,
53 handle_level_irq, "level");
54 enable_r7780rp_irq(i);
55 }
56} 51}
diff --git a/arch/sh/boards/renesas/r7780rp/setup.c b/arch/sh/boards/renesas/r7780rp/setup.c
index 2faba6679e64..0727ef92f2b3 100644
--- a/arch/sh/boards/renesas/r7780rp/setup.c
+++ b/arch/sh/boards/renesas/r7780rp/setup.c
@@ -1,10 +1,13 @@
1/* 1/*
2 * arch/sh/boards/renesas/r7780rp/setup.c 2 * arch/sh/boards/renesas/r7780rp/setup.c
3 * 3 *
4 * Renesas Solutions Highlander Support.
5 *
4 * Copyright (C) 2002 Atom Create Engineering Co., Ltd. 6 * Copyright (C) 2002 Atom Create Engineering Co., Ltd.
5 * Copyright (C) 2005 - 2007 Paul Mundt 7 * Copyright (C) 2005 - 2007 Paul Mundt
6 * 8 *
7 * Renesas Solutions Highlander R7780RP-1 Support. 9 * This contains support for the R7780RP-1, R7780MP, and R7785RP
10 * Highlander modules.
8 * 11 *
9 * This file is subject to the terms and conditions of the GNU General Public 12 * 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 13 * License. See the file "COPYING" in the main directory of this archive
@@ -18,32 +21,6 @@
18#include <asm/clock.h> 21#include <asm/clock.h>
19#include <asm/io.h> 22#include <asm/io.h>
20 23
21extern void init_r7780rp_IRQ(void);
22
23static struct resource m66596_usb_host_resources[] = {
24 [0] = {
25 .start = 0xa4800000,
26 .end = 0xa4ffffff,
27 .flags = IORESOURCE_MEM,
28 },
29 [1] = {
30 .start = 6, /* irq number */
31 .end = 6,
32 .flags = IORESOURCE_IRQ,
33 },
34};
35
36static struct platform_device m66596_usb_host_device = {
37 .name = "m66596-hcd",
38 .id = 0,
39 .dev = {
40 .dma_mask = NULL, /* don't use dma */
41 .coherent_dma_mask = 0xffffffff,
42 },
43 .num_resources = ARRAY_SIZE(m66596_usb_host_resources),
44 .resource = m66596_usb_host_resources,
45};
46
47static struct resource cf_ide_resources[] = { 24static struct resource cf_ide_resources[] = {
48 [0] = { 25 [0] = {
49 .start = PA_AREA5_IO + 0x1000, 26 .start = PA_AREA5_IO + 0x1000,
@@ -56,10 +33,10 @@ static struct resource cf_ide_resources[] = {
56 .flags = IORESOURCE_MEM, 33 .flags = IORESOURCE_MEM,
57 }, 34 },
58 [2] = { 35 [2] = {
59#ifdef CONFIG_SH_R7780MP 36#ifdef CONFIG_SH_R7780RP
60 .start = 1,
61#else
62 .start = 4, 37 .start = 4,
38#else
39 .start = 1,
63#endif 40#endif
64 .flags = IORESOURCE_IRQ, 41 .flags = IORESOURCE_IRQ,
65 }, 42 },
@@ -92,15 +69,18 @@ static struct resource heartbeat_resources[] = {
92static struct platform_device heartbeat_device = { 69static struct platform_device heartbeat_device = {
93 .name = "heartbeat", 70 .name = "heartbeat",
94 .id = -1, 71 .id = -1,
72
73 /* R7785RP has a slightly more sensible FPGA.. */
74#ifndef CONFIG_SH_R7785RP
95 .dev = { 75 .dev = {
96 .platform_data = heartbeat_bit_pos, 76 .platform_data = heartbeat_bit_pos,
97 }, 77 },
78#endif
98 .num_resources = ARRAY_SIZE(heartbeat_resources), 79 .num_resources = ARRAY_SIZE(heartbeat_resources),
99 .resource = heartbeat_resources, 80 .resource = heartbeat_resources,
100}; 81};
101 82
102static struct platform_device *r7780rp_devices[] __initdata = { 83static struct platform_device *r7780rp_devices[] __initdata = {
103 &m66596_usb_host_device,
104 &cf_ide_device, 84 &cf_ide_device,
105 &heartbeat_device, 85 &heartbeat_device,
106}; 86};
@@ -110,18 +90,19 @@ static int __init r7780rp_devices_setup(void)
110 return platform_add_devices(r7780rp_devices, 90 return platform_add_devices(r7780rp_devices,
111 ARRAY_SIZE(r7780rp_devices)); 91 ARRAY_SIZE(r7780rp_devices));
112} 92}
93device_initcall(r7780rp_devices_setup);
113 94
114/* 95/*
115 * Platform specific clocks 96 * Platform specific clocks
116 */ 97 */
117static void ivdr_clk_enable(struct clk *clk) 98static void ivdr_clk_enable(struct clk *clk)
118{ 99{
119 ctrl_outw(ctrl_inw(PA_IVDRCTL) | (1 << 8), PA_IVDRCTL); 100 ctrl_outw(ctrl_inw(PA_IVDRCTL) | (1 << IVDR_CK_ON), PA_IVDRCTL);
120} 101}
121 102
122static void ivdr_clk_disable(struct clk *clk) 103static void ivdr_clk_disable(struct clk *clk)
123{ 104{
124 ctrl_outw(ctrl_inw(PA_IVDRCTL) & ~(1 << 8), PA_IVDRCTL); 105 ctrl_outw(ctrl_inw(PA_IVDRCTL) & ~(1 << IVDR_CK_ON), PA_IVDRCTL);
125} 106}
126 107
127static struct clk_ops ivdr_clk_ops = { 108static struct clk_ops ivdr_clk_ops = {
@@ -140,22 +121,22 @@ static struct clk *r7780rp_clocks[] = {
140 121
141static void r7780rp_power_off(void) 122static void r7780rp_power_off(void)
142{ 123{
143#ifdef CONFIG_SH_R7780MP 124 if (mach_is_r7780mp() || mach_is_r7785rp())
144 ctrl_outw(0x0001, PA_POFF); 125 ctrl_outw(0x0001, PA_POFF);
145#endif
146} 126}
147 127
148/* 128/*
149 * Initialize the board 129 * Initialize the board
150 */ 130 */
151static void __init r7780rp_setup(char **cmdline_p) 131static void __init highlander_setup(char **cmdline_p)
152{ 132{
153 u16 ver = ctrl_inw(PA_VERREG); 133 u16 ver = ctrl_inw(PA_VERREG);
154 int i; 134 int i;
155 135
156 device_initcall(r7780rp_devices_setup); 136 printk(KERN_INFO "Renesas Solutions Highlander %s support.\n",
157 137 mach_is_r7780rp() ? "R7780RP-1" :
158 printk(KERN_INFO "Renesas Solutions Highlander R7780RP-1 support.\n"); 138 mach_is_r7780mp() ? "R7780MP" :
139 "R7785RP");
159 140
160 printk(KERN_INFO "Board version: %d (revision %d), " 141 printk(KERN_INFO "Board version: %d (revision %d), "
161 "FPGA version: %d (revision %d)\n", 142 "FPGA version: %d (revision %d)\n",
@@ -173,9 +154,10 @@ static void __init r7780rp_setup(char **cmdline_p)
173 } 154 }
174 155
175 ctrl_outw(0x0000, PA_OBLED); /* Clear LED. */ 156 ctrl_outw(0x0000, PA_OBLED); /* Clear LED. */
176#ifndef CONFIG_SH_R7780MP 157
177 ctrl_outw(0x0001, PA_SDPOW); /* SD Power ON */ 158 if (mach_is_r7780rp())
178#endif 159 ctrl_outw(0x0001, PA_SDPOW); /* SD Power ON */
160
179 ctrl_outw(ctrl_inw(PA_IVDRCTL) | 0x01, PA_IVDRCTL); /* Si13112 */ 161 ctrl_outw(ctrl_inw(PA_IVDRCTL) | 0x01, PA_IVDRCTL); /* Si13112 */
180 162
181 pm_power_off = r7780rp_power_off; 163 pm_power_off = r7780rp_power_off;
@@ -184,10 +166,10 @@ static void __init r7780rp_setup(char **cmdline_p)
184/* 166/*
185 * The Machine Vector 167 * The Machine Vector
186 */ 168 */
187struct sh_machine_vector mv_r7780rp __initmv = { 169struct sh_machine_vector mv_highlander __initmv = {
188 .mv_name = "Highlander R7780RP-1", 170 .mv_name = "Highlander",
189 .mv_setup = r7780rp_setup,
190 .mv_nr_irqs = 109, 171 .mv_nr_irqs = 109,
191 .mv_init_irq = init_r7780rp_IRQ, 172 .mv_setup = highlander_setup,
173 .mv_init_irq = highlander_init_irq,
192}; 174};
193ALIAS_MV(r7780rp) 175ALIAS_MV(highlander)
diff --git a/arch/sh/boards/se/770x/io.c b/arch/sh/boards/se/770x/io.c
index 9941949331ab..c4550473d4c3 100644
--- a/arch/sh/boards/se/770x/io.c
+++ b/arch/sh/boards/se/770x/io.c
@@ -27,6 +27,8 @@ int sh_pcic_io_dummy;
27static inline volatile __u16 * 27static inline volatile __u16 *
28port2adr(unsigned int port) 28port2adr(unsigned int port)
29{ 29{
30 if (port & 0xff000000)
31 return ( volatile __u16 *) port;
30 if (port >= 0x2000) 32 if (port >= 0x2000)
31 return (volatile __u16 *) (PA_MRSHPC + (port - 0x2000)); 33 return (volatile __u16 *) (PA_MRSHPC + (port - 0x2000));
32 else if (port >= 0x1000) 34 else if (port >= 0x1000)
diff --git a/arch/sh/boards/se/770x/irq.c b/arch/sh/boards/se/770x/irq.c
index 307ca5da6232..c8eccff77a04 100644
--- a/arch/sh/boards/se/770x/irq.c
+++ b/arch/sh/boards/se/770x/irq.c
@@ -55,23 +55,34 @@ void make_se770x_irq(struct ipr_data *table, unsigned int nr_irqs)
55} 55}
56 56
57static struct ipr_data se770x_ipr_map[] = { 57static struct ipr_data se770x_ipr_map[] = {
58 /*
59 * Super I/O (Just mimic PC):
60 * 1: keyboard
61 * 3: serial 0
62 * 4: serial 1
63 * 5: printer
64 * 6: floppy
65 * 8: rtc
66 * 12: mouse
67 * 14: ide0
68 */
58#if defined(CONFIG_CPU_SUBTYPE_SH7705) 69#if defined(CONFIG_CPU_SUBTYPE_SH7705)
59 /* This is default value */ 70 /* This is default value */
60 { 0xf-0x2, 0, 8, 0x2 , BCR_ILCRA}, 71 { 13, 0, 8, 0x0f-13 ,BCR_ILCRA},
61 { 0xf-0xa, 0, 4, 0xa , BCR_ILCRA}, 72 { 5 , 0, 4, 0x0f- 5 ,BCR_ILCRA},
62 { 0xf-0x5, 0, 0, 0x5 , BCR_ILCRB}, 73 { 10, 0, 0, 0x0f-10, BCR_ILCRB},
63 { 0xf-0x8, 0, 4, 0x8 , BCR_ILCRC}, 74 { 7 , 0, 4, 0x0f- 7, BCR_ILCRC},
64 { 0xf-0xc, 0, 0, 0xc , BCR_ILCRC}, 75 { 3 , 0, 0, 0x0f- 3, BCR_ILCRC},
65 { 0xf-0xe, 0, 12, 0xe , BCR_ILCRD}, 76 { 1 , 0, 12, 0x0f- 1, BCR_ILCRD},
66 { 0xf-0x3, 0, 4, 0x3 , BCR_ILCRD}, /* LAN */ 77 { 12, 0, 4, 0x0f-12, BCR_ILCRD}, /* LAN */
67 { 0xf-0xd, 0, 8, 0xd , BCR_ILCRE}, 78 { 2 , 0, 8, 0x0f- 2, BCR_ILCRE}, /* PCIRQ2 */
68 { 0xf-0x9, 0, 4, 0x9 , BCR_ILCRE}, 79 { 6 , 0, 4, 0x0f- 6, BCR_ILCRE}, /* PCIRQ1 */
69 { 0xf-0x1, 0, 0, 0x1 , BCR_ILCRE}, 80 { 14, 0, 0, 0x0f-14, BCR_ILCRE}, /* PCIRQ0 */
70 { 0xf-0xf, 0, 12, 0xf , BCR_ILCRF}, 81 { 0 , 0, 12, 0x0f , BCR_ILCRF},
71 { 0xf-0xb, 0, 4, 0xb , BCR_ILCRF}, 82 { 4 , 0, 4, 0x0f- 4, BCR_ILCRF},
72 { 0xf-0x7, 0, 12, 0x7 , BCR_ILCRG}, 83 { 8 , 0, 12, 0x0f- 8, BCR_ILCRG},
73 { 0xf-0x6, 0, 8, 0x6 , BCR_ILCRG}, 84 { 9 , 0, 8, 0x0f- 9, BCR_ILCRG},
74 { 0xf-0x4, 0, 4, 0x4 , BCR_ILCRG}, 85 { 11, 0, 4, 0x0f-11, BCR_ILCRG},
75#else 86#else
76 { 14, 0, 8, 0x0f-14 ,BCR_ILCRA}, 87 { 14, 0, 8, 0x0f-14 ,BCR_ILCRA},
77 { 12, 0, 4, 0x0f-12 ,BCR_ILCRA}, 88 { 12, 0, 4, 0x0f-12 ,BCR_ILCRA},
@@ -81,8 +92,10 @@ static struct ipr_data se770x_ipr_map[] = {
81 { 4, 0, 4, 0x0f- 4 ,BCR_ILCRC}, 92 { 4, 0, 4, 0x0f- 4 ,BCR_ILCRC},
82 { 3, 0, 0, 0x0f- 3 ,BCR_ILCRC}, 93 { 3, 0, 0, 0x0f- 3 ,BCR_ILCRC},
83 { 1, 0, 12, 0x0f- 1 ,BCR_ILCRD}, 94 { 1, 0, 12, 0x0f- 1 ,BCR_ILCRD},
95#if defined(CONFIG_STNIC)
84 /* ST NIC */ 96 /* ST NIC */
85 { 10, 0, 4, 0x0f-10 ,BCR_ILCRD}, /* LAN */ 97 { 10, 0, 4, 0x0f-10 ,BCR_ILCRD}, /* LAN */
98#endif
86 /* MRSHPC IRQs setting */ 99 /* MRSHPC IRQs setting */
87 { 0, 0, 12, 0x0f- 0 ,BCR_ILCRE}, /* PCIRQ3 */ 100 { 0, 0, 12, 0x0f- 0 ,BCR_ILCRE}, /* PCIRQ3 */
88 { 11, 0, 8, 0x0f-11 ,BCR_ILCRE}, /* PCIRQ2 */ 101 { 11, 0, 8, 0x0f-11 ,BCR_ILCRE}, /* PCIRQ2 */
@@ -100,18 +113,6 @@ static struct ipr_data se770x_ipr_map[] = {
100 */ 113 */
101void __init init_se_IRQ(void) 114void __init init_se_IRQ(void)
102{ 115{
103 /*
104 * Super I/O (Just mimic PC):
105 * 1: keyboard
106 * 3: serial 0
107 * 4: serial 1
108 * 5: printer
109 * 6: floppy
110 * 8: rtc
111 * 12: mouse
112 * 14: ide0
113 */
114#if defined(CONFIG_CPU_SUBTYPE_SH7705)
115 /* Disable all interrupts */ 116 /* Disable all interrupts */
116 ctrl_outw(0, BCR_ILCRA); 117 ctrl_outw(0, BCR_ILCRA);
117 ctrl_outw(0, BCR_ILCRB); 118 ctrl_outw(0, BCR_ILCRB);
@@ -120,6 +121,6 @@ void __init init_se_IRQ(void)
120 ctrl_outw(0, BCR_ILCRE); 121 ctrl_outw(0, BCR_ILCRE);
121 ctrl_outw(0, BCR_ILCRF); 122 ctrl_outw(0, BCR_ILCRF);
122 ctrl_outw(0, BCR_ILCRG); 123 ctrl_outw(0, BCR_ILCRG);
123#endif 124
124 make_se770x_irq(se770x_ipr_map, ARRAY_SIZE(se770x_ipr_map)); 125 make_se770x_irq(se770x_ipr_map, ARRAY_SIZE(se770x_ipr_map));
125} 126}
diff --git a/arch/sh/boards/se/770x/setup.c b/arch/sh/boards/se/770x/setup.c
index 45cbc36b9fb7..17a2631de3ba 100644
--- a/arch/sh/boards/se/770x/setup.c
+++ b/arch/sh/boards/se/770x/setup.c
@@ -63,6 +63,31 @@ static void __init smsc_setup(char **cmdline_p)
63 outb_p(CONFIG_EXIT, CONFIG_PORT); 63 outb_p(CONFIG_EXIT, CONFIG_PORT);
64} 64}
65 65
66
67static struct resource cf_ide_resources[] = {
68 [0] = {
69 .start = PA_MRSHPC_IO + 0x1f0,
70 .end = PA_MRSHPC_IO + 0x1f0 + 8,
71 .flags = IORESOURCE_MEM,
72 },
73 [1] = {
74 .start = PA_MRSHPC_IO + 0x1f0 + 0x206,
75 .end = PA_MRSHPC_IO + 0x1f0 +8 + 0x206 + 8,
76 .flags = IORESOURCE_MEM,
77 },
78 [2] = {
79 .start = IRQ_CFCARD,
80 .flags = IORESOURCE_IRQ,
81 },
82};
83
84static struct platform_device cf_ide_device = {
85 .name = "pata_platform",
86 .id = -1,
87 .num_resources = ARRAY_SIZE(cf_ide_resources),
88 .resource = cf_ide_resources,
89};
90
66static unsigned char heartbeat_bit_pos[] = { 8, 9, 10, 11, 12, 13, 14, 15 }; 91static unsigned char heartbeat_bit_pos[] = { 8, 9, 10, 11, 12, 13, 14, 15 };
67 92
68static struct resource heartbeat_resources[] = { 93static struct resource heartbeat_resources[] = {
@@ -85,13 +110,14 @@ static struct platform_device heartbeat_device = {
85 110
86static struct platform_device *se_devices[] __initdata = { 111static struct platform_device *se_devices[] __initdata = {
87 &heartbeat_device, 112 &heartbeat_device,
113 &cf_ide_device,
88}; 114};
89 115
90static int __init se_devices_setup(void) 116static int __init se_devices_setup(void)
91{ 117{
92 return platform_add_devices(se_devices, ARRAY_SIZE(se_devices)); 118 return platform_add_devices(se_devices, ARRAY_SIZE(se_devices));
93} 119}
94__initcall(se_devices_setup); 120device_initcall(se_devices_setup);
95 121
96/* 122/*
97 * The Machine Vector 123 * The Machine Vector
@@ -107,6 +133,8 @@ struct sh_machine_vector mv_se __initmv = {
107 .mv_nr_irqs = 61, 133 .mv_nr_irqs = 61,
108#elif defined(CONFIG_CPU_SUBTYPE_SH7705) 134#elif defined(CONFIG_CPU_SUBTYPE_SH7705)
109 .mv_nr_irqs = 86, 135 .mv_nr_irqs = 86,
136#elif defined(CONFIG_CPU_SUBTYPE_SH7710) || defined(CONFIG_CPU_SUBTYPE_SH7712)
137 .mv_nr_irqs = 104,
110#endif 138#endif
111 139
112 .mv_inb = se_inb, 140 .mv_inb = se_inb,
diff --git a/arch/sh/boards/se/7722/Makefile b/arch/sh/boards/se/7722/Makefile
new file mode 100644
index 000000000000..8694373389e5
--- /dev/null
+++ b/arch/sh/boards/se/7722/Makefile
@@ -0,0 +1,10 @@
1#
2# Makefile for the HITACHI UL SolutionEngine 7722 specific parts of the kernel
3#
4# This file is subject to the terms and conditions of the GNU General Public
5# License. See the file "COPYING" in the main directory of this archive
6# for more details.
7#
8#
9
10obj-y := setup.o irq.o
diff --git a/arch/sh/boards/se/7722/irq.c b/arch/sh/boards/se/7722/irq.c
new file mode 100644
index 000000000000..099e5deb77f8
--- /dev/null
+++ b/arch/sh/boards/se/7722/irq.c
@@ -0,0 +1,101 @@
1/*
2 * linux/arch/sh/boards/se/7722/irq.c
3 *
4 * Copyright (C) 2007 Nobuhiro Iwamatsu
5 *
6 * Hitachi UL SolutionEngine 7722 Support.
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/irq.h>
14#include <linux/interrupt.h>
15#include <asm/irq.h>
16#include <asm/io.h>
17#include <asm/se7722.h>
18
19#define INTC_INTMSK0 0xFFD00044
20#define INTC_INTMSKCLR0 0xFFD00064
21
22static void disable_se7722_irq(unsigned int irq)
23{
24 struct ipr_data *p = get_irq_chip_data(irq);
25 ctrl_outw( ctrl_inw( p->addr ) | p->priority , p->addr );
26}
27
28static void enable_se7722_irq(unsigned int irq)
29{
30 struct ipr_data *p = get_irq_chip_data(irq);
31 ctrl_outw( ctrl_inw( p->addr ) & ~p->priority , p->addr );
32}
33
34static struct irq_chip se7722_irq_chip __read_mostly = {
35 .name = "SE7722",
36 .mask = disable_se7722_irq,
37 .unmask = enable_se7722_irq,
38 .mask_ack = disable_se7722_irq,
39};
40
41static struct ipr_data ipr_irq_table[] = {
42 /* irq ,idx,sft, priority , addr */
43 { MRSHPC_IRQ0 , 0 , 0 , MRSHPC_BIT0 , IRQ01_MASK } ,
44 { MRSHPC_IRQ1 , 0 , 0 , MRSHPC_BIT1 , IRQ01_MASK } ,
45 { MRSHPC_IRQ2 , 0 , 0 , MRSHPC_BIT2 , IRQ01_MASK } ,
46 { MRSHPC_IRQ3 , 0 , 0 , MRSHPC_BIT3 , IRQ01_MASK } ,
47 { SMC_IRQ , 0 , 0 , SMC_BIT , IRQ01_MASK } ,
48 { EXT_IRQ , 0 , 0 , EXT_BIT , IRQ01_MASK } ,
49};
50
51int se7722_irq_demux(int irq)
52{
53
54 if ((irq == IRQ0_IRQ)||(irq == IRQ1_IRQ)) {
55 volatile unsigned short intv =
56 *(volatile unsigned short *)IRQ01_STS;
57 if (irq == IRQ0_IRQ){
58 if(intv & SMC_BIT ) {
59 return SMC_IRQ;
60 } else if(intv & USB_BIT) {
61 return USB_IRQ;
62 } else {
63 printk("intv =%04x\n", intv);
64 return SMC_IRQ;
65 }
66 } else if(irq == IRQ1_IRQ){
67 if(intv & MRSHPC_BIT0) {
68 return MRSHPC_IRQ0;
69 } else if(intv & MRSHPC_BIT1) {
70 return MRSHPC_IRQ1;
71 } else if(intv & MRSHPC_BIT2) {
72 return MRSHPC_IRQ2;
73 } else if(intv & MRSHPC_BIT3) {
74 return MRSHPC_IRQ3;
75 } else {
76 printk("BIT_EXTENTION =%04x\n", intv);
77 return EXT_IRQ;
78 }
79 }
80 }
81 return irq;
82
83}
84/*
85 * Initialize IRQ setting
86 */
87void __init init_se7722_IRQ(void)
88{
89 int i = 0;
90 ctrl_outw(0x2000, 0xb03fffec); /* mrshpc irq enable */
91 ctrl_outl((3 << ((7 - 0) * 4))|(3 << ((7 - 1) * 4)), INTC_INTPRI0); /* irq0 pri=3,irq1,pri=3 */
92 ctrl_outw((2 << ((7 - 0) * 2))|(2 << ((7 - 1) * 2)), INTC_ICR1); /* irq0,1 low-level irq */
93
94 for (i = 0; i < ARRAY_SIZE(ipr_irq_table); i++) {
95 disable_irq_nosync(ipr_irq_table[i].irq);
96 set_irq_chip_and_handler_name( ipr_irq_table[i].irq, &se7722_irq_chip,
97 handle_level_irq, "level");
98 set_irq_chip_data( ipr_irq_table[i].irq, &ipr_irq_table[i] );
99 disable_se7722_irq(ipr_irq_table[i].irq);
100 }
101}
diff --git a/arch/sh/boards/se/7722/setup.c b/arch/sh/boards/se/7722/setup.c
new file mode 100644
index 000000000000..636ca6c987e0
--- /dev/null
+++ b/arch/sh/boards/se/7722/setup.c
@@ -0,0 +1,148 @@
1/*
2 * linux/arch/sh/boards/se/7722/setup.c
3 *
4 * Copyright (C) 2007 Nobuhiro Iwamatsu
5 *
6 * Hitachi UL SolutionEngine 7722 Support.
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 */
13#include <linux/init.h>
14#include <linux/platform_device.h>
15#include <linux/pata_platform.h>
16#include <asm/machvec.h>
17#include <asm/se7722.h>
18#include <asm/io.h>
19
20/* Heartbeat */
21static unsigned char heartbeat_bit_pos[] = { 0, 1, 2, 3, 4, 5, 6, 7 };
22
23static struct resource heartbeat_resources[] = {
24 [0] = {
25 .start = PA_LED,
26 .end = PA_LED + ARRAY_SIZE(heartbeat_bit_pos) - 1,
27 .flags = IORESOURCE_MEM,
28 },
29};
30
31static struct platform_device heartbeat_device = {
32 .name = "heartbeat",
33 .id = -1,
34 .dev = {
35 .platform_data = heartbeat_bit_pos,
36 },
37 .num_resources = ARRAY_SIZE(heartbeat_resources),
38 .resource = heartbeat_resources,
39};
40
41/* SMC91x */
42static struct resource smc91x_eth_resources[] = {
43 [0] = {
44 .name = "smc91x-regs" ,
45 .start = PA_LAN + 0x300,
46 .end = PA_LAN + 0x300 + 0x10 ,
47 .flags = IORESOURCE_MEM,
48 },
49 [1] = {
50 .start = SMC_IRQ,
51 .end = SMC_IRQ,
52 .flags = IORESOURCE_IRQ,
53 },
54};
55
56static struct platform_device smc91x_eth_device = {
57 .name = "smc91x",
58 .id = 0,
59 .dev = {
60 .dma_mask = NULL, /* don't use dma */
61 .coherent_dma_mask = 0xffffffff,
62 },
63 .num_resources = ARRAY_SIZE(smc91x_eth_resources),
64 .resource = smc91x_eth_resources,
65};
66
67static struct resource cf_ide_resources[] = {
68 [0] = {
69 .start = PA_MRSHPC_IO + 0x1f0,
70 .end = PA_MRSHPC_IO + 0x1f0 + 8 ,
71 .flags = IORESOURCE_IO,
72 },
73 [1] = {
74 .start = PA_MRSHPC_IO + 0x1f0 + 0x206,
75 .end = PA_MRSHPC_IO + 0x1f0 +8 + 0x206 + 8,
76 .flags = IORESOURCE_IO,
77 },
78 [2] = {
79 .start = MRSHPC_IRQ0,
80 .flags = IORESOURCE_IRQ,
81 },
82};
83
84static struct platform_device cf_ide_device = {
85 .name = "pata_platform",
86 .id = -1,
87 .num_resources = ARRAY_SIZE(cf_ide_resources),
88 .resource = cf_ide_resources,
89};
90
91static struct platform_device *se7722_devices[] __initdata = {
92 &heartbeat_device,
93 &smc91x_eth_device,
94 &cf_ide_device,
95};
96
97static int __init se7722_devices_setup(void)
98{
99 return platform_add_devices(se7722_devices,
100 ARRAY_SIZE(se7722_devices));
101}
102device_initcall(se7722_devices_setup);
103
104static void __init se7722_setup(char **cmdline_p)
105{
106 ctrl_outw(0x010D, FPGA_OUT); /* FPGA */
107
108 ctrl_outl(0x00051001, MSTPCR0);
109 ctrl_outl(0x00000000, MSTPCR1);
110 /* KEYSC, VOU, BEU, CEU, VEU, VPU, LCDC */
111 ctrl_outl(0xffffbfC0, MSTPCR2);
112
113 ctrl_outw(0x0000, PORT_PECR); /* PORT E 1 = IRQ5 ,E 0 = BS */
114 ctrl_outw(0x1000, PORT_PJCR); /* PORT J 1 = IRQ1,J 0 =IRQ0 */
115
116 /* LCDC I/O */
117 ctrl_outw(0x0020, PORT_PSELD);
118
119 /* SIOF1*/
120 ctrl_outw(0x0003, PORT_PSELB);
121 ctrl_outw(0xe000, PORT_PSELC);
122 ctrl_outw(0x0000, PORT_PKCR);
123
124 /* LCDC */
125 ctrl_outw(0x4020, PORT_PHCR);
126 ctrl_outw(0x0000, PORT_PLCR);
127 ctrl_outw(0x0000, PORT_PMCR);
128 ctrl_outw(0x0002, PORT_PRCR);
129 ctrl_outw(0x0000, PORT_PXCR); /* LCDC,CS6A */
130
131 /* KEYSC */
132 ctrl_outw(0x0A10, PORT_PSELA); /* BS,SHHID2 */
133 ctrl_outw(0x0000, PORT_PYCR);
134 ctrl_outw(0x0000, PORT_PZCR);
135}
136
137/*
138 * The Machine Vector
139 */
140struct sh_machine_vector mv_se7722 __initmv = {
141 .mv_name = "Solution Engine 7722" ,
142 .mv_setup = se7722_setup ,
143 .mv_nr_irqs = 109 ,
144 .mv_init_irq = init_se7722_IRQ,
145 .mv_irq_demux = se7722_irq_demux,
146
147};
148ALIAS_MV(se7722)
diff --git a/arch/sh/boards/se/7751/setup.c b/arch/sh/boards/se/7751/setup.c
index e3feae6ec0bf..770defed9c4a 100644
--- a/arch/sh/boards/se/7751/setup.c
+++ b/arch/sh/boards/se/7751/setup.c
@@ -14,153 +14,6 @@
14#include <asm/se7751.h> 14#include <asm/se7751.h>
15#include <asm/io.h> 15#include <asm/io.h>
16 16
17void init_7751se_IRQ(void);
18
19#ifdef CONFIG_SH_KGDB
20#include <asm/kgdb.h>
21static int kgdb_uart_setup(void);
22static struct kgdb_sermap kgdb_uart_sermap =
23{ "ttyS", 0, kgdb_uart_setup, NULL };
24#endif
25
26/*
27 * Initialize the board
28 */
29static void __init sh7751se_setup(char **cmdline_p)
30{
31 /* Call init_smsc() replacement to set up SuperIO. */
32 /* XXX: RTC setting comes here */
33#ifdef CONFIG_SH_KGDB
34 kgdb_register_sermap(&kgdb_uart_sermap);
35#endif
36}
37
38/*********************************************************************
39 * Currently a hack (e.g. does not interact well w/serial.c, lots of *
40 * hardcoded stuff) but may be useful if SCI/F needs debugging. *
41 * Mostly copied from x86 code (see files asm-i386/kgdb_local.h and *
42 * arch/i386/lib/kgdb_serial.c). *
43 *********************************************************************/
44
45#ifdef CONFIG_SH_KGDB
46#include <linux/types.h>
47#include <linux/serial.h>
48#include <linux/serialP.h>
49#include <linux/serial_reg.h>
50
51#define COM1_PORT 0x3f8 /* Base I/O address */
52#define COM1_IRQ 4 /* IRQ not used yet */
53#define COM2_PORT 0x2f8 /* Base I/O address */
54#define COM2_IRQ 3 /* IRQ not used yet */
55
56#define SB_CLOCK 1843200 /* Serial baud clock */
57#define SB_BASE (SB_CLOCK/16)
58#define SB_MCR UART_MCR_OUT2 | UART_MCR_DTR | UART_MCR_RTS
59
60struct uart_port {
61 int base;
62};
63#define UART_NPORTS 2
64struct uart_port uart_ports[] = {
65 { COM1_PORT },
66 { COM2_PORT },
67};
68struct uart_port *kgdb_uart_port;
69
70#define UART_IN(reg) inb_p(kgdb_uart_port->base + reg)
71#define UART_OUT(reg,v) outb_p((v), kgdb_uart_port->base + reg)
72
73/* Basic read/write functions for the UART */
74#define UART_LSR_RXCERR (UART_LSR_BI | UART_LSR_FE | UART_LSR_PE)
75static int kgdb_uart_getchar(void)
76{
77 int lsr;
78 int c = -1;
79
80 while (c == -1) {
81 lsr = UART_IN(UART_LSR);
82 if (lsr & UART_LSR_DR)
83 c = UART_IN(UART_RX);
84 if ((lsr & UART_LSR_RXCERR))
85 c = -1;
86 }
87 return c;
88}
89
90static void kgdb_uart_putchar(int c)
91{
92 while ((UART_IN(UART_LSR) & UART_LSR_THRE) == 0)
93 ;
94 UART_OUT(UART_TX, c);
95}
96
97/*
98 * Initialize UART to configured/requested values.
99 * (But we don't interrupts yet, or interact w/serial.c)
100 */
101static int kgdb_uart_setup(void)
102{
103 int port;
104 int lcr = 0;
105 int bdiv = 0;
106
107 if (kgdb_portnum >= UART_NPORTS) {
108 KGDB_PRINTK("uart port %d invalid.\n", kgdb_portnum);
109 return -1;
110 }
111
112 kgdb_uart_port = &uart_ports[kgdb_portnum];
113
114 /* Init sequence from gdb_hook_interrupt */
115 UART_IN(UART_RX);
116 UART_OUT(UART_IER, 0);
117
118 UART_IN(UART_RX); /* Serial driver comments say */
119 UART_IN(UART_IIR); /* this clears interrupt regs */
120 UART_IN(UART_MSR);
121
122 /* Figure basic LCR values */
123 switch (kgdb_bits) {
124 case '7':
125 lcr |= UART_LCR_WLEN7;
126 break;
127 default: case '8':
128 lcr |= UART_LCR_WLEN8;
129 break;
130 }
131 switch (kgdb_parity) {
132 case 'O':
133 lcr |= UART_LCR_PARITY;
134 break;
135 case 'E':
136 lcr |= (UART_LCR_PARITY | UART_LCR_EPAR);
137 break;
138 default: break;
139 }
140
141 /* Figure the baud rate divisor */
142 bdiv = (SB_BASE/kgdb_baud);
143
144 /* Set the baud rate and LCR values */
145 UART_OUT(UART_LCR, (lcr | UART_LCR_DLAB));
146 UART_OUT(UART_DLL, (bdiv & 0xff));
147 UART_OUT(UART_DLM, ((bdiv >> 8) & 0xff));
148 UART_OUT(UART_LCR, lcr);
149
150 /* Set the MCR */
151 UART_OUT(UART_MCR, SB_MCR);
152
153 /* Turn off FIFOs for now */
154 UART_OUT(UART_FCR, 0);
155
156 /* Setup complete: initialize function pointers */
157 kgdb_getchar = kgdb_uart_getchar;
158 kgdb_putchar = kgdb_uart_putchar;
159
160 return 0;
161}
162#endif /* CONFIG_SH_KGDB */
163
164static unsigned char heartbeat_bit_pos[] = { 8, 9, 10, 11, 12, 13, 14, 15 }; 17static unsigned char heartbeat_bit_pos[] = { 8, 9, 10, 11, 12, 13, 14, 15 };
165 18
166static struct resource heartbeat_resources[] = { 19static struct resource heartbeat_resources[] = {
@@ -197,7 +50,6 @@ __initcall(se7751_devices_setup);
197 */ 50 */
198struct sh_machine_vector mv_7751se __initmv = { 51struct sh_machine_vector mv_7751se __initmv = {
199 .mv_name = "7751 SolutionEngine", 52 .mv_name = "7751 SolutionEngine",
200 .mv_setup = sh7751se_setup,
201 .mv_nr_irqs = 72, 53 .mv_nr_irqs = 72,
202 54
203 .mv_inb = sh7751se_inb, 55 .mv_inb = sh7751se_inb,
diff --git a/arch/sh/boards/se/7780/Makefile b/arch/sh/boards/se/7780/Makefile
new file mode 100644
index 000000000000..6b88adae3ecc
--- /dev/null
+++ b/arch/sh/boards/se/7780/Makefile
@@ -0,0 +1,10 @@
1#
2# Makefile for the HITACHI UL SolutionEngine 7780 specific parts of the kernel
3#
4# This file is subject to the terms and conditions of the GNU General Public
5# License. See the file "COPYING" in the main directory of this archive
6# for more details.
7#
8#
9
10obj-y := setup.o irq.o
diff --git a/arch/sh/boards/se/7780/irq.c b/arch/sh/boards/se/7780/irq.c
new file mode 100644
index 000000000000..3d0625c2d07b
--- /dev/null
+++ b/arch/sh/boards/se/7780/irq.c
@@ -0,0 +1,89 @@
1/*
2 * linux/arch/sh/boards/se/7780/irq.c
3 *
4 * Copyright (C) 2006,2007 Nobuhiro Iwamatsu
5 *
6 * Hitachi UL SolutionEngine 7780 Support.
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/irq.h>
14#include <linux/interrupt.h>
15#include <asm/irq.h>
16#include <asm/io.h>
17#include <asm/se7780.h>
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[] = {
42 { 2, 0, 31, 0, 31, 3 }, /* daughter board EXTINT1 */
43 { 4, 0, 30, 0, 30, 3 }, /* daughter board EXTINT2 */
44 { 6, 0, 29, 0, 29, 3 }, /* daughter board EXTINT3 */
45 { 8, 0, 28, 0, 28, 3 }, /* SMC 91C111 (LAN) */
46 { 10, 0, 27, 0, 27, 3 }, /* daughter board EXTINT4 */
47 { 4, 0, 30, 0, 30, 3 }, /* daughter board EXTINT5 */
48 { 2, 0, 31, 0, 31, 3 }, /* daughter board EXTINT6 */
49 { 2, 0, 31, 0, 31, 3 }, /* daughter board EXTINT7 */
50 { 2, 0, 31, 0, 31, 3 }, /* daughter board EXTINT8 */
51 { 0 , 0, 24, 0, 24, 3 }, /* SM501 */
52};
53
54/*
55 * Initialize IRQ setting
56 */
57void __init init_se7780_IRQ(void)
58{
59 int i ;
60
61 /* enable all interrupt at FPGA */
62 ctrl_outw(0, FPGA_INTMSK1);
63 /* mask SM501 interrupt */
64 ctrl_outw((ctrl_inw(FPGA_INTMSK1) | 0x0002), FPGA_INTMSK1);
65 /* enable all interrupt at FPGA */
66 ctrl_outw(0, FPGA_INTMSK2);
67
68 /* set FPGA INTSEL register */
69 /* FPGA + 0x06 */
70 ctrl_outw( ((IRQPIN_SM501 << IRQPOS_SM501) |
71 (IRQPIN_SMC91CX << IRQPOS_SMC91CX)), FPGA_INTSEL1);
72
73 /* FPGA + 0x08 */
74 ctrl_outw(((IRQPIN_EXTINT4 << IRQPOS_EXTINT4) |
75 (IRQPIN_EXTINT3 << IRQPOS_EXTINT3) |
76 (IRQPIN_EXTINT2 << IRQPOS_EXTINT2) |
77 (IRQPIN_EXTINT1 << IRQPOS_EXTINT1)), FPGA_INTSEL2);
78
79 /* FPGA + 0x0A */
80 ctrl_outw((IRQPIN_PCCPW << IRQPOS_PCCPW), FPGA_INTSEL3);
81
82 for (i = 0; i < ARRAY_SIZE(intc2_irq_table); i++) {
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}
diff --git a/arch/sh/boards/se/7780/setup.c b/arch/sh/boards/se/7780/setup.c
new file mode 100644
index 000000000000..df7d08a24c9f
--- /dev/null
+++ b/arch/sh/boards/se/7780/setup.c
@@ -0,0 +1,122 @@
1/*
2 * linux/arch/sh/boards/se/7780/setup.c
3 *
4 * Copyright (C) 2006,2007 Nobuhiro Iwamatsu
5 *
6 * Hitachi UL SolutionEngine 7780 Support.
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/platform_device.h>
14#include <asm/machvec.h>
15#include <asm/se7780.h>
16#include <asm/io.h>
17
18/* Heartbeat */
19static unsigned char heartbeat_bit_pos[] = { 0, 1, 2, 3, 4, 5, 6, 7 };
20
21static struct resource heartbeat_resources[] = {
22 [0] = {
23 .start = PA_LED,
24 .end = PA_LED + ARRAY_SIZE(heartbeat_bit_pos) - 1,
25 .flags = IORESOURCE_MEM,
26 },
27};
28
29static struct platform_device heartbeat_device = {
30 .name = "heartbeat",
31 .id = -1,
32 .dev = {
33 .platform_data = heartbeat_bit_pos,
34 },
35 .num_resources = ARRAY_SIZE(heartbeat_resources),
36 .resource = heartbeat_resources,
37};
38
39/* SMC91x */
40static struct resource smc91x_eth_resources[] = {
41 [0] = {
42 .name = "smc91x-regs" ,
43 .start = PA_LAN + 0x300,
44 .end = PA_LAN + 0x300 + 0x10 ,
45 .flags = IORESOURCE_MEM,
46 },
47 [1] = {
48 .start = SMC_IRQ,
49 .end = SMC_IRQ,
50 .flags = IORESOURCE_IRQ,
51 },
52};
53
54static struct platform_device smc91x_eth_device = {
55 .name = "smc91x",
56 .id = 0,
57 .dev = {
58 .dma_mask = NULL, /* don't use dma */
59 .coherent_dma_mask = 0xffffffff,
60 },
61 .num_resources = ARRAY_SIZE(smc91x_eth_resources),
62 .resource = smc91x_eth_resources,
63};
64
65static struct platform_device *se7780_devices[] __initdata = {
66 &heartbeat_device,
67 &smc91x_eth_device,
68};
69
70static int __init se7780_devices_setup(void)
71{
72 return platform_add_devices(se7780_devices,
73 ARRAY_SIZE(se7780_devices));
74}
75device_initcall(se7780_devices_setup);
76
77#define GPIO_PHCR 0xFFEA000E
78#define GPIO_PMSELR 0xFFEA0080
79#define GPIO_PECR 0xFFEA0008
80
81static void __init se7780_setup(char **cmdline_p)
82{
83 /* "SH-Linux" on LED Display */
84 ctrl_outw( 'S' , PA_LED_DISP + (DISP_SEL0_ADDR << 1) );
85 ctrl_outw( 'H' , PA_LED_DISP + (DISP_SEL1_ADDR << 1) );
86 ctrl_outw( '-' , PA_LED_DISP + (DISP_SEL2_ADDR << 1) );
87 ctrl_outw( 'L' , PA_LED_DISP + (DISP_SEL3_ADDR << 1) );
88 ctrl_outw( 'i' , PA_LED_DISP + (DISP_SEL4_ADDR << 1) );
89 ctrl_outw( 'n' , PA_LED_DISP + (DISP_SEL5_ADDR << 1) );
90 ctrl_outw( 'u' , PA_LED_DISP + (DISP_SEL6_ADDR << 1) );
91 ctrl_outw( 'x' , PA_LED_DISP + (DISP_SEL7_ADDR << 1) );
92
93 printk(KERN_INFO "Hitachi UL Solutions Engine 7780SE03 support.\n");
94
95 /*
96 * PCI REQ/GNT setting
97 * REQ0/GNT0 -> USB
98 * REQ1/GNT1 -> PC Card
99 * REQ2/GNT2 -> Serial ATA
100 * REQ3/GNT3 -> PCI slot
101 */
102 ctrl_outw(0x0213, FPGA_REQSEL);
103
104 /* GPIO setting */
105 ctrl_outw(0x0000, GPIO_PECR);
106 ctrl_outw(ctrl_inw(GPIO_PHCR)&0xfff3, GPIO_PHCR);
107 ctrl_outw(0x0c00, GPIO_PMSELR);
108
109 /* iVDR Power ON */
110 ctrl_outw(0x0001, FPGA_IVDRPW);
111}
112
113/*
114 * The Machine Vector
115 */
116struct sh_machine_vector mv_se7780 __initmv = {
117 .mv_name = "Solution Engine 7780" ,
118 .mv_setup = se7780_setup ,
119 .mv_nr_irqs = 111 ,
120 .mv_init_irq = init_se7780_IRQ,
121};
122ALIAS_MV(se7780)
diff --git a/arch/sh/configs/lboxre2_defconfig b/arch/sh/configs/lboxre2_defconfig
new file mode 100644
index 000000000000..be86414dcc87
--- /dev/null
+++ b/arch/sh/configs/lboxre2_defconfig
@@ -0,0 +1,1271 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.21-rc4
4# Sat Mar 24 22:04: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
14# CONFIG_GENERIC_TIME is not set
15CONFIG_STACKTRACE_SUPPORT=y
16CONFIG_LOCKDEP_SUPPORT=y
17# CONFIG_ARCH_HAS_ILOG2_U32 is not set
18# CONFIG_ARCH_HAS_ILOG2_U64 is not set
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20
21#
22# Code maturity level options
23#
24CONFIG_EXPERIMENTAL=y
25CONFIG_BROKEN_ON_SMP=y
26CONFIG_INIT_ENV_ARG_LIMIT=32
27
28#
29# General setup
30#
31CONFIG_LOCALVERSION=""
32CONFIG_LOCALVERSION_AUTO=y
33CONFIG_SWAP=y
34CONFIG_SYSVIPC=y
35# CONFIG_IPC_NS is not set
36CONFIG_SYSVIPC_SYSCTL=y
37# CONFIG_POSIX_MQUEUE is not set
38# CONFIG_BSD_PROCESS_ACCT is not set
39# CONFIG_TASKSTATS is not set
40# CONFIG_UTS_NS is not set
41# CONFIG_AUDIT is not set
42# CONFIG_IKCONFIG is not set
43CONFIG_SYSFS_DEPRECATED=y
44# CONFIG_RELAY is not set
45# CONFIG_BLK_DEV_INITRD is not set
46CONFIG_CC_OPTIMIZE_FOR_SIZE=y
47CONFIG_SYSCTL=y
48CONFIG_EMBEDDED=y
49CONFIG_UID16=y
50# CONFIG_SYSCTL_SYSCALL is not set
51CONFIG_KALLSYMS=y
52CONFIG_KALLSYMS_EXTRA_PASS=y
53CONFIG_HOTPLUG=y
54CONFIG_PRINTK=y
55CONFIG_BUG=y
56CONFIG_ELF_CORE=y
57CONFIG_BASE_FULL=y
58CONFIG_FUTEX=y
59CONFIG_EPOLL=y
60CONFIG_SHMEM=y
61CONFIG_SLAB=y
62CONFIG_VM_EVENT_COUNTERS=y
63CONFIG_RT_MUTEXES=y
64# CONFIG_TINY_SHMEM is not set
65CONFIG_BASE_SMALL=0
66# CONFIG_SLOB is not set
67
68#
69# Loadable module support
70#
71CONFIG_MODULES=y
72CONFIG_MODULE_UNLOAD=y
73CONFIG_MODULE_FORCE_UNLOAD=y
74# CONFIG_MODVERSIONS is not set
75# CONFIG_MODULE_SRCVERSION_ALL is not set
76CONFIG_KMOD=y
77
78#
79# Block layer
80#
81CONFIG_BLOCK=y
82# CONFIG_LBD is not set
83# CONFIG_BLK_DEV_IO_TRACE is not set
84# CONFIG_LSF is not set
85
86#
87# IO Schedulers
88#
89CONFIG_IOSCHED_NOOP=y
90CONFIG_IOSCHED_AS=y
91CONFIG_IOSCHED_DEADLINE=y
92CONFIG_IOSCHED_CFQ=y
93CONFIG_DEFAULT_AS=y
94# CONFIG_DEFAULT_DEADLINE is not set
95# CONFIG_DEFAULT_CFQ is not set
96# CONFIG_DEFAULT_NOOP is not set
97CONFIG_DEFAULT_IOSCHED="anticipatory"
98
99#
100# System type
101#
102# CONFIG_SH_SOLUTION_ENGINE is not set
103# CONFIG_SH_7751_SOLUTION_ENGINE is not set
104# CONFIG_SH_7300_SOLUTION_ENGINE is not set
105# CONFIG_SH_7343_SOLUTION_ENGINE is not set
106# CONFIG_SH_73180_SOLUTION_ENGINE is not set
107# CONFIG_SH_7751_SYSTEMH is not set
108# CONFIG_SH_HP6XX is not set
109# CONFIG_SH_SATURN is not set
110# CONFIG_SH_DREAMCAST is not set
111# CONFIG_SH_MPC1211 is not set
112# CONFIG_SH_SH03 is not set
113# CONFIG_SH_SECUREEDGE5410 is not set
114# CONFIG_SH_HS7751RVOIP is not set
115# CONFIG_SH_7710VOIPGW is not set
116# CONFIG_SH_RTS7751R2D is not set
117# CONFIG_SH_HIGHLANDER is not set
118# CONFIG_SH_EDOSK7705 is not set
119# CONFIG_SH_SH4202_MICRODEV is not set
120# CONFIG_SH_LANDISK is not set
121# CONFIG_SH_TITAN is not set
122# CONFIG_SH_SHMIN is not set
123# CONFIG_SH_7206_SOLUTION_ENGINE is not set
124# CONFIG_SH_7619_SOLUTION_ENGINE is not set
125CONFIG_SH_LBOX_RE2=y
126# CONFIG_SH_UNKNOWN is not set
127
128#
129# Processor selection
130#
131CONFIG_CPU_SH4=y
132
133#
134# SH-2 Processor Support
135#
136# CONFIG_CPU_SUBTYPE_SH7604 is not set
137# CONFIG_CPU_SUBTYPE_SH7619 is not set
138
139#
140# SH-2A Processor Support
141#
142# CONFIG_CPU_SUBTYPE_SH7206 is not set
143
144#
145# SH-3 Processor Support
146#
147# CONFIG_CPU_SUBTYPE_SH7300 is not set
148# CONFIG_CPU_SUBTYPE_SH7705 is not set
149# CONFIG_CPU_SUBTYPE_SH7706 is not set
150# CONFIG_CPU_SUBTYPE_SH7707 is not set
151# CONFIG_CPU_SUBTYPE_SH7708 is not set
152# CONFIG_CPU_SUBTYPE_SH7709 is not set
153# CONFIG_CPU_SUBTYPE_SH7710 is not set
154
155#
156# SH-4 Processor Support
157#
158# CONFIG_CPU_SUBTYPE_SH7750 is not set
159# CONFIG_CPU_SUBTYPE_SH7091 is not set
160# CONFIG_CPU_SUBTYPE_SH7750R is not set
161# CONFIG_CPU_SUBTYPE_SH7750S is not set
162CONFIG_CPU_SUBTYPE_SH7751=y
163CONFIG_CPU_SUBTYPE_SH7751R=y
164# CONFIG_CPU_SUBTYPE_SH7760 is not set
165# CONFIG_CPU_SUBTYPE_SH4_202 is not set
166
167#
168# ST40 Processor Support
169#
170# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
171# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
172
173#
174# SH-4A Processor Support
175#
176# CONFIG_CPU_SUBTYPE_SH7770 is not set
177# CONFIG_CPU_SUBTYPE_SH7780 is not set
178# CONFIG_CPU_SUBTYPE_SH7785 is not set
179
180#
181# SH4AL-DSP Processor Support
182#
183# CONFIG_CPU_SUBTYPE_SH73180 is not set
184# CONFIG_CPU_SUBTYPE_SH7343 is not set
185# CONFIG_CPU_SUBTYPE_SH7722 is not set
186
187#
188# Memory management options
189#
190CONFIG_MMU=y
191CONFIG_PAGE_OFFSET=0x80000000
192CONFIG_MEMORY_START=0x0c000000
193CONFIG_MEMORY_SIZE=0x04000000
194CONFIG_VSYSCALL=y
195CONFIG_PAGE_SIZE_4KB=y
196# CONFIG_PAGE_SIZE_8KB is not set
197# CONFIG_PAGE_SIZE_64KB is not set
198CONFIG_SELECT_MEMORY_MODEL=y
199CONFIG_FLATMEM_MANUAL=y
200# CONFIG_DISCONTIGMEM_MANUAL is not set
201# CONFIG_SPARSEMEM_MANUAL is not set
202CONFIG_FLATMEM=y
203CONFIG_FLAT_NODE_MEM_MAP=y
204# CONFIG_SPARSEMEM_STATIC is not set
205CONFIG_SPLIT_PTLOCK_CPUS=4
206# CONFIG_RESOURCES_64BIT is not set
207CONFIG_ZONE_DMA_FLAG=0
208
209#
210# Cache configuration
211#
212# CONFIG_SH_DIRECT_MAPPED is not set
213# CONFIG_SH_WRITETHROUGH is not set
214# CONFIG_SH_OCRAM is not set
215
216#
217# Processor features
218#
219CONFIG_CPU_LITTLE_ENDIAN=y
220# CONFIG_CPU_BIG_ENDIAN is not set
221CONFIG_SH_FPU=y
222# CONFIG_SH_DSP is not set
223# CONFIG_SH_STORE_QUEUES is not set
224CONFIG_CPU_HAS_INTEVT=y
225CONFIG_CPU_HAS_IPR_IRQ=y
226CONFIG_CPU_HAS_SR_RB=y
227CONFIG_CPU_HAS_PTEA=y
228
229#
230# Timer and clock configuration
231#
232CONFIG_SH_TMU=y
233CONFIG_SH_TIMER_IRQ=16
234# CONFIG_NO_IDLE_HZ is not set
235CONFIG_SH_PCLK_FREQ=40000000
236
237#
238# CPU Frequency scaling
239#
240# CONFIG_CPU_FREQ is not set
241
242#
243# DMA support
244#
245# CONFIG_SH_DMA is not set
246
247#
248# Companion Chips
249#
250# CONFIG_HD6446X_SERIES is not set
251
252#
253# Additional SuperH Device Drivers
254#
255# CONFIG_HEARTBEAT is not set
256# CONFIG_PUSH_SWITCH is not set
257
258#
259# Kernel features
260#
261# CONFIG_HZ_100 is not set
262CONFIG_HZ_250=y
263# CONFIG_HZ_300 is not set
264# CONFIG_HZ_1000 is not set
265CONFIG_HZ=250
266CONFIG_KEXEC=y
267# CONFIG_SMP is not set
268CONFIG_PREEMPT_NONE=y
269# CONFIG_PREEMPT_VOLUNTARY is not set
270# CONFIG_PREEMPT is not set
271
272#
273# Boot options
274#
275CONFIG_ZERO_PAGE_OFFSET=0x00001000
276CONFIG_BOOT_LINK_OFFSET=0x00800000
277# CONFIG_UBC_WAKEUP is not set
278CONFIG_CMDLINE_BOOL=y
279CONFIG_CMDLINE="console=ttySC1,115200 root=/dev/sda1"
280
281#
282# Bus options
283#
284CONFIG_ISA=y
285CONFIG_PCI=y
286CONFIG_SH_PCIDMA_NONCOHERENT=y
287CONFIG_PCI_AUTO=y
288CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
289
290#
291# PCCARD (PCMCIA/CardBus) support
292#
293CONFIG_PCCARD=y
294CONFIG_PCMCIA_DEBUG=y
295CONFIG_PCMCIA=y
296CONFIG_PCMCIA_LOAD_CIS=y
297CONFIG_PCMCIA_IOCTL=y
298CONFIG_CARDBUS=y
299
300#
301# PC-card bridges
302#
303CONFIG_YENTA=y
304CONFIG_YENTA_O2=y
305# CONFIG_YENTA_RICOH is not set
306# CONFIG_YENTA_TI is not set
307# CONFIG_YENTA_TOSHIBA is not set
308# CONFIG_PD6729 is not set
309# CONFIG_I82092 is not set
310# CONFIG_I82365 is not set
311# CONFIG_TCIC is not set
312CONFIG_PCMCIA_PROBE=y
313CONFIG_PCCARD_NONSTATIC=y
314
315#
316# PCI Hotplug Support
317#
318# CONFIG_HOTPLUG_PCI is not set
319
320#
321# Executable file formats
322#
323CONFIG_BINFMT_ELF=y
324# CONFIG_BINFMT_FLAT is not set
325# CONFIG_BINFMT_MISC is not set
326
327#
328# Power management options (EXPERIMENTAL)
329#
330# CONFIG_PM is not set
331
332#
333# Networking
334#
335CONFIG_NET=y
336
337#
338# Networking options
339#
340# CONFIG_NETDEBUG is not set
341CONFIG_PACKET=y
342# CONFIG_PACKET_MMAP is not set
343CONFIG_UNIX=y
344CONFIG_XFRM=y
345# CONFIG_XFRM_USER is not set
346# CONFIG_XFRM_SUB_POLICY is not set
347# CONFIG_XFRM_MIGRATE is not set
348# CONFIG_NET_KEY is not set
349CONFIG_INET=y
350# CONFIG_IP_MULTICAST is not set
351CONFIG_IP_ADVANCED_ROUTER=y
352CONFIG_ASK_IP_FIB_HASH=y
353# CONFIG_IP_FIB_TRIE is not set
354CONFIG_IP_FIB_HASH=y
355# CONFIG_IP_MULTIPLE_TABLES is not set
356# CONFIG_IP_ROUTE_MULTIPATH is not set
357# CONFIG_IP_ROUTE_VERBOSE is not set
358CONFIG_IP_PNP=y
359# CONFIG_IP_PNP_DHCP is not set
360# CONFIG_IP_PNP_BOOTP is not set
361# CONFIG_IP_PNP_RARP is not set
362# CONFIG_NET_IPIP is not set
363# CONFIG_NET_IPGRE is not set
364# CONFIG_ARPD is not set
365# CONFIG_SYN_COOKIES is not set
366# CONFIG_INET_AH is not set
367# CONFIG_INET_ESP is not set
368# CONFIG_INET_IPCOMP is not set
369# CONFIG_INET_XFRM_TUNNEL is not set
370# CONFIG_INET_TUNNEL is not set
371CONFIG_INET_XFRM_MODE_TRANSPORT=y
372CONFIG_INET_XFRM_MODE_TUNNEL=y
373CONFIG_INET_XFRM_MODE_BEET=y
374CONFIG_INET_DIAG=y
375CONFIG_INET_TCP_DIAG=y
376# CONFIG_TCP_CONG_ADVANCED is not set
377CONFIG_TCP_CONG_CUBIC=y
378CONFIG_DEFAULT_TCP_CONG="cubic"
379# CONFIG_TCP_MD5SIG is not set
380
381#
382# IP: Virtual Server Configuration
383#
384# CONFIG_IP_VS is not set
385# CONFIG_IPV6 is not set
386# CONFIG_INET6_XFRM_TUNNEL is not set
387# CONFIG_INET6_TUNNEL is not set
388# CONFIG_NETWORK_SECMARK is not set
389CONFIG_NETFILTER=y
390# CONFIG_NETFILTER_DEBUG is not set
391
392#
393# Core Netfilter Configuration
394#
395# CONFIG_NETFILTER_NETLINK is not set
396# CONFIG_NF_CONNTRACK_ENABLED is not set
397# CONFIG_NETFILTER_XTABLES is not set
398
399#
400# IP: Netfilter Configuration
401#
402# CONFIG_IP_NF_QUEUE is not set
403# CONFIG_IP_NF_IPTABLES is not set
404# CONFIG_IP_NF_ARPTABLES is not set
405
406#
407# DCCP Configuration (EXPERIMENTAL)
408#
409# CONFIG_IP_DCCP is not set
410
411#
412# SCTP Configuration (EXPERIMENTAL)
413#
414# CONFIG_IP_SCTP is not set
415
416#
417# TIPC Configuration (EXPERIMENTAL)
418#
419# CONFIG_TIPC is not set
420# CONFIG_ATM is not set
421# CONFIG_BRIDGE is not set
422# CONFIG_VLAN_8021Q is not set
423# CONFIG_DECNET is not set
424# CONFIG_LLC2 is not set
425# CONFIG_IPX is not set
426# CONFIG_ATALK is not set
427# CONFIG_X25 is not set
428# CONFIG_LAPB is not set
429# CONFIG_ECONET is not set
430# CONFIG_WAN_ROUTER is not set
431
432#
433# QoS and/or fair queueing
434#
435# CONFIG_NET_SCHED is not set
436
437#
438# Network testing
439#
440# CONFIG_NET_PKTGEN is not set
441# CONFIG_HAMRADIO is not set
442# CONFIG_IRDA is not set
443# CONFIG_BT is not set
444# CONFIG_IEEE80211 is not set
445
446#
447# Device Drivers
448#
449
450#
451# Generic Driver Options
452#
453CONFIG_STANDALONE=y
454CONFIG_PREVENT_FIRMWARE_BUILD=y
455CONFIG_FW_LOADER=y
456# CONFIG_SYS_HYPERVISOR is not set
457
458#
459# Connector - unified userspace <-> kernelspace linker
460#
461# CONFIG_CONNECTOR is not set
462
463#
464# Memory Technology Devices (MTD)
465#
466# CONFIG_MTD is not set
467
468#
469# Parallel port support
470#
471# CONFIG_PARPORT is not set
472
473#
474# Plug and Play support
475#
476# CONFIG_PNP is not set
477# CONFIG_PNPACPI is not set
478
479#
480# Block devices
481#
482# CONFIG_BLK_CPQ_DA is not set
483# CONFIG_BLK_CPQ_CISS_DA is not set
484# CONFIG_BLK_DEV_DAC960 is not set
485# CONFIG_BLK_DEV_UMEM is not set
486# CONFIG_BLK_DEV_COW_COMMON is not set
487CONFIG_BLK_DEV_LOOP=y
488# CONFIG_BLK_DEV_CRYPTOLOOP is not set
489# CONFIG_BLK_DEV_NBD is not set
490# CONFIG_BLK_DEV_SX8 is not set
491CONFIG_BLK_DEV_RAM=y
492CONFIG_BLK_DEV_RAM_COUNT=16
493CONFIG_BLK_DEV_RAM_SIZE=4096
494CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
495# CONFIG_CDROM_PKTCDVD is not set
496# CONFIG_ATA_OVER_ETH is not set
497
498#
499# Misc devices
500#
501# CONFIG_SGI_IOC4 is not set
502# CONFIG_TIFM_CORE is not set
503
504#
505# ATA/ATAPI/MFM/RLL support
506#
507# CONFIG_IDE is not set
508
509#
510# SCSI device support
511#
512# CONFIG_RAID_ATTRS is not set
513CONFIG_SCSI=y
514# CONFIG_SCSI_TGT is not set
515# CONFIG_SCSI_NETLINK is not set
516CONFIG_SCSI_PROC_FS=y
517
518#
519# SCSI support type (disk, tape, CD-ROM)
520#
521CONFIG_BLK_DEV_SD=y
522# CONFIG_CHR_DEV_ST is not set
523# CONFIG_CHR_DEV_OSST is not set
524# CONFIG_BLK_DEV_SR is not set
525# CONFIG_CHR_DEV_SG is not set
526# CONFIG_CHR_DEV_SCH is not set
527
528#
529# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
530#
531# CONFIG_SCSI_MULTI_LUN is not set
532# CONFIG_SCSI_CONSTANTS is not set
533# CONFIG_SCSI_LOGGING is not set
534# CONFIG_SCSI_SCAN_ASYNC is not set
535
536#
537# SCSI Transports
538#
539# CONFIG_SCSI_SPI_ATTRS is not set
540# CONFIG_SCSI_FC_ATTRS is not set
541# CONFIG_SCSI_ISCSI_ATTRS is not set
542# CONFIG_SCSI_SAS_ATTRS is not set
543# CONFIG_SCSI_SAS_LIBSAS is not set
544
545#
546# SCSI low-level drivers
547#
548# CONFIG_ISCSI_TCP is not set
549# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
550# CONFIG_SCSI_3W_9XXX is not set
551# CONFIG_SCSI_ACARD is not set
552# CONFIG_SCSI_AHA152X is not set
553# CONFIG_SCSI_AACRAID is not set
554# CONFIG_SCSI_AIC7XXX is not set
555# CONFIG_SCSI_AIC7XXX_OLD is not set
556# CONFIG_SCSI_AIC79XX is not set
557# CONFIG_SCSI_AIC94XX is not set
558# CONFIG_SCSI_DPT_I2O is not set
559# CONFIG_SCSI_IN2000 is not set
560# CONFIG_SCSI_ARCMSR is not set
561# CONFIG_MEGARAID_NEWGEN is not set
562# CONFIG_MEGARAID_LEGACY is not set
563# CONFIG_MEGARAID_SAS is not set
564# CONFIG_SCSI_HPTIOP is not set
565# CONFIG_SCSI_DMX3191D is not set
566# CONFIG_SCSI_DTC3280 is not set
567# CONFIG_SCSI_FUTURE_DOMAIN is not set
568# CONFIG_SCSI_GENERIC_NCR5380 is not set
569# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
570# CONFIG_SCSI_IPS is not set
571# CONFIG_SCSI_INITIO is not set
572# CONFIG_SCSI_INIA100 is not set
573# CONFIG_SCSI_NCR53C406A is not set
574# CONFIG_SCSI_STEX is not set
575# CONFIG_SCSI_SYM53C8XX_2 is not set
576# CONFIG_SCSI_IPR is not set
577# CONFIG_SCSI_PAS16 is not set
578# CONFIG_SCSI_PSI240I is not set
579# CONFIG_SCSI_QLOGIC_FAS is not set
580# CONFIG_SCSI_QLOGIC_1280 is not set
581# CONFIG_SCSI_QLA_FC is not set
582# CONFIG_SCSI_QLA_ISCSI is not set
583# CONFIG_SCSI_LPFC is not set
584# CONFIG_SCSI_SYM53C416 is not set
585# CONFIG_SCSI_DC395x is not set
586# CONFIG_SCSI_DC390T is not set
587# CONFIG_SCSI_T128 is not set
588# CONFIG_SCSI_NSP32 is not set
589# CONFIG_SCSI_DEBUG is not set
590# CONFIG_SCSI_SRP is not set
591
592#
593# PCMCIA SCSI adapter support
594#
595# CONFIG_PCMCIA_AHA152X is not set
596# CONFIG_PCMCIA_FDOMAIN is not set
597# CONFIG_PCMCIA_NINJA_SCSI is not set
598# CONFIG_PCMCIA_QLOGIC is not set
599# CONFIG_PCMCIA_SYM53C500 is not set
600
601#
602# Serial ATA (prod) and Parallel ATA (experimental) drivers
603#
604CONFIG_ATA=y
605# CONFIG_ATA_NONSTANDARD is not set
606# CONFIG_SATA_AHCI is not set
607# CONFIG_SATA_SVW is not set
608# CONFIG_ATA_PIIX is not set
609# CONFIG_SATA_MV is not set
610# CONFIG_SATA_NV is not set
611# CONFIG_PDC_ADMA is not set
612# CONFIG_SATA_QSTOR is not set
613# CONFIG_SATA_PROMISE is not set
614# CONFIG_SATA_SX4 is not set
615# CONFIG_SATA_SIL is not set
616# CONFIG_SATA_SIL24 is not set
617# CONFIG_SATA_SIS is not set
618# CONFIG_SATA_ULI is not set
619# CONFIG_SATA_VIA is not set
620# CONFIG_SATA_VITESSE is not set
621# CONFIG_SATA_INIC162X is not set
622# CONFIG_PATA_ALI is not set
623# CONFIG_PATA_AMD is not set
624# CONFIG_PATA_ARTOP is not set
625# CONFIG_PATA_ATIIXP is not set
626# CONFIG_PATA_CMD64X is not set
627# CONFIG_PATA_CS5520 is not set
628# CONFIG_PATA_CS5530 is not set
629# CONFIG_PATA_CYPRESS is not set
630# CONFIG_PATA_EFAR is not set
631# CONFIG_ATA_GENERIC is not set
632# CONFIG_PATA_HPT366 is not set
633# CONFIG_PATA_HPT37X is not set
634# CONFIG_PATA_HPT3X2N is not set
635# CONFIG_PATA_HPT3X3 is not set
636# CONFIG_PATA_IT821X is not set
637# CONFIG_PATA_IT8213 is not set
638# CONFIG_PATA_JMICRON is not set
639# CONFIG_PATA_LEGACY is not set
640# CONFIG_PATA_TRIFLEX is not set
641# CONFIG_PATA_MARVELL is not set
642# CONFIG_PATA_MPIIX is not set
643# CONFIG_PATA_OLDPIIX is not set
644# CONFIG_PATA_NETCELL is not set
645# CONFIG_PATA_NS87410 is not set
646# CONFIG_PATA_OPTI is not set
647# CONFIG_PATA_OPTIDMA is not set
648# CONFIG_PATA_PCMCIA is not set
649# CONFIG_PATA_PDC_OLD is not set
650# CONFIG_PATA_QDI is not set
651# CONFIG_PATA_RADISYS is not set
652# CONFIG_PATA_RZ1000 is not set
653# CONFIG_PATA_SC1200 is not set
654# CONFIG_PATA_SERVERWORKS is not set
655# CONFIG_PATA_PDC2027X is not set
656# CONFIG_PATA_SIL680 is not set
657# CONFIG_PATA_SIS is not set
658# CONFIG_PATA_VIA is not set
659# CONFIG_PATA_WINBOND is not set
660# CONFIG_PATA_WINBOND_VLB is not set
661CONFIG_PATA_PLATFORM=y
662
663#
664# Old CD-ROM drivers (not SCSI, not IDE)
665#
666# CONFIG_CD_NO_IDESCSI is not set
667
668#
669# Multi-device support (RAID and LVM)
670#
671# CONFIG_MD is not set
672
673#
674# Fusion MPT device support
675#
676# CONFIG_FUSION is not set
677# CONFIG_FUSION_SPI is not set
678# CONFIG_FUSION_FC is not set
679# CONFIG_FUSION_SAS is not set
680
681#
682# IEEE 1394 (FireWire) support
683#
684# CONFIG_IEEE1394 is not set
685
686#
687# I2O device support
688#
689# CONFIG_I2O is not set
690
691#
692# Network device support
693#
694CONFIG_NETDEVICES=y
695# CONFIG_DUMMY is not set
696# CONFIG_BONDING is not set
697# CONFIG_EQUALIZER is not set
698# CONFIG_TUN is not set
699
700#
701# ARCnet devices
702#
703# CONFIG_ARCNET is not set
704
705#
706# PHY device support
707#
708# CONFIG_PHYLIB is not set
709
710#
711# Ethernet (10 or 100Mbit)
712#
713CONFIG_NET_ETHERNET=y
714CONFIG_MII=y
715# CONFIG_STNIC is not set
716# CONFIG_HAPPYMEAL is not set
717# CONFIG_SUNGEM is not set
718# CONFIG_CASSINI is not set
719# CONFIG_NET_VENDOR_3COM is not set
720# CONFIG_NET_VENDOR_SMC is not set
721# CONFIG_SMC91X is not set
722# CONFIG_NET_VENDOR_RACAL is not set
723
724#
725# Tulip family network device support
726#
727# CONFIG_NET_TULIP is not set
728# CONFIG_AT1700 is not set
729# CONFIG_DEPCA is not set
730# CONFIG_HP100 is not set
731# CONFIG_NET_ISA is not set
732CONFIG_NET_PCI=y
733# CONFIG_PCNET32 is not set
734# CONFIG_AMD8111_ETH is not set
735# CONFIG_ADAPTEC_STARFIRE is not set
736# CONFIG_AC3200 is not set
737# CONFIG_APRICOT is not set
738# CONFIG_B44 is not set
739# CONFIG_FORCEDETH is not set
740# CONFIG_CS89x0 is not set
741# CONFIG_DGRS is not set
742# CONFIG_EEPRO100 is not set
743# CONFIG_E100 is not set
744# CONFIG_FEALNX is not set
745# CONFIG_NATSEMI is not set
746CONFIG_NE2K_PCI=y
747# CONFIG_8139CP is not set
748CONFIG_8139TOO=y
749CONFIG_8139TOO_PIO=y
750CONFIG_8139TOO_TUNE_TWISTER=y
751# CONFIG_8139TOO_8129 is not set
752# CONFIG_8139_OLD_RX_RESET is not set
753# CONFIG_SIS900 is not set
754# CONFIG_EPIC100 is not set
755# CONFIG_SUNDANCE is not set
756# CONFIG_TLAN is not set
757# CONFIG_VIA_RHINE is not set
758# CONFIG_SC92031 is not set
759
760#
761# Ethernet (1000 Mbit)
762#
763# CONFIG_ACENIC is not set
764# CONFIG_DL2K is not set
765# CONFIG_E1000 is not set
766# CONFIG_NS83820 is not set
767# CONFIG_HAMACHI is not set
768# CONFIG_YELLOWFIN is not set
769# CONFIG_R8169 is not set
770# CONFIG_SIS190 is not set
771# CONFIG_SKGE is not set
772# CONFIG_SKY2 is not set
773# CONFIG_SK98LIN is not set
774# CONFIG_VIA_VELOCITY is not set
775# CONFIG_TIGON3 is not set
776# CONFIG_BNX2 is not set
777# CONFIG_QLA3XXX is not set
778# CONFIG_ATL1 is not set
779
780#
781# Ethernet (10000 Mbit)
782#
783# CONFIG_CHELSIO_T1 is not set
784# CONFIG_CHELSIO_T3 is not set
785# CONFIG_IXGB is not set
786# CONFIG_S2IO is not set
787# CONFIG_MYRI10GE is not set
788# CONFIG_NETXEN_NIC is not set
789
790#
791# Token Ring devices
792#
793# CONFIG_TR is not set
794
795#
796# Wireless LAN (non-hamradio)
797#
798# CONFIG_NET_RADIO is not set
799
800#
801# PCMCIA network device support
802#
803CONFIG_NET_PCMCIA=y
804# CONFIG_PCMCIA_3C589 is not set
805# CONFIG_PCMCIA_3C574 is not set
806# CONFIG_PCMCIA_FMVJ18X is not set
807CONFIG_PCMCIA_PCNET=y
808# CONFIG_PCMCIA_NMCLAN is not set
809# CONFIG_PCMCIA_SMC91C92 is not set
810# CONFIG_PCMCIA_XIRC2PS is not set
811# CONFIG_PCMCIA_AXNET is not set
812
813#
814# Wan interfaces
815#
816# CONFIG_WAN is not set
817# CONFIG_FDDI is not set
818# CONFIG_HIPPI is not set
819# CONFIG_PPP is not set
820# CONFIG_SLIP is not set
821# CONFIG_NET_FC is not set
822# CONFIG_SHAPER is not set
823# CONFIG_NETCONSOLE is not set
824# CONFIG_NETPOLL is not set
825# CONFIG_NET_POLL_CONTROLLER is not set
826
827#
828# ISDN subsystem
829#
830# CONFIG_ISDN is not set
831
832#
833# Telephony Support
834#
835# CONFIG_PHONE is not set
836
837#
838# Input device support
839#
840CONFIG_INPUT=y
841# CONFIG_INPUT_FF_MEMLESS is not set
842
843#
844# Userland interfaces
845#
846CONFIG_INPUT_MOUSEDEV=y
847# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
848CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
849CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
850# CONFIG_INPUT_JOYDEV is not set
851# CONFIG_INPUT_TSDEV is not set
852# CONFIG_INPUT_EVDEV is not set
853# CONFIG_INPUT_EVBUG is not set
854
855#
856# Input Device Drivers
857#
858# CONFIG_INPUT_KEYBOARD is not set
859# CONFIG_INPUT_MOUSE is not set
860# CONFIG_INPUT_JOYSTICK is not set
861# CONFIG_INPUT_TOUCHSCREEN is not set
862# CONFIG_INPUT_MISC is not set
863
864#
865# Hardware I/O ports
866#
867# CONFIG_SERIO is not set
868# CONFIG_GAMEPORT is not set
869
870#
871# Character devices
872#
873CONFIG_VT=y
874CONFIG_VT_CONSOLE=y
875CONFIG_HW_CONSOLE=y
876# CONFIG_VT_HW_CONSOLE_BINDING is not set
877# CONFIG_SERIAL_NONSTANDARD is not set
878
879#
880# Serial drivers
881#
882# CONFIG_SERIAL_8250 is not set
883
884#
885# Non-8250 serial port support
886#
887CONFIG_SERIAL_SH_SCI=y
888CONFIG_SERIAL_SH_SCI_NR_UARTS=2
889CONFIG_SERIAL_SH_SCI_CONSOLE=y
890CONFIG_SERIAL_CORE=y
891CONFIG_SERIAL_CORE_CONSOLE=y
892# CONFIG_SERIAL_JSM is not set
893CONFIG_UNIX98_PTYS=y
894CONFIG_LEGACY_PTYS=y
895CONFIG_LEGACY_PTY_COUNT=256
896
897#
898# IPMI
899#
900# CONFIG_IPMI_HANDLER is not set
901
902#
903# Watchdog Cards
904#
905# CONFIG_WATCHDOG is not set
906CONFIG_HW_RANDOM=y
907# CONFIG_GEN_RTC is not set
908# CONFIG_DTLK is not set
909# CONFIG_R3964 is not set
910# CONFIG_APPLICOM is not set
911# CONFIG_DRM is not set
912
913#
914# PCMCIA character devices
915#
916# CONFIG_SYNCLINK_CS is not set
917# CONFIG_CARDMAN_4000 is not set
918# CONFIG_CARDMAN_4040 is not set
919# CONFIG_RAW_DRIVER is not set
920
921#
922# TPM devices
923#
924# CONFIG_TCG_TPM is not set
925
926#
927# I2C support
928#
929# CONFIG_I2C is not set
930
931#
932# SPI support
933#
934# CONFIG_SPI is not set
935# CONFIG_SPI_MASTER is not set
936
937#
938# Dallas's 1-wire bus
939#
940# CONFIG_W1 is not set
941
942#
943# Hardware Monitoring support
944#
945CONFIG_HWMON=y
946# CONFIG_HWMON_VID is not set
947# CONFIG_SENSORS_ABITUGURU is not set
948# CONFIG_SENSORS_F71805F is not set
949# CONFIG_SENSORS_PC87427 is not set
950# CONFIG_SENSORS_VT1211 is not set
951# CONFIG_HWMON_DEBUG_CHIP is not set
952
953#
954# Multifunction device drivers
955#
956# CONFIG_MFD_SM501 is not set
957
958#
959# Multimedia devices
960#
961# CONFIG_VIDEO_DEV is not set
962
963#
964# Digital Video Broadcasting Devices
965#
966# CONFIG_DVB is not set
967
968#
969# Graphics support
970#
971# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
972# CONFIG_FB is not set
973
974#
975# Console display driver support
976#
977# CONFIG_MDA_CONSOLE is not set
978CONFIG_DUMMY_CONSOLE=y
979
980#
981# Sound
982#
983# CONFIG_SOUND is not set
984
985#
986# HID Devices
987#
988CONFIG_HID=y
989# CONFIG_HID_DEBUG is not set
990
991#
992# USB support
993#
994CONFIG_USB_ARCH_HAS_HCD=y
995CONFIG_USB_ARCH_HAS_OHCI=y
996CONFIG_USB_ARCH_HAS_EHCI=y
997# CONFIG_USB is not set
998
999#
1000# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
1001#
1002
1003#
1004# USB Gadget Support
1005#
1006# CONFIG_USB_GADGET is not set
1007
1008#
1009# MMC/SD Card support
1010#
1011# CONFIG_MMC is not set
1012
1013#
1014# LED devices
1015#
1016# CONFIG_NEW_LEDS is not set
1017
1018#
1019# LED drivers
1020#
1021
1022#
1023# LED Triggers
1024#
1025
1026#
1027# InfiniBand support
1028#
1029# CONFIG_INFINIBAND is not set
1030
1031#
1032# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
1033#
1034
1035#
1036# Real Time Clock
1037#
1038CONFIG_RTC_LIB=y
1039CONFIG_RTC_CLASS=y
1040CONFIG_RTC_HCTOSYS=y
1041CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
1042# CONFIG_RTC_DEBUG is not set
1043
1044#
1045# RTC interfaces
1046#
1047CONFIG_RTC_INTF_SYSFS=y
1048CONFIG_RTC_INTF_PROC=y
1049CONFIG_RTC_INTF_DEV=y
1050# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
1051
1052#
1053# RTC drivers
1054#
1055# CONFIG_RTC_DRV_DS1553 is not set
1056# CONFIG_RTC_DRV_DS1742 is not set
1057# CONFIG_RTC_DRV_M48T86 is not set
1058# CONFIG_RTC_DRV_SH is not set
1059# CONFIG_RTC_DRV_TEST is not set
1060# CONFIG_RTC_DRV_V3020 is not set
1061
1062#
1063# DMA Engine support
1064#
1065# CONFIG_DMA_ENGINE is not set
1066
1067#
1068# DMA Clients
1069#
1070
1071#
1072# DMA Devices
1073#
1074
1075#
1076# Auxiliary Display support
1077#
1078
1079#
1080# Virtualization
1081#
1082
1083#
1084# File systems
1085#
1086CONFIG_EXT2_FS=y
1087# CONFIG_EXT2_FS_XATTR is not set
1088# CONFIG_EXT2_FS_XIP is not set
1089CONFIG_EXT3_FS=y
1090CONFIG_EXT3_FS_XATTR=y
1091# CONFIG_EXT3_FS_POSIX_ACL is not set
1092# CONFIG_EXT3_FS_SECURITY is not set
1093# CONFIG_EXT4DEV_FS is not set
1094CONFIG_JBD=y
1095# CONFIG_JBD_DEBUG is not set
1096CONFIG_FS_MBCACHE=y
1097# CONFIG_REISERFS_FS is not set
1098# CONFIG_JFS_FS is not set
1099# CONFIG_FS_POSIX_ACL is not set
1100# CONFIG_XFS_FS is not set
1101# CONFIG_GFS2_FS is not set
1102# CONFIG_OCFS2_FS is not set
1103# CONFIG_MINIX_FS is not set
1104CONFIG_ROMFS_FS=y
1105CONFIG_INOTIFY=y
1106CONFIG_INOTIFY_USER=y
1107# CONFIG_QUOTA is not set
1108CONFIG_DNOTIFY=y
1109# CONFIG_AUTOFS_FS is not set
1110# CONFIG_AUTOFS4_FS is not set
1111# CONFIG_FUSE_FS is not set
1112
1113#
1114# CD-ROM/DVD Filesystems
1115#
1116# CONFIG_ISO9660_FS is not set
1117# CONFIG_UDF_FS is not set
1118
1119#
1120# DOS/FAT/NT Filesystems
1121#
1122CONFIG_FAT_FS=y
1123CONFIG_MSDOS_FS=y
1124CONFIG_VFAT_FS=y
1125CONFIG_FAT_DEFAULT_CODEPAGE=437
1126CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1127# CONFIG_NTFS_FS is not set
1128
1129#
1130# Pseudo filesystems
1131#
1132CONFIG_PROC_FS=y
1133# CONFIG_PROC_KCORE is not set
1134CONFIG_PROC_SYSCTL=y
1135CONFIG_SYSFS=y
1136CONFIG_TMPFS=y
1137# CONFIG_TMPFS_POSIX_ACL is not set
1138# CONFIG_HUGETLBFS is not set
1139# CONFIG_HUGETLB_PAGE is not set
1140CONFIG_RAMFS=y
1141# CONFIG_CONFIGFS_FS is not set
1142
1143#
1144# Miscellaneous filesystems
1145#
1146# CONFIG_ADFS_FS is not set
1147# CONFIG_AFFS_FS is not set
1148# CONFIG_HFS_FS is not set
1149# CONFIG_HFSPLUS_FS is not set
1150# CONFIG_BEFS_FS is not set
1151# CONFIG_BFS_FS is not set
1152# CONFIG_EFS_FS is not set
1153# CONFIG_CRAMFS is not set
1154# CONFIG_VXFS_FS is not set
1155# CONFIG_HPFS_FS is not set
1156# CONFIG_QNX4FS_FS is not set
1157# CONFIG_SYSV_FS is not set
1158# CONFIG_UFS_FS is not set
1159
1160#
1161# Network File Systems
1162#
1163# CONFIG_NFS_FS is not set
1164# CONFIG_NFSD is not set
1165# CONFIG_SMB_FS is not set
1166# CONFIG_CIFS is not set
1167# CONFIG_NCP_FS is not set
1168# CONFIG_CODA_FS is not set
1169# CONFIG_AFS_FS is not set
1170# CONFIG_9P_FS is not set
1171
1172#
1173# Partition Types
1174#
1175# CONFIG_PARTITION_ADVANCED is not set
1176CONFIG_MSDOS_PARTITION=y
1177
1178#
1179# Native Language Support
1180#
1181CONFIG_NLS=y
1182CONFIG_NLS_DEFAULT="iso8859-1"
1183CONFIG_NLS_CODEPAGE_437=y
1184# CONFIG_NLS_CODEPAGE_737 is not set
1185# CONFIG_NLS_CODEPAGE_775 is not set
1186# CONFIG_NLS_CODEPAGE_850 is not set
1187# CONFIG_NLS_CODEPAGE_852 is not set
1188# CONFIG_NLS_CODEPAGE_855 is not set
1189# CONFIG_NLS_CODEPAGE_857 is not set
1190# CONFIG_NLS_CODEPAGE_860 is not set
1191# CONFIG_NLS_CODEPAGE_861 is not set
1192# CONFIG_NLS_CODEPAGE_862 is not set
1193# CONFIG_NLS_CODEPAGE_863 is not set
1194# CONFIG_NLS_CODEPAGE_864 is not set
1195# CONFIG_NLS_CODEPAGE_865 is not set
1196# CONFIG_NLS_CODEPAGE_866 is not set
1197# CONFIG_NLS_CODEPAGE_869 is not set
1198# CONFIG_NLS_CODEPAGE_936 is not set
1199# CONFIG_NLS_CODEPAGE_950 is not set
1200# CONFIG_NLS_CODEPAGE_932 is not set
1201# CONFIG_NLS_CODEPAGE_949 is not set
1202# CONFIG_NLS_CODEPAGE_874 is not set
1203# CONFIG_NLS_ISO8859_8 is not set
1204# CONFIG_NLS_CODEPAGE_1250 is not set
1205# CONFIG_NLS_CODEPAGE_1251 is not set
1206# CONFIG_NLS_ASCII is not set
1207# CONFIG_NLS_ISO8859_1 is not set
1208# CONFIG_NLS_ISO8859_2 is not set
1209# CONFIG_NLS_ISO8859_3 is not set
1210# CONFIG_NLS_ISO8859_4 is not set
1211# CONFIG_NLS_ISO8859_5 is not set
1212# CONFIG_NLS_ISO8859_6 is not set
1213# CONFIG_NLS_ISO8859_7 is not set
1214# CONFIG_NLS_ISO8859_9 is not set
1215# CONFIG_NLS_ISO8859_13 is not set
1216# CONFIG_NLS_ISO8859_14 is not set
1217# CONFIG_NLS_ISO8859_15 is not set
1218# CONFIG_NLS_KOI8_R is not set
1219# CONFIG_NLS_KOI8_U is not set
1220# CONFIG_NLS_UTF8 is not set
1221
1222#
1223# Distributed Lock Manager
1224#
1225# CONFIG_DLM is not set
1226
1227#
1228# Profiling support
1229#
1230# CONFIG_PROFILING is not set
1231
1232#
1233# Kernel hacking
1234#
1235CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1236# CONFIG_PRINTK_TIME is not set
1237CONFIG_ENABLE_MUST_CHECK=y
1238# CONFIG_MAGIC_SYSRQ is not set
1239# CONFIG_UNUSED_SYMBOLS is not set
1240# CONFIG_DEBUG_FS is not set
1241# CONFIG_HEADERS_CHECK is not set
1242# CONFIG_DEBUG_KERNEL is not set
1243CONFIG_LOG_BUF_SHIFT=14
1244# CONFIG_DEBUG_BUGVERBOSE is not set
1245CONFIG_SH_STANDARD_BIOS=y
1246# CONFIG_EARLY_SCIF_CONSOLE is not set
1247# CONFIG_EARLY_PRINTK is not set
1248# CONFIG_SH_KGDB is not set
1249
1250#
1251# Security options
1252#
1253# CONFIG_KEYS is not set
1254# CONFIG_SECURITY is not set
1255
1256#
1257# Cryptographic options
1258#
1259# CONFIG_CRYPTO is not set
1260
1261#
1262# Library routines
1263#
1264CONFIG_BITREVERSE=y
1265# CONFIG_CRC_CCITT is not set
1266# CONFIG_CRC16 is not set
1267CONFIG_CRC32=y
1268# CONFIG_LIBCRC32C is not set
1269CONFIG_PLIST=y
1270CONFIG_HAS_IOMEM=y
1271CONFIG_HAS_IOPORT=y
diff --git a/arch/sh/configs/r7780rp_defconfig b/arch/sh/configs/r7780rp_defconfig
index 2b75b4896ba5..48c6a2194c98 100644
--- a/arch/sh/configs/r7780rp_defconfig
+++ b/arch/sh/configs/r7780rp_defconfig
@@ -1,10 +1,11 @@
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.21-rc7
4# Wed Dec 6 11:59:38 2006 4# Tue May 1 12:28:39 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
@@ -13,6 +14,8 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y
13# CONFIG_GENERIC_TIME is not set 14# CONFIG_GENERIC_TIME is not set
14CONFIG_STACKTRACE_SUPPORT=y 15CONFIG_STACKTRACE_SUPPORT=y
15CONFIG_LOCKDEP_SUPPORT=y 16CONFIG_LOCKDEP_SUPPORT=y
17# CONFIG_ARCH_HAS_ILOG2_U32 is not set
18# CONFIG_ARCH_HAS_ILOG2_U64 is not set
16CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
17 20
18# 21#
@@ -31,6 +34,7 @@ CONFIG_LOCALVERSION_AUTO=y
31CONFIG_SWAP=y 34CONFIG_SWAP=y
32CONFIG_SYSVIPC=y 35CONFIG_SYSVIPC=y
33# CONFIG_IPC_NS is not set 36# CONFIG_IPC_NS is not set
37CONFIG_SYSVIPC_SYSCTL=y
34# CONFIG_POSIX_MQUEUE is not set 38# CONFIG_POSIX_MQUEUE is not set
35CONFIG_BSD_PROCESS_ACCT=y 39CONFIG_BSD_PROCESS_ACCT=y
36# CONFIG_BSD_PROCESS_ACCT_V3 is not set 40# CONFIG_BSD_PROCESS_ACCT_V3 is not set
@@ -41,7 +45,7 @@ CONFIG_IKCONFIG=y
41CONFIG_IKCONFIG_PROC=y 45CONFIG_IKCONFIG_PROC=y
42# CONFIG_SYSFS_DEPRECATED is not set 46# CONFIG_SYSFS_DEPRECATED is not set
43# CONFIG_RELAY is not set 47# CONFIG_RELAY is not set
44CONFIG_INITRAMFS_SOURCE="" 48# CONFIG_BLK_DEV_INITRD is not set
45CONFIG_CC_OPTIMIZE_FOR_SIZE=y 49CONFIG_CC_OPTIMIZE_FOR_SIZE=y
46CONFIG_SYSCTL=y 50CONFIG_SYSCTL=y
47CONFIG_EMBEDDED=y 51CONFIG_EMBEDDED=y
@@ -99,23 +103,23 @@ CONFIG_DEFAULT_IOSCHED="noop"
99# System type 103# System type
100# 104#
101# CONFIG_SH_SOLUTION_ENGINE is not set 105# CONFIG_SH_SOLUTION_ENGINE is not set
106# CONFIG_SH_7722_SOLUTION_ENGINE is not set
102# CONFIG_SH_7751_SOLUTION_ENGINE is not set 107# CONFIG_SH_7751_SOLUTION_ENGINE is not set
108# CONFIG_SH_7780_SOLUTION_ENGINE is not set
103# CONFIG_SH_7300_SOLUTION_ENGINE is not set 109# CONFIG_SH_7300_SOLUTION_ENGINE is not set
104# CONFIG_SH_7343_SOLUTION_ENGINE is not set 110# CONFIG_SH_7343_SOLUTION_ENGINE is not set
105# CONFIG_SH_73180_SOLUTION_ENGINE is not set 111# CONFIG_SH_73180_SOLUTION_ENGINE is not set
106# CONFIG_SH_7751_SYSTEMH is not set 112# CONFIG_SH_7751_SYSTEMH is not set
107# CONFIG_SH_HP6XX is not set 113# CONFIG_SH_HP6XX is not set
108# CONFIG_SH_EC3104 is not set
109# CONFIG_SH_SATURN is not set 114# CONFIG_SH_SATURN is not set
110# CONFIG_SH_DREAMCAST is not set 115# CONFIG_SH_DREAMCAST is not set
111# CONFIG_SH_BIGSUR is not set
112# CONFIG_SH_MPC1211 is not set 116# CONFIG_SH_MPC1211 is not set
113# CONFIG_SH_SH03 is not set 117# CONFIG_SH_SH03 is not set
114# CONFIG_SH_SECUREEDGE5410 is not set 118# CONFIG_SH_SECUREEDGE5410 is not set
115# CONFIG_SH_HS7751RVOIP is not set 119# CONFIG_SH_HS7751RVOIP is not set
116# CONFIG_SH_7710VOIPGW is not set 120# CONFIG_SH_7710VOIPGW is not set
117# CONFIG_SH_RTS7751R2D is not set 121# CONFIG_SH_RTS7751R2D is not set
118CONFIG_SH_R7780RP=y 122CONFIG_SH_HIGHLANDER=y
119# CONFIG_SH_EDOSK7705 is not set 123# CONFIG_SH_EDOSK7705 is not set
120# CONFIG_SH_SH4202_MICRODEV is not set 124# CONFIG_SH_SH4202_MICRODEV is not set
121# CONFIG_SH_LANDISK is not set 125# CONFIG_SH_LANDISK is not set
@@ -123,7 +127,11 @@ CONFIG_SH_R7780RP=y
123# CONFIG_SH_SHMIN is not set 127# CONFIG_SH_SHMIN is not set
124# CONFIG_SH_7206_SOLUTION_ENGINE is not set 128# CONFIG_SH_7206_SOLUTION_ENGINE is not set
125# CONFIG_SH_7619_SOLUTION_ENGINE is not set 129# CONFIG_SH_7619_SOLUTION_ENGINE is not set
130# CONFIG_SH_LBOX_RE2 is not set
126# CONFIG_SH_UNKNOWN is not set 131# CONFIG_SH_UNKNOWN is not set
132CONFIG_SH_R7780RP=y
133# CONFIG_SH_R7780MP is not set
134# CONFIG_SH_R7785RP is not set
127 135
128# 136#
129# Processor selection 137# Processor selection
@@ -152,6 +160,7 @@ CONFIG_CPU_SH4A=y
152# CONFIG_CPU_SUBTYPE_SH7708 is not set 160# CONFIG_CPU_SUBTYPE_SH7708 is not set
153# CONFIG_CPU_SUBTYPE_SH7709 is not set 161# CONFIG_CPU_SUBTYPE_SH7709 is not set
154# CONFIG_CPU_SUBTYPE_SH7710 is not set 162# CONFIG_CPU_SUBTYPE_SH7710 is not set
163# CONFIG_CPU_SUBTYPE_SH7712 is not set
155 164
156# 165#
157# SH-4 Processor Support 166# SH-4 Processor Support
@@ -183,6 +192,7 @@ CONFIG_CPU_SUBTYPE_SH7780=y
183# 192#
184# CONFIG_CPU_SUBTYPE_SH73180 is not set 193# CONFIG_CPU_SUBTYPE_SH73180 is not set
185# CONFIG_CPU_SUBTYPE_SH7343 is not set 194# CONFIG_CPU_SUBTYPE_SH7343 is not set
195# CONFIG_CPU_SUBTYPE_SH7722 is not set
186 196
187# 197#
188# Memory management options 198# Memory management options
@@ -193,6 +203,8 @@ CONFIG_MEMORY_START=0x08000000
193CONFIG_MEMORY_SIZE=0x08000000 203CONFIG_MEMORY_SIZE=0x08000000
194# CONFIG_32BIT is not set 204# CONFIG_32BIT is not set
195CONFIG_VSYSCALL=y 205CONFIG_VSYSCALL=y
206CONFIG_ARCH_FLATMEM_ENABLE=y
207CONFIG_ARCH_POPULATES_NODE_MAP=y
196CONFIG_PAGE_SIZE_4KB=y 208CONFIG_PAGE_SIZE_4KB=y
197# CONFIG_PAGE_SIZE_8KB is not set 209# CONFIG_PAGE_SIZE_8KB is not set
198# CONFIG_PAGE_SIZE_64KB is not set 210# CONFIG_PAGE_SIZE_64KB is not set
@@ -210,6 +222,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y
210# CONFIG_SPARSEMEM_STATIC is not set 222# CONFIG_SPARSEMEM_STATIC is not set
211CONFIG_SPLIT_PTLOCK_CPUS=4 223CONFIG_SPLIT_PTLOCK_CPUS=4
212# CONFIG_RESOURCES_64BIT is not set 224# CONFIG_RESOURCES_64BIT is not set
225CONFIG_ZONE_DMA_FLAG=0
213 226
214# 227#
215# Cache configuration 228# Cache configuration
@@ -226,20 +239,15 @@ CONFIG_CPU_LITTLE_ENDIAN=y
226CONFIG_SH_FPU=y 239CONFIG_SH_FPU=y
227# CONFIG_SH_DSP is not set 240# CONFIG_SH_DSP is not set
228CONFIG_SH_STORE_QUEUES=y 241CONFIG_SH_STORE_QUEUES=y
242CONFIG_SPECULATIVE_EXECUTION=y
229CONFIG_CPU_HAS_INTEVT=y 243CONFIG_CPU_HAS_INTEVT=y
230CONFIG_CPU_HAS_INTC2_IRQ=y 244CONFIG_CPU_HAS_INTC2_IRQ=y
231CONFIG_CPU_HAS_SR_RB=y 245CONFIG_CPU_HAS_SR_RB=y
232CONFIG_CPU_HAS_PTEA=y
233 246
234# 247#
235# Timer support 248# Timer and clock configuration
236# 249#
237CONFIG_SH_TMU=y 250CONFIG_SH_TMU=y
238
239#
240# R7780RP options
241#
242CONFIG_SH_R7780MP=y
243CONFIG_SH_TIMER_IRQ=28 251CONFIG_SH_TIMER_IRQ=28
244CONFIG_NO_IDLE_HZ=y 252CONFIG_NO_IDLE_HZ=y
245CONFIG_SH_PCLK_FREQ=32000000 253CONFIG_SH_PCLK_FREQ=32000000
@@ -262,6 +270,7 @@ CONFIG_SH_PCLK_FREQ=32000000
262# 270#
263# Additional SuperH Device Drivers 271# Additional SuperH Device Drivers
264# 272#
273# CONFIG_HEARTBEAT is not set
265CONFIG_PUSH_SWITCH=y 274CONFIG_PUSH_SWITCH=y
266 275
267# 276#
@@ -269,9 +278,11 @@ CONFIG_PUSH_SWITCH=y
269# 278#
270# CONFIG_HZ_100 is not set 279# CONFIG_HZ_100 is not set
271CONFIG_HZ_250=y 280CONFIG_HZ_250=y
281# CONFIG_HZ_300 is not set
272# CONFIG_HZ_1000 is not set 282# CONFIG_HZ_1000 is not set
273CONFIG_HZ=250 283CONFIG_HZ=250
274CONFIG_KEXEC=y 284CONFIG_KEXEC=y
285# CONFIG_CRASH_DUMP is not set
275# CONFIG_SMP is not set 286# CONFIG_SMP is not set
276# CONFIG_PREEMPT_NONE is not set 287# CONFIG_PREEMPT_NONE is not set
277# CONFIG_PREEMPT_VOLUNTARY is not set 288# CONFIG_PREEMPT_VOLUNTARY is not set
@@ -294,7 +305,6 @@ CONFIG_PCI=y
294CONFIG_SH_PCIDMA_NONCOHERENT=y 305CONFIG_SH_PCIDMA_NONCOHERENT=y
295CONFIG_PCI_AUTO=y 306CONFIG_PCI_AUTO=y
296CONFIG_PCI_AUTO_UPDATE_RESOURCES=y 307CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
297# CONFIG_PCI_MULTITHREAD_PROBE is not set
298# CONFIG_PCI_DEBUG is not set 308# CONFIG_PCI_DEBUG is not set
299 309
300# 310#
@@ -334,6 +344,7 @@ CONFIG_UNIX=y
334CONFIG_XFRM=y 344CONFIG_XFRM=y
335# CONFIG_XFRM_USER is not set 345# CONFIG_XFRM_USER is not set
336# CONFIG_XFRM_SUB_POLICY is not set 346# CONFIG_XFRM_SUB_POLICY is not set
347# CONFIG_XFRM_MIGRATE is not set
337# CONFIG_NET_KEY is not set 348# CONFIG_NET_KEY is not set
338CONFIG_INET=y 349CONFIG_INET=y
339# CONFIG_IP_MULTICAST is not set 350# CONFIG_IP_MULTICAST is not set
@@ -425,6 +436,7 @@ CONFIG_STANDALONE=y
425CONFIG_PREVENT_FIRMWARE_BUILD=y 436CONFIG_PREVENT_FIRMWARE_BUILD=y
426CONFIG_FW_LOADER=m 437CONFIG_FW_LOADER=m
427# CONFIG_DEBUG_DRIVER is not set 438# CONFIG_DEBUG_DRIVER is not set
439# CONFIG_DEBUG_DEVRES is not set
428# CONFIG_SYS_HYPERVISOR is not set 440# CONFIG_SYS_HYPERVISOR is not set
429 441
430# 442#
@@ -445,6 +457,7 @@ CONFIG_FW_LOADER=m
445# 457#
446# Plug and Play support 458# Plug and Play support
447# 459#
460# CONFIG_PNPACPI is not set
448 461
449# 462#
450# Block devices 463# Block devices
@@ -461,7 +474,6 @@ CONFIG_BLK_DEV_RAM=y
461CONFIG_BLK_DEV_RAM_COUNT=16 474CONFIG_BLK_DEV_RAM_COUNT=16
462CONFIG_BLK_DEV_RAM_SIZE=4096 475CONFIG_BLK_DEV_RAM_SIZE=4096
463CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 476CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
464# CONFIG_BLK_DEV_INITRD is not set
465# CONFIG_CDROM_PKTCDVD is not set 477# CONFIG_CDROM_PKTCDVD is not set
466# CONFIG_ATA_OVER_ETH is not set 478# CONFIG_ATA_OVER_ETH is not set
467 479
@@ -481,6 +493,7 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
481# 493#
482# CONFIG_RAID_ATTRS is not set 494# CONFIG_RAID_ATTRS is not set
483CONFIG_SCSI=y 495CONFIG_SCSI=y
496# CONFIG_SCSI_TGT is not set
484# CONFIG_SCSI_NETLINK is not set 497# CONFIG_SCSI_NETLINK is not set
485CONFIG_SCSI_PROC_FS=y 498CONFIG_SCSI_PROC_FS=y
486 499
@@ -500,6 +513,7 @@ CONFIG_CHR_DEV_SG=m
500# CONFIG_SCSI_MULTI_LUN is not set 513# CONFIG_SCSI_MULTI_LUN is not set
501# CONFIG_SCSI_CONSTANTS is not set 514# CONFIG_SCSI_CONSTANTS is not set
502# CONFIG_SCSI_LOGGING is not set 515# CONFIG_SCSI_LOGGING is not set
516# CONFIG_SCSI_SCAN_ASYNC is not set
503 517
504# 518#
505# SCSI Transports 519# SCSI Transports
@@ -544,11 +558,13 @@ CONFIG_CHR_DEV_SG=m
544# CONFIG_SCSI_DC390T is not set 558# CONFIG_SCSI_DC390T is not set
545# CONFIG_SCSI_NSP32 is not set 559# CONFIG_SCSI_NSP32 is not set
546# CONFIG_SCSI_DEBUG is not set 560# CONFIG_SCSI_DEBUG is not set
561# CONFIG_SCSI_SRP is not set
547 562
548# 563#
549# Serial ATA (prod) and Parallel ATA (experimental) drivers 564# Serial ATA (prod) and Parallel ATA (experimental) drivers
550# 565#
551CONFIG_ATA=y 566CONFIG_ATA=y
567# CONFIG_ATA_NONSTANDARD is not set
552# CONFIG_SATA_AHCI is not set 568# CONFIG_SATA_AHCI is not set
553# CONFIG_SATA_SVW is not set 569# CONFIG_SATA_SVW is not set
554# CONFIG_ATA_PIIX is not set 570# CONFIG_ATA_PIIX is not set
@@ -564,6 +580,7 @@ CONFIG_SATA_SIL=y
564# CONFIG_SATA_ULI is not set 580# CONFIG_SATA_ULI is not set
565# CONFIG_SATA_VIA is not set 581# CONFIG_SATA_VIA is not set
566# CONFIG_SATA_VITESSE is not set 582# CONFIG_SATA_VITESSE is not set
583# CONFIG_SATA_INIC162X is not set
567# CONFIG_PATA_ALI is not set 584# CONFIG_PATA_ALI is not set
568# CONFIG_PATA_AMD is not set 585# CONFIG_PATA_AMD is not set
569# CONFIG_PATA_ARTOP is not set 586# CONFIG_PATA_ARTOP is not set
@@ -579,6 +596,7 @@ CONFIG_SATA_SIL=y
579# CONFIG_PATA_HPT3X2N is not set 596# CONFIG_PATA_HPT3X2N is not set
580# CONFIG_PATA_HPT3X3 is not set 597# CONFIG_PATA_HPT3X3 is not set
581# CONFIG_PATA_IT821X is not set 598# CONFIG_PATA_IT821X is not set
599# CONFIG_PATA_IT8213 is not set
582# CONFIG_PATA_JMICRON is not set 600# CONFIG_PATA_JMICRON is not set
583# CONFIG_PATA_TRIFLEX is not set 601# CONFIG_PATA_TRIFLEX is not set
584# CONFIG_PATA_MARVELL is not set 602# CONFIG_PATA_MARVELL is not set
@@ -685,6 +703,7 @@ CONFIG_8139TOO_8129=y
685CONFIG_VIA_RHINE=m 703CONFIG_VIA_RHINE=m
686CONFIG_VIA_RHINE_MMIO=y 704CONFIG_VIA_RHINE_MMIO=y
687# CONFIG_VIA_RHINE_NAPI is not set 705# CONFIG_VIA_RHINE_NAPI is not set
706# CONFIG_SC92031 is not set
688 707
689# 708#
690# Ethernet (1000 Mbit) 709# Ethernet (1000 Mbit)
@@ -707,11 +726,13 @@ CONFIG_R8169=y
707# CONFIG_TIGON3 is not set 726# CONFIG_TIGON3 is not set
708# CONFIG_BNX2 is not set 727# CONFIG_BNX2 is not set
709# CONFIG_QLA3XXX is not set 728# CONFIG_QLA3XXX is not set
729# CONFIG_ATL1 is not set
710 730
711# 731#
712# Ethernet (10000 Mbit) 732# Ethernet (10000 Mbit)
713# 733#
714# CONFIG_CHELSIO_T1 is not set 734# CONFIG_CHELSIO_T1 is not set
735# CONFIG_CHELSIO_T3 is not set
715# CONFIG_IXGB is not set 736# CONFIG_IXGB is not set
716# CONFIG_S2IO is not set 737# CONFIG_S2IO is not set
717# CONFIG_MYRI10GE is not set 738# CONFIG_MYRI10GE is not set
@@ -889,10 +910,16 @@ CONFIG_HWMON=y
889# CONFIG_HWMON_VID is not set 910# CONFIG_HWMON_VID is not set
890# CONFIG_SENSORS_ABITUGURU is not set 911# CONFIG_SENSORS_ABITUGURU is not set
891# CONFIG_SENSORS_F71805F is not set 912# CONFIG_SENSORS_F71805F is not set
913# CONFIG_SENSORS_PC87427 is not set
892# CONFIG_SENSORS_VT1211 is not set 914# CONFIG_SENSORS_VT1211 is not set
893# CONFIG_HWMON_DEBUG_CHIP is not set 915# CONFIG_HWMON_DEBUG_CHIP is not set
894 916
895# 917#
918# Multifunction device drivers
919#
920# CONFIG_MFD_SM501 is not set
921
922#
896# Multimedia devices 923# Multimedia devices
897# 924#
898# CONFIG_VIDEO_DEV is not set 925# CONFIG_VIDEO_DEV is not set
@@ -905,9 +932,8 @@ CONFIG_HWMON=y
905# 932#
906# Graphics support 933# Graphics support
907# 934#
908CONFIG_FIRMWARE_EDID=y
909# CONFIG_FB is not set
910# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 935# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
936# CONFIG_FB is not set
911 937
912# 938#
913# Sound 939# Sound
@@ -923,9 +949,8 @@ CONFIG_SOUND=m
923# Open Sound System 949# Open Sound System
924# 950#
925CONFIG_SOUND_PRIME=m 951CONFIG_SOUND_PRIME=m
926# CONFIG_OSS_OBSOLETE_DRIVER is not set 952# CONFIG_OBSOLETE_OSS is not set
927# CONFIG_SOUND_BT878 is not set 953# CONFIG_SOUND_BT878 is not set
928# CONFIG_SOUND_ES1371 is not set
929# CONFIG_SOUND_ICH is not set 954# CONFIG_SOUND_ICH is not set
930# CONFIG_SOUND_TRIDENT is not set 955# CONFIG_SOUND_TRIDENT is not set
931# CONFIG_SOUND_MSNDCLAS is not set 956# CONFIG_SOUND_MSNDCLAS is not set
@@ -933,6 +958,12 @@ CONFIG_SOUND_PRIME=m
933# CONFIG_SOUND_VIA82CXXX is not set 958# CONFIG_SOUND_VIA82CXXX is not set
934 959
935# 960#
961# HID Devices
962#
963CONFIG_HID=y
964# CONFIG_HID_DEBUG is not set
965
966#
936# USB support 967# USB support
937# 968#
938CONFIG_USB_ARCH_HAS_HCD=y 969CONFIG_USB_ARCH_HAS_HCD=y
@@ -1017,6 +1048,14 @@ CONFIG_RTC_DRV_SH=y
1017# 1048#
1018 1049
1019# 1050#
1051# Auxiliary Display support
1052#
1053
1054#
1055# Virtualization
1056#
1057
1058#
1020# File systems 1059# File systems
1021# 1060#
1022CONFIG_EXT2_FS=y 1061CONFIG_EXT2_FS=y
@@ -1175,6 +1214,11 @@ CONFIG_NLS_ISO8859_1=y
1175# CONFIG_NLS_UTF8 is not set 1214# CONFIG_NLS_UTF8 is not set
1176 1215
1177# 1216#
1217# Distributed Lock Manager
1218#
1219# CONFIG_DLM is not set
1220
1221#
1178# Profiling support 1222# Profiling support
1179# 1223#
1180CONFIG_PROFILING=y 1224CONFIG_PROFILING=y
@@ -1184,19 +1228,22 @@ CONFIG_OPROFILE=m
1184# Kernel hacking 1228# Kernel hacking
1185# 1229#
1186CONFIG_TRACE_IRQFLAGS_SUPPORT=y 1230CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1187CONFIG_PRINTK_TIME=y 1231# CONFIG_PRINTK_TIME is not set
1188CONFIG_ENABLE_MUST_CHECK=y 1232CONFIG_ENABLE_MUST_CHECK=y
1189CONFIG_MAGIC_SYSRQ=y 1233CONFIG_MAGIC_SYSRQ=y
1190# CONFIG_UNUSED_SYMBOLS is not set 1234# CONFIG_UNUSED_SYMBOLS is not set
1235CONFIG_DEBUG_FS=y
1236# CONFIG_HEADERS_CHECK is not set
1191CONFIG_DEBUG_KERNEL=y 1237CONFIG_DEBUG_KERNEL=y
1238# CONFIG_DEBUG_SHIRQ is not set
1192CONFIG_LOG_BUF_SHIFT=14 1239CONFIG_LOG_BUF_SHIFT=14
1193CONFIG_DETECT_SOFTLOCKUP=y 1240CONFIG_DETECT_SOFTLOCKUP=y
1194# CONFIG_SCHEDSTATS is not set 1241# CONFIG_SCHEDSTATS is not set
1242# CONFIG_TIMER_STATS is not set
1195# CONFIG_DEBUG_SLAB is not set 1243# CONFIG_DEBUG_SLAB is not set
1196# CONFIG_DEBUG_PREEMPT is not set 1244# CONFIG_DEBUG_PREEMPT is not set
1197# CONFIG_DEBUG_SPINLOCK is not set 1245# CONFIG_DEBUG_SPINLOCK is not set
1198# CONFIG_DEBUG_MUTEXES is not set 1246# CONFIG_DEBUG_MUTEXES is not set
1199# CONFIG_DEBUG_RWSEMS is not set
1200# CONFIG_DEBUG_LOCK_ALLOC is not set 1247# CONFIG_DEBUG_LOCK_ALLOC is not set
1201# CONFIG_PROVE_LOCKING is not set 1248# CONFIG_PROVE_LOCKING is not set
1202# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1249# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
@@ -1204,19 +1251,19 @@ CONFIG_DETECT_SOFTLOCKUP=y
1204# CONFIG_DEBUG_KOBJECT is not set 1251# CONFIG_DEBUG_KOBJECT is not set
1205CONFIG_DEBUG_BUGVERBOSE=y 1252CONFIG_DEBUG_BUGVERBOSE=y
1206CONFIG_DEBUG_INFO=y 1253CONFIG_DEBUG_INFO=y
1207CONFIG_DEBUG_FS=y
1208# CONFIG_DEBUG_VM is not set 1254# CONFIG_DEBUG_VM is not set
1209# CONFIG_DEBUG_LIST is not set 1255# CONFIG_DEBUG_LIST is not set
1210CONFIG_FRAME_POINTER=y 1256# CONFIG_FRAME_POINTER is not set
1211CONFIG_FORCED_INLINING=y 1257CONFIG_FORCED_INLINING=y
1212# CONFIG_HEADERS_CHECK is not set
1213# CONFIG_RCU_TORTURE_TEST is not set 1258# CONFIG_RCU_TORTURE_TEST is not set
1214# CONFIG_SH_STANDARD_BIOS is not set 1259# CONFIG_FAULT_INJECTION is not set
1260CONFIG_SH_STANDARD_BIOS=y
1215# CONFIG_EARLY_SCIF_CONSOLE is not set 1261# CONFIG_EARLY_SCIF_CONSOLE is not set
1262CONFIG_EARLY_PRINTK=y
1216CONFIG_DEBUG_STACKOVERFLOW=y 1263CONFIG_DEBUG_STACKOVERFLOW=y
1217# CONFIG_DEBUG_STACK_USAGE is not set 1264# CONFIG_DEBUG_STACK_USAGE is not set
1218# CONFIG_4KSTACKS is not set 1265# CONFIG_4KSTACKS is not set
1219# CONFIG_KGDB is not set 1266# CONFIG_SH_KGDB is not set
1220 1267
1221# 1268#
1222# Security options 1269# Security options
@@ -1233,6 +1280,7 @@ CONFIG_CRYPTO_BLKCIPHER=y
1233CONFIG_CRYPTO_HASH=y 1280CONFIG_CRYPTO_HASH=y
1234CONFIG_CRYPTO_MANAGER=y 1281CONFIG_CRYPTO_MANAGER=y
1235CONFIG_CRYPTO_HMAC=y 1282CONFIG_CRYPTO_HMAC=y
1283# CONFIG_CRYPTO_XCBC is not set
1236# CONFIG_CRYPTO_NULL is not set 1284# CONFIG_CRYPTO_NULL is not set
1237# CONFIG_CRYPTO_MD4 is not set 1285# CONFIG_CRYPTO_MD4 is not set
1238CONFIG_CRYPTO_MD5=y 1286CONFIG_CRYPTO_MD5=y
@@ -1241,9 +1289,13 @@ CONFIG_CRYPTO_MD5=y
1241# CONFIG_CRYPTO_SHA512 is not set 1289# CONFIG_CRYPTO_SHA512 is not set
1242# CONFIG_CRYPTO_WP512 is not set 1290# CONFIG_CRYPTO_WP512 is not set
1243# CONFIG_CRYPTO_TGR192 is not set 1291# CONFIG_CRYPTO_TGR192 is not set
1292# CONFIG_CRYPTO_GF128MUL is not set
1244CONFIG_CRYPTO_ECB=m 1293CONFIG_CRYPTO_ECB=m
1245CONFIG_CRYPTO_CBC=y 1294CONFIG_CRYPTO_CBC=y
1295CONFIG_CRYPTO_PCBC=m
1296# CONFIG_CRYPTO_LRW is not set
1246CONFIG_CRYPTO_DES=y 1297CONFIG_CRYPTO_DES=y
1298# CONFIG_CRYPTO_FCRYPT is not set
1247# CONFIG_CRYPTO_BLOWFISH is not set 1299# CONFIG_CRYPTO_BLOWFISH is not set
1248# CONFIG_CRYPTO_TWOFISH is not set 1300# CONFIG_CRYPTO_TWOFISH is not set
1249# CONFIG_CRYPTO_SERPENT is not set 1301# CONFIG_CRYPTO_SERPENT is not set
@@ -1257,6 +1309,7 @@ CONFIG_CRYPTO_DES=y
1257# CONFIG_CRYPTO_DEFLATE is not set 1309# CONFIG_CRYPTO_DEFLATE is not set
1258# CONFIG_CRYPTO_MICHAEL_MIC is not set 1310# CONFIG_CRYPTO_MICHAEL_MIC is not set
1259# CONFIG_CRYPTO_CRC32C is not set 1311# CONFIG_CRYPTO_CRC32C is not set
1312# CONFIG_CRYPTO_CAMELLIA is not set
1260# CONFIG_CRYPTO_TEST is not set 1313# CONFIG_CRYPTO_TEST is not set
1261 1314
1262# 1315#
@@ -1266,7 +1319,10 @@ CONFIG_CRYPTO_DES=y
1266# 1319#
1267# Library routines 1320# Library routines
1268# 1321#
1322CONFIG_BITREVERSE=y
1269# CONFIG_CRC_CCITT is not set 1323# CONFIG_CRC_CCITT is not set
1270# CONFIG_CRC16 is not set 1324# CONFIG_CRC16 is not set
1271CONFIG_CRC32=y 1325CONFIG_CRC32=y
1272# CONFIG_LIBCRC32C is not set 1326# CONFIG_LIBCRC32C is not set
1327CONFIG_HAS_IOMEM=y
1328CONFIG_HAS_IOPORT=y
diff --git a/arch/sh/configs/r7785rp_defconfig b/arch/sh/configs/r7785rp_defconfig
new file mode 100644
index 000000000000..0f5ec649daf8
--- /dev/null
+++ b/arch/sh/configs/r7785rp_defconfig
@@ -0,0 +1,1334 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.21-rc3
4# Mon Mar 12 14:26:33 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
14# CONFIG_GENERIC_TIME is not set
15CONFIG_STACKTRACE_SUPPORT=y
16CONFIG_LOCKDEP_SUPPORT=y
17# CONFIG_ARCH_HAS_ILOG2_U32 is not set
18# CONFIG_ARCH_HAS_ILOG2_U64 is not set
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20
21#
22# Code maturity level options
23#
24CONFIG_EXPERIMENTAL=y
25CONFIG_BROKEN_ON_SMP=y
26CONFIG_LOCK_KERNEL=y
27CONFIG_INIT_ENV_ARG_LIMIT=32
28
29#
30# General setup
31#
32CONFIG_LOCALVERSION=""
33CONFIG_LOCALVERSION_AUTO=y
34CONFIG_SWAP=y
35CONFIG_SYSVIPC=y
36# CONFIG_IPC_NS is not set
37CONFIG_SYSVIPC_SYSCTL=y
38# CONFIG_POSIX_MQUEUE is not set
39CONFIG_BSD_PROCESS_ACCT=y
40# CONFIG_BSD_PROCESS_ACCT_V3 is not set
41# CONFIG_TASKSTATS is not set
42# CONFIG_UTS_NS is not set
43# CONFIG_AUDIT is not set
44CONFIG_IKCONFIG=y
45CONFIG_IKCONFIG_PROC=y
46# CONFIG_SYSFS_DEPRECATED is not set
47# CONFIG_RELAY is not set
48# CONFIG_BLK_DEV_INITRD is not set
49CONFIG_CC_OPTIMIZE_FOR_SIZE=y
50CONFIG_SYSCTL=y
51CONFIG_EMBEDDED=y
52CONFIG_UID16=y
53# CONFIG_SYSCTL_SYSCALL is not set
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
62# CONFIG_FUTEX is not set
63# CONFIG_EPOLL is not set
64CONFIG_SHMEM=y
65CONFIG_SLAB=y
66CONFIG_VM_EVENT_COUNTERS=y
67# CONFIG_TINY_SHMEM is not set
68CONFIG_BASE_SMALL=0
69# CONFIG_SLOB is not set
70
71#
72# Loadable module support
73#
74CONFIG_MODULES=y
75CONFIG_MODULE_UNLOAD=y
76# CONFIG_MODULE_FORCE_UNLOAD is not set
77# CONFIG_MODVERSIONS is not set
78# CONFIG_MODULE_SRCVERSION_ALL is not set
79CONFIG_KMOD=y
80
81#
82# Block layer
83#
84CONFIG_BLOCK=y
85# CONFIG_LBD is not set
86# CONFIG_BLK_DEV_IO_TRACE is not set
87# CONFIG_LSF is not set
88
89#
90# IO Schedulers
91#
92CONFIG_IOSCHED_NOOP=y
93# CONFIG_IOSCHED_AS is not set
94# CONFIG_IOSCHED_DEADLINE is not set
95# CONFIG_IOSCHED_CFQ is not set
96# CONFIG_DEFAULT_AS is not set
97# CONFIG_DEFAULT_DEADLINE is not set
98# CONFIG_DEFAULT_CFQ is not set
99CONFIG_DEFAULT_NOOP=y
100CONFIG_DEFAULT_IOSCHED="noop"
101
102#
103# System type
104#
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
137CONFIG_CPU_SH4A=y
138CONFIG_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
145
146#
147# SH-2A Processor Support
148#
149# CONFIG_CPU_SUBTYPE_SH7206 is not set
150
151#
152# SH-3 Processor Support
153#
154# CONFIG_CPU_SUBTYPE_SH7300 is not set
155# CONFIG_CPU_SUBTYPE_SH7705 is not set
156# CONFIG_CPU_SUBTYPE_SH7706 is not set
157# CONFIG_CPU_SUBTYPE_SH7707 is not set
158# CONFIG_CPU_SUBTYPE_SH7708 is not set
159# CONFIG_CPU_SUBTYPE_SH7709 is not set
160# CONFIG_CPU_SUBTYPE_SH7710 is not set
161
162#
163# SH-4 Processor Support
164#
165# CONFIG_CPU_SUBTYPE_SH7750 is not set
166# CONFIG_CPU_SUBTYPE_SH7091 is not set
167# CONFIG_CPU_SUBTYPE_SH7750R is not set
168# CONFIG_CPU_SUBTYPE_SH7750S is not set
169# CONFIG_CPU_SUBTYPE_SH7751 is not set
170# CONFIG_CPU_SUBTYPE_SH7751R is not set
171# CONFIG_CPU_SUBTYPE_SH7760 is not set
172# CONFIG_CPU_SUBTYPE_SH4_202 is not set
173
174#
175# ST40 Processor Support
176#
177# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
178# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
179
180#
181# SH-4A Processor Support
182#
183# CONFIG_CPU_SUBTYPE_SH7770 is not set
184# CONFIG_CPU_SUBTYPE_SH7780 is not set
185CONFIG_CPU_SUBTYPE_SH7785=y
186
187#
188# SH4AL-DSP Processor Support
189#
190# CONFIG_CPU_SUBTYPE_SH73180 is not set
191# CONFIG_CPU_SUBTYPE_SH7343 is not set
192# CONFIG_CPU_SUBTYPE_SH7722 is not set
193
194#
195# Memory management options
196#
197CONFIG_MMU=y
198CONFIG_PAGE_OFFSET=0x80000000
199CONFIG_MEMORY_START=0x08000000
200CONFIG_MEMORY_SIZE=0x08000000
201CONFIG_32BIT=y
202# CONFIG_X2TLB is not set
203CONFIG_VSYSCALL=y
204CONFIG_PAGE_SIZE_4KB=y
205# CONFIG_PAGE_SIZE_8KB is not set
206# CONFIG_PAGE_SIZE_64KB is not set
207# CONFIG_HUGETLB_PAGE_SIZE_64K is not set
208# CONFIG_HUGETLB_PAGE_SIZE_256K is not set
209CONFIG_HUGETLB_PAGE_SIZE_1MB=y
210# CONFIG_HUGETLB_PAGE_SIZE_4MB is not set
211# CONFIG_HUGETLB_PAGE_SIZE_64MB is not set
212CONFIG_SELECT_MEMORY_MODEL=y
213CONFIG_FLATMEM_MANUAL=y
214# CONFIG_DISCONTIGMEM_MANUAL is not set
215# CONFIG_SPARSEMEM_MANUAL is not set
216CONFIG_FLATMEM=y
217CONFIG_FLAT_NODE_MEM_MAP=y
218# CONFIG_SPARSEMEM_STATIC is not set
219CONFIG_SPLIT_PTLOCK_CPUS=4
220# CONFIG_RESOURCES_64BIT is not set
221CONFIG_ZONE_DMA_FLAG=0
222
223#
224# Cache configuration
225#
226# CONFIG_SH_DIRECT_MAPPED is not set
227# CONFIG_SH_WRITETHROUGH is not set
228# CONFIG_SH_OCRAM is not set
229
230#
231# Processor features
232#
233CONFIG_CPU_LITTLE_ENDIAN=y
234# CONFIG_CPU_BIG_ENDIAN is not set
235CONFIG_SH_FPU=y
236# CONFIG_SH_DSP is not set
237CONFIG_SH_STORE_QUEUES=y
238CONFIG_CPU_HAS_INTEVT=y
239CONFIG_CPU_HAS_INTC2_IRQ=y
240CONFIG_CPU_HAS_SR_RB=y
241CONFIG_CPU_HAS_PTEA=y
242
243#
244# Timer and clock configuration
245#
246CONFIG_SH_TMU=y
247CONFIG_SH_TIMER_IRQ=28
248CONFIG_NO_IDLE_HZ=y
249CONFIG_SH_PCLK_FREQ=50000000
250
251#
252# CPU Frequency scaling
253#
254# CONFIG_CPU_FREQ is not set
255
256#
257# DMA support
258#
259# CONFIG_SH_DMA is not set
260
261#
262# Companion Chips
263#
264# CONFIG_HD6446X_SERIES is not set
265
266#
267# Additional SuperH Device Drivers
268#
269CONFIG_HEARTBEAT=y
270CONFIG_PUSH_SWITCH=y
271
272#
273# Kernel features
274#
275# CONFIG_HZ_100 is not set
276CONFIG_HZ_250=y
277# CONFIG_HZ_300 is not set
278# CONFIG_HZ_1000 is not set
279CONFIG_HZ=250
280CONFIG_KEXEC=y
281# CONFIG_SMP is not set
282# CONFIG_PREEMPT_NONE is not set
283# CONFIG_PREEMPT_VOLUNTARY is not set
284CONFIG_PREEMPT=y
285CONFIG_PREEMPT_BKL=y
286
287#
288# Boot options
289#
290CONFIG_ZERO_PAGE_OFFSET=0x00001000
291CONFIG_BOOT_LINK_OFFSET=0x00800000
292# CONFIG_UBC_WAKEUP is not set
293CONFIG_CMDLINE_BOOL=y
294CONFIG_CMDLINE="console=ttySC0,115200 root=/dev/sda1"
295
296#
297# Bus options
298#
299CONFIG_PCI=y
300CONFIG_SH_PCIDMA_NONCOHERENT=y
301CONFIG_PCI_AUTO=y
302CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
303# CONFIG_PCI_DEBUG is not set
304
305#
306# PCCARD (PCMCIA/CardBus) support
307#
308# CONFIG_PCCARD is not set
309
310#
311# PCI Hotplug Support
312#
313# CONFIG_HOTPLUG_PCI is not set
314
315#
316# Executable file formats
317#
318CONFIG_BINFMT_ELF=y
319# CONFIG_BINFMT_FLAT is not set
320# CONFIG_BINFMT_MISC is not set
321
322#
323# Power management options (EXPERIMENTAL)
324#
325# CONFIG_PM is not set
326
327#
328# Networking
329#
330CONFIG_NET=y
331
332#
333# Networking options
334#
335# CONFIG_NETDEBUG is not set
336CONFIG_PACKET=y
337# CONFIG_PACKET_MMAP is not set
338CONFIG_UNIX=y
339CONFIG_XFRM=y
340# CONFIG_XFRM_USER is not set
341# CONFIG_XFRM_SUB_POLICY is not set
342# CONFIG_XFRM_MIGRATE is not set
343# CONFIG_NET_KEY is not set
344CONFIG_INET=y
345# CONFIG_IP_MULTICAST is not set
346CONFIG_IP_ADVANCED_ROUTER=y
347CONFIG_ASK_IP_FIB_HASH=y
348# CONFIG_IP_FIB_TRIE is not set
349CONFIG_IP_FIB_HASH=y
350# CONFIG_IP_MULTIPLE_TABLES is not set
351# CONFIG_IP_ROUTE_MULTIPATH is not set
352# CONFIG_IP_ROUTE_VERBOSE is not set
353CONFIG_IP_PNP=y
354CONFIG_IP_PNP_DHCP=y
355# CONFIG_IP_PNP_BOOTP is not set
356# CONFIG_IP_PNP_RARP is not set
357# CONFIG_NET_IPIP is not set
358# CONFIG_NET_IPGRE is not set
359# CONFIG_ARPD is not set
360# CONFIG_SYN_COOKIES is not set
361# CONFIG_INET_AH is not set
362# CONFIG_INET_ESP is not set
363# CONFIG_INET_IPCOMP is not set
364# CONFIG_INET_XFRM_TUNNEL is not set
365# CONFIG_INET_TUNNEL is not set
366CONFIG_INET_XFRM_MODE_TRANSPORT=y
367CONFIG_INET_XFRM_MODE_TUNNEL=y
368CONFIG_INET_XFRM_MODE_BEET=y
369CONFIG_INET_DIAG=y
370CONFIG_INET_TCP_DIAG=y
371# CONFIG_TCP_CONG_ADVANCED is not set
372CONFIG_TCP_CONG_CUBIC=y
373CONFIG_DEFAULT_TCP_CONG="cubic"
374# CONFIG_TCP_MD5SIG is not set
375# CONFIG_IPV6 is not set
376# CONFIG_INET6_XFRM_TUNNEL is not set
377# CONFIG_INET6_TUNNEL is not set
378# CONFIG_NETWORK_SECMARK is not set
379# CONFIG_NETFILTER is not set
380
381#
382# DCCP Configuration (EXPERIMENTAL)
383#
384# CONFIG_IP_DCCP is not set
385
386#
387# SCTP Configuration (EXPERIMENTAL)
388#
389# CONFIG_IP_SCTP is not set
390
391#
392# TIPC Configuration (EXPERIMENTAL)
393#
394# CONFIG_TIPC is not set
395# CONFIG_ATM is not set
396CONFIG_BRIDGE=m
397# CONFIG_VLAN_8021Q is not set
398# CONFIG_DECNET is not set
399CONFIG_LLC=m
400# CONFIG_LLC2 is not set
401# CONFIG_IPX is not set
402# CONFIG_ATALK is not set
403# CONFIG_X25 is not set
404# CONFIG_LAPB is not set
405# CONFIG_ECONET is not set
406# CONFIG_WAN_ROUTER is not set
407
408#
409# QoS and/or fair queueing
410#
411# CONFIG_NET_SCHED is not set
412
413#
414# Network testing
415#
416# CONFIG_NET_PKTGEN is not set
417# CONFIG_HAMRADIO is not set
418# CONFIG_IRDA is not set
419# CONFIG_BT is not set
420# CONFIG_IEEE80211 is not set
421CONFIG_WIRELESS_EXT=y
422
423#
424# Device Drivers
425#
426
427#
428# Generic Driver Options
429#
430CONFIG_STANDALONE=y
431CONFIG_PREVENT_FIRMWARE_BUILD=y
432CONFIG_FW_LOADER=m
433# CONFIG_DEBUG_DRIVER is not set
434# CONFIG_DEBUG_DEVRES is not set
435# CONFIG_SYS_HYPERVISOR is not set
436
437#
438# Connector - unified userspace <-> kernelspace linker
439#
440# CONFIG_CONNECTOR is not set
441
442#
443# Memory Technology Devices (MTD)
444#
445# CONFIG_MTD is not set
446
447#
448# Parallel port support
449#
450# CONFIG_PARPORT is not set
451
452#
453# Plug and Play support
454#
455# CONFIG_PNPACPI is not set
456
457#
458# Block devices
459#
460# CONFIG_BLK_CPQ_DA is not set
461# CONFIG_BLK_CPQ_CISS_DA is not set
462# CONFIG_BLK_DEV_DAC960 is not set
463# CONFIG_BLK_DEV_UMEM is not set
464# CONFIG_BLK_DEV_COW_COMMON is not set
465# CONFIG_BLK_DEV_LOOP is not set
466# CONFIG_BLK_DEV_NBD is not set
467# CONFIG_BLK_DEV_SX8 is not set
468CONFIG_BLK_DEV_RAM=y
469CONFIG_BLK_DEV_RAM_COUNT=16
470CONFIG_BLK_DEV_RAM_SIZE=4096
471CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
472# CONFIG_CDROM_PKTCDVD is not set
473# CONFIG_ATA_OVER_ETH is not set
474
475#
476# Misc devices
477#
478# CONFIG_SGI_IOC4 is not set
479# CONFIG_TIFM_CORE is not set
480
481#
482# ATA/ATAPI/MFM/RLL support
483#
484# CONFIG_IDE is not set
485
486#
487# SCSI device support
488#
489# CONFIG_RAID_ATTRS is not set
490CONFIG_SCSI=y
491# CONFIG_SCSI_TGT is not set
492# CONFIG_SCSI_NETLINK is not set
493CONFIG_SCSI_PROC_FS=y
494
495#
496# SCSI support type (disk, tape, CD-ROM)
497#
498CONFIG_BLK_DEV_SD=y
499# CONFIG_CHR_DEV_ST is not set
500# CONFIG_CHR_DEV_OSST is not set
501# CONFIG_BLK_DEV_SR is not set
502CONFIG_CHR_DEV_SG=m
503# CONFIG_CHR_DEV_SCH is not set
504
505#
506# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
507#
508# CONFIG_SCSI_MULTI_LUN is not set
509# CONFIG_SCSI_CONSTANTS is not set
510# CONFIG_SCSI_LOGGING is not set
511# CONFIG_SCSI_SCAN_ASYNC is not set
512
513#
514# SCSI Transports
515#
516# CONFIG_SCSI_SPI_ATTRS is not set
517# CONFIG_SCSI_FC_ATTRS is not set
518# CONFIG_SCSI_ISCSI_ATTRS is not set
519# CONFIG_SCSI_SAS_ATTRS is not set
520# CONFIG_SCSI_SAS_LIBSAS is not set
521
522#
523# SCSI low-level drivers
524#
525# CONFIG_ISCSI_TCP is not set
526# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
527# CONFIG_SCSI_3W_9XXX is not set
528# CONFIG_SCSI_ACARD is not set
529# CONFIG_SCSI_AACRAID is not set
530# CONFIG_SCSI_AIC7XXX is not set
531# CONFIG_SCSI_AIC7XXX_OLD is not set
532# CONFIG_SCSI_AIC79XX is not set
533# CONFIG_SCSI_AIC94XX is not set
534# CONFIG_SCSI_DPT_I2O is not set
535# CONFIG_SCSI_ARCMSR is not set
536# CONFIG_MEGARAID_NEWGEN is not set
537# CONFIG_MEGARAID_LEGACY is not set
538# CONFIG_MEGARAID_SAS is not set
539# CONFIG_SCSI_HPTIOP is not set
540# CONFIG_SCSI_DMX3191D is not set
541# CONFIG_SCSI_FUTURE_DOMAIN is not set
542# CONFIG_SCSI_IPS is not set
543# CONFIG_SCSI_INITIO is not set
544# CONFIG_SCSI_INIA100 is not set
545# CONFIG_SCSI_STEX is not set
546# CONFIG_SCSI_SYM53C8XX_2 is not set
547# CONFIG_SCSI_IPR is not set
548# CONFIG_SCSI_QLOGIC_1280 is not set
549# CONFIG_SCSI_QLA_FC is not set
550# CONFIG_SCSI_QLA_ISCSI is not set
551# CONFIG_SCSI_LPFC is not set
552# CONFIG_SCSI_DC395x is not set
553# CONFIG_SCSI_DC390T is not set
554# CONFIG_SCSI_NSP32 is not set
555# CONFIG_SCSI_DEBUG is not set
556# CONFIG_SCSI_SRP is not set
557
558#
559# Serial ATA (prod) and Parallel ATA (experimental) drivers
560#
561CONFIG_ATA=y
562# CONFIG_ATA_NONSTANDARD is not set
563# CONFIG_SATA_AHCI is not set
564# CONFIG_SATA_SVW is not set
565# CONFIG_ATA_PIIX is not set
566# CONFIG_SATA_MV is not set
567# CONFIG_SATA_NV is not set
568# CONFIG_PDC_ADMA is not set
569# CONFIG_SATA_QSTOR is not set
570# CONFIG_SATA_PROMISE is not set
571# CONFIG_SATA_SX4 is not set
572CONFIG_SATA_SIL=y
573# CONFIG_SATA_SIL24 is not set
574# CONFIG_SATA_SIS is not set
575# CONFIG_SATA_ULI is not set
576# CONFIG_SATA_VIA is not set
577# CONFIG_SATA_VITESSE is not set
578# CONFIG_SATA_INIC162X is not set
579# CONFIG_PATA_ALI is not set
580# CONFIG_PATA_AMD is not set
581# CONFIG_PATA_ARTOP is not set
582# CONFIG_PATA_ATIIXP is not set
583# CONFIG_PATA_CMD64X is not set
584# CONFIG_PATA_CS5520 is not set
585# CONFIG_PATA_CS5530 is not set
586# CONFIG_PATA_CYPRESS is not set
587# CONFIG_PATA_EFAR is not set
588# CONFIG_ATA_GENERIC is not set
589# CONFIG_PATA_HPT366 is not set
590# CONFIG_PATA_HPT37X is not set
591# CONFIG_PATA_HPT3X2N is not set
592# CONFIG_PATA_HPT3X3 is not set
593# CONFIG_PATA_IT821X is not set
594# CONFIG_PATA_IT8213 is not set
595# CONFIG_PATA_JMICRON is not set
596# CONFIG_PATA_TRIFLEX is not set
597# CONFIG_PATA_MARVELL is not set
598# CONFIG_PATA_MPIIX is not set
599# CONFIG_PATA_OLDPIIX is not set
600# CONFIG_PATA_NETCELL is not set
601# CONFIG_PATA_NS87410 is not set
602# CONFIG_PATA_OPTI is not set
603# CONFIG_PATA_OPTIDMA is not set
604# CONFIG_PATA_PDC_OLD is not set
605# CONFIG_PATA_RADISYS is not set
606# CONFIG_PATA_RZ1000 is not set
607# CONFIG_PATA_SC1200 is not set
608# CONFIG_PATA_SERVERWORKS is not set
609# CONFIG_PATA_PDC2027X is not set
610# CONFIG_PATA_SIL680 is not set
611# CONFIG_PATA_SIS is not set
612# CONFIG_PATA_VIA is not set
613# CONFIG_PATA_WINBOND is not set
614CONFIG_PATA_PLATFORM=y
615
616#
617# Multi-device support (RAID and LVM)
618#
619# CONFIG_MD is not set
620
621#
622# Fusion MPT device support
623#
624# CONFIG_FUSION is not set
625# CONFIG_FUSION_SPI is not set
626# CONFIG_FUSION_FC is not set
627# CONFIG_FUSION_SAS is not set
628
629#
630# IEEE 1394 (FireWire) support
631#
632# CONFIG_IEEE1394 is not set
633
634#
635# I2O device support
636#
637# CONFIG_I2O is not set
638
639#
640# Network device support
641#
642CONFIG_NETDEVICES=y
643# CONFIG_DUMMY is not set
644# CONFIG_BONDING is not set
645# CONFIG_EQUALIZER is not set
646# CONFIG_TUN is not set
647
648#
649# ARCnet devices
650#
651# CONFIG_ARCNET is not set
652
653#
654# PHY device support
655#
656# CONFIG_PHYLIB is not set
657
658#
659# Ethernet (10 or 100Mbit)
660#
661CONFIG_NET_ETHERNET=y
662CONFIG_MII=y
663# CONFIG_STNIC is not set
664# CONFIG_HAPPYMEAL is not set
665# CONFIG_SUNGEM is not set
666# CONFIG_CASSINI is not set
667# CONFIG_NET_VENDOR_3COM is not set
668# CONFIG_SMC91X is not set
669
670#
671# Tulip family network device support
672#
673# CONFIG_NET_TULIP is not set
674# CONFIG_HP100 is not set
675# CONFIG_NET_PCI is not set
676
677#
678# Ethernet (1000 Mbit)
679#
680# CONFIG_ACENIC is not set
681# CONFIG_DL2K is not set
682# CONFIG_E1000 is not set
683# CONFIG_NS83820 is not set
684# CONFIG_HAMACHI is not set
685# CONFIG_YELLOWFIN is not set
686CONFIG_R8169=y
687# CONFIG_R8169_NAPI is not set
688# CONFIG_SIS190 is not set
689# CONFIG_SKGE is not set
690# CONFIG_SKY2 is not set
691# CONFIG_SK98LIN is not set
692# CONFIG_TIGON3 is not set
693# CONFIG_BNX2 is not set
694# CONFIG_QLA3XXX is not set
695# CONFIG_ATL1 is not set
696
697#
698# Ethernet (10000 Mbit)
699#
700# CONFIG_CHELSIO_T1 is not set
701# CONFIG_CHELSIO_T3 is not set
702# CONFIG_IXGB is not set
703# CONFIG_S2IO is not set
704# CONFIG_MYRI10GE is not set
705# CONFIG_NETXEN_NIC is not set
706
707#
708# Token Ring devices
709#
710# CONFIG_TR is not set
711
712#
713# Wireless LAN (non-hamradio)
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#
741# CONFIG_WAN is not set
742# CONFIG_FDDI is not set
743# CONFIG_HIPPI is not set
744# CONFIG_PPP is not set
745# CONFIG_SLIP is not set
746# CONFIG_NET_FC is not set
747# CONFIG_SHAPER is not set
748# CONFIG_NETCONSOLE is not set
749# CONFIG_NETPOLL is not set
750# CONFIG_NET_POLL_CONTROLLER is not set
751
752#
753# ISDN subsystem
754#
755# CONFIG_ISDN is not set
756
757#
758# Telephony Support
759#
760# CONFIG_PHONE is not set
761
762#
763# Input device support
764#
765CONFIG_INPUT=y
766# CONFIG_INPUT_FF_MEMLESS is not set
767
768#
769# Userland interfaces
770#
771CONFIG_INPUT_MOUSEDEV=y
772# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
773CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
774CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
775# CONFIG_INPUT_JOYDEV is not set
776# CONFIG_INPUT_TSDEV is not set
777# CONFIG_INPUT_EVDEV is not set
778# CONFIG_INPUT_EVBUG is not set
779
780#
781# Input Device Drivers
782#
783CONFIG_INPUT_KEYBOARD=y
784CONFIG_KEYBOARD_ATKBD=y
785# CONFIG_KEYBOARD_SUNKBD is not set
786# CONFIG_KEYBOARD_LKKBD is not set
787# CONFIG_KEYBOARD_XTKBD is not set
788# CONFIG_KEYBOARD_NEWTON is not set
789# CONFIG_KEYBOARD_STOWAWAY is not set
790# CONFIG_INPUT_MOUSE is not set
791# CONFIG_INPUT_JOYSTICK is not set
792# CONFIG_INPUT_TOUCHSCREEN is not set
793# CONFIG_INPUT_MISC is not set
794
795#
796# Hardware I/O ports
797#
798CONFIG_SERIO=y
799# CONFIG_SERIO_I8042 is not set
800# CONFIG_SERIO_SERPORT is not set
801# CONFIG_SERIO_PCIPS2 is not set
802CONFIG_SERIO_LIBPS2=y
803# CONFIG_SERIO_RAW is not set
804# CONFIG_GAMEPORT is not set
805
806#
807# Character devices
808#
809# CONFIG_VT is not set
810# CONFIG_SERIAL_NONSTANDARD is not set
811
812#
813# Serial drivers
814#
815# CONFIG_SERIAL_8250 is not set
816
817#
818# Non-8250 serial port support
819#
820CONFIG_SERIAL_SH_SCI=y
821CONFIG_SERIAL_SH_SCI_NR_UARTS=6
822CONFIG_SERIAL_SH_SCI_CONSOLE=y
823CONFIG_SERIAL_CORE=y
824CONFIG_SERIAL_CORE_CONSOLE=y
825# CONFIG_SERIAL_JSM is not set
826CONFIG_UNIX98_PTYS=y
827CONFIG_LEGACY_PTYS=y
828CONFIG_LEGACY_PTY_COUNT=256
829
830#
831# IPMI
832#
833# CONFIG_IPMI_HANDLER is not set
834
835#
836# Watchdog Cards
837#
838# CONFIG_WATCHDOG is not set
839CONFIG_HW_RANDOM=y
840# CONFIG_GEN_RTC is not set
841# CONFIG_DTLK is not set
842# CONFIG_R3964 is not set
843# CONFIG_APPLICOM is not set
844# CONFIG_DRM is not set
845# CONFIG_RAW_DRIVER is not set
846
847#
848# TPM devices
849#
850# CONFIG_TCG_TPM is not set
851
852#
853# I2C support
854#
855# CONFIG_I2C is not set
856
857#
858# SPI support
859#
860# CONFIG_SPI is not set
861# CONFIG_SPI_MASTER is not set
862
863#
864# Dallas's 1-wire bus
865#
866# CONFIG_W1 is not set
867
868#
869# Hardware Monitoring support
870#
871CONFIG_HWMON=y
872# CONFIG_HWMON_VID is not set
873# CONFIG_SENSORS_ABITUGURU is not set
874# CONFIG_SENSORS_F71805F is not set
875# CONFIG_SENSORS_PC87427 is not set
876# CONFIG_SENSORS_VT1211 is not set
877# CONFIG_HWMON_DEBUG_CHIP is not set
878
879#
880# Multifunction device drivers
881#
882# CONFIG_MFD_SM501 is not set
883
884#
885# Multimedia devices
886#
887# CONFIG_VIDEO_DEV is not set
888
889#
890# Digital Video Broadcasting Devices
891#
892# CONFIG_DVB is not set
893
894#
895# Graphics support
896#
897# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
898CONFIG_FB=y
899# CONFIG_FIRMWARE_EDID is not set
900# CONFIG_FB_DDC is not set
901# CONFIG_FB_CFB_FILLRECT is not set
902# CONFIG_FB_CFB_COPYAREA is not set
903# CONFIG_FB_CFB_IMAGEBLIT is not set
904# CONFIG_FB_SVGALIB is not set
905# CONFIG_FB_MACMODES is not set
906# CONFIG_FB_BACKLIGHT is not set
907# CONFIG_FB_MODE_HELPERS is not set
908# CONFIG_FB_TILEBLITTING is not set
909
910#
911# Frambuffer hardware drivers
912#
913# CONFIG_FB_CIRRUS is not set
914# CONFIG_FB_PM2 is not set
915# CONFIG_FB_CYBER2000 is not set
916# CONFIG_FB_ASILIANT is not set
917# CONFIG_FB_IMSTT is not set
918# CONFIG_FB_EPSON1355 is not set
919# CONFIG_FB_S1D13XXX is not set
920# CONFIG_FB_NVIDIA is not set
921# CONFIG_FB_RIVA is not set
922# CONFIG_FB_MATROX is not set
923# CONFIG_FB_RADEON is not set
924# CONFIG_FB_ATY128 is not set
925# CONFIG_FB_ATY is not set
926# CONFIG_FB_S3 is not set
927# CONFIG_FB_SAVAGE is not set
928# CONFIG_FB_SIS is not set
929# CONFIG_FB_NEOMAGIC is not set
930# CONFIG_FB_KYRO is not set
931# CONFIG_FB_3DFX is not set
932# CONFIG_FB_VOODOO1 is not set
933# CONFIG_FB_TRIDENT is not set
934# CONFIG_FB_VIRTUAL is not set
935
936#
937# Logo configuration
938#
939# CONFIG_LOGO is not set
940
941#
942# Sound
943#
944CONFIG_SOUND=m
945
946#
947# Advanced Linux Sound Architecture
948#
949# CONFIG_SND is not set
950
951#
952# Open Sound System
953#
954CONFIG_SOUND_PRIME=m
955# CONFIG_OBSOLETE_OSS is not set
956# CONFIG_SOUND_BT878 is not set
957# CONFIG_SOUND_ICH is not set
958# CONFIG_SOUND_TRIDENT is not set
959# CONFIG_SOUND_MSNDCLAS is not set
960# CONFIG_SOUND_MSNDPIN is not set
961# CONFIG_SOUND_VIA82CXXX is not set
962
963#
964# HID Devices
965#
966CONFIG_HID=y
967# CONFIG_HID_DEBUG is not set
968
969#
970# USB support
971#
972CONFIG_USB_ARCH_HAS_HCD=y
973CONFIG_USB_ARCH_HAS_OHCI=y
974CONFIG_USB_ARCH_HAS_EHCI=y
975# CONFIG_USB is not set
976
977#
978# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
979#
980
981#
982# USB Gadget Support
983#
984# CONFIG_USB_GADGET is not set
985
986#
987# MMC/SD Card support
988#
989# CONFIG_MMC is not set
990
991#
992# LED devices
993#
994# CONFIG_NEW_LEDS is not set
995
996#
997# LED drivers
998#
999
1000#
1001# LED Triggers
1002#
1003
1004#
1005# InfiniBand support
1006#
1007# CONFIG_INFINIBAND is not set
1008
1009#
1010# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
1011#
1012
1013#
1014# Real Time Clock
1015#
1016CONFIG_RTC_LIB=y
1017CONFIG_RTC_CLASS=y
1018CONFIG_RTC_HCTOSYS=y
1019CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
1020# CONFIG_RTC_DEBUG is not set
1021
1022#
1023# RTC interfaces
1024#
1025CONFIG_RTC_INTF_SYSFS=y
1026CONFIG_RTC_INTF_PROC=y
1027CONFIG_RTC_INTF_DEV=y
1028# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
1029
1030#
1031# RTC drivers
1032#
1033# CONFIG_RTC_DRV_DS1553 is not set
1034# CONFIG_RTC_DRV_DS1742 is not set
1035# 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
1039
1040#
1041# DMA Engine support
1042#
1043# CONFIG_DMA_ENGINE is not set
1044
1045#
1046# DMA Clients
1047#
1048
1049#
1050# DMA Devices
1051#
1052
1053#
1054# Auxiliary Display support
1055#
1056
1057#
1058# Virtualization
1059#
1060
1061#
1062# File systems
1063#
1064CONFIG_EXT2_FS=y
1065# CONFIG_EXT2_FS_XATTR is not set
1066# CONFIG_EXT2_FS_XIP is not set
1067CONFIG_EXT3_FS=y
1068CONFIG_EXT3_FS_XATTR=y
1069# CONFIG_EXT3_FS_POSIX_ACL is not set
1070# CONFIG_EXT3_FS_SECURITY is not set
1071# CONFIG_EXT4DEV_FS is not set
1072CONFIG_JBD=y
1073# CONFIG_JBD_DEBUG is not set
1074CONFIG_FS_MBCACHE=y
1075# CONFIG_REISERFS_FS is not set
1076# CONFIG_JFS_FS is not set
1077CONFIG_FS_POSIX_ACL=y
1078# CONFIG_XFS_FS is not set
1079# CONFIG_GFS2_FS is not set
1080# CONFIG_OCFS2_FS is not set
1081CONFIG_MINIX_FS=y
1082# CONFIG_ROMFS_FS is not set
1083CONFIG_INOTIFY=y
1084CONFIG_INOTIFY_USER=y
1085# CONFIG_QUOTA is not set
1086CONFIG_DNOTIFY=y
1087# CONFIG_AUTOFS_FS is not set
1088# CONFIG_AUTOFS4_FS is not set
1089CONFIG_FUSE_FS=m
1090
1091#
1092# CD-ROM/DVD Filesystems
1093#
1094# CONFIG_ISO9660_FS is not set
1095# CONFIG_UDF_FS is not set
1096
1097#
1098# DOS/FAT/NT Filesystems
1099#
1100CONFIG_FAT_FS=y
1101CONFIG_MSDOS_FS=y
1102CONFIG_VFAT_FS=y
1103CONFIG_FAT_DEFAULT_CODEPAGE=437
1104CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1105CONFIG_NTFS_FS=y
1106# CONFIG_NTFS_DEBUG is not set
1107CONFIG_NTFS_RW=y
1108
1109#
1110# Pseudo filesystems
1111#
1112CONFIG_PROC_FS=y
1113CONFIG_PROC_KCORE=y
1114CONFIG_PROC_SYSCTL=y
1115CONFIG_SYSFS=y
1116CONFIG_TMPFS=y
1117# CONFIG_TMPFS_POSIX_ACL is not set
1118CONFIG_HUGETLBFS=y
1119CONFIG_HUGETLB_PAGE=y
1120CONFIG_RAMFS=y
1121CONFIG_CONFIGFS_FS=m
1122
1123#
1124# Miscellaneous filesystems
1125#
1126# CONFIG_ADFS_FS is not set
1127# CONFIG_AFFS_FS is not set
1128# CONFIG_HFS_FS is not set
1129# CONFIG_HFSPLUS_FS is not set
1130# CONFIG_BEFS_FS is not set
1131# CONFIG_BFS_FS is not set
1132# CONFIG_EFS_FS is not set
1133# CONFIG_CRAMFS is not set
1134# CONFIG_VXFS_FS is not set
1135# CONFIG_HPFS_FS is not set
1136# CONFIG_QNX4FS_FS is not set
1137# CONFIG_SYSV_FS is not set
1138# CONFIG_UFS_FS is not set
1139
1140#
1141# Network File Systems
1142#
1143CONFIG_NFS_FS=y
1144CONFIG_NFS_V3=y
1145# CONFIG_NFS_V3_ACL is not set
1146CONFIG_NFS_V4=y
1147# CONFIG_NFS_DIRECTIO is not set
1148CONFIG_NFSD=y
1149CONFIG_NFSD_V3=y
1150# CONFIG_NFSD_V3_ACL is not set
1151CONFIG_NFSD_V4=y
1152CONFIG_NFSD_TCP=y
1153CONFIG_ROOT_NFS=y
1154CONFIG_LOCKD=y
1155CONFIG_LOCKD_V4=y
1156CONFIG_EXPORTFS=y
1157CONFIG_NFS_COMMON=y
1158CONFIG_SUNRPC=y
1159CONFIG_SUNRPC_GSS=y
1160CONFIG_RPCSEC_GSS_KRB5=y
1161# CONFIG_RPCSEC_GSS_SPKM3 is not set
1162# CONFIG_SMB_FS is not set
1163# CONFIG_CIFS is not set
1164# CONFIG_NCP_FS is not set
1165# CONFIG_CODA_FS is not set
1166# CONFIG_AFS_FS is not set
1167# CONFIG_9P_FS is not set
1168
1169#
1170# Partition Types
1171#
1172# CONFIG_PARTITION_ADVANCED is not set
1173CONFIG_MSDOS_PARTITION=y
1174
1175#
1176# Native Language Support
1177#
1178CONFIG_NLS=y
1179CONFIG_NLS_DEFAULT="iso8859-1"
1180CONFIG_NLS_CODEPAGE_437=y
1181# CONFIG_NLS_CODEPAGE_737 is not set
1182# CONFIG_NLS_CODEPAGE_775 is not set
1183# CONFIG_NLS_CODEPAGE_850 is not set
1184# CONFIG_NLS_CODEPAGE_852 is not set
1185# CONFIG_NLS_CODEPAGE_855 is not set
1186# CONFIG_NLS_CODEPAGE_857 is not set
1187# CONFIG_NLS_CODEPAGE_860 is not set
1188# CONFIG_NLS_CODEPAGE_861 is not set
1189# CONFIG_NLS_CODEPAGE_862 is not set
1190# CONFIG_NLS_CODEPAGE_863 is not set
1191# CONFIG_NLS_CODEPAGE_864 is not set
1192# CONFIG_NLS_CODEPAGE_865 is not set
1193# CONFIG_NLS_CODEPAGE_866 is not set
1194# CONFIG_NLS_CODEPAGE_869 is not set
1195# CONFIG_NLS_CODEPAGE_936 is not set
1196# CONFIG_NLS_CODEPAGE_950 is not set
1197CONFIG_NLS_CODEPAGE_932=y
1198# CONFIG_NLS_CODEPAGE_949 is not set
1199# CONFIG_NLS_CODEPAGE_874 is not set
1200# CONFIG_NLS_ISO8859_8 is not set
1201# CONFIG_NLS_CODEPAGE_1250 is not set
1202# CONFIG_NLS_CODEPAGE_1251 is not set
1203# CONFIG_NLS_ASCII is not set
1204CONFIG_NLS_ISO8859_1=y
1205# CONFIG_NLS_ISO8859_2 is not set
1206# CONFIG_NLS_ISO8859_3 is not set
1207# CONFIG_NLS_ISO8859_4 is not set
1208# CONFIG_NLS_ISO8859_5 is not set
1209# CONFIG_NLS_ISO8859_6 is not set
1210# CONFIG_NLS_ISO8859_7 is not set
1211# CONFIG_NLS_ISO8859_9 is not set
1212# CONFIG_NLS_ISO8859_13 is not set
1213# CONFIG_NLS_ISO8859_14 is not set
1214# CONFIG_NLS_ISO8859_15 is not set
1215# CONFIG_NLS_KOI8_R is not set
1216# CONFIG_NLS_KOI8_U is not set
1217# CONFIG_NLS_UTF8 is not set
1218
1219#
1220# Distributed Lock Manager
1221#
1222# CONFIG_DLM is not set
1223
1224#
1225# Profiling support
1226#
1227CONFIG_PROFILING=y
1228CONFIG_OPROFILE=m
1229
1230#
1231# Kernel hacking
1232#
1233CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1234# CONFIG_PRINTK_TIME is not set
1235CONFIG_ENABLE_MUST_CHECK=y
1236CONFIG_MAGIC_SYSRQ=y
1237# CONFIG_UNUSED_SYMBOLS is not set
1238CONFIG_DEBUG_FS=y
1239# CONFIG_HEADERS_CHECK is not set
1240CONFIG_DEBUG_KERNEL=y
1241# CONFIG_DEBUG_SHIRQ is not set
1242CONFIG_LOG_BUF_SHIFT=14
1243# CONFIG_DETECT_SOFTLOCKUP is not set
1244# CONFIG_SCHEDSTATS is not set
1245# CONFIG_TIMER_STATS is not set
1246# CONFIG_DEBUG_SLAB is not set
1247# CONFIG_DEBUG_PREEMPT is not set
1248CONFIG_DEBUG_SPINLOCK=y
1249CONFIG_DEBUG_MUTEXES=y
1250CONFIG_DEBUG_LOCK_ALLOC=y
1251# CONFIG_PROVE_LOCKING is not set
1252CONFIG_LOCKDEP=y
1253# CONFIG_DEBUG_LOCKDEP is not set
1254# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1255CONFIG_DEBUG_LOCKING_API_SELFTESTS=y
1256CONFIG_STACKTRACE=y
1257# CONFIG_DEBUG_KOBJECT is not set
1258CONFIG_DEBUG_BUGVERBOSE=y
1259CONFIG_DEBUG_INFO=y
1260# CONFIG_DEBUG_VM is not set
1261# CONFIG_DEBUG_LIST is not set
1262CONFIG_FRAME_POINTER=y
1263CONFIG_FORCED_INLINING=y
1264# CONFIG_RCU_TORTURE_TEST is not set
1265# CONFIG_FAULT_INJECTION is not set
1266CONFIG_SH_STANDARD_BIOS=y
1267# CONFIG_EARLY_SCIF_CONSOLE is not set
1268CONFIG_EARLY_PRINTK=y
1269CONFIG_DEBUG_STACKOVERFLOW=y
1270CONFIG_DEBUG_STACK_USAGE=y
1271# CONFIG_4KSTACKS is not set
1272# CONFIG_SH_KGDB is not set
1273
1274#
1275# Security options
1276#
1277# CONFIG_KEYS is not set
1278# CONFIG_SECURITY is not set
1279
1280#
1281# Cryptographic options
1282#
1283CONFIG_CRYPTO=y
1284CONFIG_CRYPTO_ALGAPI=y
1285CONFIG_CRYPTO_BLKCIPHER=y
1286CONFIG_CRYPTO_HASH=y
1287CONFIG_CRYPTO_MANAGER=y
1288CONFIG_CRYPTO_HMAC=y
1289# CONFIG_CRYPTO_XCBC is not set
1290# CONFIG_CRYPTO_NULL is not set
1291# CONFIG_CRYPTO_MD4 is not set
1292CONFIG_CRYPTO_MD5=y
1293# CONFIG_CRYPTO_SHA1 is not set
1294# CONFIG_CRYPTO_SHA256 is not set
1295# CONFIG_CRYPTO_SHA512 is not set
1296# CONFIG_CRYPTO_WP512 is not set
1297# CONFIG_CRYPTO_TGR192 is not set
1298# CONFIG_CRYPTO_GF128MUL is not set
1299CONFIG_CRYPTO_ECB=m
1300CONFIG_CRYPTO_CBC=y
1301CONFIG_CRYPTO_PCBC=m
1302# CONFIG_CRYPTO_LRW is not set
1303CONFIG_CRYPTO_DES=y
1304# CONFIG_CRYPTO_FCRYPT is not set
1305# CONFIG_CRYPTO_BLOWFISH is not set
1306# CONFIG_CRYPTO_TWOFISH is not set
1307# CONFIG_CRYPTO_SERPENT is not set
1308# CONFIG_CRYPTO_AES is not set
1309# CONFIG_CRYPTO_CAST5 is not set
1310# CONFIG_CRYPTO_CAST6 is not set
1311# CONFIG_CRYPTO_TEA is not set
1312# CONFIG_CRYPTO_ARC4 is not set
1313# CONFIG_CRYPTO_KHAZAD is not set
1314# CONFIG_CRYPTO_ANUBIS is not set
1315# CONFIG_CRYPTO_DEFLATE is not set
1316# CONFIG_CRYPTO_MICHAEL_MIC is not set
1317# CONFIG_CRYPTO_CRC32C is not set
1318# CONFIG_CRYPTO_CAMELLIA is not set
1319# CONFIG_CRYPTO_TEST is not set
1320
1321#
1322# Hardware crypto devices
1323#
1324
1325#
1326# Library routines
1327#
1328CONFIG_BITREVERSE=y
1329# CONFIG_CRC_CCITT is not set
1330# CONFIG_CRC16 is not set
1331CONFIG_CRC32=y
1332# CONFIG_LIBCRC32C is not set
1333CONFIG_HAS_IOMEM=y
1334CONFIG_HAS_IOPORT=y
diff --git a/arch/sh/configs/se7705_defconfig b/arch/sh/configs/se7705_defconfig
index 06ebd6ec0cdb..87ae5c1f8629 100644
--- a/arch/sh/configs/se7705_defconfig
+++ b/arch/sh/configs/se7705_defconfig
@@ -1,15 +1,21 @@
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.21-rc5
4# Tue Oct 3 12:03:04 2006 4# Thu Apr 26 09:16:31 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
14# CONFIG_GENERIC_TIME is not set
15CONFIG_STACKTRACE_SUPPORT=y
16CONFIG_LOCKDEP_SUPPORT=y
17# CONFIG_ARCH_HAS_ILOG2_U32 is not set
18# CONFIG_ARCH_HAS_ILOG2_U64 is not set
13CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
14 20
15# 21#
@@ -33,7 +39,9 @@ CONFIG_LOCALVERSION_AUTO=y
33# CONFIG_UTS_NS is not set 39# CONFIG_UTS_NS is not set
34# CONFIG_AUDIT is not set 40# CONFIG_AUDIT is not set
35# CONFIG_IKCONFIG is not set 41# CONFIG_IKCONFIG is not set
42CONFIG_SYSFS_DEPRECATED=y
36# CONFIG_RELAY is not set 43# CONFIG_RELAY is not set
44CONFIG_BLK_DEV_INITRD=y
37CONFIG_INITRAMFS_SOURCE="" 45CONFIG_INITRAMFS_SOURCE=""
38# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 46# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
39CONFIG_SYSCTL=y 47CONFIG_SYSCTL=y
@@ -91,27 +99,30 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
91CONFIG_SOLUTION_ENGINE=y 99CONFIG_SOLUTION_ENGINE=y
92CONFIG_SH_SOLUTION_ENGINE=y 100CONFIG_SH_SOLUTION_ENGINE=y
93# CONFIG_SH_7751_SOLUTION_ENGINE is not set 101# CONFIG_SH_7751_SOLUTION_ENGINE is not set
102# CONFIG_SH_7780_SOLUTION_ENGINE is not set
94# CONFIG_SH_7300_SOLUTION_ENGINE is not set 103# CONFIG_SH_7300_SOLUTION_ENGINE is not set
95# CONFIG_SH_7343_SOLUTION_ENGINE is not set 104# CONFIG_SH_7343_SOLUTION_ENGINE is not set
96# CONFIG_SH_73180_SOLUTION_ENGINE is not set 105# CONFIG_SH_73180_SOLUTION_ENGINE is not set
106# CONFIG_SH_7722_SOLUTION_ENGINE is not set
97# CONFIG_SH_7751_SYSTEMH is not set 107# CONFIG_SH_7751_SYSTEMH is not set
98# CONFIG_SH_HP6XX is not set 108# CONFIG_SH_HP6XX is not set
99# CONFIG_SH_EC3104 is not set
100# CONFIG_SH_SATURN is not set 109# CONFIG_SH_SATURN is not set
101# CONFIG_SH_DREAMCAST is not set 110# CONFIG_SH_DREAMCAST is not set
102# CONFIG_SH_BIGSUR is not set
103# CONFIG_SH_MPC1211 is not set 111# CONFIG_SH_MPC1211 is not set
104# CONFIG_SH_SH03 is not set 112# CONFIG_SH_SH03 is not set
105# CONFIG_SH_SECUREEDGE5410 is not set 113# CONFIG_SH_SECUREEDGE5410 is not set
106# CONFIG_SH_HS7751RVOIP is not set 114# CONFIG_SH_HS7751RVOIP is not set
107# CONFIG_SH_7710VOIPGW is not set 115# CONFIG_SH_7710VOIPGW is not set
108# CONFIG_SH_RTS7751R2D is not set 116# CONFIG_SH_RTS7751R2D is not set
109# CONFIG_SH_R7780RP is not set 117# CONFIG_SH_HIGHLANDER is not set
110# CONFIG_SH_EDOSK7705 is not set 118# CONFIG_SH_EDOSK7705 is not set
111# CONFIG_SH_SH4202_MICRODEV is not set 119# CONFIG_SH_SH4202_MICRODEV is not set
112# CONFIG_SH_LANDISK is not set 120# CONFIG_SH_LANDISK is not set
113# CONFIG_SH_TITAN is not set 121# CONFIG_SH_TITAN is not set
114# CONFIG_SH_SHMIN is not set 122# CONFIG_SH_SHMIN is not set
123# CONFIG_SH_7206_SOLUTION_ENGINE is not set
124# CONFIG_SH_7619_SOLUTION_ENGINE is not set
125# CONFIG_SH_LBOX_RE2 is not set
115# CONFIG_SH_UNKNOWN is not set 126# CONFIG_SH_UNKNOWN is not set
116 127
117# 128#
@@ -123,6 +134,12 @@ CONFIG_CPU_SH3=y
123# SH-2 Processor Support 134# SH-2 Processor Support
124# 135#
125# CONFIG_CPU_SUBTYPE_SH7604 is not set 136# CONFIG_CPU_SUBTYPE_SH7604 is not set
137# CONFIG_CPU_SUBTYPE_SH7619 is not set
138
139#
140# SH-2A Processor Support
141#
142# CONFIG_CPU_SUBTYPE_SH7206 is not set
126 143
127# 144#
128# SH-3 Processor Support 145# SH-3 Processor Support
@@ -134,6 +151,7 @@ CONFIG_CPU_SUBTYPE_SH7705=y
134# CONFIG_CPU_SUBTYPE_SH7708 is not set 151# CONFIG_CPU_SUBTYPE_SH7708 is not set
135# CONFIG_CPU_SUBTYPE_SH7709 is not set 152# CONFIG_CPU_SUBTYPE_SH7709 is not set
136# CONFIG_CPU_SUBTYPE_SH7710 is not set 153# CONFIG_CPU_SUBTYPE_SH7710 is not set
154# CONFIG_CPU_SUBTYPE_SH7712 is not set
137 155
138# 156#
139# SH-4 Processor Support 157# SH-4 Processor Support
@@ -158,12 +176,14 @@ CONFIG_CPU_SUBTYPE_SH7705=y
158# 176#
159# CONFIG_CPU_SUBTYPE_SH7770 is not set 177# CONFIG_CPU_SUBTYPE_SH7770 is not set
160# CONFIG_CPU_SUBTYPE_SH7780 is not set 178# CONFIG_CPU_SUBTYPE_SH7780 is not set
179# CONFIG_CPU_SUBTYPE_SH7785 is not set
161 180
162# 181#
163# SH4AL-DSP Processor Support 182# SH4AL-DSP Processor Support
164# 183#
165# CONFIG_CPU_SUBTYPE_SH73180 is not set 184# CONFIG_CPU_SUBTYPE_SH73180 is not set
166# CONFIG_CPU_SUBTYPE_SH7343 is not set 185# CONFIG_CPU_SUBTYPE_SH7343 is not set
186# CONFIG_CPU_SUBTYPE_SH7722 is not set
167 187
168# 188#
169# Memory management options 189# Memory management options
@@ -173,6 +193,11 @@ CONFIG_PAGE_OFFSET=0x80000000
173CONFIG_MEMORY_START=0x0c000000 193CONFIG_MEMORY_START=0x0c000000
174CONFIG_MEMORY_SIZE=0x02000000 194CONFIG_MEMORY_SIZE=0x02000000
175CONFIG_VSYSCALL=y 195CONFIG_VSYSCALL=y
196CONFIG_ARCH_FLATMEM_ENABLE=y
197CONFIG_ARCH_POPULATES_NODE_MAP=y
198CONFIG_PAGE_SIZE_4KB=y
199# CONFIG_PAGE_SIZE_8KB is not set
200# CONFIG_PAGE_SIZE_64KB is not set
176CONFIG_SELECT_MEMORY_MODEL=y 201CONFIG_SELECT_MEMORY_MODEL=y
177CONFIG_FLATMEM_MANUAL=y 202CONFIG_FLATMEM_MANUAL=y
178# CONFIG_DISCONTIGMEM_MANUAL is not set 203# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -182,6 +207,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y
182# CONFIG_SPARSEMEM_STATIC is not set 207# CONFIG_SPARSEMEM_STATIC is not set
183CONFIG_SPLIT_PTLOCK_CPUS=4 208CONFIG_SPLIT_PTLOCK_CPUS=4
184# CONFIG_RESOURCES_64BIT is not set 209# CONFIG_RESOURCES_64BIT is not set
210CONFIG_ZONE_DMA_FLAG=0
185 211
186# 212#
187# Cache configuration 213# Cache configuration
@@ -190,23 +216,31 @@ CONFIG_SH7705_CACHE_32KB=y
190# CONFIG_SH_DIRECT_MAPPED is not set 216# CONFIG_SH_DIRECT_MAPPED is not set
191# CONFIG_SH_WRITETHROUGH is not set 217# CONFIG_SH_WRITETHROUGH is not set
192# CONFIG_SH_OCRAM is not set 218# CONFIG_SH_OCRAM is not set
193# CONFIG_CF_ENABLER is not set 219CONFIG_CF_ENABLER=y
220# CONFIG_CF_AREA5 is not set
221CONFIG_CF_AREA6=y
222# CONFIG_CF_AREA4 is not set
223CONFIG_CF_BASE_ADDR=0xb8000000
194 224
195# 225#
196# Processor features 226# Processor features
197# 227#
198CONFIG_CPU_LITTLE_ENDIAN=y 228CONFIG_CPU_LITTLE_ENDIAN=y
229# CONFIG_CPU_BIG_ENDIAN is not set
199# CONFIG_SH_FPU_EMU is not set 230# CONFIG_SH_FPU_EMU is not set
200# CONFIG_SH_DSP is not set 231# CONFIG_SH_DSP is not set
201# CONFIG_SH_ADC is not set 232# CONFIG_SH_ADC is not set
202CONFIG_CPU_HAS_INTEVT=y 233CONFIG_CPU_HAS_INTEVT=y
203CONFIG_CPU_HAS_PINT_IRQ=y 234CONFIG_CPU_HAS_PINT_IRQ=y
235CONFIG_CPU_HAS_IPR_IRQ=y
204CONFIG_CPU_HAS_SR_RB=y 236CONFIG_CPU_HAS_SR_RB=y
205 237
206# 238#
207# Timer support 239# Timer and clock configuration
208# 240#
209CONFIG_SH_TMU=y 241CONFIG_SH_TMU=y
242CONFIG_SH_TIMER_IRQ=16
243# CONFIG_NO_IDLE_HZ is not set
210CONFIG_SH_PCLK_FREQ=33333333 244CONFIG_SH_PCLK_FREQ=33333333
211 245
212# 246#
@@ -223,13 +257,19 @@ CONFIG_SH_PCLK_FREQ=33333333
223# Companion Chips 257# Companion Chips
224# 258#
225# CONFIG_HD6446X_SERIES is not set 259# CONFIG_HD6446X_SERIES is not set
260
261#
262# Additional SuperH Device Drivers
263#
226CONFIG_HEARTBEAT=y 264CONFIG_HEARTBEAT=y
265# CONFIG_PUSH_SWITCH is not set
227 266
228# 267#
229# Kernel features 268# Kernel features
230# 269#
231# CONFIG_HZ_100 is not set 270# CONFIG_HZ_100 is not set
232CONFIG_HZ_250=y 271CONFIG_HZ_250=y
272# CONFIG_HZ_300 is not set
233# CONFIG_HZ_1000 is not set 273# CONFIG_HZ_1000 is not set
234CONFIG_HZ=250 274CONFIG_HZ=250
235# CONFIG_KEXEC is not set 275# CONFIG_KEXEC is not set
@@ -287,6 +327,7 @@ CONFIG_UNIX=y
287CONFIG_XFRM=y 327CONFIG_XFRM=y
288# CONFIG_XFRM_USER is not set 328# CONFIG_XFRM_USER is not set
289# CONFIG_XFRM_SUB_POLICY is not set 329# CONFIG_XFRM_SUB_POLICY is not set
330# CONFIG_XFRM_MIGRATE is not set
290# CONFIG_NET_KEY is not set 331# CONFIG_NET_KEY is not set
291CONFIG_INET=y 332CONFIG_INET=y
292# CONFIG_IP_MULTICAST is not set 333# CONFIG_IP_MULTICAST is not set
@@ -307,11 +348,13 @@ CONFIG_IP_PNP_RARP=y
307# CONFIG_INET_TUNNEL is not set 348# CONFIG_INET_TUNNEL is not set
308CONFIG_INET_XFRM_MODE_TRANSPORT=y 349CONFIG_INET_XFRM_MODE_TRANSPORT=y
309CONFIG_INET_XFRM_MODE_TUNNEL=y 350CONFIG_INET_XFRM_MODE_TUNNEL=y
351CONFIG_INET_XFRM_MODE_BEET=y
310CONFIG_INET_DIAG=y 352CONFIG_INET_DIAG=y
311CONFIG_INET_TCP_DIAG=y 353CONFIG_INET_TCP_DIAG=y
312# CONFIG_TCP_CONG_ADVANCED is not set 354# CONFIG_TCP_CONG_ADVANCED is not set
313CONFIG_TCP_CONG_CUBIC=y 355CONFIG_TCP_CONG_CUBIC=y
314CONFIG_DEFAULT_TCP_CONG="cubic" 356CONFIG_DEFAULT_TCP_CONG="cubic"
357# CONFIG_TCP_MD5SIG is not set
315# CONFIG_IPV6 is not set 358# CONFIG_IPV6 is not set
316# CONFIG_INET6_XFRM_TUNNEL is not set 359# CONFIG_INET6_XFRM_TUNNEL is not set
317# CONFIG_INET6_TUNNEL is not set 360# CONFIG_INET6_TUNNEL is not set
@@ -388,6 +431,7 @@ CONFIG_MTD_PARTITIONS=y
388# User Modules And Translation Layers 431# User Modules And Translation Layers
389# 432#
390CONFIG_MTD_CHAR=y 433CONFIG_MTD_CHAR=y
434CONFIG_MTD_BLKDEVS=y
391CONFIG_MTD_BLOCK=y 435CONFIG_MTD_BLOCK=y
392# CONFIG_FTL is not set 436# CONFIG_FTL is not set
393# CONFIG_NFTL is not set 437# CONFIG_NFTL is not set
@@ -461,6 +505,7 @@ CONFIG_MTD_CFI_UTIL=y
461# 505#
462# Plug and Play support 506# Plug and Play support
463# 507#
508# CONFIG_PNPACPI is not set
464 509
465# 510#
466# Block devices 511# Block devices
@@ -472,11 +517,14 @@ CONFIG_BLK_DEV_RAM=y
472CONFIG_BLK_DEV_RAM_COUNT=16 517CONFIG_BLK_DEV_RAM_COUNT=16
473CONFIG_BLK_DEV_RAM_SIZE=8192 518CONFIG_BLK_DEV_RAM_SIZE=8192
474CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 519CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
475CONFIG_BLK_DEV_INITRD=y
476# CONFIG_CDROM_PKTCDVD is not set 520# CONFIG_CDROM_PKTCDVD is not set
477# CONFIG_ATA_OVER_ETH is not set 521# CONFIG_ATA_OVER_ETH is not set
478 522
479# 523#
524# Misc devices
525#
526
527#
480# ATA/ATAPI/MFM/RLL support 528# ATA/ATAPI/MFM/RLL support
481# 529#
482# CONFIG_IDE is not set 530# CONFIG_IDE is not set
@@ -649,17 +697,12 @@ CONFIG_HW_RANDOM=y
649# CONFIG_GEN_RTC is not set 697# CONFIG_GEN_RTC is not set
650# CONFIG_DTLK is not set 698# CONFIG_DTLK is not set
651# CONFIG_R3964 is not set 699# CONFIG_R3964 is not set
652
653#
654# Ftape, the floppy tape device driver
655#
656# CONFIG_RAW_DRIVER is not set 700# CONFIG_RAW_DRIVER is not set
657 701
658# 702#
659# TPM devices 703# TPM devices
660# 704#
661# CONFIG_TCG_TPM is not set 705# CONFIG_TCG_TPM is not set
662# CONFIG_TELCLOCK is not set
663 706
664# 707#
665# I2C support 708# I2C support
@@ -675,6 +718,7 @@ CONFIG_HW_RANDOM=y
675# 718#
676# Dallas's 1-wire bus 719# Dallas's 1-wire bus
677# 720#
721# CONFIG_W1 is not set
678 722
679# 723#
680# Hardware Monitoring support 724# Hardware Monitoring support
@@ -683,18 +727,19 @@ CONFIG_HWMON=y
683# CONFIG_HWMON_VID is not set 727# CONFIG_HWMON_VID is not set
684# CONFIG_SENSORS_ABITUGURU is not set 728# CONFIG_SENSORS_ABITUGURU is not set
685# CONFIG_SENSORS_F71805F is not set 729# CONFIG_SENSORS_F71805F is not set
730# CONFIG_SENSORS_PC87427 is not set
686# CONFIG_SENSORS_VT1211 is not set 731# CONFIG_SENSORS_VT1211 is not set
687# CONFIG_HWMON_DEBUG_CHIP is not set 732# CONFIG_HWMON_DEBUG_CHIP is not set
688 733
689# 734#
690# Misc devices 735# Multifunction device drivers
691# 736#
737# CONFIG_MFD_SM501 is not set
692 738
693# 739#
694# Multimedia devices 740# Multimedia devices
695# 741#
696# CONFIG_VIDEO_DEV is not set 742# CONFIG_VIDEO_DEV is not set
697CONFIG_VIDEO_V4L2=y
698 743
699# 744#
700# Digital Video Broadcasting Devices 745# Digital Video Broadcasting Devices
@@ -704,7 +749,7 @@ CONFIG_VIDEO_V4L2=y
704# 749#
705# Graphics support 750# Graphics support
706# 751#
707CONFIG_FIRMWARE_EDID=y 752# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
708# CONFIG_FB is not set 753# CONFIG_FB is not set
709 754
710# 755#
@@ -713,6 +758,12 @@ CONFIG_FIRMWARE_EDID=y
713# CONFIG_SOUND is not set 758# CONFIG_SOUND is not set
714 759
715# 760#
761# HID Devices
762#
763CONFIG_HID=y
764# CONFIG_HID_DEBUG is not set
765
766#
716# USB support 767# USB support
717# 768#
718# CONFIG_USB_ARCH_HAS_HCD is not set 769# CONFIG_USB_ARCH_HAS_HCD is not set
@@ -773,16 +824,26 @@ CONFIG_FIRMWARE_EDID=y
773# 824#
774 825
775# 826#
827# Auxiliary Display support
828#
829
830#
831# Virtualization
832#
833
834#
776# File systems 835# File systems
777# 836#
778CONFIG_EXT2_FS=y 837CONFIG_EXT2_FS=y
779# CONFIG_EXT2_FS_XATTR is not set 838# CONFIG_EXT2_FS_XATTR is not set
780# CONFIG_EXT2_FS_XIP is not set 839# CONFIG_EXT2_FS_XIP is not set
781# CONFIG_EXT3_FS is not set 840# CONFIG_EXT3_FS is not set
841# CONFIG_EXT4DEV_FS is not set
782# CONFIG_REISERFS_FS is not set 842# CONFIG_REISERFS_FS is not set
783# CONFIG_JFS_FS is not set 843# CONFIG_JFS_FS is not set
784# CONFIG_FS_POSIX_ACL is not set 844# CONFIG_FS_POSIX_ACL is not set
785# CONFIG_XFS_FS is not set 845# CONFIG_XFS_FS is not set
846# CONFIG_GFS2_FS is not set
786# CONFIG_MINIX_FS is not set 847# CONFIG_MINIX_FS is not set
787# CONFIG_ROMFS_FS is not set 848# CONFIG_ROMFS_FS is not set
788CONFIG_INOTIFY=y 849CONFIG_INOTIFY=y
@@ -828,7 +889,6 @@ CONFIG_RAMFS=y
828# CONFIG_BEFS_FS is not set 889# CONFIG_BEFS_FS is not set
829# CONFIG_BFS_FS is not set 890# CONFIG_BFS_FS is not set
830# CONFIG_EFS_FS is not set 891# CONFIG_EFS_FS is not set
831# CONFIG_JFFS_FS is not set
832CONFIG_JFFS2_FS=y 892CONFIG_JFFS2_FS=y
833CONFIG_JFFS2_FS_DEBUG=0 893CONFIG_JFFS2_FS_DEBUG=0
834CONFIG_JFFS2_FS_WRITEBUFFER=y 894CONFIG_JFFS2_FS_WRITEBUFFER=y
@@ -878,6 +938,10 @@ CONFIG_MSDOS_PARTITION=y
878# CONFIG_NLS is not set 938# CONFIG_NLS is not set
879 939
880# 940#
941# Distributed Lock Manager
942#
943
944#
881# Profiling support 945# Profiling support
882# 946#
883# CONFIG_PROFILING is not set 947# CONFIG_PROFILING is not set
@@ -885,15 +949,18 @@ CONFIG_MSDOS_PARTITION=y
885# 949#
886# Kernel hacking 950# Kernel hacking
887# 951#
952CONFIG_TRACE_IRQFLAGS_SUPPORT=y
888# CONFIG_PRINTK_TIME is not set 953# CONFIG_PRINTK_TIME is not set
889CONFIG_ENABLE_MUST_CHECK=y 954CONFIG_ENABLE_MUST_CHECK=y
890# CONFIG_MAGIC_SYSRQ is not set 955# CONFIG_MAGIC_SYSRQ is not set
891# CONFIG_UNUSED_SYMBOLS is not set 956# CONFIG_UNUSED_SYMBOLS is not set
957# CONFIG_HEADERS_CHECK is not set
892# CONFIG_DEBUG_KERNEL is not set 958# CONFIG_DEBUG_KERNEL is not set
893CONFIG_LOG_BUF_SHIFT=14 959CONFIG_LOG_BUF_SHIFT=14
894# CONFIG_DEBUG_BUGVERBOSE is not set 960# CONFIG_DEBUG_BUGVERBOSE is not set
895# CONFIG_SH_STANDARD_BIOS is not set 961# CONFIG_SH_STANDARD_BIOS is not set
896# CONFIG_KGDB is not set 962# CONFIG_EARLY_SCIF_CONSOLE is not set
963# CONFIG_SH_KGDB is not set
897 964
898# 965#
899# Security options 966# Security options
@@ -908,6 +975,7 @@ CONFIG_LOG_BUF_SHIFT=14
908# 975#
909# Library routines 976# Library routines
910# 977#
978CONFIG_BITREVERSE=y
911CONFIG_CRC_CCITT=y 979CONFIG_CRC_CCITT=y
912# CONFIG_CRC16 is not set 980# CONFIG_CRC16 is not set
913CONFIG_CRC32=y 981CONFIG_CRC32=y
@@ -915,3 +983,5 @@ CONFIG_CRC32=y
915CONFIG_ZLIB_INFLATE=y 983CONFIG_ZLIB_INFLATE=y
916CONFIG_ZLIB_DEFLATE=y 984CONFIG_ZLIB_DEFLATE=y
917CONFIG_PLIST=y 985CONFIG_PLIST=y
986CONFIG_HAS_IOMEM=y
987CONFIG_HAS_IOPORT=y
diff --git a/arch/sh/configs/se7712_defconfig b/arch/sh/configs/se7712_defconfig
new file mode 100644
index 000000000000..a5e37dbc5353
--- /dev/null
+++ b/arch/sh/configs/se7712_defconfig
@@ -0,0 +1,1088 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.21-rc4
4# Wed Mar 28 10:19:02 2007
5#
6CONFIG_SUPERH=y
7CONFIG_RWSEM_GENERIC_SPINLOCK=y
8CONFIG_GENERIC_FIND_NEXT_BIT=y
9CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_GENERIC_IRQ_PROBE=y
12CONFIG_GENERIC_CALIBRATE_DELAY=y
13# CONFIG_GENERIC_TIME is not set
14CONFIG_STACKTRACE_SUPPORT=y
15CONFIG_LOCKDEP_SUPPORT=y
16# CONFIG_ARCH_HAS_ILOG2_U32 is not set
17# CONFIG_ARCH_HAS_ILOG2_U64 is not set
18CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
19
20#
21# Code maturity level options
22#
23CONFIG_EXPERIMENTAL=y
24CONFIG_BROKEN_ON_SMP=y
25CONFIG_INIT_ENV_ARG_LIMIT=32
26
27#
28# General setup
29#
30CONFIG_LOCALVERSION=""
31# CONFIG_LOCALVERSION_AUTO is not set
32# CONFIG_SWAP is not set
33CONFIG_SYSVIPC=y
34# CONFIG_IPC_NS is not set
35CONFIG_SYSVIPC_SYSCTL=y
36CONFIG_POSIX_MQUEUE=y
37CONFIG_BSD_PROCESS_ACCT=y
38# CONFIG_BSD_PROCESS_ACCT_V3 is not set
39# CONFIG_TASKSTATS is not set
40# CONFIG_UTS_NS is not set
41# CONFIG_AUDIT is not set
42# CONFIG_IKCONFIG is not set
43CONFIG_SYSFS_DEPRECATED=y
44# CONFIG_RELAY is not set
45# CONFIG_BLK_DEV_INITRD is not set
46# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
47CONFIG_SYSCTL=y
48CONFIG_EMBEDDED=y
49CONFIG_UID16=y
50CONFIG_SYSCTL_SYSCALL=y
51CONFIG_KALLSYMS=y
52CONFIG_KALLSYMS_ALL=y
53# CONFIG_KALLSYMS_EXTRA_PASS is not set
54CONFIG_HOTPLUG=y
55CONFIG_PRINTK=y
56# CONFIG_BUG is not set
57CONFIG_ELF_CORE=y
58# CONFIG_BASE_FULL is not set
59CONFIG_FUTEX=y
60CONFIG_EPOLL=y
61# CONFIG_SHMEM is not set
62CONFIG_SLAB=y
63CONFIG_VM_EVENT_COUNTERS=y
64CONFIG_RT_MUTEXES=y
65CONFIG_TINY_SHMEM=y
66CONFIG_BASE_SMALL=1
67# CONFIG_SLOB is not set
68
69#
70# Loadable module support
71#
72CONFIG_MODULES=y
73# CONFIG_MODULE_UNLOAD is not set
74# CONFIG_MODVERSIONS is not set
75# CONFIG_MODULE_SRCVERSION_ALL is not set
76# CONFIG_KMOD is not set
77
78#
79# Block layer
80#
81CONFIG_BLOCK=y
82# CONFIG_LBD is not set
83# CONFIG_BLK_DEV_IO_TRACE is not set
84# CONFIG_LSF is not set
85
86#
87# IO Schedulers
88#
89CONFIG_IOSCHED_NOOP=y
90# CONFIG_IOSCHED_AS is not set
91# CONFIG_IOSCHED_DEADLINE is not set
92# CONFIG_IOSCHED_CFQ is not set
93# CONFIG_DEFAULT_AS is not set
94# CONFIG_DEFAULT_DEADLINE is not set
95# CONFIG_DEFAULT_CFQ is not set
96CONFIG_DEFAULT_NOOP=y
97CONFIG_DEFAULT_IOSCHED="noop"
98
99#
100# System type
101#
102CONFIG_SOLUTION_ENGINE=y
103CONFIG_SH_SOLUTION_ENGINE=y
104# CONFIG_SH_7751_SOLUTION_ENGINE is not set
105# CONFIG_SH_7300_SOLUTION_ENGINE is not set
106# CONFIG_SH_7343_SOLUTION_ENGINE is not set
107# CONFIG_SH_73180_SOLUTION_ENGINE is not set
108# CONFIG_SH_7751_SYSTEMH is not set
109# CONFIG_SH_HP6XX is not set
110# CONFIG_SH_SATURN is not set
111# CONFIG_SH_DREAMCAST is not set
112# CONFIG_SH_MPC1211 is not set
113# CONFIG_SH_SH03 is not set
114# CONFIG_SH_SECUREEDGE5410 is not set
115# CONFIG_SH_HS7751RVOIP is not set
116# CONFIG_SH_7710VOIPGW is not set
117# CONFIG_SH_RTS7751R2D is not set
118# CONFIG_SH_HIGHLANDER is not set
119# CONFIG_SH_EDOSK7705 is not set
120# CONFIG_SH_SH4202_MICRODEV is not set
121# CONFIG_SH_LANDISK is not set
122# CONFIG_SH_TITAN is not set
123# CONFIG_SH_SHMIN is not set
124# CONFIG_SH_7206_SOLUTION_ENGINE is not set
125# CONFIG_SH_7619_SOLUTION_ENGINE is not set
126# CONFIG_SH_LBOX_RE2 is not set
127# CONFIG_SH_UNKNOWN is not set
128
129#
130# Processor selection
131#
132CONFIG_CPU_SH3=y
133
134#
135# SH-2 Processor Support
136#
137# CONFIG_CPU_SUBTYPE_SH7604 is not set
138# CONFIG_CPU_SUBTYPE_SH7619 is not set
139
140#
141# SH-2A Processor Support
142#
143# CONFIG_CPU_SUBTYPE_SH7206 is not set
144
145#
146# SH-3 Processor Support
147#
148# CONFIG_CPU_SUBTYPE_SH7300 is not set
149# CONFIG_CPU_SUBTYPE_SH7705 is not set
150# CONFIG_CPU_SUBTYPE_SH7706 is not set
151# CONFIG_CPU_SUBTYPE_SH7707 is not set
152# CONFIG_CPU_SUBTYPE_SH7708 is not set
153# CONFIG_CPU_SUBTYPE_SH7709 is not set
154# CONFIG_CPU_SUBTYPE_SH7710 is not set
155CONFIG_CPU_SUBTYPE_SH7712=y
156
157#
158# SH-4 Processor Support
159#
160# CONFIG_CPU_SUBTYPE_SH7750 is not set
161# CONFIG_CPU_SUBTYPE_SH7091 is not set
162# CONFIG_CPU_SUBTYPE_SH7750R is not set
163# CONFIG_CPU_SUBTYPE_SH7750S is not set
164# CONFIG_CPU_SUBTYPE_SH7751 is not set
165# CONFIG_CPU_SUBTYPE_SH7751R is not set
166# CONFIG_CPU_SUBTYPE_SH7760 is not set
167# CONFIG_CPU_SUBTYPE_SH4_202 is not set
168
169#
170# ST40 Processor Support
171#
172# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
173# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
174
175#
176# SH-4A Processor Support
177#
178# CONFIG_CPU_SUBTYPE_SH7770 is not set
179# CONFIG_CPU_SUBTYPE_SH7780 is not set
180# CONFIG_CPU_SUBTYPE_SH7785 is not set
181
182#
183# SH4AL-DSP Processor Support
184#
185# CONFIG_CPU_SUBTYPE_SH73180 is not set
186# CONFIG_CPU_SUBTYPE_SH7343 is not set
187# CONFIG_CPU_SUBTYPE_SH7722 is not set
188
189#
190# Memory management options
191#
192CONFIG_MMU=y
193CONFIG_PAGE_OFFSET=0x80000000
194CONFIG_MEMORY_START=0x0c000000
195CONFIG_MEMORY_SIZE=0x02000000
196CONFIG_VSYSCALL=y
197CONFIG_PAGE_SIZE_4KB=y
198# CONFIG_PAGE_SIZE_8KB is not set
199# CONFIG_PAGE_SIZE_64KB is not set
200CONFIG_SELECT_MEMORY_MODEL=y
201CONFIG_FLATMEM_MANUAL=y
202# CONFIG_DISCONTIGMEM_MANUAL is not set
203# CONFIG_SPARSEMEM_MANUAL is not set
204CONFIG_FLATMEM=y
205CONFIG_FLAT_NODE_MEM_MAP=y
206# CONFIG_SPARSEMEM_STATIC is not set
207CONFIG_SPLIT_PTLOCK_CPUS=4
208# CONFIG_RESOURCES_64BIT is not set
209CONFIG_ZONE_DMA_FLAG=0
210
211#
212# Cache configuration
213#
214# CONFIG_SH_DIRECT_MAPPED is not set
215# CONFIG_SH_WRITETHROUGH is not set
216# CONFIG_SH_OCRAM is not set
217CONFIG_CF_ENABLER=y
218# CONFIG_CF_AREA5 is not set
219CONFIG_CF_AREA6=y
220CONFIG_CF_BASE_ADDR=0xb8000000
221
222#
223# Processor features
224#
225CONFIG_CPU_LITTLE_ENDIAN=y
226# CONFIG_CPU_BIG_ENDIAN is not set
227# CONFIG_SH_FPU_EMU is not set
228# CONFIG_SH_DSP is not set
229# CONFIG_SH_ADC is not set
230CONFIG_CPU_HAS_INTEVT=y
231CONFIG_CPU_HAS_IPR_IRQ=y
232CONFIG_CPU_HAS_SR_RB=y
233
234#
235# Timer and clock configuration
236#
237CONFIG_SH_TMU=y
238CONFIG_SH_TIMER_IRQ=16
239# CONFIG_NO_IDLE_HZ is not set
240CONFIG_SH_PCLK_FREQ=33333333
241
242#
243# CPU Frequency scaling
244#
245# CONFIG_CPU_FREQ is not set
246
247#
248# DMA support
249#
250# CONFIG_SH_DMA is not set
251
252#
253# Companion Chips
254#
255# CONFIG_HD6446X_SERIES is not set
256
257#
258# Additional SuperH Device Drivers
259#
260CONFIG_HEARTBEAT=y
261# CONFIG_PUSH_SWITCH is not set
262
263#
264# Kernel features
265#
266# CONFIG_HZ_100 is not set
267CONFIG_HZ_250=y
268# CONFIG_HZ_300 is not set
269# CONFIG_HZ_1000 is not set
270CONFIG_HZ=250
271# CONFIG_KEXEC is not set
272# CONFIG_SMP is not set
273# CONFIG_PREEMPT_NONE is not set
274CONFIG_PREEMPT_VOLUNTARY=y
275# CONFIG_PREEMPT is not set
276
277#
278# Boot options
279#
280CONFIG_ZERO_PAGE_OFFSET=0x00001000
281CONFIG_BOOT_LINK_OFFSET=0x00800000
282# CONFIG_UBC_WAKEUP is not set
283CONFIG_CMDLINE_BOOL=y
284CONFIG_CMDLINE="console=ttySC0,115200 root=/dev/sda1"
285
286#
287# Bus options
288#
289# CONFIG_PCI is not set
290
291#
292# PCCARD (PCMCIA/CardBus) support
293#
294# CONFIG_PCCARD is not set
295
296#
297# PCI Hotplug Support
298#
299
300#
301# Executable file formats
302#
303CONFIG_BINFMT_ELF=y
304# CONFIG_BINFMT_FLAT is not set
305# CONFIG_BINFMT_MISC is not set
306
307#
308# Power management options (EXPERIMENTAL)
309#
310# CONFIG_PM is not set
311
312#
313# Networking
314#
315CONFIG_NET=y
316
317#
318# Networking options
319#
320# CONFIG_NETDEBUG is not set
321CONFIG_PACKET=y
322CONFIG_PACKET_MMAP=y
323CONFIG_UNIX=y
324CONFIG_XFRM=y
325# CONFIG_XFRM_USER is not set
326# CONFIG_XFRM_SUB_POLICY is not set
327# CONFIG_XFRM_MIGRATE is not set
328CONFIG_NET_KEY=y
329# CONFIG_NET_KEY_MIGRATE is not set
330CONFIG_INET=y
331CONFIG_IP_MULTICAST=y
332CONFIG_IP_ADVANCED_ROUTER=y
333CONFIG_ASK_IP_FIB_HASH=y
334# CONFIG_IP_FIB_TRIE is not set
335CONFIG_IP_FIB_HASH=y
336CONFIG_IP_MULTIPLE_TABLES=y
337CONFIG_IP_ROUTE_MULTIPATH=y
338# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
339CONFIG_IP_ROUTE_VERBOSE=y
340CONFIG_IP_PNP=y
341CONFIG_IP_PNP_DHCP=y
342# CONFIG_IP_PNP_BOOTP is not set
343# CONFIG_IP_PNP_RARP is not set
344# CONFIG_NET_IPIP is not set
345# CONFIG_NET_IPGRE is not set
346CONFIG_IP_MROUTE=y
347CONFIG_IP_PIMSM_V1=y
348CONFIG_IP_PIMSM_V2=y
349# CONFIG_ARPD is not set
350CONFIG_SYN_COOKIES=y
351CONFIG_INET_AH=y
352CONFIG_INET_ESP=y
353CONFIG_INET_IPCOMP=y
354CONFIG_INET_XFRM_TUNNEL=y
355CONFIG_INET_TUNNEL=y
356CONFIG_INET_XFRM_MODE_TRANSPORT=y
357CONFIG_INET_XFRM_MODE_TUNNEL=y
358CONFIG_INET_XFRM_MODE_BEET=y
359# CONFIG_INET_DIAG is not set
360# CONFIG_TCP_CONG_ADVANCED is not set
361CONFIG_TCP_CONG_CUBIC=y
362CONFIG_DEFAULT_TCP_CONG="cubic"
363# CONFIG_TCP_MD5SIG is not set
364# CONFIG_IPV6 is not set
365# CONFIG_INET6_XFRM_TUNNEL is not set
366# CONFIG_INET6_TUNNEL is not set
367# CONFIG_NETWORK_SECMARK is not set
368# CONFIG_NETFILTER is not set
369
370#
371# DCCP Configuration (EXPERIMENTAL)
372#
373# CONFIG_IP_DCCP is not set
374
375#
376# SCTP Configuration (EXPERIMENTAL)
377#
378# CONFIG_IP_SCTP is not set
379
380#
381# TIPC Configuration (EXPERIMENTAL)
382#
383# CONFIG_TIPC is not set
384# CONFIG_ATM is not set
385# CONFIG_BRIDGE is not set
386# CONFIG_VLAN_8021Q is not set
387# CONFIG_DECNET is not set
388# CONFIG_LLC2 is not set
389# CONFIG_IPX is not set
390# CONFIG_ATALK is not set
391# CONFIG_X25 is not set
392# CONFIG_LAPB is not set
393# CONFIG_ECONET is not set
394# CONFIG_WAN_ROUTER is not set
395
396#
397# QoS and/or fair queueing
398#
399CONFIG_NET_SCHED=y
400CONFIG_NET_SCH_FIFO=y
401CONFIG_NET_SCH_CLK_JIFFIES=y
402# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
403# CONFIG_NET_SCH_CLK_CPU is not set
404
405#
406# Queueing/Scheduling
407#
408CONFIG_NET_SCH_CBQ=y
409CONFIG_NET_SCH_HTB=y
410CONFIG_NET_SCH_HFSC=y
411CONFIG_NET_SCH_PRIO=y
412CONFIG_NET_SCH_RED=y
413CONFIG_NET_SCH_SFQ=y
414CONFIG_NET_SCH_TEQL=y
415CONFIG_NET_SCH_TBF=y
416CONFIG_NET_SCH_GRED=y
417CONFIG_NET_SCH_DSMARK=y
418CONFIG_NET_SCH_NETEM=y
419CONFIG_NET_SCH_INGRESS=y
420
421#
422# Classification
423#
424CONFIG_NET_CLS=y
425# CONFIG_NET_CLS_BASIC is not set
426CONFIG_NET_CLS_TCINDEX=y
427CONFIG_NET_CLS_ROUTE4=y
428CONFIG_NET_CLS_ROUTE=y
429CONFIG_NET_CLS_FW=y
430# CONFIG_NET_CLS_U32 is not set
431# CONFIG_NET_CLS_RSVP is not set
432# CONFIG_NET_CLS_RSVP6 is not set
433# CONFIG_NET_EMATCH is not set
434# CONFIG_NET_CLS_ACT is not set
435# CONFIG_NET_CLS_POLICE is not set
436CONFIG_NET_CLS_IND=y
437CONFIG_NET_ESTIMATOR=y
438
439#
440# Network testing
441#
442# CONFIG_NET_PKTGEN is not set
443# CONFIG_HAMRADIO is not set
444# CONFIG_IRDA is not set
445# CONFIG_BT is not set
446# CONFIG_IEEE80211 is not set
447CONFIG_FIB_RULES=y
448
449#
450# Device Drivers
451#
452
453#
454# Generic Driver Options
455#
456CONFIG_STANDALONE=y
457CONFIG_PREVENT_FIRMWARE_BUILD=y
458CONFIG_FW_LOADER=y
459# CONFIG_DEBUG_DRIVER is not set
460# CONFIG_DEBUG_DEVRES is not set
461# CONFIG_SYS_HYPERVISOR is not set
462
463#
464# Connector - unified userspace <-> kernelspace linker
465#
466# CONFIG_CONNECTOR is not set
467
468#
469# Memory Technology Devices (MTD)
470#
471CONFIG_MTD=y
472# CONFIG_MTD_DEBUG is not set
473CONFIG_MTD_CONCAT=y
474CONFIG_MTD_PARTITIONS=y
475# CONFIG_MTD_REDBOOT_PARTS is not set
476# CONFIG_MTD_CMDLINE_PARTS is not set
477
478#
479# User Modules And Translation Layers
480#
481CONFIG_MTD_CHAR=y
482CONFIG_MTD_BLKDEVS=y
483CONFIG_MTD_BLOCK=y
484# CONFIG_FTL is not set
485# CONFIG_NFTL is not set
486# CONFIG_INFTL is not set
487# CONFIG_RFD_FTL is not set
488# CONFIG_SSFDC is not set
489
490#
491# RAM/ROM/Flash chip drivers
492#
493CONFIG_MTD_CFI=y
494# CONFIG_MTD_JEDECPROBE is not set
495CONFIG_MTD_GEN_PROBE=y
496# CONFIG_MTD_CFI_ADV_OPTIONS is not set
497CONFIG_MTD_MAP_BANK_WIDTH_1=y
498CONFIG_MTD_MAP_BANK_WIDTH_2=y
499CONFIG_MTD_MAP_BANK_WIDTH_4=y
500# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
501# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
502# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
503CONFIG_MTD_CFI_I1=y
504CONFIG_MTD_CFI_I2=y
505# CONFIG_MTD_CFI_I4 is not set
506# CONFIG_MTD_CFI_I8 is not set
507# CONFIG_MTD_CFI_INTELEXT is not set
508CONFIG_MTD_CFI_AMDSTD=y
509# CONFIG_MTD_CFI_STAA is not set
510CONFIG_MTD_CFI_UTIL=y
511# CONFIG_MTD_RAM is not set
512# CONFIG_MTD_ROM is not set
513# CONFIG_MTD_ABSENT is not set
514# CONFIG_MTD_OBSOLETE_CHIPS is not set
515
516#
517# Mapping drivers for chip access
518#
519# CONFIG_MTD_COMPLEX_MAPPINGS is not set
520# CONFIG_MTD_PHYSMAP is not set
521# CONFIG_MTD_PLATRAM is not set
522
523#
524# Self-contained MTD device drivers
525#
526# CONFIG_MTD_SLRAM is not set
527# CONFIG_MTD_PHRAM is not set
528# CONFIG_MTD_MTDRAM is not set
529# CONFIG_MTD_BLOCK2MTD is not set
530
531#
532# Disk-On-Chip Device Drivers
533#
534# CONFIG_MTD_DOC2000 is not set
535# CONFIG_MTD_DOC2001 is not set
536# CONFIG_MTD_DOC2001PLUS is not set
537
538#
539# NAND Flash Device Drivers
540#
541# CONFIG_MTD_NAND is not set
542
543#
544# OneNAND Flash Device Drivers
545#
546# CONFIG_MTD_ONENAND is not set
547
548#
549# Parallel port support
550#
551# CONFIG_PARPORT is not set
552
553#
554# Plug and Play support
555#
556# CONFIG_PNPACPI is not set
557
558#
559# Block devices
560#
561# CONFIG_BLK_DEV_COW_COMMON is not set
562# CONFIG_BLK_DEV_LOOP is not set
563# CONFIG_BLK_DEV_NBD is not set
564# CONFIG_BLK_DEV_RAM is not set
565# CONFIG_CDROM_PKTCDVD is not set
566# CONFIG_ATA_OVER_ETH is not set
567
568#
569# Misc devices
570#
571
572#
573# ATA/ATAPI/MFM/RLL support
574#
575# CONFIG_IDE is not set
576
577#
578# SCSI device support
579#
580# CONFIG_RAID_ATTRS is not set
581CONFIG_SCSI=y
582# CONFIG_SCSI_TGT is not set
583# CONFIG_SCSI_NETLINK is not set
584CONFIG_SCSI_PROC_FS=y
585
586#
587# SCSI support type (disk, tape, CD-ROM)
588#
589CONFIG_BLK_DEV_SD=y
590# CONFIG_CHR_DEV_ST is not set
591# CONFIG_CHR_DEV_OSST is not set
592# CONFIG_BLK_DEV_SR is not set
593# CONFIG_CHR_DEV_SG is not set
594# CONFIG_CHR_DEV_SCH is not set
595
596#
597# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
598#
599# CONFIG_SCSI_MULTI_LUN is not set
600# CONFIG_SCSI_CONSTANTS is not set
601# CONFIG_SCSI_LOGGING is not set
602# CONFIG_SCSI_SCAN_ASYNC is not set
603
604#
605# SCSI Transports
606#
607# CONFIG_SCSI_SPI_ATTRS is not set
608# CONFIG_SCSI_FC_ATTRS is not set
609# CONFIG_SCSI_ISCSI_ATTRS is not set
610# CONFIG_SCSI_SAS_ATTRS is not set
611# CONFIG_SCSI_SAS_LIBSAS is not set
612
613#
614# SCSI low-level drivers
615#
616# CONFIG_ISCSI_TCP is not set
617# CONFIG_SCSI_DEBUG is not set
618
619#
620# Serial ATA (prod) and Parallel ATA (experimental) drivers
621#
622CONFIG_ATA=y
623# CONFIG_ATA_NONSTANDARD is not set
624CONFIG_PATA_PLATFORM=y
625
626#
627# Multi-device support (RAID and LVM)
628#
629# CONFIG_MD is not set
630
631#
632# Fusion MPT device support
633#
634# CONFIG_FUSION is not set
635
636#
637# IEEE 1394 (FireWire) support
638#
639
640#
641# I2O device support
642#
643
644#
645# Network device support
646#
647CONFIG_NETDEVICES=y
648# CONFIG_DUMMY is not set
649# CONFIG_BONDING is not set
650# CONFIG_EQUALIZER is not set
651# CONFIG_TUN is not set
652
653#
654# PHY device support
655#
656
657#
658# Ethernet (10 or 100Mbit)
659#
660# CONFIG_NET_ETHERNET is not set
661
662#
663# Ethernet (1000 Mbit)
664#
665
666#
667# Ethernet (10000 Mbit)
668#
669
670#
671# Token Ring devices
672#
673
674#
675# Wireless LAN (non-hamradio)
676#
677# CONFIG_NET_RADIO is not set
678
679#
680# Wan interfaces
681#
682# CONFIG_WAN is not set
683# CONFIG_PPP is not set
684# CONFIG_SLIP 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#
703# CONFIG_INPUT is not set
704
705#
706# Hardware I/O ports
707#
708# CONFIG_SERIO is not set
709# CONFIG_GAMEPORT is not set
710
711#
712# Character devices
713#
714# CONFIG_VT is not set
715# CONFIG_SERIAL_NONSTANDARD is not set
716
717#
718# Serial drivers
719#
720# CONFIG_SERIAL_8250 is not set
721
722#
723# Non-8250 serial port support
724#
725CONFIG_SERIAL_SH_SCI=y
726CONFIG_SERIAL_SH_SCI_NR_UARTS=2
727CONFIG_SERIAL_SH_SCI_CONSOLE=y
728CONFIG_SERIAL_CORE=y
729CONFIG_SERIAL_CORE_CONSOLE=y
730CONFIG_UNIX98_PTYS=y
731# CONFIG_LEGACY_PTYS is not set
732
733#
734# IPMI
735#
736# CONFIG_IPMI_HANDLER is not set
737
738#
739# Watchdog Cards
740#
741# CONFIG_WATCHDOG is not set
742CONFIG_HW_RANDOM=m
743# CONFIG_GEN_RTC is not set
744# CONFIG_DTLK is not set
745# CONFIG_R3964 is not set
746# CONFIG_RAW_DRIVER is not set
747
748#
749# TPM devices
750#
751# CONFIG_TCG_TPM is not set
752
753#
754# I2C support
755#
756# CONFIG_I2C is not set
757
758#
759# SPI support
760#
761# CONFIG_SPI is not set
762# CONFIG_SPI_MASTER is not set
763
764#
765# Dallas's 1-wire bus
766#
767# CONFIG_W1 is not set
768
769#
770# Hardware Monitoring support
771#
772# CONFIG_HWMON is not set
773# CONFIG_HWMON_VID is not set
774
775#
776# Multifunction device drivers
777#
778# CONFIG_MFD_SM501 is not set
779
780#
781# Multimedia devices
782#
783# CONFIG_VIDEO_DEV is not set
784
785#
786# Digital Video Broadcasting Devices
787#
788# CONFIG_DVB is not set
789
790#
791# Graphics support
792#
793# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
794# CONFIG_FB is not set
795
796#
797# Sound
798#
799# CONFIG_SOUND is not set
800
801#
802# USB support
803#
804# CONFIG_USB_ARCH_HAS_HCD is not set
805# CONFIG_USB_ARCH_HAS_OHCI is not set
806# CONFIG_USB_ARCH_HAS_EHCI is not set
807
808#
809# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
810#
811
812#
813# USB Gadget Support
814#
815# CONFIG_USB_GADGET is not set
816
817#
818# MMC/SD Card support
819#
820# CONFIG_MMC is not set
821
822#
823# LED devices
824#
825CONFIG_NEW_LEDS=y
826CONFIG_LEDS_CLASS=y
827
828#
829# LED drivers
830#
831
832#
833# LED Triggers
834#
835CONFIG_LEDS_TRIGGERS=y
836# CONFIG_LEDS_TRIGGER_TIMER is not set
837# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
838
839#
840# InfiniBand support
841#
842
843#
844# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
845#
846
847#
848# Real Time Clock
849#
850# CONFIG_RTC_CLASS is not set
851
852#
853# DMA Engine support
854#
855# CONFIG_DMA_ENGINE is not set
856
857#
858# DMA Clients
859#
860
861#
862# DMA Devices
863#
864
865#
866# Auxiliary Display support
867#
868
869#
870# Virtualization
871#
872
873#
874# File systems
875#
876CONFIG_EXT2_FS=y
877CONFIG_EXT2_FS_XATTR=y
878CONFIG_EXT2_FS_POSIX_ACL=y
879CONFIG_EXT2_FS_SECURITY=y
880# CONFIG_EXT2_FS_XIP is not set
881# CONFIG_EXT3_FS is not set
882# CONFIG_EXT4DEV_FS is not set
883CONFIG_FS_MBCACHE=y
884# CONFIG_REISERFS_FS is not set
885# CONFIG_JFS_FS is not set
886CONFIG_FS_POSIX_ACL=y
887# CONFIG_XFS_FS is not set
888# CONFIG_GFS2_FS is not set
889# CONFIG_OCFS2_FS is not set
890# CONFIG_MINIX_FS is not set
891# CONFIG_ROMFS_FS is not set
892# CONFIG_INOTIFY is not set
893# CONFIG_QUOTA is not set
894# CONFIG_DNOTIFY is not set
895# CONFIG_AUTOFS_FS is not set
896# CONFIG_AUTOFS4_FS is not set
897# CONFIG_FUSE_FS is not set
898
899#
900# CD-ROM/DVD Filesystems
901#
902# CONFIG_ISO9660_FS is not set
903# CONFIG_UDF_FS is not set
904
905#
906# DOS/FAT/NT Filesystems
907#
908# CONFIG_MSDOS_FS is not set
909# CONFIG_VFAT_FS is not set
910# CONFIG_NTFS_FS is not set
911
912#
913# Pseudo filesystems
914#
915CONFIG_PROC_FS=y
916# CONFIG_PROC_KCORE is not set
917CONFIG_PROC_SYSCTL=y
918CONFIG_SYSFS=y
919CONFIG_TMPFS=y
920# CONFIG_TMPFS_POSIX_ACL is not set
921# CONFIG_HUGETLBFS is not set
922# CONFIG_HUGETLB_PAGE is not set
923CONFIG_RAMFS=y
924# CONFIG_CONFIGFS_FS is not set
925
926#
927# Miscellaneous filesystems
928#
929# CONFIG_ADFS_FS is not set
930# CONFIG_AFFS_FS is not set
931# CONFIG_HFS_FS is not set
932# CONFIG_HFSPLUS_FS is not set
933# CONFIG_BEFS_FS is not set
934# CONFIG_BFS_FS is not set
935# CONFIG_EFS_FS is not set
936CONFIG_JFFS2_FS=y
937CONFIG_JFFS2_FS_DEBUG=0
938CONFIG_JFFS2_FS_WRITEBUFFER=y
939# CONFIG_JFFS2_SUMMARY is not set
940# CONFIG_JFFS2_FS_XATTR is not set
941# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
942CONFIG_JFFS2_ZLIB=y
943CONFIG_JFFS2_RTIME=y
944# CONFIG_JFFS2_RUBIN is not set
945CONFIG_CRAMFS=y
946# CONFIG_VXFS_FS is not set
947# CONFIG_HPFS_FS is not set
948# CONFIG_QNX4FS_FS is not set
949# CONFIG_SYSV_FS is not set
950# CONFIG_UFS_FS is not set
951
952#
953# Network File Systems
954#
955# CONFIG_NFS_FS is not set
956# CONFIG_NFSD is not set
957# CONFIG_SMB_FS is not set
958# CONFIG_CIFS is not set
959# CONFIG_NCP_FS is not set
960# CONFIG_CODA_FS is not set
961# CONFIG_AFS_FS is not set
962# CONFIG_9P_FS is not set
963
964#
965# Partition Types
966#
967# CONFIG_PARTITION_ADVANCED is not set
968CONFIG_MSDOS_PARTITION=y
969
970#
971# Native Language Support
972#
973# CONFIG_NLS is not set
974
975#
976# Distributed Lock Manager
977#
978# CONFIG_DLM is not set
979
980#
981# Profiling support
982#
983# CONFIG_PROFILING is not set
984
985#
986# Kernel hacking
987#
988CONFIG_TRACE_IRQFLAGS_SUPPORT=y
989# CONFIG_PRINTK_TIME is not set
990CONFIG_ENABLE_MUST_CHECK=y
991# CONFIG_MAGIC_SYSRQ is not set
992# CONFIG_UNUSED_SYMBOLS is not set
993# CONFIG_DEBUG_FS is not set
994# CONFIG_HEADERS_CHECK is not set
995CONFIG_DEBUG_KERNEL=y
996# CONFIG_DEBUG_SHIRQ is not set
997CONFIG_LOG_BUF_SHIFT=14
998# CONFIG_DETECT_SOFTLOCKUP is not set
999# CONFIG_SCHEDSTATS is not set
1000# CONFIG_TIMER_STATS is not set
1001# CONFIG_DEBUG_SLAB is not set
1002# CONFIG_DEBUG_RT_MUTEXES is not set
1003# CONFIG_RT_MUTEX_TESTER is not set
1004# CONFIG_DEBUG_SPINLOCK is not set
1005# CONFIG_DEBUG_MUTEXES is not set
1006# CONFIG_DEBUG_LOCK_ALLOC is not set
1007# CONFIG_PROVE_LOCKING is not set
1008# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1009# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1010# CONFIG_DEBUG_KOBJECT is not set
1011CONFIG_DEBUG_INFO=y
1012# CONFIG_DEBUG_VM is not set
1013# CONFIG_DEBUG_LIST is not set
1014CONFIG_FRAME_POINTER=y
1015# CONFIG_FORCED_INLINING is not set
1016# CONFIG_RCU_TORTURE_TEST is not set
1017# CONFIG_FAULT_INJECTION is not set
1018# CONFIG_SH_STANDARD_BIOS is not set
1019# CONFIG_EARLY_SCIF_CONSOLE is not set
1020# CONFIG_DEBUG_STACKOVERFLOW is not set
1021# CONFIG_DEBUG_STACK_USAGE is not set
1022# CONFIG_4KSTACKS is not set
1023# CONFIG_SH_KGDB is not set
1024
1025#
1026# Security options
1027#
1028# CONFIG_KEYS is not set
1029# CONFIG_SECURITY is not set
1030
1031#
1032# Cryptographic options
1033#
1034CONFIG_CRYPTO=y
1035CONFIG_CRYPTO_ALGAPI=y
1036CONFIG_CRYPTO_BLKCIPHER=y
1037CONFIG_CRYPTO_HASH=y
1038CONFIG_CRYPTO_MANAGER=y
1039CONFIG_CRYPTO_HMAC=y
1040# CONFIG_CRYPTO_XCBC is not set
1041# CONFIG_CRYPTO_NULL is not set
1042# CONFIG_CRYPTO_MD4 is not set
1043CONFIG_CRYPTO_MD5=y
1044CONFIG_CRYPTO_SHA1=y
1045# CONFIG_CRYPTO_SHA256 is not set
1046# CONFIG_CRYPTO_SHA512 is not set
1047# CONFIG_CRYPTO_WP512 is not set
1048# CONFIG_CRYPTO_TGR192 is not set
1049# CONFIG_CRYPTO_GF128MUL is not set
1050CONFIG_CRYPTO_ECB=m
1051CONFIG_CRYPTO_CBC=y
1052CONFIG_CRYPTO_PCBC=m
1053# CONFIG_CRYPTO_LRW is not set
1054CONFIG_CRYPTO_DES=y
1055# CONFIG_CRYPTO_FCRYPT is not set
1056# CONFIG_CRYPTO_BLOWFISH is not set
1057# CONFIG_CRYPTO_TWOFISH is not set
1058# CONFIG_CRYPTO_SERPENT is not set
1059# CONFIG_CRYPTO_AES is not set
1060# CONFIG_CRYPTO_CAST5 is not set
1061# CONFIG_CRYPTO_CAST6 is not set
1062# CONFIG_CRYPTO_TEA is not set
1063# CONFIG_CRYPTO_ARC4 is not set
1064# CONFIG_CRYPTO_KHAZAD is not set
1065# CONFIG_CRYPTO_ANUBIS is not set
1066CONFIG_CRYPTO_DEFLATE=y
1067# CONFIG_CRYPTO_MICHAEL_MIC is not set
1068# CONFIG_CRYPTO_CRC32C is not set
1069# CONFIG_CRYPTO_CAMELLIA is not set
1070# CONFIG_CRYPTO_TEST is not set
1071
1072#
1073# Hardware crypto devices
1074#
1075
1076#
1077# Library routines
1078#
1079CONFIG_BITREVERSE=y
1080CONFIG_CRC_CCITT=y
1081# CONFIG_CRC16 is not set
1082CONFIG_CRC32=y
1083# CONFIG_LIBCRC32C is not set
1084CONFIG_ZLIB_INFLATE=y
1085CONFIG_ZLIB_DEFLATE=y
1086CONFIG_PLIST=y
1087CONFIG_HAS_IOMEM=y
1088CONFIG_HAS_IOPORT=y
diff --git a/arch/sh/configs/se7722_defconfig b/arch/sh/configs/se7722_defconfig
new file mode 100644
index 000000000000..ca4c663dfa37
--- /dev/null
+++ b/arch/sh/configs/se7722_defconfig
@@ -0,0 +1,980 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.21-rc7
4# Fri Apr 27 16:30:30 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
14# CONFIG_GENERIC_TIME is not set
15CONFIG_STACKTRACE_SUPPORT=y
16CONFIG_LOCKDEP_SUPPORT=y
17# CONFIG_ARCH_HAS_ILOG2_U32 is not set
18# CONFIG_ARCH_HAS_ILOG2_U64 is not set
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20
21#
22# Code maturity level options
23#
24CONFIG_EXPERIMENTAL=y
25CONFIG_BROKEN_ON_SMP=y
26CONFIG_LOCK_KERNEL=y
27CONFIG_INIT_ENV_ARG_LIMIT=32
28
29#
30# General setup
31#
32CONFIG_LOCALVERSION=""
33CONFIG_LOCALVERSION_AUTO=y
34CONFIG_SWAP=y
35CONFIG_SYSVIPC=y
36# CONFIG_IPC_NS is not set
37CONFIG_SYSVIPC_SYSCTL=y
38# CONFIG_POSIX_MQUEUE is not set
39CONFIG_BSD_PROCESS_ACCT=y
40# CONFIG_BSD_PROCESS_ACCT_V3 is not set
41# CONFIG_TASKSTATS is not set
42# CONFIG_UTS_NS is not set
43# CONFIG_AUDIT is not set
44CONFIG_IKCONFIG=y
45CONFIG_IKCONFIG_PROC=y
46# CONFIG_SYSFS_DEPRECATED is not set
47# CONFIG_RELAY is not set
48CONFIG_BLK_DEV_INITRD=y
49CONFIG_INITRAMFS_SOURCE=""
50CONFIG_CC_OPTIMIZE_FOR_SIZE=y
51CONFIG_SYSCTL=y
52CONFIG_EMBEDDED=y
53CONFIG_UID16=y
54CONFIG_SYSCTL_SYSCALL=y
55CONFIG_KALLSYMS=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_EPOLL=y
64CONFIG_SHMEM=y
65CONFIG_SLAB=y
66CONFIG_VM_EVENT_COUNTERS=y
67CONFIG_RT_MUTEXES=y
68# CONFIG_TINY_SHMEM is not set
69CONFIG_BASE_SMALL=0
70# CONFIG_SLOB is not set
71
72#
73# Loadable module support
74#
75CONFIG_MODULES=y
76CONFIG_MODULE_UNLOAD=y
77# CONFIG_MODULE_FORCE_UNLOAD is not set
78# CONFIG_MODVERSIONS is not set
79# CONFIG_MODULE_SRCVERSION_ALL is not set
80CONFIG_KMOD=y
81
82#
83# Block layer
84#
85CONFIG_BLOCK=y
86# CONFIG_LBD is not set
87# CONFIG_BLK_DEV_IO_TRACE is not set
88# CONFIG_LSF is not set
89
90#
91# IO Schedulers
92#
93CONFIG_IOSCHED_NOOP=y
94# CONFIG_IOSCHED_AS is not set
95# CONFIG_IOSCHED_DEADLINE is not set
96# CONFIG_IOSCHED_CFQ is not set
97# CONFIG_DEFAULT_AS is not set
98# CONFIG_DEFAULT_DEADLINE is not set
99# CONFIG_DEFAULT_CFQ is not set
100CONFIG_DEFAULT_NOOP=y
101CONFIG_DEFAULT_IOSCHED="noop"
102
103#
104# System type
105#
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
139CONFIG_CPU_SH4A=y
140CONFIG_CPU_SH4AL_DSP=y
141CONFIG_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
148
149#
150# SH-2A Processor Support
151#
152# CONFIG_CPU_SUBTYPE_SH7206 is not set
153
154#
155# SH-3 Processor Support
156#
157# CONFIG_CPU_SUBTYPE_SH7300 is not set
158# CONFIG_CPU_SUBTYPE_SH7705 is not set
159# CONFIG_CPU_SUBTYPE_SH7706 is not set
160# CONFIG_CPU_SUBTYPE_SH7707 is not set
161# CONFIG_CPU_SUBTYPE_SH7708 is not set
162# CONFIG_CPU_SUBTYPE_SH7709 is not set
163# CONFIG_CPU_SUBTYPE_SH7710 is not set
164# CONFIG_CPU_SUBTYPE_SH7712 is not set
165
166#
167# SH-4 Processor Support
168#
169# CONFIG_CPU_SUBTYPE_SH7750 is not set
170# CONFIG_CPU_SUBTYPE_SH7091 is not set
171# CONFIG_CPU_SUBTYPE_SH7750R is not set
172# CONFIG_CPU_SUBTYPE_SH7750S is not set
173# CONFIG_CPU_SUBTYPE_SH7751 is not set
174# CONFIG_CPU_SUBTYPE_SH7751R is not set
175# CONFIG_CPU_SUBTYPE_SH7760 is not set
176# CONFIG_CPU_SUBTYPE_SH4_202 is not set
177
178#
179# ST40 Processor Support
180#
181# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
182# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
183
184#
185# SH-4A Processor Support
186#
187# CONFIG_CPU_SUBTYPE_SH7770 is not set
188# CONFIG_CPU_SUBTYPE_SH7780 is not set
189# CONFIG_CPU_SUBTYPE_SH7785 is not set
190
191#
192# SH4AL-DSP Processor Support
193#
194# CONFIG_CPU_SUBTYPE_SH73180 is not set
195# CONFIG_CPU_SUBTYPE_SH7343 is not set
196CONFIG_CPU_SUBTYPE_SH7722=y
197
198#
199# Memory management options
200#
201CONFIG_MMU=y
202CONFIG_PAGE_OFFSET=0x80000000
203CONFIG_MEMORY_START=0x0c000000
204CONFIG_MEMORY_SIZE=0x04000000
205# CONFIG_32BIT is not set
206# CONFIG_X2TLB is not set
207CONFIG_VSYSCALL=y
208CONFIG_ARCH_FLATMEM_ENABLE=y
209CONFIG_ARCH_POPULATES_NODE_MAP=y
210CONFIG_PAGE_SIZE_4KB=y
211# CONFIG_PAGE_SIZE_8KB is not set
212# CONFIG_PAGE_SIZE_64KB is not set
213CONFIG_HUGETLB_PAGE_SIZE_64K=y
214# CONFIG_HUGETLB_PAGE_SIZE_256K is not set
215# CONFIG_HUGETLB_PAGE_SIZE_1MB is not set
216# CONFIG_HUGETLB_PAGE_SIZE_4MB is not set
217# CONFIG_HUGETLB_PAGE_SIZE_64MB is not set
218CONFIG_SELECT_MEMORY_MODEL=y
219CONFIG_FLATMEM_MANUAL=y
220# CONFIG_DISCONTIGMEM_MANUAL is not set
221# CONFIG_SPARSEMEM_MANUAL is not set
222CONFIG_FLATMEM=y
223CONFIG_FLAT_NODE_MEM_MAP=y
224# CONFIG_SPARSEMEM_STATIC is not set
225CONFIG_SPLIT_PTLOCK_CPUS=4
226# CONFIG_RESOURCES_64BIT is not set
227CONFIG_ZONE_DMA_FLAG=0
228
229#
230# Cache configuration
231#
232# CONFIG_SH_DIRECT_MAPPED is not set
233# 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
240#
241# Processor features
242#
243CONFIG_CPU_LITTLE_ENDIAN=y
244# CONFIG_CPU_BIG_ENDIAN is not set
245# CONFIG_SH_FPU is not set
246# CONFIG_SH_FPU_EMU is not set
247CONFIG_SH_DSP=y
248CONFIG_SH_STORE_QUEUES=y
249CONFIG_CPU_HAS_INTEVT=y
250CONFIG_CPU_HAS_IPR_IRQ=y
251CONFIG_CPU_HAS_SR_RB=y
252CONFIG_CPU_HAS_PTEA=y
253
254#
255# Timer and clock configuration
256#
257CONFIG_SH_TMU=y
258CONFIG_SH_TIMER_IRQ=16
259CONFIG_NO_IDLE_HZ=y
260CONFIG_SH_PCLK_FREQ=33333333
261
262#
263# CPU Frequency scaling
264#
265# CONFIG_CPU_FREQ is not set
266
267#
268# DMA support
269#
270# CONFIG_SH_DMA is not set
271
272#
273# Companion Chips
274#
275# CONFIG_HD6446X_SERIES is not set
276
277#
278# Additional SuperH Device Drivers
279#
280CONFIG_HEARTBEAT=y
281# CONFIG_PUSH_SWITCH is not set
282
283#
284# Kernel features
285#
286# CONFIG_HZ_100 is not set
287CONFIG_HZ_250=y
288# CONFIG_HZ_300 is not set
289# CONFIG_HZ_1000 is not set
290CONFIG_HZ=250
291CONFIG_KEXEC=y
292# CONFIG_CRASH_DUMP is not set
293# CONFIG_SMP is not set
294# CONFIG_PREEMPT_NONE is not set
295# CONFIG_PREEMPT_VOLUNTARY is not set
296CONFIG_PREEMPT=y
297CONFIG_PREEMPT_BKL=y
298
299#
300# Boot options
301#
302CONFIG_ZERO_PAGE_OFFSET=0x00001000
303CONFIG_BOOT_LINK_OFFSET=0x00800000
304# CONFIG_UBC_WAKEUP is not set
305# CONFIG_CMDLINE_BOOL is not set
306
307#
308# Bus options
309#
310# CONFIG_PCI is not set
311
312#
313# PCCARD (PCMCIA/CardBus) support
314#
315# CONFIG_PCCARD is not set
316
317#
318# PCI Hotplug Support
319#
320
321#
322# Executable file formats
323#
324CONFIG_BINFMT_ELF=y
325# CONFIG_BINFMT_FLAT is not set
326# CONFIG_BINFMT_MISC is not set
327
328#
329# Power management options (EXPERIMENTAL)
330#
331# CONFIG_PM is not set
332
333#
334# Networking
335#
336CONFIG_NET=y
337
338#
339# Networking options
340#
341# CONFIG_NETDEBUG is not set
342CONFIG_PACKET=y
343CONFIG_PACKET_MMAP=y
344CONFIG_UNIX=y
345CONFIG_XFRM=y
346# CONFIG_XFRM_USER is not set
347# CONFIG_XFRM_SUB_POLICY is not set
348# CONFIG_XFRM_MIGRATE is not set
349# CONFIG_NET_KEY is not set
350CONFIG_INET=y
351# CONFIG_IP_MULTICAST is not set
352# CONFIG_IP_ADVANCED_ROUTER is not set
353CONFIG_IP_FIB_HASH=y
354# CONFIG_IP_PNP is not set
355# CONFIG_NET_IPIP is not set
356# CONFIG_NET_IPGRE is not set
357# CONFIG_ARPD is not set
358# CONFIG_SYN_COOKIES is not set
359# CONFIG_INET_AH is not set
360# CONFIG_INET_ESP is not set
361# CONFIG_INET_IPCOMP is not set
362# CONFIG_INET_XFRM_TUNNEL is not set
363# CONFIG_INET_TUNNEL is not set
364CONFIG_INET_XFRM_MODE_TRANSPORT=y
365CONFIG_INET_XFRM_MODE_TUNNEL=y
366CONFIG_INET_XFRM_MODE_BEET=y
367CONFIG_INET_DIAG=y
368CONFIG_INET_TCP_DIAG=y
369# CONFIG_TCP_CONG_ADVANCED is not set
370CONFIG_TCP_CONG_CUBIC=y
371CONFIG_DEFAULT_TCP_CONG="cubic"
372# CONFIG_TCP_MD5SIG is not set
373# CONFIG_IPV6 is not set
374# CONFIG_INET6_XFRM_TUNNEL is not set
375# CONFIG_INET6_TUNNEL is not set
376# CONFIG_NETWORK_SECMARK is not set
377# CONFIG_NETFILTER is not set
378
379#
380# DCCP Configuration (EXPERIMENTAL)
381#
382# CONFIG_IP_DCCP is not set
383
384#
385# SCTP Configuration (EXPERIMENTAL)
386#
387# CONFIG_IP_SCTP is not set
388
389#
390# TIPC Configuration (EXPERIMENTAL)
391#
392# CONFIG_TIPC is not set
393# CONFIG_ATM is not set
394# CONFIG_BRIDGE is not set
395# CONFIG_VLAN_8021Q is not set
396# CONFIG_DECNET is not set
397# CONFIG_LLC2 is not set
398# CONFIG_IPX is not set
399# CONFIG_ATALK is not set
400# CONFIG_X25 is not set
401# CONFIG_LAPB is not set
402# CONFIG_ECONET is not set
403# CONFIG_WAN_ROUTER is not set
404
405#
406# QoS and/or fair queueing
407#
408# CONFIG_NET_SCHED is not set
409
410#
411# Network testing
412#
413# CONFIG_NET_PKTGEN is not set
414# CONFIG_HAMRADIO is not set
415# CONFIG_IRDA is not set
416# CONFIG_BT is not set
417# CONFIG_IEEE80211 is not set
418
419#
420# Device Drivers
421#
422
423#
424# Generic Driver Options
425#
426CONFIG_STANDALONE=y
427CONFIG_PREVENT_FIRMWARE_BUILD=y
428# CONFIG_FW_LOADER is not set
429# CONFIG_SYS_HYPERVISOR is not set
430
431#
432# Connector - unified userspace <-> kernelspace linker
433#
434# CONFIG_CONNECTOR is not set
435
436#
437# Memory Technology Devices (MTD)
438#
439# CONFIG_MTD is not set
440
441#
442# Parallel port support
443#
444# CONFIG_PARPORT is not set
445
446#
447# Plug and Play support
448#
449# CONFIG_PNPACPI is not set
450
451#
452# Block devices
453#
454# CONFIG_BLK_DEV_COW_COMMON is not set
455# CONFIG_BLK_DEV_LOOP is not set
456# CONFIG_BLK_DEV_NBD is not set
457CONFIG_BLK_DEV_RAM=y
458CONFIG_BLK_DEV_RAM_COUNT=16
459CONFIG_BLK_DEV_RAM_SIZE=4096
460CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
461# CONFIG_CDROM_PKTCDVD is not set
462# CONFIG_ATA_OVER_ETH is not set
463
464#
465# Misc devices
466#
467
468#
469# ATA/ATAPI/MFM/RLL support
470#
471# CONFIG_IDE is not set
472
473#
474# SCSI device support
475#
476# CONFIG_RAID_ATTRS is not set
477CONFIG_SCSI=y
478# CONFIG_SCSI_TGT is not set
479# CONFIG_SCSI_NETLINK is not set
480CONFIG_SCSI_PROC_FS=y
481
482#
483# SCSI support type (disk, tape, CD-ROM)
484#
485CONFIG_BLK_DEV_SD=y
486# CONFIG_CHR_DEV_ST is not set
487# CONFIG_CHR_DEV_OSST is not set
488# CONFIG_BLK_DEV_SR is not set
489# CONFIG_CHR_DEV_SG is not set
490# CONFIG_CHR_DEV_SCH is not set
491
492#
493# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
494#
495# CONFIG_SCSI_MULTI_LUN is not set
496# CONFIG_SCSI_CONSTANTS is not set
497# CONFIG_SCSI_LOGGING is not set
498# CONFIG_SCSI_SCAN_ASYNC is not set
499
500#
501# SCSI Transports
502#
503# CONFIG_SCSI_SPI_ATTRS is not set
504# CONFIG_SCSI_FC_ATTRS is not set
505# CONFIG_SCSI_ISCSI_ATTRS is not set
506# CONFIG_SCSI_SAS_ATTRS is not set
507# CONFIG_SCSI_SAS_LIBSAS is not set
508
509#
510# SCSI low-level drivers
511#
512# CONFIG_ISCSI_TCP is not set
513# CONFIG_SCSI_DEBUG is not set
514
515#
516# Serial ATA (prod) and Parallel ATA (experimental) drivers
517#
518CONFIG_ATA=y
519# CONFIG_ATA_NONSTANDARD is not set
520CONFIG_PATA_PLATFORM=y
521
522#
523# Multi-device support (RAID and LVM)
524#
525# CONFIG_MD is not set
526
527#
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
542#
543CONFIG_NETDEVICES=y
544# CONFIG_DUMMY is not set
545# CONFIG_BONDING is not set
546# CONFIG_EQUALIZER is not set
547# CONFIG_TUN is not set
548
549#
550# PHY device support
551#
552# CONFIG_PHYLIB is not set
553
554#
555# Ethernet (10 or 100Mbit)
556#
557CONFIG_NET_ETHERNET=y
558CONFIG_MII=y
559# CONFIG_STNIC is not set
560CONFIG_SMC91X=y
561
562#
563# Ethernet (1000 Mbit)
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#
582# CONFIG_WAN is not set
583# CONFIG_PPP is not set
584# CONFIG_SLIP is not set
585# CONFIG_SHAPER is not set
586# CONFIG_NETCONSOLE is not set
587# CONFIG_NETPOLL is not set
588# CONFIG_NET_POLL_CONTROLLER is not set
589
590#
591# ISDN subsystem
592#
593# CONFIG_ISDN is not set
594
595#
596# Telephony Support
597#
598# CONFIG_PHONE is not set
599
600#
601# Input device support
602#
603CONFIG_INPUT=y
604# CONFIG_INPUT_FF_MEMLESS is not set
605
606#
607# Userland interfaces
608#
609CONFIG_INPUT_MOUSEDEV=y
610# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
611CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
612CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
613# CONFIG_INPUT_JOYDEV is not set
614# CONFIG_INPUT_TSDEV is not set
615# CONFIG_INPUT_EVDEV is not set
616# CONFIG_INPUT_EVBUG is not set
617
618#
619# Input Device Drivers
620#
621CONFIG_INPUT_KEYBOARD=y
622CONFIG_KEYBOARD_ATKBD=y
623# CONFIG_KEYBOARD_SUNKBD is not set
624# CONFIG_KEYBOARD_LKKBD is not set
625# CONFIG_KEYBOARD_XTKBD is not set
626# CONFIG_KEYBOARD_NEWTON is not set
627# CONFIG_KEYBOARD_STOWAWAY is not set
628# CONFIG_INPUT_MOUSE is not set
629# CONFIG_INPUT_JOYSTICK is not set
630# CONFIG_INPUT_TOUCHSCREEN is not set
631# CONFIG_INPUT_MISC is not set
632
633#
634# Hardware I/O ports
635#
636CONFIG_SERIO=y
637# CONFIG_SERIO_I8042 is not set
638# CONFIG_SERIO_SERPORT is not set
639CONFIG_SERIO_LIBPS2=y
640# CONFIG_SERIO_RAW is not set
641# CONFIG_GAMEPORT is not set
642
643#
644# Character devices
645#
646# CONFIG_VT is not set
647# CONFIG_SERIAL_NONSTANDARD is not set
648
649#
650# Serial drivers
651#
652# CONFIG_SERIAL_8250 is not set
653
654#
655# Non-8250 serial port support
656#
657CONFIG_SERIAL_SH_SCI=y
658CONFIG_SERIAL_SH_SCI_NR_UARTS=2
659CONFIG_SERIAL_SH_SCI_CONSOLE=y
660CONFIG_SERIAL_CORE=y
661CONFIG_SERIAL_CORE_CONSOLE=y
662CONFIG_UNIX98_PTYS=y
663CONFIG_LEGACY_PTYS=y
664CONFIG_LEGACY_PTY_COUNT=256
665
666#
667# IPMI
668#
669# CONFIG_IPMI_HANDLER is not set
670
671#
672# Watchdog Cards
673#
674# CONFIG_WATCHDOG is not set
675CONFIG_HW_RANDOM=y
676# CONFIG_GEN_RTC is not set
677# CONFIG_DTLK is not set
678# CONFIG_R3964 is not set
679# CONFIG_RAW_DRIVER is not set
680
681#
682# TPM devices
683#
684# CONFIG_TCG_TPM is not set
685
686#
687# I2C support
688#
689# CONFIG_I2C is not set
690
691#
692# SPI support
693#
694# CONFIG_SPI is not set
695# CONFIG_SPI_MASTER is not set
696
697#
698# Dallas's 1-wire bus
699#
700# CONFIG_W1 is not set
701
702#
703# Hardware Monitoring support
704#
705CONFIG_HWMON=y
706# CONFIG_HWMON_VID is not set
707# CONFIG_SENSORS_ABITUGURU is not set
708# CONFIG_SENSORS_F71805F is not set
709# CONFIG_SENSORS_PC87427 is not set
710# CONFIG_SENSORS_VT1211 is not set
711# CONFIG_HWMON_DEBUG_CHIP is not set
712
713#
714# Multifunction device drivers
715#
716# CONFIG_MFD_SM501 is not set
717
718#
719# Multimedia devices
720#
721# CONFIG_VIDEO_DEV is not set
722
723#
724# Digital Video Broadcasting Devices
725#
726# CONFIG_DVB is not set
727
728#
729# Graphics support
730#
731# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
732# CONFIG_FB is not set
733
734#
735# Sound
736#
737# CONFIG_SOUND is not set
738
739#
740# HID Devices
741#
742CONFIG_HID=y
743# CONFIG_HID_DEBUG is not set
744
745#
746# USB support
747#
748# CONFIG_USB_ARCH_HAS_HCD is not set
749# CONFIG_USB_ARCH_HAS_OHCI is not set
750# CONFIG_USB_ARCH_HAS_EHCI is not set
751
752#
753# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
754#
755
756#
757# USB Gadget Support
758#
759# CONFIG_USB_GADGET is not set
760
761#
762# MMC/SD Card support
763#
764# CONFIG_MMC is not set
765
766#
767# LED devices
768#
769# CONFIG_NEW_LEDS is not set
770
771#
772# LED drivers
773#
774
775#
776# LED Triggers
777#
778
779#
780# InfiniBand support
781#
782
783#
784# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
785#
786
787#
788# Real Time Clock
789#
790CONFIG_RTC_LIB=y
791CONFIG_RTC_CLASS=y
792CONFIG_RTC_HCTOSYS=y
793CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
794# CONFIG_RTC_DEBUG is not set
795
796#
797# RTC interfaces
798#
799CONFIG_RTC_INTF_SYSFS=y
800CONFIG_RTC_INTF_PROC=y
801CONFIG_RTC_INTF_DEV=y
802# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
803
804#
805# RTC drivers
806#
807# CONFIG_RTC_DRV_DS1553 is not set
808# CONFIG_RTC_DRV_DS1742 is not set
809# 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
813
814#
815# DMA Engine support
816#
817# CONFIG_DMA_ENGINE is not set
818
819#
820# DMA Clients
821#
822
823#
824# DMA Devices
825#
826
827#
828# Auxiliary Display support
829#
830
831#
832# Virtualization
833#
834
835#
836# File systems
837#
838CONFIG_EXT2_FS=y
839# CONFIG_EXT2_FS_XATTR is not set
840# CONFIG_EXT2_FS_XIP is not set
841CONFIG_EXT3_FS=y
842CONFIG_EXT3_FS_XATTR=y
843# CONFIG_EXT3_FS_POSIX_ACL is not set
844# CONFIG_EXT3_FS_SECURITY is not set
845# CONFIG_EXT4DEV_FS is not set
846CONFIG_JBD=y
847# CONFIG_JBD_DEBUG is not set
848CONFIG_FS_MBCACHE=y
849# CONFIG_REISERFS_FS is not set
850# CONFIG_JFS_FS is not set
851# CONFIG_FS_POSIX_ACL is not set
852# CONFIG_XFS_FS is not set
853# CONFIG_GFS2_FS is not set
854# CONFIG_OCFS2_FS is not set
855# CONFIG_MINIX_FS is not set
856# CONFIG_ROMFS_FS is not set
857CONFIG_INOTIFY=y
858CONFIG_INOTIFY_USER=y
859# CONFIG_QUOTA is not set
860CONFIG_DNOTIFY=y
861# CONFIG_AUTOFS_FS is not set
862# CONFIG_AUTOFS4_FS is not set
863# CONFIG_FUSE_FS is not set
864
865#
866# CD-ROM/DVD Filesystems
867#
868# CONFIG_ISO9660_FS is not set
869# CONFIG_UDF_FS is not set
870
871#
872# DOS/FAT/NT Filesystems
873#
874# CONFIG_MSDOS_FS is not set
875# CONFIG_VFAT_FS is not set
876# CONFIG_NTFS_FS is not set
877
878#
879# Pseudo filesystems
880#
881CONFIG_PROC_FS=y
882CONFIG_PROC_KCORE=y
883CONFIG_PROC_SYSCTL=y
884CONFIG_SYSFS=y
885CONFIG_TMPFS=y
886# CONFIG_TMPFS_POSIX_ACL is not set
887CONFIG_HUGETLBFS=y
888CONFIG_HUGETLB_PAGE=y
889CONFIG_RAMFS=y
890# CONFIG_CONFIGFS_FS is not set
891
892#
893# Miscellaneous filesystems
894#
895# CONFIG_ADFS_FS is not set
896# CONFIG_AFFS_FS is not set
897# CONFIG_HFS_FS is not set
898# CONFIG_HFSPLUS_FS is not set
899# CONFIG_BEFS_FS is not set
900# CONFIG_BFS_FS is not set
901# CONFIG_EFS_FS is not set
902# CONFIG_CRAMFS is not set
903# CONFIG_VXFS_FS is not set
904# CONFIG_HPFS_FS is not set
905# CONFIG_QNX4FS_FS is not set
906# CONFIG_SYSV_FS is not set
907# CONFIG_UFS_FS is not set
908
909#
910# Network File Systems
911#
912# CONFIG_NFS_FS is not set
913# CONFIG_NFSD is not set
914# CONFIG_SMB_FS is not set
915# CONFIG_CIFS is not set
916# CONFIG_NCP_FS is not set
917# CONFIG_CODA_FS is not set
918# CONFIG_AFS_FS is not set
919# CONFIG_9P_FS is not set
920
921#
922# Partition Types
923#
924# CONFIG_PARTITION_ADVANCED is not set
925CONFIG_MSDOS_PARTITION=y
926
927#
928# Native Language Support
929#
930# CONFIG_NLS is not set
931
932#
933# Distributed Lock Manager
934#
935# CONFIG_DLM is not set
936
937#
938# Profiling support
939#
940# CONFIG_PROFILING is not set
941
942#
943# Kernel hacking
944#
945CONFIG_TRACE_IRQFLAGS_SUPPORT=y
946# CONFIG_PRINTK_TIME is not set
947# CONFIG_ENABLE_MUST_CHECK is not set
948# CONFIG_MAGIC_SYSRQ is not set
949# CONFIG_UNUSED_SYMBOLS is not set
950# CONFIG_DEBUG_FS is not set
951# CONFIG_HEADERS_CHECK is not set
952# CONFIG_DEBUG_KERNEL is not set
953CONFIG_LOG_BUF_SHIFT=14
954# CONFIG_DEBUG_BUGVERBOSE is not set
955# CONFIG_SH_STANDARD_BIOS is not set
956# CONFIG_EARLY_SCIF_CONSOLE is not set
957# CONFIG_SH_KGDB is not set
958
959#
960# Security options
961#
962# CONFIG_KEYS is not set
963# CONFIG_SECURITY is not set
964
965#
966# Cryptographic options
967#
968# CONFIG_CRYPTO is not set
969
970#
971# Library routines
972#
973CONFIG_BITREVERSE=y
974# CONFIG_CRC_CCITT is not set
975# CONFIG_CRC16 is not set
976CONFIG_CRC32=y
977# CONFIG_LIBCRC32C is not set
978CONFIG_PLIST=y
979CONFIG_HAS_IOMEM=y
980CONFIG_HAS_IOPORT=y
diff --git a/arch/sh/configs/se7780_defconfig b/arch/sh/configs/se7780_defconfig
new file mode 100644
index 000000000000..538661e98793
--- /dev/null
+++ b/arch/sh/configs/se7780_defconfig
@@ -0,0 +1,1309 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.21-rc3
4# Thu Mar 15 14:06:20 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
14# CONFIG_GENERIC_TIME is not set
15CONFIG_STACKTRACE_SUPPORT=y
16CONFIG_LOCKDEP_SUPPORT=y
17# CONFIG_ARCH_HAS_ILOG2_U32 is not set
18# CONFIG_ARCH_HAS_ILOG2_U64 is not set
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20
21#
22# Code maturity level options
23#
24# CONFIG_EXPERIMENTAL is not set
25CONFIG_BROKEN_ON_SMP=y
26CONFIG_INIT_ENV_ARG_LIMIT=32
27
28#
29# General setup
30#
31CONFIG_LOCALVERSION=""
32CONFIG_LOCALVERSION_AUTO=y
33# CONFIG_SWAP is not set
34CONFIG_SYSVIPC=y
35# CONFIG_IPC_NS is not set
36CONFIG_SYSVIPC_SYSCTL=y
37# CONFIG_BSD_PROCESS_ACCT is not set
38# CONFIG_TASKSTATS is not set
39# CONFIG_UTS_NS is not set
40# CONFIG_AUDIT is not set
41CONFIG_IKCONFIG=y
42CONFIG_IKCONFIG_PROC=y
43CONFIG_SYSFS_DEPRECATED=y
44# CONFIG_RELAY is not set
45# CONFIG_BLK_DEV_INITRD is not set
46CONFIG_SYSCTL=y
47CONFIG_EMBEDDED=y
48CONFIG_UID16=y
49CONFIG_SYSCTL_SYSCALL=y
50# CONFIG_KALLSYMS is not set
51# CONFIG_HOTPLUG is not set
52CONFIG_PRINTK=y
53CONFIG_BUG=y
54CONFIG_ELF_CORE=y
55CONFIG_BASE_FULL=y
56CONFIG_FUTEX=y
57# CONFIG_EPOLL is not set
58CONFIG_SHMEM=y
59CONFIG_SLAB=y
60CONFIG_VM_EVENT_COUNTERS=y
61CONFIG_RT_MUTEXES=y
62# CONFIG_TINY_SHMEM is not set
63CONFIG_BASE_SMALL=0
64# CONFIG_SLOB is not set
65
66#
67# Loadable module support
68#
69CONFIG_MODULES=y
70CONFIG_MODULE_UNLOAD=y
71# CONFIG_MODVERSIONS is not set
72# CONFIG_MODULE_SRCVERSION_ALL is not set
73CONFIG_KMOD=y
74
75#
76# Block layer
77#
78CONFIG_BLOCK=y
79# CONFIG_LBD is not set
80# CONFIG_LSF is not set
81
82#
83# IO Schedulers
84#
85CONFIG_IOSCHED_NOOP=y
86# CONFIG_IOSCHED_AS is not set
87CONFIG_IOSCHED_DEADLINE=y
88# CONFIG_IOSCHED_CFQ is not set
89# CONFIG_DEFAULT_AS is not set
90CONFIG_DEFAULT_DEADLINE=y
91# CONFIG_DEFAULT_CFQ is not set
92# CONFIG_DEFAULT_NOOP is not set
93CONFIG_DEFAULT_IOSCHED="deadline"
94
95#
96# System type
97#
98CONFIG_SOLUTION_ENGINE=y
99# CONFIG_SH_SOLUTION_ENGINE is not set
100# CONFIG_SH_7751_SOLUTION_ENGINE is not set
101CONFIG_SH_7780_SOLUTION_ENGINE=y
102# CONFIG_SH_7300_SOLUTION_ENGINE is not set
103# CONFIG_SH_7343_SOLUTION_ENGINE is not set
104# CONFIG_SH_73180_SOLUTION_ENGINE is not set
105# CONFIG_SH_7751_SYSTEMH is not set
106# CONFIG_SH_HP6XX is not set
107# CONFIG_SH_SATURN is not set
108# CONFIG_SH_DREAMCAST is not set
109# CONFIG_SH_MPC1211 is not set
110# CONFIG_SH_SH03 is not set
111# CONFIG_SH_SECUREEDGE5410 is not set
112# CONFIG_SH_HS7751RVOIP is not set
113# CONFIG_SH_7710VOIPGW is not set
114# CONFIG_SH_RTS7751R2D is not set
115# CONFIG_SH_HIGHLANDER is not set
116# CONFIG_SH_EDOSK7705 is not set
117# CONFIG_SH_SH4202_MICRODEV is not set
118# CONFIG_SH_LANDISK is not set
119# CONFIG_SH_TITAN is not set
120# CONFIG_SH_SHMIN is not set
121# CONFIG_SH_7206_SOLUTION_ENGINE is not set
122# CONFIG_SH_7619_SOLUTION_ENGINE is not set
123# CONFIG_SH_UNKNOWN is not set
124
125#
126# Processor selection
127#
128CONFIG_CPU_SH4=y
129CONFIG_CPU_SH4A=y
130
131#
132# SH-2 Processor Support
133#
134# CONFIG_CPU_SUBTYPE_SH7604 is not set
135# CONFIG_CPU_SUBTYPE_SH7619 is not set
136
137#
138# SH-2A Processor Support
139#
140# CONFIG_CPU_SUBTYPE_SH7206 is not set
141
142#
143# SH-3 Processor Support
144#
145# CONFIG_CPU_SUBTYPE_SH7300 is not set
146# CONFIG_CPU_SUBTYPE_SH7705 is not set
147# CONFIG_CPU_SUBTYPE_SH7706 is not set
148# CONFIG_CPU_SUBTYPE_SH7707 is not set
149# CONFIG_CPU_SUBTYPE_SH7708 is not set
150# CONFIG_CPU_SUBTYPE_SH7709 is not set
151# CONFIG_CPU_SUBTYPE_SH7710 is not set
152
153#
154# SH-4 Processor Support
155#
156# CONFIG_CPU_SUBTYPE_SH7750 is not set
157# CONFIG_CPU_SUBTYPE_SH7091 is not set
158# CONFIG_CPU_SUBTYPE_SH7750R is not set
159# CONFIG_CPU_SUBTYPE_SH7750S is not set
160# CONFIG_CPU_SUBTYPE_SH7751 is not set
161# CONFIG_CPU_SUBTYPE_SH7751R is not set
162# CONFIG_CPU_SUBTYPE_SH7760 is not set
163# CONFIG_CPU_SUBTYPE_SH4_202 is not set
164
165#
166# ST40 Processor Support
167#
168# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
169# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
170
171#
172# SH-4A Processor Support
173#
174# CONFIG_CPU_SUBTYPE_SH7770 is not set
175CONFIG_CPU_SUBTYPE_SH7780=y
176# CONFIG_CPU_SUBTYPE_SH7785 is not set
177
178#
179# SH4AL-DSP Processor Support
180#
181# CONFIG_CPU_SUBTYPE_SH73180 is not set
182# CONFIG_CPU_SUBTYPE_SH7343 is not set
183# CONFIG_CPU_SUBTYPE_SH7722 is not set
184
185#
186# Memory management options
187#
188CONFIG_MMU=y
189CONFIG_PAGE_OFFSET=0x80000000
190CONFIG_MEMORY_START=0x08000000
191CONFIG_MEMORY_SIZE=0x08000000
192CONFIG_32BIT=y
193CONFIG_VSYSCALL=y
194CONFIG_PAGE_SIZE_4KB=y
195# CONFIG_PAGE_SIZE_8KB is not set
196# CONFIG_PAGE_SIZE_64KB is not set
197CONFIG_FLATMEM=y
198CONFIG_FLAT_NODE_MEM_MAP=y
199# CONFIG_SPARSEMEM_STATIC is not set
200CONFIG_SPLIT_PTLOCK_CPUS=4
201# CONFIG_RESOURCES_64BIT is not set
202CONFIG_ZONE_DMA_FLAG=0
203
204#
205# Cache configuration
206#
207# CONFIG_SH_DIRECT_MAPPED is not set
208# CONFIG_SH_WRITETHROUGH is not set
209# CONFIG_SH_OCRAM is not set
210
211#
212# Processor features
213#
214CONFIG_CPU_LITTLE_ENDIAN=y
215# CONFIG_CPU_BIG_ENDIAN is not set
216CONFIG_SH_FPU=y
217# CONFIG_SH_DSP is not set
218# CONFIG_SH_STORE_QUEUES is not set
219CONFIG_CPU_HAS_INTEVT=y
220CONFIG_CPU_HAS_INTC2_IRQ=y
221CONFIG_CPU_HAS_SR_RB=y
222
223#
224# Timer and clock configuration
225#
226CONFIG_SH_TMU=y
227CONFIG_SH_TIMER_IRQ=28
228# CONFIG_NO_IDLE_HZ is not set
229CONFIG_SH_PCLK_FREQ=33333333
230
231#
232# CPU Frequency scaling
233#
234# CONFIG_CPU_FREQ is not set
235
236#
237# DMA support
238#
239# CONFIG_SH_DMA is not set
240
241#
242# Companion Chips
243#
244# CONFIG_HD6446X_SERIES is not set
245
246#
247# Additional SuperH Device Drivers
248#
249CONFIG_HEARTBEAT=y
250# CONFIG_PUSH_SWITCH is not set
251
252#
253# Kernel features
254#
255# CONFIG_HZ_100 is not set
256CONFIG_HZ_250=y
257# CONFIG_HZ_300 is not set
258# CONFIG_HZ_1000 is not set
259CONFIG_HZ=250
260# CONFIG_SMP is not set
261CONFIG_PREEMPT_NONE=y
262# CONFIG_PREEMPT_VOLUNTARY is not set
263# CONFIG_PREEMPT is not set
264
265#
266# Boot options
267#
268CONFIG_ZERO_PAGE_OFFSET=0x00001000
269CONFIG_BOOT_LINK_OFFSET=0x00810000
270# CONFIG_UBC_WAKEUP is not set
271# CONFIG_CMDLINE_BOOL is not set
272
273#
274# Bus options
275#
276CONFIG_PCI=y
277CONFIG_SH_PCIDMA_NONCOHERENT=y
278CONFIG_PCI_AUTO=y
279CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
280
281#
282# PCCARD (PCMCIA/CardBus) support
283#
284
285#
286# PCI Hotplug Support
287#
288
289#
290# Executable file formats
291#
292CONFIG_BINFMT_ELF=y
293# CONFIG_BINFMT_FLAT is not set
294# CONFIG_BINFMT_MISC is not set
295
296#
297# Networking
298#
299CONFIG_NET=y
300
301#
302# Networking options
303#
304# CONFIG_NETDEBUG is not set
305CONFIG_PACKET=y
306# CONFIG_PACKET_MMAP is not set
307CONFIG_UNIX=y
308CONFIG_XFRM=y
309# CONFIG_XFRM_USER is not set
310# CONFIG_NET_KEY is not set
311CONFIG_INET=y
312CONFIG_IP_MULTICAST=y
313# CONFIG_IP_ADVANCED_ROUTER is not set
314CONFIG_IP_FIB_HASH=y
315CONFIG_IP_PNP=y
316# CONFIG_IP_PNP_DHCP is not set
317# CONFIG_IP_PNP_BOOTP is not set
318# CONFIG_IP_PNP_RARP is not set
319# CONFIG_NET_IPIP is not set
320# CONFIG_NET_IPGRE is not set
321# CONFIG_IP_MROUTE is not set
322# CONFIG_SYN_COOKIES is not set
323# CONFIG_INET_AH is not set
324# CONFIG_INET_ESP is not set
325# CONFIG_INET_IPCOMP is not set
326# CONFIG_INET_XFRM_TUNNEL is not set
327# CONFIG_INET_TUNNEL is not set
328CONFIG_INET_XFRM_MODE_TRANSPORT=y
329CONFIG_INET_XFRM_MODE_TUNNEL=y
330CONFIG_INET_XFRM_MODE_BEET=y
331CONFIG_INET_DIAG=y
332CONFIG_INET_TCP_DIAG=y
333# CONFIG_TCP_CONG_ADVANCED is not set
334CONFIG_TCP_CONG_CUBIC=y
335CONFIG_DEFAULT_TCP_CONG="cubic"
336CONFIG_IPV6=y
337# CONFIG_IPV6_PRIVACY is not set
338# CONFIG_IPV6_ROUTER_PREF is not set
339# CONFIG_INET6_AH is not set
340# CONFIG_INET6_ESP is not set
341# CONFIG_INET6_IPCOMP is not set
342# CONFIG_INET6_XFRM_TUNNEL is not set
343# CONFIG_INET6_TUNNEL is not set
344# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
345# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
346# CONFIG_INET6_XFRM_MODE_BEET is not set
347# CONFIG_IPV6_SIT is not set
348# CONFIG_IPV6_TUNNEL is not set
349# CONFIG_NETWORK_SECMARK is not set
350# CONFIG_NETFILTER is not set
351# CONFIG_BRIDGE is not set
352# CONFIG_VLAN_8021Q is not set
353# CONFIG_DECNET is not set
354# CONFIG_LLC2 is not set
355# CONFIG_IPX is not set
356# CONFIG_ATALK is not set
357
358#
359# QoS and/or fair queueing
360#
361# CONFIG_NET_SCHED is not set
362
363#
364# Network testing
365#
366# CONFIG_NET_PKTGEN is not set
367# CONFIG_HAMRADIO is not set
368# CONFIG_IRDA is not set
369# CONFIG_BT is not set
370# CONFIG_IEEE80211 is not set
371
372#
373# Device Drivers
374#
375
376#
377# Generic Driver Options
378#
379CONFIG_STANDALONE=y
380# CONFIG_PREVENT_FIRMWARE_BUILD is not set
381# CONFIG_SYS_HYPERVISOR is not set
382
383#
384# Connector - unified userspace <-> kernelspace linker
385#
386# CONFIG_CONNECTOR is not set
387
388#
389# Memory Technology Devices (MTD)
390#
391CONFIG_MTD=y
392# CONFIG_MTD_DEBUG is not set
393# CONFIG_MTD_CONCAT is not set
394CONFIG_MTD_PARTITIONS=y
395# CONFIG_MTD_REDBOOT_PARTS is not set
396# CONFIG_MTD_CMDLINE_PARTS is not set
397
398#
399# User Modules And Translation Layers
400#
401CONFIG_MTD_CHAR=y
402CONFIG_MTD_BLKDEVS=y
403CONFIG_MTD_BLOCK=y
404# CONFIG_FTL is not set
405# CONFIG_NFTL is not set
406# CONFIG_INFTL is not set
407# CONFIG_RFD_FTL is not set
408# CONFIG_SSFDC is not set
409
410#
411# RAM/ROM/Flash chip drivers
412#
413CONFIG_MTD_CFI=y
414# CONFIG_MTD_JEDECPROBE is not set
415CONFIG_MTD_GEN_PROBE=y
416CONFIG_MTD_CFI_ADV_OPTIONS=y
417CONFIG_MTD_CFI_NOSWAP=y
418# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
419# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
420CONFIG_MTD_CFI_GEOMETRY=y
421# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
422# CONFIG_MTD_MAP_BANK_WIDTH_2 is not set
423CONFIG_MTD_MAP_BANK_WIDTH_4=y
424# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
425# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
426# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
427# CONFIG_MTD_CFI_I1 is not set
428CONFIG_MTD_CFI_I2=y
429# CONFIG_MTD_CFI_I4 is not set
430# CONFIG_MTD_CFI_I8 is not set
431# CONFIG_MTD_OTP is not set
432# CONFIG_MTD_CFI_INTELEXT is not set
433CONFIG_MTD_CFI_AMDSTD=y
434# CONFIG_MTD_CFI_STAA is not set
435CONFIG_MTD_CFI_UTIL=y
436# CONFIG_MTD_RAM is not set
437CONFIG_MTD_ROM=y
438# CONFIG_MTD_ABSENT is not set
439# CONFIG_MTD_OBSOLETE_CHIPS is not set
440
441#
442# Mapping drivers for chip access
443#
444# CONFIG_MTD_COMPLEX_MAPPINGS is not set
445# CONFIG_MTD_PHYSMAP is not set
446# CONFIG_MTD_PLATRAM is not set
447
448#
449# Self-contained MTD device drivers
450#
451# CONFIG_MTD_PMC551 is not set
452# CONFIG_MTD_SLRAM is not set
453# CONFIG_MTD_PHRAM is not set
454# CONFIG_MTD_MTDRAM is not set
455# CONFIG_MTD_BLOCK2MTD is not set
456
457#
458# Disk-On-Chip Device Drivers
459#
460# CONFIG_MTD_DOC2000 is not set
461# CONFIG_MTD_DOC2001 is not set
462# CONFIG_MTD_DOC2001PLUS is not set
463
464#
465# NAND Flash Device Drivers
466#
467# CONFIG_MTD_NAND is not set
468
469#
470# OneNAND Flash Device Drivers
471#
472# CONFIG_MTD_ONENAND is not set
473
474#
475# Parallel port support
476#
477# CONFIG_PARPORT is not set
478
479#
480# Plug and Play support
481#
482# CONFIG_PNPACPI is not set
483
484#
485# Block devices
486#
487# CONFIG_BLK_CPQ_DA is not set
488# CONFIG_BLK_CPQ_CISS_DA is not set
489# CONFIG_BLK_DEV_DAC960 is not set
490# CONFIG_BLK_DEV_COW_COMMON is not set
491CONFIG_BLK_DEV_LOOP=y
492# CONFIG_BLK_DEV_CRYPTOLOOP is not set
493# CONFIG_BLK_DEV_NBD is not set
494# CONFIG_BLK_DEV_SX8 is not set
495# CONFIG_BLK_DEV_UB is not set
496# CONFIG_BLK_DEV_RAM is not set
497# CONFIG_CDROM_PKTCDVD is not set
498# CONFIG_ATA_OVER_ETH is not set
499
500#
501# Misc devices
502#
503# CONFIG_SGI_IOC4 is not set
504
505#
506# ATA/ATAPI/MFM/RLL support
507#
508# CONFIG_IDE is not set
509
510#
511# SCSI device support
512#
513# CONFIG_RAID_ATTRS is not set
514CONFIG_SCSI=y
515# CONFIG_SCSI_NETLINK is not set
516CONFIG_SCSI_PROC_FS=y
517
518#
519# SCSI support type (disk, tape, CD-ROM)
520#
521CONFIG_BLK_DEV_SD=y
522# CONFIG_CHR_DEV_ST is not set
523# CONFIG_CHR_DEV_OSST is not set
524# CONFIG_BLK_DEV_SR is not set
525CONFIG_CHR_DEV_SG=y
526# CONFIG_CHR_DEV_SCH is not set
527
528#
529# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
530#
531# CONFIG_SCSI_MULTI_LUN is not set
532# CONFIG_SCSI_CONSTANTS is not set
533# CONFIG_SCSI_LOGGING is not set
534# CONFIG_SCSI_SCAN_ASYNC is not set
535
536#
537# SCSI Transports
538#
539# CONFIG_SCSI_SPI_ATTRS is not set
540# CONFIG_SCSI_FC_ATTRS is not set
541# CONFIG_SCSI_ISCSI_ATTRS is not set
542# CONFIG_SCSI_SAS_ATTRS is not set
543# CONFIG_SCSI_SAS_LIBSAS is not set
544
545#
546# SCSI low-level drivers
547#
548# CONFIG_ISCSI_TCP is not set
549# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
550# CONFIG_SCSI_3W_9XXX is not set
551# CONFIG_SCSI_ACARD is not set
552# CONFIG_SCSI_AACRAID is not set
553# CONFIG_SCSI_AIC7XXX is not set
554# CONFIG_SCSI_AIC7XXX_OLD is not set
555# CONFIG_SCSI_AIC79XX is not set
556# CONFIG_SCSI_AIC94XX is not set
557# CONFIG_SCSI_DPT_I2O is not set
558# CONFIG_SCSI_ARCMSR is not set
559# CONFIG_MEGARAID_NEWGEN is not set
560# CONFIG_MEGARAID_LEGACY is not set
561# CONFIG_MEGARAID_SAS is not set
562# CONFIG_SCSI_HPTIOP is not set
563# CONFIG_SCSI_DMX3191D is not set
564# CONFIG_SCSI_FUTURE_DOMAIN is not set
565# CONFIG_SCSI_IPS is not set
566# CONFIG_SCSI_INITIO is not set
567# CONFIG_SCSI_INIA100 is not set
568# CONFIG_SCSI_STEX is not set
569# CONFIG_SCSI_SYM53C8XX_2 is not set
570# CONFIG_SCSI_IPR is not set
571# CONFIG_SCSI_QLOGIC_1280 is not set
572# CONFIG_SCSI_QLA_FC is not set
573# CONFIG_SCSI_QLA_ISCSI is not set
574# CONFIG_SCSI_LPFC is not set
575# CONFIG_SCSI_DC390T is not set
576# CONFIG_SCSI_NSP32 is not set
577# CONFIG_SCSI_DEBUG is not set
578# CONFIG_SCSI_SRP is not set
579
580#
581# Serial ATA (prod) and Parallel ATA (experimental) drivers
582#
583CONFIG_ATA=y
584# CONFIG_ATA_NONSTANDARD is not set
585# CONFIG_SATA_AHCI is not set
586# CONFIG_SATA_SVW is not set
587# CONFIG_ATA_PIIX is not set
588# CONFIG_SATA_NV is not set
589# CONFIG_PDC_ADMA is not set
590# CONFIG_SATA_QSTOR is not set
591# CONFIG_SATA_PROMISE is not set
592CONFIG_SATA_SIL=y
593# CONFIG_SATA_SIL24 is not set
594# CONFIG_SATA_SIS is not set
595# CONFIG_SATA_ULI is not set
596# CONFIG_SATA_VIA is not set
597# CONFIG_SATA_VITESSE is not set
598# CONFIG_PATA_AMD is not set
599# CONFIG_PATA_CS5520 is not set
600# CONFIG_PATA_EFAR is not set
601# CONFIG_ATA_GENERIC is not set
602# CONFIG_PATA_HPT3X3 is not set
603# CONFIG_PATA_JMICRON is not set
604# CONFIG_PATA_TRIFLEX is not set
605# CONFIG_PATA_MARVELL is not set
606# CONFIG_PATA_MPIIX is not set
607# CONFIG_PATA_NETCELL is not set
608# CONFIG_PATA_RZ1000 is not set
609# CONFIG_PATA_PDC2027X is not set
610# CONFIG_PATA_SIL680 is not set
611# CONFIG_PATA_VIA is not set
612# CONFIG_PATA_WINBOND is not set
613# CONFIG_PATA_PLATFORM is not set
614
615#
616# Multi-device support (RAID and LVM)
617#
618# CONFIG_MD is not set
619
620#
621# Fusion MPT device support
622#
623# CONFIG_FUSION is not set
624# CONFIG_FUSION_SPI is not set
625# CONFIG_FUSION_FC is not set
626# CONFIG_FUSION_SAS is not set
627
628#
629# IEEE 1394 (FireWire) support
630#
631# CONFIG_IEEE1394 is not set
632
633#
634# I2O device support
635#
636# CONFIG_I2O is not set
637
638#
639# Network device support
640#
641CONFIG_NETDEVICES=y
642# CONFIG_DUMMY is not set
643# CONFIG_BONDING is not set
644# CONFIG_EQUALIZER is not set
645# CONFIG_TUN is not set
646
647#
648# ARCnet devices
649#
650# CONFIG_ARCNET is not set
651
652#
653# PHY device support
654#
655CONFIG_PHYLIB=y
656
657#
658# MII PHY device drivers
659#
660# CONFIG_MARVELL_PHY is not set
661# CONFIG_DAVICOM_PHY is not set
662# CONFIG_QSEMI_PHY is not set
663# CONFIG_LXT_PHY is not set
664# CONFIG_CICADA_PHY is not set
665# CONFIG_VITESSE_PHY is not set
666CONFIG_SMSC_PHY=y
667# CONFIG_BROADCOM_PHY is not set
668# CONFIG_FIXED_PHY is not set
669
670#
671# Ethernet (10 or 100Mbit)
672#
673CONFIG_NET_ETHERNET=y
674CONFIG_MII=y
675# CONFIG_STNIC is not set
676# CONFIG_HAPPYMEAL is not set
677# CONFIG_SUNGEM is not set
678# CONFIG_CASSINI is not set
679# CONFIG_NET_VENDOR_3COM is not set
680CONFIG_SMC91X=y
681
682#
683# Tulip family network device support
684#
685# CONFIG_NET_TULIP is not set
686# CONFIG_HP100 is not set
687CONFIG_NET_PCI=y
688# CONFIG_PCNET32 is not set
689# CONFIG_AMD8111_ETH is not set
690# CONFIG_ADAPTEC_STARFIRE is not set
691# CONFIG_B44 is not set
692# CONFIG_FORCEDETH is not set
693# CONFIG_DGRS is not set
694# CONFIG_EEPRO100 is not set
695# CONFIG_E100 is not set
696# CONFIG_FEALNX is not set
697# CONFIG_NATSEMI is not set
698# CONFIG_NE2K_PCI is not set
699# CONFIG_8139TOO is not set
700# CONFIG_SIS900 is not set
701# CONFIG_EPIC100 is not set
702# CONFIG_SUNDANCE is not set
703# CONFIG_TLAN is not set
704# CONFIG_VIA_RHINE is not set
705
706#
707# Ethernet (1000 Mbit)
708#
709# CONFIG_ACENIC is not set
710# CONFIG_DL2K is not set
711# CONFIG_E1000 is not set
712# CONFIG_NS83820 is not set
713# CONFIG_HAMACHI is not set
714# CONFIG_R8169 is not set
715# CONFIG_SIS190 is not set
716# CONFIG_SKGE is not set
717# CONFIG_SKY2 is not set
718# CONFIG_SK98LIN is not set
719# CONFIG_VIA_VELOCITY is not set
720# CONFIG_TIGON3 is not set
721# CONFIG_BNX2 is not set
722# CONFIG_QLA3XXX is not set
723
724#
725# Ethernet (10000 Mbit)
726#
727# CONFIG_CHELSIO_T1 is not set
728# CONFIG_CHELSIO_T3 is not set
729# CONFIG_IXGB is not set
730# CONFIG_S2IO is not set
731# CONFIG_MYRI10GE is not set
732# CONFIG_NETXEN_NIC is not set
733
734#
735# Token Ring devices
736#
737# CONFIG_TR is not set
738
739#
740# Wireless LAN (non-hamradio)
741#
742# CONFIG_NET_RADIO is not set
743
744#
745# Wan interfaces
746#
747# CONFIG_WAN is not set
748# CONFIG_FDDI is not set
749# CONFIG_PPP is not set
750# CONFIG_SLIP is not set
751# CONFIG_NET_FC is not set
752# CONFIG_NETPOLL is not set
753# CONFIG_NET_POLL_CONTROLLER is not set
754
755#
756# ISDN subsystem
757#
758# CONFIG_ISDN is not set
759
760#
761# Telephony Support
762#
763# CONFIG_PHONE is not set
764
765#
766# Input device support
767#
768CONFIG_INPUT=y
769# CONFIG_INPUT_FF_MEMLESS is not set
770
771#
772# Userland interfaces
773#
774CONFIG_INPUT_MOUSEDEV=y
775# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
776CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
777CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
778# CONFIG_INPUT_JOYDEV is not set
779# CONFIG_INPUT_TSDEV is not set
780# CONFIG_INPUT_EVDEV is not set
781# CONFIG_INPUT_EVBUG is not set
782
783#
784# Input Device Drivers
785#
786# CONFIG_INPUT_KEYBOARD is not set
787# CONFIG_INPUT_MOUSE is not set
788# CONFIG_INPUT_JOYSTICK is not set
789# CONFIG_INPUT_TOUCHSCREEN is not set
790# CONFIG_INPUT_MISC is not set
791
792#
793# Hardware I/O ports
794#
795# CONFIG_SERIO is not set
796# CONFIG_GAMEPORT is not set
797
798#
799# Character devices
800#
801CONFIG_VT=y
802CONFIG_VT_CONSOLE=y
803CONFIG_HW_CONSOLE=y
804# CONFIG_VT_HW_CONSOLE_BINDING is not set
805# CONFIG_SERIAL_NONSTANDARD is not set
806
807#
808# Serial drivers
809#
810# CONFIG_SERIAL_8250 is not set
811
812#
813# Non-8250 serial port support
814#
815CONFIG_SERIAL_SH_SCI=y
816CONFIG_SERIAL_SH_SCI_NR_UARTS=2
817CONFIG_SERIAL_SH_SCI_CONSOLE=y
818CONFIG_SERIAL_CORE=y
819CONFIG_SERIAL_CORE_CONSOLE=y
820# CONFIG_SERIAL_JSM is not set
821CONFIG_UNIX98_PTYS=y
822# CONFIG_LEGACY_PTYS is not set
823
824#
825# IPMI
826#
827# CONFIG_IPMI_HANDLER is not set
828
829#
830# Watchdog Cards
831#
832# CONFIG_WATCHDOG is not set
833# CONFIG_HW_RANDOM is not set
834# CONFIG_GEN_RTC is not set
835# CONFIG_DTLK is not set
836# CONFIG_R3964 is not set
837# CONFIG_APPLICOM is not set
838# CONFIG_DRM is not set
839# CONFIG_RAW_DRIVER is not set
840
841#
842# TPM devices
843#
844
845#
846# I2C support
847#
848# CONFIG_I2C is not set
849
850#
851# SPI support
852#
853# CONFIG_SPI is not set
854# CONFIG_SPI_MASTER is not set
855
856#
857# Dallas's 1-wire bus
858#
859# CONFIG_W1 is not set
860
861#
862# Hardware Monitoring support
863#
864CONFIG_HWMON=y
865# CONFIG_HWMON_VID is not set
866# CONFIG_HWMON_DEBUG_CHIP is not set
867
868#
869# Multifunction device drivers
870#
871# CONFIG_MFD_SM501 is not set
872
873#
874# Multimedia devices
875#
876# CONFIG_VIDEO_DEV is not set
877
878#
879# Digital Video Broadcasting Devices
880#
881# CONFIG_DVB is not set
882# CONFIG_USB_DABUSB is not set
883
884#
885# Graphics support
886#
887# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
888CONFIG_FB=y
889CONFIG_FIRMWARE_EDID=y
890# CONFIG_FB_DDC is not set
891# CONFIG_FB_CFB_FILLRECT is not set
892# CONFIG_FB_CFB_COPYAREA is not set
893# CONFIG_FB_CFB_IMAGEBLIT is not set
894# CONFIG_FB_SVGALIB is not set
895# CONFIG_FB_MACMODES is not set
896# CONFIG_FB_BACKLIGHT is not set
897# CONFIG_FB_MODE_HELPERS is not set
898# CONFIG_FB_TILEBLITTING is not set
899
900#
901# Frambuffer hardware drivers
902#
903# CONFIG_FB_CIRRUS is not set
904# CONFIG_FB_PM2 is not set
905# CONFIG_FB_CYBER2000 is not set
906# CONFIG_FB_ASILIANT is not set
907# CONFIG_FB_IMSTT is not set
908# CONFIG_FB_EPSON1355 is not set
909# CONFIG_FB_S1D13XXX is not set
910# CONFIG_FB_NVIDIA is not set
911# CONFIG_FB_RIVA is not set
912# CONFIG_FB_MATROX is not set
913# CONFIG_FB_RADEON is not set
914# CONFIG_FB_ATY128 is not set
915# CONFIG_FB_ATY is not set
916# CONFIG_FB_S3 is not set
917# CONFIG_FB_SIS is not set
918# CONFIG_FB_NEOMAGIC is not set
919# CONFIG_FB_KYRO is not set
920# CONFIG_FB_3DFX is not set
921# CONFIG_FB_VOODOO1 is not set
922# CONFIG_FB_TRIDENT is not set
923# CONFIG_FB_VIRTUAL is not set
924
925#
926# Console display driver support
927#
928CONFIG_DUMMY_CONSOLE=y
929CONFIG_FRAMEBUFFER_CONSOLE=y
930# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
931# CONFIG_FONTS is not set
932CONFIG_FONT_8x8=y
933CONFIG_FONT_8x16=y
934
935#
936# Logo configuration
937#
938CONFIG_LOGO=y
939# CONFIG_LOGO_LINUX_MONO is not set
940# CONFIG_LOGO_LINUX_VGA16 is not set
941CONFIG_LOGO_LINUX_CLUT224=y
942# CONFIG_LOGO_SUPERH_MONO is not set
943# CONFIG_LOGO_SUPERH_VGA16 is not set
944CONFIG_LOGO_SUPERH_CLUT224=y
945
946#
947# Sound
948#
949CONFIG_SOUND=y
950
951#
952# Advanced Linux Sound Architecture
953#
954# CONFIG_SND is not set
955
956#
957# Open Sound System
958#
959CONFIG_SOUND_PRIME=y
960# CONFIG_OBSOLETE_OSS is not set
961# CONFIG_SOUND_BT878 is not set
962# CONFIG_SOUND_ICH is not set
963# CONFIG_SOUND_TRIDENT is not set
964# CONFIG_SOUND_MSNDCLAS is not set
965# CONFIG_SOUND_MSNDPIN is not set
966# CONFIG_SOUND_VIA82CXXX is not set
967
968#
969# HID Devices
970#
971CONFIG_HID=y
972# CONFIG_HID_DEBUG is not set
973
974#
975# USB support
976#
977CONFIG_USB_ARCH_HAS_HCD=y
978CONFIG_USB_ARCH_HAS_OHCI=y
979CONFIG_USB_ARCH_HAS_EHCI=y
980CONFIG_USB=y
981CONFIG_USB_DEBUG=y
982
983#
984# Miscellaneous USB options
985#
986CONFIG_USB_DEVICEFS=y
987
988#
989# USB Host Controller Drivers
990#
991CONFIG_USB_EHCI_HCD=y
992# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
993# CONFIG_USB_ISP116X_HCD is not set
994CONFIG_USB_OHCI_HCD=y
995# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
996# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
997CONFIG_USB_OHCI_LITTLE_ENDIAN=y
998# CONFIG_USB_UHCI_HCD is not set
999# CONFIG_USB_SL811_HCD is not set
1000
1001#
1002# USB Device Class drivers
1003#
1004# CONFIG_USB_ACM is not set
1005# CONFIG_USB_PRINTER is not set
1006
1007#
1008# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
1009#
1010
1011#
1012# may also be needed; see USB_STORAGE Help for more information
1013#
1014CONFIG_USB_STORAGE=y
1015# CONFIG_USB_STORAGE_DEBUG is not set
1016# CONFIG_USB_STORAGE_FREECOM is not set
1017# CONFIG_USB_STORAGE_DPCM is not set
1018# CONFIG_USB_STORAGE_KARMA is not set
1019# CONFIG_USB_LIBUSUAL is not set
1020
1021#
1022# USB Input Devices
1023#
1024CONFIG_USB_HID=y
1025# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1026# CONFIG_USB_HIDDEV is not set
1027# CONFIG_USB_AIPTEK is not set
1028# CONFIG_USB_WACOM is not set
1029# CONFIG_USB_ACECAD is not set
1030# CONFIG_USB_KBTAB is not set
1031# CONFIG_USB_POWERMATE is not set
1032# CONFIG_USB_TOUCHSCREEN is not set
1033# CONFIG_USB_XPAD is not set
1034# CONFIG_USB_ATI_REMOTE is not set
1035# CONFIG_USB_ATI_REMOTE2 is not set
1036# CONFIG_USB_APPLETOUCH is not set
1037# CONFIG_USB_GTCO is not set
1038
1039#
1040# USB Imaging devices
1041#
1042# CONFIG_USB_MICROTEK is not set
1043
1044#
1045# USB Network Adapters
1046#
1047# CONFIG_USB_KAWETH is not set
1048# CONFIG_USB_PEGASUS is not set
1049# CONFIG_USB_USBNET_MII is not set
1050# CONFIG_USB_USBNET is not set
1051CONFIG_USB_MON=y
1052
1053#
1054# USB port drivers
1055#
1056
1057#
1058# USB Serial Converter support
1059#
1060# CONFIG_USB_SERIAL is not set
1061
1062#
1063# USB Miscellaneous drivers
1064#
1065# CONFIG_USB_EMI62 is not set
1066# CONFIG_USB_EMI26 is not set
1067# CONFIG_USB_LCD is not set
1068# CONFIG_USB_BERRY_CHARGE is not set
1069# CONFIG_USB_LED is not set
1070# CONFIG_USB_CYPRESS_CY7C63 is not set
1071# CONFIG_USB_CYTHERM is not set
1072# CONFIG_USB_PHIDGET is not set
1073# CONFIG_USB_IDMOUSE is not set
1074# CONFIG_USB_FTDI_ELAN is not set
1075# CONFIG_USB_APPLEDISPLAY is not set
1076# CONFIG_USB_SISUSBVGA is not set
1077# CONFIG_USB_LD is not set
1078# CONFIG_USB_TRANCEVIBRATOR is not set
1079# CONFIG_USB_IOWARRIOR is not set
1080
1081#
1082# USB DSL modem support
1083#
1084
1085#
1086# USB Gadget Support
1087#
1088# CONFIG_USB_GADGET is not set
1089
1090#
1091# MMC/SD Card support
1092#
1093# CONFIG_MMC is not set
1094
1095#
1096# LED devices
1097#
1098# CONFIG_NEW_LEDS is not set
1099
1100#
1101# LED drivers
1102#
1103
1104#
1105# LED Triggers
1106#
1107
1108#
1109# InfiniBand support
1110#
1111# CONFIG_INFINIBAND is not set
1112
1113#
1114# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
1115#
1116
1117#
1118# Real Time Clock
1119#
1120
1121#
1122# DMA Engine support
1123#
1124# CONFIG_DMA_ENGINE is not set
1125
1126#
1127# DMA Clients
1128#
1129
1130#
1131# DMA Devices
1132#
1133
1134#
1135# Auxiliary Display support
1136#
1137
1138#
1139# Virtualization
1140#
1141
1142#
1143# File systems
1144#
1145CONFIG_EXT2_FS=y
1146# CONFIG_EXT2_FS_XATTR is not set
1147# CONFIG_EXT2_FS_XIP is not set
1148# CONFIG_EXT3_FS is not set
1149# CONFIG_REISERFS_FS is not set
1150# CONFIG_JFS_FS is not set
1151# CONFIG_FS_POSIX_ACL is not set
1152# CONFIG_XFS_FS is not set
1153# CONFIG_MINIX_FS is not set
1154# CONFIG_ROMFS_FS is not set
1155CONFIG_INOTIFY=y
1156CONFIG_INOTIFY_USER=y
1157# CONFIG_QUOTA is not set
1158# CONFIG_DNOTIFY is not set
1159# CONFIG_AUTOFS_FS is not set
1160# CONFIG_AUTOFS4_FS is not set
1161# CONFIG_FUSE_FS is not set
1162
1163#
1164# CD-ROM/DVD Filesystems
1165#
1166# CONFIG_ISO9660_FS is not set
1167# CONFIG_UDF_FS is not set
1168
1169#
1170# DOS/FAT/NT Filesystems
1171#
1172CONFIG_FAT_FS=y
1173CONFIG_MSDOS_FS=y
1174CONFIG_VFAT_FS=y
1175CONFIG_FAT_DEFAULT_CODEPAGE=437
1176CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1177# CONFIG_NTFS_FS is not set
1178
1179#
1180# Pseudo filesystems
1181#
1182CONFIG_PROC_FS=y
1183# CONFIG_PROC_KCORE is not set
1184CONFIG_PROC_SYSCTL=y
1185# CONFIG_SYSFS is not set
1186CONFIG_TMPFS=y
1187# CONFIG_TMPFS_POSIX_ACL is not set
1188# CONFIG_HUGETLBFS is not set
1189# CONFIG_HUGETLB_PAGE is not set
1190CONFIG_RAMFS=y
1191
1192#
1193# Miscellaneous filesystems
1194#
1195# CONFIG_HFSPLUS_FS is not set
1196# CONFIG_JFFS2_FS is not set
1197CONFIG_CRAMFS=y
1198# CONFIG_VXFS_FS is not set
1199# CONFIG_HPFS_FS is not set
1200# CONFIG_QNX4FS_FS is not set
1201# CONFIG_SYSV_FS is not set
1202# CONFIG_UFS_FS is not set
1203
1204#
1205# Network File Systems
1206#
1207CONFIG_NFS_FS=y
1208CONFIG_NFS_V3=y
1209# CONFIG_NFS_V3_ACL is not set
1210# CONFIG_NFS_DIRECTIO is not set
1211# CONFIG_NFSD is not set
1212CONFIG_ROOT_NFS=y
1213CONFIG_LOCKD=y
1214CONFIG_LOCKD_V4=y
1215CONFIG_NFS_COMMON=y
1216CONFIG_SUNRPC=y
1217# CONFIG_SMB_FS is not set
1218# CONFIG_CIFS is not set
1219# CONFIG_NCP_FS is not set
1220# CONFIG_CODA_FS is not set
1221
1222#
1223# Partition Types
1224#
1225# CONFIG_PARTITION_ADVANCED is not set
1226CONFIG_MSDOS_PARTITION=y
1227
1228#
1229# Native Language Support
1230#
1231CONFIG_NLS=y
1232CONFIG_NLS_DEFAULT="iso8859-1"
1233# CONFIG_NLS_CODEPAGE_437 is not set
1234# CONFIG_NLS_CODEPAGE_737 is not set
1235# CONFIG_NLS_CODEPAGE_775 is not set
1236# CONFIG_NLS_CODEPAGE_850 is not set
1237# CONFIG_NLS_CODEPAGE_852 is not set
1238# CONFIG_NLS_CODEPAGE_855 is not set
1239# CONFIG_NLS_CODEPAGE_857 is not set
1240# CONFIG_NLS_CODEPAGE_860 is not set
1241# CONFIG_NLS_CODEPAGE_861 is not set
1242# CONFIG_NLS_CODEPAGE_862 is not set
1243# CONFIG_NLS_CODEPAGE_863 is not set
1244# CONFIG_NLS_CODEPAGE_864 is not set
1245# CONFIG_NLS_CODEPAGE_865 is not set
1246# CONFIG_NLS_CODEPAGE_866 is not set
1247# CONFIG_NLS_CODEPAGE_869 is not set
1248# CONFIG_NLS_CODEPAGE_936 is not set
1249# CONFIG_NLS_CODEPAGE_950 is not set
1250# CONFIG_NLS_CODEPAGE_932 is not set
1251# CONFIG_NLS_CODEPAGE_949 is not set
1252# CONFIG_NLS_CODEPAGE_874 is not set
1253# CONFIG_NLS_ISO8859_8 is not set
1254# CONFIG_NLS_CODEPAGE_1250 is not set
1255# CONFIG_NLS_CODEPAGE_1251 is not set
1256# CONFIG_NLS_ASCII is not set
1257# CONFIG_NLS_ISO8859_1 is not set
1258# CONFIG_NLS_ISO8859_2 is not set
1259# CONFIG_NLS_ISO8859_3 is not set
1260# CONFIG_NLS_ISO8859_4 is not set
1261# CONFIG_NLS_ISO8859_5 is not set
1262# CONFIG_NLS_ISO8859_6 is not set
1263# CONFIG_NLS_ISO8859_7 is not set
1264# CONFIG_NLS_ISO8859_9 is not set
1265# CONFIG_NLS_ISO8859_13 is not set
1266# CONFIG_NLS_ISO8859_14 is not set
1267# CONFIG_NLS_ISO8859_15 is not set
1268# CONFIG_NLS_KOI8_R is not set
1269# CONFIG_NLS_KOI8_U is not set
1270# CONFIG_NLS_UTF8 is not set
1271
1272#
1273# Kernel hacking
1274#
1275CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1276# CONFIG_PRINTK_TIME is not set
1277CONFIG_ENABLE_MUST_CHECK=y
1278# CONFIG_MAGIC_SYSRQ is not set
1279# CONFIG_UNUSED_SYMBOLS is not set
1280# CONFIG_HEADERS_CHECK is not set
1281# CONFIG_DEBUG_KERNEL is not set
1282CONFIG_LOG_BUF_SHIFT=14
1283# CONFIG_DEBUG_BUGVERBOSE is not set
1284# CONFIG_SH_STANDARD_BIOS is not set
1285# CONFIG_EARLY_SCIF_CONSOLE is not set
1286# CONFIG_SH_KGDB is not set
1287
1288#
1289# Security options
1290#
1291# CONFIG_KEYS is not set
1292
1293#
1294# Cryptographic options
1295#
1296# CONFIG_CRYPTO is not set
1297
1298#
1299# Library routines
1300#
1301CONFIG_BITREVERSE=y
1302# CONFIG_CRC_CCITT is not set
1303# CONFIG_CRC16 is not set
1304CONFIG_CRC32=y
1305# CONFIG_LIBCRC32C is not set
1306CONFIG_ZLIB_INFLATE=y
1307CONFIG_PLIST=y
1308CONFIG_HAS_IOMEM=y
1309CONFIG_HAS_IOPORT=y
diff --git a/arch/sh/drivers/Kconfig b/arch/sh/drivers/Kconfig
index c54c758e6243..420c6b2f33a5 100644
--- a/arch/sh/drivers/Kconfig
+++ b/arch/sh/drivers/Kconfig
@@ -1,5 +1,15 @@
1source "arch/sh/drivers/dma/Kconfig"
2source "arch/sh/cchips/Kconfig"
3
1menu "Additional SuperH Device Drivers" 4menu "Additional SuperH Device Drivers"
2 5
6config HEARTBEAT
7 bool "Heartbeat LED"
8 help
9 Use the power-on LED on your machine as a load meter. The exact
10 behavior is platform-dependent, but normally the flash frequency is
11 a hyperbolic function of the 5-minute load average.
12
3config PUSH_SWITCH 13config PUSH_SWITCH
4 tristate "Push switch support" 14 tristate "Push switch support"
5 help 15 help
diff --git a/arch/sh/drivers/heartbeat.c b/arch/sh/drivers/heartbeat.c
index bc59cb6cd78b..23dd6080422f 100644
--- a/arch/sh/drivers/heartbeat.c
+++ b/arch/sh/drivers/heartbeat.c
@@ -40,16 +40,9 @@ static void heartbeat_timer(unsigned long data)
40 static unsigned bit = 0, up = 1; 40 static unsigned bit = 0, up = 1;
41 41
42 ctrl_outw(1 << hd->bit_pos[bit], (unsigned long)hd->base); 42 ctrl_outw(1 << hd->bit_pos[bit], (unsigned long)hd->base);
43 if (up) 43 bit += up;
44 if (bit == (ARRAY_SIZE(hd->bit_pos) - 1)) { 44 if ((bit == 0) || (bit == ARRAY_SIZE(hd->bit_pos)-1))
45 bit--; 45 up = -up;
46 up = 0;
47 } else
48 bit++;
49 else if (bit == 0)
50 up = 1;
51 else
52 bit--;
53 46
54 mod_timer(&hd->timer, jiffies + (110 - ((300 << FSHIFT) / 47 mod_timer(&hd->timer, jiffies + (110 - ((300 << FSHIFT) /
55 ((avenrun[0] / 5) + (3 << FSHIFT))))); 48 ((avenrun[0] / 5) + (3 << FSHIFT)))));
diff --git a/arch/sh/drivers/pci/Makefile b/arch/sh/drivers/pci/Makefile
index cc8d0d0b1427..0e9b532b9fbc 100644
--- a/arch/sh/drivers/pci/Makefile
+++ b/arch/sh/drivers/pci/Makefile
@@ -8,12 +8,15 @@ obj-$(CONFIG_PCI_AUTO) += pci-auto.o
8obj-$(CONFIG_CPU_SUBTYPE_ST40STB1) += pci-st40.o 8obj-$(CONFIG_CPU_SUBTYPE_ST40STB1) += pci-st40.o
9obj-$(CONFIG_CPU_SUBTYPE_SH7751) += pci-sh7751.o ops-sh4.o 9obj-$(CONFIG_CPU_SUBTYPE_SH7751) += pci-sh7751.o ops-sh4.o
10obj-$(CONFIG_CPU_SUBTYPE_SH7780) += pci-sh7780.o ops-sh4.o 10obj-$(CONFIG_CPU_SUBTYPE_SH7780) += pci-sh7780.o ops-sh4.o
11obj-$(CONFIG_CPU_SUBTYPE_SH7785) += pci-sh7780.o ops-sh4.o
11 12
12obj-$(CONFIG_SH_DREAMCAST) += ops-dreamcast.o fixups-dreamcast.o \ 13obj-$(CONFIG_SH_DREAMCAST) += ops-dreamcast.o fixups-dreamcast.o \
13 dma-dreamcast.o 14 dma-dreamcast.o
14obj-$(CONFIG_SH_SECUREEDGE5410) += ops-snapgear.o 15obj-$(CONFIG_SH_SECUREEDGE5410) += ops-snapgear.o
15obj-$(CONFIG_SH_RTS7751R2D) += ops-rts7751r2d.o fixups-rts7751r2d.o 16obj-$(CONFIG_SH_RTS7751R2D) += ops-rts7751r2d.o fixups-rts7751r2d.o
16obj-$(CONFIG_SH_SH03) += ops-sh03.o fixups-sh03.o 17obj-$(CONFIG_SH_SH03) += ops-sh03.o fixups-sh03.o
17obj-$(CONFIG_SH_R7780RP) += ops-r7780rp.o fixups-r7780rp.o 18obj-$(CONFIG_SH_HIGHLANDER) += ops-r7780rp.o fixups-r7780rp.o
18obj-$(CONFIG_SH_TITAN) += ops-titan.o 19obj-$(CONFIG_SH_TITAN) += ops-titan.o
19obj-$(CONFIG_SH_LANDISK) += ops-landisk.o 20obj-$(CONFIG_SH_LANDISK) += ops-landisk.o
21obj-$(CONFIG_SH_LBOX_RE2) += ops-lboxre2.o fixups-lboxre2.o
22obj-$(CONFIG_SH_7780_SOLUTION_ENGINE) += ops-se7780.o fixups-se7780.o
diff --git a/arch/sh/drivers/pci/fixups-lboxre2.c b/arch/sh/drivers/pci/fixups-lboxre2.c
new file mode 100644
index 000000000000..40b19bdfb891
--- /dev/null
+++ b/arch/sh/drivers/pci/fixups-lboxre2.c
@@ -0,0 +1,41 @@
1/*
2 * arch/sh/drivers/pci/fixups-lboxre2.c
3 *
4 * L-BOX RE2 PCI fixups
5 *
6 * Copyright (C) 2007 Nobuhiro Iwamatsu
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 "pci-sh4.h"
13
14#define PCIMCR_MRSET_OFF 0xBFFFFFFF
15#define PCIMCR_RFSH_OFF 0xFFFFFFFB
16
17int pci_fixup_pcic(void)
18{
19 unsigned long bcr1, mcr;
20
21 bcr1 = inl(SH7751_BCR1);
22 bcr1 |= 0x40080000; /* Enable Bit 19 BREQEN, set PCIC to slave */
23 pci_write_reg(bcr1, SH4_PCIBCR1);
24
25 /* Enable all interrupts, so we known what to fix */
26 pci_write_reg(0x0000c3ff, SH4_PCIINTM);
27 pci_write_reg(0x0000380f, SH4_PCIAINTM);
28 pci_write_reg(0xfb900047, SH7751_PCICONF1);
29 pci_write_reg(0xab000001, SH7751_PCICONF4);
30
31 mcr = inl(SH7751_MCR);
32 mcr = (mcr & PCIMCR_MRSET_OFF) & PCIMCR_RFSH_OFF;
33 pci_write_reg(mcr, SH4_PCIMCR);
34
35 pci_write_reg(0x0c000000, SH7751_PCICONF5);
36 pci_write_reg(0xd0000000, SH7751_PCICONF6);
37 pci_write_reg(0x0c000000, SH4_PCILAR0);
38 pci_write_reg(0x00000000, SH4_PCILAR1);
39
40 return 0;
41}
diff --git a/arch/sh/drivers/pci/fixups-se7780.c b/arch/sh/drivers/pci/fixups-se7780.c
new file mode 100644
index 000000000000..880cea1c0d89
--- /dev/null
+++ b/arch/sh/drivers/pci/fixups-se7780.c
@@ -0,0 +1,60 @@
1/*
2 * arch/sh/drivers/pci/fixups-se7780.c
3 *
4 * HITACHI UL Solution Engine 7780 PCI fixups
5 *
6 * Copyright (C) 2003 Lineo uSolutions, Inc.
7 * Copyright (C) 2004 - 2006 Paul Mundt
8 * Copyright (C) 2006 Nobuhiro Iwamatsu
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/pci.h>
15#include "pci-sh4.h"
16#include <asm/io.h>
17
18int pci_fixup_pcic(void)
19{
20 ctrl_outl(0x00000001, SH7780_PCI_VCR2);
21
22 /* Enable all interrupts, so we know what to fix */
23 pci_write_reg(0x0000C3FF, SH7780_PCIIMR);
24 pci_write_reg(0x0000380F, SH7780_PCIAINTM);
25
26 /* Set up standard PCI config registers */
27 ctrl_outw(0xFB00, PCI_REG(SH7780_PCISTATUS));
28 ctrl_outw(0x0047, PCI_REG(SH7780_PCICMD));
29 ctrl_outb( 0x00, PCI_REG(SH7780_PCIPIF));
30 ctrl_outb( 0x00, PCI_REG(SH7780_PCISUB));
31 ctrl_outb( 0x06, PCI_REG(SH7780_PCIBCC));
32 ctrl_outw(0x1912, PCI_REG(SH7780_PCISVID));
33 ctrl_outw(0x0001, PCI_REG(SH7780_PCISID));
34
35 pci_write_reg(0x08000000, SH7780_PCIMBAR0); /* PCI */
36 pci_write_reg(0x08000000, SH7780_PCILAR0); /* SHwy */
37 pci_write_reg(0x07F00001, SH7780_PCILSR); /* size 128M w/ MBAR */
38
39 pci_write_reg(0x00000000, SH7780_PCIMBAR1);
40 pci_write_reg(0x00000000, SH7780_PCILAR1);
41 pci_write_reg(0x00000000, SH7780_PCILSR1);
42
43 pci_write_reg(0xAB000801, SH7780_PCIIBAR);
44
45 /*
46 * Set the MBR so PCI address is one-to-one with window,
47 * meaning all calls go straight through... use ifdef to
48 * catch erroneous assumption.
49 */
50 pci_write_reg(0xFD000000 , SH7780_PCIMBR0);
51 pci_write_reg(0x00FC0000 , SH7780_PCIMBMR0); /* 16M */
52
53 /* Set IOBR for window containing area specified in pci.h */
54 pci_write_reg(PCIBIOS_MIN_IO & ~(SH7780_PCI_IO_SIZE-1), SH7780_PCIIOBR);
55 pci_write_reg((SH7780_PCI_IO_SIZE-1) & (7 << 18), SH7780_PCIIOBMR);
56
57 pci_write_reg(0xA5000C01, SH7780_PCICR);
58
59 return 0;
60}
diff --git a/arch/sh/drivers/pci/ops-landisk.c b/arch/sh/drivers/pci/ops-landisk.c
index d06030815a96..bff09ecf3419 100644
--- a/arch/sh/drivers/pci/ops-landisk.c
+++ b/arch/sh/drivers/pci/ops-landisk.c
@@ -17,8 +17,8 @@
17 17
18static struct resource sh7751_io_resource = { 18static struct resource sh7751_io_resource = {
19 .name = "SH7751 IO", 19 .name = "SH7751 IO",
20 .start = 0x4000, 20 .start = SH7751_PCI_IO_BASE,
21 .end = 0x4000 + SH7751_PCI_IO_SIZE - 1, 21 .end = SH7751_PCI_IO_BASE + SH7751_PCI_IO_SIZE - 1,
22 .flags = IORESOURCE_IO 22 .flags = IORESOURCE_IO
23}; 23};
24 24
diff --git a/arch/sh/drivers/pci/ops-lboxre2.c b/arch/sh/drivers/pci/ops-lboxre2.c
new file mode 100644
index 000000000000..a13cb764b0b9
--- /dev/null
+++ b/arch/sh/drivers/pci/ops-lboxre2.c
@@ -0,0 +1,63 @@
1/*
2 * linux/arch/sh/drivers/pci/ops-lboxre2.c
3 *
4 * Copyright (C) 2007 Nobuhiro Iwamatsu
5 *
6 * PCI initialization for the NTT COMWARE L-BOX RE2
7 */
8#include <linux/kernel.h>
9#include <linux/types.h>
10#include <linux/init.h>
11#include <linux/pci.h>
12#include <linux/io.h>
13#include <asm/lboxre2.h>
14#include "pci-sh4.h"
15
16static char lboxre2_irq_tab[] __initdata = {
17 IRQ_ETH0, IRQ_ETH1, IRQ_INTA, IRQ_INTD,
18};
19
20int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin)
21{
22 return lboxre2_irq_tab[slot];
23}
24
25static struct resource sh7751_io_resource = {
26 .name = "SH7751_IO",
27 .start = SH7751_PCI_IO_BASE ,
28 .end = SH7751_PCI_IO_BASE + SH7751_PCI_IO_SIZE - 1,
29 .flags = IORESOURCE_IO
30};
31
32static struct resource sh7751_mem_resource = {
33 .name = "SH7751_mem",
34 .start = SH7751_PCI_MEMORY_BASE,
35 .end = SH7751_PCI_MEMORY_BASE + SH7751_PCI_MEM_SIZE - 1,
36 .flags = IORESOURCE_MEM
37};
38
39extern struct pci_ops sh7751_pci_ops;
40
41struct pci_channel board_pci_channels[] = {
42 { &sh4_pci_ops, &sh7751_io_resource, &sh7751_mem_resource, 0, 0xff },
43 { NULL, NULL, NULL, 0, 0 },
44};
45
46EXPORT_SYMBOL(board_pci_channels);
47
48static struct sh4_pci_address_map sh7751_pci_map = {
49 .window0 = {
50 .base = SH7751_CS3_BASE_ADDR,
51 .size = 0x04000000,
52 },
53 .window1 = {
54 .base = 0x00000000, /* Unused */
55 .size = 0x00000000, /* Unused */
56 },
57 .flags = SH4_PCIC_NO_RESET,
58};
59
60int __init pcibios_init_platform(void)
61{
62 return sh7751_pcic_init(&sh7751_pci_map);
63}
diff --git a/arch/sh/drivers/pci/ops-r7780rp.c b/arch/sh/drivers/pci/ops-r7780rp.c
index eeea1577e112..f2216081ab85 100644
--- a/arch/sh/drivers/pci/ops-r7780rp.c
+++ b/arch/sh/drivers/pci/ops-r7780rp.c
@@ -17,18 +17,25 @@
17#include <asm/io.h> 17#include <asm/io.h>
18#include "pci-sh4.h" 18#include "pci-sh4.h"
19 19
20static char r7780rp_irq_tab[] __initdata = {
21 0, 1, 2, 3,
22};
23
24static char r7780mp_irq_tab[] __initdata = {
25 65, 66, 67, 68,
26};
27
20int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) 28int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin)
21{ 29{
22 switch (slot) { 30 if (mach_is_r7780rp())
23 case 0: return IRQ_PCISLOT1; /* PCI Interrupt #1 */ 31 return r7780rp_irq_tab[slot];
24 case 1: return IRQ_PCISLOT2; /* PCI Interrupt #2 */ 32 if (mach_is_r7780mp() || mach_is_r7785rp())
25 case 2: return IRQ_PCISLOT3; /* PCI Interrupt #3 */ 33 return r7780mp_irq_tab[slot];
26 case 3: return IRQ_PCISLOT4; /* PCI Interrupt E4 */ 34
27 default: 35 printk(KERN_ERR "PCI: Bad IRQ mapping "
28 printk(KERN_ERR "PCI: Bad IRQ mapping " 36 "request for slot %d, func %d\n", slot, pin-1);
29 "request for slot %d, func %d\n", slot, pin-1); 37
30 return -1; 38 return -1;
31 }
32} 39}
33 40
34static struct resource sh7780_io_resource = { 41static struct resource sh7780_io_resource = {
diff --git a/arch/sh/drivers/pci/ops-se7780.c b/arch/sh/drivers/pci/ops-se7780.c
new file mode 100644
index 000000000000..212674df5e13
--- /dev/null
+++ b/arch/sh/drivers/pci/ops-se7780.c
@@ -0,0 +1,96 @@
1/*
2 * linux/arch/sh/drivers/pci/ops-se7780.c
3 *
4 * Copyright (C) 2006 Nobuhiro Iwamatsu
5 *
6 * PCI initialization for the Hitachi UL Solution Engine 7780SE03
7 *
8 * May be copied or modified under the terms of the GNU General Public
9 * License. See linux/COPYING for more information.
10 */
11#include <linux/kernel.h>
12#include <linux/types.h>
13#include <linux/init.h>
14#include <linux/delay.h>
15#include <linux/pci.h>
16#include <asm/se7780.h>
17#include <asm/io.h>
18#include "pci-sh4.h"
19
20/*
21 * IDSEL = AD16 PCI slot
22 * IDSEL = AD17 PCI slot
23 * IDSEL = AD18 Serial ATA Controller (Silicon Image SiL3512A)
24 * IDSEL = AD19 USB Host Controller (NEC uPD7210100A)
25 */
26
27/* IDSEL [16][17][18][19][20][21][22][23][24][25][26][27][28][29][30][31] */
28static char se7780_irq_tab[4][16] __initdata = {
29 /* INTA */
30 { 65, 68, 67, 68, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
31 /* INTB */
32 { 66, 65, -1, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
33 /* INTC */
34 { 67, 66, -1, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
35 /* INTD */
36 { 68, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
37};
38
39int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin)
40{
41 return se7780_irq_tab[pin-1][slot];
42}
43
44static struct resource se7780_io_resource = {
45 .name = "SH7780_IO",
46 .start = 0x2000,
47 .end = 0x2000 + SH7780_PCI_IO_SIZE - 1,
48 .flags = IORESOURCE_IO
49};
50
51static struct resource se7780_mem_resource = {
52 .name = "SH7780_mem",
53 .start = SH7780_PCI_MEMORY_BASE,
54 .end = SH7780_PCI_MEMORY_BASE + SH7780_PCI_MEM_SIZE - 1,
55 .flags = IORESOURCE_MEM
56};
57
58extern struct pci_ops se7780_pci_ops;
59
60struct pci_channel board_pci_channels[] = {
61 { &sh4_pci_ops, &se7780_io_resource, &se7780_mem_resource, 0, 0xff },
62 { NULL, NULL, NULL, 0, 0 },
63};
64EXPORT_SYMBOL(board_pci_channels);
65
66static struct sh4_pci_address_map se7780_pci_map = {
67 .window0 = {
68 .base = SH7780_CS2_BASE_ADDR,
69 .size = 0x04000000,
70 },
71 .flags = SH4_PCIC_NO_RESET,
72};
73
74int __init pcibios_init_platform(void)
75{
76 printk("SH7780 PCI: Finished initialization of the PCI controller\n");
77
78 /*
79 * FPGA PCISEL register initialize
80 *
81 * CPU || SLOT1 | SLOT2 | S-ATA | USB
82 * -------------------------------------
83 * INTA || INTA | INTD | -- | INTB
84 * -------------------------------------
85 * INTB || INTB | INTA | -- | INTC
86 * -------------------------------------
87 * INTC || INTC | INTB | INTA | --
88 * -------------------------------------
89 * INTD || INTD | INTC | -- | INTA
90 * -------------------------------------
91 */
92 ctrl_outw(0x0013, FPGA_PCI_INTSEL1);
93 ctrl_outw(0xE402, FPGA_PCI_INTSEL2);
94
95 return sh7780_pcic_init(&se7780_pci_map);
96}
diff --git a/arch/sh/drivers/pci/ops-sh4.c b/arch/sh/drivers/pci/ops-sh4.c
index 2d4371009a5e..54232f13e406 100644
--- a/arch/sh/drivers/pci/ops-sh4.c
+++ b/arch/sh/drivers/pci/ops-sh4.c
@@ -162,3 +162,9 @@ char * __init pcibios_setup(char *str)
162 162
163 return str; 163 return str;
164} 164}
165
166int __attribute__((weak)) pci_fixup_pcic(void)
167{
168 /* Nothing to do. */
169 return 0;
170}
diff --git a/arch/sh/drivers/pci/pci-sh4.h b/arch/sh/drivers/pci/pci-sh4.h
index 5a61d6041f2c..1901c33cde6a 100644
--- a/arch/sh/drivers/pci/pci-sh4.h
+++ b/arch/sh/drivers/pci/pci-sh4.h
@@ -1,7 +1,7 @@
1#ifndef __PCI_SH4_H 1#ifndef __PCI_SH4_H
2#define __PCI_SH4_H 2#define __PCI_SH4_H
3 3
4#ifdef CONFIG_CPU_SUBTYPE_SH7780 4#if defined(CONFIG_CPU_SUBTYPE_SH7780) || defined(CONFIG_CPU_SUBTYPE_SH7785)
5#include "pci-sh7780.h" 5#include "pci-sh7780.h"
6#else 6#else
7#include "pci-sh7751.h" 7#include "pci-sh7751.h"
diff --git a/arch/sh/drivers/pci/pci-sh7751.c b/arch/sh/drivers/pci/pci-sh7751.c
index 9ddff760d3c6..1aca7fe5783b 100644
--- a/arch/sh/drivers/pci/pci-sh7751.c
+++ b/arch/sh/drivers/pci/pci-sh7751.c
@@ -12,7 +12,6 @@
12 * License. See linux/COPYING for more information. 12 * License. See linux/COPYING for more information.
13 * 13 *
14 */ 14 */
15
16#undef DEBUG 15#undef DEBUG
17 16
18#include <linux/init.h> 17#include <linux/init.h>
@@ -28,7 +27,7 @@
28 * Initialization. Try all known PCI access methods. Note that we support 27 * Initialization. Try all known PCI access methods. Note that we support
29 * using both PCI BIOS and direct access: in such cases, we use I/O ports 28 * using both PCI BIOS and direct access: in such cases, we use I/O ports
30 * to access config space. 29 * to access config space.
31 * 30 *
32 * Note that the platform specific initialization (BSC registers, and memory 31 * Note that the platform specific initialization (BSC registers, and memory
33 * space mapping) will be called via the platform defined function 32 * space mapping) will be called via the platform defined function
34 * pcibios_init_platform(). 33 * pcibios_init_platform().
@@ -115,7 +114,7 @@ int __init sh7751_pcic_init(struct sh4_pci_address_map *map)
115 * Wait Cycle Control + Parity Enable + Bus Master + 114 * Wait Cycle Control + Parity Enable + Bus Master +
116 * Mem space enable 115 * Mem space enable
117 */ 116 */
118 word = SH7751_PCICONF1_WCC | SH7751_PCICONF1_PER | 117 word = SH7751_PCICONF1_WCC | SH7751_PCICONF1_PER |
119 SH7751_PCICONF1_BUM | SH7751_PCICONF1_MES; 118 SH7751_PCICONF1_BUM | SH7751_PCICONF1_MES;
120 pci_write_reg(word, SH7751_PCICONF1); 119 pci_write_reg(word, SH7751_PCICONF1);
121 120
@@ -123,10 +122,10 @@ int __init sh7751_pcic_init(struct sh4_pci_address_map *map)
123 word = PCI_BASE_CLASS_BRIDGE << 24; 122 word = PCI_BASE_CLASS_BRIDGE << 24;
124 pci_write_reg(word, SH7751_PCICONF2); 123 pci_write_reg(word, SH7751_PCICONF2);
125 124
126 /* Set IO and Mem windows to local address 125 /* Set IO and Mem windows to local address
127 * Make PCI and local address the same for easy 1 to 1 mapping 126 * Make PCI and local address the same for easy 1 to 1 mapping
128 * Window0 = map->window0.size @ non-cached area base = SDRAM 127 * Window0 = map->window0.size @ non-cached area base = SDRAM
129 * Window1 = map->window1.size @ cached area base = SDRAM 128 * Window1 = map->window1.size @ cached area base = SDRAM
130 */ 129 */
131 word = map->window0.size - 1; 130 word = map->window0.size - 1;
132 pci_write_reg(word, SH4_PCILSR0); 131 pci_write_reg(word, SH4_PCILSR0);
@@ -175,7 +174,7 @@ int __init sh7751_pcic_init(struct sh4_pci_address_map *map)
175 case SH7751_CS5_BASE_ADDR: word = __area_sdram_check(5); break; 174 case SH7751_CS5_BASE_ADDR: word = __area_sdram_check(5); break;
176 case SH7751_CS6_BASE_ADDR: word = __area_sdram_check(6); break; 175 case SH7751_CS6_BASE_ADDR: word = __area_sdram_check(6); break;
177 } 176 }
178 177
179 if (!word) 178 if (!word)
180 return 0; 179 return 0;
181 180
@@ -194,9 +193,7 @@ int __init sh7751_pcic_init(struct sh4_pci_address_map *map)
194 * DMA interrupts... 193 * DMA interrupts...
195 */ 194 */
196 195
197#ifdef CONFIG_SH_RTS7751R2D
198 pci_fixup_pcic(); 196 pci_fixup_pcic();
199#endif
200 197
201 /* SH7751 init done, set central function init complete */ 198 /* SH7751 init done, set central function init complete */
202 /* use round robin mode to stop a device starving/overruning */ 199 /* use round robin mode to stop a device starving/overruning */
diff --git a/arch/sh/drivers/pci/pci-sh7780.c b/arch/sh/drivers/pci/pci-sh7780.c
index 602b644c35ad..5508e45d4838 100644
--- a/arch/sh/drivers/pci/pci-sh7780.c
+++ b/arch/sh/drivers/pci/pci-sh7780.c
@@ -48,7 +48,7 @@
48static int __init sh7780_pci_init(void) 48static int __init sh7780_pci_init(void)
49{ 49{
50 unsigned int id; 50 unsigned int id;
51 int ret; 51 int ret, match = 0;
52 52
53 pr_debug("PCI: Starting intialization.\n"); 53 pr_debug("PCI: Starting intialization.\n");
54 54
@@ -56,19 +56,43 @@ static int __init sh7780_pci_init(void)
56 56
57 /* check for SH7780/SH7780R hardware */ 57 /* check for SH7780/SH7780R hardware */
58 id = pci_read_reg(SH7780_PCIVID); 58 id = pci_read_reg(SH7780_PCIVID);
59 if ((id != ((SH7780_DEVICE_ID << 16) | SH7780_VENDOR_ID)) && 59 if ((id & 0xffff) == SH7780_VENDOR_ID) {
60 (id != ((SH7781_DEVICE_ID << 16) | SH7780_VENDOR_ID))) { 60 switch ((id >> 16) & 0xffff) {
61 case SH7780_DEVICE_ID:
62 case SH7781_DEVICE_ID:
63 case SH7785_DEVICE_ID:
64 match = 1;
65 break;
66 }
67 }
68
69 if (unlikely(!match)) {
61 printk(KERN_ERR "PCI: This is not an SH7780 (%x)\n", id); 70 printk(KERN_ERR "PCI: This is not an SH7780 (%x)\n", id);
62 return -ENODEV; 71 return -ENODEV;
63 } 72 }
64 73
65 /* Setup the INTC */ 74 /* Setup the INTC */
66 ctrl_outl(0x00200000, INTC_ICR0); /* INTC SH-4 Mode */ 75 if (mach_is_7780se()) {
67 ctrl_outl(0x00078000, INTC_INT2MSKCR); /* enable PCIINTA - PCIINTD */ 76 /* ICR0: IRL=use separately */
68 ctrl_outl(0x40000000, INTC_INTMSK1); /* disable IRL4-7 Interrupt */ 77 ctrl_outl(0x00C00020, INTC_ICR0);
69 ctrl_outl(0x0000fffe, INTC_INTMSK2); /* disable IRL4-7 Interrupt */ 78 /* ICR1: detect low level(for 2ndcut) */
70 ctrl_outl(0x80000000, INTC_INTMSKCLR1); /* enable IRL0-3 Interrupt */ 79 ctrl_outl(0xAAAA0000, INTC_ICR1);
71 ctrl_outl(0xfffe0000, INTC_INTMSKCLR2); /* enable IRL0-3 Interrupt */ 80 /* INTPRI: priority=3(all) */
81 ctrl_outl(0x33333333, INTC_INTPRI);
82 } else {
83 /* INTC SH-4 Mode */
84 ctrl_outl(0x00200000, INTC_ICR0);
85 /* enable PCIINTA - PCIINTD */
86 ctrl_outl(0x00078000, INTC_INT2MSKCR);
87 /* disable IRL4-7 Interrupt */
88 ctrl_outl(0x40000000, INTC_INTMSK1);
89 /* disable IRL4-7 Interrupt */
90 ctrl_outl(0x0000fffe, INTC_INTMSK2);
91 /* enable IRL0-3 Interrupt */
92 ctrl_outl(0x80000000, INTC_INTMSKCLR1);
93 /* enable IRL0-3 Interrupt */
94 ctrl_outl(0xfffe0000, INTC_INTMSKCLR2);
95 }
72 96
73 if ((ret = sh4_pci_check_direct()) != 0) 97 if ((ret = sh4_pci_check_direct()) != 0)
74 return ret; 98 return ret;
@@ -138,9 +162,8 @@ int __init sh7780_pcic_init(struct sh4_pci_address_map *map)
138 * DMA interrupts... 162 * DMA interrupts...
139 */ 163 */
140 164
141#ifdef CONFIG_SH_R7780RP 165 /* Apply any last-minute PCIC fixups */
142 pci_fixup_pcic(); 166 pci_fixup_pcic();
143#endif
144 167
145 /* SH7780 init done, set central function init complete */ 168 /* SH7780 init done, set central function init complete */
146 /* use round robin mode to stop a device starving/overruning */ 169 /* use round robin mode to stop a device starving/overruning */
diff --git a/arch/sh/drivers/pci/pci-sh7780.h b/arch/sh/drivers/pci/pci-sh7780.h
index f02d2180a4bc..00d12d0f8c1f 100644
--- a/arch/sh/drivers/pci/pci-sh7780.h
+++ b/arch/sh/drivers/pci/pci-sh7780.h
@@ -14,8 +14,9 @@
14 14
15/* Platform Specific Values */ 15/* Platform Specific Values */
16#define SH7780_VENDOR_ID 0x1912 16#define SH7780_VENDOR_ID 0x1912
17#define SH7780_DEVICE_ID 0x0002
18#define SH7781_DEVICE_ID 0x0001 17#define SH7781_DEVICE_ID 0x0001
18#define SH7780_DEVICE_ID 0x0002
19#define SH7785_DEVICE_ID 0x0007
19 20
20/* SH7780 Control Registers */ 21/* SH7780 Control Registers */
21#define SH7780_PCI_VCR0 0xFE000000 22#define SH7780_PCI_VCR0 0xFE000000
@@ -65,6 +66,22 @@
65#define SH7780_PCIPMCSR_BSE 0x046 66#define SH7780_PCIPMCSR_BSE 0x046
66#define SH7780_PCICDD 0x047 67#define SH7780_PCICDD 0x047
67 68
69#define SH7780_PCICR 0x100 /* PCI Control Register */
70#define SH7780_PCILSR 0x104 /* PCI Local Space Register0 */
71#define SH7780_PCILSR1 0x108 /* PCI Local Space Register1 */
72#define SH7780_PCILAR0 0x10C /* PCI Local Address Register1 */
73#define SH7780_PCILAR1 0x110 /* PCI Local Address Register1 */
74#define SH7780_PCIIR 0x114 /* PCI Interrupt Register */
75#define SH7780_PCIIMR 0x118 /* PCI Interrupt Mask Register */
76#define SH7780_PCIAIR 0x11C /* Error Address Register */
77#define SH7780_PCICIR 0x120 /* Error Command/Data Register */
78#define SH7780_PCIAINT 0x130 /* Arbiter Interrupt Register */
79#define SH7780_PCIAINTM 0x134 /* Arbiter Int. Mask Register */
80#define SH7780_PCIBMIR 0x138 /* Error Bus Master Register */
81#define SH7780_PCIPAR 0x1C0 /* PIO Address Register */
82#define SH7780_PCIPINT 0x1CC /* Power Mgmnt Int. Register */
83#define SH7780_PCIPINTM 0x1D0 /* Power Mgmnt Mask Register */
84
68#define SH7780_PCIMBR0 0x1E0 85#define SH7780_PCIMBR0 0x1E0
69#define SH7780_PCIMBMR0 0x1E4 86#define SH7780_PCIMBMR0 0x1E4
70#define SH7780_PCIMBR2 0x1F0 87#define SH7780_PCIMBR2 0x1F0
diff --git a/arch/sh/kernel/Makefile b/arch/sh/kernel/Makefile
index ff30d7f58043..9104b6257644 100644
--- a/arch/sh/kernel/Makefile
+++ b/arch/sh/kernel/Makefile
@@ -20,5 +20,6 @@ obj-$(CONFIG_SH_CPU_FREQ) += cpufreq.o
20obj-$(CONFIG_MODULES) += module.o 20obj-$(CONFIG_MODULES) += module.o
21obj-$(CONFIG_EARLY_PRINTK) += early_printk.o 21obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
22obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o 22obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o
23obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
23obj-$(CONFIG_PM) += pm.o 24obj-$(CONFIG_PM) += pm.o
24obj-$(CONFIG_STACKTRACE) += stacktrace.o 25obj-$(CONFIG_STACKTRACE) += stacktrace.o
diff --git a/arch/sh/kernel/cf-enabler.c b/arch/sh/kernel/cf-enabler.c
index 3e5fa1e24df0..0758d48147a0 100644
--- a/arch/sh/kernel/cf-enabler.c
+++ b/arch/sh/kernel/cf-enabler.c
@@ -29,7 +29,7 @@
29 * 0xB8001000 : Common Memory 29 * 0xB8001000 : Common Memory
30 * 0xBA000000 : I/O 30 * 0xBA000000 : I/O
31 */ 31 */
32#if defined(CONFIG_IDE) && defined(CONFIG_CPU_SH4) 32#if defined(CONFIG_CPU_SH4)
33/* SH4 can't access PCMCIA interface through P2 area. 33/* SH4 can't access PCMCIA interface through P2 area.
34 * we must remap it with appropreate attribute bit of the page set. 34 * we must remap it with appropreate attribute bit of the page set.
35 * this part is based on Greg Banks' hd64465_ss.c implementation - Masahiro Abe */ 35 * this part is based on Greg Banks' hd64465_ss.c implementation - Masahiro Abe */
@@ -71,7 +71,7 @@ static int __init cf_init_default(void)
71/* You must have enabled the card, and set the level interrupt 71/* You must have enabled the card, and set the level interrupt
72 * before reaching this point. Possibly in boot ROM or boot loader. 72 * before reaching this point. Possibly in boot ROM or boot loader.
73 */ 73 */
74#if defined(CONFIG_IDE) && defined(CONFIG_CPU_SH4) 74#if defined(CONFIG_CPU_SH4)
75 allocate_cf_area(); 75 allocate_cf_area();
76#endif 76#endif
77#if defined(CONFIG_SH_UNKNOWN) 77#if defined(CONFIG_SH_UNKNOWN)
@@ -84,15 +84,25 @@ static int __init cf_init_default(void)
84 84
85#if defined(CONFIG_SH_SOLUTION_ENGINE) 85#if defined(CONFIG_SH_SOLUTION_ENGINE)
86#include <asm/se.h> 86#include <asm/se.h>
87#elif defined(CONFIG_SH_7722_SOLUTION_ENGINE)
88#include <asm/se7722.h>
89#endif
87 90
88/* 91/*
89 * SolutionEngine 92 * SolutionEngine Seriese
90 * 93 *
94 * about MS770xSE
91 * 0xB8400000 : Common Memory 95 * 0xB8400000 : Common Memory
92 * 0xB8500000 : Attribute 96 * 0xB8500000 : Attribute
93 * 0xB8600000 : I/O 97 * 0xB8600000 : I/O
98 *
99 * about MS7722SE
100 * 0xB0400000 : Common Memory
101 * 0xB0500000 : Attribute
102 * 0xB0600000 : I/O
94 */ 103 */
95 104
105#if defined(CONFIG_SH_SOLUTION_ENGINE) || defined(CONFIG_SH_7722_SOLUTION_ENGINE)
96static int __init cf_init_se(void) 106static int __init cf_init_se(void)
97{ 107{
98 if ((ctrl_inw(MRSHPC_CSR) & 0x000c) != 0) 108 if ((ctrl_inw(MRSHPC_CSR) & 0x000c) != 0)
@@ -109,7 +119,7 @@ static int __init cf_init_se(void)
109 * flag == COMMON/ATTRIBUTE/IO 119 * flag == COMMON/ATTRIBUTE/IO
110 */ 120 */
111 /* common window open */ 121 /* common window open */
112 ctrl_outw(0x8a84, MRSHPC_MW0CR1);/* window 0xb8400000 */ 122 ctrl_outw(0x8a84, MRSHPC_MW0CR1);
113 if((ctrl_inw(MRSHPC_CSR) & 0x4000) != 0) 123 if((ctrl_inw(MRSHPC_CSR) & 0x4000) != 0)
114 /* common mode & bus width 16bit SWAP = 1*/ 124 /* common mode & bus width 16bit SWAP = 1*/
115 ctrl_outw(0x0b00, MRSHPC_MW0CR2); 125 ctrl_outw(0x0b00, MRSHPC_MW0CR2);
@@ -118,7 +128,7 @@ static int __init cf_init_se(void)
118 ctrl_outw(0x0300, MRSHPC_MW0CR2); 128 ctrl_outw(0x0300, MRSHPC_MW0CR2);
119 129
120 /* attribute window open */ 130 /* attribute window open */
121 ctrl_outw(0x8a85, MRSHPC_MW1CR1);/* window 0xb8500000 */ 131 ctrl_outw(0x8a85, MRSHPC_MW1CR1);
122 if ((ctrl_inw(MRSHPC_CSR) & 0x4000) != 0) 132 if ((ctrl_inw(MRSHPC_CSR) & 0x4000) != 0)
123 /* attribute mode & bus width 16bit SWAP = 1*/ 133 /* attribute mode & bus width 16bit SWAP = 1*/
124 ctrl_outw(0x0a00, MRSHPC_MW1CR2); 134 ctrl_outw(0x0a00, MRSHPC_MW1CR2);
@@ -127,7 +137,7 @@ static int __init cf_init_se(void)
127 ctrl_outw(0x0200, MRSHPC_MW1CR2); 137 ctrl_outw(0x0200, MRSHPC_MW1CR2);
128 138
129 /* I/O window open */ 139 /* I/O window open */
130 ctrl_outw(0x8a86, MRSHPC_IOWCR1);/* I/O window 0xb8600000 */ 140 ctrl_outw(0x8a86, MRSHPC_IOWCR1);
131 ctrl_outw(0x0008, MRSHPC_CDCR); /* I/O card mode */ 141 ctrl_outw(0x0008, MRSHPC_CDCR); /* I/O card mode */
132 if ((ctrl_inw(MRSHPC_CSR) & 0x4000) != 0) 142 if ((ctrl_inw(MRSHPC_CSR) & 0x4000) != 0)
133 ctrl_outw(0x0a00, MRSHPC_IOWCR2); /* bus width 16bit SWAP = 1*/ 143 ctrl_outw(0x0a00, MRSHPC_IOWCR2); /* bus width 16bit SWAP = 1*/
@@ -143,10 +153,10 @@ static int __init cf_init_se(void)
143 153
144int __init cf_init(void) 154int __init cf_init(void)
145{ 155{
146#if defined(CONFIG_SH_SOLUTION_ENGINE) 156 if( mach_is_se() || mach_is_7722se() ){
147 if (MACH_SE)
148 return cf_init_se(); 157 return cf_init_se();
149#endif 158 }
159
150 return cf_init_default(); 160 return cf_init_default();
151} 161}
152 162
diff --git a/arch/sh/kernel/cpu/clock.c b/arch/sh/kernel/cpu/clock.c
index abb586b12565..014f318f5a05 100644
--- a/arch/sh/kernel/cpu/clock.c
+++ b/arch/sh/kernel/cpu/clock.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * arch/sh/kernel/cpu/clock.c - SuperH clock framework 2 * arch/sh/kernel/cpu/clock.c - SuperH clock framework
3 * 3 *
4 * Copyright (C) 2005, 2006 Paul Mundt 4 * Copyright (C) 2005, 2006, 2007 Paul Mundt
5 * 5 *
6 * This clock framework is derived from the OMAP version by: 6 * This clock framework is derived from the OMAP version by:
7 * 7 *
@@ -23,6 +23,7 @@
23#include <linux/seq_file.h> 23#include <linux/seq_file.h>
24#include <linux/err.h> 24#include <linux/err.h>
25#include <linux/platform_device.h> 25#include <linux/platform_device.h>
26#include <linux/proc_fs.h>
26#include <asm/clock.h> 27#include <asm/clock.h>
27#include <asm/timer.h> 28#include <asm/timer.h>
28 29
@@ -98,15 +99,17 @@ int __clk_enable(struct clk *clk)
98 if (clk->ops && clk->ops->init) 99 if (clk->ops && clk->ops->init)
99 clk->ops->init(clk); 100 clk->ops->init(clk);
100 101
102 kref_get(&clk->kref);
103
101 if (clk->flags & CLK_ALWAYS_ENABLED) 104 if (clk->flags & CLK_ALWAYS_ENABLED)
102 return 0; 105 return 0;
103 106
104 if (likely(clk->ops && clk->ops->enable)) 107 if (likely(clk->ops && clk->ops->enable))
105 clk->ops->enable(clk); 108 clk->ops->enable(clk);
106 109
107 kref_get(&clk->kref);
108 return 0; 110 return 0;
109} 111}
112EXPORT_SYMBOL_GPL(__clk_enable);
110 113
111int clk_enable(struct clk *clk) 114int clk_enable(struct clk *clk)
112{ 115{
@@ -119,6 +122,7 @@ int clk_enable(struct clk *clk)
119 122
120 return ret; 123 return ret;
121} 124}
125EXPORT_SYMBOL_GPL(clk_enable);
122 126
123static void clk_kref_release(struct kref *kref) 127static void clk_kref_release(struct kref *kref)
124{ 128{
@@ -127,11 +131,17 @@ static void clk_kref_release(struct kref *kref)
127 131
128void __clk_disable(struct clk *clk) 132void __clk_disable(struct clk *clk)
129{ 133{
134 int count = kref_put(&clk->kref, clk_kref_release);
135
130 if (clk->flags & CLK_ALWAYS_ENABLED) 136 if (clk->flags & CLK_ALWAYS_ENABLED)
131 return; 137 return;
132 138
133 kref_put(&clk->kref, clk_kref_release); 139 if (!count) { /* count reaches zero, disable the clock */
140 if (likely(clk->ops && clk->ops->disable))
141 clk->ops->disable(clk);
142 }
134} 143}
144EXPORT_SYMBOL_GPL(__clk_disable);
135 145
136void clk_disable(struct clk *clk) 146void clk_disable(struct clk *clk)
137{ 147{
@@ -141,6 +151,7 @@ void clk_disable(struct clk *clk)
141 __clk_disable(clk); 151 __clk_disable(clk);
142 spin_unlock_irqrestore(&clock_lock, flags); 152 spin_unlock_irqrestore(&clock_lock, flags);
143} 153}
154EXPORT_SYMBOL_GPL(clk_disable);
144 155
145int clk_register(struct clk *clk) 156int clk_register(struct clk *clk)
146{ 157{
@@ -151,8 +162,18 @@ int clk_register(struct clk *clk)
151 162
152 mutex_unlock(&clock_list_sem); 163 mutex_unlock(&clock_list_sem);
153 164
165 if (clk->flags & CLK_ALWAYS_ENABLED) {
166 pr_debug( "Clock '%s' is ALWAYS_ENABLED\n", clk->name);
167 if (clk->ops && clk->ops->init)
168 clk->ops->init(clk);
169 if (clk->ops && clk->ops->enable)
170 clk->ops->enable(clk);
171 pr_debug( "Enabled.");
172 }
173
154 return 0; 174 return 0;
155} 175}
176EXPORT_SYMBOL_GPL(clk_register);
156 177
157void clk_unregister(struct clk *clk) 178void clk_unregister(struct clk *clk)
158{ 179{
@@ -160,21 +181,29 @@ void clk_unregister(struct clk *clk)
160 list_del(&clk->node); 181 list_del(&clk->node);
161 mutex_unlock(&clock_list_sem); 182 mutex_unlock(&clock_list_sem);
162} 183}
184EXPORT_SYMBOL_GPL(clk_unregister);
163 185
164inline unsigned long clk_get_rate(struct clk *clk) 186unsigned long clk_get_rate(struct clk *clk)
165{ 187{
166 return clk->rate; 188 return clk->rate;
167} 189}
190EXPORT_SYMBOL_GPL(clk_get_rate);
168 191
169int clk_set_rate(struct clk *clk, unsigned long rate) 192int clk_set_rate(struct clk *clk, unsigned long rate)
170{ 193{
194 return clk_set_rate_ex(clk, rate, 0);
195}
196EXPORT_SYMBOL_GPL(clk_set_rate);
197
198int clk_set_rate_ex(struct clk *clk, unsigned long rate, int algo_id)
199{
171 int ret = -EOPNOTSUPP; 200 int ret = -EOPNOTSUPP;
172 201
173 if (likely(clk->ops && clk->ops->set_rate)) { 202 if (likely(clk->ops && clk->ops->set_rate)) {
174 unsigned long flags; 203 unsigned long flags;
175 204
176 spin_lock_irqsave(&clock_lock, flags); 205 spin_lock_irqsave(&clock_lock, flags);
177 ret = clk->ops->set_rate(clk, rate); 206 ret = clk->ops->set_rate(clk, rate, algo_id);
178 spin_unlock_irqrestore(&clock_lock, flags); 207 spin_unlock_irqrestore(&clock_lock, flags);
179 } 208 }
180 209
@@ -183,6 +212,7 @@ int clk_set_rate(struct clk *clk, unsigned long rate)
183 212
184 return ret; 213 return ret;
185} 214}
215EXPORT_SYMBOL_GPL(clk_set_rate_ex);
186 216
187void clk_recalc_rate(struct clk *clk) 217void clk_recalc_rate(struct clk *clk)
188{ 218{
@@ -197,6 +227,7 @@ void clk_recalc_rate(struct clk *clk)
197 if (unlikely(clk->flags & CLK_RATE_PROPAGATES)) 227 if (unlikely(clk->flags & CLK_RATE_PROPAGATES))
198 propagate_rate(clk); 228 propagate_rate(clk);
199} 229}
230EXPORT_SYMBOL_GPL(clk_recalc_rate);
200 231
201/* 232/*
202 * Returns a clock. Note that we first try to use device id on the bus 233 * Returns a clock. Note that we first try to use device id on the bus
@@ -233,18 +264,43 @@ found:
233 264
234 return clk; 265 return clk;
235} 266}
267EXPORT_SYMBOL_GPL(clk_get);
236 268
237void clk_put(struct clk *clk) 269void clk_put(struct clk *clk)
238{ 270{
239 if (clk && !IS_ERR(clk)) 271 if (clk && !IS_ERR(clk))
240 module_put(clk->owner); 272 module_put(clk->owner);
241} 273}
274EXPORT_SYMBOL_GPL(clk_put);
242 275
243void __init __attribute__ ((weak)) 276void __init __attribute__ ((weak))
244arch_init_clk_ops(struct clk_ops **ops, int type) 277arch_init_clk_ops(struct clk_ops **ops, int type)
245{ 278{
246} 279}
247 280
281static int show_clocks(char *buf, char **start, off_t off,
282 int len, int *eof, void *data)
283{
284 struct clk *clk;
285 char *p = buf;
286
287 list_for_each_entry_reverse(clk, &clock_list, node) {
288 unsigned long rate = clk_get_rate(clk);
289
290 /*
291 * Don't bother listing dummy clocks with no ancestry
292 * that only support enable and disable ops.
293 */
294 if (unlikely(!rate && !clk->parent))
295 continue;
296
297 p += sprintf(p, "%-12s\t: %ld.%02ldMHz\n", clk->name,
298 rate / 1000000, (rate % 1000000) / 10000);
299 }
300
301 return p - buf;
302}
303
248int __init clk_init(void) 304int __init clk_init(void)
249{ 305{
250 int i, ret = 0; 306 int i, ret = 0;
@@ -256,7 +312,6 @@ int __init clk_init(void)
256 312
257 arch_init_clk_ops(&clk->ops, i); 313 arch_init_clk_ops(&clk->ops, i);
258 ret |= clk_register(clk); 314 ret |= clk_register(clk);
259 clk_enable(clk);
260 } 315 }
261 316
262 /* Kick the child clocks.. */ 317 /* Kick the child clocks.. */
@@ -266,35 +321,14 @@ int __init clk_init(void)
266 return ret; 321 return ret;
267} 322}
268 323
269int show_clocks(struct seq_file *m) 324static int __init clk_proc_init(void)
270{ 325{
271 struct clk *clk; 326 struct proc_dir_entry *p;
272 327 p = create_proc_read_entry("clocks", S_IRUSR, NULL,
273 list_for_each_entry_reverse(clk, &clock_list, node) { 328 show_clocks, NULL);
274 unsigned long rate = clk_get_rate(clk); 329 if (unlikely(!p))
275 330 return -EINVAL;
276 /*
277 * Don't bother listing dummy clocks with no ancestry
278 * that only support enable and disable ops.
279 */
280 if (unlikely(!rate && !clk->parent))
281 continue;
282
283 seq_printf(m, "%-12s\t: %ld.%02ldMHz\n", clk->name,
284 rate / 1000000, (rate % 1000000) / 10000);
285 }
286 331
287 return 0; 332 return 0;
288} 333}
289 334subsys_initcall(clk_proc_init);
290EXPORT_SYMBOL_GPL(clk_register);
291EXPORT_SYMBOL_GPL(clk_unregister);
292EXPORT_SYMBOL_GPL(clk_get);
293EXPORT_SYMBOL_GPL(clk_put);
294EXPORT_SYMBOL_GPL(clk_enable);
295EXPORT_SYMBOL_GPL(clk_disable);
296EXPORT_SYMBOL_GPL(__clk_enable);
297EXPORT_SYMBOL_GPL(__clk_disable);
298EXPORT_SYMBOL_GPL(clk_get_rate);
299EXPORT_SYMBOL_GPL(clk_set_rate);
300EXPORT_SYMBOL_GPL(clk_recalc_rate);
diff --git a/arch/sh/kernel/cpu/init.c b/arch/sh/kernel/cpu/init.c
index 726acfcb9b77..6451ad630174 100644
--- a/arch/sh/kernel/cpu/init.c
+++ b/arch/sh/kernel/cpu/init.c
@@ -41,6 +41,23 @@ __setup("no" __stringify(x), x##_setup);
41onchip_setup(fpu); 41onchip_setup(fpu);
42onchip_setup(dsp); 42onchip_setup(dsp);
43 43
44#ifdef CONFIG_SPECULATIVE_EXECUTION
45#define CPUOPM 0xff2f0000
46#define CPUOPM_RABD (1 << 5)
47
48static void __init speculative_execution_init(void)
49{
50 /* Clear RABD */
51 ctrl_outl(ctrl_inl(CPUOPM) & ~CPUOPM_RABD, CPUOPM);
52
53 /* Flush the update */
54 (void)ctrl_inl(CPUOPM);
55 ctrl_barrier();
56}
57#else
58#define speculative_execution_init() do { } while (0)
59#endif
60
44/* 61/*
45 * Generic first-level cache init 62 * Generic first-level cache init
46 */ 63 */
@@ -261,4 +278,6 @@ asmlinkage void __init sh_cpu_init(void)
261 */ 278 */
262 ubc_wakeup(); 279 ubc_wakeup();
263#endif 280#endif
281
282 speculative_execution_init();
264} 283}
diff --git a/arch/sh/kernel/cpu/irq/Makefile b/arch/sh/kernel/cpu/irq/Makefile
index 0049d217561a..1c23308cfc25 100644
--- a/arch/sh/kernel/cpu/irq/Makefile
+++ b/arch/sh/kernel/cpu/irq/Makefile
@@ -4,6 +4,6 @@
4obj-y += imask.o 4obj-y += imask.o
5 5
6obj-$(CONFIG_CPU_HAS_IPR_IRQ) += ipr.o 6obj-$(CONFIG_CPU_HAS_IPR_IRQ) += ipr.o
7obj-$(CONFIG_CPU_HAS_PINT_IRQ) += pint.o 7obj-$(CONFIG_CPU_HAS_PINT_IRQ) += pint.o
8obj-$(CONFIG_CPU_HAS_MASKREG_IRQ) += maskreg.o 8obj-$(CONFIG_CPU_HAS_MASKREG_IRQ) += maskreg.o
9obj-$(CONFIG_CPU_HAS_INTC2_IRQ) += intc2.o 9obj-$(CONFIG_CPU_HAS_INTC2_IRQ) += intc2.o
diff --git a/arch/sh/kernel/cpu/irq/intc2.c b/arch/sh/kernel/cpu/irq/intc2.c
index 74defe76a058..d8e22f4ff0f0 100644
--- a/arch/sh/kernel/cpu/irq/intc2.c
+++ b/arch/sh/kernel/cpu/irq/intc2.c
@@ -18,7 +18,8 @@
18#define INTC2_BASE 0xfe080000 18#define INTC2_BASE 0xfe080000
19#define INTC2_INTMSK (INTC2_BASE + 0x40) 19#define INTC2_INTMSK (INTC2_BASE + 0x40)
20#define INTC2_INTMSKCLR (INTC2_BASE + 0x60) 20#define INTC2_INTMSKCLR (INTC2_BASE + 0x60)
21#elif defined(CONFIG_CPU_SUBTYPE_SH7780) 21#elif defined(CONFIG_CPU_SUBTYPE_SH7780) || \
22 defined(CONFIG_CPU_SUBTYPE_SH7785)
22#define INTC2_BASE 0xffd40000 23#define INTC2_BASE 0xffd40000
23#define INTC2_INTMSK (INTC2_BASE + 0x38) 24#define INTC2_INTMSK (INTC2_BASE + 0x38)
24#define INTC2_INTMSKCLR (INTC2_BASE + 0x3c) 25#define INTC2_INTMSKCLR (INTC2_BASE + 0x3c)
diff --git a/arch/sh/kernel/cpu/irq/pint.c b/arch/sh/kernel/cpu/irq/pint.c
index f60007783a21..67602685df1a 100644
--- a/arch/sh/kernel/cpu/irq/pint.c
+++ b/arch/sh/kernel/cpu/irq/pint.c
@@ -18,6 +18,58 @@
18#include <asm/io.h> 18#include <asm/io.h>
19#include <asm/machvec.h> 19#include <asm/machvec.h>
20 20
21#if defined(CONFIG_CPU_SUBTYPE_SH7705)
22#define INTC_INTER 0xA4000014UL
23#define INTC_IPRD 0xA4000018UL
24#define INTC_ICR2 0xA4000012UL
25
26/* PFC */
27#define PORT_PACR 0xA4000100UL
28#define PORT_PBCR 0xA4000102UL
29#define PORT_PCCR 0xA4000104UL
30#define PORT_PDCR 0xA4000106UL
31#define PORT_PECR 0xA4000108UL
32#define PORT_PFCR 0xA400010AUL
33#define PORT_PGCR 0xA400010CUL
34#define PORT_PHCR 0xA400010EUL
35#define PORT_PJCR 0xA4000110UL
36#define PORT_PKCR 0xA4000112UL
37#define PORT_PLCR 0xA4000114UL
38#define PORT_PMCR 0xA4000118UL
39#define PORT_PNCR 0xA400011AUL
40#define PORT_PECR2 0xA4050148UL
41#define PORT_PFCR2 0xA405014AUL
42#define PORT_PNCR2 0xA405015AUL
43
44/* I/O port */
45#define PORT_PADR 0xA4000120UL
46#define PORT_PBDR 0xA4000122UL
47#define PORT_PCDR 0xA4000124UL
48#define PORT_PDDR 0xA4000126UL
49#define PORT_PEDR 0xA4000128UL
50#define PORT_PFDR 0xA400012AUL
51#define PORT_PGDR 0xA400012CUL
52#define PORT_PHDR 0xA400012EUL
53#define PORT_PJDR 0xA4000130UL
54#define PORT_PKDR 0xA4000132UL
55#define PORT_PLDR 0xA4000134UL
56#define PORT_PMDR 0xA4000138UL
57#define PORT_PNDR 0xA400013AUL
58
59#define PINT0_IRQ 40
60#define PINT8_IRQ 41
61#define PINT_IRQ_BASE 86
62
63#define PINT0_IPR_ADDR INTC_IPRD
64#define PINT0_IPR_POS 3
65#define PINT0_PRIORITY 2
66
67#define PINT8_IPR_ADDR INTC_IPRD
68#define PINT8_IPR_POS 2
69#define PINT8_PRIORITY 2
70
71#endif /* CONFIG_CPU_SUBTYPE_SH7705 */
72
21static unsigned char pint_map[256]; 73static unsigned char pint_map[256];
22static unsigned long portcr_mask; 74static unsigned long portcr_mask;
23 75
@@ -126,7 +178,7 @@ int ipr_irq_demux(int irq)
126 unsigned long creg, dreg, d, sav; 178 unsigned long creg, dreg, d, sav;
127 179
128 if (irq == PINT0_IRQ) { 180 if (irq == PINT0_IRQ) {
129#if defined(CONFIG_CPU_SUBTYPE_SH7707) 181#if defined(CONFIG_CPU_SUBTYPE_SH7705) || defined(CONFIG_CPU_SUBTYPE_SH7707)
130 creg = PORT_PACR; 182 creg = PORT_PACR;
131 dreg = PORT_PADR; 183 dreg = PORT_PADR;
132#else 184#else
@@ -144,7 +196,7 @@ int ipr_irq_demux(int irq)
144 196
145 return PINT_IRQ_BASE + pint_map[d]; 197 return PINT_IRQ_BASE + pint_map[d];
146 } else if (irq == PINT8_IRQ) { 198 } else if (irq == PINT8_IRQ) {
147#if defined(CONFIG_CPU_SUBTYPE_SH7707) 199#if defined(CONFIG_CPU_SUBTYPE_SH7705) || defined(CONFIG_CPU_SUBTYPE_SH7707)
148 creg = PORT_PBCR; 200 creg = PORT_PBCR;
149 dreg = PORT_PBDR; 201 dreg = PORT_PBDR;
150#else 202#else
diff --git a/arch/sh/kernel/cpu/sh3/Makefile b/arch/sh/kernel/cpu/sh3/Makefile
index 83905e4e4387..09faa056cd43 100644
--- a/arch/sh/kernel/cpu/sh3/Makefile
+++ b/arch/sh/kernel/cpu/sh3/Makefile
@@ -12,6 +12,7 @@ obj-$(CONFIG_CPU_SUBTYPE_SH7708) += setup-sh7708.o
12obj-$(CONFIG_CPU_SUBTYPE_SH7709) += setup-sh7709.o 12obj-$(CONFIG_CPU_SUBTYPE_SH7709) += setup-sh7709.o
13obj-$(CONFIG_CPU_SUBTYPE_SH7300) += setup-sh7300.o 13obj-$(CONFIG_CPU_SUBTYPE_SH7300) += setup-sh7300.o
14obj-$(CONFIG_CPU_SUBTYPE_SH7710) += setup-sh7710.o 14obj-$(CONFIG_CPU_SUBTYPE_SH7710) += setup-sh7710.o
15obj-$(CONFIG_CPU_SUBTYPE_SH7712) += setup-sh7710.o
15 16
16# Primary on-chip clocks (common) 17# Primary on-chip clocks (common)
17clock-$(CONFIG_CPU_SH3) := clock-sh3.o 18clock-$(CONFIG_CPU_SH3) := clock-sh3.o
diff --git a/arch/sh/kernel/cpu/sh3/probe.c b/arch/sh/kernel/cpu/sh3/probe.c
index 821b0ab7b528..647623b22edc 100644
--- a/arch/sh/kernel/cpu/sh3/probe.c
+++ b/arch/sh/kernel/cpu/sh3/probe.c
@@ -78,6 +78,9 @@ int __init detect_cpu_and_cache_system(void)
78#if defined(CONFIG_CPU_SUBTYPE_SH7710) 78#if defined(CONFIG_CPU_SUBTYPE_SH7710)
79 current_cpu_data.type = CPU_SH7710; 79 current_cpu_data.type = CPU_SH7710;
80#endif 80#endif
81#if defined(CONFIG_CPU_SUBTYPE_SH7712)
82 current_cpu_data.type = CPU_SH7712;
83#endif
81#if defined(CONFIG_CPU_SUBTYPE_SH7705) 84#if defined(CONFIG_CPU_SUBTYPE_SH7705)
82 current_cpu_data.type = CPU_SH7705; 85 current_cpu_data.type = CPU_SH7705;
83 86
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7705.c b/arch/sh/kernel/cpu/sh3/setup-sh7705.c
index a8e41c5241fa..1983fb7ad6ea 100644
--- a/arch/sh/kernel/cpu/sh3/setup-sh7705.c
+++ b/arch/sh/kernel/cpu/sh3/setup-sh7705.c
@@ -2,6 +2,7 @@
2 * SH7705 Setup 2 * SH7705 Setup
3 * 3 *
4 * Copyright (C) 2006 Paul Mundt 4 * Copyright (C) 2006 Paul Mundt
5 * Copyright (C) 2007 Nobuhiro Iwamatsu
5 * 6 *
6 * This file is subject to the terms and conditions of the GNU General Public 7 * 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 * License. See the file "COPYING" in the main directory of this archive
@@ -14,15 +15,15 @@
14 15
15static struct plat_sci_port sci_platform_data[] = { 16static struct plat_sci_port sci_platform_data[] = {
16 { 17 {
17 .mapbase = 0xa4400000, 18 .mapbase = 0xa4410000,
18 .flags = UPF_BOOT_AUTOCONF, 19 .flags = UPF_BOOT_AUTOCONF,
19 .type = PORT_SCIF, 20 .type = PORT_SCIF,
20 .irqs = { 52, 53, 55, 54 }, 21 .irqs = { 56, 57, 59 },
21 }, { 22 }, {
22 .mapbase = 0xa4410000, 23 .mapbase = 0xa4400000,
23 .flags = UPF_BOOT_AUTOCONF, 24 .flags = UPF_BOOT_AUTOCONF,
24 .type = PORT_SCIF, 25 .type = PORT_SCIF,
25 .irqs = { 56, 57, 59, 58 }, 26 .irqs = { 52, 53, 55 },
26 }, { 27 }, {
27 .flags = 0, 28 .flags = 0,
28 } 29 }
@@ -46,3 +47,48 @@ static int __init sh7705_devices_setup(void)
46 ARRAY_SIZE(sh7705_devices)); 47 ARRAY_SIZE(sh7705_devices));
47} 48}
48__initcall(sh7705_devices_setup); 49__initcall(sh7705_devices_setup);
50
51static struct ipr_data sh7705_ipr_map[] = {
52 /* IRQ, IPR-idx, shift, priority */
53 { 16, 0, 12, 2 }, /* TMU0 TUNI*/
54 { 17, 0, 8, 2 }, /* TMU1 TUNI */
55 { 18, 0, 4, 2 }, /* TMU2 TUNI */
56 { 27, 1, 12, 2 }, /* WDT ITI */
57 { 20, 0, 0, 2 }, /* RTC ATI (alarm) */
58 { 21, 0, 0, 2 }, /* RTC PRI (period) */
59 { 22, 0, 0, 2 }, /* RTC CUI (carry) */
60 { 48, 4, 12, 7 }, /* DMAC DMTE0 */
61 { 49, 4, 12, 7 }, /* DMAC DMTE1 */
62 { 50, 4, 12, 7 }, /* DMAC DMTE2 */
63 { 51, 4, 12, 7 }, /* DMAC DMTE3 */
64 { 52, 4, 8, 3 }, /* SCIF0 ERI */
65 { 53, 4, 8, 3 }, /* SCIF0 RXI */
66 { 55, 4, 8, 3 }, /* SCIF0 TXI */
67 { 56, 4, 4, 3 }, /* SCIF1 ERI */
68 { 57, 4, 4, 3 }, /* SCIF1 RXI */
69 { 59, 4, 4, 3 }, /* SCIF1 TXI */
70};
71
72static unsigned long ipr_offsets[] = {
73 0xFFFFFEE2 /* 0: IPRA */
74, 0xFFFFFEE4 /* 1: IPRB */
75, 0xA4000016 /* 2: IPRC */
76, 0xA4000018 /* 3: IPRD */
77, 0xA400001A /* 4: IPRE */
78, 0xA4080000 /* 5: IPRF */
79, 0xA4080002 /* 6: IPRG */
80, 0xA4080004 /* 7: IPRH */
81};
82
83/* given the IPR index return the address of the IPR register */
84unsigned int map_ipridx_to_addr(int idx)
85{
86 if (idx >= ARRAY_SIZE(ipr_offsets))
87 return 0;
88 return ipr_offsets[idx];
89}
90
91void __init init_IRQ_ipr()
92{
93 make_ipr_irq(sh7705_ipr_map, ARRAY_SIZE(sh7705_ipr_map));
94}
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7709.c b/arch/sh/kernel/cpu/sh3/setup-sh7709.c
index dc9b211cf87f..c7d7c35fc834 100644
--- a/arch/sh/kernel/cpu/sh3/setup-sh7709.c
+++ b/arch/sh/kernel/cpu/sh3/setup-sh7709.c
@@ -48,24 +48,33 @@ static struct platform_device *sh7709_devices[] __initdata = {
48static int __init sh7709_devices_setup(void) 48static int __init sh7709_devices_setup(void)
49{ 49{
50 return platform_add_devices(sh7709_devices, 50 return platform_add_devices(sh7709_devices,
51 ARRAY_SIZE(sh7709_devices)); 51 ARRAY_SIZE(sh7709_devices));
52} 52}
53__initcall(sh7709_devices_setup); 53__initcall(sh7709_devices_setup);
54 54
55#define IPRx(A,N) .addr=A, .shift=0*N*-1 55#define IPRx(A,N) .addr=A, .shift=N
56#define IPRA(N) IPRx(0xfffffee2UL,N) 56#define IPRA(N) IPRx(0xfffffee2UL,N)
57#define IPRB(N) IPRx(0xfffffee4UL,N) 57#define IPRB(N) IPRx(0xfffffee4UL,N)
58#define IPRC(N) IPRx(0xa4000016UL,N)
59#define IPRD(N) IPRx(0xa4000018UL,N)
58#define IPRE(N) IPRx(0xa400001aUL,N) 60#define IPRE(N) IPRx(0xa400001aUL,N)
59 61
60static struct ipr_data sh7709_ipr_map[] = { 62static struct ipr_data sh7709_ipr_map[] = {
61 [16] = { IPRA(15-12), 2 }, /* TMU TUNI0 */ 63 [16] = { IPRA(12), 2 }, /* TMU TUNI0 */
62 [17] = { IPRA(11-8), 4 }, /* TMU TUNI1 */ 64 [17] = { IPRA(8), 4 }, /* TMU TUNI1 */
63 [22] = { IPRA(3-0), 2 }, /* RTC CUI */ 65 [18 ... 19] = { IPRA(4), 1 }, /* TMU TUNI1 */
64 [23 ... 26] = { IPRB(7-4), 3 }, /* SCI */ 66 [20 ... 22] = { IPRA(0), 2 }, /* RTC CUI */
65 [27] = { IPRB(15-12), 2 }, /* WDT ITI */ 67 [23 ... 26] = { IPRB(4), 3 }, /* SCI */
66 [48 ... 51] = { IPRE(15-12), 7 }, /* DMA */ 68 [27] = { IPRB(12), 2 }, /* WDT ITI */
67 [52 ... 55] = { IPRE(11-8), 3 }, /* IRDA */ 69 [32] = { IPRC(0), 1 }, /* IRQ 0 */
68 [56 ... 59] = { IPRE(7-4), 3 }, /* SCIF */ 70 [33] = { IPRC(4), 1 }, /* IRQ 1 */
71 [34] = { IPRC(8), 1 }, /* IRQ 2 APM */
72 [35] = { IPRC(12), 1 }, /* IRQ 3 TOUCHSCREEN */
73 [36] = { IPRD(0), 1 }, /* IRQ 4 */
74 [37] = { IPRD(4), 1 }, /* IRQ 5 */
75 [48 ... 51] = { IPRE(12), 7 }, /* DMA */
76 [52 ... 55] = { IPRE(8), 3 }, /* IRDA */
77 [56 ... 59] = { IPRE(4), 3 }, /* SCIF */
69}; 78};
70 79
71void __init init_IRQ_ipr() 80void __init init_IRQ_ipr()
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7710.c b/arch/sh/kernel/cpu/sh3/setup-sh7710.c
index 895f99ee6a95..51760a7e7f1c 100644
--- a/arch/sh/kernel/cpu/sh3/setup-sh7710.c
+++ b/arch/sh/kernel/cpu/sh3/setup-sh7710.c
@@ -2,6 +2,7 @@
2 * SH7710 Setup 2 * SH7710 Setup
3 * 3 *
4 * Copyright (C) 2006 Paul Mundt 4 * Copyright (C) 2006 Paul Mundt
5 * Copyright (C) 2007 Nobuhiro Iwamatsu
5 * 6 *
6 * This file is subject to the terms and conditions of the GNU General Public 7 * 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 * License. See the file "COPYING" in the main directory of this archive
@@ -19,6 +20,12 @@ static struct plat_sci_port sci_platform_data[] = {
19 .type = PORT_SCIF, 20 .type = PORT_SCIF,
20 .irqs = { 52, 53, 55, 54 }, 21 .irqs = { 52, 53, 55, 54 },
21 }, { 22 }, {
23 .mapbase = 0xa4420000,
24 .flags = UPF_BOOT_AUTOCONF,
25 .type = PORT_SCIF,
26 .irqs = { 56, 57, 59, 58 },
27 }, {
28
22 .flags = 0, 29 .flags = 0,
23 } 30 }
24}; 31};
@@ -41,3 +48,56 @@ static int __init sh7710_devices_setup(void)
41 ARRAY_SIZE(sh7710_devices)); 48 ARRAY_SIZE(sh7710_devices));
42} 49}
43__initcall(sh7710_devices_setup); 50__initcall(sh7710_devices_setup);
51
52static struct ipr_data sh7710_ipr_map[] = {
53 /* IRQ, IPR-idx, shift, priority */
54 { 16, 0, 12, 2 }, /* TMU0 TUNI*/
55 { 17, 0, 8, 2 }, /* TMU1 TUNI */
56 { 18, 0, 4, 2 }, /* TMU2 TUNI */
57 { 27, 1, 12, 2 }, /* WDT ITI */
58 { 20, 0, 0, 2 }, /* RTC ATI (alarm) */
59 { 21, 0, 0, 2 }, /* RTC PRI (period) */
60 { 22, 0, 0, 2 }, /* RTC CUI (carry) */
61 { 48, 4, 12, 7 }, /* DMAC DMTE0 */
62 { 49, 4, 12, 7 }, /* DMAC DMTE1 */
63 { 50, 4, 12, 7 }, /* DMAC DMTE2 */
64 { 51, 4, 12, 7 }, /* DMAC DMTE3 */
65 { 52, 4, 8, 3 }, /* SCIF0 ERI */
66 { 53, 4, 8, 3 }, /* SCIF0 RXI */
67 { 54, 4, 8, 3 }, /* SCIF0 BRI */
68 { 55, 4, 8, 3 }, /* SCIF0 TXI */
69 { 56, 4, 4, 3 }, /* SCIF1 ERI */
70 { 57, 4, 4, 3 }, /* SCIF1 RXI */
71 { 58, 4, 4, 3 }, /* SCIF1 BRI */
72 { 59, 4, 4, 3 }, /* SCIF1 TXI */
73 { 76, 5, 8, 7 }, /* DMAC DMTE4 */
74 { 77, 5, 8, 7 }, /* DMAC DMTE5 */
75 { 80, 6, 12, 5 }, /* EDMAC EINT0 */
76 { 81, 6, 8, 5 }, /* EDMAC EINT1 */
77 { 82, 6, 4, 5 }, /* EDMAC EINT2 */
78};
79
80static unsigned long ipr_offsets[] = {
81 0xA414FEE2 /* 0: IPRA */
82, 0xA414FEE4 /* 1: IPRB */
83, 0xA4140016 /* 2: IPRC */
84, 0xA4140018 /* 3: IPRD */
85, 0xA414001A /* 4: IPRE */
86, 0xA4080000 /* 5: IPRF */
87, 0xA4080002 /* 6: IPRG */
88, 0xA4080004 /* 7: IPRH */
89, 0xA4080006 /* 8: IPRI */
90};
91
92/* given the IPR index return the address of the IPR register */
93unsigned int map_ipridx_to_addr(int idx)
94{
95 if (idx >= ARRAY_SIZE(ipr_offsets))
96 return 0;
97 return ipr_offsets[idx];
98}
99
100void __init init_IRQ_ipr()
101{
102 make_ipr_irq(sh7710_ipr_map, ARRAY_SIZE(sh7710_ipr_map));
103}
diff --git a/arch/sh/kernel/cpu/sh4/clock-sh4-202.c b/arch/sh/kernel/cpu/sh4/clock-sh4-202.c
index fa2019aabd74..fcb2c41bc34e 100644
--- a/arch/sh/kernel/cpu/sh4/clock-sh4-202.c
+++ b/arch/sh/kernel/cpu/sh4/clock-sh4-202.c
@@ -82,7 +82,8 @@ static void shoc_clk_init(struct clk *clk)
82 for (i = 0; i < ARRAY_SIZE(frqcr3_divisors); i++) { 82 for (i = 0; i < ARRAY_SIZE(frqcr3_divisors); i++) {
83 int divisor = frqcr3_divisors[i]; 83 int divisor = frqcr3_divisors[i];
84 84
85 if (clk->ops->set_rate(clk, clk->parent->rate / divisor) == 0) 85 if (clk->ops->set_rate(clk, clk->parent->rate /
86 divisor, 0) == 0)
86 break; 87 break;
87 } 88 }
88 89
diff --git a/arch/sh/kernel/cpu/sh4/probe.c b/arch/sh/kernel/cpu/sh4/probe.c
index 58950de2696d..8cd04904c77a 100644
--- a/arch/sh/kernel/cpu/sh4/probe.c
+++ b/arch/sh/kernel/cpu/sh4/probe.c
@@ -124,6 +124,14 @@ int __init detect_cpu_and_cache_system(void)
124 current_cpu_data.dcache.ways = 4; 124 current_cpu_data.dcache.ways = 4;
125 current_cpu_data.flags |= CPU_HAS_LLSC; 125 current_cpu_data.flags |= CPU_HAS_LLSC;
126 break; 126 break;
127 case 0x3004:
128 case 0x3007:
129 current_cpu_data.type = CPU_SH7785;
130 current_cpu_data.icache.ways = 4;
131 current_cpu_data.dcache.ways = 4;
132 current_cpu_data.flags |= CPU_HAS_FPU | CPU_HAS_PERF_COUNTER |
133 CPU_HAS_LLSC;
134 break;
127 case 0x3008: 135 case 0x3008:
128 if (prr == 0xa0) { 136 if (prr == 0xa0) {
129 current_cpu_data.type = CPU_SH7722; 137 current_cpu_data.type = CPU_SH7722;
diff --git a/arch/sh/kernel/cpu/sh4a/Makefile b/arch/sh/kernel/cpu/sh4a/Makefile
index a8f493f2f21f..ab7422f8f820 100644
--- a/arch/sh/kernel/cpu/sh4a/Makefile
+++ b/arch/sh/kernel/cpu/sh4a/Makefile
@@ -5,6 +5,7 @@
5# CPU subtype setup 5# CPU subtype setup
6obj-$(CONFIG_CPU_SUBTYPE_SH7770) += setup-sh7770.o 6obj-$(CONFIG_CPU_SUBTYPE_SH7770) += setup-sh7770.o
7obj-$(CONFIG_CPU_SUBTYPE_SH7780) += setup-sh7780.o 7obj-$(CONFIG_CPU_SUBTYPE_SH7780) += setup-sh7780.o
8obj-$(CONFIG_CPU_SUBTYPE_SH7785) += setup-sh7785.o
8obj-$(CONFIG_CPU_SUBTYPE_SH73180) += setup-sh73180.o 9obj-$(CONFIG_CPU_SUBTYPE_SH73180) += setup-sh73180.o
9obj-$(CONFIG_CPU_SUBTYPE_SH7343) += setup-sh7343.o 10obj-$(CONFIG_CPU_SUBTYPE_SH7343) += setup-sh7343.o
10obj-$(CONFIG_CPU_SUBTYPE_SH7722) += setup-sh7722.o 11obj-$(CONFIG_CPU_SUBTYPE_SH7722) += setup-sh7722.o
@@ -13,7 +14,8 @@ obj-$(CONFIG_CPU_SUBTYPE_SH7722) += setup-sh7722.o
13clock-$(CONFIG_CPU_SUBTYPE_SH73180) := clock-sh73180.o 14clock-$(CONFIG_CPU_SUBTYPE_SH73180) := clock-sh73180.o
14clock-$(CONFIG_CPU_SUBTYPE_SH7770) := clock-sh7770.o 15clock-$(CONFIG_CPU_SUBTYPE_SH7770) := clock-sh7770.o
15clock-$(CONFIG_CPU_SUBTYPE_SH7780) := clock-sh7780.o 16clock-$(CONFIG_CPU_SUBTYPE_SH7780) := clock-sh7780.o
17clock-$(CONFIG_CPU_SUBTYPE_SH7785) := clock-sh7785.o
16clock-$(CONFIG_CPU_SUBTYPE_SH7343) := clock-sh7343.o 18clock-$(CONFIG_CPU_SUBTYPE_SH7343) := clock-sh7343.o
17clock-$(CONFIG_CPU_SUBTYPE_SH7722) := clock-sh7343.o 19clock-$(CONFIG_CPU_SUBTYPE_SH7722) := clock-sh7722.o
18 20
19obj-y += $(clock-y) 21obj-y += $(clock-y)
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7722.c b/arch/sh/kernel/cpu/sh4a/clock-sh7722.c
new file mode 100644
index 000000000000..29090035bc5b
--- /dev/null
+++ b/arch/sh/kernel/cpu/sh4a/clock-sh7722.c
@@ -0,0 +1,600 @@
1/*
2 * arch/sh/kernel/cpu/sh4a/clock-sh7722.c
3 *
4 * SH7722 support for the clock framework
5 *
6 * Copyright (c) 2006-2007 Nomad Global Solutions Inc
7 * Based on code for sh7343 by 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/kernel.h>
15#include <linux/io.h>
16#include <linux/errno.h>
17#include <asm/clock.h>
18#include <asm/freq.h>
19
20#define SH7722_PLL_FREQ (32000000/8)
21#define N (-1)
22#define NM (-2)
23#define ROUND_NEAREST 0
24#define ROUND_DOWN -1
25#define ROUND_UP +1
26
27static int adjust_algos[][3] = {
28 {}, /* NO_CHANGE */
29 { NM, N, 1 }, /* N:1, N:1 */
30 { 3, 2, 2 }, /* 3:2:2 */
31 { 5, 2, 2 }, /* 5:2:2 */
32 { N, 1, 1 }, /* N:1:1 */
33
34 { N, 1 }, /* N:1 */
35
36 { N, 1 }, /* N:1 */
37 { 3, 2 },
38 { 4, 3 },
39 { 5, 4 },
40
41 { N, 1 }
42};
43
44static unsigned long adjust_pair_of_clocks(unsigned long r1, unsigned long r2,
45 int m1, int m2, int round_flag)
46{
47 unsigned long rem, div;
48 int the_one = 0;
49
50 pr_debug( "Actual values: r1 = %ld\n", r1);
51 pr_debug( "...............r2 = %ld\n", r2);
52
53 if (m1 == m2) {
54 r2 = r1;
55 pr_debug( "setting equal rates: r2 now %ld\n", r2);
56 } else if ((m2 == N && m1 == 1) ||
57 (m2 == NM && m1 == N)) { /* N:1 or NM:N */
58 pr_debug( "Setting rates as 1:N (N:N*M)\n");
59 rem = r2 % r1;
60 pr_debug( "...remainder = %ld\n", rem);
61 if (rem) {
62 div = r2 / r1;
63 pr_debug( "...div = %ld\n", div);
64 switch (round_flag) {
65 case ROUND_NEAREST:
66 the_one = rem >= r1/2 ? 1 : 0; break;
67 case ROUND_UP:
68 the_one = 1; break;
69 case ROUND_DOWN:
70 the_one = 0; break;
71 }
72
73 r2 = r1 * (div + the_one);
74 pr_debug( "...setting r2 to %ld\n", r2);
75 }
76 } else if ((m2 == 1 && m1 == N) ||
77 (m2 == N && m1 == NM)) { /* 1:N or N:NM */
78 pr_debug( "Setting rates as N:1 (N*M:N)\n");
79 rem = r1 % r2;
80 pr_debug( "...remainder = %ld\n", rem);
81 if (rem) {
82 div = r1 / r2;
83 pr_debug( "...div = %ld\n", div);
84 switch (round_flag) {
85 case ROUND_NEAREST:
86 the_one = rem > r2/2 ? 1 : 0; break;
87 case ROUND_UP:
88 the_one = 0; break;
89 case ROUND_DOWN:
90 the_one = 1; break;
91 }
92
93 r2 = r1 / (div + the_one);
94 pr_debug( "...setting r2 to %ld\n", r2);
95 }
96 } else { /* value:value */
97 pr_debug( "Setting rates as %d:%d\n", m1, m2);
98 div = r1 / m1;
99 r2 = div * m2;
100 pr_debug( "...div = %ld\n", div);
101 pr_debug( "...setting r2 to %ld\n", r2);
102 }
103
104 return r2;
105}
106
107static void adjust_clocks(int originate, int *l, unsigned long v[],
108 int n_in_line)
109{
110 int x;
111
112 pr_debug( "Go down from %d...\n", originate);
113 /* go up recalculation clocks */
114 for (x = originate; x>0; x -- )
115 v[x-1] = adjust_pair_of_clocks(v[x], v[x-1],
116 l[x], l[x-1],
117 ROUND_UP);
118
119 pr_debug( "Go up from %d...\n", originate);
120 /* go down recalculation clocks */
121 for (x = originate; x<n_in_line - 1; x ++ )
122 v[x+1] = adjust_pair_of_clocks(v[x], v[x+1],
123 l[x], l[x+1],
124 ROUND_UP);
125}
126
127
128/*
129 * SH7722 uses a common set of multipliers and divisors, so this
130 * is quite simple..
131 */
132
133/*
134 * Instead of having two separate multipliers/divisors set, like this:
135 *
136 * static int multipliers[] = { 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
137 * static int divisors[] = { 1, 3, 2, 5, 3, 4, 5, 6, 8, 10, 12, 16, 20 };
138 *
139 * I created the divisors2 array, which is used to calculate rate like
140 * rate = parent * 2 / divisors2[ divisor ];
141*/
142static int divisors2[] = { 2, 3, 4, 5, 6, 8, 10, 12, 16, 20, 24, 32, 40 };
143
144static void master_clk_init(struct clk *clk)
145{
146 clk_set_rate(clk, clk_get_rate(clk));
147}
148
149static void master_clk_recalc(struct clk *clk)
150{
151 unsigned long frqcr = ctrl_inl(FRQCR);
152
153 clk->rate = CONFIG_SH_PCLK_FREQ * (1 + (frqcr >> 24 & 0xF));
154}
155
156static int master_clk_setrate(struct clk *clk, unsigned long rate, int id)
157{
158 int div = rate / SH7722_PLL_FREQ;
159 int master_divs[] = { 2, 3, 4, 6, 8, 16 };
160 int index;
161 unsigned long frqcr;
162
163 if (rate < SH7722_PLL_FREQ * 2)
164 return -EINVAL;
165
166 for (index = 1; index < ARRAY_SIZE(master_divs); index++)
167 if (div >= master_divs[index - 1] && div < master_divs[index])
168 break;
169
170 if (index >= ARRAY_SIZE(master_divs))
171 index = ARRAY_SIZE(master_divs);
172 div = master_divs[index - 1];
173
174 frqcr = ctrl_inl(FRQCR);
175 frqcr &= ~(0xF << 24);
176 frqcr |= ( (div-1) << 24);
177 ctrl_outl(frqcr, FRQCR);
178
179 return 0;
180}
181
182static struct clk_ops sh7722_master_clk_ops = {
183 .init = master_clk_init,
184 .recalc = master_clk_recalc,
185 .set_rate = master_clk_setrate,
186};
187
188struct frqcr_context {
189 unsigned mask;
190 unsigned shift;
191};
192
193struct frqcr_context sh7722_get_clk_context(const char *name)
194{
195 struct frqcr_context ctx = { 0, };
196
197 if (!strcmp(name, "peripheral_clk")) {
198 ctx.shift = 0;
199 ctx.mask = 0xF;
200 } else if (!strcmp(name, "sdram_clk")) {
201 ctx.shift = 4;
202 ctx.mask = 0xF;
203 } else if (!strcmp(name, "bus_clk")) {
204 ctx.shift = 8;
205 ctx.mask = 0xF;
206 } else if (!strcmp(name, "sh_clk")) {
207 ctx.shift = 12;
208 ctx.mask = 0xF;
209 } else if (!strcmp(name, "umem_clk")) {
210 ctx.shift = 16;
211 ctx.mask = 0xF;
212 } else if (!strcmp(name, "cpu_clk")) {
213 ctx.shift = 20;
214 ctx.mask = 7;
215 }
216 return ctx;
217}
218
219/**
220 * sh7722_find_divisors - find divisor for setting rate
221 *
222 * All sh7722 clocks use the same set of multipliers/divisors. This function
223 * chooses correct divisor to set the rate of clock with parent clock that
224 * generates frequency of 'parent_rate'
225 *
226 * @parent_rate: rate of parent clock
227 * @rate: requested rate to be set
228 */
229static int sh7722_find_divisors(unsigned long parent_rate, unsigned rate)
230{
231 unsigned div2 = parent_rate * 2 / rate;
232 int index;
233
234 if (rate > parent_rate)
235 return -EINVAL;
236
237 for (index = 1; index < ARRAY_SIZE(divisors2); index++) {
238 if (div2 > divisors2[index] && div2 <= divisors2[index])
239 break;
240 }
241 if (index >= ARRAY_SIZE(divisors2))
242 index = ARRAY_SIZE(divisors2) - 1;
243 return divisors2[index];
244}
245
246static void sh7722_frqcr_recalc(struct clk *clk)
247{
248 struct frqcr_context ctx = sh7722_get_clk_context(clk->name);
249 unsigned long frqcr = ctrl_inl(FRQCR);
250 int index;
251
252 index = (frqcr >> ctx.shift) & ctx.mask;
253 clk->rate = clk->parent->rate * 2 / divisors2[index];
254}
255
256static int sh7722_frqcr_set_rate(struct clk *clk, unsigned long rate,
257 int algo_id)
258{
259 struct frqcr_context ctx = sh7722_get_clk_context(clk->name);
260 unsigned long parent_rate = clk->parent->rate;
261 int div;
262 unsigned long frqcr;
263 int err = 0;
264
265 /* pretty invalid */
266 if (parent_rate < rate)
267 return -EINVAL;
268
269 /* look for multiplier/divisor pair */
270 div = sh7722_find_divisors(parent_rate, rate);
271 if (div<0)
272 return div;
273
274 /* calculate new value of clock rate */
275 clk->rate = parent_rate * 2 / div;
276 frqcr = ctrl_inl(FRQCR);
277
278 /* FIXME: adjust as algo_id specifies */
279 if (algo_id != NO_CHANGE) {
280 int originator;
281 char *algo_group_1[] = { "cpu_clk", "umem_clk", "sh_clk" };
282 char *algo_group_2[] = { "sh_clk", "bus_clk" };
283 char *algo_group_3[] = { "sh_clk", "sdram_clk" };
284 char *algo_group_4[] = { "bus_clk", "peripheral_clk" };
285 char *algo_group_5[] = { "cpu_clk", "peripheral_clk" };
286 char **algo_current = NULL;
287 /* 3 is the maximum number of clocks in relation */
288 struct clk *ck[3];
289 unsigned long values[3]; /* the same comment as above */
290 int part_length = -1;
291 int i;
292
293 /*
294 * all the steps below only required if adjustion was
295 * requested
296 */
297 if (algo_id == IUS_N1_N1 ||
298 algo_id == IUS_322 ||
299 algo_id == IUS_522 ||
300 algo_id == IUS_N11) {
301 algo_current = algo_group_1;
302 part_length = 3;
303 }
304 if (algo_id == SB_N1) {
305 algo_current = algo_group_2;
306 part_length = 2;
307 }
308 if (algo_id == SB3_N1 ||
309 algo_id == SB3_32 ||
310 algo_id == SB3_43 ||
311 algo_id == SB3_54) {
312 algo_current = algo_group_3;
313 part_length = 2;
314 }
315 if (algo_id == BP_N1) {
316 algo_current = algo_group_4;
317 part_length = 2;
318 }
319 if (algo_id == IP_N1) {
320 algo_current = algo_group_5;
321 part_length = 2;
322 }
323 if (!algo_current)
324 goto incorrect_algo_id;
325
326 originator = -1;
327 for (i = 0; i < part_length; i ++ ) {
328 if (originator >= 0 && !strcmp(clk->name,
329 algo_current[i]))
330 originator = i;
331 ck[i] = clk_get(NULL, algo_current[i]);
332 values[i] = clk_get_rate(ck[i]);
333 }
334
335 if (originator >= 0)
336 adjust_clocks(originator, adjust_algos[algo_id],
337 values, part_length);
338
339 for (i = 0; i < part_length; i ++ ) {
340 struct frqcr_context part_ctx;
341 int part_div;
342
343 if (likely(!err)) {
344 part_div = sh7722_find_divisors(parent_rate,
345 rate);
346 if (part_div > 0) {
347 part_ctx = sh7722_get_clk_context(
348 ck[i]->name);
349 frqcr &= ~(part_ctx.mask <<
350 part_ctx.shift);
351 frqcr |= part_div << part_ctx.shift;
352 } else
353 err = part_div;
354 }
355
356 ck[i]->ops->recalc(ck[i]);
357 clk_put(ck[i]);
358 }
359 }
360
361 /* was there any error during recalculation ? If so, bail out.. */
362 if (unlikely(err!=0))
363 goto out_err;
364
365 /* clear FRQCR bits */
366 frqcr &= ~(ctx.mask << ctx.shift);
367 frqcr |= div << ctx.shift;
368
369 /* ...and perform actual change */
370 ctrl_outl(frqcr, FRQCR);
371 return 0;
372
373incorrect_algo_id:
374 return -EINVAL;
375out_err:
376 return err;
377}
378
379static struct clk_ops sh7722_frqcr_clk_ops = {
380 .recalc = sh7722_frqcr_recalc,
381 .set_rate = sh7722_frqcr_set_rate,
382};
383
384/*
385 * clock ops methods for SIU A/B and IrDA clock
386 *
387 */
388static int sh7722_siu_which(struct clk *clk)
389{
390 if (!strcmp(clk->name, "siu_a_clk"))
391 return 0;
392 if (!strcmp(clk->name, "siu_b_clk"))
393 return 1;
394 if (!strcmp(clk->name, "irda_clk"))
395 return 2;
396 return -EINVAL;
397}
398
399static unsigned long sh7722_siu_regs[] = {
400 [0] = SCLKACR,
401 [1] = SCLKBCR,
402 [2] = IrDACLKCR,
403};
404
405static int sh7722_siu_start_stop(struct clk *clk, int enable)
406{
407 int siu = sh7722_siu_which(clk);
408 unsigned long r;
409
410 if (siu < 0)
411 return siu;
412 BUG_ON(siu > 2);
413 r = ctrl_inl(sh7722_siu_regs[siu]);
414 if (enable)
415 ctrl_outl(r & ~(1 << 8), sh7722_siu_regs[siu]);
416 else
417 ctrl_outl(r | (1 << 8), sh7722_siu_regs[siu]);
418 return 0;
419}
420
421static void sh7722_siu_enable(struct clk *clk)
422{
423 sh7722_siu_start_stop(clk, 1);
424}
425
426static void sh7722_siu_disable(struct clk *clk)
427{
428 sh7722_siu_start_stop(clk, 0);
429}
430
431static void sh7722_video_enable(struct clk *clk)
432{
433 unsigned long r;
434
435 r = ctrl_inl(VCLKCR);
436 ctrl_outl( r & ~(1<<8), VCLKCR);
437}
438
439static void sh7722_video_disable(struct clk *clk)
440{
441 unsigned long r;
442
443 r = ctrl_inl(VCLKCR);
444 ctrl_outl( r | (1<<8), VCLKCR);
445}
446
447static int sh7722_video_set_rate(struct clk *clk, unsigned long rate,
448 int algo_id)
449{
450 unsigned long r;
451
452 r = ctrl_inl(VCLKCR);
453 r &= ~0x3F;
454 r |= ((clk->parent->rate / rate - 1) & 0x3F);
455 ctrl_outl(r, VCLKCR);
456 return 0;
457}
458
459static void sh7722_video_recalc(struct clk *clk)
460{
461 unsigned long r;
462
463 r = ctrl_inl(VCLKCR);
464 clk->rate = clk->parent->rate / ((r & 0x3F) + 1);
465}
466
467static int sh7722_siu_set_rate(struct clk *clk, unsigned long rate, int algo_id)
468{
469 int siu = sh7722_siu_which(clk);
470 unsigned long r;
471 int div;
472
473 if (siu < 0)
474 return siu;
475 BUG_ON(siu > 2);
476 r = ctrl_inl(sh7722_siu_regs[siu]);
477 div = sh7722_find_divisors(clk->parent->rate, rate);
478 if (div < 0)
479 return div;
480 r = (r & ~0xF) | div;
481 ctrl_outl(r, sh7722_siu_regs[siu]);
482 return 0;
483}
484
485static void sh7722_siu_recalc(struct clk *clk)
486{
487 int siu = sh7722_siu_which(clk);
488 unsigned long r;
489
490 if (siu < 0)
491 return /* siu */ ;
492 BUG_ON(siu > 1);
493 r = ctrl_inl(sh7722_siu_regs[siu]);
494 clk->rate = clk->parent->rate * 2 / divisors2[r & 0xF];
495}
496
497static struct clk_ops sh7722_siu_clk_ops = {
498 .recalc = sh7722_siu_recalc,
499 .set_rate = sh7722_siu_set_rate,
500 .enable = sh7722_siu_enable,
501 .disable = sh7722_siu_disable,
502};
503
504static struct clk_ops sh7722_video_clk_ops = {
505 .recalc = sh7722_video_recalc,
506 .set_rate = sh7722_video_set_rate,
507 .enable = sh7722_video_enable,
508 .disable = sh7722_video_disable,
509};
510/*
511 * and at last, clock definitions themselves
512 */
513static struct clk sh7722_umem_clock = {
514 .name = "umem_clk",
515 .ops = &sh7722_frqcr_clk_ops,
516};
517
518static struct clk sh7722_sh_clock = {
519 .name = "sh_clk",
520 .ops = &sh7722_frqcr_clk_ops,
521};
522
523static struct clk sh7722_peripheral_clock = {
524 .name = "peripheral_clk",
525 .ops = &sh7722_frqcr_clk_ops,
526};
527
528static struct clk sh7722_sdram_clock = {
529 .name = "sdram_clk",
530 .ops = &sh7722_frqcr_clk_ops,
531};
532
533/*
534 * these three clocks - SIU A, SIU B, IrDA - share the same clk_ops
535 * methods of clk_ops determine which register they should access by
536 * examining clk->name field
537 */
538static struct clk sh7722_siu_a_clock = {
539 .name = "siu_a_clk",
540 .ops = &sh7722_siu_clk_ops,
541};
542
543static struct clk sh7722_siu_b_clock = {
544 .name = "siu_b_clk",
545 .ops = &sh7722_siu_clk_ops,
546};
547
548static struct clk sh7722_irda_clock = {
549 .name = "irda_clk",
550 .ops = &sh7722_siu_clk_ops,
551};
552
553static struct clk sh7722_video_clock = {
554 .name = "video_clk",
555 .ops = &sh7722_video_clk_ops,
556};
557
558static struct clk *sh7722_clocks[] = {
559 &sh7722_umem_clock,
560 &sh7722_sh_clock,
561 &sh7722_peripheral_clock,
562 &sh7722_sdram_clock,
563 &sh7722_siu_a_clock,
564 &sh7722_siu_b_clock,
565 &sh7722_irda_clock,
566 &sh7722_video_clock,
567};
568
569/*
570 * init in order: master, module, bus, cpu
571 */
572struct clk_ops *onchip_ops[] = {
573 &sh7722_master_clk_ops,
574 &sh7722_frqcr_clk_ops,
575 &sh7722_frqcr_clk_ops,
576 &sh7722_frqcr_clk_ops,
577};
578
579void __init
580arch_init_clk_ops(struct clk_ops **ops, int type)
581{
582 BUG_ON(type < 0 || type > ARRAY_SIZE(onchip_ops));
583 *ops = onchip_ops[type];
584}
585
586int __init sh7722_clock_init(void)
587{
588 struct clk *master;
589 int i;
590
591 master = clk_get(NULL, "master_clk");
592 for (i = 0; i < ARRAY_SIZE(sh7722_clocks); i++) {
593 pr_debug( "Registering clock '%s'\n", sh7722_clocks[i]->name);
594 sh7722_clocks[i]->parent = master;
595 clk_register(sh7722_clocks[i]);
596 }
597 clk_put(master);
598 return 0;
599}
600arch_initcall(sh7722_clock_init);
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7785.c b/arch/sh/kernel/cpu/sh4a/clock-sh7785.c
new file mode 100644
index 000000000000..805535aa505e
--- /dev/null
+++ b/arch/sh/kernel/cpu/sh4a/clock-sh7785.c
@@ -0,0 +1,162 @@
1/*
2 * arch/sh/kernel/cpu/sh4a/clock-sh7785.c
3 *
4 * SH7785 support for the clock framework
5 *
6 * Copyright (C) 2007 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 <asm/clock.h>
15#include <asm/freq.h>
16#include <asm/io.h>
17
18static int ifc_divisors[] = { 1, 2, 4, 6 };
19static int ufc_divisors[] = { 1, 1, 4, 6 };
20static int sfc_divisors[] = { 1, 1, 4, 6 };
21static int bfc_divisors[] = { 1, 1, 1, 1, 1, 12, 16, 18,
22 24, 32, 36, 48, 1, 1, 1, 1 };
23static int mfc_divisors[] = { 1, 1, 4, 6 };
24static int pfc_divisors[] = { 1, 1, 1, 1, 1, 1, 1, 18,
25 24, 32, 36, 48, 1, 1, 1, 1 };
26
27static void master_clk_init(struct clk *clk)
28{
29 clk->rate *= 36;
30}
31
32static struct clk_ops sh7785_master_clk_ops = {
33 .init = master_clk_init,
34};
35
36static void module_clk_recalc(struct clk *clk)
37{
38 int idx = (ctrl_inl(FRQMR1) & 0x000f);
39 clk->rate = clk->parent->rate / pfc_divisors[idx];
40}
41
42static struct clk_ops sh7785_module_clk_ops = {
43 .recalc = module_clk_recalc,
44};
45
46static void bus_clk_recalc(struct clk *clk)
47{
48 int idx = ((ctrl_inl(FRQMR1) >> 16) & 0x000f);
49 clk->rate = clk->parent->rate / bfc_divisors[idx];
50}
51
52static struct clk_ops sh7785_bus_clk_ops = {
53 .recalc = bus_clk_recalc,
54};
55
56static void cpu_clk_recalc(struct clk *clk)
57{
58 int idx = ((ctrl_inl(FRQMR1) >> 28) & 0x0003);
59 clk->rate = clk->parent->rate / ifc_divisors[idx];
60}
61
62static struct clk_ops sh7785_cpu_clk_ops = {
63 .recalc = cpu_clk_recalc,
64};
65
66static struct clk_ops *sh7785_clk_ops[] = {
67 &sh7785_master_clk_ops,
68 &sh7785_module_clk_ops,
69 &sh7785_bus_clk_ops,
70 &sh7785_cpu_clk_ops,
71};
72
73void __init arch_init_clk_ops(struct clk_ops **ops, int idx)
74{
75 if (idx < ARRAY_SIZE(sh7785_clk_ops))
76 *ops = sh7785_clk_ops[idx];
77}
78
79static void shyway_clk_recalc(struct clk *clk)
80{
81 int idx = ((ctrl_inl(FRQMR1) >> 20) & 0x0003);
82 clk->rate = clk->parent->rate / sfc_divisors[idx];
83}
84
85static struct clk_ops sh7785_shyway_clk_ops = {
86 .recalc = shyway_clk_recalc,
87};
88
89static struct clk sh7785_shyway_clk = {
90 .name = "shyway_clk",
91 .flags = CLK_ALWAYS_ENABLED,
92 .ops = &sh7785_shyway_clk_ops,
93};
94
95static void ddr_clk_recalc(struct clk *clk)
96{
97 int idx = ((ctrl_inl(FRQMR1) >> 12) & 0x0003);
98 clk->rate = clk->parent->rate / mfc_divisors[idx];
99}
100
101static struct clk_ops sh7785_ddr_clk_ops = {
102 .recalc = ddr_clk_recalc,
103};
104
105static struct clk sh7785_ddr_clk = {
106 .name = "ddr_clk",
107 .flags = CLK_ALWAYS_ENABLED,
108 .ops = &sh7785_ddr_clk_ops,
109};
110
111static void ram_clk_recalc(struct clk *clk)
112{
113 int idx = ((ctrl_inl(FRQMR1) >> 24) & 0x0003);
114 clk->rate = clk->parent->rate / ufc_divisors[idx];
115}
116
117static struct clk_ops sh7785_ram_clk_ops = {
118 .recalc = ram_clk_recalc,
119};
120
121static struct clk sh7785_ram_clk = {
122 .name = "ram_clk",
123 .flags = CLK_ALWAYS_ENABLED,
124 .ops = &sh7785_ram_clk_ops,
125};
126
127/*
128 * Additional SH7785-specific on-chip clocks that aren't already part of the
129 * clock framework
130 */
131static struct clk *sh7785_onchip_clocks[] = {
132 &sh7785_shyway_clk,
133 &sh7785_ddr_clk,
134 &sh7785_ram_clk,
135};
136
137static int __init sh7785_clk_init(void)
138{
139 struct clk *clk = clk_get(NULL, "master_clk");
140 int i;
141
142 for (i = 0; i < ARRAY_SIZE(sh7785_onchip_clocks); i++) {
143 struct clk *clkp = sh7785_onchip_clocks[i];
144
145 clkp->parent = clk;
146 clk_register(clkp);
147 clk_enable(clkp);
148 }
149
150 /*
151 * Now that we have the rest of the clocks registered, we need to
152 * force the parent clock to propagate so that these clocks will
153 * automatically figure out their rate. We cheat by handing the
154 * parent clock its current rate and forcing child propagation.
155 */
156 clk_set_rate(clk, clk_get_rate(clk));
157
158 clk_put(clk);
159
160 return 0;
161}
162arch_initcall(sh7785_clk_init);
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7785.c b/arch/sh/kernel/cpu/sh4a/setup-sh7785.c
new file mode 100644
index 000000000000..07b0de82cfe6
--- /dev/null
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7785.c
@@ -0,0 +1,103 @@
1/*
2 * SH7785 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 <asm/sci.h>
14
15static struct plat_sci_port sci_platform_data[] = {
16 {
17 .mapbase = 0xffea0000,
18 .flags = UPF_BOOT_AUTOCONF,
19 .type = PORT_SCIF,
20 .irqs = { 40, 41, 43, 42 },
21 }, {
22 .mapbase = 0xffeb0000,
23 .flags = UPF_BOOT_AUTOCONF,
24 .type = PORT_SCIF,
25 .irqs = { 44, 45, 47, 46 },
26 },
27
28 /*
29 * The rest of these all have multiplexed IRQs
30 */
31 {
32 .mapbase = 0xffec0000,
33 .flags = UPF_BOOT_AUTOCONF,
34 .type = PORT_SCIF,
35 .irqs = { 60, 60, 60, 60 },
36 }, {
37 .mapbase = 0xffed0000,
38 .flags = UPF_BOOT_AUTOCONF,
39 .type = PORT_SCIF,
40 .irqs = { 61, 61, 61, 61 },
41 }, {
42 .mapbase = 0xffee0000,
43 .flags = UPF_BOOT_AUTOCONF,
44 .type = PORT_SCIF,
45 .irqs = { 62, 62, 62, 62 },
46 }, {
47 .mapbase = 0xffef0000,
48 .flags = UPF_BOOT_AUTOCONF,
49 .type = PORT_SCIF,
50 .irqs = { 63, 63, 63, 63 },
51 }, {
52 .flags = 0,
53 }
54};
55
56static struct platform_device sci_device = {
57 .name = "sh-sci",
58 .id = -1,
59 .dev = {
60 .platform_data = sci_platform_data,
61 },
62};
63
64static struct platform_device *sh7785_devices[] __initdata = {
65 &sci_device,
66};
67
68static int __init sh7785_devices_setup(void)
69{
70 return platform_add_devices(sh7785_devices,
71 ARRAY_SIZE(sh7785_devices));
72}
73__initcall(sh7785_devices_setup);
74
75static struct intc2_data intc2_irq_table[] = {
76 { 28, 0, 24, 0, 0, 2 }, /* TMU0 */
77
78 { 40, 8, 24, 0, 2, 3 }, /* SCIF0 ERI */
79 { 41, 8, 24, 0, 2, 3 }, /* SCIF0 RXI */
80 { 42, 8, 24, 0, 2, 3 }, /* SCIF0 BRI */
81 { 43, 8, 24, 0, 2, 3 }, /* SCIF0 TXI */
82
83 { 44, 8, 16, 0, 3, 3 }, /* SCIF1 ERI */
84 { 45, 8, 16, 0, 3, 3 }, /* SCIF1 RXI */
85 { 46, 8, 16, 0, 3, 3 }, /* SCIF1 BRI */
86 { 47, 8, 16, 0, 3, 3 }, /* SCIF1 TXI */
87
88 { 64, 0x14, 8, 0, 14, 2 }, /* PCIC0 */
89 { 65, 0x14, 0, 0, 15, 2 }, /* PCIC1 */
90 { 66, 0x18, 24, 0, 16, 2 }, /* PCIC2 */
91 { 67, 0x18, 16, 0, 17, 2 }, /* PCIC3 */
92 { 68, 0x18, 8, 0, 18, 2 }, /* PCIC4 */
93
94 { 60, 8, 8, 0, 4, 3 }, /* SCIF2 ERI, RXI, BRI, TXI */
95 { 60, 8, 0, 0, 5, 3 }, /* SCIF3 ERI, RXI, BRI, TXI */
96 { 60, 12, 24, 0, 6, 3 }, /* SCIF4 ERI, RXI, BRI, TXI */
97 { 60, 12, 16, 0, 7, 3 }, /* SCIF5 ERI, RXI, BRI, TXI */
98};
99
100void __init init_IRQ_intc2(void)
101{
102 make_intc2_irq(intc2_irq_table, ARRAY_SIZE(intc2_irq_table));
103}
diff --git a/arch/sh/kernel/crash_dump.c b/arch/sh/kernel/crash_dump.c
new file mode 100644
index 000000000000..4a2ecbe27d8e
--- /dev/null
+++ b/arch/sh/kernel/crash_dump.c
@@ -0,0 +1,46 @@
1/*
2 * crash_dump.c - Memory preserving reboot related code.
3 *
4 * Created by: Hariprasad Nellitheertha (hari@in.ibm.com)
5 * Copyright (C) IBM Corporation, 2004. All rights reserved
6 */
7
8#include <linux/errno.h>
9#include <linux/crash_dump.h>
10#include <linux/io.h>
11#include <asm/uaccess.h>
12
13/**
14 * copy_oldmem_page - copy one page from "oldmem"
15 * @pfn: page frame number to be copied
16 * @buf: target memory address for the copy; this can be in kernel address
17 * space or user address space (see @userbuf)
18 * @csize: number of bytes to copy
19 * @offset: offset in bytes into the page (based on pfn) to begin the copy
20 * @userbuf: if set, @buf is in user address space, use copy_to_user(),
21 * otherwise @buf is in kernel address space, use memcpy().
22 *
23 * Copy a page from "oldmem". For this page, there is no pte mapped
24 * in the current kernel. We stitch up a pte, similar to kmap_atomic.
25 */
26ssize_t copy_oldmem_page(unsigned long pfn, char *buf,
27 size_t csize, unsigned long offset, int userbuf)
28{
29 void *vaddr;
30
31 if (!csize)
32 return 0;
33
34 vaddr = ioremap(pfn << PAGE_SHIFT, PAGE_SIZE);
35
36 if (userbuf) {
37 if (copy_to_user(buf, (vaddr + offset), csize)) {
38 iounmap(vaddr);
39 return -EFAULT;
40 }
41 } else
42 memcpy(buf, (vaddr + offset), csize);
43
44 iounmap(vaddr);
45 return csize;
46}
diff --git a/arch/sh/kernel/irq.c b/arch/sh/kernel/irq.c
index 9bdd8a00cd4a..27b923c45b3d 100644
--- a/arch/sh/kernel/irq.c
+++ b/arch/sh/kernel/irq.c
@@ -13,6 +13,7 @@
13#include <linux/seq_file.h> 13#include <linux/seq_file.h>
14#include <linux/irq.h> 14#include <linux/irq.h>
15#include <asm/processor.h> 15#include <asm/processor.h>
16#include <asm/machvec.h>
16#include <asm/uaccess.h> 17#include <asm/uaccess.h>
17#include <asm/thread_info.h> 18#include <asm/thread_info.h>
18#include <asm/cpu/mmu_context.h> 19#include <asm/cpu/mmu_context.h>
@@ -44,7 +45,7 @@ int show_interrupts(struct seq_file *p, void *v)
44 seq_putc(p, '\n'); 45 seq_putc(p, '\n');
45 } 46 }
46 47
47 if (i < NR_IRQS) { 48 if (i < sh_mv.mv_nr_irqs) {
48 spin_lock_irqsave(&irq_desc[i].lock, flags); 49 spin_lock_irqsave(&irq_desc[i].lock, flags);
49 action = irq_desc[i].action; 50 action = irq_desc[i].action;
50 if (!action) 51 if (!action)
@@ -61,7 +62,7 @@ int show_interrupts(struct seq_file *p, void *v)
61 seq_putc(p, '\n'); 62 seq_putc(p, '\n');
62unlock: 63unlock:
63 spin_unlock_irqrestore(&irq_desc[i].lock, flags); 64 spin_unlock_irqrestore(&irq_desc[i].lock, flags);
64 } else if (i == NR_IRQS) 65 } else if (i == sh_mv.mv_nr_irqs)
65 seq_printf(p, "Err: %10u\n", atomic_read(&irq_err_count)); 66 seq_printf(p, "Err: %10u\n", atomic_read(&irq_err_count));
66 67
67 return 0; 68 return 0;
diff --git a/arch/sh/kernel/kgdb_stub.c b/arch/sh/kernel/kgdb_stub.c
index d8927d85492e..a5323364cbca 100644
--- a/arch/sh/kernel/kgdb_stub.c
+++ b/arch/sh/kernel/kgdb_stub.c
@@ -6,11 +6,11 @@
6 * David Grothe <dave@gcom.com>, Tigran Aivazian <tigran@sco.com>, 6 * David Grothe <dave@gcom.com>, Tigran Aivazian <tigran@sco.com>,
7 * Amit S. Kale <akale@veritas.com>, William Gatliff <bgat@open-widgets.com>, 7 * Amit S. Kale <akale@veritas.com>, William Gatliff <bgat@open-widgets.com>,
8 * Ben Lee, Steve Chamberlain and Benoit Miller <fulg@iname.com>. 8 * Ben Lee, Steve Chamberlain and Benoit Miller <fulg@iname.com>.
9 * 9 *
10 * This version by Henry Bell <henry.bell@st.com> 10 * This version by Henry Bell <henry.bell@st.com>
11 * Minor modifications by Jeremy Siegel <jsiegel@mvista.com> 11 * Minor modifications by Jeremy Siegel <jsiegel@mvista.com>
12 * 12 *
13 * Contains low-level support for remote debug using GDB. 13 * Contains low-level support for remote debug using GDB.
14 * 14 *
15 * To enable debugger support, two things need to happen. A call to 15 * To enable debugger support, two things need to happen. A call to
16 * set_debug_traps() is necessary in order to allow any breakpoints 16 * set_debug_traps() is necessary in order to allow any breakpoints
@@ -48,7 +48,7 @@
48 * k kill (Detach GDB) 48 * k kill (Detach GDB)
49 * 49 *
50 * d Toggle debug flag 50 * d Toggle debug flag
51 * D Detach GDB 51 * D Detach GDB
52 * 52 *
53 * Hct Set thread t for operations, OK or ENN 53 * Hct Set thread t for operations, OK or ENN
54 * c = 'c' (step, cont), c = 'g' (other 54 * c = 'c' (step, cont), c = 'g' (other
@@ -58,7 +58,7 @@
58 * qfThreadInfo Get list of current threads (first) m<id> 58 * qfThreadInfo Get list of current threads (first) m<id>
59 * qsThreadInfo " " " " " (subsequent) 59 * qsThreadInfo " " " " " (subsequent)
60 * qOffsets Get section offsets Text=x;Data=y;Bss=z 60 * qOffsets Get section offsets Text=x;Data=y;Bss=z
61 * 61 *
62 * TXX Find if thread XX is alive OK or ENN 62 * TXX Find if thread XX is alive OK or ENN
63 * ? What was the last sigval ? SNN (signal NN) 63 * ? What was the last sigval ? SNN (signal NN)
64 * O Output to GDB console 64 * O Output to GDB console
@@ -74,7 +74,7 @@
74 * '$' or '#'. If <data> starts with two characters followed by 74 * '$' or '#'. If <data> starts with two characters followed by
75 * ':', then the existing stubs interpret this as a sequence number. 75 * ':', then the existing stubs interpret this as a sequence number.
76 * 76 *
77 * CSUM1 and CSUM2 are ascii hex representation of an 8-bit 77 * CSUM1 and CSUM2 are ascii hex representation of an 8-bit
78 * checksum of <data>, the most significant nibble is sent first. 78 * checksum of <data>, the most significant nibble is sent first.
79 * the hex digits 0-9,a-f are used. 79 * the hex digits 0-9,a-f are used.
80 * 80 *
@@ -86,8 +86,8 @@
86 * Responses can be run-length encoded to save space. A '*' means that 86 * Responses can be run-length encoded to save space. A '*' means that
87 * the next character is an ASCII encoding giving a repeat count which 87 * the next character is an ASCII encoding giving a repeat count which
88 * stands for that many repititions of the character preceding the '*'. 88 * stands for that many repititions of the character preceding the '*'.
89 * The encoding is n+29, yielding a printable character where n >=3 89 * The encoding is n+29, yielding a printable character where n >=3
90 * (which is where RLE starts to win). Don't use an n > 126. 90 * (which is where RLE starts to win). Don't use an n > 126.
91 * 91 *
92 * So "0* " means the same as "0000". 92 * So "0* " means the same as "0000".
93 */ 93 */
@@ -100,12 +100,10 @@
100#include <linux/delay.h> 100#include <linux/delay.h>
101#include <linux/linkage.h> 101#include <linux/linkage.h>
102#include <linux/init.h> 102#include <linux/init.h>
103
104#ifdef CONFIG_SH_KGDB_CONSOLE
105#include <linux/console.h> 103#include <linux/console.h>
106#endif 104#include <linux/sysrq.h>
107
108#include <asm/system.h> 105#include <asm/system.h>
106#include <asm/cacheflush.h>
109#include <asm/current.h> 107#include <asm/current.h>
110#include <asm/signal.h> 108#include <asm/signal.h>
111#include <asm/pgtable.h> 109#include <asm/pgtable.h>
@@ -153,7 +151,6 @@ char kgdb_in_gdb_mode;
153char in_nmi; /* Set during NMI to prevent reentry */ 151char in_nmi; /* Set during NMI to prevent reentry */
154int kgdb_nofault; /* Boolean to ignore bus errs (i.e. in GDB) */ 152int kgdb_nofault; /* Boolean to ignore bus errs (i.e. in GDB) */
155int kgdb_enabled = 1; /* Default to enabled, cmdline can disable */ 153int kgdb_enabled = 1; /* Default to enabled, cmdline can disable */
156int kgdb_halt;
157 154
158/* Exposed for user access */ 155/* Exposed for user access */
159struct task_struct *kgdb_current; 156struct task_struct *kgdb_current;
@@ -246,14 +243,6 @@ static char out_buffer[OUTBUFMAX];
246 243
247static void kgdb_to_gdb(const char *s); 244static void kgdb_to_gdb(const char *s);
248 245
249#ifdef CONFIG_KGDB_THREAD
250static struct task_struct *trapped_thread;
251static struct task_struct *current_thread;
252typedef unsigned char threadref[8];
253#define BUF_THREAD_ID_SIZE 16
254#endif
255
256
257/* Convert ch to hex */ 246/* Convert ch to hex */
258static int hex(const char ch) 247static int hex(const char ch)
259{ 248{
@@ -328,7 +317,7 @@ static int hex_to_int(char **ptr, int *int_value)
328} 317}
329 318
330/* Copy the binary array pointed to by buf into mem. Fix $, #, 319/* Copy the binary array pointed to by buf into mem. Fix $, #,
331 and 0x7d escaped with 0x7d. Return a pointer to the character 320 and 0x7d escaped with 0x7d. Return a pointer to the character
332 after the last byte written. */ 321 after the last byte written. */
333static char *ebin_to_mem(const char *buf, char *mem, int count) 322static char *ebin_to_mem(const char *buf, char *mem, int count)
334{ 323{
@@ -349,66 +338,6 @@ static char *pack_hex_byte(char *pkt, int byte)
349 return pkt; 338 return pkt;
350} 339}
351 340
352#ifdef CONFIG_KGDB_THREAD
353
354/* Pack a thread ID */
355static char *pack_threadid(char *pkt, threadref * id)
356{
357 char *limit;
358 unsigned char *altid;
359
360 altid = (unsigned char *) id;
361
362 limit = pkt + BUF_THREAD_ID_SIZE;
363 while (pkt < limit)
364 pkt = pack_hex_byte(pkt, *altid++);
365 return pkt;
366}
367
368/* Convert an integer into our threadref */
369static void int_to_threadref(threadref * id, const int value)
370{
371 unsigned char *scan = (unsigned char *) id;
372 int i = 4;
373
374 while (i--)
375 *scan++ = 0;
376
377 *scan++ = (value >> 24) & 0xff;
378 *scan++ = (value >> 16) & 0xff;
379 *scan++ = (value >> 8) & 0xff;
380 *scan++ = (value & 0xff);
381}
382
383/* Return a task structure ptr for a particular pid */
384static struct task_struct *get_thread(int pid)
385{
386 struct task_struct *thread;
387
388 /* Use PID_MAX w/gdb for pid 0 */
389 if (pid == PID_MAX) pid = 0;
390
391 /* First check via PID */
392 thread = find_task_by_pid(pid);
393
394 if (thread)
395 return thread;
396
397 /* Start at the start */
398 thread = init_tasks[0];
399
400 /* Walk along the linked list of tasks */
401 do {
402 if (thread->pid == pid)
403 return thread;
404 thread = thread->next_task;
405 } while (thread != init_tasks[0]);
406
407 return NULL;
408}
409
410#endif /* CONFIG_KGDB_THREAD */
411
412/* Scan for the start char '$', read the packet and check the checksum */ 341/* Scan for the start char '$', read the packet and check the checksum */
413static void get_packet(char *buffer, int buflen) 342static void get_packet(char *buffer, int buflen)
414{ 343{
@@ -452,7 +381,7 @@ static void get_packet(char *buffer, int buflen)
452 /* Ack successful transfer */ 381 /* Ack successful transfer */
453 put_debug_char('+'); 382 put_debug_char('+');
454 383
455 /* If a sequence char is present, reply 384 /* If a sequence char is present, reply
456 the sequence ID */ 385 the sequence ID */
457 if (buffer[2] == ':') { 386 if (buffer[2] == ':') {
458 put_debug_char(buffer[0]); 387 put_debug_char(buffer[0]);
@@ -611,74 +540,6 @@ static void gdb_regs_to_kgdb_regs(const int *gdb_regs,
611 regs->vbr = gdb_regs[VBR]; 540 regs->vbr = gdb_regs[VBR];
612} 541}
613 542
614#ifdef CONFIG_KGDB_THREAD
615/* Make a local copy of registers from the specified thread */
616asmlinkage void ret_from_fork(void);
617static void thread_regs_to_gdb_regs(const struct task_struct *thread,
618 int *gdb_regs)
619{
620 int regno;
621 int *tregs;
622
623 /* Initialize to zero */
624 for (regno = 0; regno < MAXREG; regno++)
625 gdb_regs[regno] = 0;
626
627 /* Just making sure... */
628 if (thread == NULL)
629 return;
630
631 /* A new fork has pt_regs on the stack from a fork() call */
632 if (thread->thread.pc == (unsigned long)ret_from_fork) {
633
634 int vbr_val;
635 struct pt_regs *kregs;
636 kregs = (struct pt_regs*)thread->thread.sp;
637
638 gdb_regs[R0] = kregs->regs[R0];
639 gdb_regs[R1] = kregs->regs[R1];
640 gdb_regs[R2] = kregs->regs[R2];
641 gdb_regs[R3] = kregs->regs[R3];
642 gdb_regs[R4] = kregs->regs[R4];
643 gdb_regs[R5] = kregs->regs[R5];
644 gdb_regs[R6] = kregs->regs[R6];
645 gdb_regs[R7] = kregs->regs[R7];
646 gdb_regs[R8] = kregs->regs[R8];
647 gdb_regs[R9] = kregs->regs[R9];
648 gdb_regs[R10] = kregs->regs[R10];
649 gdb_regs[R11] = kregs->regs[R11];
650 gdb_regs[R12] = kregs->regs[R12];
651 gdb_regs[R13] = kregs->regs[R13];
652 gdb_regs[R14] = kregs->regs[R14];
653 gdb_regs[R15] = kregs->regs[R15];
654 gdb_regs[PC] = kregs->pc;
655 gdb_regs[PR] = kregs->pr;
656 gdb_regs[GBR] = kregs->gbr;
657 gdb_regs[MACH] = kregs->mach;
658 gdb_regs[MACL] = kregs->macl;
659 gdb_regs[SR] = kregs->sr;
660
661 asm("stc vbr, %0":"=r"(vbr_val));
662 gdb_regs[VBR] = vbr_val;
663 return;
664 }
665
666 /* Otherwise, we have only some registers from switch_to() */
667 tregs = (int *)thread->thread.sp;
668 gdb_regs[R15] = (int)tregs;
669 gdb_regs[R14] = *tregs++;
670 gdb_regs[R13] = *tregs++;
671 gdb_regs[R12] = *tregs++;
672 gdb_regs[R11] = *tregs++;
673 gdb_regs[R10] = *tregs++;
674 gdb_regs[R9] = *tregs++;
675 gdb_regs[R8] = *tregs++;
676 gdb_regs[PR] = *tregs++;
677 gdb_regs[GBR] = *tregs++;
678 gdb_regs[PC] = thread->thread.pc;
679}
680#endif /* CONFIG_KGDB_THREAD */
681
682/* Calculate the new address for after a step */ 543/* Calculate the new address for after a step */
683static short *get_step_address(void) 544static short *get_step_address(void)
684{ 545{
@@ -759,7 +620,7 @@ static short *get_step_address(void)
759 return (short *) addr; 620 return (short *) addr;
760} 621}
761 622
762/* Set up a single-step. Replace the instruction immediately after the 623/* Set up a single-step. Replace the instruction immediately after the
763 current instruction (i.e. next in the expected flow of control) with a 624 current instruction (i.e. next in the expected flow of control) with a
764 trap instruction, so that returning will cause only a single instruction 625 trap instruction, so that returning will cause only a single instruction
765 to be executed. Note that this model is slightly broken for instructions 626 to be executed. Note that this model is slightly broken for instructions
@@ -797,37 +658,11 @@ static void undo_single_step(void)
797/* Send a signal message */ 658/* Send a signal message */
798static void send_signal_msg(const int signum) 659static void send_signal_msg(const int signum)
799{ 660{
800#ifndef CONFIG_KGDB_THREAD
801 out_buffer[0] = 'S'; 661 out_buffer[0] = 'S';
802 out_buffer[1] = highhex(signum); 662 out_buffer[1] = highhex(signum);
803 out_buffer[2] = lowhex(signum); 663 out_buffer[2] = lowhex(signum);
804 out_buffer[3] = 0; 664 out_buffer[3] = 0;
805 put_packet(out_buffer); 665 put_packet(out_buffer);
806#else /* CONFIG_KGDB_THREAD */
807 int threadid;
808 threadref thref;
809 char *out = out_buffer;
810 const char *tstring = "thread";
811
812 *out++ = 'T';
813 *out++ = highhex(signum);
814 *out++ = lowhex(signum);
815
816 while (*tstring) {
817 *out++ = *tstring++;
818 }
819 *out++ = ':';
820
821 threadid = trapped_thread->pid;
822 if (threadid == 0) threadid = PID_MAX;
823 int_to_threadref(&thref, threadid);
824 pack_threadid(out, &thref);
825 out += BUF_THREAD_ID_SIZE;
826 *out++ = ';';
827
828 *out = 0;
829 put_packet(out_buffer);
830#endif /* CONFIG_KGDB_THREAD */
831} 666}
832 667
833/* Reply that all was well */ 668/* Reply that all was well */
@@ -962,15 +797,7 @@ static void step_with_sig_msg(void)
962/* Send register contents */ 797/* Send register contents */
963static void send_regs_msg(void) 798static void send_regs_msg(void)
964{ 799{
965#ifdef CONFIG_KGDB_THREAD
966 if (!current_thread)
967 kgdb_regs_to_gdb_regs(&trap_registers, registers);
968 else
969 thread_regs_to_gdb_regs(current_thread, registers);
970#else
971 kgdb_regs_to_gdb_regs(&trap_registers, registers); 800 kgdb_regs_to_gdb_regs(&trap_registers, registers);
972#endif
973
974 mem_to_hex((char *) registers, out_buffer, NUMREGBYTES); 801 mem_to_hex((char *) registers, out_buffer, NUMREGBYTES);
975 put_packet(out_buffer); 802 put_packet(out_buffer);
976} 803}
@@ -978,201 +805,13 @@ static void send_regs_msg(void)
978/* Set register contents - currently can't set other thread's registers */ 805/* Set register contents - currently can't set other thread's registers */
979static void set_regs_msg(void) 806static void set_regs_msg(void)
980{ 807{
981#ifdef CONFIG_KGDB_THREAD 808 kgdb_regs_to_gdb_regs(&trap_registers, registers);
982 if (!current_thread) { 809 hex_to_mem(&in_buffer[1], (char *) registers, NUMREGBYTES);
983#endif 810 gdb_regs_to_kgdb_regs(registers, &trap_registers);
984 kgdb_regs_to_gdb_regs(&trap_registers, registers); 811 send_ok_msg();
985 hex_to_mem(&in_buffer[1], (char *) registers, NUMREGBYTES);
986 gdb_regs_to_kgdb_regs(registers, &trap_registers);
987 send_ok_msg();
988#ifdef CONFIG_KGDB_THREAD
989 } else
990 send_err_msg();
991#endif
992}
993
994
995#ifdef CONFIG_KGDB_THREAD
996
997/* Set the status for a thread */
998void set_thread_msg(void)
999{
1000 int threadid;
1001 struct task_struct *thread = NULL;
1002 char *ptr;
1003
1004 switch (in_buffer[1]) {
1005
1006 /* To select which thread for gG etc messages, i.e. supported */
1007 case 'g':
1008
1009 ptr = &in_buffer[2];
1010 hex_to_int(&ptr, &threadid);
1011 thread = get_thread(threadid);
1012
1013 /* If we haven't found it */
1014 if (!thread) {
1015 send_err_msg();
1016 break;
1017 }
1018
1019 /* Set current_thread (or not) */
1020 if (thread == trapped_thread)
1021 current_thread = NULL;
1022 else
1023 current_thread = thread;
1024 send_ok_msg();
1025 break;
1026
1027 /* To select which thread for cCsS messages, i.e. unsupported */
1028 case 'c':
1029 send_ok_msg();
1030 break;
1031
1032 default:
1033 send_empty_msg();
1034 break;
1035 }
1036}
1037
1038/* Is a thread alive? */
1039static void thread_status_msg(void)
1040{
1041 char *ptr;
1042 int threadid;
1043 struct task_struct *thread = NULL;
1044
1045 ptr = &in_buffer[1];
1046 hex_to_int(&ptr, &threadid);
1047 thread = get_thread(threadid);
1048 if (thread)
1049 send_ok_msg();
1050 else
1051 send_err_msg();
1052}
1053/* Send the current thread ID */
1054static void thread_id_msg(void)
1055{
1056 int threadid;
1057 threadref thref;
1058
1059 out_buffer[0] = 'Q';
1060 out_buffer[1] = 'C';
1061
1062 if (current_thread)
1063 threadid = current_thread->pid;
1064 else if (trapped_thread)
1065 threadid = trapped_thread->pid;
1066 else /* Impossible, but just in case! */
1067 {
1068 send_err_msg();
1069 return;
1070 }
1071
1072 /* Translate pid 0 to PID_MAX for gdb */
1073 if (threadid == 0) threadid = PID_MAX;
1074
1075 int_to_threadref(&thref, threadid);
1076 pack_threadid(out_buffer + 2, &thref);
1077 out_buffer[2 + BUF_THREAD_ID_SIZE] = '\0';
1078 put_packet(out_buffer);
1079}
1080
1081/* Send thread info */
1082static void thread_info_msg(void)
1083{
1084 struct task_struct *thread = NULL;
1085 int threadid;
1086 char *pos;
1087 threadref thref;
1088
1089 /* Start with 'm' */
1090 out_buffer[0] = 'm';
1091 pos = &out_buffer[1];
1092
1093 /* For all possible thread IDs - this will overrun if > 44 threads! */
1094 /* Start at 1 and include PID_MAX (since GDB won't use pid 0...) */
1095 for (threadid = 1; threadid <= PID_MAX; threadid++) {
1096
1097 read_lock(&tasklist_lock);
1098 thread = get_thread(threadid);
1099 read_unlock(&tasklist_lock);
1100
1101 /* If it's a valid thread */
1102 if (thread) {
1103 int_to_threadref(&thref, threadid);
1104 pack_threadid(pos, &thref);
1105 pos += BUF_THREAD_ID_SIZE;
1106 *pos++ = ',';
1107 }
1108 }
1109 *--pos = 0; /* Lose final comma */
1110 put_packet(out_buffer);
1111
1112}
1113
1114/* Return printable info for gdb's 'info threads' command */
1115static void thread_extra_info_msg(void)
1116{
1117 int threadid;
1118 struct task_struct *thread = NULL;
1119 char buffer[20], *ptr;
1120 int i;
1121
1122 /* Extract thread ID */
1123 ptr = &in_buffer[17];
1124 hex_to_int(&ptr, &threadid);
1125 thread = get_thread(threadid);
1126
1127 /* If we don't recognise it, say so */
1128 if (thread == NULL)
1129 strcpy(buffer, "(unknown)");
1130 else
1131 strcpy(buffer, thread->comm);
1132
1133 /* Construct packet */
1134 for (i = 0, ptr = out_buffer; buffer[i]; i++)
1135 ptr = pack_hex_byte(ptr, buffer[i]);
1136
1137 if (thread->thread.pc == (unsigned long)ret_from_fork) {
1138 strcpy(buffer, "<new fork>");
1139 for (i = 0; buffer[i]; i++)
1140 ptr = pack_hex_byte(ptr, buffer[i]);
1141 }
1142
1143 *ptr = '\0';
1144 put_packet(out_buffer);
1145}
1146
1147/* Handle all qFooBarBaz messages - have to use an if statement as
1148 opposed to a switch because q messages can have > 1 char id. */
1149static void query_msg(void)
1150{
1151 const char *q_start = &in_buffer[1];
1152
1153 /* qC = return current thread ID */
1154 if (strncmp(q_start, "C", 1) == 0)
1155 thread_id_msg();
1156
1157 /* qfThreadInfo = query all threads (first) */
1158 else if (strncmp(q_start, "fThreadInfo", 11) == 0)
1159 thread_info_msg();
1160
1161 /* qsThreadInfo = query all threads (subsequent). We know we have sent
1162 them all after the qfThreadInfo message, so there are no to send */
1163 else if (strncmp(q_start, "sThreadInfo", 11) == 0)
1164 put_packet("l"); /* el = last */
1165
1166 /* qThreadExtraInfo = supply printable information per thread */
1167 else if (strncmp(q_start, "ThreadExtraInfo", 15) == 0)
1168 thread_extra_info_msg();
1169
1170 /* Unsupported - empty message as per spec */
1171 else
1172 send_empty_msg();
1173} 812}
1174#endif /* CONFIG_KGDB_THREAD */
1175 813
814#ifdef CONFIG_SH_KGDB_CONSOLE
1176/* 815/*
1177 * Bring up the ports.. 816 * Bring up the ports..
1178 */ 817 */
@@ -1185,6 +824,9 @@ static int kgdb_serial_setup(void)
1185 824
1186 return 0; 825 return 0;
1187} 826}
827#else
828#define kgdb_serial_setup() 0
829#endif
1188 830
1189/* The command loop, read and act on requests */ 831/* The command loop, read and act on requests */
1190static void kgdb_command_loop(const int excep_code, const int trapa_value) 832static void kgdb_command_loop(const int excep_code, const int trapa_value)
@@ -1193,7 +835,7 @@ static void kgdb_command_loop(const int excep_code, const int trapa_value)
1193 835
1194 if (excep_code == NMI_VEC) { 836 if (excep_code == NMI_VEC) {
1195#ifndef CONFIG_KGDB_NMI 837#ifndef CONFIG_KGDB_NMI
1196 KGDB_PRINTK("Ignoring unexpected NMI?\n"); 838 printk(KERN_NOTICE "KGDB: Ignoring unexpected NMI?\n");
1197 return; 839 return;
1198#else /* CONFIG_KGDB_NMI */ 840#else /* CONFIG_KGDB_NMI */
1199 if (!kgdb_enabled) { 841 if (!kgdb_enabled) {
@@ -1207,19 +849,10 @@ static void kgdb_command_loop(const int excep_code, const int trapa_value)
1207 if (!kgdb_enabled) 849 if (!kgdb_enabled)
1208 return; 850 return;
1209 851
1210#ifdef CONFIG_KGDB_THREAD
1211 /* Until GDB specifies a thread */
1212 current_thread = NULL;
1213 trapped_thread = current;
1214#endif
1215
1216 /* Enter GDB mode (e.g. after detach) */ 852 /* Enter GDB mode (e.g. after detach) */
1217 if (!kgdb_in_gdb_mode) { 853 if (!kgdb_in_gdb_mode) {
1218 /* Do serial setup, notify user, issue preemptive ack */ 854 /* Do serial setup, notify user, issue preemptive ack */
1219 kgdb_serial_setup(); 855 printk(KERN_NOTICE "KGDB: Waiting for GDB\n");
1220 KGDB_PRINTK("Waiting for GDB (on %s%d at %d baud)\n",
1221 (kgdb_porttype ? kgdb_porttype->name : ""),
1222 kgdb_portnum, kgdb_baud);
1223 kgdb_in_gdb_mode = 1; 856 kgdb_in_gdb_mode = 1;
1224 put_debug_char('+'); 857 put_debug_char('+');
1225 } 858 }
@@ -1233,21 +866,18 @@ static void kgdb_command_loop(const int excep_code, const int trapa_value)
1233 will later be replaced by its original one. Do NOT do this for 866 will later be replaced by its original one. Do NOT do this for
1234 trap 0xff, since that indicates a compiled-in breakpoint which 867 trap 0xff, since that indicates a compiled-in breakpoint which
1235 will not be replaced (and we would retake the trap forever) */ 868 will not be replaced (and we would retake the trap forever) */
1236 if ((excep_code == TRAP_VEC) && (trapa_value != (0xff << 2))) { 869 if ((excep_code == TRAP_VEC) && (trapa_value != (0x3c << 2)))
1237 trap_registers.pc -= 2; 870 trap_registers.pc -= 2;
1238 }
1239 871
1240 /* Undo any stepping we may have done */ 872 /* Undo any stepping we may have done */
1241 undo_single_step(); 873 undo_single_step();
1242 874
1243 while (1) { 875 while (1) {
1244
1245 out_buffer[0] = 0; 876 out_buffer[0] = 0;
1246 get_packet(in_buffer, BUFMAX); 877 get_packet(in_buffer, BUFMAX);
1247 878
1248 /* Examine first char of buffer to see what we need to do */ 879 /* Examine first char of buffer to see what we need to do */
1249 switch (in_buffer[0]) { 880 switch (in_buffer[0]) {
1250
1251 case '?': /* Send which signal we've received */ 881 case '?': /* Send which signal we've received */
1252 send_signal_msg(sigval); 882 send_signal_msg(sigval);
1253 break; 883 break;
@@ -1291,21 +921,6 @@ static void kgdb_command_loop(const int excep_code, const int trapa_value)
1291 step_msg(); 921 step_msg();
1292 return; 922 return;
1293 923
1294#ifdef CONFIG_KGDB_THREAD
1295
1296 case 'H': /* Task related */
1297 set_thread_msg();
1298 break;
1299
1300 case 'T': /* Query thread status */
1301 thread_status_msg();
1302 break;
1303
1304 case 'q': /* Handle query - currently thread-related */
1305 query_msg();
1306 break;
1307#endif
1308
1309 case 'k': /* 'Kill the program' with a kernel ? */ 924 case 'k': /* 'Kill the program' with a kernel ? */
1310 break; 925 break;
1311 926
@@ -1323,11 +938,8 @@ static void kgdb_command_loop(const int excep_code, const int trapa_value)
1323} 938}
1324 939
1325/* There has been an exception, most likely a breakpoint. */ 940/* There has been an exception, most likely a breakpoint. */
1326asmlinkage void kgdb_handle_exception(unsigned long r4, unsigned long r5, 941static void handle_exception(struct pt_regs *regs)
1327 unsigned long r6, unsigned long r7,
1328 struct pt_regs __regs)
1329{ 942{
1330 struct pt_regs *regs = RELOC_HIDE(&__regs, 0);
1331 int excep_code, vbr_val; 943 int excep_code, vbr_val;
1332 int count; 944 int count;
1333 int trapa_value = ctrl_inl(TRA); 945 int trapa_value = ctrl_inl(TRA);
@@ -1355,7 +967,7 @@ asmlinkage void kgdb_handle_exception(unsigned long r4, unsigned long r5,
1355 kgdb_trapa_val = trapa_value; 967 kgdb_trapa_val = trapa_value;
1356 968
1357 /* Act on the exception */ 969 /* Act on the exception */
1358 kgdb_command_loop(excep_code >> 5, trapa_value); 970 kgdb_command_loop(excep_code, trapa_value);
1359 971
1360 kgdb_current = NULL; 972 kgdb_current = NULL;
1361 973
@@ -1373,14 +985,12 @@ asmlinkage void kgdb_handle_exception(unsigned long r4, unsigned long r5,
1373 asm("ldc %0, vbr": :"r"(vbr_val)); 985 asm("ldc %0, vbr": :"r"(vbr_val));
1374} 986}
1375 987
1376/* Trigger a breakpoint by function */ 988asmlinkage void kgdb_handle_exception(unsigned long r4, unsigned long r5,
1377void breakpoint(void) 989 unsigned long r6, unsigned long r7,
990 struct pt_regs __regs)
1378{ 991{
1379 if (!kgdb_enabled) { 992 struct pt_regs *regs = RELOC_HIDE(&__regs, 0);
1380 kgdb_enabled = 1; 993 handle_exception(regs);
1381 kgdb_init();
1382 }
1383 BREAKPOINT();
1384} 994}
1385 995
1386/* Initialise the KGDB data structures and serial configuration */ 996/* Initialise the KGDB data structures and serial configuration */
@@ -1395,24 +1005,16 @@ int kgdb_init(void)
1395 kgdb_in_gdb_mode = 0; 1005 kgdb_in_gdb_mode = 0;
1396 1006
1397 if (kgdb_serial_setup() != 0) { 1007 if (kgdb_serial_setup() != 0) {
1398 KGDB_PRINTK("serial setup error\n"); 1008 printk(KERN_NOTICE "KGDB: serial setup error\n");
1399 return -1; 1009 return -1;
1400 } 1010 }
1401 1011
1402 /* Init ptr to exception handler */ 1012 /* Init ptr to exception handler */
1403 kgdb_debug_hook = kgdb_handle_exception; 1013 kgdb_debug_hook = handle_exception;
1404 kgdb_bus_err_hook = kgdb_handle_bus_error; 1014 kgdb_bus_err_hook = kgdb_handle_bus_error;
1405 1015
1406 /* Enter kgdb now if requested, or just report init done */ 1016 /* Enter kgdb now if requested, or just report init done */
1407 if (kgdb_halt) { 1017 printk(KERN_NOTICE "KGDB: stub is initialized.\n");
1408 kgdb_in_gdb_mode = 1;
1409 put_debug_char('+');
1410 breakpoint();
1411 }
1412 else
1413 {
1414 KGDB_PRINTK("stub is initialized.\n");
1415 }
1416 1018
1417 return 0; 1019 return 0;
1418} 1020}
@@ -1437,7 +1039,7 @@ static void kgdb_msg_write(const char *s, unsigned count)
1437 1039
1438 /* Calculate how many this time */ 1040 /* Calculate how many this time */
1439 wcount = (count > MAXOUT) ? MAXOUT : count; 1041 wcount = (count > MAXOUT) ? MAXOUT : count;
1440 1042
1441 /* Pack in hex chars */ 1043 /* Pack in hex chars */
1442 for (i = 0; i < wcount; i++) 1044 for (i = 0; i < wcount; i++)
1443 bufptr = pack_hex_byte(bufptr, s[i]); 1045 bufptr = pack_hex_byte(bufptr, s[i]);
@@ -1467,3 +1069,25 @@ void kgdb_console_write(struct console *co, const char *s, unsigned count)
1467 kgdb_msg_write(s, count); 1069 kgdb_msg_write(s, count);
1468} 1070}
1469#endif 1071#endif
1072
1073#ifdef CONFIG_KGDB_SYSRQ
1074static void sysrq_handle_gdb(int key, struct tty_struct *tty)
1075{
1076 printk("Entering GDB stub\n");
1077 breakpoint();
1078}
1079
1080static struct sysrq_key_op sysrq_gdb_op = {
1081 .handler = sysrq_handle_gdb,
1082 .help_msg = "Gdb",
1083 .action_msg = "GDB",
1084};
1085
1086static int gdb_register_sysrq(void)
1087{
1088 printk("Registering GDB sysrq handler\n");
1089 register_sysrq_key('g', &sysrq_gdb_op);
1090 return 0;
1091}
1092module_init(gdb_register_sysrq);
1093#endif
diff --git a/arch/sh/kernel/machine_kexec.c b/arch/sh/kernel/machine_kexec.c
index 08587cdb64d6..790ed69b8666 100644
--- a/arch/sh/kernel/machine_kexec.c
+++ b/arch/sh/kernel/machine_kexec.c
@@ -59,13 +59,13 @@ static void kexec_info(struct kimage *image)
59 printk(" segment[%d]: 0x%08x - 0x%08x (0x%08x)\n", 59 printk(" segment[%d]: 0x%08x - 0x%08x (0x%08x)\n",
60 i, 60 i,
61 (unsigned int)image->segment[i].mem, 61 (unsigned int)image->segment[i].mem,
62 (unsigned int)image->segment[i].mem + image->segment[i].memsz, 62 (unsigned int)image->segment[i].mem +
63 image->segment[i].memsz,
63 (unsigned int)image->segment[i].memsz); 64 (unsigned int)image->segment[i].memsz);
64 } 65 }
65 printk(" start : 0x%08x\n\n", (unsigned int)image->start); 66 printk(" start : 0x%08x\n\n", (unsigned int)image->start);
66} 67}
67 68
68
69/* 69/*
70 * Do not allocate memory (or fail in any way) in machine_kexec(). 70 * Do not allocate memory (or fail in any way) in machine_kexec().
71 * We are past the point of no return, committed to rebooting now. 71 * We are past the point of no return, committed to rebooting now.
@@ -101,6 +101,27 @@ NORET_TYPE void machine_kexec(struct kimage *image)
101 101
102 /* now call it */ 102 /* now call it */
103 rnk = (relocate_new_kernel_t) reboot_code_buffer; 103 rnk = (relocate_new_kernel_t) reboot_code_buffer;
104 (*rnk)(page_list, reboot_code_buffer, image->start, vbr_reg); 104 (*rnk)(page_list, reboot_code_buffer, image->start, vbr_reg);
105} 105}
106 106
107/* crashkernel=size@addr specifies the location to reserve for
108 * a crash kernel. By reserving this memory we guarantee
109 * that linux never sets it up as a DMA target.
110 * Useful for holding code to do something appropriate
111 * after a kernel panic.
112 */
113static int __init parse_crashkernel(char *arg)
114{
115 unsigned long size, base;
116 size = memparse(arg, &arg);
117 if (*arg == '@') {
118 base = memparse(arg+1, &arg);
119 /* FIXME: Do I want a sanity check
120 * to validate the memory range?
121 */
122 crashk_res.start = base;
123 crashk_res.end = base + size - 1;
124 }
125 return 0;
126}
127early_param("crashkernel", parse_crashkernel);
diff --git a/arch/sh/kernel/process.c b/arch/sh/kernel/process.c
index e7607366ac4e..329b3f3051de 100644
--- a/arch/sh/kernel/process.c
+++ b/arch/sh/kernel/process.c
@@ -7,7 +7,7 @@
7 * 7 *
8 * SuperH version: Copyright (C) 1999, 2000 Niibe Yutaka & Kaz Kojima 8 * SuperH version: Copyright (C) 1999, 2000 Niibe Yutaka & Kaz Kojima
9 * Copyright (C) 2006 Lineo Solutions Inc. support SH4A UBC 9 * Copyright (C) 2006 Lineo Solutions Inc. support SH4A UBC
10 * Copyright (C) 2002 - 2006 Paul Mundt 10 * Copyright (C) 2002 - 2007 Paul Mundt
11 */ 11 */
12#include <linux/module.h> 12#include <linux/module.h>
13#include <linux/mm.h> 13#include <linux/mm.h>
@@ -15,6 +15,7 @@
15#include <linux/pm.h> 15#include <linux/pm.h>
16#include <linux/kallsyms.h> 16#include <linux/kallsyms.h>
17#include <linux/kexec.h> 17#include <linux/kexec.h>
18#include <asm/kdebug.h>
18#include <asm/uaccess.h> 19#include <asm/uaccess.h>
19#include <asm/mmu_context.h> 20#include <asm/mmu_context.h>
20#include <asm/ubc.h> 21#include <asm/ubc.h>
@@ -299,7 +300,8 @@ static void ubc_set_tracing(int asid, unsigned long pc)
299 ctrl_outl(0, UBC_BAMRA); 300 ctrl_outl(0, UBC_BAMRA);
300 301
301 if (current_cpu_data.type == CPU_SH7729 || 302 if (current_cpu_data.type == CPU_SH7729 ||
302 current_cpu_data.type == CPU_SH7710) { 303 current_cpu_data.type == CPU_SH7710 ||
304 current_cpu_data.type == CPU_SH7712) {
303 ctrl_outw(BBR_INST | BBR_READ | BBR_CPU, UBC_BBRA); 305 ctrl_outw(BBR_INST | BBR_READ | BBR_CPU, UBC_BBRA);
304 ctrl_outl(BRCR_PCBA | BRCR_PCTE, UBC_BRCR); 306 ctrl_outl(BRCR_PCBA | BRCR_PCTE, UBC_BRCR);
305 } else { 307 } else {
@@ -495,6 +497,10 @@ asmlinkage void debug_trap_handler(unsigned long r4, unsigned long r5,
495 /* Rewind */ 497 /* Rewind */
496 regs->pc -= 2; 498 regs->pc -= 2;
497 499
500 if (notify_die(DIE_TRAP, regs, regs->tra & 0xff,
501 SIGTRAP) == NOTIFY_STOP)
502 return;
503
498 force_sig(SIGTRAP, current); 504 force_sig(SIGTRAP, current);
499} 505}
500 506
@@ -510,6 +516,10 @@ asmlinkage void bug_trap_handler(unsigned long r4, unsigned long r5,
510 /* Rewind */ 516 /* Rewind */
511 regs->pc -= 2; 517 regs->pc -= 2;
512 518
519 if (notify_die(DIE_TRAP, regs, TRAPA_BUG_OPCODE & 0xff,
520 SIGTRAP) == NOTIFY_STOP)
521 return;
522
513#ifdef CONFIG_BUG 523#ifdef CONFIG_BUG
514 if (__kernel_text_address(instruction_pointer(regs))) { 524 if (__kernel_text_address(instruction_pointer(regs))) {
515 u16 insn = *(u16 *)instruction_pointer(regs); 525 u16 insn = *(u16 *)instruction_pointer(regs);
diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c
index 98802ab28211..477d2a854fc4 100644
--- a/arch/sh/kernel/setup.c
+++ b/arch/sh/kernel/setup.c
@@ -4,7 +4,7 @@
4 * This file handles the architecture-dependent parts of initialization 4 * This file handles the architecture-dependent parts of initialization
5 * 5 *
6 * Copyright (C) 1999 Niibe Yutaka 6 * Copyright (C) 1999 Niibe Yutaka
7 * Copyright (C) 2002 - 2006 Paul Mundt 7 * Copyright (C) 2002 - 2007 Paul Mundt
8 */ 8 */
9#include <linux/screen_info.h> 9#include <linux/screen_info.h>
10#include <linux/ioport.h> 10#include <linux/ioport.h>
@@ -15,21 +15,22 @@
15#include <linux/seq_file.h> 15#include <linux/seq_file.h>
16#include <linux/root_dev.h> 16#include <linux/root_dev.h>
17#include <linux/utsname.h> 17#include <linux/utsname.h>
18#include <linux/nodemask.h>
18#include <linux/cpu.h> 19#include <linux/cpu.h>
19#include <linux/pfn.h> 20#include <linux/pfn.h>
20#include <linux/fs.h> 21#include <linux/fs.h>
22#include <linux/mm.h>
23#include <linux/kexec.h>
21#include <asm/uaccess.h> 24#include <asm/uaccess.h>
22#include <asm/io.h> 25#include <asm/io.h>
23#include <asm/sections.h> 26#include <asm/sections.h>
24#include <asm/irq.h> 27#include <asm/irq.h>
25#include <asm/setup.h> 28#include <asm/setup.h>
26#include <asm/clock.h> 29#include <asm/clock.h>
30#include <asm/mmu_context.h>
27 31
28#ifdef CONFIG_SH_KGDB
29#include <asm/kgdb.h>
30static int kgdb_parse_options(char *options);
31#endif
32extern void * __rd_start, * __rd_end; 32extern void * __rd_start, * __rd_end;
33
33/* 34/*
34 * Machine setup.. 35 * Machine setup..
35 */ 36 */
@@ -205,53 +206,33 @@ static int __init sh_mv_setup(char **cmdline_p)
205 return 0; 206 return 0;
206} 207}
207 208
208void __init setup_arch(char **cmdline_p) 209/*
210 * Register fully available low RAM pages with the bootmem allocator.
211 */
212static void __init register_bootmem_low_pages(void)
209{ 213{
210 unsigned long bootmap_size; 214 unsigned long curr_pfn, last_pfn, pages;
211 unsigned long start_pfn, max_pfn, max_low_pfn;
212
213#ifdef CONFIG_CMDLINE_BOOL
214 strcpy(COMMAND_LINE, CONFIG_CMDLINE);
215#endif
216
217 ROOT_DEV = old_decode_dev(ORIG_ROOT_DEV);
218
219#ifdef CONFIG_BLK_DEV_RAM
220 rd_image_start = RAMDISK_FLAGS & RAMDISK_IMAGE_START_MASK;
221 rd_prompt = ((RAMDISK_FLAGS & RAMDISK_PROMPT_FLAG) != 0);
222 rd_doload = ((RAMDISK_FLAGS & RAMDISK_LOAD_FLAG) != 0);
223#endif
224
225 if (!MOUNT_ROOT_RDONLY)
226 root_mountflags &= ~MS_RDONLY;
227 init_mm.start_code = (unsigned long) _text;
228 init_mm.end_code = (unsigned long) _etext;
229 init_mm.end_data = (unsigned long) _edata;
230 init_mm.brk = (unsigned long) _end;
231
232 code_resource.start = (unsigned long)virt_to_phys(_text);
233 code_resource.end = (unsigned long)virt_to_phys(_etext)-1;
234 data_resource.start = (unsigned long)virt_to_phys(_etext);
235 data_resource.end = (unsigned long)virt_to_phys(_edata)-1;
236
237 sh_mv_setup(cmdline_p);
238
239 215
240 /* 216 /*
241 * Find the highest page frame number we have available 217 * We are rounding up the start address of usable memory:
242 */ 218 */
243 max_pfn = PFN_DOWN(__pa(memory_end)); 219 curr_pfn = PFN_UP(__MEMORY_START);
244 220
245 /* 221 /*
246 * Determine low and high memory ranges: 222 * ... and at the end of the usable range downwards:
247 */ 223 */
248 max_low_pfn = max_pfn; 224 last_pfn = PFN_DOWN(__pa(memory_end));
249 225
250 /* 226 if (last_pfn > max_low_pfn)
251 * Partially used pages are not usable - thus 227 last_pfn = max_low_pfn;
252 * we are rounding upwards: 228
253 */ 229 pages = last_pfn - curr_pfn;
254 start_pfn = PFN_UP(__pa(_end)); 230 free_bootmem(PFN_PHYS(curr_pfn), PFN_PHYS(pages));
231}
232
233void __init setup_bootmem_allocator(unsigned long start_pfn)
234{
235 unsigned long bootmap_size;
255 236
256 /* 237 /*
257 * Find a proper area for the bootmem bitmap. After this 238 * Find a proper area for the bootmem bitmap. After this
@@ -259,31 +240,11 @@ void __init setup_arch(char **cmdline_p)
259 * is intact) must be done via bootmem_alloc(). 240 * is intact) must be done via bootmem_alloc().
260 */ 241 */
261 bootmap_size = init_bootmem_node(NODE_DATA(0), start_pfn, 242 bootmap_size = init_bootmem_node(NODE_DATA(0), start_pfn,
262 __MEMORY_START>>PAGE_SHIFT, 243 min_low_pfn, max_low_pfn);
263 max_low_pfn);
264 /*
265 * Register fully available low RAM pages with the bootmem allocator.
266 */
267 {
268 unsigned long curr_pfn, last_pfn, pages;
269
270 /*
271 * We are rounding up the start address of usable memory:
272 */
273 curr_pfn = PFN_UP(__MEMORY_START);
274 /*
275 * ... and at the end of the usable range downwards:
276 */
277 last_pfn = PFN_DOWN(__pa(memory_end));
278 244
279 if (last_pfn > max_low_pfn) 245 register_bootmem_low_pages();
280 last_pfn = max_low_pfn;
281
282 pages = last_pfn - curr_pfn;
283 free_bootmem_node(NODE_DATA(0), PFN_PHYS(curr_pfn),
284 PFN_PHYS(pages));
285 }
286 246
247 node_set_online(0);
287 248
288 /* 249 /*
289 * Reserve the kernel text and 250 * Reserve the kernel text and
@@ -292,14 +253,14 @@ void __init setup_arch(char **cmdline_p)
292 * case of us accidentally initializing the bootmem allocator with 253 * case of us accidentally initializing the bootmem allocator with
293 * an invalid RAM area. 254 * an invalid RAM area.
294 */ 255 */
295 reserve_bootmem_node(NODE_DATA(0), __MEMORY_START+PAGE_SIZE, 256 reserve_bootmem(__MEMORY_START+PAGE_SIZE,
296 (PFN_PHYS(start_pfn)+bootmap_size+PAGE_SIZE-1)-__MEMORY_START); 257 (PFN_PHYS(start_pfn)+bootmap_size+PAGE_SIZE-1)-__MEMORY_START);
297 258
298 /* 259 /*
299 * reserve physical page 0 - it's a special BIOS page on many boxes, 260 * reserve physical page 0 - it's a special BIOS page on many boxes,
300 * enabling clean reboots, SMP operation, laptop functions. 261 * enabling clean reboots, SMP operation, laptop functions.
301 */ 262 */
302 reserve_bootmem_node(NODE_DATA(0), __MEMORY_START, PAGE_SIZE); 263 reserve_bootmem(__MEMORY_START, PAGE_SIZE);
303 264
304#ifdef CONFIG_BLK_DEV_INITRD 265#ifdef CONFIG_BLK_DEV_INITRD
305 ROOT_DEV = MKDEV(RAMDISK_MAJOR, 0); 266 ROOT_DEV = MKDEV(RAMDISK_MAJOR, 0);
@@ -313,8 +274,8 @@ void __init setup_arch(char **cmdline_p)
313 274
314 if (LOADER_TYPE && INITRD_START) { 275 if (LOADER_TYPE && INITRD_START) {
315 if (INITRD_START + INITRD_SIZE <= (max_low_pfn << PAGE_SHIFT)) { 276 if (INITRD_START + INITRD_SIZE <= (max_low_pfn << PAGE_SHIFT)) {
316 reserve_bootmem_node(NODE_DATA(0), INITRD_START + 277 reserve_bootmem(INITRD_START + __MEMORY_START,
317 __MEMORY_START, INITRD_SIZE); 278 INITRD_SIZE);
318 initrd_start = INITRD_START + PAGE_OFFSET + 279 initrd_start = INITRD_START + PAGE_OFFSET +
319 __MEMORY_START; 280 __MEMORY_START;
320 initrd_end = initrd_start + INITRD_SIZE; 281 initrd_end = initrd_start + INITRD_SIZE;
@@ -327,6 +288,76 @@ void __init setup_arch(char **cmdline_p)
327 } 288 }
328 } 289 }
329#endif 290#endif
291#ifdef CONFIG_KEXEC
292 if (crashk_res.start != crashk_res.end)
293 reserve_bootmem(crashk_res.start,
294 crashk_res.end - crashk_res.start + 1);
295#endif
296}
297
298#ifndef CONFIG_NEED_MULTIPLE_NODES
299static void __init setup_memory(void)
300{
301 unsigned long start_pfn;
302
303 /*
304 * Partially used pages are not usable - thus
305 * we are rounding upwards:
306 */
307 start_pfn = PFN_UP(__pa(_end));
308 setup_bootmem_allocator(start_pfn);
309}
310#else
311extern void __init setup_memory(void);
312#endif
313
314void __init setup_arch(char **cmdline_p)
315{
316 enable_mmu();
317
318#ifdef CONFIG_CMDLINE_BOOL
319 strcpy(COMMAND_LINE, CONFIG_CMDLINE);
320#endif
321
322 ROOT_DEV = old_decode_dev(ORIG_ROOT_DEV);
323
324#ifdef CONFIG_BLK_DEV_RAM
325 rd_image_start = RAMDISK_FLAGS & RAMDISK_IMAGE_START_MASK;
326 rd_prompt = ((RAMDISK_FLAGS & RAMDISK_PROMPT_FLAG) != 0);
327 rd_doload = ((RAMDISK_FLAGS & RAMDISK_LOAD_FLAG) != 0);
328#endif
329
330 if (!MOUNT_ROOT_RDONLY)
331 root_mountflags &= ~MS_RDONLY;
332 init_mm.start_code = (unsigned long) _text;
333 init_mm.end_code = (unsigned long) _etext;
334 init_mm.end_data = (unsigned long) _edata;
335 init_mm.brk = (unsigned long) _end;
336
337 code_resource.start = virt_to_phys(_text);
338 code_resource.end = virt_to_phys(_etext)-1;
339 data_resource.start = virt_to_phys(_etext);
340 data_resource.end = virt_to_phys(_edata)-1;
341
342 parse_early_param();
343
344 sh_mv_setup(cmdline_p);
345
346 /*
347 * Find the highest page frame number we have available
348 */
349 max_pfn = PFN_DOWN(__pa(memory_end));
350
351 /*
352 * Determine low and high memory ranges:
353 */
354 max_low_pfn = max_pfn;
355 min_low_pfn = __MEMORY_START >> PAGE_SHIFT;
356
357 nodes_clear(node_online_map);
358 setup_memory();
359 paging_init();
360 sparse_init();
330 361
331#ifdef CONFIG_DUMMY_CONSOLE 362#ifdef CONFIG_DUMMY_CONSOLE
332 conswitchp = &dummy_con; 363 conswitchp = &dummy_con;
@@ -335,8 +366,6 @@ void __init setup_arch(char **cmdline_p)
335 /* Perform the machine specific initialisation */ 366 /* Perform the machine specific initialisation */
336 if (likely(sh_mv.mv_setup)) 367 if (likely(sh_mv.mv_setup))
337 sh_mv.mv_setup(cmdline_p); 368 sh_mv.mv_setup(cmdline_p);
338
339 paging_init();
340} 369}
341 370
342struct sh_machine_vector* __init get_mv_byname(const char* name) 371struct sh_machine_vector* __init get_mv_byname(const char* name)
@@ -380,6 +409,7 @@ static const char *cpu_name[] = {
380 [CPU_SH7705] = "SH7705", [CPU_SH7706] = "SH7706", 409 [CPU_SH7705] = "SH7705", [CPU_SH7706] = "SH7706",
381 [CPU_SH7707] = "SH7707", [CPU_SH7708] = "SH7708", 410 [CPU_SH7707] = "SH7707", [CPU_SH7708] = "SH7708",
382 [CPU_SH7709] = "SH7709", [CPU_SH7710] = "SH7710", 411 [CPU_SH7709] = "SH7709", [CPU_SH7710] = "SH7710",
412 [CPU_SH7712] = "SH7712",
383 [CPU_SH7729] = "SH7729", [CPU_SH7750] = "SH7750", 413 [CPU_SH7729] = "SH7729", [CPU_SH7750] = "SH7750",
384 [CPU_SH7750S] = "SH7750S", [CPU_SH7750R] = "SH7750R", 414 [CPU_SH7750S] = "SH7750S", [CPU_SH7750R] = "SH7750R",
385 [CPU_SH7751] = "SH7751", [CPU_SH7751R] = "SH7751R", 415 [CPU_SH7751] = "SH7751", [CPU_SH7751R] = "SH7751R",
@@ -477,7 +507,7 @@ static int show_cpuinfo(struct seq_file *m, void *v)
477 c->loops_per_jiffy/(500000/HZ), 507 c->loops_per_jiffy/(500000/HZ),
478 (c->loops_per_jiffy/(5000/HZ)) % 100); 508 (c->loops_per_jiffy/(5000/HZ)) % 100);
479 509
480 return show_clocks(m); 510 return 0;
481} 511}
482 512
483static void *c_start(struct seq_file *m, loff_t *pos) 513static void *c_start(struct seq_file *m, loff_t *pos)
@@ -499,92 +529,3 @@ struct seq_operations cpuinfo_op = {
499 .show = show_cpuinfo, 529 .show = show_cpuinfo,
500}; 530};
501#endif /* CONFIG_PROC_FS */ 531#endif /* CONFIG_PROC_FS */
502
503#ifdef CONFIG_SH_KGDB
504/*
505 * Parse command-line kgdb options. By default KGDB is enabled,
506 * entered on error (or other action) using default serial info.
507 * The command-line option can include a serial port specification
508 * and an action to override default or configured behavior.
509 */
510struct kgdb_sermap kgdb_sci_sermap =
511{ "ttySC", 5, kgdb_sci_setup, NULL };
512
513struct kgdb_sermap *kgdb_serlist = &kgdb_sci_sermap;
514struct kgdb_sermap *kgdb_porttype = &kgdb_sci_sermap;
515
516void kgdb_register_sermap(struct kgdb_sermap *map)
517{
518 struct kgdb_sermap *last;
519
520 for (last = kgdb_serlist; last->next; last = last->next)
521 ;
522 last->next = map;
523 if (!map->namelen) {
524 map->namelen = strlen(map->name);
525 }
526}
527
528static int __init kgdb_parse_options(char *options)
529{
530 char c;
531 int baud;
532
533 /* Check for port spec (or use default) */
534
535 /* Determine port type and instance */
536 if (!memcmp(options, "tty", 3)) {
537 struct kgdb_sermap *map = kgdb_serlist;
538
539 while (map && memcmp(options, map->name, map->namelen))
540 map = map->next;
541
542 if (!map) {
543 KGDB_PRINTK("unknown port spec in %s\n", options);
544 return -1;
545 }
546
547 kgdb_porttype = map;
548 kgdb_serial_setup = map->setup_fn;
549 kgdb_portnum = options[map->namelen] - '0';
550 options += map->namelen + 1;
551
552 options = (*options == ',') ? options+1 : options;
553
554 /* Read optional parameters (baud/parity/bits) */
555 baud = simple_strtoul(options, &options, 10);
556 if (baud != 0) {
557 kgdb_baud = baud;
558
559 c = toupper(*options);
560 if (c == 'E' || c == 'O' || c == 'N') {
561 kgdb_parity = c;
562 options++;
563 }
564
565 c = *options;
566 if (c == '7' || c == '8') {
567 kgdb_bits = c;
568 options++;
569 }
570 options = (*options == ',') ? options+1 : options;
571 }
572 }
573
574 /* Check for action specification */
575 if (!memcmp(options, "halt", 4)) {
576 kgdb_halt = 1;
577 options += 4;
578 } else if (!memcmp(options, "disabled", 8)) {
579 kgdb_enabled = 0;
580 options += 8;
581 }
582
583 if (*options) {
584 KGDB_PRINTK("ignored unknown options: %s\n", options);
585 return 0;
586 }
587 return 1;
588}
589__setup("kgdb=", kgdb_parse_options);
590#endif /* CONFIG_SH_KGDB */
diff --git a/arch/sh/kernel/sh_ksyms.c b/arch/sh/kernel/sh_ksyms.c
index 6e0d10fac4a8..17f0b50c5678 100644
--- a/arch/sh/kernel/sh_ksyms.c
+++ b/arch/sh/kernel/sh_ksyms.c
@@ -65,7 +65,6 @@ EXPORT_SYMBOL(__div64_32);
65 65
66/* These symbols are generated by the compiler itself */ 66/* These symbols are generated by the compiler itself */
67DECLARE_EXPORT(__udivsi3); 67DECLARE_EXPORT(__udivsi3);
68DECLARE_EXPORT(__udivdi3);
69DECLARE_EXPORT(__sdivsi3); 68DECLARE_EXPORT(__sdivsi3);
70DECLARE_EXPORT(__ashrdi3); 69DECLARE_EXPORT(__ashrdi3);
71DECLARE_EXPORT(__ashldi3); 70DECLARE_EXPORT(__ashldi3);
diff --git a/arch/sh/kernel/timers/timer-tmu.c b/arch/sh/kernel/timers/timer-tmu.c
index e060e71d0785..ad1ede52fc9c 100644
--- a/arch/sh/kernel/timers/timer-tmu.c
+++ b/arch/sh/kernel/timers/timer-tmu.c
@@ -148,7 +148,9 @@ static int tmu_timer_init(void)
148 148
149 /* Start TMU0 */ 149 /* Start TMU0 */
150 tmu_timer_stop(); 150 tmu_timer_stop();
151#if !defined(CONFIG_CPU_SUBTYPE_SH7300) && !defined(CONFIG_CPU_SUBTYPE_SH7760) 151#if !defined(CONFIG_CPU_SUBTYPE_SH7300) && \
152 !defined(CONFIG_CPU_SUBTYPE_SH7760) && \
153 !defined(CONFIG_CPU_SUBTYPE_SH7785)
152 ctrl_outb(TMU_TOCR_INIT, TMU_TOCR); 154 ctrl_outb(TMU_TOCR_INIT, TMU_TOCR);
153#endif 155#endif
154 156
diff --git a/arch/sh/kernel/traps.c b/arch/sh/kernel/traps.c
index e9f168f60f95..7b40f0ff3dfc 100644
--- a/arch/sh/kernel/traps.c
+++ b/arch/sh/kernel/traps.c
@@ -5,7 +5,7 @@
5 * SuperH version: Copyright (C) 1999 Niibe Yutaka 5 * SuperH version: Copyright (C) 1999 Niibe Yutaka
6 * Copyright (C) 2000 Philipp Rumpf 6 * Copyright (C) 2000 Philipp Rumpf
7 * Copyright (C) 2000 David Howells 7 * Copyright (C) 2000 David Howells
8 * Copyright (C) 2002 - 2006 Paul Mundt 8 * Copyright (C) 2002 - 2007 Paul Mundt
9 * 9 *
10 * This file is subject to the terms and conditions of the GNU General Public 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 11 * License. See the file "COPYING" in the main directory of this archive
@@ -18,10 +18,12 @@
18#include <linux/module.h> 18#include <linux/module.h>
19#include <linux/kallsyms.h> 19#include <linux/kallsyms.h>
20#include <linux/io.h> 20#include <linux/io.h>
21#include <linux/bug.h>
21#include <linux/debug_locks.h> 22#include <linux/debug_locks.h>
22#include <linux/limits.h> 23#include <linux/limits.h>
23#include <asm/system.h> 24#include <asm/system.h>
24#include <asm/uaccess.h> 25#include <asm/uaccess.h>
26#include <asm/kdebug.h>
25 27
26#ifdef CONFIG_SH_KGDB 28#ifdef CONFIG_SH_KGDB
27#include <asm/kgdb.h> 29#include <asm/kgdb.h>
@@ -74,7 +76,21 @@ static void dump_mem(const char *str, unsigned long bottom, unsigned long top)
74 } 76 }
75} 77}
76 78
77DEFINE_SPINLOCK(die_lock); 79ATOMIC_NOTIFIER_HEAD(shdie_chain);
80
81int register_die_notifier(struct notifier_block *nb)
82{
83 return atomic_notifier_chain_register(&shdie_chain, nb);
84}
85EXPORT_SYMBOL(register_die_notifier);
86
87int unregister_die_notifier(struct notifier_block *nb)
88{
89 return atomic_notifier_chain_unregister(&shdie_chain, nb);
90}
91EXPORT_SYMBOL(unregister_die_notifier);
92
93static DEFINE_SPINLOCK(die_lock);
78 94
79void die(const char * str, struct pt_regs * regs, long err) 95void die(const char * str, struct pt_regs * regs, long err)
80{ 96{
@@ -130,40 +146,6 @@ static int die_if_no_fixup(const char * str, struct pt_regs * regs, long err)
130 return -EFAULT; 146 return -EFAULT;
131} 147}
132 148
133#ifdef CONFIG_BUG
134#ifdef CONFIG_DEBUG_BUGVERBOSE
135static inline void do_bug_verbose(struct pt_regs *regs)
136{
137 struct bug_frame f;
138 long len;
139
140 if (__copy_from_user(&f, (const void __user *)regs->pc,
141 sizeof(struct bug_frame)))
142 return;
143
144 len = __strnlen_user(f.file, PATH_MAX) - 1;
145 if (unlikely(len < 0 || len >= PATH_MAX))
146 f.file = "<bad filename>";
147 len = __strnlen_user(f.func, PATH_MAX) - 1;
148 if (unlikely(len < 0 || len >= PATH_MAX))
149 f.func = "<bad function>";
150
151 printk(KERN_ALERT "kernel BUG in %s() at %s:%d!\n",
152 f.func, f.file, f.line);
153}
154#else
155static inline void do_bug_verbose(struct pt_regs *regs)
156{
157}
158#endif /* CONFIG_DEBUG_BUGVERBOSE */
159
160void handle_BUG(struct pt_regs *regs)
161{
162 do_bug_verbose(regs);
163 die("Kernel BUG", regs, TRAPA_BUG_OPCODE & 0xff);
164}
165#endif /* CONFIG_BUG */
166
167/* 149/*
168 * handle an instruction that does an unaligned memory access by emulating the 150 * handle an instruction that does an unaligned memory access by emulating the
169 * desired behaviour 151 * desired behaviour
@@ -888,6 +870,25 @@ void __init trap_init(void)
888 per_cpu_trap_init(); 870 per_cpu_trap_init();
889} 871}
890 872
873#ifdef CONFIG_BUG
874void handle_BUG(struct pt_regs *regs)
875{
876 enum bug_trap_type tt;
877 tt = report_bug(regs->pc);
878 if (tt == BUG_TRAP_TYPE_WARN) {
879 regs->pc += 2;
880 return;
881 }
882
883 die("Kernel BUG", regs, TRAPA_BUG_OPCODE & 0xff);
884}
885
886int is_valid_bugaddr(unsigned long addr)
887{
888 return addr >= PAGE_OFFSET;
889}
890#endif
891
891void show_trace(struct task_struct *tsk, unsigned long *sp, 892void show_trace(struct task_struct *tsk, unsigned long *sp,
892 struct pt_regs *regs) 893 struct pt_regs *regs)
893{ 894{
diff --git a/arch/sh/kernel/vmlinux.lds.S b/arch/sh/kernel/vmlinux.lds.S
index 2f606d0ce1f6..d83143cc5ca9 100644
--- a/arch/sh/kernel/vmlinux.lds.S
+++ b/arch/sh/kernel/vmlinux.lds.S
@@ -34,9 +34,11 @@ SECTIONS
34 __ex_table : { *(__ex_table) } 34 __ex_table : { *(__ex_table) }
35 __stop___ex_table = .; 35 __stop___ex_table = .;
36 36
37 _etext = .; /* End of text section */
38
37 RODATA 39 RODATA
38 40
39 _etext = .; /* End of text section */ 41 BUG_TABLE
40 42
41 .data : { /* Data */ 43 .data : { /* Data */
42 *(.data) 44 *(.data)
@@ -53,6 +55,10 @@ SECTIONS
53 55
54 . = ALIGN(PAGE_SIZE); 56 . = ALIGN(PAGE_SIZE);
55 .data.page_aligned : { *(.data.page_aligned) } 57 .data.page_aligned : { *(.data.page_aligned) }
58 __nosave_begin = .;
59 .data_nosave : { *(.data.nosave) }
60 . = ALIGN(PAGE_SIZE);
61 __nosave_end = .;
56 62
57 . = ALIGN(PAGE_SIZE); 63 . = ALIGN(PAGE_SIZE);
58 __per_cpu_start = .; 64 __per_cpu_start = .;
@@ -110,43 +116,10 @@ SECTIONS
110 * it's a module. 116 * it's a module.
111 */ 117 */
112 /DISCARD/ : { 118 /DISCARD/ : {
113 *(.exit.text)
114 *(.exit.data)
115 *(.exitcall.exit) 119 *(.exitcall.exit)
116 } 120 }
117 121
118 /* Stabs debugging sections. */ 122 STABS_DEBUG
119 .stab 0 : { *(.stab) } 123
120 .stabstr 0 : { *(.stabstr) } 124 DWARF_DEBUG
121 .stab.excl 0 : { *(.stab.excl) }
122 .stab.exclstr 0 : { *(.stab.exclstr) }
123 .stab.index 0 : { *(.stab.index) }
124 .stab.indexstr 0 : { *(.stab.indexstr) }
125 .comment 0 : { *(.comment) }
126 /* DWARF debug sections.
127 Symbols in the DWARF debugging section are relative to the beginning
128 of the section so we begin .debug at 0. */
129 /* DWARF 1 */
130 .debug 0 : { *(.debug) }
131 .line 0 : { *(.line) }
132 /* GNU DWARF 1 extensions */
133 .debug_srcinfo 0 : { *(.debug_srcinfo) }
134 .debug_sfnames 0 : { *(.debug_sfnames) }
135 /* DWARF 1.1 and DWARF 2 */
136 .debug_aranges 0 : { *(.debug_aranges) }
137 .debug_pubnames 0 : { *(.debug_pubnames) }
138 /* DWARF 2 */
139 .debug_info 0 : { *(.debug_info) }
140 .debug_abbrev 0 : { *(.debug_abbrev) }
141 .debug_line 0 : { *(.debug_line) }
142 .debug_frame 0 : { *(.debug_frame) }
143 .debug_str 0 : { *(.debug_str) }
144 .debug_loc 0 : { *(.debug_loc) }
145 .debug_macinfo 0 : { *(.debug_macinfo) }
146 /* SGI/MIPS DWARF 2 extensions */
147 .debug_weaknames 0 : { *(.debug_weaknames) }
148 .debug_funcnames 0 : { *(.debug_funcnames) }
149 .debug_typenames 0 : { *(.debug_typenames) }
150 .debug_varnames 0 : { *(.debug_varnames) }
151 /* These must appear regardless of . */
152} 125}
diff --git a/arch/sh/lib/Makefile b/arch/sh/lib/Makefile
index 0b9cca5c7cb4..e23dd1a3fccd 100644
--- a/arch/sh/lib/Makefile
+++ b/arch/sh/lib/Makefile
@@ -3,11 +3,9 @@
3# 3#
4 4
5lib-y = delay.o memset.o memmove.o memchr.o \ 5lib-y = delay.o memset.o memmove.o memchr.o \
6 checksum.o strlen.o div64.o udivdi3.o \ 6 checksum.o strlen.o div64.o div64-generic.o
7 div64-generic.o
8 7
9memcpy-y := memcpy.o 8memcpy-y := memcpy.o
10memcpy-$(CONFIG_CPU_SH4) := memcpy-sh4.o 9memcpy-$(CONFIG_CPU_SH4) := memcpy-sh4.o
11 10
12lib-y += $(memcpy-y) 11lib-y += $(memcpy-y)
13
diff --git a/arch/sh/lib/udivdi3.c b/arch/sh/lib/udivdi3.c
deleted file mode 100644
index 68f038bf3c50..000000000000
--- a/arch/sh/lib/udivdi3.c
+++ /dev/null
@@ -1,16 +0,0 @@
1/*
2 * Simple __udivdi3 function which doesn't use FPU.
3 */
4
5#include <linux/types.h>
6
7extern u64 __xdiv64_32(u64 n, u32 d);
8extern void panic(const char * fmt, ...);
9
10u64 __udivdi3(u64 n, u64 d)
11{
12 if (d & ~0xffffffff)
13 panic("Need true 64-bit/64-bit division");
14 return __xdiv64_32(n, (u32)d);
15}
16
diff --git a/arch/sh/mm/Kconfig b/arch/sh/mm/Kconfig
index 6b0d28ac9241..12f3d394dc28 100644
--- a/arch/sh/mm/Kconfig
+++ b/arch/sh/mm/Kconfig
@@ -67,6 +67,7 @@ config CPU_SUBTYPE_SH7300
67config CPU_SUBTYPE_SH7705 67config CPU_SUBTYPE_SH7705
68 bool "Support SH7705 processor" 68 bool "Support SH7705 processor"
69 select CPU_SH3 69 select CPU_SH3
70 select CPU_HAS_IPR_IRQ
70 select CPU_HAS_PINT_IRQ 71 select CPU_HAS_PINT_IRQ
71 72
72config CPU_SUBTYPE_SH7706 73config CPU_SUBTYPE_SH7706
@@ -101,9 +102,17 @@ config CPU_SUBTYPE_SH7709
101config CPU_SUBTYPE_SH7710 102config CPU_SUBTYPE_SH7710
102 bool "Support SH7710 processor" 103 bool "Support SH7710 processor"
103 select CPU_SH3 104 select CPU_SH3
105 select CPU_HAS_IPR_IRQ
104 help 106 help
105 Select SH7710 if you have a SH3-DSP SH7710 CPU. 107 Select SH7710 if you have a SH3-DSP SH7710 CPU.
106 108
109config CPU_SUBTYPE_SH7712
110 bool "Support SH7712 processor"
111 select CPU_SH3
112 select CPU_HAS_IPR_IRQ
113 help
114 Select SH7712 if you have a SH3-DSP SH7712 CPU.
115
107comment "SH-4 Processor Support" 116comment "SH-4 Processor Support"
108 117
109config CPU_SUBTYPE_SH7750 118config CPU_SUBTYPE_SH7750
@@ -283,6 +292,17 @@ config VSYSCALL
283 For systems with an MMU that can afford to give up a page, 292 For systems with an MMU that can afford to give up a page,
284 (the default value) say Y. 293 (the default value) say Y.
285 294
295config NODES_SHIFT
296 int
297 default "1"
298 depends on NEED_MULTIPLE_NODES
299
300config ARCH_FLATMEM_ENABLE
301 def_bool y
302
303config ARCH_POPULATES_NODE_MAP
304 def_bool y
305
286choice 306choice
287 prompt "Kernel page size" 307 prompt "Kernel page size"
288 default PAGE_SIZE_4KB 308 default PAGE_SIZE_4KB
diff --git a/arch/sh/mm/fault.c b/arch/sh/mm/fault.c
index fa5d7f0b9f18..0ecc117cade4 100644
--- a/arch/sh/mm/fault.c
+++ b/arch/sh/mm/fault.c
@@ -2,7 +2,7 @@
2 * Page fault handler for SH with an MMU. 2 * Page fault handler for SH with an MMU.
3 * 3 *
4 * Copyright (C) 1999 Niibe Yutaka 4 * Copyright (C) 1999 Niibe Yutaka
5 * Copyright (C) 2003 Paul Mundt 5 * Copyright (C) 2003 - 2007 Paul Mundt
6 * 6 *
7 * Based on linux/arch/i386/mm/fault.c: 7 * Based on linux/arch/i386/mm/fault.c:
8 * Copyright (C) 1995 Linus Torvalds 8 * Copyright (C) 1995 Linus Torvalds
@@ -15,12 +15,42 @@
15#include <linux/mm.h> 15#include <linux/mm.h>
16#include <linux/hardirq.h> 16#include <linux/hardirq.h>
17#include <linux/kprobes.h> 17#include <linux/kprobes.h>
18#include <asm/kdebug.h>
18#include <asm/system.h> 19#include <asm/system.h>
19#include <asm/mmu_context.h> 20#include <asm/mmu_context.h>
20#include <asm/tlbflush.h> 21#include <asm/tlbflush.h>
21#include <asm/kgdb.h> 22#include <asm/kgdb.h>
22 23
23extern void die(const char *,struct pt_regs *,long); 24#ifdef CONFIG_KPROBES
25ATOMIC_NOTIFIER_HEAD(notify_page_fault_chain);
26
27/* Hook to register for page fault notifications */
28int register_page_fault_notifier(struct notifier_block *nb)
29{
30 return atomic_notifier_chain_register(&notify_page_fault_chain, nb);
31}
32
33int unregister_page_fault_notifier(struct notifier_block *nb)
34{
35 return atomic_notifier_chain_unregister(&notify_page_fault_chain, nb);
36}
37
38static inline int notify_page_fault(enum die_val val, struct pt_regs *regs,
39 int trap, int sig)
40{
41 struct die_args args = {
42 .regs = regs,
43 .trapnr = trap,
44 };
45 return atomic_notifier_call_chain(&notify_page_fault_chain, val, &args);
46}
47#else
48static inline int notify_page_fault(enum die_val val, struct pt_regs *regs,
49 int trap, int sig)
50{
51 return NOTIFY_DONE;
52}
53#endif
24 54
25/* 55/*
26 * This routine handles page faults. It determines the address, 56 * This routine handles page faults. It determines the address,
@@ -39,6 +69,11 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs,
39 siginfo_t info; 69 siginfo_t info;
40 70
41 trace_hardirqs_on(); 71 trace_hardirqs_on();
72
73 if (notify_page_fault(DIE_PAGE_FAULT, regs,
74 writeaccess, SIGSEGV) == NOTIFY_STOP)
75 return;
76
42 local_irq_enable(); 77 local_irq_enable();
43 78
44#ifdef CONFIG_SH_KGDB 79#ifdef CONFIG_SH_KGDB
diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c
index ae957a932375..4d030988b368 100644
--- a/arch/sh/mm/init.c
+++ b/arch/sh/mm/init.c
@@ -1,37 +1,20 @@
1/* $Id: init.c,v 1.19 2004/02/21 04:42:16 kkojima Exp $ 1/*
2 * 2 * linux/arch/sh/mm/init.c
3 * linux/arch/sh/mm/init.c
4 * 3 *
5 * Copyright (C) 1999 Niibe Yutaka 4 * Copyright (C) 1999 Niibe Yutaka
6 * Copyright (C) 2002, 2004 Paul Mundt 5 * Copyright (C) 2002 - 2007 Paul Mundt
7 * 6 *
8 * Based on linux/arch/i386/mm/init.c: 7 * Based on linux/arch/i386/mm/init.c:
9 * Copyright (C) 1995 Linus Torvalds 8 * Copyright (C) 1995 Linus Torvalds
10 */ 9 */
11
12#include <linux/signal.h>
13#include <linux/sched.h>
14#include <linux/kernel.h>
15#include <linux/errno.h>
16#include <linux/string.h>
17#include <linux/types.h>
18#include <linux/ptrace.h>
19#include <linux/mman.h>
20#include <linux/mm.h> 10#include <linux/mm.h>
21#include <linux/swap.h> 11#include <linux/swap.h>
22#include <linux/smp.h>
23#include <linux/init.h> 12#include <linux/init.h>
24#include <linux/highmem.h>
25#include <linux/bootmem.h> 13#include <linux/bootmem.h>
26#include <linux/pagemap.h>
27#include <linux/proc_fs.h> 14#include <linux/proc_fs.h>
28#include <asm/processor.h> 15#include <linux/percpu.h>
29#include <asm/system.h> 16#include <linux/io.h>
30#include <asm/uaccess.h>
31#include <asm/pgtable.h>
32#include <asm/pgalloc.h>
33#include <asm/mmu_context.h> 17#include <asm/mmu_context.h>
34#include <asm/io.h>
35#include <asm/tlb.h> 18#include <asm/tlb.h>
36#include <asm/cacheflush.h> 19#include <asm/cacheflush.h>
37#include <asm/cache.h> 20#include <asm/cache.h>
@@ -39,37 +22,51 @@
39DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); 22DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
40pgd_t swapper_pg_dir[PTRS_PER_PGD]; 23pgd_t swapper_pg_dir[PTRS_PER_PGD];
41 24
42#ifdef CONFIG_MMU
43/* It'd be good if these lines were in the standard header file. */
44#define START_PFN (NODE_DATA(0)->bdata->node_boot_start >> PAGE_SHIFT)
45#define MAX_LOW_PFN (NODE_DATA(0)->bdata->node_low_pfn)
46#endif
47
48void (*copy_page)(void *from, void *to); 25void (*copy_page)(void *from, void *to);
49void (*clear_page)(void *to); 26void (*clear_page)(void *to);
50 27
51void show_mem(void) 28void show_mem(void)
52{ 29{
53 int i, total = 0, reserved = 0; 30 int total = 0, reserved = 0, free = 0;
54 int shared = 0, cached = 0; 31 int shared = 0, cached = 0, slab = 0;
32 pg_data_t *pgdat;
55 33
56 printk("Mem-info:\n"); 34 printk("Mem-info:\n");
57 show_free_areas(); 35 show_free_areas();
58 printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10)); 36
59 i = max_mapnr; 37 for_each_online_pgdat(pgdat) {
60 while (i-- > 0) { 38 struct page *page, *end;
61 total++; 39 unsigned long flags;
62 if (PageReserved(mem_map+i)) 40
63 reserved++; 41 pgdat_resize_lock(pgdat, &flags);
64 else if (PageSwapCache(mem_map+i)) 42 page = pgdat->node_mem_map;
65 cached++; 43 end = page + pgdat->node_spanned_pages;
66 else if (page_count(mem_map+i)) 44
67 shared += page_count(mem_map+i) - 1; 45 do {
46 total++;
47 if (PageReserved(page))
48 reserved++;
49 else if (PageSwapCache(page))
50 cached++;
51 else if (PageSlab(page))
52 slab++;
53 else if (!page_count(page))
54 free++;
55 else
56 shared += page_count(page) - 1;
57 page++;
58 } while (page < end);
59
60 pgdat_resize_unlock(pgdat, &flags);
68 } 61 }
69 printk("%d pages of RAM\n",total); 62
70 printk("%d reserved pages\n",reserved); 63 printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
71 printk("%d pages shared\n",shared); 64 printk("%d pages of RAM\n", total);
72 printk("%d pages swap cached\n",cached); 65 printk("%d free pages\n", free);
66 printk("%d reserved pages\n", reserved);
67 printk("%d slab pages\n", slab);
68 printk("%d pages shared\n", shared);
69 printk("%d pages swap cached\n", cached);
73} 70}
74 71
75#ifdef CONFIG_MMU 72#ifdef CONFIG_MMU
@@ -147,52 +144,38 @@ extern char __init_begin, __init_end;
147 */ 144 */
148void __init paging_init(void) 145void __init paging_init(void)
149{ 146{
150 unsigned long zones_size[MAX_NR_ZONES] = { 0, }; 147 int nid;
151 148
152 /* 149 /* We don't need to map the kernel through the TLB, as
153 * Setup some defaults for the zone sizes.. these should be safe 150 * it is permanatly mapped using P1. So clear the
154 * regardless of distcontiguous memory or MMU settings. 151 * entire pgd. */
155 */ 152 memset(swapper_pg_dir, 0, sizeof(swapper_pg_dir));
156 zones_size[ZONE_NORMAL] = __MEMORY_SIZE >> PAGE_SHIFT;
157#ifdef CONFIG_HIGHMEM
158 zones_size[ZONE_HIGHMEM] = 0 >> PAGE_SHIFT;
159#endif
160
161#ifdef CONFIG_MMU
162 /*
163 * If we have an MMU, and want to be using it .. we need to adjust
164 * the zone sizes accordingly, in addition to turning it on.
165 */
166 {
167 /* We don't need to map the kernel through the TLB, as
168 * it is permanatly mapped using P1. So clear the
169 * entire pgd. */
170 memset(swapper_pg_dir, 0, sizeof(swapper_pg_dir));
171
172 /* Turn on the MMU */
173 enable_mmu();
174 zones_size[ZONE_NORMAL] = MAX_LOW_PFN - START_PFN;
175 }
176 153
177 /* Set an initial value for the MMU.TTB so we don't have to 154 /* Set an initial value for the MMU.TTB so we don't have to
178 * check for a null value. */ 155 * check for a null value. */
179 set_TTB(swapper_pg_dir); 156 set_TTB(swapper_pg_dir);
180 157
181#elif defined(CONFIG_CPU_SH3) || defined(CONFIG_CPU_SH4) 158 for_each_online_node(nid) {
182 /* 159 pg_data_t *pgdat = NODE_DATA(nid);
183 * If we don't have CONFIG_MMU set and the processor in question 160 unsigned long max_zone_pfns[MAX_NR_ZONES];
184 * still has an MMU, care needs to be taken to make sure it doesn't 161 unsigned long low, start_pfn;
185 * stay on.. Since the boot loader could have potentially already 162
186 * turned it on, and we clearly don't want it, we simply turn it off. 163 memset(max_zone_pfns, 0, sizeof(max_zone_pfns));
187 * 164
188 * We don't need to do anything special for the zone sizes, since the 165 start_pfn = pgdat->bdata->node_boot_start >> PAGE_SHIFT;
189 * default values that were already configured up above should be 166 low = pgdat->bdata->node_low_pfn;
190 * satisfactory. 167
191 */ 168 max_zone_pfns[ZONE_NORMAL] = low;
192 disable_mmu(); 169 add_active_range(nid, start_pfn, low);
193#endif 170
194 NODE_DATA(0)->node_mem_map = NULL; 171 printk("Node %u: start_pfn = 0x%lx, low = 0x%lx\n",
195 free_area_init_node(0, NODE_DATA(0), zones_size, __MEMORY_START >> PAGE_SHIFT, 0); 172 nid, start_pfn, low);
173
174 free_area_init_nodes(max_zone_pfns);
175
176 printk("Node %u: mem_map starts at %p\n",
177 pgdat->node_id, pgdat->node_mem_map);
178 }
196} 179}
197 180
198static struct kcore_list kcore_mem, kcore_vmalloc; 181static struct kcore_list kcore_mem, kcore_vmalloc;
@@ -200,18 +183,33 @@ static struct kcore_list kcore_mem, kcore_vmalloc;
200void __init mem_init(void) 183void __init mem_init(void)
201{ 184{
202 int codesize, reservedpages, datasize, initsize; 185 int codesize, reservedpages, datasize, initsize;
203 int tmp; 186 int nid;
204 extern unsigned long memory_start;
205 187
206#ifdef CONFIG_MMU 188 reservedpages = 0;
207 high_memory = (void *)__va(MAX_LOW_PFN * PAGE_SIZE);
208#else
209 extern unsigned long memory_end;
210 189
211 high_memory = (void *)(memory_end & PAGE_MASK); 190 for_each_online_node(nid) {
212#endif 191 pg_data_t *pgdat = NODE_DATA(nid);
192 unsigned long node_pages = 0;
193 void *node_high_memory;
194 int i;
195
196 num_physpages += pgdat->node_present_pages;
197
198 if (pgdat->node_spanned_pages)
199 node_pages = free_all_bootmem_node(pgdat);
200
201 totalram_pages += node_pages;
213 202
214 max_mapnr = num_physpages = MAP_NR(high_memory) - MAP_NR(memory_start); 203 for (i = 0; i < node_pages; i++)
204 if (PageReserved(pgdat->node_mem_map + i))
205 reservedpages++;
206
207 node_high_memory = (void *)((pgdat->node_start_pfn +
208 pgdat->node_spanned_pages) <<
209 PAGE_SHIFT);
210 if (node_high_memory > high_memory)
211 high_memory = node_high_memory;
212 }
215 213
216 /* clear the zero-page */ 214 /* clear the zero-page */
217 memset(empty_zero_page, 0, PAGE_SIZE); 215 memset(empty_zero_page, 0, PAGE_SIZE);
@@ -229,16 +227,6 @@ void __init mem_init(void)
229 clear_page = clear_page_nommu; 227 clear_page = clear_page_nommu;
230#endif 228#endif
231 229
232 /* this will put all low memory onto the freelists */
233 totalram_pages += free_all_bootmem_node(NODE_DATA(0));
234 reservedpages = 0;
235 for (tmp = 0; tmp < num_physpages; tmp++)
236 /*
237 * Only count reserved RAM pages
238 */
239 if (PageReserved(mem_map+tmp))
240 reservedpages++;
241
242 codesize = (unsigned long) &_etext - (unsigned long) &_text; 230 codesize = (unsigned long) &_etext - (unsigned long) &_text;
243 datasize = (unsigned long) &_edata - (unsigned long) &_etext; 231 datasize = (unsigned long) &_edata - (unsigned long) &_etext;
244 initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; 232 initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin;
@@ -250,7 +238,7 @@ void __init mem_init(void)
250 printk(KERN_INFO "Memory: %luk/%luk available (%dk kernel code, " 238 printk(KERN_INFO "Memory: %luk/%luk available (%dk kernel code, "
251 "%dk reserved, %dk data, %dk init)\n", 239 "%dk reserved, %dk data, %dk init)\n",
252 (unsigned long) nr_free_pages() << (PAGE_SHIFT-10), 240 (unsigned long) nr_free_pages() << (PAGE_SHIFT-10),
253 max_mapnr << (PAGE_SHIFT-10), 241 totalram_pages << (PAGE_SHIFT-10),
254 codesize >> 10, 242 codesize >> 10,
255 reservedpages << (PAGE_SHIFT-10), 243 reservedpages << (PAGE_SHIFT-10),
256 datasize >> 10, 244 datasize >> 10,
@@ -289,4 +277,3 @@ void free_initrd_mem(unsigned long start, unsigned long end)
289 printk ("Freeing initrd memory: %ldk freed\n", (end - start) >> 10); 277 printk ("Freeing initrd memory: %ldk freed\n", (end - start) >> 10);
290} 278}
291#endif 279#endif
292
diff --git a/arch/sh/tools/mach-types b/arch/sh/tools/mach-types
index 4fe0f94cbf42..554f801db67b 100644
--- a/arch/sh/tools/mach-types
+++ b/arch/sh/tools/mach-types
@@ -9,6 +9,7 @@ SE SH_SOLUTION_ENGINE
97751SE SH_7751_SOLUTION_ENGINE 97751SE SH_7751_SOLUTION_ENGINE
107300SE SH_7300_SOLUTION_ENGINE 107300SE SH_7300_SOLUTION_ENGINE
117343SE SH_7343_SOLUTION_ENGINE 117343SE SH_7343_SOLUTION_ENGINE
127780SE SH_7780_SOLUTION_ENGINE
1273180SE SH_73180_SOLUTION_ENGINE 1373180SE SH_73180_SOLUTION_ENGINE
137751SYSTEMH SH_7751_SYSTEMH 147751SYSTEMH SH_7751_SYSTEMH
14HP6XX SH_HP6XX 15HP6XX SH_HP6XX
@@ -26,6 +27,7 @@ SH03 SH_SH03
26LANDISK SH_LANDISK 27LANDISK SH_LANDISK
27R7780RP SH_R7780RP 28R7780RP SH_R7780RP
28R7780MP SH_R7780MP 29R7780MP SH_R7780MP
30R7785RP SH_R7785RP
29TITAN SH_TITAN 31TITAN SH_TITAN
30SHMIN SH_SHMIN 32SHMIN SH_SHMIN
317710VOIPGW SH_7710VOIPGW 337710VOIPGW SH_7710VOIPGW
diff --git a/drivers/input/touchscreen/hp680_ts_input.c b/drivers/input/touchscreen/hp680_ts_input.c
index 249087472740..61c15024c2a0 100644
--- a/drivers/input/touchscreen/hp680_ts_input.c
+++ b/drivers/input/touchscreen/hp680_ts_input.c
@@ -21,7 +21,7 @@
21static void do_softint(void *data); 21static void do_softint(void *data);
22 22
23static struct input_dev *hp680_ts_dev; 23static struct input_dev *hp680_ts_dev;
24static DECLARE_WORK(work, do_softint, 0); 24static DECLARE_WORK(work, do_softint);
25 25
26static void do_softint(void *data) 26static void do_softint(void *data)
27{ 27{
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c
index 46c40bbc4bc6..1f89496d530e 100644
--- a/drivers/serial/sh-sci.c
+++ b/drivers/serial/sh-sci.c
@@ -46,6 +46,7 @@
46#endif 46#endif
47 47
48#if defined(CONFIG_SUPERH) && !defined(CONFIG_SUPERH64) 48#if defined(CONFIG_SUPERH) && !defined(CONFIG_SUPERH64)
49#include <linux/ctype.h>
49#include <asm/clock.h> 50#include <asm/clock.h>
50#include <asm/sh_bios.h> 51#include <asm/sh_bios.h>
51#include <asm/kgdb.h> 52#include <asm/kgdb.h>
@@ -61,7 +62,7 @@ struct sci_port {
61 unsigned int type; 62 unsigned int type;
62 63
63 /* Port IRQs: ERI, RXI, TXI, BRI (optional) */ 64 /* Port IRQs: ERI, RXI, TXI, BRI (optional) */
64 unsigned int irqs[SCIx_NR_IRQS]; 65 unsigned int irqs[SCIx_NR_IRQS];
65 66
66 /* Port pin configuration */ 67 /* Port pin configuration */
67 void (*init_pins)(struct uart_port *port, 68 void (*init_pins)(struct uart_port *port,
@@ -76,6 +77,11 @@ struct sci_port {
76 /* Break timer */ 77 /* Break timer */
77 struct timer_list break_timer; 78 struct timer_list break_timer;
78 int break_flag; 79 int break_flag;
80
81#if defined(CONFIG_SUPERH) && !defined(CONFIG_SUPERH64)
82 /* Port clock */
83 struct clk *clk;
84#endif
79}; 85};
80 86
81#ifdef CONFIG_SH_KGDB 87#ifdef CONFIG_SH_KGDB
@@ -163,7 +169,7 @@ static void put_string(struct sci_port *sci_port, const char *buffer, int count)
163 usegdb |= sh_bios_in_gdb_mode(); 169 usegdb |= sh_bios_in_gdb_mode();
164#endif 170#endif
165#ifdef CONFIG_SH_KGDB 171#ifdef CONFIG_SH_KGDB
166 usegdb |= (kgdb_in_gdb_mode && (port == kgdb_sci_port)); 172 usegdb |= (kgdb_in_gdb_mode && (sci_port == kgdb_sci_port));
167#endif 173#endif
168 174
169 if (usegdb) { 175 if (usegdb) {
@@ -204,7 +210,7 @@ static int kgdb_sci_getchar(void)
204 int c; 210 int c;
205 211
206 /* Keep trying to read a character, this could be neater */ 212 /* Keep trying to read a character, this could be neater */
207 while ((c = get_char(kgdb_sci_port)) < 0) 213 while ((c = get_char(&kgdb_sci_port->port)) < 0)
208 cpu_relax(); 214 cpu_relax();
209 215
210 return c; 216 return c;
@@ -212,7 +218,7 @@ static int kgdb_sci_getchar(void)
212 218
213static inline void kgdb_sci_putchar(int c) 219static inline void kgdb_sci_putchar(int c)
214{ 220{
215 put_char(kgdb_sci_port, c); 221 put_char(&kgdb_sci_port->port, c);
216} 222}
217#endif /* CONFIG_SH_KGDB */ 223#endif /* CONFIG_SH_KGDB */
218 224
@@ -283,12 +289,23 @@ static void sci_init_pins_irda(struct uart_port *port, unsigned int cflag)
283#endif 289#endif
284 290
285#if defined(SCIF_ONLY) || defined(SCI_AND_SCIF) 291#if defined(SCIF_ONLY) || defined(SCI_AND_SCIF)
286#if defined(CONFIG_CPU_SUBTYPE_SH7300) || defined(CONFIG_CPU_SUBTYPE_SH7710) 292#if defined(CONFIG_CPU_SUBTYPE_SH7300)
287/* SH7300 doesn't use RTS/CTS */ 293/* SH7300 doesn't use RTS/CTS */
288static void sci_init_pins_scif(struct uart_port *port, unsigned int cflag) 294static void sci_init_pins_scif(struct uart_port *port, unsigned int cflag)
289{ 295{
290 sci_out(port, SCFCR, 0); 296 sci_out(port, SCFCR, 0);
291} 297}
298#elif defined(CONFIG_CPU_SUBTYPE_SH7710) || defined(CONFIG_CPU_SUBTYPE_SH7712)
299static void sci_init_pins_scif(struct uart_port* port, unsigned int cflag)
300{
301 unsigned int fcr_val = 0;
302
303 set_sh771x_scif_pfc(port);
304 if (cflag & CRTSCTS) {
305 fcr_val |= SCFCR_MCE;
306 }
307 sci_out(port, SCFCR, fcr_val);
308}
292#elif defined(CONFIG_CPU_SH3) 309#elif defined(CONFIG_CPU_SH3)
293/* For SH7705, SH7706, SH7707, SH7709, SH7709A, SH7729 */ 310/* For SH7705, SH7706, SH7707, SH7709, SH7709A, SH7729 */
294static void sci_init_pins_scif(struct uart_port *port, unsigned int cflag) 311static void sci_init_pins_scif(struct uart_port *port, unsigned int cflag)
@@ -350,7 +367,7 @@ static void sci_init_pins_scif(struct uart_port *port, unsigned int cflag)
350 } else { 367 } else {
351#ifdef CONFIG_CPU_SUBTYPE_SH7343 368#ifdef CONFIG_CPU_SUBTYPE_SH7343
352 /* Nothing */ 369 /* Nothing */
353#elif defined(CONFIG_CPU_SUBTYPE_SH7780) 370#elif defined(CONFIG_CPU_SUBTYPE_SH7780) || defined(CONFIG_CPU_SUBTYPE_SH7785)
354 ctrl_outw(0x0080, SCSPTR0); /* Set RTS = 1 */ 371 ctrl_outw(0x0080, SCSPTR0); /* Set RTS = 1 */
355#else 372#else
356 ctrl_outw(0x0080, SCSPTR2); /* Set RTS = 1 */ 373 ctrl_outw(0x0080, SCSPTR2); /* Set RTS = 1 */
@@ -360,7 +377,9 @@ static void sci_init_pins_scif(struct uart_port *port, unsigned int cflag)
360} 377}
361#endif 378#endif
362 379
363#if defined(CONFIG_CPU_SUBTYPE_SH7760) || defined(CONFIG_CPU_SUBTYPE_SH7780) 380#if defined(CONFIG_CPU_SUBTYPE_SH7760) || \
381 defined(CONFIG_CPU_SUBTYPE_SH7780) || \
382 defined(CONFIG_CPU_SUBTYPE_SH7785)
364static inline int scif_txroom(struct uart_port *port) 383static inline int scif_txroom(struct uart_port *port)
365{ 384{
366 return SCIF_TXROOM_MAX - (sci_in(port, SCTFDR) & 0x7f); 385 return SCIF_TXROOM_MAX - (sci_in(port, SCTFDR) & 0x7f);
@@ -735,12 +754,6 @@ static irqreturn_t sci_br_interrupt(int irq, void *ptr)
735 754
736 /* Handle BREAKs */ 755 /* Handle BREAKs */
737 sci_handle_breaks(port); 756 sci_handle_breaks(port);
738
739#ifdef CONFIG_SH_KGDB
740 /* Break into the debugger if a break is detected */
741 BREAKPOINT();
742#endif
743
744 sci_out(port, SCxSR, SCxSR_BREAK_CLEAR(port)); 757 sci_out(port, SCxSR, SCxSR_BREAK_CLEAR(port));
745 758
746 return IRQ_HANDLED; 759 return IRQ_HANDLED;
@@ -947,6 +960,10 @@ static int sci_startup(struct uart_port *port)
947 if (s->enable) 960 if (s->enable)
948 s->enable(port); 961 s->enable(port);
949 962
963#if defined(CONFIG_SUPERH) && !defined(CONFIG_SUPERH64)
964 s->clk = clk_get(NULL, "module_clk");
965#endif
966
950 sci_request_irq(s); 967 sci_request_irq(s);
951 sci_start_tx(port); 968 sci_start_tx(port);
952 sci_start_rx(port, 1); 969 sci_start_rx(port, 1);
@@ -964,6 +981,11 @@ static void sci_shutdown(struct uart_port *port)
964 981
965 if (s->disable) 982 if (s->disable)
966 s->disable(port); 983 s->disable(port);
984
985#if defined(CONFIG_SUPERH) && !defined(CONFIG_SUPERH64)
986 clk_put(s->clk);
987 s->clk = NULL;
988#endif
967} 989}
968 990
969static void sci_set_termios(struct uart_port *port, struct ktermios *termios, 991static void sci_set_termios(struct uart_port *port, struct ktermios *termios,
@@ -971,7 +993,6 @@ static void sci_set_termios(struct uart_port *port, struct ktermios *termios,
971{ 993{
972 struct sci_port *s = &sci_ports[port->line]; 994 struct sci_port *s = &sci_ports[port->line];
973 unsigned int status, baud, smr_val; 995 unsigned int status, baud, smr_val;
974 unsigned long flags;
975 int t; 996 int t;
976 997
977 baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16); 998 baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16);
@@ -983,18 +1004,14 @@ static void sci_set_termios(struct uart_port *port, struct ktermios *termios,
983 default: 1004 default:
984 { 1005 {
985#if defined(CONFIG_SUPERH) && !defined(CONFIG_SUPERH64) 1006#if defined(CONFIG_SUPERH) && !defined(CONFIG_SUPERH64)
986 struct clk *clk = clk_get(NULL, "module_clk"); 1007 t = SCBRR_VALUE(baud, clk_get_rate(s->clk));
987 t = SCBRR_VALUE(baud, clk_get_rate(clk));
988 clk_put(clk);
989#else 1008#else
990 t = SCBRR_VALUE(baud); 1009 t = SCBRR_VALUE(baud);
991#endif 1010#endif
992 }
993 break; 1011 break;
1012 }
994 } 1013 }
995 1014
996 spin_lock_irqsave(&port->lock, flags);
997
998 do { 1015 do {
999 status = sci_in(port, SCxSR); 1016 status = sci_in(port, SCxSR);
1000 } while (!(status & SCxSR_TEND(port))); 1017 } while (!(status & SCxSR_TEND(port)));
@@ -1038,8 +1055,6 @@ static void sci_set_termios(struct uart_port *port, struct ktermios *termios,
1038 1055
1039 if ((termios->c_cflag & CREAD) != 0) 1056 if ((termios->c_cflag & CREAD) != 0)
1040 sci_start_rx(port,0); 1057 sci_start_rx(port,0);
1041
1042 spin_unlock_irqrestore(&port->lock, flags);
1043} 1058}
1044 1059
1045static const char *sci_type(struct uart_port *port) 1060static const char *sci_type(struct uart_port *port)
@@ -1220,10 +1235,13 @@ static int __init serial_console_setup(struct console *co, char *options)
1220 if (!port->membase || !port->mapbase) 1235 if (!port->membase || !port->mapbase)
1221 return -ENODEV; 1236 return -ENODEV;
1222 1237
1223 spin_lock_init(&port->lock);
1224
1225 port->type = serial_console_port->type; 1238 port->type = serial_console_port->type;
1226 1239
1240#if defined(CONFIG_SUPERH) && !defined(CONFIG_SUPERH64)
1241 if (!serial_console_port->clk)
1242 serial_console_port->clk = clk_get(NULL, "module_clk");
1243#endif
1244
1227 if (port->flags & UPF_IOREMAP) 1245 if (port->flags & UPF_IOREMAP)
1228 sci_config_port(port, 0); 1246 sci_config_port(port, 0);
1229 1247
@@ -1247,7 +1265,7 @@ static struct console serial_console = {
1247 .device = uart_console_device, 1265 .device = uart_console_device,
1248 .write = serial_console_write, 1266 .write = serial_console_write,
1249 .setup = serial_console_setup, 1267 .setup = serial_console_setup,
1250 .flags = CON_PRINTBUFFER, 1268 .flags = CON_PRINTBUFFER,
1251 .index = -1, 1269 .index = -1,
1252 .data = &sci_uart_driver, 1270 .data = &sci_uart_driver,
1253}; 1271};
@@ -1292,11 +1310,23 @@ int __init kgdb_console_setup(struct console *co, char *options)
1292 int parity = 'n'; 1310 int parity = 'n';
1293 int flow = 'n'; 1311 int flow = 'n';
1294 1312
1295 spin_lock_init(&port->lock);
1296
1297 if (co->index != kgdb_portnum) 1313 if (co->index != kgdb_portnum)
1298 co->index = kgdb_portnum; 1314 co->index = kgdb_portnum;
1299 1315
1316 kgdb_sci_port = &sci_ports[co->index];
1317 port = &kgdb_sci_port->port;
1318
1319 /*
1320 * Also need to check port->type, we don't actually have any
1321 * UPIO_PORT ports, but uart_report_port() handily misreports
1322 * it anyways if we don't have a port available by the time this is
1323 * called.
1324 */
1325 if (!port->type)
1326 return -ENODEV;
1327 if (!port->membase || !port->mapbase)
1328 return -ENODEV;
1329
1300 if (options) 1330 if (options)
1301 uart_parse_options(options, &baud, &parity, &bits, &flow); 1331 uart_parse_options(options, &baud, &parity, &bits, &flow);
1302 else 1332 else
@@ -1311,11 +1341,12 @@ int __init kgdb_console_setup(struct console *co, char *options)
1311 1341
1312#ifdef CONFIG_SH_KGDB_CONSOLE 1342#ifdef CONFIG_SH_KGDB_CONSOLE
1313static struct console kgdb_console = { 1343static struct console kgdb_console = {
1314 .name = "ttySC", 1344 .name = "ttySC",
1315 .write = kgdb_console_write, 1345 .device = uart_console_device,
1316 .setup = kgdb_console_setup, 1346 .write = kgdb_console_write,
1317 .flags = CON_PRINTBUFFER | CON_ENABLED, 1347 .setup = kgdb_console_setup,
1318 .index = -1, 1348 .flags = CON_PRINTBUFFER,
1349 .index = -1,
1319 .data = &sci_uart_driver, 1350 .data = &sci_uart_driver,
1320}; 1351};
1321 1352
@@ -1361,9 +1392,19 @@ static int __devinit sci_probe(struct platform_device *dev)
1361 struct plat_sci_port *p = dev->dev.platform_data; 1392 struct plat_sci_port *p = dev->dev.platform_data;
1362 int i; 1393 int i;
1363 1394
1364 for (i = 0; p && p->flags != 0 && i < SCI_NPORTS; p++, i++) { 1395 for (i = 0; p && p->flags != 0; p++, i++) {
1365 struct sci_port *sciport = &sci_ports[i]; 1396 struct sci_port *sciport = &sci_ports[i];
1366 1397
1398 /* Sanity check */
1399 if (unlikely(i == SCI_NPORTS)) {
1400 dev_notice(&dev->dev, "Attempting to register port "
1401 "%d when only %d are available.\n",
1402 i+1, SCI_NPORTS);
1403 dev_notice(&dev->dev, "Consider bumping "
1404 "CONFIG_SERIAL_SH_SCI_NR_UARTS!\n");
1405 break;
1406 }
1407
1367 sciport->port.mapbase = p->mapbase; 1408 sciport->port.mapbase = p->mapbase;
1368 1409
1369 /* 1410 /*
@@ -1386,6 +1427,12 @@ static int __devinit sci_probe(struct platform_device *dev)
1386 uart_add_one_port(&sci_uart_driver, &sciport->port); 1427 uart_add_one_port(&sci_uart_driver, &sciport->port);
1387 } 1428 }
1388 1429
1430#if defined(CONFIG_SH_KGDB) && !defined(CONFIG_SH_KGDB_CONSOLE)
1431 kgdb_sci_port = &sci_ports[kgdb_portnum];
1432 kgdb_getchar = kgdb_sci_getchar;
1433 kgdb_putchar = kgdb_sci_putchar;
1434#endif
1435
1389#ifdef CONFIG_CPU_FREQ 1436#ifdef CONFIG_CPU_FREQ
1390 cpufreq_register_notifier(&sci_nb, CPUFREQ_TRANSITION_NOTIFIER); 1437 cpufreq_register_notifier(&sci_nb, CPUFREQ_TRANSITION_NOTIFIER);
1391 dev_info(&dev->dev, "sci: CPU frequency notifier registered\n"); 1438 dev_info(&dev->dev, "sci: CPU frequency notifier registered\n");
diff --git a/drivers/serial/sh-sci.h b/drivers/serial/sh-sci.h
index 77f7d6351ab1..fb04fb5f9843 100644
--- a/drivers/serial/sh-sci.h
+++ b/drivers/serial/sh-sci.h
@@ -73,9 +73,13 @@
73# define SCPDR 0xA4050136 /* 16 bit SCIF */ 73# define SCPDR 0xA4050136 /* 16 bit SCIF */
74# define SCSCR_INIT(port) 0x0030 /* TIE=0,RIE=0,TE=1,RE=1 */ 74# define SCSCR_INIT(port) 0x0030 /* TIE=0,RIE=0,TE=1,RE=1 */
75# define SCIF_ONLY 75# define SCIF_ONLY
76#elif defined(CONFIG_CPU_SUBTYPE_SH7710) 76#elif defined(CONFIG_CPU_SUBTYPE_SH7710) || defined(CONFIG_CPU_SUBTYPE_SH7712)
77# define SCSPTR0 0xA4400000 /* 16 bit SCIF */ 77# define SCSPTR0 0xA4400000 /* 16 bit SCIF */
78# define SCSCR_INIT(port) 0x0030 /* TIE=0,RIE=0,TE=1,RE=1 */ 78# define SCI_NPORTS 2
79# define SCIF_ORER 0x0001 /* overrun error bit */
80# define PACR 0xa4050100
81# define PBCR 0xa4050102
82# define SCSCR_INIT(port) 0x3B
79# define SCIF_ONLY 83# define SCIF_ONLY
80#elif defined(CONFIG_CPU_SUBTYPE_SH73180) 84#elif defined(CONFIG_CPU_SUBTYPE_SH73180)
81# define SCPDR 0xA4050138 /* 16 bit SCIF */ 85# define SCPDR 0xA4050138 /* 16 bit SCIF */
@@ -140,6 +144,16 @@
140# define SCIF_ORER 0x0001 /* Overrun error bit */ 144# define SCIF_ORER 0x0001 /* Overrun error bit */
141# define SCSCR_INIT(port) 0x3a /* TIE=0,RIE=0,TE=1,RE=1,REIE=1 */ 145# define SCSCR_INIT(port) 0x3a /* TIE=0,RIE=0,TE=1,RE=1,REIE=1 */
142# define SCIF_ONLY 146# define SCIF_ONLY
147#elif defined(CONFIG_CPU_SUBTYPE_SH7785)
148# define SCSPTR0 0xffea0024 /* 16 bit SCIF */
149# define SCSPTR1 0xffeb0024 /* 16 bit SCIF */
150# define SCSPTR2 0xffec0024 /* 16 bit SCIF */
151# define SCSPTR3 0xffed0024 /* 16 bit SCIF */
152# define SCSPTR4 0xffee0024 /* 16 bit SCIF */
153# define SCSPTR5 0xffef0024 /* 16 bit SCIF */
154# define SCIF_OPER 0x0001 /* Overrun error bit */
155# define SCSCR_INIT(port) 0x3a /* TIE=0,RIE=0,TE=1,RE=1,REIE=1 */
156# define SCIF_ONLY
143#elif defined(CONFIG_CPU_SUBTYPE_SH7206) 157#elif defined(CONFIG_CPU_SUBTYPE_SH7206)
144# define SCSPTR0 0xfffe8020 /* 16 bit SCIF */ 158# define SCSPTR0 0xfffe8020 /* 16 bit SCIF */
145# define SCSPTR1 0xfffe8820 /* 16 bit SCIF */ 159# define SCSPTR1 0xfffe8820 /* 16 bit SCIF */
@@ -163,7 +177,10 @@
163#define SCI_CTRL_FLAGS_RIE 0x40 /* all */ 177#define SCI_CTRL_FLAGS_RIE 0x40 /* all */
164#define SCI_CTRL_FLAGS_TE 0x20 /* all */ 178#define SCI_CTRL_FLAGS_TE 0x20 /* all */
165#define SCI_CTRL_FLAGS_RE 0x10 /* all */ 179#define SCI_CTRL_FLAGS_RE 0x10 /* all */
166#if defined(CONFIG_CPU_SUBTYPE_SH7750) || defined(CONFIG_CPU_SUBTYPE_SH7751) || defined(CONFIG_CPU_SUBTYPE_SH7780) 180#if defined(CONFIG_CPU_SUBTYPE_SH7750) || \
181 defined(CONFIG_CPU_SUBTYPE_SH7751) || \
182 defined(CONFIG_CPU_SUBTYPE_SH7780) || \
183 defined(CONFIG_CPU_SUBTYPE_SH7785)
167#define SCI_CTRL_FLAGS_REIE 0x08 /* 7750 SCIF */ 184#define SCI_CTRL_FLAGS_REIE 0x08 /* 7750 SCIF */
168#else 185#else
169#define SCI_CTRL_FLAGS_REIE 0 186#define SCI_CTRL_FLAGS_REIE 0
@@ -333,9 +350,15 @@
333 } 350 }
334 351
335#ifdef CONFIG_CPU_SH3 352#ifdef CONFIG_CPU_SH3
336#if defined(CONFIG_CPU_SUBTYPE_SH7300) || \ 353#if defined(CONFIG_CPU_SUBTYPE_SH7710) || defined(CONFIG_CPU_SUBTYPE_SH7712)
337 defined(CONFIG_CPU_SUBTYPE_SH7705) || \ 354#define SCIx_FNS(name, sh3_sci_offset, sh3_sci_size, sh4_sci_offset, sh4_sci_size, \
338 defined(CONFIG_CPU_SUBTYPE_SH7710) 355 sh3_scif_offset, sh3_scif_size, sh4_scif_offset, sh4_scif_size, \
356 h8_sci_offset, h8_sci_size) \
357 CPU_SCIx_FNS(name, sh4_sci_offset, sh4_sci_size, sh4_scif_offset, sh4_scif_size)
358#define SCIF_FNS(name, sh3_scif_offset, sh3_scif_size, sh4_scif_offset, sh4_scif_size) \
359 CPU_SCIF_FNS(name, sh4_scif_offset, sh4_scif_size)
360#elif defined(CONFIG_CPU_SUBTYPE_SH7300) || \
361 defined(CONFIG_CPU_SUBTYPE_SH7705)
339#define SCIF_FNS(name, scif_offset, scif_size) \ 362#define SCIF_FNS(name, scif_offset, scif_size) \
340 CPU_SCIF_FNS(name, scif_offset, scif_size) 363 CPU_SCIF_FNS(name, scif_offset, scif_size)
341#else 364#else
@@ -362,8 +385,8 @@
362#endif 385#endif
363 386
364#if defined(CONFIG_CPU_SUBTYPE_SH7300) || \ 387#if defined(CONFIG_CPU_SUBTYPE_SH7300) || \
365 defined(CONFIG_CPU_SUBTYPE_SH7705) || \ 388 defined(CONFIG_CPU_SUBTYPE_SH7705)
366 defined(CONFIG_CPU_SUBTYPE_SH7710) 389
367SCIF_FNS(SCSMR, 0x00, 16) 390SCIF_FNS(SCSMR, 0x00, 16)
368SCIF_FNS(SCBRR, 0x04, 8) 391SCIF_FNS(SCBRR, 0x04, 8)
369SCIF_FNS(SCSCR, 0x08, 16) 392SCIF_FNS(SCSCR, 0x08, 16)
@@ -385,7 +408,9 @@ SCIx_FNS(SCxTDR, 0x06, 8, 0x0c, 8, 0x06, 8, 0x0C, 8, 0x03, 8)
385SCIx_FNS(SCxSR, 0x08, 8, 0x10, 8, 0x08, 16, 0x10, 16, 0x04, 8) 408SCIx_FNS(SCxSR, 0x08, 8, 0x10, 8, 0x08, 16, 0x10, 16, 0x04, 8)
386SCIx_FNS(SCxRDR, 0x0a, 8, 0x14, 8, 0x0A, 8, 0x14, 8, 0x05, 8) 409SCIx_FNS(SCxRDR, 0x0a, 8, 0x14, 8, 0x0A, 8, 0x14, 8, 0x05, 8)
387SCIF_FNS(SCFCR, 0x0c, 8, 0x18, 16) 410SCIF_FNS(SCFCR, 0x0c, 8, 0x18, 16)
388#if defined(CONFIG_CPU_SUBTYPE_SH7760) || defined(CONFIG_CPU_SUBTYPE_SH7780) 411#if defined(CONFIG_CPU_SUBTYPE_SH7760) || \
412 defined(CONFIG_CPU_SUBTYPE_SH7780) || \
413 defined(CONFIG_CPU_SUBTYPE_SH7785)
389SCIF_FNS(SCFDR, 0x0e, 16, 0x1C, 16) 414SCIF_FNS(SCFDR, 0x0e, 16, 0x1C, 16)
390SCIF_FNS(SCTFDR, 0x0e, 16, 0x1C, 16) 415SCIF_FNS(SCTFDR, 0x0e, 16, 0x1C, 16)
391SCIF_FNS(SCRFDR, 0x0e, 16, 0x20, 16) 416SCIF_FNS(SCRFDR, 0x0e, 16, 0x20, 16)
@@ -471,13 +496,24 @@ static inline int sci_rxd_in(struct uart_port *port)
471 return ctrl_inb(SCPDR)&0x10 ? 1 : 0; /* SCIF */ 496 return ctrl_inb(SCPDR)&0x10 ? 1 : 0; /* SCIF */
472 return 1; 497 return 1;
473} 498}
474#elif defined(CONFIG_CPU_SUBTYPE_SH7710) 499#elif defined(CONFIG_CPU_SUBTYPE_SH7710) || defined(CONFIG_CPU_SUBTYPE_SH7712)
475static inline int sci_rxd_in(struct uart_port *port) 500static inline int sci_rxd_in(struct uart_port *port)
476{ 501{
477 if (port->mapbase == SCSPTR0) 502 return sci_in(port,SCxSR)&0x0010 ? 1 : 0;
478 return ctrl_inw(SCSPTR0 + 0x10) & 0x01 ? 1 : 0; 503}
479 return 1; 504static inline void set_sh771x_scif_pfc(struct uart_port *port)
505{
506 if (port->mapbase == 0xA4400000){
507 ctrl_outw(ctrl_inw(PACR)&0xffc0,PACR);
508 ctrl_outw(ctrl_inw(PBCR)&0x0fff,PBCR);
509 return;
510 }
511 if (port->mapbase == 0xA4410000){
512 ctrl_outw(ctrl_inw(PBCR)&0xf003,PBCR);
513 return;
514 }
480} 515}
516
481#elif defined(CONFIG_CPU_SUBTYPE_SH7750) || \ 517#elif defined(CONFIG_CPU_SUBTYPE_SH7750) || \
482 defined(CONFIG_CPU_SUBTYPE_SH7751) || \ 518 defined(CONFIG_CPU_SUBTYPE_SH7751) || \
483 defined(CONFIG_CPU_SUBTYPE_SH4_202) 519 defined(CONFIG_CPU_SUBTYPE_SH4_202)
@@ -576,6 +612,23 @@ static inline int sci_rxd_in(struct uart_port *port)
576 return ctrl_inw(SCSPTR1) & 0x0001 ? 1 : 0; /* SCIF */ 612 return ctrl_inw(SCSPTR1) & 0x0001 ? 1 : 0; /* SCIF */
577 return 1; 613 return 1;
578} 614}
615#elif defined(CONFIG_CPU_SUBTYPE_SH7785)
616static inline int sci_rxd_in(struct uart_port *port)
617{
618 if (port->mapbase == 0xffea0000)
619 return ctrl_inw(SCSPTR0) & 0x0001 ? 1 : 0; /* SCIF */
620 if (port->mapbase == 0xffeb0000)
621 return ctrl_inw(SCSPTR1) & 0x0001 ? 1 : 0; /* SCIF */
622 if (port->mapbase == 0xffec0000)
623 return ctrl_inw(SCSPTR2) & 0x0001 ? 1 : 0; /* SCIF */
624 if (port->mapbase == 0xffed0000)
625 return ctrl_inw(SCSPTR3) & 0x0001 ? 1 : 0; /* SCIF */
626 if (port->mapbase == 0xffee0000)
627 return ctrl_inw(SCSPTR4) & 0x0001 ? 1 : 0; /* SCIF */
628 if (port->mapbase == 0xffef0000)
629 return ctrl_inw(SCSPTR5) & 0x0001 ? 1 : 0; /* SCIF */
630 return 1;
631}
579#elif defined(CONFIG_CPU_SUBTYPE_SH7206) 632#elif defined(CONFIG_CPU_SUBTYPE_SH7206)
580static inline int sci_rxd_in(struct uart_port *port) 633static inline int sci_rxd_in(struct uart_port *port)
581{ 634{
@@ -634,7 +687,9 @@ static inline int sci_rxd_in(struct uart_port *port)
634 * -- Mitch Davis - 15 Jul 2000 687 * -- Mitch Davis - 15 Jul 2000
635 */ 688 */
636 689
637#if defined(CONFIG_CPU_SUBTYPE_SH7300) || defined(CONFIG_CPU_SUBTYPE_SH7780) 690#if defined(CONFIG_CPU_SUBTYPE_SH7300) || \
691 defined(CONFIG_CPU_SUBTYPE_SH7780) || \
692 defined(CONFIG_CPU_SUBTYPE_SH7785)
638#define SCBRR_VALUE(bps, clk) ((clk+16*bps)/(16*bps)-1) 693#define SCBRR_VALUE(bps, clk) ((clk+16*bps)/(16*bps)-1)
639#elif defined(CONFIG_CPU_SUBTYPE_SH7705) 694#elif defined(CONFIG_CPU_SUBTYPE_SH7705)
640#define SCBRR_VALUE(bps, clk) (((clk*2)+16*bps)/(32*bps)-1) 695#define SCBRR_VALUE(bps, clk) (((clk*2)+16*bps)/(32*bps)-1)
diff --git a/include/asm-sh/bug.h b/include/asm-sh/bug.h
index 2f89dd06d0cd..794c36daf06d 100644
--- a/include/asm-sh/bug.h
+++ b/include/asm-sh/bug.h
@@ -2,50 +2,80 @@
2#define __ASM_SH_BUG_H 2#define __ASM_SH_BUG_H
3 3
4#ifdef CONFIG_BUG 4#ifdef CONFIG_BUG
5 5#define HAVE_ARCH_BUG
6struct bug_frame { 6#define HAVE_ARCH_WARN_ON
7 unsigned short opcode;
8 unsigned short line;
9 const char *file;
10 const char *func;
11};
12
13struct pt_regs;
14
15extern void handle_BUG(struct pt_regs *);
16 7
17#define TRAPA_BUG_OPCODE 0xc33e /* trapa #0x3e */ 8#define TRAPA_BUG_OPCODE 0xc33e /* trapa #0x3e */
18 9
10/**
11 * _EMIT_BUG_ENTRY
12 * %1 - __FILE__
13 * %2 - __LINE__
14 * %3 - trap type
15 * %4 - sizeof(struct bug_entry)
16 *
17 * The trapa opcode itself sits in %0.
18 * The %O notation is used to avoid # generation.
19 *
20 * The offending file and line are encoded in the __bug_table section.
21 */
19#ifdef CONFIG_DEBUG_BUGVERBOSE 22#ifdef CONFIG_DEBUG_BUGVERBOSE
23#define _EMIT_BUG_ENTRY \
24 "\t.pushsection __bug_table,\"a\"\n" \
25 "2:\t.long 1b, %O1\n" \
26 "\t.short %O2, %O3\n" \
27 "\t.org 2b+%O4\n" \
28 "\t.popsection\n"
29#else
30#define _EMIT_BUG_ENTRY \
31 "\t.pushsection __bug_table,\"a\"\n" \
32 "2:\t.long 1b\n" \
33 "\t.short %O3\n" \
34 "\t.org 2b+%O4\n" \
35 "\t.popsection\n"
36#endif
20 37
21#define BUG() \ 38#define BUG() \
22do { \ 39do { \
23 __asm__ __volatile__ ( \ 40 __asm__ __volatile__ ( \
24 ".align 2\n\t" \ 41 "1:\t.short %O0\n" \
25 ".short %O0\n\t" \ 42 _EMIT_BUG_ENTRY \
26 ".short %O1\n\t" \ 43 : \
27 ".long %O2\n\t" \ 44 : "n" (TRAPA_BUG_OPCODE), \
28 ".long %O3\n\t" \ 45 "i" (__FILE__), \
29 : \ 46 "i" (__LINE__), "i" (0), \
30 : "n" (TRAPA_BUG_OPCODE), \ 47 "i" (sizeof(struct bug_entry))); \
31 "i" (__LINE__), "X" (__FILE__), \
32 "X" (__FUNCTION__)); \
33} while (0) 48} while (0)
34 49
35#else 50#define __WARN() \
36 51do { \
37#define BUG() \ 52 __asm__ __volatile__ ( \
38do { \ 53 "1:\t.short %O0\n" \
39 __asm__ __volatile__ ( \ 54 _EMIT_BUG_ENTRY \
40 ".align 2\n\t" \ 55 : \
41 ".short %O0\n\t" \ 56 : "n" (TRAPA_BUG_OPCODE), \
42 : \ 57 "i" (__FILE__), \
43 : "n" (TRAPA_BUG_OPCODE)); \ 58 "i" (__LINE__), \
59 "i" (BUGFLAG_WARNING), \
60 "i" (sizeof(struct bug_entry))); \
44} while (0) 61} while (0)
45 62
46#endif /* CONFIG_DEBUG_BUGVERBOSE */ 63#define WARN_ON(x) ({ \
64 typeof(x) __ret_warn_on = (x); \
65 if (__builtin_constant_p(__ret_warn_on)) { \
66 if (__ret_warn_on) \
67 __WARN(); \
68 } else { \
69 if (unlikely(__ret_warn_on)) \
70 __WARN(); \
71 } \
72 unlikely(__ret_warn_on); \
73})
47 74
48#define HAVE_ARCH_BUG 75struct pt_regs;
76
77/* arch/sh/kernel/traps.c */
78void handle_BUG(struct pt_regs *);
49 79
50#endif /* CONFIG_BUG */ 80#endif /* CONFIG_BUG */
51 81
diff --git a/include/asm-sh/clock.h b/include/asm-sh/clock.h
index 1df92807f8c5..386d797d86b7 100644
--- a/include/asm-sh/clock.h
+++ b/include/asm-sh/clock.h
@@ -13,7 +13,7 @@ struct clk_ops {
13 void (*enable)(struct clk *clk); 13 void (*enable)(struct clk *clk);
14 void (*disable)(struct clk *clk); 14 void (*disable)(struct clk *clk);
15 void (*recalc)(struct clk *clk); 15 void (*recalc)(struct clk *clk);
16 int (*set_rate)(struct clk *clk, unsigned long rate); 16 int (*set_rate)(struct clk *clk, unsigned long rate, int algo_id);
17}; 17};
18 18
19struct clk { 19struct clk {
@@ -48,6 +48,34 @@ void clk_recalc_rate(struct clk *);
48int clk_register(struct clk *); 48int clk_register(struct clk *);
49void clk_unregister(struct clk *); 49void clk_unregister(struct clk *);
50 50
51int show_clocks(struct seq_file *m); 51/* the exported API, in addition to clk_set_rate */
52/**
53 * clk_set_rate_ex - set the clock rate for a clock source, with additional parameter
54 * @clk: clock source
55 * @rate: desired clock rate in Hz
56 * @algo_id: algorithm id to be passed down to ops->set_rate
57 *
58 * Returns success (0) or negative errno.
59 */
60int clk_set_rate_ex(struct clk *clk, unsigned long rate, int algo_id);
52 61
62enum clk_sh_algo_id {
63 NO_CHANGE = 0,
64
65 IUS_N1_N1,
66 IUS_322,
67 IUS_522,
68 IUS_N11,
69
70 SB_N1,
71
72 SB3_N1,
73 SB3_32,
74 SB3_43,
75 SB3_54,
76
77 BP_N1,
78
79 IP_N1,
80};
53#endif /* __ASM_SH_CLOCK_H */ 81#endif /* __ASM_SH_CLOCK_H */
diff --git a/include/asm-sh/cpu-sh3/mmu_context.h b/include/asm-sh/cpu-sh3/mmu_context.h
index bccb7ddb438b..4704e86dff5b 100644
--- a/include/asm-sh/cpu-sh3/mmu_context.h
+++ b/include/asm-sh/cpu-sh3/mmu_context.h
@@ -32,6 +32,7 @@
32 defined(CONFIG_CPU_SUBTYPE_SH7706) || \ 32 defined(CONFIG_CPU_SUBTYPE_SH7706) || \
33 defined(CONFIG_CPU_SUBTYPE_SH7300) || \ 33 defined(CONFIG_CPU_SUBTYPE_SH7300) || \
34 defined(CONFIG_CPU_SUBTYPE_SH7705) || \ 34 defined(CONFIG_CPU_SUBTYPE_SH7705) || \
35 defined(CONFIG_CPU_SUBTYPE_SH7712) || \
35 defined(CONFIG_CPU_SUBTYPE_SH7710) 36 defined(CONFIG_CPU_SUBTYPE_SH7710)
36#define INTEVT 0xa4000000 /* INTEVTE2(0xa4000000) */ 37#define INTEVT 0xa4000000 /* INTEVTE2(0xa4000000) */
37#else 38#else
diff --git a/include/asm-sh/cpu-sh4/freq.h b/include/asm-sh/cpu-sh4/freq.h
index 602d061ca2dc..86564e7a26ae 100644
--- a/include/asm-sh/cpu-sh4/freq.h
+++ b/include/asm-sh/cpu-sh4/freq.h
@@ -12,8 +12,16 @@
12 12
13#if defined(CONFIG_CPU_SUBTYPE_SH73180) || defined(CONFIG_CPU_SUBTYPE_SH7722) 13#if defined(CONFIG_CPU_SUBTYPE_SH73180) || defined(CONFIG_CPU_SUBTYPE_SH7722)
14#define FRQCR 0xa4150000 14#define FRQCR 0xa4150000
15#define VCLKCR 0xa4150004
16#define SCLKACR 0xa4150008
17#define SCLKBCR 0xa415000c
18#define IrDACLKCR 0xa4150010
15#elif defined(CONFIG_CPU_SUBTYPE_SH7780) 19#elif defined(CONFIG_CPU_SUBTYPE_SH7780)
16#define FRQCR 0xffc80000 20#define FRQCR 0xffc80000
21#elif defined(CONFIG_CPU_SUBTYPE_SH7785)
22#define FRQCR0 0xffc80000
23#define FRQCR1 0xffc80004
24#define FRQMR1 0xffc80014
17#else 25#else
18#define FRQCR 0xffc00000 26#define FRQCR 0xffc00000
19#endif 27#endif
diff --git a/include/asm-sh/irq.h b/include/asm-sh/irq.h
index afe188f0ad5f..e81bf21c801e 100644
--- a/include/asm-sh/irq.h
+++ b/include/asm-sh/irq.h
@@ -2,94 +2,13 @@
2#define __ASM_SH_IRQ_H 2#define __ASM_SH_IRQ_H
3 3
4#include <asm/machvec.h> 4#include <asm/machvec.h>
5#include <asm/ptrace.h> /* for pt_regs */
6 5
7/* NR_IRQS is made from three components: 6/*
8 * 1. ONCHIP_NR_IRQS - number of IRLS + on-chip peripherial modules 7 * A sane default based on a reasonable vector table size, platforms are
9 * 2. PINT_NR_IRQS - number of PINT interrupts 8 * advised to cap this at the hard limit that they're interested in
10 * 3. OFFCHIP_NR_IRQS - numbe of IRQs from off-chip peripherial modules 9 * through the machvec.
11 */ 10 */
12 11#define NR_IRQS 256
13/* 1. ONCHIP_NR_IRQS */
14#if defined(CONFIG_CPU_SUBTYPE_SH7604)
15# define ONCHIP_NR_IRQS 24 // Actually 21
16#elif defined(CONFIG_CPU_SUBTYPE_SH7707)
17# define ONCHIP_NR_IRQS 64
18# define PINT_NR_IRQS 16
19#elif defined(CONFIG_CPU_SUBTYPE_SH7708)
20# define ONCHIP_NR_IRQS 32
21#elif defined(CONFIG_CPU_SUBTYPE_SH7709) || \
22 defined(CONFIG_CPU_SUBTYPE_SH7706) || \
23 defined(CONFIG_CPU_SUBTYPE_SH7705)
24# define ONCHIP_NR_IRQS 64 // Actually 61
25# define PINT_NR_IRQS 16
26#elif defined(CONFIG_CPU_SUBTYPE_SH7710)
27# define ONCHIP_NR_IRQS 104
28#elif defined(CONFIG_CPU_SUBTYPE_SH7750)
29# define ONCHIP_NR_IRQS 48 // Actually 44
30#elif defined(CONFIG_CPU_SUBTYPE_SH7751)
31# define ONCHIP_NR_IRQS 72
32#elif defined(CONFIG_CPU_SUBTYPE_SH7760)
33# define ONCHIP_NR_IRQS 112 /* XXX */
34#elif defined(CONFIG_CPU_SUBTYPE_SH4_202)
35# define ONCHIP_NR_IRQS 72
36#elif defined(CONFIG_CPU_SUBTYPE_ST40STB1)
37# define ONCHIP_NR_IRQS 144
38#elif defined(CONFIG_CPU_SUBTYPE_SH7300) || \
39 defined(CONFIG_CPU_SUBTYPE_SH73180) || \
40 defined(CONFIG_CPU_SUBTYPE_SH7343) || \
41 defined(CONFIG_CPU_SUBTYPE_SH7722)
42# define ONCHIP_NR_IRQS 109
43#elif defined(CONFIG_CPU_SUBTYPE_SH7780)
44# define ONCHIP_NR_IRQS 111
45#elif defined(CONFIG_CPU_SUBTYPE_SH7206)
46# define ONCHIP_NR_IRQS 256
47#elif defined(CONFIG_CPU_SUBTYPE_SH7619)
48# define ONCHIP_NR_IRQS 128
49#elif defined(CONFIG_SH_UNKNOWN) /* Most be last */
50# define ONCHIP_NR_IRQS 144
51#endif
52
53/* 2. PINT_NR_IRQS */
54#ifdef CONFIG_SH_UNKNOWN
55# define PINT_NR_IRQS 16
56#else
57# ifndef PINT_NR_IRQS
58# define PINT_NR_IRQS 0
59# endif
60#endif
61
62#if PINT_NR_IRQS > 0
63# define PINT_IRQ_BASE ONCHIP_NR_IRQS
64#endif
65
66/* 3. OFFCHIP_NR_IRQS */
67#if defined(CONFIG_HD64461)
68# define OFFCHIP_NR_IRQS 18
69#elif defined(CONFIG_HD64465)
70# define OFFCHIP_NR_IRQS 16
71#elif defined (CONFIG_SH_DREAMCAST)
72# define OFFCHIP_NR_IRQS 96
73#elif defined (CONFIG_SH_TITAN)
74# define OFFCHIP_NR_IRQS 4
75#elif defined(CONFIG_SH_R7780RP)
76# define OFFCHIP_NR_IRQS 16
77#elif defined(CONFIG_SH_7343_SOLUTION_ENGINE)
78# define OFFCHIP_NR_IRQS 12
79#elif defined(CONFIG_SH_7722_SOLUTION_ENGINE)
80# define OFFCHIP_NR_IRQS 14
81#elif defined(CONFIG_SH_UNKNOWN)
82# define OFFCHIP_NR_IRQS 16 /* Must also be last */
83#else
84# define OFFCHIP_NR_IRQS 0
85#endif
86
87#if OFFCHIP_NR_IRQS > 0
88# define OFFCHIP_IRQ_BASE (ONCHIP_NR_IRQS + PINT_NR_IRQS)
89#endif
90
91/* NR_IRQS. 1+2+3 */
92#define NR_IRQS (ONCHIP_NR_IRQS + PINT_NR_IRQS + OFFCHIP_NR_IRQS)
93 12
94/* 13/*
95 * Convert back and forth between INTEVT and IRQ values. 14 * Convert back and forth between INTEVT and IRQ values.
diff --git a/include/asm-sh/kdebug.h b/include/asm-sh/kdebug.h
new file mode 100644
index 000000000000..ef009baf5a11
--- /dev/null
+++ b/include/asm-sh/kdebug.h
@@ -0,0 +1,35 @@
1#ifndef __ASM_SH_KDEBUG_H
2#define __ASM_SH_KDEBUG_H
3
4#include <linux/notifier.h>
5
6struct pt_regs;
7
8struct die_args {
9 struct pt_regs *regs;
10 int trapnr;
11};
12
13int register_die_notifier(struct notifier_block *nb);
14int unregister_die_notifier(struct notifier_block *nb);
15int register_page_fault_notifier(struct notifier_block *nb);
16int unregister_page_fault_notifier(struct notifier_block *nb);
17extern struct atomic_notifier_head shdie_chain;
18
19/* Grossly misnamed. */
20enum die_val {
21 DIE_TRAP,
22 DIE_PAGE_FAULT,
23};
24
25static inline int notify_die(enum die_val val, struct pt_regs *regs,
26 int trap, int sig)
27{
28 struct die_args args = {
29 .regs = regs,
30 .trapnr = trap,
31 };
32
33 return atomic_notifier_call_chain(&shdie_chain, val, &args);
34}
35#endif /* __ASM_SH_KDEBUG_H */
diff --git a/include/asm-sh/kexec.h b/include/asm-sh/kexec.h
index 9d235af20cdd..da36a7548601 100644
--- a/include/asm-sh/kexec.h
+++ b/include/asm-sh/kexec.h
@@ -1,5 +1,8 @@
1#ifndef _SH_KEXEC_H 1#ifndef __ASM_SH_KEXEC_H
2#define _SH_KEXEC_H 2#define __ASM_SH_KEXEC_H
3
4#include <asm/ptrace.h>
5#include <asm/string.h>
3 6
4/* 7/*
5 * KEXEC_SOURCE_MEMORY_LIMIT maximum page get_free_page can return. 8 * KEXEC_SOURCE_MEMORY_LIMIT maximum page get_free_page can return.
@@ -25,8 +28,37 @@
25 28
26#define MAX_NOTE_BYTES 1024 29#define MAX_NOTE_BYTES 1024
27 30
28/* Provide a dummy definition to avoid build failures. */
29static inline void crash_setup_regs(struct pt_regs *newregs, 31static inline void crash_setup_regs(struct pt_regs *newregs,
30 struct pt_regs *oldregs) { } 32 struct pt_regs *oldregs)
33{
34 if (oldregs)
35 memcpy(newregs, oldregs, sizeof(*newregs));
36 else {
37 __asm__ __volatile__ ("mov r0, %0" : "=r" (newregs->regs[0]));
38 __asm__ __volatile__ ("mov r1, %0" : "=r" (newregs->regs[1]));
39 __asm__ __volatile__ ("mov r2, %0" : "=r" (newregs->regs[2]));
40 __asm__ __volatile__ ("mov r3, %0" : "=r" (newregs->regs[3]));
41 __asm__ __volatile__ ("mov r4, %0" : "=r" (newregs->regs[4]));
42 __asm__ __volatile__ ("mov r5, %0" : "=r" (newregs->regs[5]));
43 __asm__ __volatile__ ("mov r6, %0" : "=r" (newregs->regs[6]));
44 __asm__ __volatile__ ("mov r7, %0" : "=r" (newregs->regs[7]));
45 __asm__ __volatile__ ("mov r8, %0" : "=r" (newregs->regs[8]));
46 __asm__ __volatile__ ("mov r9, %0" : "=r" (newregs->regs[9]));
47 __asm__ __volatile__ ("mov r10, %0" : "=r" (newregs->regs[10]));
48 __asm__ __volatile__ ("mov r11, %0" : "=r" (newregs->regs[11]));
49 __asm__ __volatile__ ("mov r12, %0" : "=r" (newregs->regs[12]));
50 __asm__ __volatile__ ("mov r13, %0" : "=r" (newregs->regs[13]));
51 __asm__ __volatile__ ("mov r14, %0" : "=r" (newregs->regs[14]));
52 __asm__ __volatile__ ("mov r15, %0" : "=r" (newregs->regs[15]));
53
54 __asm__ __volatile__ ("sts pr, %0" : "=r" (newregs->pr));
55 __asm__ __volatile__ ("sts macl, %0" : "=r" (newregs->macl));
56 __asm__ __volatile__ ("sts mach, %0" : "=r" (newregs->mach));
57
58 __asm__ __volatile__ ("stc gbr, %0" : "=r" (newregs->gbr));
59 __asm__ __volatile__ ("stc sr, %0" : "=r" (newregs->sr));
31 60
32#endif /* _SH_KEXEC_H */ 61 newregs->pc = (unsigned long)current_text_addr();
62 }
63}
64#endif /* __ASM_SH_KEXEC_H */
diff --git a/include/asm-sh/kgdb.h b/include/asm-sh/kgdb.h
index 0095c665d272..74bd0953e5ce 100644
--- a/include/asm-sh/kgdb.h
+++ b/include/asm-sh/kgdb.h
@@ -17,6 +17,7 @@
17#define __KGDB_H 17#define __KGDB_H
18 18
19#include <asm/ptrace.h> 19#include <asm/ptrace.h>
20#include <asm/cacheflush.h>
20 21
21struct console; 22struct console;
22 23
@@ -45,35 +46,21 @@ extern int kgdb_portnum;
45extern int kgdb_baud; 46extern int kgdb_baud;
46extern char kgdb_parity; 47extern char kgdb_parity;
47extern char kgdb_bits; 48extern char kgdb_bits;
48extern int kgdb_console_setup(struct console *, char *);
49 49
50/* Init and interface stuff */ 50/* Init and interface stuff */
51extern int kgdb_init(void); 51extern int kgdb_init(void);
52extern int (*kgdb_serial_setup)(void);
53extern int (*kgdb_getchar)(void); 52extern int (*kgdb_getchar)(void);
54extern void (*kgdb_putchar)(int); 53extern void (*kgdb_putchar)(int);
55 54
56struct kgdb_sermap {
57 char *name;
58 int namelen;
59 int (*setup_fn)(struct console *, char *);
60 struct kgdb_sermap *next;
61};
62extern void kgdb_register_sermap(struct kgdb_sermap *map);
63extern struct kgdb_sermap *kgdb_porttype;
64
65/* Trap functions */ 55/* Trap functions */
66typedef void (kgdb_debug_hook_t)(struct pt_regs *regs); 56typedef void (kgdb_debug_hook_t)(struct pt_regs *regs);
67typedef void (kgdb_bus_error_hook_t)(void); 57typedef void (kgdb_bus_error_hook_t)(void);
68extern kgdb_debug_hook_t *kgdb_debug_hook; 58extern kgdb_debug_hook_t *kgdb_debug_hook;
69extern kgdb_bus_error_hook_t *kgdb_bus_err_hook; 59extern kgdb_bus_error_hook_t *kgdb_bus_err_hook;
70 60
71extern void breakpoint(void);
72
73/* Console */ 61/* Console */
74struct console;
75void kgdb_console_write(struct console *co, const char *s, unsigned count); 62void kgdb_console_write(struct console *co, const char *s, unsigned count);
76void kgdb_console_init(void); 63extern int kgdb_console_setup(struct console *, char *);
77 64
78/* Prototypes for jmp fns */ 65/* Prototypes for jmp fns */
79#define _JBLEN 9 66#define _JBLEN 9
@@ -81,11 +68,8 @@ typedef int jmp_buf[_JBLEN];
81extern void longjmp(jmp_buf __jmpb, int __retval); 68extern void longjmp(jmp_buf __jmpb, int __retval);
82extern int setjmp(jmp_buf __jmpb); 69extern int setjmp(jmp_buf __jmpb);
83 70
84/* Variadic macro to print our own message to the console */
85#define KGDB_PRINTK(...) printk("KGDB: " __VA_ARGS__)
86
87/* Forced breakpoint */ 71/* Forced breakpoint */
88#define BREAKPOINT() \ 72#define breakpoint() \
89do { \ 73do { \
90 if (kgdb_enabled) \ 74 if (kgdb_enabled) \
91 __asm__ __volatile__("trapa #0x3c"); \ 75 __asm__ __volatile__("trapa #0x3c"); \
@@ -95,7 +79,6 @@ do { \
95#if defined(CONFIG_CPU_SH4) 79#if defined(CONFIG_CPU_SH4)
96#define kgdb_flush_icache_range(start, end) \ 80#define kgdb_flush_icache_range(start, end) \
97{ \ 81{ \
98 extern void __flush_purge_region(void *, int); \
99 __flush_purge_region((void*)(start), (int)(end) - (int)(start));\ 82 __flush_purge_region((void*)(start), (int)(end) - (int)(start));\
100 flush_icache_range((start), (end)); \ 83 flush_icache_range((start), (end)); \
101} 84}
@@ -103,31 +86,6 @@ do { \
103#define kgdb_flush_icache_range(start, end) do { } while (0) 86#define kgdb_flush_icache_range(start, end) do { } while (0)
104#endif 87#endif
105 88
106/* Kernel assert macros */
107#ifdef CONFIG_KGDB_KERNEL_ASSERTS
108
109/* Predefined conditions */
110#define KA_VALID_ERRNO(errno) ((errno) > 0 && (errno) <= EMEDIUMTYPE)
111#define KA_VALID_PTR_ERR(ptr) KA_VALID_ERRNO(-PTR_ERR(ptr))
112#define KA_VALID_KPTR(ptr) (!(ptr) || \
113 ((void *)(ptr) >= (void *)PAGE_OFFSET && \
114 (void *)(ptr) < ERR_PTR(-EMEDIUMTYPE)))
115#define KA_VALID_PTRORERR(errptr) \
116 (KA_VALID_KPTR(errptr) || KA_VALID_PTR_ERR(errptr))
117#define KA_HELD_GKL() (current->lock_depth >= 0)
118
119/* The actual assert */
120#define KGDB_ASSERT(condition, message) do { \
121 if (!(condition) && (kgdb_enabled)) { \
122 KGDB_PRINTK("Assertion failed at %s:%d: %s\n", \
123 __FILE__, __LINE__, message);\
124 BREAKPOINT(); \
125 } \
126} while (0)
127#else
128#define KGDB_ASSERT(condition, message)
129#endif
130
131/* Taken from sh-stub.c of GDB 4.18 */ 89/* Taken from sh-stub.c of GDB 4.18 */
132static const char hexchars[] = "0123456789abcdef"; 90static const char hexchars[] = "0123456789abcdef";
133 91
@@ -142,5 +100,4 @@ static inline char lowhex(const int x)
142{ 100{
143 return hexchars[x & 0xf]; 101 return hexchars[x & 0xf];
144} 102}
145
146#endif 103#endif
diff --git a/include/asm-sh/lboxre2.h b/include/asm-sh/lboxre2.h
new file mode 100644
index 000000000000..e6d160504923
--- /dev/null
+++ b/include/asm-sh/lboxre2.h
@@ -0,0 +1,27 @@
1#ifndef __ASM_SH_LBOXRE2_H
2#define __ASM_SH_LBOXRE2_H
3
4/*
5 * Copyright (C) 2007 Nobuhiro Iwamatsu
6 *
7 * NTT COMWARE L-BOX RE2 support
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 */
14
15#define IRQ_CF1 9 /* CF1 */
16#define IRQ_CF0 10 /* CF0 */
17#define IRQ_INTD 11 /* INTD */
18#define IRQ_ETH1 12 /* Ether1 */
19#define IRQ_ETH0 13 /* Ether0 */
20#define IRQ_INTA 14 /* INTA */
21
22void init_lboxre2_IRQ(void);
23
24#define __IO_PREFIX lboxre2
25#include <asm/io_generic.h>
26
27#endif /* __ASM_SH_LBOXRE2_H */
diff --git a/include/asm-sh/mmu_context.h b/include/asm-sh/mmu_context.h
index 01acaaae9751..199662bb35c6 100644
--- a/include/asm-sh/mmu_context.h
+++ b/include/asm-sh/mmu_context.h
@@ -169,6 +169,8 @@ enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk)
169#define destroy_context(mm) do { } while (0) 169#define destroy_context(mm) do { } while (0)
170#define set_asid(asid) do { } while (0) 170#define set_asid(asid) do { } while (0)
171#define get_asid() (0) 171#define get_asid() (0)
172#define set_TTB(pgd) do { } while (0)
173#define get_TTB() (0)
172#define activate_context(mm,cpu) do { } while (0) 174#define activate_context(mm,cpu) do { } while (0)
173#define switch_mm(prev,next,tsk) do { } while (0) 175#define switch_mm(prev,next,tsk) do { } while (0)
174#define deactivate_mm(tsk,mm) do { } while (0) 176#define deactivate_mm(tsk,mm) do { } while (0)
@@ -211,8 +213,8 @@ static inline void disable_mmu(void)
211 * MMU control handlers for processors lacking memory 213 * MMU control handlers for processors lacking memory
212 * management hardware. 214 * management hardware.
213 */ 215 */
214#define enable_mmu() do { BUG(); } while (0) 216#define enable_mmu() do { } while (0)
215#define disable_mmu() do { BUG(); } while (0) 217#define disable_mmu() do { } while (0)
216#endif 218#endif
217 219
218#endif /* __KERNEL__ */ 220#endif /* __KERNEL__ */
diff --git a/include/asm-sh/page.h b/include/asm-sh/page.h
index ac4b4677f28c..7464de4ba07d 100644
--- a/include/asm-sh/page.h
+++ b/include/asm-sh/page.h
@@ -59,6 +59,7 @@ extern void (*clear_page)(void *to);
59extern void (*copy_page)(void *to, void *from); 59extern 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;
62 63
63#ifdef CONFIG_MMU 64#ifdef CONFIG_MMU
64extern void clear_page_slow(void *to); 65extern void clear_page_slow(void *to);
@@ -124,17 +125,16 @@ typedef struct { unsigned long pgd; } pgd_t;
124#define PAGE_OFFSET CONFIG_PAGE_OFFSET 125#define PAGE_OFFSET CONFIG_PAGE_OFFSET
125#define __pa(x) ((unsigned long)(x)-PAGE_OFFSET) 126#define __pa(x) ((unsigned long)(x)-PAGE_OFFSET)
126#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET)) 127#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET))
128#define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT)
127 129
128#define MAP_NR(addr) (((unsigned long)(addr)-PAGE_OFFSET) >> PAGE_SHIFT) 130#define phys_to_page(phys) (pfn_to_page(phys >> PAGE_SHIFT))
129 131#define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
130#define phys_to_page(phys) (mem_map + (((phys)-__MEMORY_START) >> PAGE_SHIFT))
131#define page_to_phys(page) (((page - mem_map) << PAGE_SHIFT) + __MEMORY_START)
132 132
133/* PFN start number, because of __MEMORY_START */ 133/* PFN start number, because of __MEMORY_START */
134#define PFN_START (__MEMORY_START >> PAGE_SHIFT) 134#define PFN_START (__MEMORY_START >> PAGE_SHIFT)
135#define ARCH_PFN_OFFSET (PFN_START) 135#define ARCH_PFN_OFFSET (PFN_START)
136#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) 136#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
137#define pfn_valid(pfn) (((pfn) - PFN_START) < max_mapnr) 137#define pfn_valid(pfn) ((pfn) >= min_low_pfn && (pfn) < max_low_pfn)
138#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) 138#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
139 139
140#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ 140#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \
diff --git a/include/asm-sh/param.h b/include/asm-sh/param.h
index ce13064fec21..1012296e07ab 100644
--- a/include/asm-sh/param.h
+++ b/include/asm-sh/param.h
@@ -5,7 +5,7 @@
5# ifdef CONFIG_SH_WDT 5# ifdef CONFIG_SH_WDT
6# define HZ 1000 /* Needed for high-res WOVF */ 6# define HZ 1000 /* Needed for high-res WOVF */
7# else 7# else
8# define HZ 100 8# define HZ CONFIG_HZ
9# endif 9# endif
10# define USER_HZ 100 /* User interfaces are in "ticks" */ 10# define USER_HZ 100 /* User interfaces are in "ticks" */
11# define CLOCKS_PER_SEC (USER_HZ) /* frequency at which times() counts */ 11# define CLOCKS_PER_SEC (USER_HZ) /* frequency at which times() counts */
diff --git a/include/asm-sh/pci.h b/include/asm-sh/pci.h
index 6ccc948fe216..b1f9a9e0231e 100644
--- a/include/asm-sh/pci.h
+++ b/include/asm-sh/pci.h
@@ -35,7 +35,7 @@ extern struct pci_channel board_pci_channels[];
35/* 35/*
36 * I/O routine helpers 36 * I/O routine helpers
37 */ 37 */
38#ifdef CONFIG_CPU_SUBTYPE_SH7780 38#if defined(CONFIG_CPU_SUBTYPE_SH7780) || defined(CONFIG_CPU_SUBTYPE_SH7785)
39#define PCI_IO_AREA 0xFE400000 39#define PCI_IO_AREA 0xFE400000
40#define PCI_IO_SIZE 0x00400000 40#define PCI_IO_SIZE 0x00400000
41#else 41#else
diff --git a/include/asm-sh/processor.h b/include/asm-sh/processor.h
index 3e46a7afe764..d42f68e724fa 100644
--- a/include/asm-sh/processor.h
+++ b/include/asm-sh/processor.h
@@ -44,7 +44,7 @@ enum cpu_type {
44 /* SH-3 types */ 44 /* SH-3 types */
45 CPU_SH7705, CPU_SH7706, CPU_SH7707, 45 CPU_SH7705, CPU_SH7706, CPU_SH7707,
46 CPU_SH7708, CPU_SH7708S, CPU_SH7708R, 46 CPU_SH7708, CPU_SH7708S, CPU_SH7708R,
47 CPU_SH7709, CPU_SH7709A, CPU_SH7710, 47 CPU_SH7709, CPU_SH7709A, CPU_SH7710, CPU_SH7712,
48 CPU_SH7729, CPU_SH7300, 48 CPU_SH7729, CPU_SH7300,
49 49
50 /* SH-4 types */ 50 /* SH-4 types */
diff --git a/include/asm-sh/r7780rp.h b/include/asm-sh/r7780rp.h
index c18f648a7995..4083b5949928 100644
--- a/include/asm-sh/r7780rp.h
+++ b/include/asm-sh/r7780rp.h
@@ -1,17 +1,11 @@
1#ifndef __ASM_SH_RENESAS_R7780RP_H 1#ifndef __ASM_SH_RENESAS_R7780RP_H
2#define __ASM_SH_RENESAS_R7780RP_H 2#define __ASM_SH_RENESAS_R7780RP_H
3 3
4/*
5 * linux/include/asm-sh/r7780rp.h
6 *
7 * Copyright (C) 2000 Atom Create Engineering Co., Ltd.
8 *
9 * Renesas Solutions Highlander R7780RP support
10 */
11
12/* Box specific addresses. */ 4/* Box specific addresses. */
13#if defined(CONFIG_SH_R7780MP) 5#if defined(CONFIG_SH_R7780MP)
14#define PA_BCR 0xa4000000 /* FPGA */ 6#define PA_BCR 0xa4000000 /* FPGA */
7#define PA_SDPOW (-1)
8
15#define PA_IRLMSK (PA_BCR+0x0000) /* Interrupt Mask control */ 9#define PA_IRLMSK (PA_BCR+0x0000) /* Interrupt Mask control */
16#define PA_IRLMON (PA_BCR+0x0002) /* Interrupt Status control */ 10#define PA_IRLMON (PA_BCR+0x0002) /* Interrupt Status control */
17#define PA_IRLPRI1 (PA_BCR+0x0004) /* Interrupt Priorty 1 */ 11#define PA_IRLPRI1 (PA_BCR+0x0004) /* Interrupt Priorty 1 */
@@ -70,18 +64,12 @@
70#define PA_POFF (PA_BCR+0x0800) /* System Power Off control */ 64#define PA_POFF (PA_BCR+0x0800) /* System Power Off control */
71#define PA_PMR (PA_BCR+0x0900) /* */ 65#define PA_PMR (PA_BCR+0x0900) /* */
72 66
73#define PA_AX88796L 0xa4100400 /* AX88796L Area */
74#define PA_SC1602BSLB 0xa6000000 /* SC1602BSLB Area */
75#define PA_IDE_OFFSET 0x1f0 /* CF IDE Offset */
76#define AX88796L_IO_BASE 0x1000 /* AX88796L IO Base Address */
77
78#define IRLCNTR1 (PA_BCR + 0) /* Interrupt Control Register1 */ 67#define IRLCNTR1 (PA_BCR + 0) /* Interrupt Control Register1 */
79 68
80#define IRQ_PCISLOT1 65 /* PCI Slot #1 IRQ */ 69#define IRQ_PCISLOT1 65 /* PCI Slot #1 IRQ */
81#define IRQ_PCISLOT2 66 /* PCI Slot #2 IRQ */ 70#define IRQ_PCISLOT2 66 /* PCI Slot #2 IRQ */
82#define IRQ_PCISLOT3 67 /* PCI Slot #3 IRQ */ 71#define IRQ_PCISLOT3 67 /* PCI Slot #3 IRQ */
83#define IRQ_PCISLOT4 68 /* PCI Slot #4 IRQ */ 72#define IRQ_PCISLOT4 68 /* PCI Slot #4 IRQ */
84// #define IRQ_CFINST 0 /* CF Card Insert IRQ */
85#define IRQ_TP 2 /* Touch Panel IRQ */ 73#define IRQ_TP 2 /* Touch Panel IRQ */
86#define IRQ_SCI1 3 /* SCI1 IRQ */ 74#define IRQ_SCI1 3 /* SCI1 IRQ */
87#define IRQ_SCI0 4 /* SCI0 IRQ */ 75#define IRQ_SCI0 4 /* SCI0 IRQ */
@@ -95,7 +83,10 @@
95#define IRQ_ONETH 13 /* On board Ethernet IRQ */ 83#define IRQ_ONETH 13 /* On board Ethernet IRQ */
96#define IRQ_PSW 14 /* Push Switch IRQ */ 84#define IRQ_PSW 14 /* Push Switch IRQ */
97 85
98#else /* R7780RP */ 86#define IVDR_CK_ON 8 /* iVDR Clock ON */
87
88#elif defined(CONFIG_SH_R7780RP)
89#define PA_POFF (-1)
99 90
100#define PA_BCR 0xa5000000 /* FPGA */ 91#define PA_BCR 0xa5000000 /* FPGA */
101#define PA_IRLMSK (PA_BCR+0x0000) /* Interrupt Mask control */ 92#define PA_IRLMSK (PA_BCR+0x0000) /* Interrupt Mask control */
@@ -163,7 +154,60 @@
163#define IRQ_PSW 13 /* Push Switch IRQ */ 154#define IRQ_PSW 13 /* Push Switch IRQ */
164#define IRQ_ZIGBEE 14 /* Ziggbee IO IRQ */ 155#define IRQ_ZIGBEE 14 /* Ziggbee IO IRQ */
165 156
166#endif /* CONFIG_SH_R7780MP */ 157#define IVDR_CK_ON 8 /* iVDR Clock ON */
158
159#elif defined(CONFIG_SH_R7785RP)
160#define PA_BCR 0xa4000000 /* FPGA */
161#define PA_SDPOW (-1)
162
163#define PA_PCISCR (PA_BCR+0x0000)
164#define PA_IRLPRA (PA_BCR+0x0002)
165#define PA_IRLPRB (PA_BCR+0x0004)
166#define PA_IRLPRC (PA_BCR+0x0006)
167#define PA_IRLPRD (PA_BCR+0x0008)
168#define IRLCNTR1 (PA_BCR+0x0010)
169#define PA_IRLPRE (PA_BCR+0x000a)
170#define PA_IRLPRF (PA_BCR+0x000c)
171#define PA_EXIRLCR (PA_BCR+0x000e)
172#define PA_IRLMCR1 (PA_BCR+0x0010)
173#define PA_IRLMCR2 (PA_BCR+0x0012)
174#define PA_IRLSSR1 (PA_BCR+0x0014)
175#define PA_IRLSSR2 (PA_BCR+0x0016)
176#define PA_CFTCR (PA_BCR+0x0100)
177#define PA_CFPCR (PA_BCR+0x0102)
178#define PA_PCICR (PA_BCR+0x0110)
179#define PA_IVDRCTL (PA_BCR+0x0112)
180#define PA_IVDRSR (PA_BCR+0x0114)
181#define PA_PDRSTCR (PA_BCR+0x0116)
182#define PA_POFF (PA_BCR+0x0120)
183#define PA_LCDCR (PA_BCR+0x0130)
184#define PA_TPCR (PA_BCR+0x0140)
185#define PA_TPCKCR (PA_BCR+0x0142)
186#define PA_TPRSTR (PA_BCR+0x0144)
187#define PA_TPXPDR (PA_BCR+0x0146)
188#define PA_TPYPDR (PA_BCR+0x0148)
189#define PA_GPIOPFR (PA_BCR+0x0150)
190#define PA_GPIODR (PA_BCR+0x0152)
191#define PA_OBLED (PA_BCR+0x0154)
192#define PA_SWSR (PA_BCR+0x0156)
193#define PA_VERREG (PA_BCR+0x0158)
194#define PA_SMCR (PA_BCR+0x0200)
195#define PA_SMSMADR (PA_BCR+0x0202)
196#define PA_SMMR (PA_BCR+0x0204)
197#define PA_SMSADR1 (PA_BCR+0x0206)
198#define PA_SMSADR32 (PA_BCR+0x0244)
199#define PA_SMTRDR1 (PA_BCR+0x0246)
200#define PA_SMTRDR16 (PA_BCR+0x0264)
201#define PA_CU3MDR (PA_BCR+0x0300)
202#define PA_CU5MDR (PA_BCR+0x0302)
203#define PA_MMSR (PA_BCR+0x0400)
204
205#define IVDR_CK_ON 4 /* iVDR Clock ON */
206
207#endif
208
209void make_r7780rp_irq(unsigned int irq);
210void highlander_init_irq(void);
167 211
168#define __IO_PREFIX r7780rp 212#define __IO_PREFIX r7780rp
169#include <asm/io_generic.h> 213#include <asm/io_generic.h>
diff --git a/include/asm-sh/se.h b/include/asm-sh/se.h
index a1832154a3aa..bd2596c014a9 100644
--- a/include/asm-sh/se.h
+++ b/include/asm-sh/se.h
@@ -69,9 +69,11 @@
69#define BCR_ILCRG (PA_BCR + 12) 69#define BCR_ILCRG (PA_BCR + 12)
70 70
71#if defined(CONFIG_CPU_SUBTYPE_SH7705) 71#if defined(CONFIG_CPU_SUBTYPE_SH7705)
72#define IRQ_STNIC 12 72#define IRQ_STNIC 12
73#define IRQ_CFCARD 14
73#else 74#else
74#define IRQ_STNIC 10 75#define IRQ_STNIC 10
76#define IRQ_CFCARD 7
75#endif 77#endif
76 78
77#define __IO_PREFIX se 79#define __IO_PREFIX se
diff --git a/include/asm-sh/se7722.h b/include/asm-sh/se7722.h
new file mode 100644
index 000000000000..b3b31e4725c6
--- /dev/null
+++ b/include/asm-sh/se7722.h
@@ -0,0 +1,118 @@
1#ifndef __ASM_SH_SE7722_H
2#define __ASM_SH_SE7722_H
3
4/*
5 * linux/include/asm-sh/se7722.h
6 *
7 * Copyright (C) 2007 Nobuhiro Iwamatsu
8 *
9 * Hitachi UL SolutionEngine 7722 Support.
10 *
11 * This file is subject to the terms and conditions of the GNU General Public
12 * License. See the file "COPYING" in the main directory of this archive
13 * for more details.
14 *
15 */
16#include <asm/addrspace.h>
17
18/* Box specific addresses. */
19#define SE_AREA0_WIDTH 4 /* Area0: 32bit */
20#define PA_ROM 0xa0000000 /* EPROM */
21#define PA_ROM_SIZE 0x00200000 /* EPROM size 2M byte */
22#define PA_FROM 0xa1000000 /* Flash-ROM */
23#define PA_FROM_SIZE 0x01000000 /* Flash-ROM size 16M byte */
24#define PA_EXT1 0xa4000000
25#define PA_EXT1_SIZE 0x04000000
26#define PA_SDRAM 0xaC000000 /* DDR-SDRAM(Area3) 64MB */
27#define PA_SDRAM_SIZE 0x04000000
28
29#define PA_EXT4 0xb0000000
30#define PA_EXT4_SIZE 0x04000000
31
32#define PA_PERIPHERAL 0xB0000000
33
34#define PA_PCIC PA_PERIPHERAL /* MR-SHPC-01 PCMCIA */
35#define PA_MRSHPC (PA_PERIPHERAL + 0x003fffe0) /* MR-SHPC-01 PCMCIA controller */
36#define PA_MRSHPC_MW1 (PA_PERIPHERAL + 0x00400000) /* MR-SHPC-01 memory window base */
37#define PA_MRSHPC_MW2 (PA_PERIPHERAL + 0x00500000) /* MR-SHPC-01 attribute window base */
38#define PA_MRSHPC_IO (PA_PERIPHERAL + 0x00600000) /* MR-SHPC-01 I/O window base */
39#define MRSHPC_OPTION (PA_MRSHPC + 6)
40#define MRSHPC_CSR (PA_MRSHPC + 8)
41#define MRSHPC_ISR (PA_MRSHPC + 10)
42#define MRSHPC_ICR (PA_MRSHPC + 12)
43#define MRSHPC_CPWCR (PA_MRSHPC + 14)
44#define MRSHPC_MW0CR1 (PA_MRSHPC + 16)
45#define MRSHPC_MW1CR1 (PA_MRSHPC + 18)
46#define MRSHPC_IOWCR1 (PA_MRSHPC + 20)
47#define MRSHPC_MW0CR2 (PA_MRSHPC + 22)
48#define MRSHPC_MW1CR2 (PA_MRSHPC + 24)
49#define MRSHPC_IOWCR2 (PA_MRSHPC + 26)
50#define MRSHPC_CDCR (PA_MRSHPC + 28)
51#define MRSHPC_PCIC_INFO (PA_MRSHPC + 30)
52
53#define PA_LED (PA_PERIPHERAL + 0x00800000) /* 8bit LED */
54#define PA_FPGA (PA_PERIPHERAL + 0x01800000) /* FPGA base address */
55
56#define PA_LAN (PA_AREA6_IO + 0) /* SMC LAN91C111 */
57/* GPIO */
58#define MSTPCR0 0xA4150030UL
59#define MSTPCR1 0xA4150034UL
60#define MSTPCR2 0xA4150038UL
61
62#define FPGA_IN 0xb1840000UL
63#define FPGA_OUT 0xb1840004UL
64
65#define PORT_PECR 0xA4050108UL
66#define PORT_PJCR 0xA4050110UL
67#define PORT_PSELD 0xA4050154UL
68#define PORT_PSELB 0xA4050150UL
69
70#define PORT_PSELC 0xA4050152UL
71#define PORT_PKCR 0xA4050112UL
72#define PORT_PHCR 0xA405010EUL
73#define PORT_PLCR 0xA4050114UL
74#define PORT_PMCR 0xA4050116UL
75#define PORT_PRCR 0xA405011CUL
76#define PORT_PXCR 0xA4050148UL
77#define PORT_PSELA 0xA405014EUL
78#define PORT_PYCR 0xA405014AUL
79#define PORT_PZCR 0xA405014CUL
80
81/* IRQ */
82#define IRQ0_IRQ 32
83#define IRQ1_IRQ 33
84#define INTC_ICR0 0xA4140000UL
85#define INTC_ICR1 0xA414001CUL
86
87#define INTMSK0 0xa4140044
88#define INTMSKCLR0 0xa4140064
89#define INTC_INTPRI0 0xa4140010
90
91#define IRQ01_MODE 0xb1800000
92#define IRQ01_STS 0xb1800004
93#define IRQ01_MASK 0xb1800008
94#define EXT_BIT (0x3fc0) /* SH IRQ1 */
95#define MRSHPC_BIT0 (0x0004) /* SH IRQ1 */
96#define MRSHPC_BIT1 (0x0008) /* SH IRQ1 */
97#define MRSHPC_BIT2 (0x0010) /* SH IRQ1 */
98#define MRSHPC_BIT3 (0x0020) /* SH IRQ1 */
99#define SMC_BIT (0x0002) /* SH IRQ0 */
100#define USB_BIT (0x0001) /* SH IRQ0 */
101
102#define MRSHPC_IRQ3 11
103#define MRSHPC_IRQ2 12
104#define MRSHPC_IRQ1 13
105#define MRSHPC_IRQ0 14
106#define SMC_IRQ 10
107#define EXT_IRQ 5
108#define USB_IRQ 6
109
110
111/* arch/sh/boards/se/7722/irq.c */
112void init_se7722_IRQ(void);
113int se7722_irq_demux(int);
114
115#define __IO_PREFIX se7722
116#include <asm/io_generic.h>
117
118#endif /* __ASM_SH_SE7722_H */
diff --git a/include/asm-sh/se7751.h b/include/asm-sh/se7751.h
index 88cd379d9084..02ca9347f043 100644
--- a/include/asm-sh/se7751.h
+++ b/include/asm-sh/se7751.h
@@ -65,6 +65,8 @@
65 65
66#define IRQ_79C973 13 66#define IRQ_79C973 13
67 67
68void init_7751se_IRQ(void);
69
68#define __IO_PREFIX sh7751se 70#define __IO_PREFIX sh7751se
69#include <asm/io_generic.h> 71#include <asm/io_generic.h>
70 72
diff --git a/include/asm-sh/se7780.h b/include/asm-sh/se7780.h
new file mode 100644
index 000000000000..40e9b41458cd
--- /dev/null
+++ b/include/asm-sh/se7780.h
@@ -0,0 +1,108 @@
1#ifndef __ASM_SH_SE7780_H
2#define __ASM_SH_SE7780_H
3
4/*
5 * linux/include/asm-sh/se7780.h
6 *
7 * Copyright (C) 2006,2007 Nobuhiro Iwamatsu
8 *
9 * Hitachi UL SolutionEngine 7780 Support.
10 *
11 * This file is subject to the terms and conditions of the GNU General Public
12 * License. See the file "COPYING" in the main directory of this archive
13 * for more details.
14 */
15#include <asm/addrspace.h>
16
17/* Box specific addresses. */
18#define SE_AREA0_WIDTH 4 /* Area0: 32bit */
19#define PA_ROM 0xa0000000 /* EPROM */
20#define PA_ROM_SIZE 0x00400000 /* EPROM size 4M byte */
21#define PA_FROM 0xa1000000 /* Flash-ROM */
22#define PA_FROM_SIZE 0x01000000 /* Flash-ROM size 16M byte */
23#define PA_EXT1 0xa4000000
24#define PA_EXT1_SIZE 0x04000000
25#define PA_SM501 PA_EXT1 /* Graphic IC (SM501) */
26#define PA_SM501_SIZE PA_EXT1_SIZE /* Graphic IC (SM501) */
27#define PA_SDRAM 0xa8000000 /* DDR-SDRAM(Area2/3) 128MB */
28#define PA_SDRAM_SIZE 0x08000000
29
30#define PA_EXT4 0xb0000000
31#define PA_EXT4_SIZE 0x04000000
32#define PA_EXT_FLASH PA_EXT4 /* Expansion Flash-ROM */
33
34#define PA_PERIPHERAL PA_AREA6_IO /* SW6-6=ON */
35
36#define PA_LAN (PA_PERIPHERAL + 0) /* SMC LAN91C111 */
37#define PA_LED_DISP (PA_PERIPHERAL + 0x02000000) /* 8words LED Display */
38#define DISP_CHAR_RAM (7 << 3)
39#define DISP_SEL0_ADDR (DISP_CHAR_RAM + 0)
40#define DISP_SEL1_ADDR (DISP_CHAR_RAM + 1)
41#define DISP_SEL2_ADDR (DISP_CHAR_RAM + 2)
42#define DISP_SEL3_ADDR (DISP_CHAR_RAM + 3)
43#define DISP_SEL4_ADDR (DISP_CHAR_RAM + 4)
44#define DISP_SEL5_ADDR (DISP_CHAR_RAM + 5)
45#define DISP_SEL6_ADDR (DISP_CHAR_RAM + 6)
46#define DISP_SEL7_ADDR (DISP_CHAR_RAM + 7)
47
48#define DISP_UDC_RAM (5 << 3)
49#define PA_FPGA (PA_PERIPHERAL + 0x03000000) /* FPGA base address */
50
51/* FPGA register address and bit */
52#define FPGA_SFTRST (PA_FPGA + 0) /* Soft reset register */
53#define FPGA_INTMSK1 (PA_FPGA + 2) /* Interrupt Mask register 1 */
54#define FPGA_INTMSK2 (PA_FPGA + 4) /* Interrupt Mask register 2 */
55#define FPGA_INTSEL1 (PA_FPGA + 6) /* Interrupt select register 1 */
56#define FPGA_INTSEL2 (PA_FPGA + 8) /* Interrupt select register 2 */
57#define FPGA_INTSEL3 (PA_FPGA + 10) /* Interrupt select register 3 */
58#define FPGA_PCI_INTSEL1 (PA_FPGA + 12) /* PCI Interrupt select register 1 */
59#define FPGA_PCI_INTSEL2 (PA_FPGA + 14) /* PCI Interrupt select register 2 */
60#define FPGA_INTSET (PA_FPGA + 16) /* IRQ/IRL select register */
61#define FPGA_INTSTS1 (PA_FPGA + 18) /* Interrupt status register 1 */
62#define FPGA_INTSTS2 (PA_FPGA + 20) /* Interrupt status register 2 */
63#define FPGA_REQSEL (PA_FPGA + 22) /* REQ/GNT select register */
64#define FPGA_DBG_LED (PA_FPGA + 32) /* Debug LED(D-LED[8:1] */
65#define PA_LED FPGA_DBG_LED
66#define FPGA_IVDRID (PA_FPGA + 36) /* iVDR ID Register */
67#define FPGA_IVDRPW (PA_FPGA + 38) /* iVDR Power ON Register */
68#define FPGA_MMCID (PA_FPGA + 40) /* MMC ID Register */
69
70/* FPGA INTSEL position */
71/* INTSEL1 */
72#define IRQPOS_SMC91CX (0 * 4)
73#define IRQPOS_SM501 (1 * 4)
74/* INTSEL2 */
75#define IRQPOS_EXTINT1 (0 * 4)
76#define IRQPOS_EXTINT2 (1 * 4)
77#define IRQPOS_EXTINT3 (2 * 4)
78#define IRQPOS_EXTINT4 (3 * 4)
79/* INTSEL3 */
80#define IRQPOS_PCCPW (0 * 4)
81
82/* IDE interrupt */
83#define IRQ_IDE0 67 /* iVDR */
84
85/* SMC interrupt */
86#define SMC_IRQ 8
87
88/* SM501 interrupt */
89#define SM501_IRQ 0
90
91/* interrupt pin */
92#define IRQPIN_EXTINT1 0 /* IRQ0 pin */
93#define IRQPIN_EXTINT2 1 /* IRQ1 pin */
94#define IRQPIN_EXTINT3 2 /* IRQ2 pin */
95#define IRQPIN_SMC91CX 3 /* IRQ3 pin */
96#define IRQPIN_EXTINT4 4 /* IRQ4 pin */
97#define IRQPIN_PCC0 5 /* IRQ5 pin */
98#define IRQPIN_PCC2 6 /* IRQ6 pin */
99#define IRQPIN_SM501 7 /* IRQ7 pin */
100#define IRQPIN_PCCPW 7 /* IRQ7 pin */
101
102/* arch/sh/boards/se/7780/irq.c */
103void init_se7780_IRQ(void);
104
105#define __IO_PREFIX se7780
106#include <asm/io_generic.h>
107
108#endif /* __ASM_SH_SE7780_H */
diff --git a/include/asm-sh/stat.h b/include/asm-sh/stat.h
index 6c41a60657f1..6d6ad26e3a2a 100644
--- a/include/asm-sh/stat.h
+++ b/include/asm-sh/stat.h
@@ -16,15 +16,13 @@ struct __old_kernel_stat {
16}; 16};
17 17
18struct stat { 18struct stat {
19 unsigned short st_dev; 19 unsigned long st_dev;
20 unsigned short __pad1; 20 unsigned long st_ino;
21 unsigned long st_ino;
22 unsigned short st_mode; 21 unsigned short st_mode;
23 unsigned short st_nlink; 22 unsigned short st_nlink;
24 unsigned short st_uid; 23 unsigned short st_uid;
25 unsigned short st_gid; 24 unsigned short st_gid;
26 unsigned short st_rdev; 25 unsigned long st_rdev;
27 unsigned short __pad2;
28 unsigned long st_size; 26 unsigned long st_size;
29 unsigned long st_blksize; 27 unsigned long st_blksize;
30 unsigned long st_blocks; 28 unsigned long st_blocks;
@@ -38,8 +36,6 @@ struct stat {
38 unsigned long __unused5; 36 unsigned long __unused5;
39}; 37};
40 38
41#define STAT_HAVE_NSEC 1
42
43/* This matches struct stat64 in glibc2.1, hence the absolutely 39/* This matches struct stat64 in glibc2.1, hence the absolutely
44 * insane amounts of padding around dev_t's. 40 * insane amounts of padding around dev_t's.
45 */ 41 */
@@ -47,7 +43,9 @@ struct stat64 {
47 unsigned long long st_dev; 43 unsigned long long st_dev;
48 unsigned char __pad0[4]; 44 unsigned char __pad0[4];
49 45
50 unsigned long st_ino; 46#define STAT64_HAS_BROKEN_ST_INO 1
47 unsigned long __st_ino;
48
51 unsigned int st_mode; 49 unsigned int st_mode;
52 unsigned int st_nlink; 50 unsigned int st_nlink;
53 51
@@ -71,8 +69,9 @@ struct stat64 {
71 unsigned long st_ctime; 69 unsigned long st_ctime;
72 unsigned long st_ctime_nsec; 70 unsigned long st_ctime_nsec;
73 71
74 unsigned long __unused1; 72 unsigned long long st_ino;
75 unsigned long __unused2;
76}; 73};
77 74
75#define STAT_HAVE_NSEC 1
76
78#endif /* __ASM_SH_STAT_H */ 77#endif /* __ASM_SH_STAT_H */
diff --git a/include/asm-sh/system.h b/include/asm-sh/system.h
index 4a6a19f4f8a4..127af304865f 100644
--- a/include/asm-sh/system.h
+++ b/include/asm-sh/system.h
@@ -9,6 +9,7 @@
9#include <linux/irqflags.h> 9#include <linux/irqflags.h>
10#include <linux/compiler.h> 10#include <linux/compiler.h>
11#include <asm/types.h> 11#include <asm/types.h>
12#include <asm/ptrace.h>
12 13
13/* 14/*
14 * switch_to() should switch tasks to task nr n, first 15 * switch_to() should switch tasks to task nr n, first
@@ -255,6 +256,8 @@ static inline unsigned long __cmpxchg(volatile void * ptr, unsigned long old,
255 (unsigned long)_n_, sizeof(*(ptr))); \ 256 (unsigned long)_n_, sizeof(*(ptr))); \
256 }) 257 })
257 258
259extern void die(const char *str, struct pt_regs *regs, long err) __attribute__ ((noreturn));
260
258extern void *set_exception_table_vec(unsigned int vec, void *handler); 261extern void *set_exception_table_vec(unsigned int vec, void *handler);
259 262
260static inline void *set_exception_table_evt(unsigned int evt, void *handler) 263static inline void *set_exception_table_evt(unsigned int evt, void *handler)
diff --git a/sound/oss/sh_dac_audio.c b/sound/oss/sh_dac_audio.c
index 7ea9accc2ba4..b493660deb36 100644
--- a/sound/oss/sh_dac_audio.c
+++ b/sound/oss/sh_dac_audio.c
@@ -104,7 +104,7 @@ static void dac_audio_set_rate(void)
104 unsigned long interval; 104 unsigned long interval;
105 struct clk *clk; 105 struct clk *clk;
106 106
107 clk = clk_get("module_clk"); 107 clk = clk_get(NULL, "module_clk");
108 interval = (clk_get_rate(clk) / 4) / rate; 108 interval = (clk_get_rate(clk) / 4) / rate;
109 clk_put(clk); 109 clk_put(clk);
110 ctrl_outl(interval, TMU1_TCOR); 110 ctrl_outl(interval, TMU1_TCOR);