diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-13 12:49:04 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-13 12:49:04 -0400 |
commit | dcf397f037f52add9945eced57ca300ab6a4413c (patch) | |
tree | e78767d164589e9097a54bf564b072fb01f80820 | |
parent | 6faf035cf9fdd8283c2b2b2c34b76b5445ec6fc4 (diff) | |
parent | 68ee0f9c98a42e36f9eab29155b2bb0e7e409ac6 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6: (124 commits)
sh: allow building for both r2d boards in same binary.
sh: fix r2d board detection
sh: Discard .exit.text/.exit.data at runtime.
sh: Fix up some section alignments in linker script.
sh: Fix SH-4 DMAC CHCR masking.
sh: Rip out left-over nommu cond syscall cruft.
sh: Make kgdb i-cache flushing less inept.
sh: kgdb section mismatches and tidying.
sh: cleanup struct irqaction initializers.
sh: early_printk tidying.
video: pvr2fb: Add TV (RGB) support to Dreamcast PVR driver.
sh: Conditionalize gUSA support.
sh: Follow gUSA preempt changes in __switch_to().
sh: Tidy up gUSA preempt handling.
sh: __copy_user() optimizations for small copies.
sh: clkfwk: Support multi-level clock propagation.
sh: Fix URAM start address on SH7785.
sh: Use boot_cpu_data for CPU probe.
sh: Support extended mode TLB on SH-X3.
sh: Bump MAX_ACTIVE_REGIONS for SH7785.
...
142 files changed, 8759 insertions, 3339 deletions
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 54878f07cf0c..44982c1dfa23 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig | |||
@@ -118,7 +118,7 @@ endchoice | |||
118 | 118 | ||
119 | config SH_FPU | 119 | config SH_FPU |
120 | bool "FPU support" | 120 | bool "FPU support" |
121 | depends on CPU_SH4 | 121 | depends on CPU_HAS_FPU |
122 | default y | 122 | default y |
123 | help | 123 | help |
124 | Selecting this option will enable support for SH processors that | 124 | Selecting this option will enable support for SH processors that |
@@ -178,12 +178,6 @@ config CPU_HAS_INTEVT | |||
178 | config CPU_HAS_MASKREG_IRQ | 178 | config CPU_HAS_MASKREG_IRQ |
179 | bool | 179 | bool |
180 | 180 | ||
181 | config CPU_HAS_INTC_IRQ | ||
182 | bool | ||
183 | |||
184 | config CPU_HAS_INTC2_IRQ | ||
185 | bool | ||
186 | |||
187 | config CPU_HAS_IPR_IRQ | 181 | config CPU_HAS_IPR_IRQ |
188 | bool | 182 | bool |
189 | 183 | ||
@@ -205,6 +199,9 @@ config CPU_HAS_PTEA | |||
205 | config CPU_HAS_DSP | 199 | config CPU_HAS_DSP |
206 | bool | 200 | bool |
207 | 201 | ||
202 | config CPU_HAS_FPU | ||
203 | bool | ||
204 | |||
208 | endmenu | 205 | endmenu |
209 | 206 | ||
210 | menu "Board support" | 207 | menu "Board support" |
@@ -258,7 +255,6 @@ config SH_7780_SOLUTION_ENGINE | |||
258 | bool "SolutionEngine7780" | 255 | bool "SolutionEngine7780" |
259 | select SOLUTION_ENGINE | 256 | select SOLUTION_ENGINE |
260 | select SYS_SUPPORTS_PCI | 257 | select SYS_SUPPORTS_PCI |
261 | select CPU_HAS_INTC2_IRQ | ||
262 | depends on CPU_SUBTYPE_SH7780 | 258 | depends on CPU_SUBTYPE_SH7780 |
263 | help | 259 | help |
264 | Select 7780 SolutionEngine if configuring for a Renesas SH7780 | 260 | Select 7780 SolutionEngine if configuring for a Renesas SH7780 |
@@ -309,7 +305,7 @@ config SH_MPC1211 | |||
309 | 305 | ||
310 | config SH_SH03 | 306 | config SH_SH03 |
311 | bool "Interface CTP/PCI-SH03" | 307 | bool "Interface CTP/PCI-SH03" |
312 | depends on CPU_SUBTYPE_SH7751 && BROKEN | 308 | depends on CPU_SUBTYPE_SH7751 |
313 | select CPU_HAS_IPR_IRQ | 309 | select CPU_HAS_IPR_IRQ |
314 | select SYS_SUPPORTS_PCI | 310 | select SYS_SUPPORTS_PCI |
315 | help | 311 | help |
@@ -395,11 +391,22 @@ config SH_LBOX_RE2 | |||
395 | help | 391 | help |
396 | Select L-BOX RE2 if configuring for the NTT COMWARE L-BOX RE2. | 392 | Select L-BOX RE2 if configuring for the NTT COMWARE L-BOX RE2. |
397 | 393 | ||
394 | config SH_X3PROTO | ||
395 | bool "SH-X3 Prototype board" | ||
396 | depends on CPU_SUBTYPE_SHX3 | ||
397 | |||
398 | config SH_MAGIC_PANEL_R2 | ||
399 | bool "Magic Panel R2" | ||
400 | depends on CPU_SUBTYPE_SH7720 | ||
401 | help | ||
402 | Select Magic Panel R2 if configuring for Magic Panel R2. | ||
403 | |||
398 | endmenu | 404 | endmenu |
399 | 405 | ||
400 | source "arch/sh/boards/renesas/hs7751rvoip/Kconfig" | 406 | source "arch/sh/boards/renesas/hs7751rvoip/Kconfig" |
401 | source "arch/sh/boards/renesas/rts7751r2d/Kconfig" | 407 | source "arch/sh/boards/renesas/rts7751r2d/Kconfig" |
402 | source "arch/sh/boards/renesas/r7780rp/Kconfig" | 408 | source "arch/sh/boards/renesas/r7780rp/Kconfig" |
409 | source "arch/sh/boards/magicpanelr2/Kconfig" | ||
403 | 410 | ||
404 | menu "Timer and clock configuration" | 411 | menu "Timer and clock configuration" |
405 | 412 | ||
@@ -563,10 +570,19 @@ config NR_CPUS | |||
563 | 570 | ||
564 | source "kernel/Kconfig.preempt" | 571 | source "kernel/Kconfig.preempt" |
565 | 572 | ||
566 | config NODES_SHIFT | 573 | config GUSA |
567 | int | 574 | def_bool y |
568 | default "1" | 575 | depends on !SMP |
569 | depends on NEED_MULTIPLE_NODES | 576 | help |
577 | This enables support for gUSA (general UserSpace Atomicity). | ||
578 | This is the default implementation for both UP and non-ll/sc | ||
579 | CPUs, and is used by the libc, amongst others. | ||
580 | |||
581 | For additional information, design information can be found | ||
582 | in <http://lc.linux.or.jp/lc2002/papers/niibe0919p.pdf>. | ||
583 | |||
584 | This should only be disabled for special cases where alternate | ||
585 | atomicity implementations exist. | ||
570 | 586 | ||
571 | endmenu | 587 | endmenu |
572 | 588 | ||
@@ -659,6 +675,17 @@ config SUPERHYWAY | |||
659 | tristate "SuperHyway Bus support" | 675 | tristate "SuperHyway Bus support" |
660 | depends on CPU_SUBTYPE_SH4_202 | 676 | depends on CPU_SUBTYPE_SH4_202 |
661 | 677 | ||
678 | config MAPLE | ||
679 | bool "Maple Bus support" | ||
680 | depends on SH_DREAMCAST | ||
681 | help | ||
682 | The Maple Bus is SEGA's serial communication bus for peripherals | ||
683 | on the Dreamcast. Without this bus support you won't be able to | ||
684 | get your Dreamcast keyboard etc to work, so most users | ||
685 | probably want to say 'Y' here, unless you are only using the | ||
686 | Dreamcast with a serial line terminal or a remote network | ||
687 | connection. | ||
688 | |||
662 | config CF_ENABLER | 689 | config CF_ENABLER |
663 | bool "Compact Flash Enabler support" | 690 | bool "Compact Flash Enabler support" |
664 | depends on SOLUTION_ENGINE || SH_SH03 | 691 | depends on SOLUTION_ENGINE || SH_SH03 |
diff --git a/arch/sh/Kconfig.debug b/arch/sh/Kconfig.debug index 52f6a99c8ecc..b507b501f0cf 100644 --- a/arch/sh/Kconfig.debug +++ b/arch/sh/Kconfig.debug | |||
@@ -28,13 +28,17 @@ config EARLY_SCIF_CONSOLE | |||
28 | serial I/O. | 28 | serial I/O. |
29 | 29 | ||
30 | config EARLY_SCIF_CONSOLE_PORT | 30 | config EARLY_SCIF_CONSOLE_PORT |
31 | hex "SCIF port for early console" | 31 | hex |
32 | depends on EARLY_SCIF_CONSOLE | 32 | depends on EARLY_SCIF_CONSOLE |
33 | default "0xffe00000" if CPU_SUBTYPE_SH7780 | 33 | default "0xffe00000" if CPU_SUBTYPE_SH7780 |
34 | default "0xffea0000" if CPU_SUBTYPE_SH7785 | ||
34 | default "0xfffe9800" if CPU_SUBTYPE_SH7206 | 35 | default "0xfffe9800" if CPU_SUBTYPE_SH7206 |
35 | default "0xf8420000" if CPU_SUBTYPE_SH7619 | 36 | default "0xf8420000" if CPU_SUBTYPE_SH7619 |
36 | default "0xa4400000" if CPU_SUBTYPE_SH7712 || CPU_SUBTYPE_SH7705 | 37 | default "0xa4400000" if CPU_SUBTYPE_SH7712 || CPU_SUBTYPE_SH7705 |
38 | default "0xa4430000" if CPU_SUBTYPE_SH7720 | ||
39 | default "0xffc30000" if CPU_SUBTYPE_SHX3 | ||
37 | default "0xffe80000" if CPU_SH4 | 40 | default "0xffe80000" if CPU_SH4 |
41 | default "0x00000000" | ||
38 | 42 | ||
39 | config EARLY_PRINTK | 43 | config EARLY_PRINTK |
40 | bool "Early printk support" | 44 | bool "Early printk support" |
diff --git a/arch/sh/Makefile b/arch/sh/Makefile index 97ac58682d0f..a0a2083aad3e 100644 --- a/arch/sh/Makefile +++ b/arch/sh/Makefile | |||
@@ -118,6 +118,7 @@ machdir-$(CONFIG_SH_7751_SYSTEMH) += renesas/systemh | |||
118 | machdir-$(CONFIG_SH_EDOSK7705) += renesas/edosk7705 | 118 | machdir-$(CONFIG_SH_EDOSK7705) += renesas/edosk7705 |
119 | machdir-$(CONFIG_SH_HIGHLANDER) += renesas/r7780rp | 119 | machdir-$(CONFIG_SH_HIGHLANDER) += renesas/r7780rp |
120 | machdir-$(CONFIG_SH_7710VOIPGW) += renesas/sh7710voipgw | 120 | machdir-$(CONFIG_SH_7710VOIPGW) += renesas/sh7710voipgw |
121 | machdir-$(CONFIG_SH_X3PROTO) += renesas/x3proto | ||
121 | machdir-$(CONFIG_SH_SH4202_MICRODEV) += superh/microdev | 122 | machdir-$(CONFIG_SH_SH4202_MICRODEV) += superh/microdev |
122 | machdir-$(CONFIG_SH_LANDISK) += landisk | 123 | machdir-$(CONFIG_SH_LANDISK) += landisk |
123 | machdir-$(CONFIG_SH_TITAN) += titan | 124 | machdir-$(CONFIG_SH_TITAN) += titan |
@@ -125,6 +126,7 @@ machdir-$(CONFIG_SH_SHMIN) += shmin | |||
125 | machdir-$(CONFIG_SH_7206_SOLUTION_ENGINE) += se/7206 | 126 | machdir-$(CONFIG_SH_7206_SOLUTION_ENGINE) += se/7206 |
126 | machdir-$(CONFIG_SH_7619_SOLUTION_ENGINE) += se/7619 | 127 | machdir-$(CONFIG_SH_7619_SOLUTION_ENGINE) += se/7619 |
127 | machdir-$(CONFIG_SH_LBOX_RE2) += lboxre2 | 128 | machdir-$(CONFIG_SH_LBOX_RE2) += lboxre2 |
129 | machdir-$(CONFIG_SH_MAGIC_PANEL_R2) += magicpanelr2 | ||
128 | 130 | ||
129 | incdir-y := $(notdir $(machdir-y)) | 131 | incdir-y := $(notdir $(machdir-y)) |
130 | 132 | ||
@@ -135,7 +137,7 @@ endif | |||
135 | 137 | ||
136 | # Companion chips | 138 | # Companion chips |
137 | core-$(CONFIG_HD6446X_SERIES) += arch/sh/cchips/hd6446x/ | 139 | core-$(CONFIG_HD6446X_SERIES) += arch/sh/cchips/hd6446x/ |
138 | core-$(CONFIG_VOYAGERGX) += arch/sh/cchips/voyagergx/ | 140 | core-$(CONFIG_MFD_SM501) += arch/sh/cchips/voyagergx/ |
139 | 141 | ||
140 | cpuincdir-$(CONFIG_CPU_SH2) := cpu-sh2 | 142 | cpuincdir-$(CONFIG_CPU_SH2) := cpu-sh2 |
141 | cpuincdir-$(CONFIG_CPU_SH2A) := cpu-sh2a | 143 | cpuincdir-$(CONFIG_CPU_SH2A) := cpu-sh2a |
diff --git a/arch/sh/boards/hp6xx/hp6xx_apm.c b/arch/sh/boards/hp6xx/hp6xx_apm.c index d1c1460c8a06..640ca2a74f16 100644 --- a/arch/sh/boards/hp6xx/hp6xx_apm.c +++ b/arch/sh/boards/hp6xx/hp6xx_apm.c | |||
@@ -20,9 +20,9 @@ | |||
20 | #define APM_CRITICAL 10 | 20 | #define APM_CRITICAL 10 |
21 | #define APM_LOW 30 | 21 | #define APM_LOW 30 |
22 | 22 | ||
23 | #define HP680_BATTERY_MAX 875 | 23 | #define HP680_BATTERY_MAX 898 |
24 | #define HP680_BATTERY_MIN 600 | 24 | #define HP680_BATTERY_MIN 486 |
25 | #define HP680_BATTERY_AC_ON 900 | 25 | #define HP680_BATTERY_AC_ON 1023 |
26 | 26 | ||
27 | #define MODNAME "hp6x0_apm" | 27 | #define MODNAME "hp6x0_apm" |
28 | 28 | ||
@@ -65,7 +65,7 @@ static void hp6x0_apm_get_power_status(struct apm_power_info *info) | |||
65 | 65 | ||
66 | static irqreturn_t hp6x0_apm_interrupt(int irq, void *dev) | 66 | static irqreturn_t hp6x0_apm_interrupt(int irq, void *dev) |
67 | { | 67 | { |
68 | if (!apm_suspended) | 68 | if (!APM_DISABLED) |
69 | apm_queue_event(APM_USER_SUSPEND); | 69 | apm_queue_event(APM_USER_SUSPEND); |
70 | 70 | ||
71 | return IRQ_HANDLED; | 71 | return IRQ_HANDLED; |
@@ -91,7 +91,6 @@ static int __init hp6x0_apm_init(void) | |||
91 | static void __exit hp6x0_apm_exit(void) | 91 | static void __exit hp6x0_apm_exit(void) |
92 | { | 92 | { |
93 | free_irq(HP680_BTN_IRQ, 0); | 93 | free_irq(HP680_BTN_IRQ, 0); |
94 | apm_get_info = NULL; | ||
95 | } | 94 | } |
96 | 95 | ||
97 | module_init(hp6x0_apm_init); | 96 | module_init(hp6x0_apm_init); |
diff --git a/arch/sh/boards/hp6xx/setup.c b/arch/sh/boards/hp6xx/setup.c index 7ae708930bac..2f414ac3c690 100644 --- a/arch/sh/boards/hp6xx/setup.c +++ b/arch/sh/boards/hp6xx/setup.c | |||
@@ -7,7 +7,7 @@ | |||
7 | * 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 |
8 | * License. See linux/COPYING for more information. | 8 | * License. See linux/COPYING for more information. |
9 | * | 9 | * |
10 | * Setup code for an HP680 (internal peripherials only) | 10 | * Setup code for HP620/HP660/HP680/HP690 (internal peripherials only) |
11 | */ | 11 | */ |
12 | #include <linux/types.h> | 12 | #include <linux/types.h> |
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
@@ -19,7 +19,7 @@ | |||
19 | #include <asm/cpu/dac.h> | 19 | #include <asm/cpu/dac.h> |
20 | 20 | ||
21 | #define SCPCR 0xa4000116 | 21 | #define SCPCR 0xa4000116 |
22 | #define SCPDR 0xa4000136 | 22 | #define SCPDR 0xa4000136 |
23 | 23 | ||
24 | /* CF Slot */ | 24 | /* CF Slot */ |
25 | static struct resource cf_ide_resources[] = { | 25 | static struct resource cf_ide_resources[] = { |
@@ -34,7 +34,7 @@ static struct resource cf_ide_resources[] = { | |||
34 | .flags = IORESOURCE_MEM, | 34 | .flags = IORESOURCE_MEM, |
35 | }, | 35 | }, |
36 | [2] = { | 36 | [2] = { |
37 | .start = 93, | 37 | .start = 77, |
38 | .flags = IORESOURCE_IRQ, | 38 | .flags = IORESOURCE_IRQ, |
39 | }, | 39 | }, |
40 | }; | 40 | }; |
@@ -46,10 +46,22 @@ static struct platform_device cf_ide_device = { | |||
46 | .resource = cf_ide_resources, | 46 | .resource = cf_ide_resources, |
47 | }; | 47 | }; |
48 | 48 | ||
49 | static struct platform_device jornadakbd_device = { | ||
50 | .name = "jornada680_kbd", | ||
51 | .id = -1, | ||
52 | }; | ||
53 | |||
49 | static struct platform_device *hp6xx_devices[] __initdata = { | 54 | static struct platform_device *hp6xx_devices[] __initdata = { |
50 | &cf_ide_device, | 55 | &cf_ide_device, |
56 | &jornadakbd_device, | ||
51 | }; | 57 | }; |
52 | 58 | ||
59 | static void __init hp6xx_init_irq(void) | ||
60 | { | ||
61 | /* Gets touchscreen and powerbutton IRQ working */ | ||
62 | plat_irq_setup_pins(IRQ_MODE_IRQ); | ||
63 | } | ||
64 | |||
53 | static int __init hp6xx_devices_setup(void) | 65 | static int __init hp6xx_devices_setup(void) |
54 | { | 66 | { |
55 | return platform_add_devices(hp6xx_devices, ARRAY_SIZE(hp6xx_devices)); | 67 | return platform_add_devices(hp6xx_devices, ARRAY_SIZE(hp6xx_devices)); |
@@ -61,11 +73,11 @@ static void __init hp6xx_setup(char **cmdline_p) | |||
61 | u16 v; | 73 | u16 v; |
62 | 74 | ||
63 | v = inw(HD64461_STBCR); | 75 | v = inw(HD64461_STBCR); |
64 | v |= HD64461_STBCR_SURTST | HD64461_STBCR_SIRST | | 76 | v |= HD64461_STBCR_SURTST | HD64461_STBCR_SIRST | |
65 | HD64461_STBCR_STM1ST | HD64461_STBCR_STM0ST | | 77 | HD64461_STBCR_STM1ST | HD64461_STBCR_STM0ST | |
66 | HD64461_STBCR_SAFEST | HD64461_STBCR_SPC0ST | | 78 | HD64461_STBCR_SAFEST | HD64461_STBCR_SPC0ST | |
67 | HD64461_STBCR_SMIAST | HD64461_STBCR_SAFECKE_OST | | 79 | HD64461_STBCR_SMIAST | HD64461_STBCR_SAFECKE_OST| |
68 | HD64461_STBCR_SAFECKE_IST; | 80 | HD64461_STBCR_SAFECKE_IST; |
69 | #ifndef CONFIG_HD64461_ENABLER | 81 | #ifndef CONFIG_HD64461_ENABLER |
70 | v |= HD64461_STBCR_SPC1ST; | 82 | v |= HD64461_STBCR_SPC1ST; |
71 | #endif | 83 | #endif |
@@ -101,6 +113,9 @@ device_initcall(hp6xx_devices_setup); | |||
101 | static struct sh_machine_vector mv_hp6xx __initmv = { | 113 | static struct sh_machine_vector mv_hp6xx __initmv = { |
102 | .mv_name = "hp6xx", | 114 | .mv_name = "hp6xx", |
103 | .mv_setup = hp6xx_setup, | 115 | .mv_setup = hp6xx_setup, |
104 | .mv_nr_irqs = HD64461_IRQBASE + HD64461_IRQ_NUM, | 116 | /* IRQ's : CPU(64) + CCHIP(16) + FREE_TO_USE(6) */ |
117 | .mv_nr_irqs = HD64461_IRQBASE + HD64461_IRQ_NUM + 6, | ||
105 | .mv_irq_demux = hd64461_irq_demux, | 118 | .mv_irq_demux = hd64461_irq_demux, |
119 | /* Enable IRQ0 -> IRQ3 in IRQ_MODE */ | ||
120 | .mv_init_irq = hp6xx_init_irq, | ||
106 | }; | 121 | }; |
diff --git a/arch/sh/boards/magicpanelr2/Kconfig b/arch/sh/boards/magicpanelr2/Kconfig new file mode 100644 index 000000000000..b0abddc3e84f --- /dev/null +++ b/arch/sh/boards/magicpanelr2/Kconfig | |||
@@ -0,0 +1,13 @@ | |||
1 | if SH_MAGIC_PANEL_R2 | ||
2 | |||
3 | menu "Magic Panel R2 options" | ||
4 | |||
5 | config SH_MAGIC_PANEL_R2_VERSION | ||
6 | int SH_MAGIC_PANEL_R2_VERSION | ||
7 | default "3" | ||
8 | help | ||
9 | Set the version of the Magic Panel R2 | ||
10 | |||
11 | endmenu | ||
12 | |||
13 | endif | ||
diff --git a/arch/sh/boards/magicpanelr2/Makefile b/arch/sh/boards/magicpanelr2/Makefile new file mode 100644 index 000000000000..7a6d586b9072 --- /dev/null +++ b/arch/sh/boards/magicpanelr2/Makefile | |||
@@ -0,0 +1,5 @@ | |||
1 | # | ||
2 | # Makefile for the Magic Panel specific parts | ||
3 | # | ||
4 | |||
5 | obj-y := setup.o \ No newline at end of file | ||
diff --git a/arch/sh/boards/magicpanelr2/setup.c b/arch/sh/boards/magicpanelr2/setup.c new file mode 100644 index 000000000000..f3b8b07ea5d6 --- /dev/null +++ b/arch/sh/boards/magicpanelr2/setup.c | |||
@@ -0,0 +1,394 @@ | |||
1 | /* | ||
2 | * linux/arch/sh/boards/magicpanel/setup.c | ||
3 | * | ||
4 | * Copyright (C) 2007 Markus Brunner, Mark Jonas | ||
5 | * | ||
6 | * Magic Panel Release 2 board setup | ||
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/platform_device.h> | ||
15 | #include <linux/delay.h> | ||
16 | #include <linux/mtd/mtd.h> | ||
17 | #include <linux/mtd/partitions.h> | ||
18 | #include <linux/mtd/physmap.h> | ||
19 | #include <linux/mtd/map.h> | ||
20 | #include <asm/magicpanelr2.h> | ||
21 | #include <asm/heartbeat.h> | ||
22 | |||
23 | #define LAN9115_READY (ctrl_inl(0xA8000084UL) & 0x00000001UL) | ||
24 | |||
25 | /* Prefer cmdline over RedBoot */ | ||
26 | static const char *probes[] = { "cmdlinepart", "RedBoot", NULL }; | ||
27 | |||
28 | /* Wait until reset finished. Timeout is 100ms. */ | ||
29 | static int __init ethernet_reset_finished(void) | ||
30 | { | ||
31 | int i; | ||
32 | |||
33 | if (LAN9115_READY) | ||
34 | return 1; | ||
35 | |||
36 | for (i = 0; i < 10; ++i) { | ||
37 | mdelay(10); | ||
38 | if (LAN9115_READY) | ||
39 | return 1; | ||
40 | } | ||
41 | |||
42 | return 0; | ||
43 | } | ||
44 | |||
45 | static void __init reset_ethernet(void) | ||
46 | { | ||
47 | /* PMDR: LAN_RESET=on */ | ||
48 | CLRBITS_OUTB(0x10, PORT_PMDR); | ||
49 | |||
50 | udelay(200); | ||
51 | |||
52 | /* PMDR: LAN_RESET=off */ | ||
53 | SETBITS_OUTB(0x10, PORT_PMDR); | ||
54 | } | ||
55 | |||
56 | static void __init setup_chip_select(void) | ||
57 | { | ||
58 | /* CS2: LAN (0x08000000 - 0x0bffffff) */ | ||
59 | /* no idle cycles, normal space, 8 bit data bus */ | ||
60 | ctrl_outl(0x36db0400, CS2BCR); | ||
61 | /* (SW:1.5 WR:3 HW:1.5), ext. wait */ | ||
62 | ctrl_outl(0x000003c0, CS2WCR); | ||
63 | |||
64 | /* CS4: CAN1 (0xb0000000 - 0xb3ffffff) */ | ||
65 | /* no idle cycles, normal space, 8 bit data bus */ | ||
66 | ctrl_outl(0x00000200, CS4BCR); | ||
67 | /* (SW:1.5 WR:3 HW:1.5), ext. wait */ | ||
68 | ctrl_outl(0x00100981, CS4WCR); | ||
69 | |||
70 | /* CS5a: CAN2 (0xb4000000 - 0xb5ffffff) */ | ||
71 | /* no idle cycles, normal space, 8 bit data bus */ | ||
72 | ctrl_outl(0x00000200, CS5ABCR); | ||
73 | /* (SW:1.5 WR:3 HW:1.5), ext. wait */ | ||
74 | ctrl_outl(0x00100981, CS5AWCR); | ||
75 | |||
76 | /* CS5b: CAN3 (0xb6000000 - 0xb7ffffff) */ | ||
77 | /* no idle cycles, normal space, 8 bit data bus */ | ||
78 | ctrl_outl(0x00000200, CS5BBCR); | ||
79 | /* (SW:1.5 WR:3 HW:1.5), ext. wait */ | ||
80 | ctrl_outl(0x00100981, CS5BWCR); | ||
81 | |||
82 | /* CS6a: Rotary (0xb8000000 - 0xb9ffffff) */ | ||
83 | /* no idle cycles, normal space, 8 bit data bus */ | ||
84 | ctrl_outl(0x00000200, CS6ABCR); | ||
85 | /* (SW:1.5 WR:3 HW:1.5), no ext. wait */ | ||
86 | ctrl_outl(0x001009C1, CS6AWCR); | ||
87 | } | ||
88 | |||
89 | static void __init setup_port_multiplexing(void) | ||
90 | { | ||
91 | /* A7 GPO(LED8); A6 GPO(LED7); A5 GPO(LED6); A4 GPO(LED5); | ||
92 | * A3 GPO(LED4); A2 GPO(LED3); A1 GPO(LED2); A0 GPO(LED1); | ||
93 | */ | ||
94 | ctrl_outw(0x5555, PORT_PACR); /* 01 01 01 01 01 01 01 01 */ | ||
95 | |||
96 | /* B7 GPO(RST4); B6 GPO(RST3); B5 GPO(RST2); B4 GPO(RST1); | ||
97 | * B3 GPO(PB3); B2 GPO(PB2); B1 GPO(PB1); B0 GPO(PB0); | ||
98 | */ | ||
99 | ctrl_outw(0x5555, PORT_PBCR); /* 01 01 01 01 01 01 01 01 */ | ||
100 | |||
101 | /* C7 GPO(PC7); C6 GPO(PC6); C5 GPO(PC5); C4 GPO(PC4); | ||
102 | * C3 LCD_DATA3; C2 LCD_DATA2; C1 LCD_DATA1; C0 LCD_DATA0; | ||
103 | */ | ||
104 | ctrl_outw(0x5500, PORT_PCCR); /* 01 01 01 01 00 00 00 00 */ | ||
105 | |||
106 | /* D7 GPO(PD7); D6 GPO(PD6); D5 GPO(PD5); D4 GPO(PD4); | ||
107 | * D3 GPO(PD3); D2 GPO(PD2); D1 GPO(PD1); D0 GPO(PD0); | ||
108 | */ | ||
109 | ctrl_outw(0x5555, PORT_PDCR); /* 01 01 01 01 01 01 01 01 */ | ||
110 | |||
111 | /* E7 (x); E6 GPI(nu); E5 GPI(nu); E4 LCD_M_DISP; | ||
112 | * E3 LCD_CL1; E2 LCD_CL2; E1 LCD_DON; E0 LCD_FLM; | ||
113 | */ | ||
114 | ctrl_outw(0x3C00, PORT_PECR); /* 00 11 11 00 00 00 00 00 */ | ||
115 | |||
116 | /* F7 (x); F6 DA1(VLCD); F5 DA0(nc); F4 AN3; | ||
117 | * F3 AN2(MID_AD); F2 AN1(EARTH_AD); F1 AN0(TEMP); F0 GPI+(nc); | ||
118 | */ | ||
119 | ctrl_outw(0x0002, PORT_PFCR); /* 00 00 00 00 00 00 00 10 */ | ||
120 | |||
121 | /* G7 (x); G6 IRQ5(TOUCH_BUSY); G5 IRQ4(TOUCH_IRQ); G4 GPI(KEY2); | ||
122 | * G3 GPI(KEY1); G2 GPO(LED11); G1 GPO(LED10); G0 GPO(LED9); | ||
123 | */ | ||
124 | ctrl_outw(0x03D5, PORT_PGCR); /* 00 00 00 11 11 01 01 01 */ | ||
125 | |||
126 | /* H7 (x); H6 /RAS(BRAS); H5 /CAS(BCAS); H4 CKE(BCKE); | ||
127 | * H3 GPO(EARTH_OFF); H2 GPO(EARTH_TEST); H1 USB2_PWR; H0 USB1_PWR; | ||
128 | */ | ||
129 | ctrl_outw(0x0050, PORT_PHCR); /* 00 00 00 00 01 01 00 00 */ | ||
130 | |||
131 | /* J7 (x); J6 AUDCK; J5 ASEBRKAK; J4 AUDATA3; | ||
132 | * J3 AUDATA2; J2 AUDATA1; J1 AUDATA0; J0 AUDSYNC; | ||
133 | */ | ||
134 | ctrl_outw(0x0000, PORT_PJCR); /* 00 00 00 00 00 00 00 00 */ | ||
135 | |||
136 | /* K7 (x); K6 (x); K5 (x); K4 (x); | ||
137 | * K3 PINT7(/PWR2); K2 PINT6(/PWR1); K1 PINT5(nu); K0 PINT4(FLASH_READY) | ||
138 | */ | ||
139 | ctrl_outw(0x00FF, PORT_PKCR); /* 00 00 00 00 11 11 11 11 */ | ||
140 | |||
141 | /* L7 TRST; L6 TMS; L5 TDO; L4 TDI; | ||
142 | * L3 TCK; L2 (x); L1 (x); L0 (x); | ||
143 | */ | ||
144 | ctrl_outw(0x0000, PORT_PLCR); /* 00 00 00 00 00 00 00 00 */ | ||
145 | |||
146 | /* M7 GPO(CURRENT_SINK); M6 GPO(PWR_SWITCH); M5 GPO(LAN_SPEED); | ||
147 | * M4 GPO(LAN_RESET); M3 GPO(BUZZER); M2 GPO(LCD_BL); | ||
148 | * M1 CS5B(CAN3_CS); M0 GPI+(nc); | ||
149 | */ | ||
150 | ctrl_outw(0x5552, PORT_PMCR); /* 01 01 01 01 01 01 00 10 */ | ||
151 | |||
152 | /* CURRENT_SINK=off, PWR_SWITCH=off, LAN_SPEED=100MBit, | ||
153 | * LAN_RESET=off, BUZZER=off, LCD_BL=off | ||
154 | */ | ||
155 | #if CONFIG_SH_MAGIC_PANEL_R2_VERSION == 2 | ||
156 | ctrl_outb(0x30, PORT_PMDR); | ||
157 | #elif CONFIG_SH_MAGIC_PANEL_R2_VERSION == 3 | ||
158 | ctrl_outb(0xF0, PORT_PMDR); | ||
159 | #else | ||
160 | #error Unknown revision of PLATFORM_MP_R2 | ||
161 | #endif | ||
162 | |||
163 | /* P7 (x); P6 (x); P5 (x); | ||
164 | * P4 GPO(nu); P3 IRQ3(LAN_IRQ); P2 IRQ2(CAN3_IRQ); | ||
165 | * P1 IRQ1(CAN2_IRQ); P0 IRQ0(CAN1_IRQ) | ||
166 | */ | ||
167 | ctrl_outw(0x0100, PORT_PPCR); /* 00 00 00 01 00 00 00 00 */ | ||
168 | ctrl_outb(0x10, PORT_PPDR); | ||
169 | |||
170 | /* R7 A25; R6 A24; R5 A23; R4 A22; | ||
171 | * R3 A21; R2 A20; R1 A19; R0 A0; | ||
172 | */ | ||
173 | ctrl_outw(0x0000, PORT_PRCR); /* 00 00 00 00 00 00 00 00 */ | ||
174 | |||
175 | /* S7 (x); S6 (x); S5 (x); S4 GPO(EEPROM_CS2); | ||
176 | * S3 GPO(EEPROM_CS1); S2 SIOF0_TXD; S1 SIOF0_RXD; S0 SIOF0_SCK; | ||
177 | */ | ||
178 | ctrl_outw(0x0140, PORT_PSCR); /* 00 00 00 01 01 00 00 00 */ | ||
179 | |||
180 | /* T7 (x); T6 (x); T5 (x); T4 COM1_CTS; | ||
181 | * T3 COM1_RTS; T2 COM1_TXD; T1 COM1_RXD; T0 GPO(WDOG) | ||
182 | */ | ||
183 | ctrl_outw(0x0001, PORT_PTCR); /* 00 00 00 00 00 00 00 01 */ | ||
184 | |||
185 | /* U7 (x); U6 (x); U5 (x); U4 GPI+(/AC_FAULT); | ||
186 | * U3 GPO(TOUCH_CS); U2 TOUCH_TXD; U1 TOUCH_RXD; U0 TOUCH_SCK; | ||
187 | */ | ||
188 | ctrl_outw(0x0240, PORT_PUCR); /* 00 00 00 10 01 00 00 00 */ | ||
189 | |||
190 | /* V7 (x); V6 (x); V5 (x); V4 GPO(MID2); | ||
191 | * V3 GPO(MID1); V2 CARD_TxD; V1 CARD_RxD; V0 GPI+(/BAT_FAULT); | ||
192 | */ | ||
193 | ctrl_outw(0x0142, PORT_PVCR); /* 00 00 00 01 01 00 00 10 */ | ||
194 | } | ||
195 | |||
196 | static void __init mpr2_setup(char **cmdline_p) | ||
197 | { | ||
198 | __set_io_port_base(0xa0000000); | ||
199 | |||
200 | /* set Pin Select Register A: | ||
201 | * /PCC_CD1, /PCC_CD2, PCC_BVD1, PCC_BVD2, | ||
202 | * /IOIS16, IRQ4, IRQ5, USB1d_SUSPEND | ||
203 | */ | ||
204 | ctrl_outw(0xAABC, PORT_PSELA); | ||
205 | /* set Pin Select Register B: | ||
206 | * /SCIF0_RTS, /SCIF0_CTS, LCD_VCPWC, | ||
207 | * LCD_VEPWC, IIC_SDA, IIC_SCL, Reserved | ||
208 | */ | ||
209 | ctrl_outw(0x3C00, PORT_PSELB); | ||
210 | /* set Pin Select Register C: | ||
211 | * SIOF1_SCK, SIOF1_RxD, SCIF1_RxD, SCIF1_TxD, Reserved | ||
212 | */ | ||
213 | ctrl_outw(0x0000, PORT_PSELC); | ||
214 | /* set Pin Select Register D: Reserved, SIOF1_TxD, Reserved, SIOF1_MCLK, | ||
215 | * Reserved, SIOF1_SYNC, Reserved, SCIF1_SCK, Reserved | ||
216 | */ | ||
217 | ctrl_outw(0x0000, PORT_PSELD); | ||
218 | /* set USB TxRx Control: Reserved, DRV, Reserved, USB_TRANS, USB_SEL */ | ||
219 | ctrl_outw(0x0101, PORT_UTRCTL); | ||
220 | /* set USB Clock Control: USSCS, USSTB, Reserved (HighByte always A5) */ | ||
221 | ctrl_outw(0xA5C0, PORT_UCLKCR_W); | ||
222 | |||
223 | setup_chip_select(); | ||
224 | |||
225 | setup_port_multiplexing(); | ||
226 | |||
227 | reset_ethernet(); | ||
228 | |||
229 | printk(KERN_INFO "Magic Panel Release 2 A.%i\n", | ||
230 | CONFIG_SH_MAGIC_PANEL_R2_VERSION); | ||
231 | |||
232 | if (ethernet_reset_finished() == 0) | ||
233 | printk(KERN_WARNING "Ethernet not ready\n"); | ||
234 | } | ||
235 | |||
236 | static struct resource smc911x_resources[] = { | ||
237 | [0] = { | ||
238 | .start = 0xa8000000, | ||
239 | .end = 0xabffffff, | ||
240 | .flags = IORESOURCE_MEM, | ||
241 | }, | ||
242 | [1] = { | ||
243 | .start = 35, | ||
244 | .end = 35, | ||
245 | .flags = IORESOURCE_IRQ, | ||
246 | }, | ||
247 | }; | ||
248 | |||
249 | static struct platform_device smc911x_device = { | ||
250 | .name = "smc911x", | ||
251 | .id = -1, | ||
252 | .num_resources = ARRAY_SIZE(smc911x_resources), | ||
253 | .resource = smc911x_resources, | ||
254 | }; | ||
255 | |||
256 | static struct resource heartbeat_resources[] = { | ||
257 | [0] = { | ||
258 | .start = PA_LED, | ||
259 | .end = PA_LED, | ||
260 | .flags = IORESOURCE_MEM, | ||
261 | }, | ||
262 | }; | ||
263 | |||
264 | static struct heartbeat_data heartbeat_data = { | ||
265 | .flags = HEARTBEAT_INVERTED, | ||
266 | }; | ||
267 | |||
268 | static struct platform_device heartbeat_device = { | ||
269 | .name = "heartbeat", | ||
270 | .id = -1, | ||
271 | .dev = { | ||
272 | .platform_data = &heartbeat_data, | ||
273 | }, | ||
274 | .num_resources = ARRAY_SIZE(heartbeat_resources), | ||
275 | .resource = heartbeat_resources, | ||
276 | }; | ||
277 | |||
278 | static struct mtd_partition *parsed_partitions; | ||
279 | |||
280 | static struct mtd_partition mpr2_partitions[] = { | ||
281 | /* Reserved for bootloader, read-only */ | ||
282 | { | ||
283 | .name = "Bootloader", | ||
284 | .offset = 0x00000000UL, | ||
285 | .size = MPR2_MTD_BOOTLOADER_SIZE, | ||
286 | .mask_flags = MTD_WRITEABLE, | ||
287 | }, | ||
288 | /* Reserved for kernel image */ | ||
289 | { | ||
290 | .name = "Kernel", | ||
291 | .offset = MTDPART_OFS_NXTBLK, | ||
292 | .size = MPR2_MTD_KERNEL_SIZE, | ||
293 | }, | ||
294 | /* Rest is used for Flash FS */ | ||
295 | { | ||
296 | .name = "Flash_FS", | ||
297 | .offset = MTDPART_OFS_NXTBLK, | ||
298 | .size = MTDPART_SIZ_FULL, | ||
299 | } | ||
300 | }; | ||
301 | |||
302 | static struct physmap_flash_data flash_data = { | ||
303 | .width = 2, | ||
304 | }; | ||
305 | |||
306 | static struct resource flash_resource = { | ||
307 | .start = 0x00000000, | ||
308 | .end = 0x2000000UL, | ||
309 | .flags = IORESOURCE_MEM, | ||
310 | }; | ||
311 | |||
312 | static struct platform_device flash_device = { | ||
313 | .name = "physmap-flash", | ||
314 | .id = -1, | ||
315 | .resource = &flash_resource, | ||
316 | .num_resources = 1, | ||
317 | .dev = { | ||
318 | .platform_data = &flash_data, | ||
319 | }, | ||
320 | }; | ||
321 | |||
322 | static struct mtd_info *flash_mtd; | ||
323 | |||
324 | static struct map_info mpr2_flash_map = { | ||
325 | .name = "Magic Panel R2 Flash", | ||
326 | .size = 0x2000000UL, | ||
327 | .bankwidth = 2, | ||
328 | }; | ||
329 | |||
330 | static void __init set_mtd_partitions(void) | ||
331 | { | ||
332 | int nr_parts = 0; | ||
333 | |||
334 | simple_map_init(&mpr2_flash_map); | ||
335 | flash_mtd = do_map_probe("cfi_probe", &mpr2_flash_map); | ||
336 | nr_parts = parse_mtd_partitions(flash_mtd, probes, | ||
337 | &parsed_partitions, 0); | ||
338 | /* If there is no partition table, used the hard coded table */ | ||
339 | if (nr_parts <= 0) { | ||
340 | flash_data.parts = mpr2_partitions; | ||
341 | flash_data.nr_parts = ARRAY_SIZE(mpr2_partitions); | ||
342 | } else { | ||
343 | flash_data.nr_parts = nr_parts; | ||
344 | flash_data.parts = parsed_partitions; | ||
345 | } | ||
346 | } | ||
347 | |||
348 | /* | ||
349 | * Add all resources to the platform_device | ||
350 | */ | ||
351 | |||
352 | static struct platform_device *mpr2_devices[] __initdata = { | ||
353 | &heartbeat_device, | ||
354 | &smc911x_device, | ||
355 | &flash_device, | ||
356 | }; | ||
357 | |||
358 | |||
359 | static int __init mpr2_devices_setup(void) | ||
360 | { | ||
361 | set_mtd_partitions(); | ||
362 | return platform_add_devices(mpr2_devices, ARRAY_SIZE(mpr2_devices)); | ||
363 | } | ||
364 | device_initcall(mpr2_devices_setup); | ||
365 | |||
366 | /* | ||
367 | * Initialize IRQ setting | ||
368 | */ | ||
369 | static void __init init_mpr2_IRQ(void) | ||
370 | { | ||
371 | plat_irq_setup_pins(IRQ_MODE_IRQ); /* install handlers for IRQ0-5 */ | ||
372 | |||
373 | set_irq_type(32, IRQ_TYPE_LEVEL_LOW); /* IRQ0 CAN1 */ | ||
374 | set_irq_type(33, IRQ_TYPE_LEVEL_LOW); /* IRQ1 CAN2 */ | ||
375 | set_irq_type(34, IRQ_TYPE_LEVEL_LOW); /* IRQ2 CAN3 */ | ||
376 | set_irq_type(35, IRQ_TYPE_LEVEL_LOW); /* IRQ3 SMSC9115 */ | ||
377 | set_irq_type(36, IRQ_TYPE_EDGE_RISING); /* IRQ4 touchscreen */ | ||
378 | set_irq_type(37, IRQ_TYPE_EDGE_FALLING); /* IRQ5 touchscreen */ | ||
379 | |||
380 | intc_set_priority(32, 13); /* IRQ0 CAN1 */ | ||
381 | intc_set_priority(33, 13); /* IRQ0 CAN2 */ | ||
382 | intc_set_priority(34, 13); /* IRQ0 CAN3 */ | ||
383 | intc_set_priority(35, 6); /* IRQ3 SMSC9115 */ | ||
384 | } | ||
385 | |||
386 | /* | ||
387 | * The Machine Vector | ||
388 | */ | ||
389 | |||
390 | static struct sh_machine_vector mv_mpr2 __initmv = { | ||
391 | .mv_name = "mpr2", | ||
392 | .mv_setup = mpr2_setup, | ||
393 | .mv_init_irq = init_mpr2_IRQ, | ||
394 | }; | ||
diff --git a/arch/sh/boards/mpc1211/setup.c b/arch/sh/boards/mpc1211/setup.c index 8ce03e00b0ae..fede36361dc7 100644 --- a/arch/sh/boards/mpc1211/setup.c +++ b/arch/sh/boards/mpc1211/setup.c | |||
@@ -285,7 +285,7 @@ static int put_smb_blk(unsigned char *p, int address, int command, int no) | |||
285 | static struct resource heartbeat_resources[] = { | 285 | static struct resource heartbeat_resources[] = { |
286 | [0] = { | 286 | [0] = { |
287 | .start = 0xa2000000, | 287 | .start = 0xa2000000, |
288 | .end = 0xa2000000 + 8 - 1, | 288 | .end = 0xa2000000, |
289 | .flags = IORESOURCE_MEM, | 289 | .flags = IORESOURCE_MEM, |
290 | }, | 290 | }, |
291 | }; | 291 | }; |
diff --git a/arch/sh/boards/renesas/r7780rp/Makefile b/arch/sh/boards/renesas/r7780rp/Makefile index b1d20afb4eb3..dd26182fbf58 100644 --- a/arch/sh/boards/renesas/r7780rp/Makefile +++ b/arch/sh/boards/renesas/r7780rp/Makefile | |||
@@ -1,9 +1,10 @@ | |||
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 | irqinit-y := irq-r7780rp.o | 4 | irqinit-$(CONFIG_SH_R7780MP) := irq-r7780mp.o |
5 | irqinit-$(CONFIG_SH_R7785RP) := irq-r7785rp.o | 5 | irqinit-$(CONFIG_SH_R7785RP) := irq-r7785rp.o |
6 | obj-y := setup.o irq.o $(irqinit-y) | 6 | irqinit-$(CONFIG_SH_R7780RP) := irq-r7780rp.o irq.o |
7 | obj-y := setup.o $(irqinit-y) | ||
7 | 8 | ||
8 | ifneq ($(CONFIG_SH_R7785RP),y) | 9 | ifneq ($(CONFIG_SH_R7785RP),y) |
9 | obj-$(CONFIG_PUSH_SWITCH) += psw.o | 10 | obj-$(CONFIG_PUSH_SWITCH) += psw.o |
diff --git a/arch/sh/boards/renesas/r7780rp/irq-r7780mp.c b/arch/sh/boards/renesas/r7780rp/irq-r7780mp.c new file mode 100644 index 000000000000..59b47fe061f9 --- /dev/null +++ b/arch/sh/boards/renesas/r7780rp/irq-r7780mp.c | |||
@@ -0,0 +1,61 @@ | |||
1 | /* | ||
2 | * Renesas Solutions Highlander R7780MP Support. | ||
3 | * | ||
4 | * Copyright (C) 2002 Atom Create Engineering Co., Ltd. | ||
5 | * Copyright (C) 2006 Paul Mundt | ||
6 | * Copyright (C) 2007 Magnus Damm | ||
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/io.h> | ||
15 | #include <asm/r7780rp.h> | ||
16 | |||
17 | enum { | ||
18 | UNUSED = 0, | ||
19 | |||
20 | /* board specific interrupt sources */ | ||
21 | AX88796, /* Ethernet controller */ | ||
22 | CF, /* Compact Flash */ | ||
23 | PSW, /* Push Switch */ | ||
24 | EXT1, /* EXT1n IRQ */ | ||
25 | EXT4, /* EXT4n IRQ */ | ||
26 | }; | ||
27 | |||
28 | static struct intc_vect vectors[] __initdata = { | ||
29 | INTC_IRQ(CF, IRQ_CF), | ||
30 | INTC_IRQ(PSW, IRQ_PSW), | ||
31 | INTC_IRQ(AX88796, IRQ_AX88796), | ||
32 | INTC_IRQ(EXT1, IRQ_EXT1), | ||
33 | INTC_IRQ(EXT4, IRQ_EXT4), | ||
34 | }; | ||
35 | |||
36 | static struct intc_mask_reg mask_registers[] __initdata = { | ||
37 | { 0xa4000000, 0, 16, /* IRLMSK */ | ||
38 | { 0, 0, 0, 0, CF, 0, 0, 0, | ||
39 | 0, 0, 0, EXT4, 0, EXT1, PSW, AX88796 } }, | ||
40 | }; | ||
41 | |||
42 | static unsigned char irl2irq[HL_NR_IRL] __initdata = { | ||
43 | 0, IRQ_CF, 0, 0, | ||
44 | 0, 0, 0, 0, | ||
45 | 0, IRQ_EXT4, 0, IRQ_EXT1, | ||
46 | 0, IRQ_AX88796, IRQ_PSW, | ||
47 | }; | ||
48 | |||
49 | static DECLARE_INTC_DESC(intc_desc, "r7780mp", vectors, | ||
50 | NULL, NULL, mask_registers, NULL, NULL); | ||
51 | |||
52 | unsigned char * __init highlander_init_irq_r7780mp(void) | ||
53 | { | ||
54 | if ((ctrl_inw(0xa4000700) & 0xf000) == 0x2000) { | ||
55 | printk(KERN_INFO "Using r7780mp interrupt controller.\n"); | ||
56 | register_intc_controller(&intc_desc); | ||
57 | return irl2irq; | ||
58 | } | ||
59 | |||
60 | return NULL; | ||
61 | } | ||
diff --git a/arch/sh/boards/renesas/r7780rp/irq-r7780rp.c b/arch/sh/boards/renesas/r7780rp/irq-r7780rp.c index f5f358746c9e..fa4a534cade9 100644 --- a/arch/sh/boards/renesas/r7780rp/irq-r7780rp.c +++ b/arch/sh/boards/renesas/r7780rp/irq-r7780rp.c | |||
@@ -9,13 +9,15 @@ | |||
9 | * for more details. | 9 | * for more details. |
10 | */ | 10 | */ |
11 | #include <linux/init.h> | 11 | #include <linux/init.h> |
12 | #include <asm/io.h> | 12 | #include <linux/io.h> |
13 | #include <asm/r7780rp.h> | 13 | #include <asm/r7780rp.h> |
14 | 14 | ||
15 | void __init highlander_init_irq(void) | 15 | unsigned char * __init highlander_init_irq_r7780rp(void) |
16 | { | 16 | { |
17 | int i; | 17 | int i; |
18 | 18 | ||
19 | for (i = 0; i < 15; i++) | 19 | for (i = 0; i < 15; i++) |
20 | make_r7780rp_irq(i); | 20 | make_r7780rp_irq(i); |
21 | |||
22 | return NULL; | ||
21 | } | 23 | } |
diff --git a/arch/sh/boards/renesas/r7780rp/irq-r7785rp.c b/arch/sh/boards/renesas/r7780rp/irq-r7785rp.c index dd6ec4ce44dc..b2c6a84673bd 100644 --- a/arch/sh/boards/renesas/r7780rp/irq-r7785rp.c +++ b/arch/sh/boards/renesas/r7780rp/irq-r7785rp.c | |||
@@ -1,19 +1,55 @@ | |||
1 | /* | 1 | /* |
2 | * Renesas Solutions Highlander R7780RP-1 Support. | 2 | * Renesas Solutions Highlander R7785RP Support. |
3 | * | 3 | * |
4 | * Copyright (C) 2002 Atom Create Engineering Co., Ltd. | 4 | * Copyright (C) 2002 Atom Create Engineering Co., Ltd. |
5 | * Copyright (C) 2006 Paul Mundt | 5 | * Copyright (C) 2006 Paul Mundt |
6 | * Copyright (C) 2007 Magnus Damm | ||
6 | * | 7 | * |
7 | * This file is subject to the terms and conditions of the GNU General Public | 8 | * 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 | * License. See the file "COPYING" in the main directory of this archive |
9 | * for more details. | 10 | * for more details. |
10 | */ | 11 | */ |
11 | #include <linux/init.h> | 12 | #include <linux/init.h> |
12 | #include <asm/io.h> | 13 | #include <linux/irq.h> |
14 | #include <linux/io.h> | ||
13 | #include <asm/r7780rp.h> | 15 | #include <asm/r7780rp.h> |
14 | 16 | ||
15 | void __init highlander_init_irq(void) | 17 | enum { |
18 | UNUSED = 0, | ||
19 | |||
20 | /* board specific interrupt sources */ | ||
21 | AX88796, /* Ethernet controller */ | ||
22 | CF, /* Compact Flash */ | ||
23 | }; | ||
24 | |||
25 | static struct intc_vect vectors[] __initdata = { | ||
26 | INTC_IRQ(CF, IRQ_CF), | ||
27 | INTC_IRQ(AX88796, IRQ_AX88796), | ||
28 | }; | ||
29 | |||
30 | static struct intc_mask_reg mask_registers[] __initdata = { | ||
31 | { 0xa4000010, 0, 16, /* IRLMCR1 */ | ||
32 | { 0, 0, 0, 0, CF, AX88796, 0, 0, | ||
33 | 0, 0, 0, 0, 0, 0, 0, 0 } }, | ||
34 | }; | ||
35 | |||
36 | static unsigned char irl2irq[HL_NR_IRL] __initdata = { | ||
37 | 0, IRQ_CF, 0, 0, | ||
38 | 0, 0, 0, 0, | ||
39 | 0, 0, IRQ_AX88796, 0, | ||
40 | 0, 0, 0, | ||
41 | }; | ||
42 | |||
43 | static DECLARE_INTC_DESC(intc_desc, "r7785rp", vectors, | ||
44 | NULL, NULL, mask_registers, NULL, NULL); | ||
45 | |||
46 | unsigned char * __init highlander_init_irq_r7785rp(void) | ||
16 | { | 47 | { |
48 | if ((ctrl_inw(0xa4000158) & 0xf000) != 0x1000) | ||
49 | return NULL; | ||
50 | |||
51 | printk(KERN_INFO "Using r7785rp interrupt controller.\n"); | ||
52 | |||
17 | ctrl_outw(0x0000, PA_IRLSSR1); /* FPGA IRLSSR1(CF_CD clear) */ | 53 | ctrl_outw(0x0000, PA_IRLSSR1); /* FPGA IRLSSR1(CF_CD clear) */ |
18 | 54 | ||
19 | /* Setup the FPGA IRL */ | 55 | /* Setup the FPGA IRL */ |
@@ -24,6 +60,6 @@ void __init highlander_init_irq(void) | |||
24 | ctrl_outw(0x4321, PA_IRLPRE); /* FPGA IRLE */ | 60 | ctrl_outw(0x4321, PA_IRLPRE); /* FPGA IRLE */ |
25 | ctrl_outw(0x0000, PA_IRLPRF); /* FPGA IRLF */ | 61 | ctrl_outw(0x0000, PA_IRLPRF); /* FPGA IRLF */ |
26 | 62 | ||
27 | make_r7780rp_irq(1); /* CF card */ | 63 | register_intc_controller(&intc_desc); |
28 | make_r7780rp_irq(10); /* On-board ethernet */ | 64 | return irl2irq; |
29 | } | 65 | } |
diff --git a/arch/sh/boards/renesas/r7780rp/setup.c b/arch/sh/boards/renesas/r7780rp/setup.c index adb529d01bae..afe9de73666a 100644 --- a/arch/sh/boards/renesas/r7780rp/setup.c +++ b/arch/sh/boards/renesas/r7780rp/setup.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <asm/machvec.h> | 19 | #include <asm/machvec.h> |
20 | #include <asm/r7780rp.h> | 20 | #include <asm/r7780rp.h> |
21 | #include <asm/clock.h> | 21 | #include <asm/clock.h> |
22 | #include <asm/heartbeat.h> | ||
22 | #include <asm/io.h> | 23 | #include <asm/io.h> |
23 | 24 | ||
24 | static struct resource r8a66597_usb_host_resources[] = { | 25 | static struct resource r8a66597_usb_host_resources[] = { |
@@ -30,8 +31,8 @@ static struct resource r8a66597_usb_host_resources[] = { | |||
30 | }, | 31 | }, |
31 | [1] = { | 32 | [1] = { |
32 | .name = "r8a66597_hcd", | 33 | .name = "r8a66597_hcd", |
33 | .start = 11, /* irq number */ | 34 | .start = IRQ_EXT1, /* irq number */ |
34 | .end = 11, | 35 | .end = IRQ_EXT1, |
35 | .flags = IORESOURCE_IRQ, | 36 | .flags = IORESOURCE_IRQ, |
36 | }, | 37 | }, |
37 | }; | 38 | }; |
@@ -56,8 +57,8 @@ static struct resource m66592_usb_peripheral_resources[] = { | |||
56 | }, | 57 | }, |
57 | [1] = { | 58 | [1] = { |
58 | .name = "m66592_udc", | 59 | .name = "m66592_udc", |
59 | .start = 9, /* irq number */ | 60 | .start = IRQ_EXT4, /* irq number */ |
60 | .end = 9, | 61 | .end = IRQ_EXT4, |
61 | .flags = IORESOURCE_IRQ, | 62 | .flags = IORESOURCE_IRQ, |
62 | }, | 63 | }, |
63 | }; | 64 | }; |
@@ -85,11 +86,7 @@ static struct resource cf_ide_resources[] = { | |||
85 | .flags = IORESOURCE_MEM, | 86 | .flags = IORESOURCE_MEM, |
86 | }, | 87 | }, |
87 | [2] = { | 88 | [2] = { |
88 | #ifdef CONFIG_SH_R7780RP | 89 | .start = IRQ_CF, |
89 | .start = 4, | ||
90 | #else | ||
91 | .start = 1, | ||
92 | #endif | ||
93 | .flags = IORESOURCE_IRQ, | 90 | .flags = IORESOURCE_IRQ, |
94 | }, | 91 | }, |
95 | }; | 92 | }; |
@@ -108,16 +105,23 @@ static struct platform_device cf_ide_device = { | |||
108 | }, | 105 | }, |
109 | }; | 106 | }; |
110 | 107 | ||
111 | static unsigned char heartbeat_bit_pos[] = { 2, 1, 0, 3, 6, 5, 4, 7 }; | ||
112 | |||
113 | static struct resource heartbeat_resources[] = { | 108 | static struct resource heartbeat_resources[] = { |
114 | [0] = { | 109 | [0] = { |
115 | .start = PA_OBLED, | 110 | .start = PA_OBLED, |
116 | .end = PA_OBLED + ARRAY_SIZE(heartbeat_bit_pos) - 1, | 111 | .end = PA_OBLED, |
117 | .flags = IORESOURCE_MEM, | 112 | .flags = IORESOURCE_MEM, |
118 | }, | 113 | }, |
119 | }; | 114 | }; |
120 | 115 | ||
116 | #ifndef CONFIG_SH_R7785RP | ||
117 | static unsigned char heartbeat_bit_pos[] = { 2, 1, 0, 3, 6, 5, 4, 7 }; | ||
118 | |||
119 | static struct heartbeat_data heartbeat_data = { | ||
120 | .bit_pos = heartbeat_bit_pos, | ||
121 | .nr_bits = ARRAY_SIZE(heartbeat_bit_pos), | ||
122 | }; | ||
123 | #endif | ||
124 | |||
121 | static struct platform_device heartbeat_device = { | 125 | static struct platform_device heartbeat_device = { |
122 | .name = "heartbeat", | 126 | .name = "heartbeat", |
123 | .id = -1, | 127 | .id = -1, |
@@ -125,7 +129,7 @@ static struct platform_device heartbeat_device = { | |||
125 | /* R7785RP has a slightly more sensible FPGA.. */ | 129 | /* R7785RP has a slightly more sensible FPGA.. */ |
126 | #ifndef CONFIG_SH_R7785RP | 130 | #ifndef CONFIG_SH_R7785RP |
127 | .dev = { | 131 | .dev = { |
128 | .platform_data = heartbeat_bit_pos, | 132 | .platform_data = &heartbeat_data, |
129 | }, | 133 | }, |
130 | #endif | 134 | #endif |
131 | .num_resources = ARRAY_SIZE(heartbeat_resources), | 135 | .num_resources = ARRAY_SIZE(heartbeat_resources), |
@@ -217,12 +221,50 @@ static void __init highlander_setup(char **cmdline_p) | |||
217 | pm_power_off = r7780rp_power_off; | 221 | pm_power_off = r7780rp_power_off; |
218 | } | 222 | } |
219 | 223 | ||
224 | static unsigned char irl2irq[HL_NR_IRL]; | ||
225 | |||
226 | int highlander_irq_demux(int irq) | ||
227 | { | ||
228 | if (irq >= HL_NR_IRL || !irl2irq[irq]) | ||
229 | return irq; | ||
230 | |||
231 | return irl2irq[irq]; | ||
232 | } | ||
233 | |||
234 | void __init highlander_init_irq(void) | ||
235 | { | ||
236 | unsigned char *ucp = NULL; | ||
237 | |||
238 | do { | ||
239 | #ifdef CONFIG_SH_R7780MP | ||
240 | ucp = highlander_init_irq_r7780mp(); | ||
241 | if (ucp) | ||
242 | break; | ||
243 | #endif | ||
244 | #ifdef CONFIG_SH_R7785RP | ||
245 | ucp = highlander_init_irq_r7785rp(); | ||
246 | if (ucp) | ||
247 | break; | ||
248 | #endif | ||
249 | #ifdef CONFIG_SH_R7780RP | ||
250 | highlander_init_irq_r7780rp(); | ||
251 | ucp = irl2irq; | ||
252 | break; | ||
253 | #endif | ||
254 | } while (0); | ||
255 | |||
256 | if (ucp) { | ||
257 | plat_irq_setup_pins(IRQ_MODE_IRL3210); | ||
258 | memcpy(irl2irq, ucp, HL_NR_IRL); | ||
259 | } | ||
260 | } | ||
261 | |||
220 | /* | 262 | /* |
221 | * The Machine Vector | 263 | * The Machine Vector |
222 | */ | 264 | */ |
223 | static struct sh_machine_vector mv_highlander __initmv = { | 265 | static struct sh_machine_vector mv_highlander __initmv = { |
224 | .mv_name = "Highlander", | 266 | .mv_name = "Highlander", |
225 | .mv_nr_irqs = 109, | ||
226 | .mv_setup = highlander_setup, | 267 | .mv_setup = highlander_setup, |
227 | .mv_init_irq = highlander_init_irq, | 268 | .mv_init_irq = highlander_init_irq, |
269 | .mv_irq_demux = highlander_irq_demux, | ||
228 | }; | 270 | }; |
diff --git a/arch/sh/boards/renesas/rts7751r2d/Kconfig b/arch/sh/boards/renesas/rts7751r2d/Kconfig index 7780d1fb13ff..8122a9667fc9 100644 --- a/arch/sh/boards/renesas/rts7751r2d/Kconfig +++ b/arch/sh/boards/renesas/rts7751r2d/Kconfig | |||
@@ -1,11 +1,22 @@ | |||
1 | if SH_RTS7751R2D | 1 | if SH_RTS7751R2D |
2 | 2 | ||
3 | menu "RTS7751R2D options" | 3 | menu "RTS7751R2D Board Revision" |
4 | 4 | ||
5 | config RTS7751R2D_REV11 | 5 | config RTS7751R2D_PLUS |
6 | bool "RTS7751R2D Rev. 1.1 board support" | 6 | bool "R2D-PLUS" |
7 | help | 7 | help |
8 | Selecting this option will support version rev. 1.1. | 8 | Selecting this option will configure the kernel for R2D-PLUS. |
9 | |||
10 | R2D-PLUS is the smaller of the two R2D board versions, equipped | ||
11 | with a single PCI slot. | ||
12 | |||
13 | config RTS7751R2D_1 | ||
14 | bool "R2D-1" | ||
15 | help | ||
16 | Selecting this option will configure the kernel for R2D-1. | ||
17 | |||
18 | R2D-1 is the larger of the two R2D board versions, equipped | ||
19 | with two PCI slots. | ||
9 | endmenu | 20 | endmenu |
10 | 21 | ||
11 | endif | 22 | endif |
diff --git a/arch/sh/boards/renesas/rts7751r2d/irq.c b/arch/sh/boards/renesas/rts7751r2d/irq.c index 0bae9041aceb..7cc2813adfe4 100644 --- a/arch/sh/boards/renesas/rts7751r2d/irq.c +++ b/arch/sh/boards/renesas/rts7751r2d/irq.c | |||
@@ -1,84 +1,159 @@ | |||
1 | /* | 1 | /* |
2 | * linux/arch/sh/boards/renesas/rts7751r2d/irq.c | 2 | * linux/arch/sh/boards/renesas/rts7751r2d/irq.c |
3 | * | 3 | * |
4 | * Copyright (C) 2007 Magnus Damm | ||
4 | * Copyright (C) 2000 Kazumoto Kojima | 5 | * Copyright (C) 2000 Kazumoto Kojima |
5 | * | 6 | * |
6 | * Renesas Technology Sales RTS7751R2D Support. | 7 | * Renesas Technology Sales RTS7751R2D Support, R2D-PLUS and R2D-1. |
7 | * | 8 | * |
8 | * Modified for RTS7751R2D by | 9 | * Modified for RTS7751R2D by |
9 | * Atom Create Engineering Co., Ltd. 2002. | 10 | * Atom Create Engineering Co., Ltd. 2002. |
10 | */ | 11 | */ |
11 | #include <linux/init.h> | 12 | #include <linux/init.h> |
12 | #include <linux/interrupt.h> | ||
13 | #include <linux/irq.h> | 13 | #include <linux/irq.h> |
14 | #include <linux/interrupt.h> | 14 | #include <linux/interrupt.h> |
15 | #include <linux/io.h> | 15 | #include <linux/io.h> |
16 | #include <asm/voyagergx.h> | ||
16 | #include <asm/rts7751r2d.h> | 17 | #include <asm/rts7751r2d.h> |
17 | 18 | ||
18 | #if defined(CONFIG_RTS7751R2D_REV11) | 19 | #define R2D_NR_IRL 13 |
19 | static int mask_pos[] = {11, 9, 8, 12, 10, 6, 5, 4, 7, 14, 13, 0, 0, 0, 0}; | ||
20 | #else | ||
21 | static int mask_pos[] = {6, 11, 9, 8, 12, 10, 5, 4, 7, 14, 13, 0, 0, 0, 0}; | ||
22 | #endif | ||
23 | 20 | ||
24 | extern int voyagergx_irq_demux(int irq); | 21 | enum { |
25 | extern void setup_voyagergx_irq(void); | 22 | UNUSED = 0, |
26 | 23 | ||
27 | static void enable_rts7751r2d_irq(unsigned int irq) | 24 | /* board specific interrupt sources (R2D-1 and R2D-PLUS) */ |
28 | { | 25 | EXT, /* EXT_INT0-3 */ |
29 | /* Set priority in IPR back to original value */ | 26 | RTC_T, RTC_A, /* Real Time Clock */ |
30 | ctrl_outw(ctrl_inw(IRLCNTR1) | (1 << mask_pos[irq]), IRLCNTR1); | 27 | AX88796, /* Ethernet controller (R2D-1 board) */ |
31 | } | 28 | KEY, /* Key input (R2D-PLUS board) */ |
29 | SDCARD, /* SD Card */ | ||
30 | CF_CD, CF_IDE, /* CF Card Detect + CF IDE */ | ||
31 | SM501, /* SM501 aka Voyager */ | ||
32 | PCI_INTD_RTL8139, /* Ethernet controller */ | ||
33 | PCI_INTC_PCI1520, /* Cardbus/PCMCIA bridge */ | ||
34 | PCI_INTB_RTL8139, /* Ethernet controller with HUB (R2D-PLUS board) */ | ||
35 | PCI_INTB_SLOT, /* PCI Slot 3.3v (R2D-1 board) */ | ||
36 | PCI_INTA_SLOT, /* PCI Slot 3.3v */ | ||
37 | TP, /* Touch Panel */ | ||
38 | }; | ||
32 | 39 | ||
33 | static void disable_rts7751r2d_irq(unsigned int irq) | 40 | #ifdef CONFIG_RTS7751R2D_1 |
34 | { | 41 | |
35 | /* Set the priority in IPR to 0 */ | 42 | /* Vectors for R2D-1 */ |
36 | ctrl_outw(ctrl_inw(IRLCNTR1) & (0xffff ^ (1 << mask_pos[irq])), | 43 | static struct intc_vect vectors_r2d_1[] __initdata = { |
37 | IRLCNTR1); | 44 | INTC_IRQ(EXT, IRQ_EXT), |
38 | } | 45 | INTC_IRQ(RTC_T, IRQ_RTC_T), INTC_IRQ(RTC_A, IRQ_RTC_A), |
46 | INTC_IRQ(AX88796, IRQ_AX88796), INTC_IRQ(SDCARD, IRQ_SDCARD), | ||
47 | INTC_IRQ(CF_CD, IRQ_CF_CD), INTC_IRQ(CF_IDE, IRQ_CF_IDE), /* ng */ | ||
48 | INTC_IRQ(SM501, IRQ_VOYAGER), | ||
49 | INTC_IRQ(PCI_INTD_RTL8139, IRQ_PCI_INTD), | ||
50 | INTC_IRQ(PCI_INTC_PCI1520, IRQ_PCI_INTC), | ||
51 | INTC_IRQ(PCI_INTB_SLOT, IRQ_PCI_INTB), | ||
52 | INTC_IRQ(PCI_INTA_SLOT, IRQ_PCI_INTA), | ||
53 | INTC_IRQ(TP, IRQ_TP), | ||
54 | }; | ||
55 | |||
56 | /* IRLMSK mask register layout for R2D-1 */ | ||
57 | static struct intc_mask_reg mask_registers_r2d_1[] __initdata = { | ||
58 | { 0xa4000000, 0, 16, /* IRLMSK */ | ||
59 | { TP, PCI_INTA_SLOT, PCI_INTB_SLOT, | ||
60 | PCI_INTC_PCI1520, PCI_INTD_RTL8139, | ||
61 | SM501, CF_IDE, CF_CD, SDCARD, AX88796, | ||
62 | RTC_A, RTC_T, 0, 0, 0, EXT } }, | ||
63 | }; | ||
64 | |||
65 | /* IRLn to IRQ table for R2D-1 */ | ||
66 | static unsigned char irl2irq_r2d_1[R2D_NR_IRL] __initdata = { | ||
67 | IRQ_PCI_INTD, IRQ_CF_IDE, IRQ_CF_CD, IRQ_PCI_INTC, | ||
68 | IRQ_VOYAGER, IRQ_AX88796, IRQ_RTC_A, IRQ_RTC_T, | ||
69 | IRQ_SDCARD, IRQ_PCI_INTA, IRQ_PCI_INTB, IRQ_EXT, | ||
70 | IRQ_TP, | ||
71 | }; | ||
72 | |||
73 | static DECLARE_INTC_DESC(intc_desc_r2d_1, "r2d-1", vectors_r2d_1, | ||
74 | NULL, NULL, mask_registers_r2d_1, NULL, NULL); | ||
75 | |||
76 | #endif /* CONFIG_RTS7751R2D_1 */ | ||
77 | |||
78 | #ifdef CONFIG_RTS7751R2D_PLUS | ||
79 | |||
80 | /* Vectors for R2D-PLUS */ | ||
81 | static struct intc_vect vectors_r2d_plus[] __initdata = { | ||
82 | INTC_IRQ(EXT, IRQ_EXT), | ||
83 | INTC_IRQ(RTC_T, IRQ_RTC_T), INTC_IRQ(RTC_A, IRQ_RTC_A), | ||
84 | INTC_IRQ(KEY, IRQ_KEY), INTC_IRQ(SDCARD, IRQ_SDCARD), | ||
85 | INTC_IRQ(CF_CD, IRQ_CF_CD), INTC_IRQ(CF_IDE, IRQ_CF_IDE), | ||
86 | INTC_IRQ(SM501, IRQ_VOYAGER), | ||
87 | INTC_IRQ(PCI_INTD_RTL8139, IRQ_PCI_INTD), | ||
88 | INTC_IRQ(PCI_INTC_PCI1520, IRQ_PCI_INTC), | ||
89 | INTC_IRQ(PCI_INTB_RTL8139, IRQ_PCI_INTB), | ||
90 | INTC_IRQ(PCI_INTA_SLOT, IRQ_PCI_INTA), | ||
91 | INTC_IRQ(TP, IRQ_TP), | ||
92 | }; | ||
93 | |||
94 | /* IRLMSK mask register layout for R2D-PLUS */ | ||
95 | static struct intc_mask_reg mask_registers_r2d_plus[] __initdata = { | ||
96 | { 0xa4000000, 0, 16, /* IRLMSK */ | ||
97 | { TP, PCI_INTA_SLOT, PCI_INTB_RTL8139, | ||
98 | PCI_INTC_PCI1520, PCI_INTD_RTL8139, | ||
99 | SM501, CF_IDE, CF_CD, SDCARD, KEY, | ||
100 | RTC_A, RTC_T, 0, 0, 0, EXT } }, | ||
101 | }; | ||
102 | |||
103 | /* IRLn to IRQ table for R2D-PLUS */ | ||
104 | static unsigned char irl2irq_r2d_plus[R2D_NR_IRL] __initdata = { | ||
105 | IRQ_PCI_INTD, IRQ_CF_IDE, IRQ_CF_CD, IRQ_PCI_INTC, | ||
106 | IRQ_VOYAGER, IRQ_KEY, IRQ_RTC_A, IRQ_RTC_T, | ||
107 | IRQ_SDCARD, IRQ_PCI_INTA, IRQ_PCI_INTB, IRQ_EXT, | ||
108 | IRQ_TP, | ||
109 | }; | ||
110 | |||
111 | static DECLARE_INTC_DESC(intc_desc_r2d_plus, "r2d-plus", vectors_r2d_plus, | ||
112 | NULL, NULL, mask_registers_r2d_plus, NULL, NULL); | ||
113 | |||
114 | #endif /* CONFIG_RTS7751R2D_PLUS */ | ||
115 | |||
116 | static unsigned char irl2irq[R2D_NR_IRL]; | ||
39 | 117 | ||
40 | int rts7751r2d_irq_demux(int irq) | 118 | int rts7751r2d_irq_demux(int irq) |
41 | { | 119 | { |
42 | return voyagergx_irq_demux(irq); | 120 | if (irq >= R2D_NR_IRL || !irl2irq[irq]) |
43 | } | 121 | return irq; |
44 | 122 | ||
45 | static struct irq_chip rts7751r2d_irq_chip __read_mostly = { | 123 | return irl2irq[irq]; |
46 | .name = "rts7751r2d", | 124 | } |
47 | .mask = disable_rts7751r2d_irq, | ||
48 | .unmask = enable_rts7751r2d_irq, | ||
49 | .mask_ack = disable_rts7751r2d_irq, | ||
50 | }; | ||
51 | 125 | ||
52 | /* | 126 | /* |
53 | * Initialize IRQ setting | 127 | * Initialize IRQ setting |
54 | */ | 128 | */ |
55 | void __init init_rts7751r2d_IRQ(void) | 129 | void __init init_rts7751r2d_IRQ(void) |
56 | { | 130 | { |
57 | int i; | 131 | struct intc_desc *d; |
58 | 132 | ||
59 | /* IRL0=KEY Input | 133 | switch (ctrl_inw(PA_VERREG) & 0xf0) { |
60 | * IRL1=Ethernet | 134 | #ifdef CONFIG_RTS7751R2D_PLUS |
61 | * IRL2=CF Card | 135 | case 0x10: |
62 | * IRL3=CF Card Insert | 136 | printk(KERN_INFO "Using R2D-PLUS interrupt controller.\n"); |
63 | * IRL4=PCMCIA | 137 | d = &intc_desc_r2d_plus; |
64 | * IRL5=VOYAGER | 138 | memcpy(irl2irq, irl2irq_r2d_plus, R2D_NR_IRL); |
65 | * IRL6=RTC Alarm | 139 | break; |
66 | * IRL7=RTC Timer | 140 | #endif |
67 | * IRL8=SD Card | 141 | #ifdef CONFIG_RTS7751R2D_1 |
68 | * IRL9=PCI Slot #1 | 142 | case 0x00: /* according to manual */ |
69 | * IRL10=PCI Slot #2 | 143 | case 0x30: /* in reality */ |
70 | * IRL11=Extention #0 | 144 | printk(KERN_INFO "Using R2D-1 interrupt controller.\n"); |
71 | * IRL12=Extention #1 | 145 | d = &intc_desc_r2d_1; |
72 | * IRL13=Extention #2 | 146 | memcpy(irl2irq, irl2irq_r2d_1, R2D_NR_IRL); |
73 | * IRL14=Extention #3 | 147 | break; |
74 | */ | 148 | #endif |
75 | 149 | default: | |
76 | for (i=0; i<15; i++) { | 150 | printk(KERN_INFO "Unknown R2D interrupt controller 0x%04x\n", |
77 | disable_irq_nosync(i); | 151 | ctrl_inw(PA_VERREG)); |
78 | set_irq_chip_and_handler_name(i, &rts7751r2d_irq_chip, | 152 | return; |
79 | handle_level_irq, "level"); | ||
80 | enable_rts7751r2d_irq(i); | ||
81 | } | 153 | } |
82 | 154 | ||
155 | register_intc_controller(d); | ||
156 | #ifdef CONFIG_MFD_SM501 | ||
83 | setup_voyagergx_irq(); | 157 | setup_voyagergx_irq(); |
158 | #endif | ||
84 | } | 159 | } |
diff --git a/arch/sh/boards/renesas/rts7751r2d/setup.c b/arch/sh/boards/renesas/rts7751r2d/setup.c index 6f7029d33241..37f2c0b447fe 100644 --- a/arch/sh/boards/renesas/rts7751r2d/setup.c +++ b/arch/sh/boards/renesas/rts7751r2d/setup.c | |||
@@ -45,20 +45,16 @@ static void __init voyagergx_serial_init(void) | |||
45 | static struct resource cf_ide_resources[] = { | 45 | static struct resource cf_ide_resources[] = { |
46 | [0] = { | 46 | [0] = { |
47 | .start = PA_AREA5_IO + 0x1000, | 47 | .start = PA_AREA5_IO + 0x1000, |
48 | .end = PA_AREA5_IO + 0x1000 + 0x08 - 1, | 48 | .end = PA_AREA5_IO + 0x1000 + 0x10 - 0x2, |
49 | .flags = IORESOURCE_MEM, | 49 | .flags = IORESOURCE_MEM, |
50 | }, | 50 | }, |
51 | [1] = { | 51 | [1] = { |
52 | .start = PA_AREA5_IO + 0x80c, | 52 | .start = PA_AREA5_IO + 0x80c, |
53 | .end = PA_AREA5_IO + 0x80c + 0x16 - 1, | 53 | .end = PA_AREA5_IO + 0x80c, |
54 | .flags = IORESOURCE_MEM, | 54 | .flags = IORESOURCE_MEM, |
55 | }, | 55 | }, |
56 | [2] = { | 56 | [2] = { |
57 | #ifdef CONFIG_RTS7751R2D_REV11 | 57 | .start = IRQ_CF_IDE, |
58 | .start = 1, | ||
59 | #else | ||
60 | .start = 2, | ||
61 | #endif | ||
62 | .flags = IORESOURCE_IRQ, | 58 | .flags = IORESOURCE_IRQ, |
63 | }, | 59 | }, |
64 | }; | 60 | }; |
@@ -77,12 +73,28 @@ static struct platform_device cf_ide_device = { | |||
77 | }, | 73 | }, |
78 | }; | 74 | }; |
79 | 75 | ||
76 | static struct resource heartbeat_resources[] = { | ||
77 | [0] = { | ||
78 | .start = PA_OUTPORT, | ||
79 | .end = PA_OUTPORT, | ||
80 | .flags = IORESOURCE_MEM, | ||
81 | }, | ||
82 | }; | ||
83 | |||
84 | static struct platform_device heartbeat_device = { | ||
85 | .name = "heartbeat", | ||
86 | .id = -1, | ||
87 | .num_resources = ARRAY_SIZE(heartbeat_resources), | ||
88 | .resource = heartbeat_resources, | ||
89 | }; | ||
90 | |||
91 | #ifdef CONFIG_MFD_SM501 | ||
80 | static struct plat_serial8250_port uart_platform_data[] = { | 92 | static struct plat_serial8250_port uart_platform_data[] = { |
81 | { | 93 | { |
82 | .membase = (void __iomem *)VOYAGER_UART_BASE, | 94 | .membase = (void __iomem *)VOYAGER_UART_BASE, |
83 | .mapbase = VOYAGER_UART_BASE, | 95 | .mapbase = VOYAGER_UART_BASE, |
84 | .iotype = UPIO_MEM, | 96 | .iotype = UPIO_MEM, |
85 | .irq = VOYAGER_UART0_IRQ, | 97 | .irq = IRQ_SM501_U0, |
86 | .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, | 98 | .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, |
87 | .regshift = 2, | 99 | .regshift = 2, |
88 | .uartclk = (9600 * 16), | 100 | .uartclk = (9600 * 16), |
@@ -98,21 +110,6 @@ static struct platform_device uart_device = { | |||
98 | }, | 110 | }, |
99 | }; | 111 | }; |
100 | 112 | ||
101 | static struct resource heartbeat_resources[] = { | ||
102 | [0] = { | ||
103 | .start = PA_OUTPORT, | ||
104 | .end = PA_OUTPORT + 8 - 1, | ||
105 | .flags = IORESOURCE_MEM, | ||
106 | }, | ||
107 | }; | ||
108 | |||
109 | static struct platform_device heartbeat_device = { | ||
110 | .name = "heartbeat", | ||
111 | .id = -1, | ||
112 | .num_resources = ARRAY_SIZE(heartbeat_resources), | ||
113 | .resource = heartbeat_resources, | ||
114 | }; | ||
115 | |||
116 | static struct resource sm501_resources[] = { | 113 | static struct resource sm501_resources[] = { |
117 | [0] = { | 114 | [0] = { |
118 | .start = 0x10000000, | 115 | .start = 0x10000000, |
@@ -125,7 +122,7 @@ static struct resource sm501_resources[] = { | |||
125 | .flags = IORESOURCE_MEM, | 122 | .flags = IORESOURCE_MEM, |
126 | }, | 123 | }, |
127 | [2] = { | 124 | [2] = { |
128 | .start = 32, | 125 | .start = IRQ_SM501_CV, |
129 | .flags = IORESOURCE_IRQ, | 126 | .flags = IORESOURCE_IRQ, |
130 | }, | 127 | }, |
131 | }; | 128 | }; |
@@ -137,22 +134,19 @@ static struct platform_device sm501_device = { | |||
137 | .resource = sm501_resources, | 134 | .resource = sm501_resources, |
138 | }; | 135 | }; |
139 | 136 | ||
137 | #endif /* CONFIG_MFD_SM501 */ | ||
138 | |||
140 | static struct platform_device *rts7751r2d_devices[] __initdata = { | 139 | static struct platform_device *rts7751r2d_devices[] __initdata = { |
140 | #ifdef CONFIG_MFD_SM501 | ||
141 | &uart_device, | 141 | &uart_device, |
142 | &heartbeat_device, | ||
143 | &sm501_device, | 142 | &sm501_device, |
143 | #endif | ||
144 | &cf_ide_device, | ||
145 | &heartbeat_device, | ||
144 | }; | 146 | }; |
145 | 147 | ||
146 | static int __init rts7751r2d_devices_setup(void) | 148 | static int __init rts7751r2d_devices_setup(void) |
147 | { | 149 | { |
148 | int ret; | ||
149 | |||
150 | if (ctrl_inw(PA_BVERREG) == 0x10) { /* only working on R2D-PLUS */ | ||
151 | ret = platform_device_register(&cf_ide_device); | ||
152 | if (ret) | ||
153 | return ret; | ||
154 | } | ||
155 | |||
156 | return platform_add_devices(rts7751r2d_devices, | 150 | return platform_add_devices(rts7751r2d_devices, |
157 | ARRAY_SIZE(rts7751r2d_devices)); | 151 | ARRAY_SIZE(rts7751r2d_devices)); |
158 | } | 152 | } |
@@ -163,6 +157,34 @@ static void rts7751r2d_power_off(void) | |||
163 | ctrl_outw(0x0001, PA_POWOFF); | 157 | ctrl_outw(0x0001, PA_POWOFF); |
164 | } | 158 | } |
165 | 159 | ||
160 | static inline unsigned char is_ide_ioaddr(unsigned long addr) | ||
161 | { | ||
162 | return ((cf_ide_resources[0].start <= addr && | ||
163 | addr <= cf_ide_resources[0].end) || | ||
164 | (cf_ide_resources[1].start <= addr && | ||
165 | addr <= cf_ide_resources[1].end)); | ||
166 | } | ||
167 | |||
168 | void rts7751r2d_writeb(u8 b, void __iomem *addr) | ||
169 | { | ||
170 | unsigned long tmp = (unsigned long __force)addr; | ||
171 | |||
172 | if (is_ide_ioaddr(tmp)) | ||
173 | ctrl_outw((u16)b, tmp); | ||
174 | else | ||
175 | ctrl_outb(b, tmp); | ||
176 | } | ||
177 | |||
178 | u8 rts7751r2d_readb(void __iomem *addr) | ||
179 | { | ||
180 | unsigned long tmp = (unsigned long __force)addr; | ||
181 | |||
182 | if (is_ide_ioaddr(tmp)) | ||
183 | return ctrl_inw(tmp) & 0xff; | ||
184 | else | ||
185 | return ctrl_inb(tmp); | ||
186 | } | ||
187 | |||
166 | /* | 188 | /* |
167 | * Initialize the board | 189 | * Initialize the board |
168 | */ | 190 | */ |
@@ -187,12 +209,11 @@ static void __init rts7751r2d_setup(char **cmdline_p) | |||
187 | static struct sh_machine_vector mv_rts7751r2d __initmv = { | 209 | static struct sh_machine_vector mv_rts7751r2d __initmv = { |
188 | .mv_name = "RTS7751R2D", | 210 | .mv_name = "RTS7751R2D", |
189 | .mv_setup = rts7751r2d_setup, | 211 | .mv_setup = rts7751r2d_setup, |
190 | .mv_nr_irqs = 72, | ||
191 | |||
192 | .mv_init_irq = init_rts7751r2d_IRQ, | 212 | .mv_init_irq = init_rts7751r2d_IRQ, |
193 | .mv_irq_demux = rts7751r2d_irq_demux, | 213 | .mv_irq_demux = rts7751r2d_irq_demux, |
194 | 214 | .mv_writeb = rts7751r2d_writeb, | |
195 | #ifdef CONFIG_USB_SM501 | 215 | .mv_readb = rts7751r2d_readb, |
216 | #if defined(CONFIG_MFD_SM501) && defined(CONFIG_USB_OHCI_HCD) | ||
196 | .mv_consistent_alloc = voyagergx_consistent_alloc, | 217 | .mv_consistent_alloc = voyagergx_consistent_alloc, |
197 | .mv_consistent_free = voyagergx_consistent_free, | 218 | .mv_consistent_free = voyagergx_consistent_free, |
198 | #endif | 219 | #endif |
diff --git a/arch/sh/boards/renesas/x3proto/Makefile b/arch/sh/boards/renesas/x3proto/Makefile new file mode 100644 index 000000000000..983e4551fecf --- /dev/null +++ b/arch/sh/boards/renesas/x3proto/Makefile | |||
@@ -0,0 +1 @@ | |||
obj-y += setup.o ilsel.o | |||
diff --git a/arch/sh/boards/renesas/x3proto/ilsel.c b/arch/sh/boards/renesas/x3proto/ilsel.c new file mode 100644 index 000000000000..6d4454fef97c --- /dev/null +++ b/arch/sh/boards/renesas/x3proto/ilsel.c | |||
@@ -0,0 +1,151 @@ | |||
1 | /* | ||
2 | * arch/sh/boards/renesas/x3proto/ilsel.c | ||
3 | * | ||
4 | * Helper routines for SH-X3 proto board ILSEL. | ||
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 <linux/module.h> | ||
15 | #include <linux/bitmap.h> | ||
16 | #include <linux/io.h> | ||
17 | #include <asm/ilsel.h> | ||
18 | |||
19 | /* | ||
20 | * ILSEL is split across: | ||
21 | * | ||
22 | * ILSEL0 - 0xb8100004 [ Levels 1 - 4 ] | ||
23 | * ILSEL1 - 0xb8100006 [ Levels 5 - 8 ] | ||
24 | * ILSEL2 - 0xb8100008 [ Levels 9 - 12 ] | ||
25 | * ILSEL3 - 0xb810000a [ Levels 13 - 15 ] | ||
26 | * | ||
27 | * With each level being relative to an ilsel_source_t. | ||
28 | */ | ||
29 | #define ILSEL_BASE 0xb8100004 | ||
30 | #define ILSEL_LEVELS 15 | ||
31 | |||
32 | /* | ||
33 | * ILSEL level map, in descending order from the highest level down. | ||
34 | * | ||
35 | * Supported levels are 1 - 15 spread across ILSEL0 - ILSEL4, mapping | ||
36 | * directly to IRLs. As the IRQs are numbered in reverse order relative | ||
37 | * to the interrupt level, the level map is carefully managed to ensure a | ||
38 | * 1:1 mapping between the bit position and the IRQ number. | ||
39 | * | ||
40 | * This careful constructions allows ilsel_enable*() to be referenced | ||
41 | * directly for hooking up an ILSEL set and getting back an IRQ which can | ||
42 | * subsequently be used for internal accounting in the (optional) disable | ||
43 | * path. | ||
44 | */ | ||
45 | static unsigned long ilsel_level_map; | ||
46 | |||
47 | static inline unsigned int ilsel_offset(unsigned int bit) | ||
48 | { | ||
49 | return ILSEL_LEVELS - bit - 1; | ||
50 | } | ||
51 | |||
52 | static inline unsigned long mk_ilsel_addr(unsigned int bit) | ||
53 | { | ||
54 | return ILSEL_BASE + ((ilsel_offset(bit) >> 1) & ~0x1); | ||
55 | } | ||
56 | |||
57 | static inline unsigned int mk_ilsel_shift(unsigned int bit) | ||
58 | { | ||
59 | return (ilsel_offset(bit) & 0x3) << 2; | ||
60 | } | ||
61 | |||
62 | static void __ilsel_enable(ilsel_source_t set, unsigned int bit) | ||
63 | { | ||
64 | unsigned int tmp, shift; | ||
65 | unsigned long addr; | ||
66 | |||
67 | addr = mk_ilsel_addr(bit); | ||
68 | shift = mk_ilsel_shift(bit); | ||
69 | |||
70 | pr_debug("%s: bit#%d: addr - 0x%08lx (shift %d, set %d)\n", | ||
71 | __FUNCTION__, bit, addr, shift, set); | ||
72 | |||
73 | tmp = ctrl_inw(addr); | ||
74 | tmp &= ~(0xf << shift); | ||
75 | tmp |= set << shift; | ||
76 | ctrl_outw(tmp, addr); | ||
77 | } | ||
78 | |||
79 | /** | ||
80 | * ilsel_enable - Enable an ILSEL set. | ||
81 | * @set: ILSEL source (see ilsel_source_t enum in include/asm-sh/ilsel.h). | ||
82 | * | ||
83 | * Enables a given non-aliased ILSEL source (<= ILSEL_KEY) at the highest | ||
84 | * available interrupt level. Callers should take care to order callsites | ||
85 | * noting descending interrupt levels. Aliasing FPGA and external board | ||
86 | * IRQs need to use ilsel_enable_fixed(). | ||
87 | * | ||
88 | * The return value is an IRQ number that can later be taken down with | ||
89 | * ilsel_disable(). | ||
90 | */ | ||
91 | int ilsel_enable(ilsel_source_t set) | ||
92 | { | ||
93 | unsigned int bit; | ||
94 | |||
95 | /* Aliased sources must use ilsel_enable_fixed() */ | ||
96 | BUG_ON(set > ILSEL_KEY); | ||
97 | |||
98 | do { | ||
99 | bit = find_first_zero_bit(&ilsel_level_map, ILSEL_LEVELS); | ||
100 | } while (test_and_set_bit(bit, &ilsel_level_map)); | ||
101 | |||
102 | __ilsel_enable(set, bit); | ||
103 | |||
104 | return bit; | ||
105 | } | ||
106 | EXPORT_SYMBOL_GPL(ilsel_enable); | ||
107 | |||
108 | /** | ||
109 | * ilsel_enable_fixed - Enable an ILSEL set at a fixed interrupt level | ||
110 | * @set: ILSEL source (see ilsel_source_t enum in include/asm-sh/ilsel.h). | ||
111 | * @level: Interrupt level (1 - 15) | ||
112 | * | ||
113 | * Enables a given ILSEL source at a fixed interrupt level. Necessary | ||
114 | * both for level reservation as well as for aliased sources that only | ||
115 | * exist on special ILSEL#s. | ||
116 | * | ||
117 | * Returns an IRQ number (as ilsel_enable()). | ||
118 | */ | ||
119 | int ilsel_enable_fixed(ilsel_source_t set, unsigned int level) | ||
120 | { | ||
121 | unsigned int bit = ilsel_offset(level - 1); | ||
122 | |||
123 | if (test_and_set_bit(bit, &ilsel_level_map)) | ||
124 | return -EBUSY; | ||
125 | |||
126 | __ilsel_enable(set, bit); | ||
127 | |||
128 | return bit; | ||
129 | } | ||
130 | EXPORT_SYMBOL_GPL(ilsel_enable_fixed); | ||
131 | |||
132 | /** | ||
133 | * ilsel_disable - Disable an ILSEL set | ||
134 | * @irq: Bit position for ILSEL set value (retval from enable routines) | ||
135 | * | ||
136 | * Disable a previously enabled ILSEL set. | ||
137 | */ | ||
138 | void ilsel_disable(unsigned int irq) | ||
139 | { | ||
140 | unsigned long addr; | ||
141 | unsigned int tmp; | ||
142 | |||
143 | addr = mk_ilsel_addr(irq); | ||
144 | |||
145 | tmp = ctrl_inw(addr); | ||
146 | tmp &= ~(0xf << mk_ilsel_shift(irq)); | ||
147 | ctrl_outw(tmp, addr); | ||
148 | |||
149 | clear_bit(irq, &ilsel_level_map); | ||
150 | } | ||
151 | EXPORT_SYMBOL_GPL(ilsel_disable); | ||
diff --git a/arch/sh/boards/renesas/x3proto/setup.c b/arch/sh/boards/renesas/x3proto/setup.c new file mode 100644 index 000000000000..abc5b6d418fe --- /dev/null +++ b/arch/sh/boards/renesas/x3proto/setup.c | |||
@@ -0,0 +1,136 @@ | |||
1 | /* | ||
2 | * arch/sh/boards/renesas/x3proto/setup.c | ||
3 | * | ||
4 | * Renesas SH-X3 Prototype Board Support. | ||
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/platform_device.h> | ||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/io.h> | ||
16 | #include <asm/ilsel.h> | ||
17 | |||
18 | static struct resource heartbeat_resources[] = { | ||
19 | [0] = { | ||
20 | .start = 0xb8140020, | ||
21 | .end = 0xb8140020, | ||
22 | .flags = IORESOURCE_MEM, | ||
23 | }, | ||
24 | }; | ||
25 | |||
26 | static struct platform_device heartbeat_device = { | ||
27 | .name = "heartbeat", | ||
28 | .id = -1, | ||
29 | .num_resources = ARRAY_SIZE(heartbeat_resources), | ||
30 | .resource = heartbeat_resources, | ||
31 | }; | ||
32 | |||
33 | static struct resource smc91x_resources[] = { | ||
34 | [0] = { | ||
35 | .start = 0x18000300, | ||
36 | .end = 0x18000300 + 0x10 - 1, | ||
37 | .flags = IORESOURCE_MEM, | ||
38 | }, | ||
39 | [1] = { | ||
40 | /* Filled in by ilsel */ | ||
41 | .flags = IORESOURCE_IRQ, | ||
42 | }, | ||
43 | }; | ||
44 | |||
45 | static struct platform_device smc91x_device = { | ||
46 | .name = "smc91x", | ||
47 | .id = -1, | ||
48 | .resource = smc91x_resources, | ||
49 | .num_resources = ARRAY_SIZE(smc91x_resources), | ||
50 | }; | ||
51 | |||
52 | static struct resource r8a66597_usb_host_resources[] = { | ||
53 | [0] = { | ||
54 | .name = "r8a66597_hcd", | ||
55 | .start = 0x18040000, | ||
56 | .end = 0x18080000 - 1, | ||
57 | .flags = IORESOURCE_MEM, | ||
58 | }, | ||
59 | [1] = { | ||
60 | .name = "r8a66597_hcd", | ||
61 | /* Filled in by ilsel */ | ||
62 | .flags = IORESOURCE_IRQ, | ||
63 | }, | ||
64 | }; | ||
65 | |||
66 | static struct platform_device r8a66597_usb_host_device = { | ||
67 | .name = "r8a66597_hcd", | ||
68 | .id = -1, | ||
69 | .dev = { | ||
70 | .dma_mask = NULL, /* don't use dma */ | ||
71 | .coherent_dma_mask = 0xffffffff, | ||
72 | }, | ||
73 | .num_resources = ARRAY_SIZE(r8a66597_usb_host_resources), | ||
74 | .resource = r8a66597_usb_host_resources, | ||
75 | }; | ||
76 | |||
77 | static struct resource m66592_usb_peripheral_resources[] = { | ||
78 | [0] = { | ||
79 | .name = "m66592_udc", | ||
80 | .start = 0x18080000, | ||
81 | .end = 0x180c0000 - 1, | ||
82 | .flags = IORESOURCE_MEM, | ||
83 | }, | ||
84 | [1] = { | ||
85 | .name = "m66592_udc", | ||
86 | /* Filled in by ilsel */ | ||
87 | .flags = IORESOURCE_IRQ, | ||
88 | }, | ||
89 | }; | ||
90 | |||
91 | static struct platform_device m66592_usb_peripheral_device = { | ||
92 | .name = "m66592_udc", | ||
93 | .id = -1, | ||
94 | .dev = { | ||
95 | .dma_mask = NULL, /* don't use dma */ | ||
96 | .coherent_dma_mask = 0xffffffff, | ||
97 | }, | ||
98 | .num_resources = ARRAY_SIZE(m66592_usb_peripheral_resources), | ||
99 | .resource = m66592_usb_peripheral_resources, | ||
100 | }; | ||
101 | |||
102 | static struct platform_device *x3proto_devices[] __initdata = { | ||
103 | &heartbeat_device, | ||
104 | &smc91x_device, | ||
105 | &r8a66597_usb_host_device, | ||
106 | &m66592_usb_peripheral_device, | ||
107 | }; | ||
108 | |||
109 | static int __init x3proto_devices_setup(void) | ||
110 | { | ||
111 | r8a66597_usb_host_resources[1].start = | ||
112 | r8a66597_usb_host_resources[1].end = ilsel_enable(ILSEL_USBH_I); | ||
113 | |||
114 | m66592_usb_peripheral_resources[1].start = | ||
115 | m66592_usb_peripheral_resources[1].end = ilsel_enable(ILSEL_USBP_I); | ||
116 | |||
117 | smc91x_resources[1].start = | ||
118 | smc91x_resources[1].end = ilsel_enable(ILSEL_LAN); | ||
119 | |||
120 | return platform_add_devices(x3proto_devices, | ||
121 | ARRAY_SIZE(x3proto_devices)); | ||
122 | } | ||
123 | device_initcall(x3proto_devices_setup); | ||
124 | |||
125 | static void __init x3proto_init_irq(void) | ||
126 | { | ||
127 | plat_irq_setup_pins(IRQ_MODE_IRL3210); | ||
128 | |||
129 | /* Set ICR0.LVLMODE */ | ||
130 | ctrl_outl(ctrl_inl(0xfe410000) | (1 << 21), 0xfe410000); | ||
131 | } | ||
132 | |||
133 | static struct sh_machine_vector mv_x3proto __initmv = { | ||
134 | .mv_name = "x3proto", | ||
135 | .mv_init_irq = x3proto_init_irq, | ||
136 | }; | ||
diff --git a/arch/sh/boards/se/7206/io.c b/arch/sh/boards/se/7206/io.c index b557273e0cbe..1308e618e044 100644 --- a/arch/sh/boards/se/7206/io.c +++ b/arch/sh/boards/se/7206/io.c | |||
@@ -26,22 +26,24 @@ static inline void delay(void) | |||
26 | static inline volatile __u16 * | 26 | static inline volatile __u16 * |
27 | port2adr(unsigned int port) | 27 | port2adr(unsigned int port) |
28 | { | 28 | { |
29 | if (port >= 0x2000) | 29 | if (port >= 0x2000 && port < 0x2020) |
30 | return (volatile __u16 *) (PA_MRSHPC + (port - 0x2000)); | 30 | return (volatile __u16 *) (PA_MRSHPC + (port - 0x2000)); |
31 | else if (port >= 0x300 || port < 0x310) | 31 | else if (port >= 0x300 && port < 0x310) |
32 | return (volatile __u16 *) (PA_SMSC + (port - 0x300)); | 32 | return (volatile __u16 *) (PA_SMSC + (port - 0x300)); |
33 | |||
34 | return (volatile __u16 *)port; | ||
33 | } | 35 | } |
34 | 36 | ||
35 | unsigned char se7206_inb(unsigned long port) | 37 | unsigned char se7206_inb(unsigned long port) |
36 | { | 38 | { |
37 | return (*port2adr(port))&0xff; | 39 | return (*port2adr(port)) & 0xff; |
38 | } | 40 | } |
39 | 41 | ||
40 | unsigned char se7206_inb_p(unsigned long port) | 42 | unsigned char se7206_inb_p(unsigned long port) |
41 | { | 43 | { |
42 | unsigned long v; | 44 | unsigned long v; |
43 | 45 | ||
44 | v = (*port2adr(port))&0xff; | 46 | v = (*port2adr(port)) & 0xff; |
45 | delay(); | 47 | delay(); |
46 | return v; | 48 | return v; |
47 | } | 49 | } |
@@ -51,12 +53,6 @@ unsigned short se7206_inw(unsigned long port) | |||
51 | return *port2adr(port);; | 53 | return *port2adr(port);; |
52 | } | 54 | } |
53 | 55 | ||
54 | unsigned int se7206_inl(unsigned long port) | ||
55 | { | ||
56 | maybebadio(port); | ||
57 | return 0; | ||
58 | } | ||
59 | |||
60 | void se7206_outb(unsigned char value, unsigned long port) | 56 | void se7206_outb(unsigned char value, unsigned long port) |
61 | { | 57 | { |
62 | *(port2adr(port)) = value; | 58 | *(port2adr(port)) = value; |
@@ -73,11 +69,6 @@ void se7206_outw(unsigned short value, unsigned long port) | |||
73 | *port2adr(port) = value; | 69 | *port2adr(port) = value; |
74 | } | 70 | } |
75 | 71 | ||
76 | void se7206_outl(unsigned int value, unsigned long port) | ||
77 | { | ||
78 | maybebadio(port); | ||
79 | } | ||
80 | |||
81 | void se7206_insb(unsigned long port, void *addr, unsigned long count) | 72 | void se7206_insb(unsigned long port, void *addr, unsigned long count) |
82 | { | 73 | { |
83 | volatile __u16 *p = port2adr(port); | 74 | volatile __u16 *p = port2adr(port); |
@@ -95,11 +86,6 @@ void se7206_insw(unsigned long port, void *addr, unsigned long count) | |||
95 | *ap++ = *p; | 86 | *ap++ = *p; |
96 | } | 87 | } |
97 | 88 | ||
98 | void se7206_insl(unsigned long port, void *addr, unsigned long count) | ||
99 | { | ||
100 | maybebadio(port); | ||
101 | } | ||
102 | |||
103 | void se7206_outsb(unsigned long port, const void *addr, unsigned long count) | 89 | void se7206_outsb(unsigned long port, const void *addr, unsigned long count) |
104 | { | 90 | { |
105 | volatile __u16 *p = port2adr(port); | 91 | volatile __u16 *p = port2adr(port); |
@@ -116,8 +102,3 @@ void se7206_outsw(unsigned long port, const void *addr, unsigned long count) | |||
116 | while (count--) | 102 | while (count--) |
117 | *p = *ap++; | 103 | *p = *ap++; |
118 | } | 104 | } |
119 | |||
120 | void se7206_outsl(unsigned long port, const void *addr, unsigned long count) | ||
121 | { | ||
122 | maybebadio(port); | ||
123 | } | ||
diff --git a/arch/sh/boards/se/7206/setup.c b/arch/sh/boards/se/7206/setup.c index a074b62505ef..5b3ee089d91d 100644 --- a/arch/sh/boards/se/7206/setup.c +++ b/arch/sh/boards/se/7206/setup.c | |||
@@ -6,14 +6,13 @@ | |||
6 | * Copyright (C) 2007 Paul Mundt | 6 | * Copyright (C) 2007 Paul Mundt |
7 | * | 7 | * |
8 | * Hitachi 7206 SolutionEngine Support. | 8 | * Hitachi 7206 SolutionEngine Support. |
9 | * | ||
10 | */ | 9 | */ |
11 | |||
12 | #include <linux/init.h> | 10 | #include <linux/init.h> |
13 | #include <linux/platform_device.h> | 11 | #include <linux/platform_device.h> |
14 | #include <asm/se7206.h> | 12 | #include <asm/se7206.h> |
15 | #include <asm/io.h> | 13 | #include <asm/io.h> |
16 | #include <asm/machvec.h> | 14 | #include <asm/machvec.h> |
15 | #include <asm/heartbeat.h> | ||
17 | 16 | ||
18 | static struct resource smc91x_resources[] = { | 17 | static struct resource smc91x_resources[] = { |
19 | [0] = { | 18 | [0] = { |
@@ -37,10 +36,16 @@ static struct platform_device smc91x_device = { | |||
37 | 36 | ||
38 | static unsigned char heartbeat_bit_pos[] = { 8, 9, 10, 11, 12, 13, 14, 15 }; | 37 | static unsigned char heartbeat_bit_pos[] = { 8, 9, 10, 11, 12, 13, 14, 15 }; |
39 | 38 | ||
39 | static struct heartbeat_data heartbeat_data = { | ||
40 | .bit_pos = heartbeat_bit_pos, | ||
41 | .nr_bits = ARRAY_SIZE(heartbeat_bit_pos), | ||
42 | .regsize = 32, | ||
43 | }; | ||
44 | |||
40 | static struct resource heartbeat_resources[] = { | 45 | static struct resource heartbeat_resources[] = { |
41 | [0] = { | 46 | [0] = { |
42 | .start = PA_LED, | 47 | .start = PA_LED, |
43 | .end = PA_LED + ARRAY_SIZE(heartbeat_bit_pos) - 1, | 48 | .end = PA_LED, |
44 | .flags = IORESOURCE_MEM, | 49 | .flags = IORESOURCE_MEM, |
45 | }, | 50 | }, |
46 | }; | 51 | }; |
@@ -49,7 +54,7 @@ static struct platform_device heartbeat_device = { | |||
49 | .name = "heartbeat", | 54 | .name = "heartbeat", |
50 | .id = -1, | 55 | .id = -1, |
51 | .dev = { | 56 | .dev = { |
52 | .platform_data = heartbeat_bit_pos, | 57 | .platform_data = &heartbeat_data, |
53 | }, | 58 | }, |
54 | .num_resources = ARRAY_SIZE(heartbeat_resources), | 59 | .num_resources = ARRAY_SIZE(heartbeat_resources), |
55 | .resource = heartbeat_resources, | 60 | .resource = heartbeat_resources, |
@@ -75,24 +80,18 @@ static struct sh_machine_vector mv_se __initmv = { | |||
75 | .mv_nr_irqs = 256, | 80 | .mv_nr_irqs = 256, |
76 | .mv_inb = se7206_inb, | 81 | .mv_inb = se7206_inb, |
77 | .mv_inw = se7206_inw, | 82 | .mv_inw = se7206_inw, |
78 | .mv_inl = se7206_inl, | ||
79 | .mv_outb = se7206_outb, | 83 | .mv_outb = se7206_outb, |
80 | .mv_outw = se7206_outw, | 84 | .mv_outw = se7206_outw, |
81 | .mv_outl = se7206_outl, | ||
82 | 85 | ||
83 | .mv_inb_p = se7206_inb_p, | 86 | .mv_inb_p = se7206_inb_p, |
84 | .mv_inw_p = se7206_inw, | 87 | .mv_inw_p = se7206_inw, |
85 | .mv_inl_p = se7206_inl, | ||
86 | .mv_outb_p = se7206_outb_p, | 88 | .mv_outb_p = se7206_outb_p, |
87 | .mv_outw_p = se7206_outw, | 89 | .mv_outw_p = se7206_outw, |
88 | .mv_outl_p = se7206_outl, | ||
89 | 90 | ||
90 | .mv_insb = se7206_insb, | 91 | .mv_insb = se7206_insb, |
91 | .mv_insw = se7206_insw, | 92 | .mv_insw = se7206_insw, |
92 | .mv_insl = se7206_insl, | ||
93 | .mv_outsb = se7206_outsb, | 93 | .mv_outsb = se7206_outsb, |
94 | .mv_outsw = se7206_outsw, | 94 | .mv_outsw = se7206_outsw, |
95 | .mv_outsl = se7206_outsl, | ||
96 | 95 | ||
97 | .mv_init_irq = init_se7206_IRQ, | 96 | .mv_init_irq = init_se7206_IRQ, |
98 | }; | 97 | }; |
diff --git a/arch/sh/boards/se/7343/irq.c b/arch/sh/boards/se/7343/irq.c index 360153ecc55b..763f6deba814 100644 --- a/arch/sh/boards/se/7343/irq.c +++ b/arch/sh/boards/se/7343/irq.c | |||
@@ -99,8 +99,11 @@ shmse_irq_demux(int irq) | |||
99 | * | 99 | * |
100 | * We configure IRQ5 as a cascade IRQ. | 100 | * We configure IRQ5 as a cascade IRQ. |
101 | */ | 101 | */ |
102 | static struct irqaction irq5 = { no_action, 0, CPU_MASK_NONE, "IRQ5-cascade", | 102 | static struct irqaction irq5 = { |
103 | NULL, NULL}; | 103 | .handler = no_action, |
104 | .mask = CPU_MASK_NONE, | ||
105 | .name = "IRQ5-cascade", | ||
106 | }; | ||
104 | 107 | ||
105 | static struct ipr_data se7343_irq5_ipr_map[] = { | 108 | static struct ipr_data se7343_irq5_ipr_map[] = { |
106 | { IRQ5_IRQ, IRQ5_IPR_ADDR+2, IRQ5_IPR_POS, IRQ5_PRIORITY }, | 109 | { IRQ5_IRQ, IRQ5_IPR_ADDR+2, IRQ5_IPR_POS, IRQ5_PRIORITY }, |
diff --git a/arch/sh/boards/se/7343/setup.c b/arch/sh/boards/se/7343/setup.c index 8fec155e2ff7..c9431b3a051b 100644 --- a/arch/sh/boards/se/7343/setup.c +++ b/arch/sh/boards/se/7343/setup.c | |||
@@ -33,7 +33,7 @@ static struct platform_device smc91x_device = { | |||
33 | static struct resource heartbeat_resources[] = { | 33 | static struct resource heartbeat_resources[] = { |
34 | [0] = { | 34 | [0] = { |
35 | .start = PA_LED, | 35 | .start = PA_LED, |
36 | .end = PA_LED + 8 - 1, | 36 | .end = PA_LED, |
37 | .flags = IORESOURCE_MEM, | 37 | .flags = IORESOURCE_MEM, |
38 | }, | 38 | }, |
39 | }; | 39 | }; |
diff --git a/arch/sh/boards/se/770x/setup.c b/arch/sh/boards/se/770x/setup.c index 2962da148f3f..d07a3368f546 100644 --- a/arch/sh/boards/se/770x/setup.c +++ b/arch/sh/boards/se/770x/setup.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <asm/se.h> | 12 | #include <asm/se.h> |
13 | #include <asm/io.h> | 13 | #include <asm/io.h> |
14 | #include <asm/smc37c93x.h> | 14 | #include <asm/smc37c93x.h> |
15 | #include <asm/heartbeat.h> | ||
15 | 16 | ||
16 | void init_se_IRQ(void); | 17 | void init_se_IRQ(void); |
17 | 18 | ||
@@ -90,10 +91,15 @@ static struct platform_device cf_ide_device = { | |||
90 | 91 | ||
91 | static unsigned char heartbeat_bit_pos[] = { 8, 9, 10, 11, 12, 13, 14, 15 }; | 92 | static unsigned char heartbeat_bit_pos[] = { 8, 9, 10, 11, 12, 13, 14, 15 }; |
92 | 93 | ||
94 | static struct heartbeat_data heartbeat_data = { | ||
95 | .bit_pos = heartbeat_bit_pos, | ||
96 | .nr_bits = ARRAY_SIZE(heartbeat_bit_pos), | ||
97 | }; | ||
98 | |||
93 | static struct resource heartbeat_resources[] = { | 99 | static struct resource heartbeat_resources[] = { |
94 | [0] = { | 100 | [0] = { |
95 | .start = PA_LED, | 101 | .start = PA_LED, |
96 | .end = PA_LED + ARRAY_SIZE(heartbeat_bit_pos) - 1, | 102 | .end = PA_LED, |
97 | .flags = IORESOURCE_MEM, | 103 | .flags = IORESOURCE_MEM, |
98 | }, | 104 | }, |
99 | }; | 105 | }; |
@@ -102,7 +108,7 @@ static struct platform_device heartbeat_device = { | |||
102 | .name = "heartbeat", | 108 | .name = "heartbeat", |
103 | .id = -1, | 109 | .id = -1, |
104 | .dev = { | 110 | .dev = { |
105 | .platform_data = heartbeat_bit_pos, | 111 | .platform_data = &heartbeat_data, |
106 | }, | 112 | }, |
107 | .num_resources = ARRAY_SIZE(heartbeat_resources), | 113 | .num_resources = ARRAY_SIZE(heartbeat_resources), |
108 | .resource = heartbeat_resources, | 114 | .resource = heartbeat_resources, |
diff --git a/arch/sh/boards/se/7722/setup.c b/arch/sh/boards/se/7722/setup.c index 495fc7e2b60f..03b63457e178 100644 --- a/arch/sh/boards/se/7722/setup.c +++ b/arch/sh/boards/se/7722/setup.c | |||
@@ -18,12 +18,10 @@ | |||
18 | #include <asm/io.h> | 18 | #include <asm/io.h> |
19 | 19 | ||
20 | /* Heartbeat */ | 20 | /* Heartbeat */ |
21 | static unsigned char heartbeat_bit_pos[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; | ||
22 | |||
23 | static struct resource heartbeat_resources[] = { | 21 | static struct resource heartbeat_resources[] = { |
24 | [0] = { | 22 | [0] = { |
25 | .start = PA_LED, | 23 | .start = PA_LED, |
26 | .end = PA_LED + ARRAY_SIZE(heartbeat_bit_pos) - 1, | 24 | .end = PA_LED, |
27 | .flags = IORESOURCE_MEM, | 25 | .flags = IORESOURCE_MEM, |
28 | }, | 26 | }, |
29 | }; | 27 | }; |
@@ -31,9 +29,6 @@ static struct resource heartbeat_resources[] = { | |||
31 | static struct platform_device heartbeat_device = { | 29 | static struct platform_device heartbeat_device = { |
32 | .name = "heartbeat", | 30 | .name = "heartbeat", |
33 | .id = -1, | 31 | .id = -1, |
34 | .dev = { | ||
35 | .platform_data = heartbeat_bit_pos, | ||
36 | }, | ||
37 | .num_resources = ARRAY_SIZE(heartbeat_resources), | 32 | .num_resources = ARRAY_SIZE(heartbeat_resources), |
38 | .resource = heartbeat_resources, | 33 | .resource = heartbeat_resources, |
39 | }; | 34 | }; |
@@ -109,7 +104,7 @@ static void __init se7722_setup(char **cmdline_p) | |||
109 | ctrl_outl(0x00051001, MSTPCR0); | 104 | ctrl_outl(0x00051001, MSTPCR0); |
110 | ctrl_outl(0x00000000, MSTPCR1); | 105 | ctrl_outl(0x00000000, MSTPCR1); |
111 | /* KEYSC, VOU, BEU, CEU, VEU, VPU, LCDC */ | 106 | /* KEYSC, VOU, BEU, CEU, VEU, VPU, LCDC */ |
112 | ctrl_outl(0xffffbfC0, MSTPCR2); | 107 | ctrl_outl(0xffffbfC0, MSTPCR2); |
113 | 108 | ||
114 | ctrl_outw(0x0000, PORT_PECR); /* PORT E 1 = IRQ5 ,E 0 = BS */ | 109 | ctrl_outw(0x0000, PORT_PECR); /* PORT E 1 = IRQ5 ,E 0 = BS */ |
115 | ctrl_outw(0x1000, PORT_PJCR); /* PORT J 1 = IRQ1,J 0 =IRQ0 */ | 110 | ctrl_outw(0x1000, PORT_PJCR); /* PORT J 1 = IRQ1,J 0 =IRQ0 */ |
diff --git a/arch/sh/boards/se/7751/setup.c b/arch/sh/boards/se/7751/setup.c index 7873d07e40c1..deefbfd92591 100644 --- a/arch/sh/boards/se/7751/setup.c +++ b/arch/sh/boards/se/7751/setup.c | |||
@@ -13,13 +13,19 @@ | |||
13 | #include <asm/machvec.h> | 13 | #include <asm/machvec.h> |
14 | #include <asm/se7751.h> | 14 | #include <asm/se7751.h> |
15 | #include <asm/io.h> | 15 | #include <asm/io.h> |
16 | #include <asm/heartbeat.h> | ||
16 | 17 | ||
17 | static unsigned char heartbeat_bit_pos[] = { 8, 9, 10, 11, 12, 13, 14, 15 }; | 18 | static unsigned char heartbeat_bit_pos[] = { 8, 9, 10, 11, 12, 13, 14, 15 }; |
18 | 19 | ||
20 | static struct heartbeat_data heartbeat_data = { | ||
21 | .bit_pos = heartbeat_bit_pos, | ||
22 | .nr_bits = ARRAY_SIZE(heartbeat_bit_pos), | ||
23 | }; | ||
24 | |||
19 | static struct resource heartbeat_resources[] = { | 25 | static struct resource heartbeat_resources[] = { |
20 | [0] = { | 26 | [0] = { |
21 | .start = PA_LED, | 27 | .start = PA_LED, |
22 | .end = PA_LED + ARRAY_SIZE(heartbeat_bit_pos) - 1, | 28 | .end = PA_LED, |
23 | .flags = IORESOURCE_MEM, | 29 | .flags = IORESOURCE_MEM, |
24 | }, | 30 | }, |
25 | }; | 31 | }; |
@@ -28,14 +34,13 @@ static struct platform_device heartbeat_device = { | |||
28 | .name = "heartbeat", | 34 | .name = "heartbeat", |
29 | .id = -1, | 35 | .id = -1, |
30 | .dev = { | 36 | .dev = { |
31 | .platform_data = heartbeat_bit_pos, | 37 | .platform_data = &heartbeat_data, |
32 | }, | 38 | }, |
33 | .num_resources = ARRAY_SIZE(heartbeat_resources), | 39 | .num_resources = ARRAY_SIZE(heartbeat_resources), |
34 | .resource = heartbeat_resources, | 40 | .resource = heartbeat_resources, |
35 | }; | 41 | }; |
36 | 42 | ||
37 | static struct platform_device *se7751_devices[] __initdata = { | 43 | static struct platform_device *se7751_devices[] __initdata = { |
38 | &smc91x_device, | ||
39 | &heartbeat_device, | 44 | &heartbeat_device, |
40 | }; | 45 | }; |
41 | 46 | ||
diff --git a/arch/sh/boards/se/7780/irq.c b/arch/sh/boards/se/7780/irq.c index 874914746009..6bd70da6bb47 100644 --- a/arch/sh/boards/se/7780/irq.c +++ b/arch/sh/boards/se/7780/irq.c | |||
@@ -16,32 +16,6 @@ | |||
16 | #include <asm/io.h> | 16 | #include <asm/io.h> |
17 | #include <asm/se7780.h> | 17 | #include <asm/se7780.h> |
18 | 18 | ||
19 | static struct intc2_data intc2_irq_table[] = { | ||
20 | { 2, 0, 31, 0, 31, 3 }, /* daughter board EXTINT1 */ | ||
21 | { 4, 0, 30, 0, 30, 3 }, /* daughter board EXTINT2 */ | ||
22 | { 6, 0, 29, 0, 29, 3 }, /* daughter board EXTINT3 */ | ||
23 | { 8, 0, 28, 0, 28, 3 }, /* SMC 91C111 (LAN) */ | ||
24 | { 10, 0, 27, 0, 27, 3 }, /* daughter board EXTINT4 */ | ||
25 | { 4, 0, 30, 0, 30, 3 }, /* daughter board EXTINT5 */ | ||
26 | { 2, 0, 31, 0, 31, 3 }, /* daughter board EXTINT6 */ | ||
27 | { 2, 0, 31, 0, 31, 3 }, /* daughter board EXTINT7 */ | ||
28 | { 2, 0, 31, 0, 31, 3 }, /* daughter board EXTINT8 */ | ||
29 | { 0 , 0, 24, 0, 24, 3 }, /* SM501 */ | ||
30 | }; | ||
31 | |||
32 | static struct intc2_desc intc2_irq_desc __read_mostly = { | ||
33 | .prio_base = 0, /* N/A */ | ||
34 | .msk_base = 0xffd00044, | ||
35 | .mskclr_base = 0xffd00064, | ||
36 | |||
37 | .intc2_data = intc2_irq_table, | ||
38 | .nr_irqs = ARRAY_SIZE(intc2_irq_table), | ||
39 | |||
40 | .chip = { | ||
41 | .name = "INTC2-se7780", | ||
42 | }, | ||
43 | }; | ||
44 | |||
45 | /* | 19 | /* |
46 | * Initialize IRQ setting | 20 | * Initialize IRQ setting |
47 | */ | 21 | */ |
@@ -68,5 +42,5 @@ void __init init_se7780_IRQ(void) | |||
68 | /* FPGA + 0x0A */ | 42 | /* FPGA + 0x0A */ |
69 | ctrl_outw((IRQPIN_PCCPW << IRQPOS_PCCPW), FPGA_INTSEL3); | 43 | ctrl_outw((IRQPIN_PCCPW << IRQPOS_PCCPW), FPGA_INTSEL3); |
70 | 44 | ||
71 | register_intc2_controller(&intc2_irq_desc); | 45 | plat_irq_setup_pins(IRQ_MODE_IRQ); /* install handlers for IRQ0-7 */ |
72 | } | 46 | } |
diff --git a/arch/sh/boards/se/7780/setup.c b/arch/sh/boards/se/7780/setup.c index 723f2fd4d55b..76e53b26a808 100644 --- a/arch/sh/boards/se/7780/setup.c +++ b/arch/sh/boards/se/7780/setup.c | |||
@@ -16,12 +16,10 @@ | |||
16 | #include <asm/io.h> | 16 | #include <asm/io.h> |
17 | 17 | ||
18 | /* Heartbeat */ | 18 | /* Heartbeat */ |
19 | static unsigned char heartbeat_bit_pos[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; | ||
20 | |||
21 | static struct resource heartbeat_resources[] = { | 19 | static struct resource heartbeat_resources[] = { |
22 | [0] = { | 20 | [0] = { |
23 | .start = PA_LED, | 21 | .start = PA_LED, |
24 | .end = PA_LED + ARRAY_SIZE(heartbeat_bit_pos) - 1, | 22 | .end = PA_LED, |
25 | .flags = IORESOURCE_MEM, | 23 | .flags = IORESOURCE_MEM, |
26 | }, | 24 | }, |
27 | }; | 25 | }; |
@@ -29,9 +27,6 @@ static struct resource heartbeat_resources[] = { | |||
29 | static struct platform_device heartbeat_device = { | 27 | static struct platform_device heartbeat_device = { |
30 | .name = "heartbeat", | 28 | .name = "heartbeat", |
31 | .id = -1, | 29 | .id = -1, |
32 | .dev = { | ||
33 | .platform_data = heartbeat_bit_pos, | ||
34 | }, | ||
35 | .num_resources = ARRAY_SIZE(heartbeat_resources), | 30 | .num_resources = ARRAY_SIZE(heartbeat_resources), |
36 | .resource = heartbeat_resources, | 31 | .resource = heartbeat_resources, |
37 | }; | 32 | }; |
diff --git a/arch/sh/boards/sh03/setup.c b/arch/sh/boards/sh03/setup.c index 9c031a8c0a1c..934ac4f1c48f 100644 --- a/arch/sh/boards/sh03/setup.c +++ b/arch/sh/boards/sh03/setup.c | |||
@@ -15,33 +15,9 @@ | |||
15 | #include <asm/sh03/sh03.h> | 15 | #include <asm/sh03/sh03.h> |
16 | #include <asm/addrspace.h> | 16 | #include <asm/addrspace.h> |
17 | 17 | ||
18 | static struct ipr_data ipr_irq_table[] = { | ||
19 | { IRL0_IRQ, 0, IRL0_IPR_POS, IRL0_PRIORITY }, | ||
20 | { IRL1_IRQ, 0, IRL1_IPR_POS, IRL1_PRIORITY }, | ||
21 | { IRL2_IRQ, 0, IRL2_IPR_POS, IRL2_PRIORITY }, | ||
22 | { IRL3_IRQ, 0, IRL3_IPR_POS, IRL3_PRIORITY }, | ||
23 | }; | ||
24 | |||
25 | static unsigned long ipr_offsets[] = { | ||
26 | INTC_IPRD, | ||
27 | }; | ||
28 | |||
29 | static struct ipr_desc ipr_irq_desc = { | ||
30 | .ipr_offsets = ipr_offsets, | ||
31 | .nr_offsets = ARRAY_SIZE(ipr_offsets), | ||
32 | |||
33 | .ipr_data = ipr_irq_table, | ||
34 | .nr_irqs = ARRAY_SIZE(ipr_irq_table), | ||
35 | |||
36 | .chip = { | ||
37 | .name = "IPR-sh03", | ||
38 | }, | ||
39 | }; | ||
40 | |||
41 | static void __init init_sh03_IRQ(void) | 18 | static void __init init_sh03_IRQ(void) |
42 | { | 19 | { |
43 | ctrl_outw(ctrl_inw(INTC_ICR) | INTC_ICR_IRLM, INTC_ICR); | 20 | plat_irq_setup_pins(IRQ_MODE_IRQ); |
44 | register_ipr_controller(&ipr_irq_desc); | ||
45 | } | 21 | } |
46 | 22 | ||
47 | extern void *cf_io_base; | 23 | extern void *cf_io_base; |
@@ -68,7 +44,7 @@ static void __init sh03_setup(char **cmdline_p) | |||
68 | static struct resource heartbeat_resources[] = { | 44 | static struct resource heartbeat_resources[] = { |
69 | [0] = { | 45 | [0] = { |
70 | .start = 0xa0800000, | 46 | .start = 0xa0800000, |
71 | .end = 0xa0800000 + 8 - 1, | 47 | .end = 0xa0800000, |
72 | .flags = IORESOURCE_MEM, | 48 | .flags = IORESOURCE_MEM, |
73 | }, | 49 | }, |
74 | }; | 50 | }; |
diff --git a/arch/sh/boards/shmin/setup.c b/arch/sh/boards/shmin/setup.c index dfd124509f42..16e5dae8ecfb 100644 --- a/arch/sh/boards/shmin/setup.c +++ b/arch/sh/boards/shmin/setup.c | |||
@@ -14,36 +14,12 @@ | |||
14 | 14 | ||
15 | #define PFC_PHCR 0xa400010eUL | 15 | #define PFC_PHCR 0xa400010eUL |
16 | #define INTC_ICR1 0xa4000010UL | 16 | #define INTC_ICR1 0xa4000010UL |
17 | #define INTC_IPRC 0xa4000016UL | ||
18 | |||
19 | static struct ipr_data ipr_irq_table[] = { | ||
20 | { 32, 0, 0, 0 }, | ||
21 | { 33, 0, 4, 0 }, | ||
22 | { 34, 0, 8, 8 }, | ||
23 | { 35, 0, 12, 0 }, | ||
24 | }; | ||
25 | |||
26 | static unsigned long ipr_offsets[] = { | ||
27 | INTC_IPRC, | ||
28 | }; | ||
29 | |||
30 | static struct ipr_desc ipr_irq_desc = { | ||
31 | .ipr_offsets = ipr_offsets, | ||
32 | .nr_offsets = ARRAY_SIZE(ipr_offsets), | ||
33 | |||
34 | .ipr_data = ipr_irq_table, | ||
35 | .nr_irqs = ARRAY_SIZE(ipr_irq_table), | ||
36 | |||
37 | .chip = { | ||
38 | .name = "IPR-shmin", | ||
39 | }, | ||
40 | }; | ||
41 | 17 | ||
42 | static void __init init_shmin_irq(void) | 18 | static void __init init_shmin_irq(void) |
43 | { | 19 | { |
44 | ctrl_outw(0x2a00, PFC_PHCR); // IRQ0-3=IRQ | 20 | ctrl_outw(0x2a00, PFC_PHCR); // IRQ0-3=IRQ |
45 | ctrl_outw(0x0aaa, INTC_ICR1); // IRQ0-3=IRQ-mode,Low-active. | 21 | ctrl_outw(0x0aaa, INTC_ICR1); // IRQ0-3=IRQ-mode,Low-active. |
46 | register_ipr_controller(&ipr_irq_desc); | 22 | plat_irq_setup_pins(IRQ_MODE_IRQ); |
47 | } | 23 | } |
48 | 24 | ||
49 | static void __iomem *shmin_ioport_map(unsigned long port, unsigned int size) | 25 | static void __iomem *shmin_ioport_map(unsigned long port, unsigned int size) |
diff --git a/arch/sh/boards/snapgear/setup.c b/arch/sh/boards/snapgear/setup.c index 84271d85a8dd..2b594f600002 100644 --- a/arch/sh/boards/snapgear/setup.c +++ b/arch/sh/boards/snapgear/setup.c | |||
@@ -68,37 +68,11 @@ module_init(eraseconfig_init); | |||
68 | * IRL3 = crypto | 68 | * IRL3 = crypto |
69 | */ | 69 | */ |
70 | 70 | ||
71 | static struct ipr_data ipr_irq_table[] = { | ||
72 | { IRL0_IRQ, 0, IRL0_IPR_POS, IRL0_PRIORITY }, | ||
73 | { IRL1_IRQ, 0, IRL1_IPR_POS, IRL1_PRIORITY }, | ||
74 | { IRL2_IRQ, 0, IRL2_IPR_POS, IRL2_PRIORITY }, | ||
75 | { IRL3_IRQ, 0, IRL3_IPR_POS, IRL3_PRIORITY }, | ||
76 | }; | ||
77 | |||
78 | static unsigned long ipr_offsets[] = { | ||
79 | INTC_IPRD, | ||
80 | }; | ||
81 | |||
82 | static struct ipr_desc ipr_irq_desc = { | ||
83 | .ipr_offsets = ipr_offsets, | ||
84 | .nr_offsets = ARRAY_SIZE(ipr_offsets), | ||
85 | |||
86 | .ipr_data = ipr_irq_table, | ||
87 | .nr_irqs = ARRAY_SIZE(ipr_irq_table), | ||
88 | |||
89 | .chip = { | ||
90 | .name = "IPR-snapgear", | ||
91 | }, | ||
92 | }; | ||
93 | |||
94 | static void __init init_snapgear_IRQ(void) | 71 | static void __init init_snapgear_IRQ(void) |
95 | { | 72 | { |
96 | /* enable individual interrupt mode for externals */ | ||
97 | ctrl_outw(ctrl_inw(INTC_ICR) | INTC_ICR_IRLM, INTC_ICR); | ||
98 | |||
99 | printk("Setup SnapGear IRQ/IPR ...\n"); | 73 | printk("Setup SnapGear IRQ/IPR ...\n"); |
100 | 74 | /* enable individual interrupt mode for externals */ | |
101 | register_ipr_controller(&ipr_irq_desc); | 75 | plat_irq_setup_pins(IRQ_MODE_IRQ); |
102 | } | 76 | } |
103 | 77 | ||
104 | /* | 78 | /* |
diff --git a/arch/sh/boards/titan/setup.c b/arch/sh/boards/titan/setup.c index 606d25a4b870..5de3b2ad71af 100644 --- a/arch/sh/boards/titan/setup.c +++ b/arch/sh/boards/titan/setup.c | |||
@@ -12,38 +12,10 @@ | |||
12 | #include <asm/titan.h> | 12 | #include <asm/titan.h> |
13 | #include <asm/io.h> | 13 | #include <asm/io.h> |
14 | 14 | ||
15 | static struct ipr_data ipr_irq_table[] = { | ||
16 | /* IRQ, IPR idx, shift, prio */ | ||
17 | { TITAN_IRQ_WAN, 3, 12, 8 }, /* eth0 (WAN) */ | ||
18 | { TITAN_IRQ_LAN, 3, 8, 8 }, /* eth1 (LAN) */ | ||
19 | { TITAN_IRQ_MPCIA, 3, 4, 8 }, /* mPCI A (top) */ | ||
20 | { TITAN_IRQ_USB, 3, 0, 8 }, /* mPCI B (bottom), USB */ | ||
21 | }; | ||
22 | |||
23 | static unsigned long ipr_offsets[] = { /* stolen from setup-sh7750.c */ | ||
24 | 0xffd00004UL, /* 0: IPRA */ | ||
25 | 0xffd00008UL, /* 1: IPRB */ | ||
26 | 0xffd0000cUL, /* 2: IPRC */ | ||
27 | 0xffd00010UL, /* 3: IPRD */ | ||
28 | }; | ||
29 | |||
30 | static struct ipr_desc ipr_irq_desc = { | ||
31 | .ipr_offsets = ipr_offsets, | ||
32 | .nr_offsets = ARRAY_SIZE(ipr_offsets), | ||
33 | |||
34 | .ipr_data = ipr_irq_table, | ||
35 | .nr_irqs = ARRAY_SIZE(ipr_irq_table), | ||
36 | |||
37 | .chip = { | ||
38 | .name = "IPR-titan", | ||
39 | }, | ||
40 | }; | ||
41 | static void __init init_titan_irq(void) | 15 | static void __init init_titan_irq(void) |
42 | { | 16 | { |
43 | /* enable individual interrupt mode for externals */ | 17 | /* enable individual interrupt mode for externals */ |
44 | ipr_irq_enable_irlm(); | 18 | plat_irq_setup_pins(IRQ_MODE_IRQ); |
45 | /* register ipr irqs */ | ||
46 | register_ipr_controller(&ipr_irq_desc); | ||
47 | } | 19 | } |
48 | 20 | ||
49 | static struct sh_machine_vector mv_titan __initmv = { | 21 | static struct sh_machine_vector mv_titan __initmv = { |
diff --git a/arch/sh/cchips/Kconfig b/arch/sh/cchips/Kconfig index 2e516e9a6ede..7892361eedc8 100644 --- a/arch/sh/cchips/Kconfig +++ b/arch/sh/cchips/Kconfig | |||
@@ -1,18 +1,5 @@ | |||
1 | menu "Companion Chips" | 1 | menu "Companion Chips" |
2 | 2 | ||
3 | config VOYAGERGX | ||
4 | bool "VoyagerGX chip support" | ||
5 | depends on SH_RTS7751R2D | ||
6 | help | ||
7 | Selecting this option will support Silicon Motion, Inc. SM501. | ||
8 | Designed to complement needs for the embedded industry, it | ||
9 | provides video and 2D capability. To reduce system cost a | ||
10 | wide variety of include I/O is supported, including analog RGB | ||
11 | and digital LCD Panel interface, 8-bit parallel interface, USB, | ||
12 | UART, IrDA, Zoom Video, AC97 or I2S, SSP, PWM, and I2C. There | ||
13 | are additional GPIO bits that can be used to interface to | ||
14 | external as well. | ||
15 | |||
16 | config HD6446X_SERIES | 3 | config HD6446X_SERIES |
17 | bool | 4 | bool |
18 | 5 | ||
diff --git a/arch/sh/cchips/hd6446x/hd64461.c b/arch/sh/cchips/hd6446x/hd64461.c index 97f6512aa1b7..f1a4a0763c59 100644 --- a/arch/sh/cchips/hd6446x/hd64461.c +++ b/arch/sh/cchips/hd6446x/hd64461.c | |||
@@ -14,6 +14,9 @@ | |||
14 | #include <asm/irq.h> | 14 | #include <asm/irq.h> |
15 | #include <asm/hd64461.h> | 15 | #include <asm/hd64461.h> |
16 | 16 | ||
17 | /* This belongs in cpu specific */ | ||
18 | #define INTC_ICR1 0xA4140010UL | ||
19 | |||
17 | static void disable_hd64461_irq(unsigned int irq) | 20 | static void disable_hd64461_irq(unsigned int irq) |
18 | { | 21 | { |
19 | unsigned short nimr; | 22 | unsigned short nimr; |
@@ -121,10 +124,15 @@ int hd64461_irq_demux(int irq) | |||
121 | } | 124 | } |
122 | } | 125 | } |
123 | } | 126 | } |
124 | return __irq_demux(irq); | 127 | return irq; |
125 | } | 128 | } |
126 | 129 | ||
127 | static struct irqaction irq0 = { hd64461_interrupt, IRQF_DISABLED, CPU_MASK_NONE, "HD64461", NULL, NULL }; | 130 | static struct irqaction irq0 = { |
131 | .handler = hd64461_interrupt, | ||
132 | .flags = IRQF_DISABLED, | ||
133 | .mask = CPU_MASK_NONE, | ||
134 | .name = "HD64461", | ||
135 | }; | ||
128 | 136 | ||
129 | int __init setup_hd64461(void) | 137 | int __init setup_hd64461(void) |
130 | { | 138 | { |
@@ -143,6 +151,7 @@ int __init setup_hd64461(void) | |||
143 | #endif | 151 | #endif |
144 | outw(0xffff, HD64461_NIMR); | 152 | outw(0xffff, HD64461_NIMR); |
145 | 153 | ||
154 | /* IRQ 80 -> 95 belongs to HD64461 */ | ||
146 | for (i = HD64461_IRQBASE; i < HD64461_IRQBASE + 16; i++) { | 155 | for (i = HD64461_IRQBASE; i < HD64461_IRQBASE + 16; i++) { |
147 | irq_desc[i].chip = &hd64461_irq_type; | 156 | irq_desc[i].chip = &hd64461_irq_type; |
148 | } | 157 | } |
diff --git a/arch/sh/cchips/hd6446x/hd64465/setup.c b/arch/sh/cchips/hd6446x/hd64465/setup.c index d126e1f30dee..5cef0db4018b 100644 --- a/arch/sh/cchips/hd6446x/hd64465/setup.c +++ b/arch/sh/cchips/hd6446x/hd64465/setup.c | |||
@@ -147,7 +147,12 @@ int hd64465_irq_demux(int irq) | |||
147 | return irq; | 147 | return irq; |
148 | } | 148 | } |
149 | 149 | ||
150 | static struct irqaction irq0 = { hd64465_interrupt, IRQF_DISABLED, CPU_MASK_NONE, "HD64465", NULL, NULL}; | 150 | static struct irqaction irq0 = { |
151 | .handler = hd64465_interrupt, | ||
152 | .flags = IRQF_DISABLED, | ||
153 | .mask = CPU_MASK_NONE, | ||
154 | .name = "HD64465", | ||
155 | }; | ||
151 | 156 | ||
152 | 157 | ||
153 | static int __init setup_hd64465(void) | 158 | static int __init setup_hd64465(void) |
diff --git a/arch/sh/cchips/voyagergx/irq.c b/arch/sh/cchips/voyagergx/irq.c index d70e5c8461b5..ade303876841 100644 --- a/arch/sh/cchips/voyagergx/irq.c +++ b/arch/sh/cchips/voyagergx/irq.c | |||
@@ -23,149 +23,79 @@ | |||
23 | #include <asm/voyagergx.h> | 23 | #include <asm/voyagergx.h> |
24 | #include <asm/rts7751r2d.h> | 24 | #include <asm/rts7751r2d.h> |
25 | 25 | ||
26 | static void disable_voyagergx_irq(unsigned int irq) | 26 | enum { |
27 | { | 27 | UNUSED = 0, |
28 | unsigned long val; | 28 | |
29 | unsigned long mask = 1 << (irq - VOYAGER_IRQ_BASE); | 29 | /* voyager specific interrupt sources */ |
30 | 30 | UP, G54, G53, G52, G51, G50, G49, G48, | |
31 | pr_debug("disable_voyagergx_irq(%d): mask=%lx\n", irq, mask); | 31 | I2C, PW, DMA, PCI, I2S, AC, US, |
32 | val = readl((void __iomem *)VOYAGER_INT_MASK); | 32 | U1, U0, CV, MC, S1, S0, |
33 | val &= ~mask; | 33 | UH, TWOD, ZD, PV, CI, |
34 | writel(val, (void __iomem *)VOYAGER_INT_MASK); | ||
35 | } | ||
36 | |||
37 | static void enable_voyagergx_irq(unsigned int irq) | ||
38 | { | ||
39 | unsigned long val; | ||
40 | unsigned long mask = 1 << (irq - VOYAGER_IRQ_BASE); | ||
41 | |||
42 | pr_debug("disable_voyagergx_irq(%d): mask=%lx\n", irq, mask); | ||
43 | val = readl((void __iomem *)VOYAGER_INT_MASK); | ||
44 | val |= mask; | ||
45 | writel(val, (void __iomem *)VOYAGER_INT_MASK); | ||
46 | } | ||
47 | |||
48 | static void mask_and_ack_voyagergx(unsigned int irq) | ||
49 | { | ||
50 | disable_voyagergx_irq(irq); | ||
51 | } | ||
52 | |||
53 | static void end_voyagergx_irq(unsigned int irq) | ||
54 | { | ||
55 | if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
56 | enable_voyagergx_irq(irq); | ||
57 | } | ||
58 | |||
59 | static unsigned int startup_voyagergx_irq(unsigned int irq) | ||
60 | { | ||
61 | enable_voyagergx_irq(irq); | ||
62 | return 0; | ||
63 | } | ||
64 | |||
65 | static void shutdown_voyagergx_irq(unsigned int irq) | ||
66 | { | ||
67 | disable_voyagergx_irq(irq); | ||
68 | } | ||
69 | |||
70 | static struct hw_interrupt_type voyagergx_irq_type = { | ||
71 | .typename = "VOYAGERGX-IRQ", | ||
72 | .startup = startup_voyagergx_irq, | ||
73 | .shutdown = shutdown_voyagergx_irq, | ||
74 | .enable = enable_voyagergx_irq, | ||
75 | .disable = disable_voyagergx_irq, | ||
76 | .ack = mask_and_ack_voyagergx, | ||
77 | .end = end_voyagergx_irq, | ||
78 | }; | 34 | }; |
79 | 35 | ||
80 | static irqreturn_t voyagergx_interrupt(int irq, void *dev_id) | 36 | static struct intc_vect vectors[] __initdata = { |
81 | { | 37 | INTC_IRQ(UP, IRQ_SM501_UP), INTC_IRQ(G54, IRQ_SM501_G54), |
82 | printk(KERN_INFO | 38 | INTC_IRQ(G53, IRQ_SM501_G53), INTC_IRQ(G52, IRQ_SM501_G52), |
83 | "VoyagerGX: spurious interrupt, status: 0x%x\n", | 39 | INTC_IRQ(G51, IRQ_SM501_G51), INTC_IRQ(G50, IRQ_SM501_G50), |
84 | (unsigned int)readl((void __iomem *)INT_STATUS)); | 40 | INTC_IRQ(G49, IRQ_SM501_G49), INTC_IRQ(G48, IRQ_SM501_G48), |
85 | return IRQ_HANDLED; | 41 | INTC_IRQ(I2C, IRQ_SM501_I2C), INTC_IRQ(PW, IRQ_SM501_PW), |
86 | } | 42 | INTC_IRQ(DMA, IRQ_SM501_DMA), INTC_IRQ(PCI, IRQ_SM501_PCI), |
87 | 43 | INTC_IRQ(I2S, IRQ_SM501_I2S), INTC_IRQ(AC, IRQ_SM501_AC), | |
88 | static struct { | 44 | INTC_IRQ(US, IRQ_SM501_US), INTC_IRQ(U1, IRQ_SM501_U1), |
89 | int (*func)(int, void *); | 45 | INTC_IRQ(U0, IRQ_SM501_U0), INTC_IRQ(CV, IRQ_SM501_CV), |
90 | void *dev; | 46 | INTC_IRQ(MC, IRQ_SM501_MC), INTC_IRQ(S1, IRQ_SM501_S1), |
91 | } voyagergx_demux[VOYAGER_IRQ_NUM]; | 47 | INTC_IRQ(S0, IRQ_SM501_S0), INTC_IRQ(UH, IRQ_SM501_UH), |
48 | INTC_IRQ(TWOD, IRQ_SM501_2D), INTC_IRQ(ZD, IRQ_SM501_ZD), | ||
49 | INTC_IRQ(PV, IRQ_SM501_PV), INTC_IRQ(CI, IRQ_SM501_CI), | ||
50 | }; | ||
92 | 51 | ||
93 | void voyagergx_register_irq_demux(int irq, | 52 | static struct intc_mask_reg mask_registers[] __initdata = { |
94 | int (*demux)(int irq, void *dev), void *dev) | 53 | { VOYAGER_INT_MASK, 0, 32, /* "Interrupt Mask", MMIO_base + 0x30 */ |
95 | { | 54 | { UP, G54, G53, G52, G51, G50, G49, G48, |
96 | voyagergx_demux[irq - VOYAGER_IRQ_BASE].func = demux; | 55 | I2C, PW, 0, DMA, PCI, I2S, AC, US, |
97 | voyagergx_demux[irq - VOYAGER_IRQ_BASE].dev = dev; | 56 | 0, 0, U1, U0, CV, MC, S1, S0, |
98 | } | 57 | 0, UH, 0, 0, TWOD, ZD, PV, CI } }, |
58 | }; | ||
99 | 59 | ||
100 | void voyagergx_unregister_irq_demux(int irq) | 60 | static DECLARE_INTC_DESC(intc_desc, "voyagergx", vectors, |
101 | { | 61 | NULL, NULL, mask_registers, NULL, NULL); |
102 | voyagergx_demux[irq - VOYAGER_IRQ_BASE].func = 0; | 62 | |
103 | } | 63 | static unsigned int voyagergx_stat2irq[32] = { |
64 | IRQ_SM501_CI, IRQ_SM501_PV, IRQ_SM501_ZD, IRQ_SM501_2D, | ||
65 | 0, 0, IRQ_SM501_UH, 0, | ||
66 | IRQ_SM501_S0, IRQ_SM501_S1, IRQ_SM501_MC, IRQ_SM501_CV, | ||
67 | IRQ_SM501_U0, IRQ_SM501_U1, 0, 0, | ||
68 | IRQ_SM501_US, IRQ_SM501_AC, IRQ_SM501_I2S, IRQ_SM501_PCI, | ||
69 | IRQ_SM501_DMA, 0, IRQ_SM501_PW, IRQ_SM501_I2C, | ||
70 | IRQ_SM501_G48, IRQ_SM501_G49, IRQ_SM501_G50, IRQ_SM501_G51, | ||
71 | IRQ_SM501_G52, IRQ_SM501_G53, IRQ_SM501_G54, IRQ_SM501_UP | ||
72 | }; | ||
104 | 73 | ||
105 | int voyagergx_irq_demux(int irq) | 74 | static void voyagergx_irq_demux(unsigned int irq, struct irq_desc *desc) |
106 | { | 75 | { |
107 | 76 | unsigned long intv = ctrl_inl(INT_STATUS); | |
108 | if (irq == IRQ_VOYAGER ) { | 77 | struct irq_desc *ext_desc; |
109 | unsigned long i = 0, bit __attribute__ ((unused)); | 78 | unsigned int ext_irq; |
110 | unsigned long val = readl((void __iomem *)INT_STATUS); | 79 | unsigned int k = 0; |
111 | 80 | ||
112 | if (val & (1 << 1)) | 81 | while (intv) { |
113 | i = 1; | 82 | ext_irq = voyagergx_stat2irq[k]; |
114 | else if (val & (1 << 2)) | 83 | if (ext_irq && (intv & 1)) { |
115 | i = 2; | 84 | ext_desc = irq_desc + ext_irq; |
116 | else if (val & (1 << 6)) | 85 | handle_level_irq(ext_irq, ext_desc); |
117 | i = 6; | ||
118 | else if (val & (1 << 10)) | ||
119 | i = 10; | ||
120 | else if (val & (1 << 11)) | ||
121 | i = 11; | ||
122 | else if (val & (1 << 12)) | ||
123 | i = 12; | ||
124 | else if (val & (1 << 17)) | ||
125 | i = 17; | ||
126 | else | ||
127 | printk("Unexpected IRQ irq = %d status = 0x%08lx\n", irq, val); | ||
128 | pr_debug("voyagergx_irq_demux %ld \n", i); | ||
129 | if (i < VOYAGER_IRQ_NUM) { | ||
130 | irq = VOYAGER_IRQ_BASE + i; | ||
131 | if (voyagergx_demux[i].func != 0) | ||
132 | irq = voyagergx_demux[i].func(irq, | ||
133 | voyagergx_demux[i].dev); | ||
134 | } | 86 | } |
87 | intv >>= 1; | ||
88 | k++; | ||
135 | } | 89 | } |
136 | return irq; | ||
137 | } | 90 | } |
138 | 91 | ||
139 | static struct irqaction irq0 = { | ||
140 | .name = "voyagergx", | ||
141 | .handler = voyagergx_interrupt, | ||
142 | .flags = IRQF_DISABLED, | ||
143 | .mask = CPU_MASK_NONE, | ||
144 | }; | ||
145 | |||
146 | void __init setup_voyagergx_irq(void) | 92 | void __init setup_voyagergx_irq(void) |
147 | { | 93 | { |
148 | int i, flag; | 94 | printk(KERN_INFO "VoyagerGX on irq %d (mapped into %d to %d)\n", |
149 | |||
150 | printk(KERN_INFO "VoyagerGX configured at 0x%x on irq %d(mapped into %d to %d)\n", | ||
151 | VOYAGER_BASE, | ||
152 | IRQ_VOYAGER, | 95 | IRQ_VOYAGER, |
153 | VOYAGER_IRQ_BASE, | 96 | VOYAGER_IRQ_BASE, |
154 | VOYAGER_IRQ_BASE + VOYAGER_IRQ_NUM - 1); | 97 | VOYAGER_IRQ_BASE + VOYAGER_IRQ_NUM - 1); |
155 | 98 | ||
156 | for (i=0; i<VOYAGER_IRQ_NUM; i++) { | 99 | register_intc_controller(&intc_desc); |
157 | flag = 0; | 100 | set_irq_chained_handler(IRQ_VOYAGER, voyagergx_irq_demux); |
158 | switch (VOYAGER_IRQ_BASE + i) { | ||
159 | case VOYAGER_USBH_IRQ: | ||
160 | case VOYAGER_8051_IRQ: | ||
161 | case VOYAGER_UART0_IRQ: | ||
162 | case VOYAGER_UART1_IRQ: | ||
163 | case VOYAGER_AC97_IRQ: | ||
164 | flag = 1; | ||
165 | } | ||
166 | if (flag == 1) | ||
167 | irq_desc[VOYAGER_IRQ_BASE + i].chip = &voyagergx_irq_type; | ||
168 | } | ||
169 | |||
170 | setup_irq(IRQ_VOYAGER, &irq0); | ||
171 | } | 101 | } |
diff --git a/arch/sh/configs/dreamcast_defconfig b/arch/sh/configs/dreamcast_defconfig index 3fdd270eecf7..57728788b753 100644 --- a/arch/sh/configs/dreamcast_defconfig +++ b/arch/sh/configs/dreamcast_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.22-rc4 | 3 | # Linux kernel version: 2.6.23-rc7 |
4 | # Sat Jul 7 03:47:45 2007 | 4 | # Fri Sep 21 15:46:27 2007 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
@@ -18,30 +18,26 @@ CONFIG_STACKTRACE_SUPPORT=y | |||
18 | CONFIG_LOCKDEP_SUPPORT=y | 18 | CONFIG_LOCKDEP_SUPPORT=y |
19 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | 19 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set |
20 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | 20 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set |
21 | CONFIG_ARCH_NO_VIRT_TO_BUS=y | ||
21 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 22 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
22 | 23 | ||
23 | # | 24 | # |
24 | # Code maturity level options | 25 | # General setup |
25 | # | 26 | # |
26 | CONFIG_EXPERIMENTAL=y | 27 | CONFIG_EXPERIMENTAL=y |
27 | CONFIG_BROKEN_ON_SMP=y | 28 | CONFIG_BROKEN_ON_SMP=y |
28 | CONFIG_LOCK_KERNEL=y | 29 | CONFIG_LOCK_KERNEL=y |
29 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 30 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
30 | |||
31 | # | ||
32 | # General setup | ||
33 | # | ||
34 | CONFIG_LOCALVERSION="" | 31 | CONFIG_LOCALVERSION="" |
35 | CONFIG_LOCALVERSION_AUTO=y | 32 | CONFIG_LOCALVERSION_AUTO=y |
36 | CONFIG_SWAP=y | 33 | CONFIG_SWAP=y |
37 | CONFIG_SYSVIPC=y | 34 | CONFIG_SYSVIPC=y |
38 | # CONFIG_IPC_NS is not set | ||
39 | CONFIG_SYSVIPC_SYSCTL=y | 35 | CONFIG_SYSVIPC_SYSCTL=y |
40 | # CONFIG_POSIX_MQUEUE is not set | 36 | # CONFIG_POSIX_MQUEUE is not set |
41 | CONFIG_BSD_PROCESS_ACCT=y | 37 | CONFIG_BSD_PROCESS_ACCT=y |
42 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 38 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
43 | # CONFIG_TASKSTATS is not set | 39 | # CONFIG_TASKSTATS is not set |
44 | # CONFIG_UTS_NS is not set | 40 | # CONFIG_USER_NS is not set |
45 | # CONFIG_AUDIT is not set | 41 | # CONFIG_AUDIT is not set |
46 | # CONFIG_IKCONFIG is not set | 42 | # CONFIG_IKCONFIG is not set |
47 | CONFIG_LOG_BUF_SHIFT=14 | 43 | CONFIG_LOG_BUF_SHIFT=14 |
@@ -64,7 +60,6 @@ CONFIG_FUTEX=y | |||
64 | CONFIG_ANON_INODES=y | 60 | CONFIG_ANON_INODES=y |
65 | CONFIG_EPOLL=y | 61 | CONFIG_EPOLL=y |
66 | CONFIG_SIGNALFD=y | 62 | CONFIG_SIGNALFD=y |
67 | CONFIG_TIMERFD=y | ||
68 | CONFIG_EVENTFD=y | 63 | CONFIG_EVENTFD=y |
69 | CONFIG_SHMEM=y | 64 | CONFIG_SHMEM=y |
70 | CONFIG_VM_EVENT_COUNTERS=y | 65 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -74,24 +69,17 @@ CONFIG_SLAB=y | |||
74 | CONFIG_RT_MUTEXES=y | 69 | CONFIG_RT_MUTEXES=y |
75 | # CONFIG_TINY_SHMEM is not set | 70 | # CONFIG_TINY_SHMEM is not set |
76 | CONFIG_BASE_SMALL=0 | 71 | CONFIG_BASE_SMALL=0 |
77 | |||
78 | # | ||
79 | # Loadable module support | ||
80 | # | ||
81 | CONFIG_MODULES=y | 72 | CONFIG_MODULES=y |
82 | CONFIG_MODULE_UNLOAD=y | 73 | CONFIG_MODULE_UNLOAD=y |
83 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 74 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
84 | # CONFIG_MODVERSIONS is not set | 75 | # CONFIG_MODVERSIONS is not set |
85 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 76 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
86 | CONFIG_KMOD=y | 77 | CONFIG_KMOD=y |
87 | |||
88 | # | ||
89 | # Block layer | ||
90 | # | ||
91 | CONFIG_BLOCK=y | 78 | CONFIG_BLOCK=y |
92 | # CONFIG_LBD is not set | 79 | # CONFIG_LBD is not set |
93 | # CONFIG_BLK_DEV_IO_TRACE is not set | 80 | # CONFIG_BLK_DEV_IO_TRACE is not set |
94 | # CONFIG_LSF is not set | 81 | # CONFIG_LSF is not set |
82 | # CONFIG_BLK_DEV_BSG is not set | ||
95 | 83 | ||
96 | # | 84 | # |
97 | # IO Schedulers | 85 | # IO Schedulers |
@@ -112,7 +100,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
112 | CONFIG_CPU_SH4=y | 100 | CONFIG_CPU_SH4=y |
113 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 101 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
114 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 102 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
115 | # CONFIG_CPU_SUBTYPE_SH7300 is not set | ||
116 | # CONFIG_CPU_SUBTYPE_SH7705 is not set | 103 | # CONFIG_CPU_SUBTYPE_SH7705 is not set |
117 | # CONFIG_CPU_SUBTYPE_SH7706 is not set | 104 | # CONFIG_CPU_SUBTYPE_SH7706 is not set |
118 | # CONFIG_CPU_SUBTYPE_SH7707 is not set | 105 | # CONFIG_CPU_SUBTYPE_SH7707 is not set |
@@ -120,6 +107,7 @@ CONFIG_CPU_SH4=y | |||
120 | # CONFIG_CPU_SUBTYPE_SH7709 is not set | 107 | # CONFIG_CPU_SUBTYPE_SH7709 is not set |
121 | # CONFIG_CPU_SUBTYPE_SH7710 is not set | 108 | # CONFIG_CPU_SUBTYPE_SH7710 is not set |
122 | # CONFIG_CPU_SUBTYPE_SH7712 is not set | 109 | # CONFIG_CPU_SUBTYPE_SH7712 is not set |
110 | # CONFIG_CPU_SUBTYPE_SH7720 is not set | ||
123 | # CONFIG_CPU_SUBTYPE_SH7750 is not set | 111 | # CONFIG_CPU_SUBTYPE_SH7750 is not set |
124 | CONFIG_CPU_SUBTYPE_SH7091=y | 112 | CONFIG_CPU_SUBTYPE_SH7091=y |
125 | # CONFIG_CPU_SUBTYPE_SH7750R is not set | 113 | # CONFIG_CPU_SUBTYPE_SH7750R is not set |
@@ -134,7 +122,6 @@ CONFIG_CPU_SUBTYPE_SH7091=y | |||
134 | # CONFIG_CPU_SUBTYPE_SH7780 is not set | 122 | # CONFIG_CPU_SUBTYPE_SH7780 is not set |
135 | # CONFIG_CPU_SUBTYPE_SH7785 is not set | 123 | # CONFIG_CPU_SUBTYPE_SH7785 is not set |
136 | # CONFIG_CPU_SUBTYPE_SHX3 is not set | 124 | # CONFIG_CPU_SUBTYPE_SHX3 is not set |
137 | # CONFIG_CPU_SUBTYPE_SH73180 is not set | ||
138 | # CONFIG_CPU_SUBTYPE_SH7343 is not set | 125 | # CONFIG_CPU_SUBTYPE_SH7343 is not set |
139 | # CONFIG_CPU_SUBTYPE_SH7722 is not set | 126 | # CONFIG_CPU_SUBTYPE_SH7722 is not set |
140 | 127 | ||
@@ -177,7 +164,9 @@ CONFIG_NR_QUICK=2 | |||
177 | # Cache configuration | 164 | # Cache configuration |
178 | # | 165 | # |
179 | # CONFIG_SH_DIRECT_MAPPED is not set | 166 | # CONFIG_SH_DIRECT_MAPPED is not set |
180 | # CONFIG_SH_WRITETHROUGH is not set | 167 | CONFIG_CACHE_WRITEBACK=y |
168 | # CONFIG_CACHE_WRITETHROUGH is not set | ||
169 | # CONFIG_CACHE_OFF is not set | ||
181 | 170 | ||
182 | # | 171 | # |
183 | # Processor features | 172 | # Processor features |
@@ -185,12 +174,11 @@ CONFIG_NR_QUICK=2 | |||
185 | CONFIG_CPU_LITTLE_ENDIAN=y | 174 | CONFIG_CPU_LITTLE_ENDIAN=y |
186 | # CONFIG_CPU_BIG_ENDIAN is not set | 175 | # CONFIG_CPU_BIG_ENDIAN is not set |
187 | CONFIG_SH_FPU=y | 176 | CONFIG_SH_FPU=y |
188 | # CONFIG_SH_DSP is not set | ||
189 | CONFIG_SH_STORE_QUEUES=y | 177 | CONFIG_SH_STORE_QUEUES=y |
190 | CONFIG_CPU_HAS_INTEVT=y | 178 | CONFIG_CPU_HAS_INTEVT=y |
191 | CONFIG_CPU_HAS_IPR_IRQ=y | ||
192 | CONFIG_CPU_HAS_SR_RB=y | 179 | CONFIG_CPU_HAS_SR_RB=y |
193 | CONFIG_CPU_HAS_PTEA=y | 180 | CONFIG_CPU_HAS_PTEA=y |
181 | CONFIG_CPU_HAS_FPU=y | ||
194 | 182 | ||
195 | # | 183 | # |
196 | # Board support | 184 | # Board support |
@@ -270,6 +258,7 @@ CONFIG_CMDLINE="console=ttySC1,115200 panic=3" | |||
270 | # | 258 | # |
271 | # Bus options | 259 | # Bus options |
272 | # | 260 | # |
261 | CONFIG_MAPLE=y | ||
273 | CONFIG_PCI=y | 262 | CONFIG_PCI=y |
274 | CONFIG_SH_PCIDMA_NONCOHERENT=y | 263 | CONFIG_SH_PCIDMA_NONCOHERENT=y |
275 | CONFIG_PCI_AUTO=y | 264 | CONFIG_PCI_AUTO=y |
@@ -368,6 +357,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
368 | # CONFIG_MAC80211 is not set | 357 | # CONFIG_MAC80211 is not set |
369 | # CONFIG_IEEE80211 is not set | 358 | # CONFIG_IEEE80211 is not set |
370 | # CONFIG_RFKILL is not set | 359 | # CONFIG_RFKILL is not set |
360 | # CONFIG_NET_9P is not set | ||
371 | 361 | ||
372 | # | 362 | # |
373 | # Device Drivers | 363 | # Device Drivers |
@@ -380,27 +370,10 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
380 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 370 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
381 | # CONFIG_FW_LOADER is not set | 371 | # CONFIG_FW_LOADER is not set |
382 | # CONFIG_SYS_HYPERVISOR is not set | 372 | # CONFIG_SYS_HYPERVISOR is not set |
383 | |||
384 | # | ||
385 | # Connector - unified userspace <-> kernelspace linker | ||
386 | # | ||
387 | # CONFIG_CONNECTOR is not set | 373 | # CONFIG_CONNECTOR is not set |
388 | # CONFIG_MTD is not set | 374 | # CONFIG_MTD is not set |
389 | |||
390 | # | ||
391 | # Parallel port support | ||
392 | # | ||
393 | # CONFIG_PARPORT is not set | 375 | # CONFIG_PARPORT is not set |
394 | 376 | CONFIG_BLK_DEV=y | |
395 | # | ||
396 | # Plug and Play support | ||
397 | # | ||
398 | # CONFIG_PNPACPI is not set | ||
399 | |||
400 | # | ||
401 | # Block devices | ||
402 | # | ||
403 | # CONFIG_BLK_CPQ_DA is not set | ||
404 | # CONFIG_BLK_CPQ_CISS_DA is not set | 377 | # CONFIG_BLK_CPQ_CISS_DA is not set |
405 | # CONFIG_BLK_DEV_DAC960 is not set | 378 | # CONFIG_BLK_DEV_DAC960 is not set |
406 | # CONFIG_BLK_DEV_UMEM is not set | 379 | # CONFIG_BLK_DEV_UMEM is not set |
@@ -411,14 +384,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
411 | # CONFIG_BLK_DEV_RAM is not set | 384 | # CONFIG_BLK_DEV_RAM is not set |
412 | # CONFIG_CDROM_PKTCDVD is not set | 385 | # CONFIG_CDROM_PKTCDVD is not set |
413 | # CONFIG_ATA_OVER_ETH is not set | 386 | # CONFIG_ATA_OVER_ETH is not set |
414 | 387 | CONFIG_MISC_DEVICES=y | |
415 | # | ||
416 | # Misc devices | ||
417 | # | ||
418 | # CONFIG_PHANTOM is not set | 388 | # CONFIG_PHANTOM is not set |
389 | # CONFIG_EEPROM_93CX6 is not set | ||
419 | # CONFIG_SGI_IOC4 is not set | 390 | # CONFIG_SGI_IOC4 is not set |
420 | # CONFIG_TIFM_CORE is not set | 391 | # CONFIG_TIFM_CORE is not set |
421 | # CONFIG_BLINK is not set | ||
422 | # CONFIG_IDE is not set | 392 | # CONFIG_IDE is not set |
423 | 393 | ||
424 | # | 394 | # |
@@ -426,12 +396,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
426 | # | 396 | # |
427 | # CONFIG_RAID_ATTRS is not set | 397 | # CONFIG_RAID_ATTRS is not set |
428 | # CONFIG_SCSI is not set | 398 | # CONFIG_SCSI is not set |
399 | # CONFIG_SCSI_DMA is not set | ||
429 | # CONFIG_SCSI_NETLINK is not set | 400 | # CONFIG_SCSI_NETLINK is not set |
430 | # CONFIG_ATA is not set | 401 | # CONFIG_ATA is not set |
431 | |||
432 | # | ||
433 | # Multi-device support (RAID and LVM) | ||
434 | # | ||
435 | # CONFIG_MD is not set | 402 | # CONFIG_MD is not set |
436 | 403 | ||
437 | # | 404 | # |
@@ -444,26 +411,16 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
444 | # | 411 | # |
445 | # CONFIG_FIREWIRE is not set | 412 | # CONFIG_FIREWIRE is not set |
446 | # CONFIG_IEEE1394 is not set | 413 | # CONFIG_IEEE1394 is not set |
447 | |||
448 | # | ||
449 | # I2O device support | ||
450 | # | ||
451 | # CONFIG_I2O is not set | 414 | # CONFIG_I2O is not set |
452 | |||
453 | # | ||
454 | # Network device support | ||
455 | # | ||
456 | CONFIG_NETDEVICES=y | 415 | CONFIG_NETDEVICES=y |
416 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
457 | # CONFIG_DUMMY is not set | 417 | # CONFIG_DUMMY is not set |
458 | # CONFIG_BONDING is not set | 418 | # CONFIG_BONDING is not set |
419 | # CONFIG_MACVLAN is not set | ||
459 | # CONFIG_EQUALIZER is not set | 420 | # CONFIG_EQUALIZER is not set |
460 | # CONFIG_TUN is not set | 421 | # CONFIG_TUN is not set |
461 | # CONFIG_ARCNET is not set | 422 | # CONFIG_ARCNET is not set |
462 | # CONFIG_PHYLIB is not set | 423 | # CONFIG_PHYLIB is not set |
463 | |||
464 | # | ||
465 | # Ethernet (10 or 100Mbit) | ||
466 | # | ||
467 | CONFIG_NET_ETHERNET=y | 424 | CONFIG_NET_ETHERNET=y |
468 | CONFIG_MII=y | 425 | CONFIG_MII=y |
469 | # CONFIG_STNIC is not set | 426 | # CONFIG_STNIC is not set |
@@ -472,10 +429,6 @@ CONFIG_MII=y | |||
472 | # CONFIG_CASSINI is not set | 429 | # CONFIG_CASSINI is not set |
473 | # CONFIG_NET_VENDOR_3COM is not set | 430 | # CONFIG_NET_VENDOR_3COM is not set |
474 | # CONFIG_SMC91X is not set | 431 | # CONFIG_SMC91X is not set |
475 | |||
476 | # | ||
477 | # Tulip family network device support | ||
478 | # | ||
479 | # CONFIG_NET_TULIP is not set | 432 | # CONFIG_NET_TULIP is not set |
480 | # CONFIG_HP100 is not set | 433 | # CONFIG_HP100 is not set |
481 | CONFIG_NET_PCI=y | 434 | CONFIG_NET_PCI=y |
@@ -520,15 +473,7 @@ CONFIG_8139TOO=y | |||
520 | # CONFIG_NETCONSOLE is not set | 473 | # CONFIG_NETCONSOLE is not set |
521 | # CONFIG_NETPOLL is not set | 474 | # CONFIG_NETPOLL is not set |
522 | # CONFIG_NET_POLL_CONTROLLER is not set | 475 | # CONFIG_NET_POLL_CONTROLLER is not set |
523 | |||
524 | # | ||
525 | # ISDN subsystem | ||
526 | # | ||
527 | # CONFIG_ISDN is not set | 476 | # CONFIG_ISDN is not set |
528 | |||
529 | # | ||
530 | # Telephony Support | ||
531 | # | ||
532 | # CONFIG_PHONE is not set | 477 | # CONFIG_PHONE is not set |
533 | 478 | ||
534 | # | 479 | # |
@@ -536,6 +481,7 @@ CONFIG_8139TOO=y | |||
536 | # | 481 | # |
537 | CONFIG_INPUT=y | 482 | CONFIG_INPUT=y |
538 | # CONFIG_INPUT_FF_MEMLESS is not set | 483 | # CONFIG_INPUT_FF_MEMLESS is not set |
484 | # CONFIG_INPUT_POLLDEV is not set | ||
539 | 485 | ||
540 | # | 486 | # |
541 | # Userland interfaces | 487 | # Userland interfaces |
@@ -606,10 +552,6 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
606 | CONFIG_UNIX98_PTYS=y | 552 | CONFIG_UNIX98_PTYS=y |
607 | CONFIG_LEGACY_PTYS=y | 553 | CONFIG_LEGACY_PTYS=y |
608 | CONFIG_LEGACY_PTY_COUNT=256 | 554 | CONFIG_LEGACY_PTY_COUNT=256 |
609 | |||
610 | # | ||
611 | # IPMI | ||
612 | # | ||
613 | # CONFIG_IPMI_HANDLER is not set | 555 | # CONFIG_IPMI_HANDLER is not set |
614 | CONFIG_WATCHDOG=y | 556 | CONFIG_WATCHDOG=y |
615 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 557 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
@@ -631,10 +573,6 @@ CONFIG_HW_RANDOM=y | |||
631 | # CONFIG_APPLICOM is not set | 573 | # CONFIG_APPLICOM is not set |
632 | # CONFIG_DRM is not set | 574 | # CONFIG_DRM is not set |
633 | # CONFIG_RAW_DRIVER is not set | 575 | # CONFIG_RAW_DRIVER is not set |
634 | |||
635 | # | ||
636 | # TPM devices | ||
637 | # | ||
638 | # CONFIG_TCG_TPM is not set | 576 | # CONFIG_TCG_TPM is not set |
639 | CONFIG_DEVPORT=y | 577 | CONFIG_DEVPORT=y |
640 | # CONFIG_I2C is not set | 578 | # CONFIG_I2C is not set |
@@ -644,11 +582,8 @@ CONFIG_DEVPORT=y | |||
644 | # | 582 | # |
645 | # CONFIG_SPI is not set | 583 | # CONFIG_SPI is not set |
646 | # CONFIG_SPI_MASTER is not set | 584 | # CONFIG_SPI_MASTER is not set |
647 | |||
648 | # | ||
649 | # Dallas's 1-wire bus | ||
650 | # | ||
651 | # CONFIG_W1 is not set | 585 | # CONFIG_W1 is not set |
586 | # CONFIG_POWER_SUPPLY is not set | ||
652 | # CONFIG_HWMON is not set | 587 | # CONFIG_HWMON is not set |
653 | 588 | ||
654 | # | 589 | # |
@@ -673,6 +608,7 @@ CONFIG_DEVPORT=y | |||
673 | # | 608 | # |
674 | # CONFIG_DISPLAY_SUPPORT is not set | 609 | # CONFIG_DISPLAY_SUPPORT is not set |
675 | # CONFIG_VGASTATE is not set | 610 | # CONFIG_VGASTATE is not set |
611 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
676 | CONFIG_FB=y | 612 | CONFIG_FB=y |
677 | CONFIG_FIRMWARE_EDID=y | 613 | CONFIG_FIRMWARE_EDID=y |
678 | # CONFIG_FB_DDC is not set | 614 | # CONFIG_FB_DDC is not set |
@@ -699,7 +635,6 @@ CONFIG_FB_DEFERRED_IO=y | |||
699 | # CONFIG_FB_ASILIANT is not set | 635 | # CONFIG_FB_ASILIANT is not set |
700 | # CONFIG_FB_IMSTT is not set | 636 | # CONFIG_FB_IMSTT is not set |
701 | CONFIG_FB_PVR2=y | 637 | CONFIG_FB_PVR2=y |
702 | # CONFIG_FB_EPSON1355 is not set | ||
703 | # CONFIG_FB_S1D13XXX is not set | 638 | # CONFIG_FB_S1D13XXX is not set |
704 | # CONFIG_FB_NVIDIA is not set | 639 | # CONFIG_FB_NVIDIA is not set |
705 | # CONFIG_FB_RIVA is not set | 640 | # CONFIG_FB_RIVA is not set |
@@ -725,6 +660,7 @@ CONFIG_FB_PVR2=y | |||
725 | # | 660 | # |
726 | CONFIG_DUMMY_CONSOLE=y | 661 | CONFIG_DUMMY_CONSOLE=y |
727 | CONFIG_FRAMEBUFFER_CONSOLE=y | 662 | CONFIG_FRAMEBUFFER_CONSOLE=y |
663 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
728 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | 664 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set |
729 | CONFIG_FONTS=y | 665 | CONFIG_FONTS=y |
730 | CONFIG_FONT_8x8=y | 666 | CONFIG_FONT_8x8=y |
@@ -749,16 +685,10 @@ CONFIG_LOGO_SUPERH_CLUT224=y | |||
749 | # Sound | 685 | # Sound |
750 | # | 686 | # |
751 | # CONFIG_SOUND is not set | 687 | # CONFIG_SOUND is not set |
752 | 688 | CONFIG_HID_SUPPORT=y | |
753 | # | ||
754 | # HID Devices | ||
755 | # | ||
756 | CONFIG_HID=y | 689 | CONFIG_HID=y |
757 | # CONFIG_HID_DEBUG is not set | 690 | # CONFIG_HID_DEBUG is not set |
758 | 691 | CONFIG_USB_SUPPORT=y | |
759 | # | ||
760 | # USB support | ||
761 | # | ||
762 | CONFIG_USB_ARCH_HAS_HCD=y | 692 | CONFIG_USB_ARCH_HAS_HCD=y |
763 | CONFIG_USB_ARCH_HAS_OHCI=y | 693 | CONFIG_USB_ARCH_HAS_OHCI=y |
764 | CONFIG_USB_ARCH_HAS_EHCI=y | 694 | CONFIG_USB_ARCH_HAS_EHCI=y |
@@ -773,32 +703,8 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
773 | # | 703 | # |
774 | # CONFIG_USB_GADGET is not set | 704 | # CONFIG_USB_GADGET is not set |
775 | # CONFIG_MMC is not set | 705 | # CONFIG_MMC is not set |
776 | |||
777 | # | ||
778 | # LED devices | ||
779 | # | ||
780 | # CONFIG_NEW_LEDS is not set | 706 | # CONFIG_NEW_LEDS is not set |
781 | |||
782 | # | ||
783 | # LED drivers | ||
784 | # | ||
785 | |||
786 | # | ||
787 | # LED Triggers | ||
788 | # | ||
789 | |||
790 | # | ||
791 | # InfiniBand support | ||
792 | # | ||
793 | # CONFIG_INFINIBAND is not set | 707 | # CONFIG_INFINIBAND is not set |
794 | |||
795 | # | ||
796 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
797 | # | ||
798 | |||
799 | # | ||
800 | # Real Time Clock | ||
801 | # | ||
802 | # CONFIG_RTC_CLASS is not set | 708 | # CONFIG_RTC_CLASS is not set |
803 | 709 | ||
804 | # | 710 | # |
@@ -815,6 +721,11 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
815 | # | 721 | # |
816 | 722 | ||
817 | # | 723 | # |
724 | # Userspace I/O | ||
725 | # | ||
726 | # CONFIG_UIO is not set | ||
727 | |||
728 | # | ||
818 | # File systems | 729 | # File systems |
819 | # | 730 | # |
820 | # CONFIG_EXT2_FS is not set | 731 | # CONFIG_EXT2_FS is not set |
@@ -890,7 +801,6 @@ CONFIG_RAMFS=y | |||
890 | # CONFIG_NCP_FS is not set | 801 | # CONFIG_NCP_FS is not set |
891 | # CONFIG_CODA_FS is not set | 802 | # CONFIG_CODA_FS is not set |
892 | # CONFIG_AFS_FS is not set | 803 | # CONFIG_AFS_FS is not set |
893 | # CONFIG_9P_FS is not set | ||
894 | 804 | ||
895 | # | 805 | # |
896 | # Partition Types | 806 | # Partition Types |
@@ -935,10 +845,6 @@ CONFIG_ENABLE_MUST_CHECK=y | |||
935 | # | 845 | # |
936 | # CONFIG_KEYS is not set | 846 | # CONFIG_KEYS is not set |
937 | # CONFIG_SECURITY is not set | 847 | # CONFIG_SECURITY is not set |
938 | |||
939 | # | ||
940 | # Cryptographic options | ||
941 | # | ||
942 | # CONFIG_CRYPTO is not set | 848 | # CONFIG_CRYPTO is not set |
943 | 849 | ||
944 | # | 850 | # |
@@ -949,6 +855,7 @@ CONFIG_BITREVERSE=y | |||
949 | # CONFIG_CRC16 is not set | 855 | # CONFIG_CRC16 is not set |
950 | # CONFIG_CRC_ITU_T is not set | 856 | # CONFIG_CRC_ITU_T is not set |
951 | CONFIG_CRC32=y | 857 | CONFIG_CRC32=y |
858 | # CONFIG_CRC7 is not set | ||
952 | # CONFIG_LIBCRC32C is not set | 859 | # CONFIG_LIBCRC32C is not set |
953 | CONFIG_PLIST=y | 860 | CONFIG_PLIST=y |
954 | CONFIG_HAS_IOMEM=y | 861 | CONFIG_HAS_IOMEM=y |
diff --git a/arch/sh/configs/hp6xx_defconfig b/arch/sh/configs/hp6xx_defconfig index b931d9b2d579..756d38dc2f71 100644 --- a/arch/sh/configs/hp6xx_defconfig +++ b/arch/sh/configs/hp6xx_defconfig | |||
@@ -1,37 +1,47 @@ | |||
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.23-rc4 |
4 | # Tue Oct 3 11:10:06 2006 | 4 | # Tue Sep 11 19:42:44 2007 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
8 | CONFIG_GENERIC_BUG=y | ||
8 | CONFIG_GENERIC_FIND_NEXT_BIT=y | 9 | CONFIG_GENERIC_FIND_NEXT_BIT=y |
9 | CONFIG_GENERIC_HWEIGHT=y | 10 | CONFIG_GENERIC_HWEIGHT=y |
10 | CONFIG_GENERIC_HARDIRQS=y | 11 | CONFIG_GENERIC_HARDIRQS=y |
11 | CONFIG_GENERIC_IRQ_PROBE=y | 12 | CONFIG_GENERIC_IRQ_PROBE=y |
12 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 13 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
14 | CONFIG_GENERIC_TIME=y | ||
15 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
16 | CONFIG_SYS_SUPPORTS_PM=y | ||
17 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | ||
18 | CONFIG_STACKTRACE_SUPPORT=y | ||
19 | CONFIG_LOCKDEP_SUPPORT=y | ||
20 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
21 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
22 | CONFIG_ARCH_NO_VIRT_TO_BUS=y | ||
13 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 23 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
14 | 24 | ||
15 | # | 25 | # |
16 | # Code maturity level options | 26 | # General setup |
17 | # | 27 | # |
18 | CONFIG_EXPERIMENTAL=y | 28 | CONFIG_EXPERIMENTAL=y |
19 | CONFIG_BROKEN_ON_SMP=y | 29 | CONFIG_BROKEN_ON_SMP=y |
20 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 30 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
21 | |||
22 | # | ||
23 | # General setup | ||
24 | # | ||
25 | CONFIG_LOCALVERSION="" | 31 | CONFIG_LOCALVERSION="" |
26 | CONFIG_LOCALVERSION_AUTO=y | 32 | CONFIG_LOCALVERSION_AUTO=y |
27 | CONFIG_SWAP=y | 33 | CONFIG_SWAP=y |
28 | # CONFIG_SYSVIPC is not set | 34 | # CONFIG_SYSVIPC is not set |
29 | # CONFIG_BSD_PROCESS_ACCT is not set | 35 | CONFIG_BSD_PROCESS_ACCT=y |
30 | # CONFIG_UTS_NS is not set | 36 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
31 | # CONFIG_IKCONFIG is not set | 37 | # CONFIG_USER_NS is not set |
38 | CONFIG_IKCONFIG=y | ||
39 | CONFIG_IKCONFIG_PROC=y | ||
40 | CONFIG_LOG_BUF_SHIFT=14 | ||
41 | CONFIG_SYSFS_DEPRECATED=y | ||
32 | # CONFIG_RELAY is not set | 42 | # CONFIG_RELAY is not set |
33 | CONFIG_INITRAMFS_SOURCE="" | 43 | # CONFIG_BLK_DEV_INITRD is not set |
34 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 44 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set |
35 | CONFIG_SYSCTL=y | 45 | CONFIG_SYSCTL=y |
36 | CONFIG_EMBEDDED=y | 46 | CONFIG_EMBEDDED=y |
37 | CONFIG_UID16=y | 47 | CONFIG_UID16=y |
@@ -44,27 +54,25 @@ CONFIG_BUG=y | |||
44 | CONFIG_ELF_CORE=y | 54 | CONFIG_ELF_CORE=y |
45 | CONFIG_BASE_FULL=y | 55 | CONFIG_BASE_FULL=y |
46 | CONFIG_FUTEX=y | 56 | CONFIG_FUTEX=y |
57 | CONFIG_ANON_INODES=y | ||
47 | CONFIG_EPOLL=y | 58 | CONFIG_EPOLL=y |
59 | CONFIG_SIGNALFD=y | ||
60 | CONFIG_TIMERFD=y | ||
61 | CONFIG_EVENTFD=y | ||
48 | CONFIG_SHMEM=y | 62 | CONFIG_SHMEM=y |
49 | CONFIG_SLAB=y | ||
50 | CONFIG_VM_EVENT_COUNTERS=y | 63 | CONFIG_VM_EVENT_COUNTERS=y |
64 | CONFIG_SLAB=y | ||
65 | # CONFIG_SLUB is not set | ||
66 | # CONFIG_SLOB is not set | ||
51 | CONFIG_RT_MUTEXES=y | 67 | CONFIG_RT_MUTEXES=y |
52 | # CONFIG_TINY_SHMEM is not set | 68 | # CONFIG_TINY_SHMEM is not set |
53 | CONFIG_BASE_SMALL=0 | 69 | CONFIG_BASE_SMALL=0 |
54 | # CONFIG_SLOB is not set | ||
55 | |||
56 | # | ||
57 | # Loadable module support | ||
58 | # | ||
59 | # CONFIG_MODULES is not set | 70 | # CONFIG_MODULES is not set |
60 | |||
61 | # | ||
62 | # Block layer | ||
63 | # | ||
64 | CONFIG_BLOCK=y | 71 | CONFIG_BLOCK=y |
65 | # CONFIG_LBD is not set | 72 | # CONFIG_LBD is not set |
66 | # CONFIG_BLK_DEV_IO_TRACE is not set | 73 | # CONFIG_BLK_DEV_IO_TRACE is not set |
67 | # CONFIG_LSF is not set | 74 | # CONFIG_LSF is not set |
75 | # CONFIG_BLK_DEV_BSG is not set | ||
68 | 76 | ||
69 | # | 77 | # |
70 | # IO Schedulers | 78 | # IO Schedulers |
@@ -82,55 +90,17 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
82 | # | 90 | # |
83 | # System type | 91 | # System type |
84 | # | 92 | # |
85 | # CONFIG_SH_SOLUTION_ENGINE is not set | ||
86 | # CONFIG_SH_7751_SOLUTION_ENGINE is not set | ||
87 | # CONFIG_SH_7300_SOLUTION_ENGINE is not set | ||
88 | # CONFIG_SH_7343_SOLUTION_ENGINE is not set | ||
89 | # CONFIG_SH_73180_SOLUTION_ENGINE is not set | ||
90 | # CONFIG_SH_7751_SYSTEMH is not set | ||
91 | CONFIG_SH_HP6XX=y | ||
92 | # CONFIG_SH_EC3104 is not set | ||
93 | # CONFIG_SH_SATURN is not set | ||
94 | # CONFIG_SH_DREAMCAST is not set | ||
95 | # CONFIG_SH_BIGSUR is not set | ||
96 | # CONFIG_SH_MPC1211 is not set | ||
97 | # CONFIG_SH_SH03 is not set | ||
98 | # CONFIG_SH_SECUREEDGE5410 is not set | ||
99 | # CONFIG_SH_HS7751RVOIP is not set | ||
100 | # CONFIG_SH_7710VOIPGW is not set | ||
101 | # CONFIG_SH_RTS7751R2D is not set | ||
102 | # CONFIG_SH_R7780RP is not set | ||
103 | # CONFIG_SH_EDOSK7705 is not set | ||
104 | # CONFIG_SH_SH4202_MICRODEV is not set | ||
105 | # CONFIG_SH_LANDISK is not set | ||
106 | # CONFIG_SH_TITAN is not set | ||
107 | # CONFIG_SH_SHMIN is not set | ||
108 | # CONFIG_SH_UNKNOWN is not set | ||
109 | |||
110 | # | ||
111 | # Processor selection | ||
112 | # | ||
113 | CONFIG_CPU_SH3=y | 93 | CONFIG_CPU_SH3=y |
114 | 94 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | |
115 | # | 95 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
116 | # SH-2 Processor Support | ||
117 | # | ||
118 | # CONFIG_CPU_SUBTYPE_SH7604 is not set | ||
119 | |||
120 | # | ||
121 | # SH-3 Processor Support | ||
122 | # | ||
123 | # CONFIG_CPU_SUBTYPE_SH7300 is not set | ||
124 | # CONFIG_CPU_SUBTYPE_SH7705 is not set | 96 | # CONFIG_CPU_SUBTYPE_SH7705 is not set |
125 | # CONFIG_CPU_SUBTYPE_SH7706 is not set | 97 | # CONFIG_CPU_SUBTYPE_SH7706 is not set |
126 | # CONFIG_CPU_SUBTYPE_SH7707 is not set | 98 | # CONFIG_CPU_SUBTYPE_SH7707 is not set |
127 | # CONFIG_CPU_SUBTYPE_SH7708 is not set | 99 | # CONFIG_CPU_SUBTYPE_SH7708 is not set |
128 | CONFIG_CPU_SUBTYPE_SH7709=y | 100 | CONFIG_CPU_SUBTYPE_SH7709=y |
129 | # CONFIG_CPU_SUBTYPE_SH7710 is not set | 101 | # CONFIG_CPU_SUBTYPE_SH7710 is not set |
130 | 102 | # CONFIG_CPU_SUBTYPE_SH7712 is not set | |
131 | # | 103 | # CONFIG_CPU_SUBTYPE_SH7720 is not set |
132 | # SH-4 Processor Support | ||
133 | # | ||
134 | # CONFIG_CPU_SUBTYPE_SH7750 is not set | 104 | # CONFIG_CPU_SUBTYPE_SH7750 is not set |
135 | # CONFIG_CPU_SUBTYPE_SH7091 is not set | 105 | # CONFIG_CPU_SUBTYPE_SH7091 is not set |
136 | # CONFIG_CPU_SUBTYPE_SH7750R is not set | 106 | # CONFIG_CPU_SUBTYPE_SH7750R is not set |
@@ -139,66 +109,78 @@ CONFIG_CPU_SUBTYPE_SH7709=y | |||
139 | # CONFIG_CPU_SUBTYPE_SH7751R is not set | 109 | # CONFIG_CPU_SUBTYPE_SH7751R is not set |
140 | # CONFIG_CPU_SUBTYPE_SH7760 is not set | 110 | # CONFIG_CPU_SUBTYPE_SH7760 is not set |
141 | # CONFIG_CPU_SUBTYPE_SH4_202 is not set | 111 | # CONFIG_CPU_SUBTYPE_SH4_202 is not set |
142 | |||
143 | # | ||
144 | # ST40 Processor Support | ||
145 | # | ||
146 | # CONFIG_CPU_SUBTYPE_ST40STB1 is not set | 112 | # CONFIG_CPU_SUBTYPE_ST40STB1 is not set |
147 | # CONFIG_CPU_SUBTYPE_ST40GX1 is not set | 113 | # CONFIG_CPU_SUBTYPE_ST40GX1 is not set |
148 | |||
149 | # | ||
150 | # SH-4A Processor Support | ||
151 | # | ||
152 | # CONFIG_CPU_SUBTYPE_SH7770 is not set | 114 | # CONFIG_CPU_SUBTYPE_SH7770 is not set |
153 | # CONFIG_CPU_SUBTYPE_SH7780 is not set | 115 | # CONFIG_CPU_SUBTYPE_SH7780 is not set |
154 | 116 | # CONFIG_CPU_SUBTYPE_SH7785 is not set | |
155 | # | 117 | # CONFIG_CPU_SUBTYPE_SHX3 is not set |
156 | # SH4AL-DSP Processor Support | ||
157 | # | ||
158 | # CONFIG_CPU_SUBTYPE_SH73180 is not set | ||
159 | # CONFIG_CPU_SUBTYPE_SH7343 is not set | 118 | # CONFIG_CPU_SUBTYPE_SH7343 is not set |
119 | # CONFIG_CPU_SUBTYPE_SH7722 is not set | ||
160 | 120 | ||
161 | # | 121 | # |
162 | # Memory management options | 122 | # Memory management options |
163 | # | 123 | # |
124 | CONFIG_QUICKLIST=y | ||
164 | CONFIG_MMU=y | 125 | CONFIG_MMU=y |
165 | CONFIG_PAGE_OFFSET=0x80000000 | 126 | CONFIG_PAGE_OFFSET=0x80000000 |
166 | CONFIG_MEMORY_START=0x0c000000 | 127 | CONFIG_MEMORY_START=0x0d000000 |
167 | CONFIG_MEMORY_SIZE=0x00400000 | 128 | CONFIG_MEMORY_SIZE=0x00400000 |
168 | CONFIG_VSYSCALL=y | 129 | CONFIG_VSYSCALL=y |
130 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
131 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | ||
132 | CONFIG_ARCH_SPARSEMEM_DEFAULT=y | ||
133 | CONFIG_MAX_ACTIVE_REGIONS=1 | ||
134 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
135 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | ||
136 | CONFIG_PAGE_SIZE_4KB=y | ||
137 | # CONFIG_PAGE_SIZE_8KB is not set | ||
138 | # CONFIG_PAGE_SIZE_64KB is not set | ||
169 | CONFIG_SELECT_MEMORY_MODEL=y | 139 | CONFIG_SELECT_MEMORY_MODEL=y |
170 | CONFIG_FLATMEM_MANUAL=y | 140 | CONFIG_FLATMEM_MANUAL=y |
171 | # CONFIG_DISCONTIGMEM_MANUAL is not set | 141 | # CONFIG_DISCONTIGMEM_MANUAL is not set |
172 | # CONFIG_SPARSEMEM_MANUAL is not set | 142 | # CONFIG_SPARSEMEM_MANUAL is not set |
173 | CONFIG_FLATMEM=y | 143 | CONFIG_FLATMEM=y |
174 | CONFIG_FLAT_NODE_MEM_MAP=y | 144 | CONFIG_FLAT_NODE_MEM_MAP=y |
175 | # CONFIG_SPARSEMEM_STATIC is not set | 145 | CONFIG_SPARSEMEM_STATIC=y |
176 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 146 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
177 | # CONFIG_RESOURCES_64BIT is not set | 147 | # CONFIG_RESOURCES_64BIT is not set |
148 | CONFIG_ZONE_DMA_FLAG=0 | ||
149 | CONFIG_NR_QUICK=2 | ||
178 | 150 | ||
179 | # | 151 | # |
180 | # Cache configuration | 152 | # Cache configuration |
181 | # | 153 | # |
182 | # CONFIG_SH_DIRECT_MAPPED is not set | 154 | # CONFIG_SH_DIRECT_MAPPED is not set |
183 | # CONFIG_SH_WRITETHROUGH is not set | 155 | CONFIG_CACHE_WRITEBACK=y |
184 | # CONFIG_SH_OCRAM is not set | 156 | # CONFIG_CACHE_WRITETHROUGH is not set |
157 | # CONFIG_CACHE_OFF is not set | ||
185 | 158 | ||
186 | # | 159 | # |
187 | # Processor features | 160 | # Processor features |
188 | # | 161 | # |
189 | CONFIG_CPU_LITTLE_ENDIAN=y | 162 | CONFIG_CPU_LITTLE_ENDIAN=y |
163 | # CONFIG_CPU_BIG_ENDIAN is not set | ||
190 | # CONFIG_SH_FPU_EMU is not set | 164 | # CONFIG_SH_FPU_EMU is not set |
191 | # CONFIG_SH_DSP is not set | ||
192 | CONFIG_SH_ADC=y | 165 | CONFIG_SH_ADC=y |
193 | CONFIG_CPU_HAS_INTEVT=y | 166 | CONFIG_CPU_HAS_INTEVT=y |
194 | CONFIG_CPU_HAS_PINT_IRQ=y | ||
195 | CONFIG_CPU_HAS_SR_RB=y | 167 | CONFIG_CPU_HAS_SR_RB=y |
196 | 168 | ||
197 | # | 169 | # |
198 | # Timer support | 170 | # Board support |
171 | # | ||
172 | # CONFIG_SH_SOLUTION_ENGINE is not set | ||
173 | CONFIG_SH_HP6XX=y | ||
174 | |||
175 | # | ||
176 | # Timer and clock configuration | ||
199 | # | 177 | # |
200 | CONFIG_SH_TMU=y | 178 | CONFIG_SH_TMU=y |
179 | CONFIG_SH_TIMER_IRQ=16 | ||
201 | CONFIG_SH_PCLK_FREQ=22110000 | 180 | CONFIG_SH_PCLK_FREQ=22110000 |
181 | # CONFIG_TICK_ONESHOT is not set | ||
182 | # CONFIG_NO_HZ is not set | ||
183 | # CONFIG_HIGH_RES_TIMERS is not set | ||
202 | 184 | ||
203 | # | 185 | # |
204 | # CPU Frequency scaling | 186 | # CPU Frequency scaling |
@@ -208,6 +190,7 @@ CONFIG_SH_PCLK_FREQ=22110000 | |||
208 | # | 190 | # |
209 | # DMA support | 191 | # DMA support |
210 | # | 192 | # |
193 | CONFIG_SH_DMA_API=y | ||
211 | CONFIG_SH_DMA=y | 194 | CONFIG_SH_DMA=y |
212 | CONFIG_NR_ONCHIP_DMA_CHANNELS=4 | 195 | CONFIG_NR_ONCHIP_DMA_CHANNELS=4 |
213 | # CONFIG_NR_DMA_CHANNELS_BOOL is not set | 196 | # CONFIG_NR_DMA_CHANNELS_BOOL is not set |
@@ -223,14 +206,21 @@ CONFIG_HD64461_IOBASE=0xb0000000 | |||
223 | CONFIG_HD64461_ENABLER=y | 206 | CONFIG_HD64461_ENABLER=y |
224 | 207 | ||
225 | # | 208 | # |
209 | # Additional SuperH Device Drivers | ||
210 | # | ||
211 | # CONFIG_HEARTBEAT is not set | ||
212 | # CONFIG_PUSH_SWITCH is not set | ||
213 | |||
214 | # | ||
226 | # Kernel features | 215 | # Kernel features |
227 | # | 216 | # |
228 | # CONFIG_HZ_100 is not set | 217 | # CONFIG_HZ_100 is not set |
229 | CONFIG_HZ_250=y | 218 | CONFIG_HZ_250=y |
219 | # CONFIG_HZ_300 is not set | ||
230 | # CONFIG_HZ_1000 is not set | 220 | # CONFIG_HZ_1000 is not set |
231 | CONFIG_HZ=250 | 221 | CONFIG_HZ=250 |
232 | # CONFIG_KEXEC is not set | 222 | # CONFIG_KEXEC is not set |
233 | # CONFIG_SMP is not set | 223 | # CONFIG_CRASH_DUMP is not set |
234 | CONFIG_PREEMPT_NONE=y | 224 | CONFIG_PREEMPT_NONE=y |
235 | # CONFIG_PREEMPT_VOLUNTARY is not set | 225 | # CONFIG_PREEMPT_VOLUNTARY is not set |
236 | # CONFIG_PREEMPT is not set | 226 | # CONFIG_PREEMPT is not set |
@@ -240,14 +230,13 @@ CONFIG_PREEMPT_NONE=y | |||
240 | # | 230 | # |
241 | CONFIG_ZERO_PAGE_OFFSET=0x00001000 | 231 | CONFIG_ZERO_PAGE_OFFSET=0x00001000 |
242 | CONFIG_BOOT_LINK_OFFSET=0x00800000 | 232 | CONFIG_BOOT_LINK_OFFSET=0x00800000 |
243 | # CONFIG_UBC_WAKEUP is not set | ||
244 | # CONFIG_CMDLINE_BOOL is not set | 233 | # CONFIG_CMDLINE_BOOL is not set |
245 | 234 | ||
246 | # | 235 | # |
247 | # Bus options | 236 | # Bus options |
248 | # | 237 | # |
249 | CONFIG_ISA=y | 238 | CONFIG_ISA=y |
250 | # CONFIG_PCI is not set | 239 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
251 | 240 | ||
252 | # | 241 | # |
253 | # PCCARD (PCMCIA/CardBus) support | 242 | # PCCARD (PCMCIA/CardBus) support |
@@ -266,14 +255,9 @@ CONFIG_PCMCIA_IOCTL=y | |||
266 | CONFIG_PCMCIA_PROBE=y | 255 | CONFIG_PCMCIA_PROBE=y |
267 | 256 | ||
268 | # | 257 | # |
269 | # PCI Hotplug Support | ||
270 | # | ||
271 | |||
272 | # | ||
273 | # Executable file formats | 258 | # Executable file formats |
274 | # | 259 | # |
275 | CONFIG_BINFMT_ELF=y | 260 | CONFIG_BINFMT_ELF=y |
276 | # CONFIG_BINFMT_FLAT is not set | ||
277 | # CONFIG_BINFMT_MISC is not set | 261 | # CONFIG_BINFMT_MISC is not set |
278 | 262 | ||
279 | # | 263 | # |
@@ -282,8 +266,9 @@ CONFIG_BINFMT_ELF=y | |||
282 | CONFIG_PM=y | 266 | CONFIG_PM=y |
283 | CONFIG_PM_LEGACY=y | 267 | CONFIG_PM_LEGACY=y |
284 | # CONFIG_PM_DEBUG is not set | 268 | # CONFIG_PM_DEBUG is not set |
285 | # CONFIG_PM_SYSFS_DEPRECATED is not set | 269 | CONFIG_PM_SLEEP=y |
286 | CONFIG_APM=y | 270 | CONFIG_SUSPEND=y |
271 | CONFIG_APM_EMULATION=y | ||
287 | 272 | ||
288 | # | 273 | # |
289 | # Networking | 274 | # Networking |
@@ -301,109 +286,76 @@ CONFIG_APM=y | |||
301 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 286 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
302 | CONFIG_FW_LOADER=y | 287 | CONFIG_FW_LOADER=y |
303 | # CONFIG_SYS_HYPERVISOR is not set | 288 | # CONFIG_SYS_HYPERVISOR is not set |
304 | |||
305 | # | ||
306 | # Connector - unified userspace <-> kernelspace linker | ||
307 | # | ||
308 | |||
309 | # | ||
310 | # Memory Technology Devices (MTD) | ||
311 | # | ||
312 | # CONFIG_MTD is not set | 289 | # CONFIG_MTD is not set |
313 | |||
314 | # | ||
315 | # Parallel port support | ||
316 | # | ||
317 | # CONFIG_PARPORT is not set | 290 | # CONFIG_PARPORT is not set |
318 | |||
319 | # | ||
320 | # Plug and Play support | ||
321 | # | ||
322 | # CONFIG_PNP is not set | 291 | # CONFIG_PNP is not set |
323 | 292 | CONFIG_BLK_DEV=y | |
324 | # | ||
325 | # Block devices | ||
326 | # | ||
327 | # CONFIG_BLK_DEV_COW_COMMON is not set | 293 | # CONFIG_BLK_DEV_COW_COMMON is not set |
328 | # CONFIG_BLK_DEV_LOOP is not set | 294 | # CONFIG_BLK_DEV_LOOP is not set |
329 | CONFIG_BLK_DEV_RAM=y | 295 | # CONFIG_BLK_DEV_RAM is not set |
330 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
331 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
332 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
333 | CONFIG_BLK_DEV_INITRD=y | ||
334 | # CONFIG_CDROM_PKTCDVD is not set | 296 | # CONFIG_CDROM_PKTCDVD is not set |
335 | 297 | CONFIG_MISC_DEVICES=y | |
336 | # | 298 | # CONFIG_EEPROM_93CX6 is not set |
337 | # ATA/ATAPI/MFM/RLL support | 299 | # CONFIG_IDE is not set |
338 | # | ||
339 | CONFIG_IDE=y | ||
340 | CONFIG_IDE_MAX_HWIFS=4 | ||
341 | CONFIG_BLK_DEV_IDE=y | ||
342 | |||
343 | # | ||
344 | # Please see Documentation/ide.txt for help/info on IDE drives | ||
345 | # | ||
346 | # CONFIG_BLK_DEV_IDE_SATA is not set | ||
347 | CONFIG_BLK_DEV_IDEDISK=y | ||
348 | # CONFIG_IDEDISK_MULTI_MODE is not set | ||
349 | CONFIG_BLK_DEV_IDECS=y | ||
350 | # CONFIG_BLK_DEV_IDECD is not set | ||
351 | # CONFIG_BLK_DEV_IDETAPE is not set | ||
352 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | ||
353 | # CONFIG_IDE_TASK_IOCTL is not set | ||
354 | |||
355 | # | ||
356 | # IDE chipset support/bugfixes | ||
357 | # | ||
358 | CONFIG_IDE_GENERIC=y | ||
359 | # CONFIG_IDE_ARM is not set | ||
360 | # CONFIG_IDE_CHIPSETS is not set | ||
361 | # CONFIG_BLK_DEV_IDEDMA is not set | ||
362 | # CONFIG_IDEDMA_AUTO is not set | ||
363 | # CONFIG_BLK_DEV_HD is not set | ||
364 | 300 | ||
365 | # | 301 | # |
366 | # SCSI device support | 302 | # SCSI device support |
367 | # | 303 | # |
368 | # CONFIG_RAID_ATTRS is not set | 304 | # CONFIG_RAID_ATTRS is not set |
369 | # CONFIG_SCSI is not set | 305 | CONFIG_SCSI=y |
306 | CONFIG_SCSI_DMA=y | ||
307 | # CONFIG_SCSI_TGT is not set | ||
370 | # CONFIG_SCSI_NETLINK is not set | 308 | # CONFIG_SCSI_NETLINK is not set |
371 | 309 | CONFIG_SCSI_PROC_FS=y | |
372 | # | 310 | |
373 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | 311 | # |
374 | # | 312 | # SCSI support type (disk, tape, CD-ROM) |
375 | # CONFIG_ATA is not set | 313 | # |
376 | 314 | CONFIG_BLK_DEV_SD=y | |
377 | # | 315 | # CONFIG_CHR_DEV_ST is not set |
378 | # Old CD-ROM drivers (not SCSI, not IDE) | 316 | # CONFIG_CHR_DEV_OSST is not set |
379 | # | 317 | # CONFIG_BLK_DEV_SR is not set |
380 | # CONFIG_CD_NO_IDESCSI is not set | 318 | # CONFIG_CHR_DEV_SG is not set |
381 | 319 | # CONFIG_CHR_DEV_SCH is not set | |
382 | # | 320 | |
383 | # Multi-device support (RAID and LVM) | 321 | # |
384 | # | 322 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs |
323 | # | ||
324 | # CONFIG_SCSI_MULTI_LUN is not set | ||
325 | # CONFIG_SCSI_CONSTANTS is not set | ||
326 | # CONFIG_SCSI_LOGGING is not set | ||
327 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
328 | |||
329 | # | ||
330 | # SCSI Transports | ||
331 | # | ||
332 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
333 | # CONFIG_SCSI_FC_ATTRS is not set | ||
334 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
335 | CONFIG_SCSI_LOWLEVEL=y | ||
336 | # CONFIG_SCSI_AHA152X is not set | ||
337 | # CONFIG_SCSI_AIC7XXX_OLD is not set | ||
338 | # CONFIG_SCSI_IN2000 is not set | ||
339 | # CONFIG_SCSI_DTC3280 is not set | ||
340 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | ||
341 | # CONFIG_SCSI_GENERIC_NCR5380 is not set | ||
342 | # CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set | ||
343 | # CONFIG_SCSI_NCR53C406A is not set | ||
344 | # CONFIG_SCSI_PAS16 is not set | ||
345 | # CONFIG_SCSI_PSI240I is not set | ||
346 | # CONFIG_SCSI_QLOGIC_FAS is not set | ||
347 | # CONFIG_SCSI_SYM53C416 is not set | ||
348 | # CONFIG_SCSI_T128 is not set | ||
349 | # CONFIG_SCSI_DEBUG is not set | ||
350 | # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set | ||
351 | CONFIG_ATA=y | ||
352 | # CONFIG_ATA_NONSTANDARD is not set | ||
353 | # CONFIG_PATA_LEGACY is not set | ||
354 | # CONFIG_PATA_PCMCIA is not set | ||
355 | # CONFIG_PATA_QDI is not set | ||
356 | # CONFIG_PATA_WINBOND_VLB is not set | ||
357 | CONFIG_PATA_PLATFORM=y | ||
385 | # CONFIG_MD is not set | 358 | # CONFIG_MD is not set |
386 | |||
387 | # | ||
388 | # Fusion MPT device support | ||
389 | # | ||
390 | # CONFIG_FUSION is not set | ||
391 | |||
392 | # | ||
393 | # IEEE 1394 (FireWire) support | ||
394 | # | ||
395 | |||
396 | # | ||
397 | # I2O device support | ||
398 | # | ||
399 | |||
400 | # | ||
401 | # ISDN subsystem | ||
402 | # | ||
403 | |||
404 | # | ||
405 | # Telephony Support | ||
406 | # | ||
407 | # CONFIG_PHONE is not set | 359 | # CONFIG_PHONE is not set |
408 | 360 | ||
409 | # | 361 | # |
@@ -411,19 +363,17 @@ CONFIG_IDE_GENERIC=y | |||
411 | # | 363 | # |
412 | CONFIG_INPUT=y | 364 | CONFIG_INPUT=y |
413 | # CONFIG_INPUT_FF_MEMLESS is not set | 365 | # CONFIG_INPUT_FF_MEMLESS is not set |
366 | CONFIG_INPUT_POLLDEV=y | ||
414 | 367 | ||
415 | # | 368 | # |
416 | # Userland interfaces | 369 | # Userland interfaces |
417 | # | 370 | # |
418 | CONFIG_INPUT_MOUSEDEV=y | 371 | # CONFIG_INPUT_MOUSEDEV is not set |
419 | CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
420 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
421 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
422 | # CONFIG_INPUT_JOYDEV is not set | 372 | # CONFIG_INPUT_JOYDEV is not set |
423 | CONFIG_INPUT_TSDEV=y | 373 | CONFIG_INPUT_TSDEV=y |
424 | CONFIG_INPUT_TSDEV_SCREEN_X=240 | 374 | CONFIG_INPUT_TSDEV_SCREEN_X=240 |
425 | CONFIG_INPUT_TSDEV_SCREEN_Y=320 | 375 | CONFIG_INPUT_TSDEV_SCREEN_Y=320 |
426 | # CONFIG_INPUT_EVDEV is not set | 376 | CONFIG_INPUT_EVDEV=y |
427 | # CONFIG_INPUT_EVBUG is not set | 377 | # CONFIG_INPUT_EVBUG is not set |
428 | 378 | ||
429 | # | 379 | # |
@@ -436,9 +386,12 @@ CONFIG_INPUT_KEYBOARD=y | |||
436 | # CONFIG_KEYBOARD_XTKBD is not set | 386 | # CONFIG_KEYBOARD_XTKBD is not set |
437 | # CONFIG_KEYBOARD_NEWTON is not set | 387 | # CONFIG_KEYBOARD_NEWTON is not set |
438 | # CONFIG_KEYBOARD_STOWAWAY is not set | 388 | # CONFIG_KEYBOARD_STOWAWAY is not set |
389 | CONFIG_KEYBOARD_HP6XX=y | ||
439 | # CONFIG_INPUT_MOUSE is not set | 390 | # CONFIG_INPUT_MOUSE is not set |
440 | # CONFIG_INPUT_JOYSTICK is not set | 391 | # CONFIG_INPUT_JOYSTICK is not set |
392 | # CONFIG_INPUT_TABLET is not set | ||
441 | CONFIG_INPUT_TOUCHSCREEN=y | 393 | CONFIG_INPUT_TOUCHSCREEN=y |
394 | # CONFIG_TOUCHSCREEN_FUJITSU is not set | ||
442 | # CONFIG_TOUCHSCREEN_GUNZE is not set | 395 | # CONFIG_TOUCHSCREEN_GUNZE is not set |
443 | # CONFIG_TOUCHSCREEN_ELO is not set | 396 | # CONFIG_TOUCHSCREEN_ELO is not set |
444 | # CONFIG_TOUCHSCREEN_MTOUCH is not set | 397 | # CONFIG_TOUCHSCREEN_MTOUCH is not set |
@@ -447,6 +400,7 @@ CONFIG_TOUCHSCREEN_HP600=y | |||
447 | # CONFIG_TOUCHSCREEN_PENMOUNT is not set | 400 | # CONFIG_TOUCHSCREEN_PENMOUNT is not set |
448 | # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set | 401 | # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set |
449 | # CONFIG_TOUCHSCREEN_TOUCHWIN is not set | 402 | # CONFIG_TOUCHSCREEN_TOUCHWIN is not set |
403 | # CONFIG_TOUCHSCREEN_UCB1400 is not set | ||
450 | # CONFIG_INPUT_MISC is not set | 404 | # CONFIG_INPUT_MISC is not set |
451 | 405 | ||
452 | # | 406 | # |
@@ -476,46 +430,29 @@ CONFIG_HW_CONSOLE=y | |||
476 | # | 430 | # |
477 | # Non-8250 serial port support | 431 | # Non-8250 serial port support |
478 | # | 432 | # |
479 | # CONFIG_SERIAL_SH_SCI is not set | 433 | CONFIG_SERIAL_SH_SCI=y |
434 | CONFIG_SERIAL_SH_SCI_NR_UARTS=3 | ||
435 | CONFIG_SERIAL_SH_SCI_CONSOLE=y | ||
436 | CONFIG_SERIAL_CORE=y | ||
437 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
480 | CONFIG_UNIX98_PTYS=y | 438 | CONFIG_UNIX98_PTYS=y |
481 | CONFIG_LEGACY_PTYS=y | 439 | CONFIG_LEGACY_PTYS=y |
482 | CONFIG_LEGACY_PTY_COUNT=256 | 440 | CONFIG_LEGACY_PTY_COUNT=64 |
483 | |||
484 | # | ||
485 | # IPMI | ||
486 | # | ||
487 | # CONFIG_IPMI_HANDLER is not set | 441 | # CONFIG_IPMI_HANDLER is not set |
488 | |||
489 | # | ||
490 | # Watchdog Cards | ||
491 | # | ||
492 | # CONFIG_WATCHDOG is not set | 442 | # CONFIG_WATCHDOG is not set |
493 | CONFIG_HW_RANDOM=y | 443 | CONFIG_HW_RANDOM=y |
494 | # CONFIG_GEN_RTC is not set | ||
495 | # CONFIG_DTLK is not set | 444 | # CONFIG_DTLK is not set |
496 | # CONFIG_R3964 is not set | 445 | # CONFIG_R3964 is not set |
497 | 446 | ||
498 | # | 447 | # |
499 | # Ftape, the floppy tape device driver | ||
500 | # | ||
501 | |||
502 | # | ||
503 | # PCMCIA character devices | 448 | # PCMCIA character devices |
504 | # | 449 | # |
505 | # CONFIG_SYNCLINK_CS is not set | 450 | # CONFIG_SYNCLINK_CS is not set |
506 | # CONFIG_CARDMAN_4000 is not set | 451 | # CONFIG_CARDMAN_4000 is not set |
507 | # CONFIG_CARDMAN_4040 is not set | 452 | # CONFIG_CARDMAN_4040 is not set |
508 | # CONFIG_RAW_DRIVER is not set | 453 | # CONFIG_RAW_DRIVER is not set |
509 | |||
510 | # | ||
511 | # TPM devices | ||
512 | # | ||
513 | # CONFIG_TCG_TPM is not set | 454 | # CONFIG_TCG_TPM is not set |
514 | # CONFIG_TELCLOCK is not set | 455 | CONFIG_DEVPORT=y |
515 | |||
516 | # | ||
517 | # I2C support | ||
518 | # | ||
519 | # CONFIG_I2C is not set | 456 | # CONFIG_I2C is not set |
520 | 457 | ||
521 | # | 458 | # |
@@ -523,48 +460,55 @@ CONFIG_HW_RANDOM=y | |||
523 | # | 460 | # |
524 | # CONFIG_SPI is not set | 461 | # CONFIG_SPI is not set |
525 | # CONFIG_SPI_MASTER is not set | 462 | # CONFIG_SPI_MASTER is not set |
463 | # CONFIG_W1 is not set | ||
464 | # CONFIG_POWER_SUPPLY is not set | ||
465 | # CONFIG_HWMON is not set | ||
526 | 466 | ||
527 | # | 467 | # |
528 | # Dallas's 1-wire bus | 468 | # Multifunction device drivers |
529 | # | ||
530 | |||
531 | # | ||
532 | # Hardware Monitoring support | ||
533 | # | ||
534 | CONFIG_HWMON=y | ||
535 | # CONFIG_HWMON_VID is not set | ||
536 | # CONFIG_SENSORS_ABITUGURU is not set | ||
537 | # CONFIG_SENSORS_F71805F is not set | ||
538 | # CONFIG_SENSORS_VT1211 is not set | ||
539 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
540 | |||
541 | # | ||
542 | # Misc devices | ||
543 | # | 469 | # |
470 | # CONFIG_MFD_SM501 is not set | ||
544 | 471 | ||
545 | # | 472 | # |
546 | # Multimedia devices | 473 | # Multimedia devices |
547 | # | 474 | # |
548 | # CONFIG_VIDEO_DEV is not set | 475 | # CONFIG_VIDEO_DEV is not set |
549 | CONFIG_VIDEO_V4L2=y | 476 | # CONFIG_DAB is not set |
550 | 477 | ||
551 | # | 478 | # |
552 | # Digital Video Broadcasting Devices | 479 | # Graphics support |
553 | # | 480 | # |
481 | CONFIG_BACKLIGHT_LCD_SUPPORT=y | ||
482 | CONFIG_LCD_CLASS_DEVICE=y | ||
483 | CONFIG_BACKLIGHT_CLASS_DEVICE=y | ||
484 | CONFIG_BACKLIGHT_HP680=y | ||
554 | 485 | ||
555 | # | 486 | # |
556 | # Graphics support | 487 | # Display device support |
557 | # | 488 | # |
558 | CONFIG_FIRMWARE_EDID=y | 489 | # CONFIG_DISPLAY_SUPPORT is not set |
490 | # CONFIG_VGASTATE is not set | ||
491 | CONFIG_VIDEO_OUTPUT_CONTROL=y | ||
559 | CONFIG_FB=y | 492 | CONFIG_FB=y |
493 | CONFIG_FIRMWARE_EDID=y | ||
494 | # CONFIG_FB_DDC is not set | ||
560 | CONFIG_FB_CFB_FILLRECT=y | 495 | CONFIG_FB_CFB_FILLRECT=y |
561 | CONFIG_FB_CFB_COPYAREA=y | 496 | CONFIG_FB_CFB_COPYAREA=y |
562 | CONFIG_FB_CFB_IMAGEBLIT=y | 497 | CONFIG_FB_CFB_IMAGEBLIT=y |
498 | # CONFIG_FB_SYS_FILLRECT is not set | ||
499 | # CONFIG_FB_SYS_COPYAREA is not set | ||
500 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
501 | # CONFIG_FB_SYS_FOPS is not set | ||
502 | CONFIG_FB_DEFERRED_IO=y | ||
503 | # CONFIG_FB_SVGALIB is not set | ||
563 | # CONFIG_FB_MACMODES is not set | 504 | # CONFIG_FB_MACMODES is not set |
564 | # CONFIG_FB_BACKLIGHT is not set | 505 | # CONFIG_FB_BACKLIGHT is not set |
565 | # CONFIG_FB_MODE_HELPERS is not set | 506 | # CONFIG_FB_MODE_HELPERS is not set |
566 | # CONFIG_FB_TILEBLITTING is not set | 507 | # CONFIG_FB_TILEBLITTING is not set |
567 | # CONFIG_FB_EPSON1355 is not set | 508 | |
509 | # | ||
510 | # Frame buffer hardware drivers | ||
511 | # | ||
568 | # CONFIG_FB_S1D13XXX is not set | 512 | # CONFIG_FB_S1D13XXX is not set |
569 | CONFIG_FB_HIT=y | 513 | CONFIG_FB_HIT=y |
570 | # CONFIG_FB_VIRTUAL is not set | 514 | # CONFIG_FB_VIRTUAL is not set |
@@ -575,6 +519,7 @@ CONFIG_FB_HIT=y | |||
575 | # CONFIG_MDA_CONSOLE is not set | 519 | # CONFIG_MDA_CONSOLE is not set |
576 | CONFIG_DUMMY_CONSOLE=y | 520 | CONFIG_DUMMY_CONSOLE=y |
577 | CONFIG_FRAMEBUFFER_CONSOLE=y | 521 | CONFIG_FRAMEBUFFER_CONSOLE=y |
522 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
578 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | 523 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set |
579 | CONFIG_FONTS=y | 524 | CONFIG_FONTS=y |
580 | # CONFIG_FONT_8x8 is not set | 525 | # CONFIG_FONT_8x8 is not set |
@@ -587,79 +532,49 @@ CONFIG_FONT_PEARL_8x8=y | |||
587 | # CONFIG_FONT_SUN8x16 is not set | 532 | # CONFIG_FONT_SUN8x16 is not set |
588 | # CONFIG_FONT_SUN12x22 is not set | 533 | # CONFIG_FONT_SUN12x22 is not set |
589 | # CONFIG_FONT_10x18 is not set | 534 | # CONFIG_FONT_10x18 is not set |
590 | |||
591 | # | ||
592 | # Logo configuration | ||
593 | # | ||
594 | # CONFIG_LOGO is not set | 535 | # CONFIG_LOGO is not set |
595 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
596 | 536 | ||
597 | # | 537 | # |
598 | # Sound | 538 | # Sound |
599 | # | 539 | # |
600 | CONFIG_SOUND=y | 540 | # CONFIG_SOUND is not set |
601 | 541 | # CONFIG_HID_SUPPORT is not set | |
602 | # | 542 | # CONFIG_USB_SUPPORT is not set |
603 | # Advanced Linux Sound Architecture | ||
604 | # | ||
605 | # CONFIG_SND is not set | ||
606 | |||
607 | # | ||
608 | # Open Sound System | ||
609 | # | ||
610 | CONFIG_SOUND_PRIME=y | ||
611 | # CONFIG_OSS_OBSOLETE_DRIVER is not set | ||
612 | # CONFIG_SOUND_MSNDCLAS is not set | ||
613 | # CONFIG_SOUND_MSNDPIN is not set | ||
614 | CONFIG_SOUND_SH_DAC_AUDIO=y | ||
615 | CONFIG_SOUND_SH_DAC_AUDIO_CHANNEL=1 | ||
616 | |||
617 | # | ||
618 | # USB support | ||
619 | # | ||
620 | # CONFIG_USB_ARCH_HAS_HCD is not set | ||
621 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
622 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
623 | |||
624 | # | ||
625 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
626 | # | ||
627 | |||
628 | # | ||
629 | # USB Gadget Support | ||
630 | # | ||
631 | # CONFIG_USB_GADGET is not set | ||
632 | |||
633 | # | ||
634 | # MMC/SD Card support | ||
635 | # | ||
636 | # CONFIG_MMC is not set | 543 | # CONFIG_MMC is not set |
637 | |||
638 | # | ||
639 | # LED devices | ||
640 | # | ||
641 | # CONFIG_NEW_LEDS is not set | 544 | # CONFIG_NEW_LEDS is not set |
545 | CONFIG_RTC_LIB=y | ||
546 | CONFIG_RTC_CLASS=y | ||
547 | CONFIG_RTC_HCTOSYS=y | ||
548 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
549 | # CONFIG_RTC_DEBUG is not set | ||
642 | 550 | ||
643 | # | 551 | # |
644 | # LED drivers | 552 | # RTC interfaces |
645 | # | ||
646 | |||
647 | # | ||
648 | # LED Triggers | ||
649 | # | 553 | # |
554 | CONFIG_RTC_INTF_SYSFS=y | ||
555 | CONFIG_RTC_INTF_PROC=y | ||
556 | CONFIG_RTC_INTF_DEV=y | ||
557 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
558 | # CONFIG_RTC_DRV_TEST is not set | ||
650 | 559 | ||
651 | # | 560 | # |
652 | # InfiniBand support | 561 | # SPI RTC drivers |
653 | # | 562 | # |
654 | 563 | ||
655 | # | 564 | # |
656 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | 565 | # Platform RTC drivers |
657 | # | 566 | # |
567 | # CONFIG_RTC_DRV_DS1553 is not set | ||
568 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
569 | # CONFIG_RTC_DRV_DS1742 is not set | ||
570 | # CONFIG_RTC_DRV_M48T86 is not set | ||
571 | # CONFIG_RTC_DRV_M48T59 is not set | ||
572 | # CONFIG_RTC_DRV_V3020 is not set | ||
658 | 573 | ||
659 | # | 574 | # |
660 | # Real Time Clock | 575 | # on-CPU RTC drivers |
661 | # | 576 | # |
662 | # CONFIG_RTC_CLASS is not set | 577 | CONFIG_RTC_DRV_SH=y |
663 | 578 | ||
664 | # | 579 | # |
665 | # DMA Engine support | 580 | # DMA Engine support |
@@ -675,16 +590,23 @@ CONFIG_SOUND_SH_DAC_AUDIO_CHANNEL=1 | |||
675 | # | 590 | # |
676 | 591 | ||
677 | # | 592 | # |
593 | # Userspace I/O | ||
594 | # | ||
595 | # CONFIG_UIO is not set | ||
596 | |||
597 | # | ||
678 | # File systems | 598 | # File systems |
679 | # | 599 | # |
680 | CONFIG_EXT2_FS=y | 600 | CONFIG_EXT2_FS=y |
681 | # CONFIG_EXT2_FS_XATTR is not set | 601 | # CONFIG_EXT2_FS_XATTR is not set |
682 | # CONFIG_EXT2_FS_XIP is not set | 602 | # CONFIG_EXT2_FS_XIP is not set |
683 | # CONFIG_EXT3_FS is not set | 603 | # CONFIG_EXT3_FS is not set |
604 | # CONFIG_EXT4DEV_FS is not set | ||
684 | # CONFIG_REISERFS_FS is not set | 605 | # CONFIG_REISERFS_FS is not set |
685 | # CONFIG_JFS_FS is not set | 606 | # CONFIG_JFS_FS is not set |
686 | # CONFIG_FS_POSIX_ACL is not set | 607 | # CONFIG_FS_POSIX_ACL is not set |
687 | # CONFIG_XFS_FS is not set | 608 | # CONFIG_XFS_FS is not set |
609 | # CONFIG_GFS2_FS is not set | ||
688 | # CONFIG_MINIX_FS is not set | 610 | # CONFIG_MINIX_FS is not set |
689 | # CONFIG_ROMFS_FS is not set | 611 | # CONFIG_ROMFS_FS is not set |
690 | CONFIG_INOTIFY=y | 612 | CONFIG_INOTIFY=y |
@@ -705,7 +627,7 @@ CONFIG_DNOTIFY=y | |||
705 | # DOS/FAT/NT Filesystems | 627 | # DOS/FAT/NT Filesystems |
706 | # | 628 | # |
707 | CONFIG_FAT_FS=y | 629 | CONFIG_FAT_FS=y |
708 | # CONFIG_MSDOS_FS is not set | 630 | CONFIG_MSDOS_FS=y |
709 | CONFIG_VFAT_FS=y | 631 | CONFIG_VFAT_FS=y |
710 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | 632 | CONFIG_FAT_DEFAULT_CODEPAGE=437 |
711 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | 633 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" |
@@ -755,7 +677,7 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
755 | # CONFIG_NLS_CODEPAGE_437 is not set | 677 | # CONFIG_NLS_CODEPAGE_437 is not set |
756 | # CONFIG_NLS_CODEPAGE_737 is not set | 678 | # CONFIG_NLS_CODEPAGE_737 is not set |
757 | # CONFIG_NLS_CODEPAGE_775 is not set | 679 | # CONFIG_NLS_CODEPAGE_775 is not set |
758 | # CONFIG_NLS_CODEPAGE_850 is not set | 680 | CONFIG_NLS_CODEPAGE_850=y |
759 | # CONFIG_NLS_CODEPAGE_852 is not set | 681 | # CONFIG_NLS_CODEPAGE_852 is not set |
760 | # CONFIG_NLS_CODEPAGE_855 is not set | 682 | # CONFIG_NLS_CODEPAGE_855 is not set |
761 | # CONFIG_NLS_CODEPAGE_857 is not set | 683 | # CONFIG_NLS_CODEPAGE_857 is not set |
@@ -799,34 +721,73 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
799 | # | 721 | # |
800 | # Kernel hacking | 722 | # Kernel hacking |
801 | # | 723 | # |
724 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
802 | # CONFIG_PRINTK_TIME is not set | 725 | # CONFIG_PRINTK_TIME is not set |
803 | CONFIG_ENABLE_MUST_CHECK=y | 726 | CONFIG_ENABLE_MUST_CHECK=y |
804 | # CONFIG_MAGIC_SYSRQ is not set | 727 | # CONFIG_MAGIC_SYSRQ is not set |
805 | # CONFIG_UNUSED_SYMBOLS is not set | 728 | # CONFIG_UNUSED_SYMBOLS is not set |
729 | # CONFIG_DEBUG_FS is not set | ||
730 | # CONFIG_HEADERS_CHECK is not set | ||
806 | # CONFIG_DEBUG_KERNEL is not set | 731 | # CONFIG_DEBUG_KERNEL is not set |
807 | CONFIG_LOG_BUF_SHIFT=14 | ||
808 | # CONFIG_DEBUG_BUGVERBOSE is not set | 732 | # CONFIG_DEBUG_BUGVERBOSE is not set |
809 | # CONFIG_DEBUG_FS is not set | ||
810 | # CONFIG_UNWIND_INFO is not set | ||
811 | # CONFIG_SH_STANDARD_BIOS is not set | 733 | # CONFIG_SH_STANDARD_BIOS is not set |
812 | # CONFIG_KGDB is not set | 734 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
735 | # CONFIG_SH_KGDB is not set | ||
813 | 736 | ||
814 | # | 737 | # |
815 | # Security options | 738 | # Security options |
816 | # | 739 | # |
817 | # CONFIG_KEYS is not set | 740 | # CONFIG_KEYS is not set |
818 | # CONFIG_SECURITY is not set | 741 | # CONFIG_SECURITY is not set |
819 | 742 | CONFIG_CRYPTO=y | |
820 | # | 743 | CONFIG_CRYPTO_ALGAPI=y |
821 | # Cryptographic options | 744 | CONFIG_CRYPTO_BLKCIPHER=y |
822 | # | 745 | CONFIG_CRYPTO_MANAGER=y |
823 | # CONFIG_CRYPTO is not set | 746 | # CONFIG_CRYPTO_HMAC is not set |
747 | # CONFIG_CRYPTO_XCBC is not set | ||
748 | # CONFIG_CRYPTO_NULL is not set | ||
749 | # CONFIG_CRYPTO_MD4 is not set | ||
750 | CONFIG_CRYPTO_MD5=y | ||
751 | # CONFIG_CRYPTO_SHA1 is not set | ||
752 | # CONFIG_CRYPTO_SHA256 is not set | ||
753 | # CONFIG_CRYPTO_SHA512 is not set | ||
754 | # CONFIG_CRYPTO_WP512 is not set | ||
755 | # CONFIG_CRYPTO_TGR192 is not set | ||
756 | # CONFIG_CRYPTO_GF128MUL is not set | ||
757 | CONFIG_CRYPTO_ECB=y | ||
758 | CONFIG_CRYPTO_CBC=y | ||
759 | CONFIG_CRYPTO_PCBC=y | ||
760 | # CONFIG_CRYPTO_LRW is not set | ||
761 | # CONFIG_CRYPTO_CRYPTD is not set | ||
762 | # CONFIG_CRYPTO_DES is not set | ||
763 | # CONFIG_CRYPTO_FCRYPT is not set | ||
764 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
765 | # CONFIG_CRYPTO_TWOFISH is not set | ||
766 | # CONFIG_CRYPTO_SERPENT is not set | ||
767 | # CONFIG_CRYPTO_AES is not set | ||
768 | # CONFIG_CRYPTO_CAST5 is not set | ||
769 | # CONFIG_CRYPTO_CAST6 is not set | ||
770 | # CONFIG_CRYPTO_TEA is not set | ||
771 | # CONFIG_CRYPTO_ARC4 is not set | ||
772 | # CONFIG_CRYPTO_KHAZAD is not set | ||
773 | # CONFIG_CRYPTO_ANUBIS is not set | ||
774 | # CONFIG_CRYPTO_DEFLATE is not set | ||
775 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
776 | # CONFIG_CRYPTO_CRC32C is not set | ||
777 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
778 | # CONFIG_CRYPTO_HW is not set | ||
824 | 779 | ||
825 | # | 780 | # |
826 | # Library routines | 781 | # Library routines |
827 | # | 782 | # |
783 | CONFIG_BITREVERSE=y | ||
828 | # CONFIG_CRC_CCITT is not set | 784 | # CONFIG_CRC_CCITT is not set |
829 | # CONFIG_CRC16 is not set | 785 | CONFIG_CRC16=y |
786 | # CONFIG_CRC_ITU_T is not set | ||
830 | CONFIG_CRC32=y | 787 | CONFIG_CRC32=y |
788 | # CONFIG_CRC7 is not set | ||
831 | # CONFIG_LIBCRC32C is not set | 789 | # CONFIG_LIBCRC32C is not set |
832 | CONFIG_PLIST=y | 790 | CONFIG_PLIST=y |
791 | CONFIG_HAS_IOMEM=y | ||
792 | CONFIG_HAS_IOPORT=y | ||
793 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/sh/configs/magicpanelr2_defconfig b/arch/sh/configs/magicpanelr2_defconfig new file mode 100644 index 000000000000..f8398a5f10ee --- /dev/null +++ b/arch/sh/configs/magicpanelr2_defconfig | |||
@@ -0,0 +1,925 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.23-rc2 | ||
4 | # Fri Aug 17 12:15:16 2007 | ||
5 | # | ||
6 | CONFIG_SUPERH=y | ||
7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
8 | CONFIG_GENERIC_BUG=y | ||
9 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
10 | CONFIG_GENERIC_HWEIGHT=y | ||
11 | CONFIG_GENERIC_HARDIRQS=y | ||
12 | CONFIG_GENERIC_IRQ_PROBE=y | ||
13 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
14 | CONFIG_GENERIC_TIME=y | ||
15 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
16 | CONFIG_STACKTRACE_SUPPORT=y | ||
17 | CONFIG_LOCKDEP_SUPPORT=y | ||
18 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
19 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
20 | CONFIG_ARCH_NO_VIRT_TO_BUS=y | ||
21 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
22 | |||
23 | # | ||
24 | # General setup | ||
25 | # | ||
26 | CONFIG_EXPERIMENTAL=y | ||
27 | CONFIG_BROKEN_ON_SMP=y | ||
28 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
29 | CONFIG_LOCALVERSION="" | ||
30 | # CONFIG_LOCALVERSION_AUTO is not set | ||
31 | CONFIG_SWAP=y | ||
32 | CONFIG_SYSVIPC=y | ||
33 | CONFIG_SYSVIPC_SYSCTL=y | ||
34 | CONFIG_POSIX_MQUEUE=y | ||
35 | CONFIG_BSD_PROCESS_ACCT=y | ||
36 | CONFIG_BSD_PROCESS_ACCT_V3=y | ||
37 | # CONFIG_TASKSTATS is not set | ||
38 | # CONFIG_USER_NS is not set | ||
39 | CONFIG_AUDIT=y | ||
40 | # CONFIG_IKCONFIG is not set | ||
41 | CONFIG_LOG_BUF_SHIFT=17 | ||
42 | CONFIG_SYSFS_DEPRECATED=y | ||
43 | CONFIG_RELAY=y | ||
44 | CONFIG_BLK_DEV_INITRD=y | ||
45 | CONFIG_INITRAMFS_SOURCE="" | ||
46 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
47 | CONFIG_SYSCTL=y | ||
48 | CONFIG_EMBEDDED=y | ||
49 | CONFIG_UID16=y | ||
50 | CONFIG_SYSCTL_SYSCALL=y | ||
51 | CONFIG_KALLSYMS=y | ||
52 | CONFIG_KALLSYMS_ALL=y | ||
53 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
54 | CONFIG_HOTPLUG=y | ||
55 | CONFIG_PRINTK=y | ||
56 | CONFIG_BUG=y | ||
57 | CONFIG_ELF_CORE=y | ||
58 | CONFIG_BASE_FULL=y | ||
59 | CONFIG_FUTEX=y | ||
60 | CONFIG_ANON_INODES=y | ||
61 | CONFIG_EPOLL=y | ||
62 | CONFIG_SIGNALFD=y | ||
63 | CONFIG_TIMERFD=y | ||
64 | CONFIG_EVENTFD=y | ||
65 | CONFIG_SHMEM=y | ||
66 | CONFIG_VM_EVENT_COUNTERS=y | ||
67 | CONFIG_SLAB=y | ||
68 | # CONFIG_SLUB is not set | ||
69 | # CONFIG_SLOB is not set | ||
70 | CONFIG_RT_MUTEXES=y | ||
71 | # CONFIG_TINY_SHMEM is not set | ||
72 | CONFIG_BASE_SMALL=0 | ||
73 | CONFIG_MODULES=y | ||
74 | CONFIG_MODULE_UNLOAD=y | ||
75 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
76 | CONFIG_MODVERSIONS=y | ||
77 | CONFIG_MODULE_SRCVERSION_ALL=y | ||
78 | CONFIG_KMOD=y | ||
79 | CONFIG_BLOCK=y | ||
80 | # CONFIG_LBD is not set | ||
81 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
82 | # CONFIG_LSF is not set | ||
83 | # CONFIG_BLK_DEV_BSG is not set | ||
84 | |||
85 | # | ||
86 | # IO Schedulers | ||
87 | # | ||
88 | CONFIG_IOSCHED_NOOP=y | ||
89 | # CONFIG_IOSCHED_AS is not set | ||
90 | # CONFIG_IOSCHED_DEADLINE is not set | ||
91 | # CONFIG_IOSCHED_CFQ is not set | ||
92 | # CONFIG_DEFAULT_AS is not set | ||
93 | # CONFIG_DEFAULT_DEADLINE is not set | ||
94 | # CONFIG_DEFAULT_CFQ is not set | ||
95 | CONFIG_DEFAULT_NOOP=y | ||
96 | CONFIG_DEFAULT_IOSCHED="noop" | ||
97 | |||
98 | # | ||
99 | # System type | ||
100 | # | ||
101 | CONFIG_CPU_SH3=y | ||
102 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | ||
103 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | ||
104 | # CONFIG_CPU_SUBTYPE_SH7705 is not set | ||
105 | # CONFIG_CPU_SUBTYPE_SH7706 is not set | ||
106 | # CONFIG_CPU_SUBTYPE_SH7707 is not set | ||
107 | # CONFIG_CPU_SUBTYPE_SH7708 is not set | ||
108 | # CONFIG_CPU_SUBTYPE_SH7709 is not set | ||
109 | # CONFIG_CPU_SUBTYPE_SH7710 is not set | ||
110 | # CONFIG_CPU_SUBTYPE_SH7712 is not set | ||
111 | CONFIG_CPU_SUBTYPE_SH7720=y | ||
112 | # CONFIG_CPU_SUBTYPE_SH7750 is not set | ||
113 | # CONFIG_CPU_SUBTYPE_SH7091 is not set | ||
114 | # CONFIG_CPU_SUBTYPE_SH7750R is not set | ||
115 | # CONFIG_CPU_SUBTYPE_SH7750S is not set | ||
116 | # CONFIG_CPU_SUBTYPE_SH7751 is not set | ||
117 | # CONFIG_CPU_SUBTYPE_SH7751R is not set | ||
118 | # CONFIG_CPU_SUBTYPE_SH7760 is not set | ||
119 | # CONFIG_CPU_SUBTYPE_SH4_202 is not set | ||
120 | # CONFIG_CPU_SUBTYPE_ST40STB1 is not set | ||
121 | # CONFIG_CPU_SUBTYPE_ST40GX1 is not set | ||
122 | # CONFIG_CPU_SUBTYPE_SH7770 is not set | ||
123 | # CONFIG_CPU_SUBTYPE_SH7780 is not set | ||
124 | # CONFIG_CPU_SUBTYPE_SH7785 is not set | ||
125 | # CONFIG_CPU_SUBTYPE_SHX3 is not set | ||
126 | # CONFIG_CPU_SUBTYPE_SH7343 is not set | ||
127 | # CONFIG_CPU_SUBTYPE_SH7722 is not set | ||
128 | |||
129 | # | ||
130 | # Memory management options | ||
131 | # | ||
132 | CONFIG_QUICKLIST=y | ||
133 | CONFIG_MMU=y | ||
134 | CONFIG_PAGE_OFFSET=0x80000000 | ||
135 | CONFIG_MEMORY_START=0x0C000000 | ||
136 | CONFIG_MEMORY_SIZE=0x03F00000 | ||
137 | CONFIG_VSYSCALL=y | ||
138 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
139 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | ||
140 | CONFIG_ARCH_SPARSEMEM_DEFAULT=y | ||
141 | CONFIG_MAX_ACTIVE_REGIONS=1 | ||
142 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
143 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | ||
144 | CONFIG_PAGE_SIZE_4KB=y | ||
145 | # CONFIG_PAGE_SIZE_8KB is not set | ||
146 | # CONFIG_PAGE_SIZE_64KB is not set | ||
147 | CONFIG_SELECT_MEMORY_MODEL=y | ||
148 | CONFIG_FLATMEM_MANUAL=y | ||
149 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
150 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
151 | CONFIG_FLATMEM=y | ||
152 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
153 | CONFIG_SPARSEMEM_STATIC=y | ||
154 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
155 | # CONFIG_RESOURCES_64BIT is not set | ||
156 | CONFIG_ZONE_DMA_FLAG=0 | ||
157 | CONFIG_NR_QUICK=2 | ||
158 | |||
159 | # | ||
160 | # Cache configuration | ||
161 | # | ||
162 | # CONFIG_SH_DIRECT_MAPPED is not set | ||
163 | CONFIG_CACHE_WRITEBACK=y | ||
164 | # CONFIG_CACHE_WRITETHROUGH is not set | ||
165 | # CONFIG_CACHE_OFF is not set | ||
166 | |||
167 | # | ||
168 | # Processor features | ||
169 | # | ||
170 | CONFIG_CPU_LITTLE_ENDIAN=y | ||
171 | # CONFIG_CPU_BIG_ENDIAN is not set | ||
172 | # CONFIG_SH_FPU_EMU is not set | ||
173 | CONFIG_SH_DSP=y | ||
174 | CONFIG_SH_ADC=y | ||
175 | CONFIG_CPU_HAS_INTEVT=y | ||
176 | CONFIG_CPU_HAS_INTC_IRQ=y | ||
177 | CONFIG_CPU_HAS_SR_RB=y | ||
178 | CONFIG_CPU_HAS_DSP=y | ||
179 | |||
180 | # | ||
181 | # Board support | ||
182 | # | ||
183 | CONFIG_SH_MAGIC_PANEL_R2=y | ||
184 | |||
185 | # | ||
186 | # Magic Panel R2 options | ||
187 | # | ||
188 | CONFIG_SH_MAGIC_PANEL_R2_VERSION=3 | ||
189 | |||
190 | # | ||
191 | # Timer and clock configuration | ||
192 | # | ||
193 | CONFIG_SH_TMU=y | ||
194 | CONFIG_SH_TIMER_IRQ=16 | ||
195 | CONFIG_SH_PCLK_FREQ=24000000 | ||
196 | # CONFIG_TICK_ONESHOT is not set | ||
197 | # CONFIG_NO_HZ is not set | ||
198 | # CONFIG_HIGH_RES_TIMERS is not set | ||
199 | |||
200 | # | ||
201 | # CPU Frequency scaling | ||
202 | # | ||
203 | # CONFIG_CPU_FREQ is not set | ||
204 | |||
205 | # | ||
206 | # DMA support | ||
207 | # | ||
208 | CONFIG_SH_DMA_API=y | ||
209 | CONFIG_SH_DMA=y | ||
210 | CONFIG_NR_ONCHIP_DMA_CHANNELS=6 | ||
211 | # CONFIG_NR_DMA_CHANNELS_BOOL is not set | ||
212 | |||
213 | # | ||
214 | # Companion Chips | ||
215 | # | ||
216 | |||
217 | # | ||
218 | # Additional SuperH Device Drivers | ||
219 | # | ||
220 | CONFIG_HEARTBEAT=y | ||
221 | # CONFIG_PUSH_SWITCH is not set | ||
222 | |||
223 | # | ||
224 | # Kernel features | ||
225 | # | ||
226 | # CONFIG_HZ_100 is not set | ||
227 | CONFIG_HZ_250=y | ||
228 | # CONFIG_HZ_300 is not set | ||
229 | # CONFIG_HZ_1000 is not set | ||
230 | CONFIG_HZ=250 | ||
231 | # CONFIG_KEXEC is not set | ||
232 | # CONFIG_CRASH_DUMP is not set | ||
233 | CONFIG_PREEMPT_NONE=y | ||
234 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
235 | # CONFIG_PREEMPT is not set | ||
236 | |||
237 | # | ||
238 | # Boot options | ||
239 | # | ||
240 | CONFIG_ZERO_PAGE_OFFSET=0x00001000 | ||
241 | CONFIG_BOOT_LINK_OFFSET=0x00800000 | ||
242 | # CONFIG_CMDLINE_BOOL is not set | ||
243 | |||
244 | # | ||
245 | # Bus options | ||
246 | # | ||
247 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
248 | |||
249 | # | ||
250 | # PCCARD (PCMCIA/CardBus) support | ||
251 | # | ||
252 | # CONFIG_PCCARD is not set | ||
253 | |||
254 | # | ||
255 | # Executable file formats | ||
256 | # | ||
257 | CONFIG_BINFMT_ELF=y | ||
258 | # CONFIG_BINFMT_MISC is not set | ||
259 | |||
260 | # | ||
261 | # Networking | ||
262 | # | ||
263 | CONFIG_NET=y | ||
264 | |||
265 | # | ||
266 | # Networking options | ||
267 | # | ||
268 | CONFIG_PACKET=y | ||
269 | CONFIG_PACKET_MMAP=y | ||
270 | CONFIG_UNIX=y | ||
271 | # CONFIG_NET_KEY is not set | ||
272 | CONFIG_INET=y | ||
273 | # CONFIG_IP_MULTICAST is not set | ||
274 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
275 | CONFIG_IP_FIB_HASH=y | ||
276 | CONFIG_IP_PNP=y | ||
277 | CONFIG_IP_PNP_DHCP=y | ||
278 | # CONFIG_IP_PNP_BOOTP is not set | ||
279 | # CONFIG_IP_PNP_RARP is not set | ||
280 | # CONFIG_NET_IPIP is not set | ||
281 | # CONFIG_NET_IPGRE is not set | ||
282 | # CONFIG_ARPD is not set | ||
283 | # CONFIG_SYN_COOKIES is not set | ||
284 | # CONFIG_INET_AH is not set | ||
285 | # CONFIG_INET_ESP is not set | ||
286 | # CONFIG_INET_IPCOMP is not set | ||
287 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
288 | # CONFIG_INET_TUNNEL is not set | ||
289 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | ||
290 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | ||
291 | # CONFIG_INET_XFRM_MODE_BEET is not set | ||
292 | CONFIG_INET_DIAG=y | ||
293 | CONFIG_INET_TCP_DIAG=y | ||
294 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
295 | CONFIG_TCP_CONG_CUBIC=y | ||
296 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
297 | # CONFIG_TCP_MD5SIG is not set | ||
298 | # CONFIG_IPV6 is not set | ||
299 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
300 | # CONFIG_INET6_TUNNEL is not set | ||
301 | # CONFIG_NETWORK_SECMARK is not set | ||
302 | # CONFIG_NETFILTER is not set | ||
303 | # CONFIG_IP_DCCP is not set | ||
304 | # CONFIG_IP_SCTP is not set | ||
305 | # CONFIG_TIPC is not set | ||
306 | # CONFIG_ATM is not set | ||
307 | # CONFIG_BRIDGE is not set | ||
308 | # CONFIG_VLAN_8021Q is not set | ||
309 | # CONFIG_DECNET is not set | ||
310 | # CONFIG_LLC2 is not set | ||
311 | # CONFIG_IPX is not set | ||
312 | # CONFIG_ATALK is not set | ||
313 | # CONFIG_X25 is not set | ||
314 | # CONFIG_LAPB is not set | ||
315 | # CONFIG_ECONET is not set | ||
316 | # CONFIG_WAN_ROUTER is not set | ||
317 | |||
318 | # | ||
319 | # QoS and/or fair queueing | ||
320 | # | ||
321 | # CONFIG_NET_SCHED is not set | ||
322 | |||
323 | # | ||
324 | # Network testing | ||
325 | # | ||
326 | # CONFIG_NET_PKTGEN is not set | ||
327 | # CONFIG_HAMRADIO is not set | ||
328 | # CONFIG_IRDA is not set | ||
329 | # CONFIG_BT is not set | ||
330 | # CONFIG_AF_RXRPC is not set | ||
331 | |||
332 | # | ||
333 | # Wireless | ||
334 | # | ||
335 | # CONFIG_CFG80211 is not set | ||
336 | # CONFIG_WIRELESS_EXT is not set | ||
337 | # CONFIG_MAC80211 is not set | ||
338 | # CONFIG_IEEE80211 is not set | ||
339 | # CONFIG_RFKILL is not set | ||
340 | # CONFIG_NET_9P is not set | ||
341 | |||
342 | # | ||
343 | # Device Drivers | ||
344 | # | ||
345 | |||
346 | # | ||
347 | # Generic Driver Options | ||
348 | # | ||
349 | # CONFIG_STANDALONE is not set | ||
350 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set | ||
351 | CONFIG_FW_LOADER=y | ||
352 | # CONFIG_DEBUG_DRIVER is not set | ||
353 | # CONFIG_DEBUG_DEVRES is not set | ||
354 | # CONFIG_SYS_HYPERVISOR is not set | ||
355 | # CONFIG_CONNECTOR is not set | ||
356 | CONFIG_MTD=y | ||
357 | # CONFIG_MTD_DEBUG is not set | ||
358 | # CONFIG_MTD_CONCAT is not set | ||
359 | CONFIG_MTD_PARTITIONS=y | ||
360 | CONFIG_MTD_REDBOOT_PARTS=y | ||
361 | CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 | ||
362 | # CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set | ||
363 | # CONFIG_MTD_REDBOOT_PARTS_READONLY is not set | ||
364 | CONFIG_MTD_CMDLINE_PARTS=y | ||
365 | |||
366 | # | ||
367 | # User Modules And Translation Layers | ||
368 | # | ||
369 | CONFIG_MTD_CHAR=y | ||
370 | CONFIG_MTD_BLKDEVS=y | ||
371 | CONFIG_MTD_BLOCK=y | ||
372 | # CONFIG_FTL is not set | ||
373 | # CONFIG_NFTL is not set | ||
374 | # CONFIG_INFTL is not set | ||
375 | # CONFIG_RFD_FTL is not set | ||
376 | # CONFIG_SSFDC is not set | ||
377 | |||
378 | # | ||
379 | # RAM/ROM/Flash chip drivers | ||
380 | # | ||
381 | CONFIG_MTD_CFI=y | ||
382 | # CONFIG_MTD_JEDECPROBE is not set | ||
383 | CONFIG_MTD_GEN_PROBE=y | ||
384 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
385 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
386 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
387 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
388 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
389 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
390 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
391 | CONFIG_MTD_CFI_I1=y | ||
392 | CONFIG_MTD_CFI_I2=y | ||
393 | # CONFIG_MTD_CFI_I4 is not set | ||
394 | # CONFIG_MTD_CFI_I8 is not set | ||
395 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
396 | CONFIG_MTD_CFI_AMDSTD=y | ||
397 | # CONFIG_MTD_CFI_STAA is not set | ||
398 | CONFIG_MTD_CFI_UTIL=y | ||
399 | # CONFIG_MTD_RAM is not set | ||
400 | # CONFIG_MTD_ROM is not set | ||
401 | # CONFIG_MTD_ABSENT is not set | ||
402 | |||
403 | # | ||
404 | # Mapping drivers for chip access | ||
405 | # | ||
406 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
407 | CONFIG_MTD_PHYSMAP=y | ||
408 | CONFIG_MTD_PHYSMAP_START=0x0000000 | ||
409 | CONFIG_MTD_PHYSMAP_LEN=0 | ||
410 | CONFIG_MTD_PHYSMAP_BANKWIDTH=0 | ||
411 | # CONFIG_MTD_SOLUTIONENGINE is not set | ||
412 | # CONFIG_MTD_PLATRAM is not set | ||
413 | |||
414 | # | ||
415 | # Self-contained MTD device drivers | ||
416 | # | ||
417 | # CONFIG_MTD_SLRAM is not set | ||
418 | # CONFIG_MTD_PHRAM is not set | ||
419 | # CONFIG_MTD_MTDRAM is not set | ||
420 | # CONFIG_MTD_BLOCK2MTD is not set | ||
421 | |||
422 | # | ||
423 | # Disk-On-Chip Device Drivers | ||
424 | # | ||
425 | # CONFIG_MTD_DOC2000 is not set | ||
426 | # CONFIG_MTD_DOC2001 is not set | ||
427 | # CONFIG_MTD_DOC2001PLUS is not set | ||
428 | # CONFIG_MTD_NAND is not set | ||
429 | # CONFIG_MTD_ONENAND is not set | ||
430 | |||
431 | # | ||
432 | # UBI - Unsorted block images | ||
433 | # | ||
434 | # CONFIG_MTD_UBI is not set | ||
435 | # CONFIG_PARPORT is not set | ||
436 | CONFIG_BLK_DEV=y | ||
437 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
438 | # CONFIG_BLK_DEV_LOOP is not set | ||
439 | # CONFIG_BLK_DEV_NBD is not set | ||
440 | CONFIG_BLK_DEV_RAM=y | ||
441 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
442 | CONFIG_BLK_DEV_RAM_SIZE=65536 | ||
443 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
444 | # CONFIG_CDROM_PKTCDVD is not set | ||
445 | # CONFIG_ATA_OVER_ETH is not set | ||
446 | CONFIG_MISC_DEVICES=y | ||
447 | # CONFIG_EEPROM_93CX6 is not set | ||
448 | # CONFIG_IDE is not set | ||
449 | |||
450 | # | ||
451 | # SCSI device support | ||
452 | # | ||
453 | # CONFIG_RAID_ATTRS is not set | ||
454 | # CONFIG_SCSI is not set | ||
455 | # CONFIG_SCSI_DMA is not set | ||
456 | # CONFIG_SCSI_NETLINK is not set | ||
457 | # CONFIG_ATA is not set | ||
458 | # CONFIG_MD is not set | ||
459 | CONFIG_NETDEVICES=y | ||
460 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
461 | # CONFIG_DUMMY is not set | ||
462 | # CONFIG_BONDING is not set | ||
463 | # CONFIG_MACVLAN is not set | ||
464 | # CONFIG_EQUALIZER is not set | ||
465 | # CONFIG_TUN is not set | ||
466 | # CONFIG_PHYLIB is not set | ||
467 | CONFIG_NET_ETHERNET=y | ||
468 | CONFIG_MII=y | ||
469 | # CONFIG_STNIC is not set | ||
470 | # CONFIG_SMC91X is not set | ||
471 | CONFIG_SMC911X=y | ||
472 | # CONFIG_NETDEV_1000 is not set | ||
473 | # CONFIG_NETDEV_10000 is not set | ||
474 | |||
475 | # | ||
476 | # Wireless LAN | ||
477 | # | ||
478 | # CONFIG_WLAN_PRE80211 is not set | ||
479 | # CONFIG_WLAN_80211 is not set | ||
480 | # CONFIG_WAN is not set | ||
481 | # CONFIG_PPP is not set | ||
482 | # CONFIG_SLIP is not set | ||
483 | # CONFIG_SHAPER is not set | ||
484 | # CONFIG_NETCONSOLE is not set | ||
485 | # CONFIG_NETPOLL is not set | ||
486 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
487 | # CONFIG_ISDN is not set | ||
488 | # CONFIG_PHONE is not set | ||
489 | |||
490 | # | ||
491 | # Input device support | ||
492 | # | ||
493 | CONFIG_INPUT=y | ||
494 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
495 | # CONFIG_INPUT_POLLDEV is not set | ||
496 | |||
497 | # | ||
498 | # Userland interfaces | ||
499 | # | ||
500 | CONFIG_INPUT_MOUSEDEV=y | ||
501 | CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
502 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
503 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
504 | # CONFIG_INPUT_JOYDEV is not set | ||
505 | # CONFIG_INPUT_TSDEV is not set | ||
506 | CONFIG_INPUT_EVDEV=y | ||
507 | # CONFIG_INPUT_EVBUG is not set | ||
508 | |||
509 | # | ||
510 | # Input Device Drivers | ||
511 | # | ||
512 | CONFIG_INPUT_KEYBOARD=y | ||
513 | CONFIG_KEYBOARD_ATKBD=y | ||
514 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
515 | # CONFIG_KEYBOARD_LKKBD is not set | ||
516 | # CONFIG_KEYBOARD_XTKBD is not set | ||
517 | # CONFIG_KEYBOARD_NEWTON is not set | ||
518 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
519 | CONFIG_INPUT_MOUSE=y | ||
520 | # CONFIG_MOUSE_PS2 is not set | ||
521 | # CONFIG_MOUSE_SERIAL is not set | ||
522 | # CONFIG_MOUSE_VSXXXAA is not set | ||
523 | # CONFIG_INPUT_JOYSTICK is not set | ||
524 | # CONFIG_INPUT_TABLET is not set | ||
525 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
526 | # CONFIG_INPUT_MISC is not set | ||
527 | |||
528 | # | ||
529 | # Hardware I/O ports | ||
530 | # | ||
531 | CONFIG_SERIO=y | ||
532 | # CONFIG_SERIO_I8042 is not set | ||
533 | CONFIG_SERIO_SERPORT=y | ||
534 | CONFIG_SERIO_LIBPS2=y | ||
535 | # CONFIG_SERIO_RAW is not set | ||
536 | # CONFIG_GAMEPORT is not set | ||
537 | |||
538 | # | ||
539 | # Character devices | ||
540 | # | ||
541 | CONFIG_VT=y | ||
542 | CONFIG_VT_CONSOLE=y | ||
543 | CONFIG_HW_CONSOLE=y | ||
544 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
545 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
546 | |||
547 | # | ||
548 | # Serial drivers | ||
549 | # | ||
550 | CONFIG_SERIAL_8250=y | ||
551 | CONFIG_SERIAL_8250_CONSOLE=y | ||
552 | CONFIG_SERIAL_8250_NR_UARTS=48 | ||
553 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
554 | CONFIG_SERIAL_8250_EXTENDED=y | ||
555 | # CONFIG_SERIAL_8250_MANY_PORTS is not set | ||
556 | CONFIG_SERIAL_8250_SHARE_IRQ=y | ||
557 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set | ||
558 | # CONFIG_SERIAL_8250_RSA is not set | ||
559 | |||
560 | # | ||
561 | # Non-8250 serial port support | ||
562 | # | ||
563 | CONFIG_SERIAL_SH_SCI=y | ||
564 | CONFIG_SERIAL_SH_SCI_NR_UARTS=2 | ||
565 | CONFIG_SERIAL_SH_SCI_CONSOLE=y | ||
566 | CONFIG_SERIAL_CORE=y | ||
567 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
568 | CONFIG_UNIX98_PTYS=y | ||
569 | CONFIG_LEGACY_PTYS=y | ||
570 | CONFIG_LEGACY_PTY_COUNT=256 | ||
571 | # CONFIG_IPMI_HANDLER is not set | ||
572 | # CONFIG_WATCHDOG is not set | ||
573 | # CONFIG_HW_RANDOM is not set | ||
574 | # CONFIG_R3964 is not set | ||
575 | # CONFIG_RAW_DRIVER is not set | ||
576 | # CONFIG_TCG_TPM is not set | ||
577 | # CONFIG_I2C is not set | ||
578 | |||
579 | # | ||
580 | # SPI support | ||
581 | # | ||
582 | # CONFIG_SPI is not set | ||
583 | # CONFIG_SPI_MASTER is not set | ||
584 | # CONFIG_W1 is not set | ||
585 | # CONFIG_POWER_SUPPLY is not set | ||
586 | # CONFIG_HWMON is not set | ||
587 | |||
588 | # | ||
589 | # Multifunction device drivers | ||
590 | # | ||
591 | # CONFIG_MFD_SM501 is not set | ||
592 | |||
593 | # | ||
594 | # Multimedia devices | ||
595 | # | ||
596 | # CONFIG_VIDEO_DEV is not set | ||
597 | # CONFIG_DVB_CORE is not set | ||
598 | CONFIG_DAB=y | ||
599 | |||
600 | # | ||
601 | # Graphics support | ||
602 | # | ||
603 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
604 | |||
605 | # | ||
606 | # Display device support | ||
607 | # | ||
608 | # CONFIG_DISPLAY_SUPPORT is not set | ||
609 | # CONFIG_VGASTATE is not set | ||
610 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
611 | # CONFIG_FB is not set | ||
612 | |||
613 | # | ||
614 | # Console display driver support | ||
615 | # | ||
616 | CONFIG_DUMMY_CONSOLE=y | ||
617 | |||
618 | # | ||
619 | # Sound | ||
620 | # | ||
621 | # CONFIG_SOUND is not set | ||
622 | # CONFIG_HID_SUPPORT is not set | ||
623 | # CONFIG_USB_SUPPORT is not set | ||
624 | # CONFIG_MMC is not set | ||
625 | # CONFIG_NEW_LEDS is not set | ||
626 | CONFIG_RTC_LIB=y | ||
627 | CONFIG_RTC_CLASS=y | ||
628 | # CONFIG_RTC_HCTOSYS is not set | ||
629 | # CONFIG_RTC_DEBUG is not set | ||
630 | |||
631 | # | ||
632 | # RTC interfaces | ||
633 | # | ||
634 | CONFIG_RTC_INTF_SYSFS=y | ||
635 | CONFIG_RTC_INTF_PROC=y | ||
636 | CONFIG_RTC_INTF_DEV=y | ||
637 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
638 | # CONFIG_RTC_DRV_TEST is not set | ||
639 | |||
640 | # | ||
641 | # SPI RTC drivers | ||
642 | # | ||
643 | |||
644 | # | ||
645 | # Platform RTC drivers | ||
646 | # | ||
647 | # CONFIG_RTC_DRV_DS1553 is not set | ||
648 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
649 | # CONFIG_RTC_DRV_DS1742 is not set | ||
650 | # CONFIG_RTC_DRV_M48T86 is not set | ||
651 | # CONFIG_RTC_DRV_M48T59 is not set | ||
652 | # CONFIG_RTC_DRV_V3020 is not set | ||
653 | |||
654 | # | ||
655 | # on-CPU RTC drivers | ||
656 | # | ||
657 | CONFIG_RTC_DRV_SH=y | ||
658 | |||
659 | # | ||
660 | # DMA Engine support | ||
661 | # | ||
662 | # CONFIG_DMA_ENGINE is not set | ||
663 | |||
664 | # | ||
665 | # DMA Clients | ||
666 | # | ||
667 | |||
668 | # | ||
669 | # DMA Devices | ||
670 | # | ||
671 | |||
672 | # | ||
673 | # Userspace I/O | ||
674 | # | ||
675 | # CONFIG_UIO is not set | ||
676 | |||
677 | # | ||
678 | # File systems | ||
679 | # | ||
680 | CONFIG_EXT2_FS=y | ||
681 | # CONFIG_EXT2_FS_XATTR is not set | ||
682 | # CONFIG_EXT2_FS_XIP is not set | ||
683 | CONFIG_EXT3_FS=y | ||
684 | # CONFIG_EXT3_FS_XATTR is not set | ||
685 | # CONFIG_EXT4DEV_FS is not set | ||
686 | CONFIG_JBD=y | ||
687 | # CONFIG_JBD_DEBUG is not set | ||
688 | # CONFIG_REISERFS_FS is not set | ||
689 | # CONFIG_JFS_FS is not set | ||
690 | # CONFIG_FS_POSIX_ACL is not set | ||
691 | # CONFIG_XFS_FS is not set | ||
692 | # CONFIG_GFS2_FS is not set | ||
693 | # CONFIG_OCFS2_FS is not set | ||
694 | # CONFIG_MINIX_FS is not set | ||
695 | # CONFIG_ROMFS_FS is not set | ||
696 | # CONFIG_INOTIFY is not set | ||
697 | # CONFIG_QUOTA is not set | ||
698 | # CONFIG_DNOTIFY is not set | ||
699 | # CONFIG_AUTOFS_FS is not set | ||
700 | # CONFIG_AUTOFS4_FS is not set | ||
701 | # CONFIG_FUSE_FS is not set | ||
702 | |||
703 | # | ||
704 | # CD-ROM/DVD Filesystems | ||
705 | # | ||
706 | # CONFIG_ISO9660_FS is not set | ||
707 | # CONFIG_UDF_FS is not set | ||
708 | |||
709 | # | ||
710 | # DOS/FAT/NT Filesystems | ||
711 | # | ||
712 | # CONFIG_MSDOS_FS is not set | ||
713 | # CONFIG_VFAT_FS is not set | ||
714 | # CONFIG_NTFS_FS is not set | ||
715 | |||
716 | # | ||
717 | # Pseudo filesystems | ||
718 | # | ||
719 | CONFIG_PROC_FS=y | ||
720 | CONFIG_PROC_KCORE=y | ||
721 | CONFIG_PROC_SYSCTL=y | ||
722 | CONFIG_SYSFS=y | ||
723 | CONFIG_TMPFS=y | ||
724 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
725 | # CONFIG_HUGETLBFS is not set | ||
726 | # CONFIG_HUGETLB_PAGE is not set | ||
727 | CONFIG_RAMFS=y | ||
728 | # CONFIG_CONFIGFS_FS is not set | ||
729 | |||
730 | # | ||
731 | # Miscellaneous filesystems | ||
732 | # | ||
733 | # CONFIG_ADFS_FS is not set | ||
734 | # CONFIG_AFFS_FS is not set | ||
735 | # CONFIG_HFS_FS is not set | ||
736 | # CONFIG_HFSPLUS_FS is not set | ||
737 | # CONFIG_BEFS_FS is not set | ||
738 | # CONFIG_BFS_FS is not set | ||
739 | # CONFIG_EFS_FS is not set | ||
740 | CONFIG_JFFS2_FS=y | ||
741 | CONFIG_JFFS2_FS_DEBUG=0 | ||
742 | # CONFIG_JFFS2_FS_WRITEBUFFER is not set | ||
743 | # CONFIG_JFFS2_SUMMARY is not set | ||
744 | # CONFIG_JFFS2_FS_XATTR is not set | ||
745 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | ||
746 | CONFIG_JFFS2_ZLIB=y | ||
747 | CONFIG_JFFS2_RTIME=y | ||
748 | # CONFIG_JFFS2_RUBIN is not set | ||
749 | # CONFIG_CRAMFS is not set | ||
750 | # CONFIG_VXFS_FS is not set | ||
751 | # CONFIG_HPFS_FS is not set | ||
752 | # CONFIG_QNX4FS_FS is not set | ||
753 | # CONFIG_SYSV_FS is not set | ||
754 | # CONFIG_UFS_FS is not set | ||
755 | |||
756 | # | ||
757 | # Network File Systems | ||
758 | # | ||
759 | CONFIG_NFS_FS=y | ||
760 | CONFIG_NFS_V3=y | ||
761 | # CONFIG_NFS_V3_ACL is not set | ||
762 | # CONFIG_NFS_V4 is not set | ||
763 | # CONFIG_NFS_DIRECTIO is not set | ||
764 | # CONFIG_NFSD is not set | ||
765 | CONFIG_ROOT_NFS=y | ||
766 | CONFIG_LOCKD=y | ||
767 | CONFIG_LOCKD_V4=y | ||
768 | CONFIG_NFS_COMMON=y | ||
769 | CONFIG_SUNRPC=y | ||
770 | CONFIG_SUNRPC_BIND34=y | ||
771 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
772 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
773 | # CONFIG_SMB_FS is not set | ||
774 | # CONFIG_CIFS is not set | ||
775 | # CONFIG_NCP_FS is not set | ||
776 | # CONFIG_CODA_FS is not set | ||
777 | # CONFIG_AFS_FS is not set | ||
778 | |||
779 | # | ||
780 | # Partition Types | ||
781 | # | ||
782 | # CONFIG_PARTITION_ADVANCED is not set | ||
783 | CONFIG_MSDOS_PARTITION=y | ||
784 | |||
785 | # | ||
786 | # Native Language Support | ||
787 | # | ||
788 | CONFIG_NLS=y | ||
789 | CONFIG_NLS_DEFAULT="cp437" | ||
790 | CONFIG_NLS_CODEPAGE_437=y | ||
791 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
792 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
793 | CONFIG_NLS_CODEPAGE_850=y | ||
794 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
795 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
796 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
797 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
798 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
799 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
800 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
801 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
802 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
803 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
804 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
805 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
806 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
807 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
808 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
809 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
810 | # CONFIG_NLS_ISO8859_8 is not set | ||
811 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
812 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
813 | # CONFIG_NLS_ASCII is not set | ||
814 | CONFIG_NLS_ISO8859_1=y | ||
815 | # CONFIG_NLS_ISO8859_2 is not set | ||
816 | # CONFIG_NLS_ISO8859_3 is not set | ||
817 | # CONFIG_NLS_ISO8859_4 is not set | ||
818 | # CONFIG_NLS_ISO8859_5 is not set | ||
819 | # CONFIG_NLS_ISO8859_6 is not set | ||
820 | # CONFIG_NLS_ISO8859_7 is not set | ||
821 | # CONFIG_NLS_ISO8859_9 is not set | ||
822 | # CONFIG_NLS_ISO8859_13 is not set | ||
823 | # CONFIG_NLS_ISO8859_14 is not set | ||
824 | # CONFIG_NLS_ISO8859_15 is not set | ||
825 | # CONFIG_NLS_KOI8_R is not set | ||
826 | # CONFIG_NLS_KOI8_U is not set | ||
827 | # CONFIG_NLS_UTF8 is not set | ||
828 | |||
829 | # | ||
830 | # Distributed Lock Manager | ||
831 | # | ||
832 | # CONFIG_DLM is not set | ||
833 | |||
834 | # | ||
835 | # Profiling support | ||
836 | # | ||
837 | # CONFIG_PROFILING is not set | ||
838 | |||
839 | # | ||
840 | # Kernel hacking | ||
841 | # | ||
842 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
843 | # CONFIG_PRINTK_TIME is not set | ||
844 | CONFIG_ENABLE_MUST_CHECK=y | ||
845 | CONFIG_MAGIC_SYSRQ=y | ||
846 | # CONFIG_UNUSED_SYMBOLS is not set | ||
847 | # CONFIG_DEBUG_FS is not set | ||
848 | # CONFIG_HEADERS_CHECK is not set | ||
849 | CONFIG_DEBUG_KERNEL=y | ||
850 | # CONFIG_DEBUG_SHIRQ is not set | ||
851 | # CONFIG_DETECT_SOFTLOCKUP is not set | ||
852 | # CONFIG_SCHED_DEBUG is not set | ||
853 | # CONFIG_SCHEDSTATS is not set | ||
854 | # CONFIG_TIMER_STATS is not set | ||
855 | # CONFIG_DEBUG_SLAB is not set | ||
856 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
857 | # CONFIG_RT_MUTEX_TESTER is not set | ||
858 | # CONFIG_DEBUG_SPINLOCK is not set | ||
859 | # CONFIG_DEBUG_MUTEXES is not set | ||
860 | # CONFIG_DEBUG_LOCK_ALLOC is not set | ||
861 | # CONFIG_PROVE_LOCKING is not set | ||
862 | # CONFIG_LOCK_STAT is not set | ||
863 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
864 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
865 | CONFIG_DEBUG_KOBJECT=y | ||
866 | CONFIG_DEBUG_BUGVERBOSE=y | ||
867 | CONFIG_DEBUG_INFO=y | ||
868 | # CONFIG_DEBUG_VM is not set | ||
869 | # CONFIG_DEBUG_LIST is not set | ||
870 | CONFIG_FRAME_POINTER=y | ||
871 | # CONFIG_FORCED_INLINING is not set | ||
872 | # CONFIG_RCU_TORTURE_TEST is not set | ||
873 | # CONFIG_FAULT_INJECTION is not set | ||
874 | # CONFIG_SH_STANDARD_BIOS is not set | ||
875 | CONFIG_EARLY_SCIF_CONSOLE=y | ||
876 | CONFIG_EARLY_SCIF_CONSOLE_PORT=0xa4430000 | ||
877 | CONFIG_EARLY_PRINTK=y | ||
878 | # CONFIG_DEBUG_BOOTMEM is not set | ||
879 | # CONFIG_DEBUG_STACKOVERFLOW is not set | ||
880 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
881 | # CONFIG_4KSTACKS is not set | ||
882 | CONFIG_SH_KGDB=y | ||
883 | |||
884 | # | ||
885 | # KGDB configuration options | ||
886 | # | ||
887 | # CONFIG_MORE_COMPILE_OPTIONS is not set | ||
888 | # CONFIG_KGDB_NMI is not set | ||
889 | CONFIG_KGDB_SYSRQ=y | ||
890 | |||
891 | # | ||
892 | # Serial port setup | ||
893 | # | ||
894 | CONFIG_KGDB_DEFPORT=0 | ||
895 | CONFIG_KGDB_DEFBAUD=115200 | ||
896 | CONFIG_KGDB_DEFPARITY_N=y | ||
897 | # CONFIG_KGDB_DEFPARITY_E is not set | ||
898 | # CONFIG_KGDB_DEFPARITY_O is not set | ||
899 | CONFIG_KGDB_DEFBITS_8=y | ||
900 | # CONFIG_KGDB_DEFBITS_7 is not set | ||
901 | |||
902 | # | ||
903 | # Security options | ||
904 | # | ||
905 | # CONFIG_KEYS is not set | ||
906 | # CONFIG_SECURITY is not set | ||
907 | # CONFIG_CRYPTO is not set | ||
908 | |||
909 | # | ||
910 | # Library routines | ||
911 | # | ||
912 | CONFIG_BITREVERSE=y | ||
913 | CONFIG_CRC_CCITT=m | ||
914 | CONFIG_CRC16=m | ||
915 | # CONFIG_CRC_ITU_T is not set | ||
916 | CONFIG_CRC32=y | ||
917 | # CONFIG_CRC7 is not set | ||
918 | # CONFIG_LIBCRC32C is not set | ||
919 | CONFIG_AUDIT_GENERIC=y | ||
920 | CONFIG_ZLIB_INFLATE=y | ||
921 | CONFIG_ZLIB_DEFLATE=y | ||
922 | CONFIG_PLIST=y | ||
923 | CONFIG_HAS_IOMEM=y | ||
924 | CONFIG_HAS_IOPORT=y | ||
925 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/sh/configs/rts7751r2d_defconfig b/arch/sh/configs/rts7751r2d1_defconfig index b64f73b704d6..2dc754e5b733 100644 --- a/arch/sh/configs/rts7751r2d_defconfig +++ b/arch/sh/configs/rts7751r2d1_defconfig | |||
@@ -1,46 +1,47 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.21-rc1 | 3 | # Linux kernel version: 2.6.23-rc2 |
4 | # Thu Mar 1 16:42:40 2007 | 4 | # Tue Aug 14 18:04:44 2007 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
8 | CONFIG_GENERIC_BUG=y | ||
8 | CONFIG_GENERIC_FIND_NEXT_BIT=y | 9 | CONFIG_GENERIC_FIND_NEXT_BIT=y |
9 | CONFIG_GENERIC_HWEIGHT=y | 10 | CONFIG_GENERIC_HWEIGHT=y |
10 | CONFIG_GENERIC_HARDIRQS=y | 11 | CONFIG_GENERIC_HARDIRQS=y |
11 | CONFIG_GENERIC_IRQ_PROBE=y | 12 | CONFIG_GENERIC_IRQ_PROBE=y |
12 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 13 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
13 | # CONFIG_GENERIC_TIME is not set | 14 | CONFIG_GENERIC_TIME=y |
15 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
16 | CONFIG_SYS_SUPPORTS_PCI=y | ||
14 | CONFIG_STACKTRACE_SUPPORT=y | 17 | CONFIG_STACKTRACE_SUPPORT=y |
15 | CONFIG_LOCKDEP_SUPPORT=y | 18 | CONFIG_LOCKDEP_SUPPORT=y |
16 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | 19 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set |
17 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | 20 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set |
21 | CONFIG_ARCH_NO_VIRT_TO_BUS=y | ||
18 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 22 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
19 | 23 | ||
20 | # | 24 | # |
21 | # Code maturity level options | 25 | # General setup |
22 | # | 26 | # |
23 | CONFIG_EXPERIMENTAL=y | 27 | CONFIG_EXPERIMENTAL=y |
24 | CONFIG_BROKEN_ON_SMP=y | 28 | CONFIG_BROKEN_ON_SMP=y |
25 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 29 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
26 | |||
27 | # | ||
28 | # General setup | ||
29 | # | ||
30 | CONFIG_LOCALVERSION="" | 30 | CONFIG_LOCALVERSION="" |
31 | CONFIG_LOCALVERSION_AUTO=y | 31 | CONFIG_LOCALVERSION_AUTO=y |
32 | CONFIG_SWAP=y | 32 | CONFIG_SWAP=y |
33 | CONFIG_SYSVIPC=y | 33 | CONFIG_SYSVIPC=y |
34 | # CONFIG_IPC_NS is not set | ||
35 | CONFIG_SYSVIPC_SYSCTL=y | 34 | CONFIG_SYSVIPC_SYSCTL=y |
36 | # CONFIG_POSIX_MQUEUE is not set | 35 | # CONFIG_POSIX_MQUEUE is not set |
37 | # CONFIG_BSD_PROCESS_ACCT is not set | 36 | # CONFIG_BSD_PROCESS_ACCT is not set |
38 | # CONFIG_TASKSTATS is not set | 37 | # CONFIG_TASKSTATS is not set |
39 | # CONFIG_UTS_NS is not set | 38 | # CONFIG_USER_NS is not set |
40 | # CONFIG_AUDIT is not set | 39 | # CONFIG_AUDIT is not set |
41 | # CONFIG_IKCONFIG is not set | 40 | # CONFIG_IKCONFIG is not set |
41 | CONFIG_LOG_BUF_SHIFT=14 | ||
42 | CONFIG_SYSFS_DEPRECATED=y | 42 | CONFIG_SYSFS_DEPRECATED=y |
43 | # CONFIG_RELAY is not set | 43 | # CONFIG_RELAY is not set |
44 | # CONFIG_BLK_DEV_INITRD is not set | ||
44 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 45 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set |
45 | CONFIG_SYSCTL=y | 46 | CONFIG_SYSCTL=y |
46 | CONFIG_EMBEDDED=y | 47 | CONFIG_EMBEDDED=y |
@@ -54,31 +55,29 @@ CONFIG_BUG=y | |||
54 | CONFIG_ELF_CORE=y | 55 | CONFIG_ELF_CORE=y |
55 | CONFIG_BASE_FULL=y | 56 | CONFIG_BASE_FULL=y |
56 | CONFIG_FUTEX=y | 57 | CONFIG_FUTEX=y |
58 | CONFIG_ANON_INODES=y | ||
57 | CONFIG_EPOLL=y | 59 | CONFIG_EPOLL=y |
60 | CONFIG_SIGNALFD=y | ||
61 | CONFIG_TIMERFD=y | ||
62 | CONFIG_EVENTFD=y | ||
58 | CONFIG_SHMEM=y | 63 | CONFIG_SHMEM=y |
59 | CONFIG_SLAB=y | ||
60 | CONFIG_VM_EVENT_COUNTERS=y | 64 | CONFIG_VM_EVENT_COUNTERS=y |
65 | CONFIG_SLAB=y | ||
66 | # CONFIG_SLUB is not set | ||
67 | # CONFIG_SLOB is not set | ||
61 | CONFIG_RT_MUTEXES=y | 68 | CONFIG_RT_MUTEXES=y |
62 | # CONFIG_TINY_SHMEM is not set | 69 | # CONFIG_TINY_SHMEM is not set |
63 | CONFIG_BASE_SMALL=0 | 70 | CONFIG_BASE_SMALL=0 |
64 | # CONFIG_SLOB is not set | ||
65 | |||
66 | # | ||
67 | # Loadable module support | ||
68 | # | ||
69 | CONFIG_MODULES=y | 71 | CONFIG_MODULES=y |
70 | # CONFIG_MODULE_UNLOAD is not set | 72 | # CONFIG_MODULE_UNLOAD is not set |
71 | # CONFIG_MODVERSIONS is not set | 73 | # CONFIG_MODVERSIONS is not set |
72 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 74 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
73 | # CONFIG_KMOD is not set | 75 | # CONFIG_KMOD is not set |
74 | |||
75 | # | ||
76 | # Block layer | ||
77 | # | ||
78 | CONFIG_BLOCK=y | 76 | CONFIG_BLOCK=y |
79 | # CONFIG_LBD is not set | 77 | # CONFIG_LBD is not set |
80 | # CONFIG_BLK_DEV_IO_TRACE is not set | 78 | # CONFIG_BLK_DEV_IO_TRACE is not set |
81 | # CONFIG_LSF is not set | 79 | # CONFIG_LSF is not set |
80 | # CONFIG_BLK_DEV_BSG is not set | ||
82 | 81 | ||
83 | # | 82 | # |
84 | # IO Schedulers | 83 | # IO Schedulers |
@@ -96,61 +95,16 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
96 | # | 95 | # |
97 | # System type | 96 | # System type |
98 | # | 97 | # |
99 | # CONFIG_SH_SOLUTION_ENGINE is not set | ||
100 | # CONFIG_SH_7751_SOLUTION_ENGINE is not set | ||
101 | # CONFIG_SH_7300_SOLUTION_ENGINE is not set | ||
102 | # CONFIG_SH_7343_SOLUTION_ENGINE is not set | ||
103 | # CONFIG_SH_73180_SOLUTION_ENGINE is not set | ||
104 | # CONFIG_SH_7751_SYSTEMH is not set | ||
105 | # CONFIG_SH_HP6XX is not set | ||
106 | # CONFIG_SH_SATURN is not set | ||
107 | # CONFIG_SH_DREAMCAST is not set | ||
108 | # CONFIG_SH_MPC1211 is not set | ||
109 | # CONFIG_SH_SH03 is not set | ||
110 | # CONFIG_SH_SECUREEDGE5410 is not set | ||
111 | # CONFIG_SH_HS7751RVOIP is not set | ||
112 | # CONFIG_SH_7710VOIPGW is not set | ||
113 | CONFIG_SH_RTS7751R2D=y | ||
114 | # CONFIG_SH_R7780RP is not set | ||
115 | # CONFIG_SH_EDOSK7705 is not set | ||
116 | # CONFIG_SH_SH4202_MICRODEV is not set | ||
117 | # CONFIG_SH_LANDISK is not set | ||
118 | # CONFIG_SH_TITAN is not set | ||
119 | # CONFIG_SH_SHMIN is not set | ||
120 | # CONFIG_SH_7206_SOLUTION_ENGINE is not set | ||
121 | # CONFIG_SH_7619_SOLUTION_ENGINE is not set | ||
122 | # CONFIG_SH_UNKNOWN is not set | ||
123 | |||
124 | # | ||
125 | # Processor selection | ||
126 | # | ||
127 | CONFIG_CPU_SH4=y | 98 | CONFIG_CPU_SH4=y |
128 | |||
129 | # | ||
130 | # SH-2 Processor Support | ||
131 | # | ||
132 | # CONFIG_CPU_SUBTYPE_SH7604 is not set | ||
133 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 99 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
134 | |||
135 | # | ||
136 | # SH-2A Processor Support | ||
137 | # | ||
138 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 100 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
139 | |||
140 | # | ||
141 | # SH-3 Processor Support | ||
142 | # | ||
143 | # CONFIG_CPU_SUBTYPE_SH7300 is not set | ||
144 | # CONFIG_CPU_SUBTYPE_SH7705 is not set | 101 | # CONFIG_CPU_SUBTYPE_SH7705 is not set |
145 | # CONFIG_CPU_SUBTYPE_SH7706 is not set | 102 | # CONFIG_CPU_SUBTYPE_SH7706 is not set |
146 | # CONFIG_CPU_SUBTYPE_SH7707 is not set | 103 | # CONFIG_CPU_SUBTYPE_SH7707 is not set |
147 | # CONFIG_CPU_SUBTYPE_SH7708 is not set | 104 | # CONFIG_CPU_SUBTYPE_SH7708 is not set |
148 | # CONFIG_CPU_SUBTYPE_SH7709 is not set | 105 | # CONFIG_CPU_SUBTYPE_SH7709 is not set |
149 | # CONFIG_CPU_SUBTYPE_SH7710 is not set | 106 | # CONFIG_CPU_SUBTYPE_SH7710 is not set |
150 | 107 | # CONFIG_CPU_SUBTYPE_SH7712 is not set | |
151 | # | ||
152 | # SH-4 Processor Support | ||
153 | # | ||
154 | # CONFIG_CPU_SUBTYPE_SH7750 is not set | 108 | # CONFIG_CPU_SUBTYPE_SH7750 is not set |
155 | # CONFIG_CPU_SUBTYPE_SH7091 is not set | 109 | # CONFIG_CPU_SUBTYPE_SH7091 is not set |
156 | # CONFIG_CPU_SUBTYPE_SH7750R is not set | 110 | # CONFIG_CPU_SUBTYPE_SH7750R is not set |
@@ -159,35 +113,30 @@ CONFIG_CPU_SH4=y | |||
159 | CONFIG_CPU_SUBTYPE_SH7751R=y | 113 | CONFIG_CPU_SUBTYPE_SH7751R=y |
160 | # CONFIG_CPU_SUBTYPE_SH7760 is not set | 114 | # CONFIG_CPU_SUBTYPE_SH7760 is not set |
161 | # CONFIG_CPU_SUBTYPE_SH4_202 is not set | 115 | # CONFIG_CPU_SUBTYPE_SH4_202 is not set |
162 | |||
163 | # | ||
164 | # ST40 Processor Support | ||
165 | # | ||
166 | # CONFIG_CPU_SUBTYPE_ST40STB1 is not set | 116 | # CONFIG_CPU_SUBTYPE_ST40STB1 is not set |
167 | # CONFIG_CPU_SUBTYPE_ST40GX1 is not set | 117 | # CONFIG_CPU_SUBTYPE_ST40GX1 is not set |
168 | |||
169 | # | ||
170 | # SH-4A Processor Support | ||
171 | # | ||
172 | # CONFIG_CPU_SUBTYPE_SH7770 is not set | 118 | # CONFIG_CPU_SUBTYPE_SH7770 is not set |
173 | # CONFIG_CPU_SUBTYPE_SH7780 is not set | 119 | # CONFIG_CPU_SUBTYPE_SH7780 is not set |
174 | # CONFIG_CPU_SUBTYPE_SH7785 is not set | 120 | # CONFIG_CPU_SUBTYPE_SH7785 is not set |
175 | 121 | # CONFIG_CPU_SUBTYPE_SHX3 is not set | |
176 | # | ||
177 | # SH4AL-DSP Processor Support | ||
178 | # | ||
179 | # CONFIG_CPU_SUBTYPE_SH73180 is not set | ||
180 | # CONFIG_CPU_SUBTYPE_SH7343 is not set | 122 | # CONFIG_CPU_SUBTYPE_SH7343 is not set |
181 | # CONFIG_CPU_SUBTYPE_SH7722 is not set | 123 | # CONFIG_CPU_SUBTYPE_SH7722 is not set |
182 | 124 | ||
183 | # | 125 | # |
184 | # Memory management options | 126 | # Memory management options |
185 | # | 127 | # |
128 | CONFIG_QUICKLIST=y | ||
186 | CONFIG_MMU=y | 129 | CONFIG_MMU=y |
187 | CONFIG_PAGE_OFFSET=0x80000000 | 130 | CONFIG_PAGE_OFFSET=0x80000000 |
188 | CONFIG_MEMORY_START=0x0c000000 | 131 | CONFIG_MEMORY_START=0x0c000000 |
189 | CONFIG_MEMORY_SIZE=0x04000000 | 132 | CONFIG_MEMORY_SIZE=0x04000000 |
190 | CONFIG_VSYSCALL=y | 133 | CONFIG_VSYSCALL=y |
134 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
135 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | ||
136 | CONFIG_ARCH_SPARSEMEM_DEFAULT=y | ||
137 | CONFIG_MAX_ACTIVE_REGIONS=1 | ||
138 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
139 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | ||
191 | CONFIG_PAGE_SIZE_4KB=y | 140 | CONFIG_PAGE_SIZE_4KB=y |
192 | # CONFIG_PAGE_SIZE_8KB is not set | 141 | # CONFIG_PAGE_SIZE_8KB is not set |
193 | # CONFIG_PAGE_SIZE_64KB is not set | 142 | # CONFIG_PAGE_SIZE_64KB is not set |
@@ -197,17 +146,19 @@ CONFIG_FLATMEM_MANUAL=y | |||
197 | # CONFIG_SPARSEMEM_MANUAL is not set | 146 | # CONFIG_SPARSEMEM_MANUAL is not set |
198 | CONFIG_FLATMEM=y | 147 | CONFIG_FLATMEM=y |
199 | CONFIG_FLAT_NODE_MEM_MAP=y | 148 | CONFIG_FLAT_NODE_MEM_MAP=y |
200 | # CONFIG_SPARSEMEM_STATIC is not set | 149 | CONFIG_SPARSEMEM_STATIC=y |
201 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 150 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
202 | # CONFIG_RESOURCES_64BIT is not set | 151 | # CONFIG_RESOURCES_64BIT is not set |
203 | CONFIG_ZONE_DMA_FLAG=0 | 152 | CONFIG_ZONE_DMA_FLAG=0 |
153 | CONFIG_NR_QUICK=2 | ||
204 | 154 | ||
205 | # | 155 | # |
206 | # Cache configuration | 156 | # Cache configuration |
207 | # | 157 | # |
208 | # CONFIG_SH_DIRECT_MAPPED is not set | 158 | # CONFIG_SH_DIRECT_MAPPED is not set |
209 | # CONFIG_SH_WRITETHROUGH is not set | 159 | CONFIG_CACHE_WRITEBACK=y |
210 | # CONFIG_SH_OCRAM is not set | 160 | # CONFIG_CACHE_WRITETHROUGH is not set |
161 | # CONFIG_CACHE_OFF is not set | ||
211 | 162 | ||
212 | # | 163 | # |
213 | # Processor features | 164 | # Processor features |
@@ -215,7 +166,6 @@ CONFIG_ZONE_DMA_FLAG=0 | |||
215 | CONFIG_CPU_LITTLE_ENDIAN=y | 166 | CONFIG_CPU_LITTLE_ENDIAN=y |
216 | # CONFIG_CPU_BIG_ENDIAN is not set | 167 | # CONFIG_CPU_BIG_ENDIAN is not set |
217 | CONFIG_SH_FPU=y | 168 | CONFIG_SH_FPU=y |
218 | # CONFIG_SH_DSP is not set | ||
219 | # CONFIG_SH_STORE_QUEUES is not set | 169 | # CONFIG_SH_STORE_QUEUES is not set |
220 | CONFIG_CPU_HAS_INTEVT=y | 170 | CONFIG_CPU_HAS_INTEVT=y |
221 | CONFIG_CPU_HAS_INTC_IRQ=y | 171 | CONFIG_CPU_HAS_INTC_IRQ=y |
@@ -223,17 +173,31 @@ CONFIG_CPU_HAS_SR_RB=y | |||
223 | CONFIG_CPU_HAS_PTEA=y | 173 | CONFIG_CPU_HAS_PTEA=y |
224 | 174 | ||
225 | # | 175 | # |
226 | # Timer support | 176 | # Board support |
227 | # | 177 | # |
228 | CONFIG_SH_TMU=y | 178 | # CONFIG_SH_7751_SYSTEMH is not set |
179 | # CONFIG_SH_SECUREEDGE5410 is not set | ||
180 | # CONFIG_SH_HS7751RVOIP is not set | ||
181 | CONFIG_SH_RTS7751R2D=y | ||
182 | # CONFIG_SH_LANDISK is not set | ||
183 | # CONFIG_SH_TITAN is not set | ||
184 | # CONFIG_SH_LBOX_RE2 is not set | ||
229 | 185 | ||
230 | # | 186 | # |
231 | # RTS7751R2D options | 187 | # RTS7751R2D options |
232 | # | 188 | # |
233 | CONFIG_RTS7751R2D_REV11=y | 189 | # CONFIG_RTS7751R2D_PLUS is not set |
190 | CONFIG_RTS7751R2D_1=y | ||
191 | |||
192 | # | ||
193 | # Timer and clock configuration | ||
194 | # | ||
195 | CONFIG_SH_TMU=y | ||
234 | CONFIG_SH_TIMER_IRQ=16 | 196 | CONFIG_SH_TIMER_IRQ=16 |
235 | # CONFIG_NO_IDLE_HZ is not set | ||
236 | CONFIG_SH_PCLK_FREQ=60000000 | 197 | CONFIG_SH_PCLK_FREQ=60000000 |
198 | # CONFIG_TICK_ONESHOT is not set | ||
199 | # CONFIG_NO_HZ is not set | ||
200 | # CONFIG_HIGH_RES_TIMERS is not set | ||
237 | 201 | ||
238 | # | 202 | # |
239 | # CPU Frequency scaling | 203 | # CPU Frequency scaling |
@@ -244,19 +208,15 @@ CONFIG_SH_PCLK_FREQ=60000000 | |||
244 | # DMA support | 208 | # DMA support |
245 | # | 209 | # |
246 | # CONFIG_SH_DMA is not set | 210 | # CONFIG_SH_DMA is not set |
247 | # CONFIG_NR_ONCHIP_DMA_CHANNELS is not set | ||
248 | # CONFIG_NR_DMA_CHANNELS_BOOL is not set | ||
249 | 211 | ||
250 | # | 212 | # |
251 | # Companion Chips | 213 | # Companion Chips |
252 | # | 214 | # |
253 | CONFIG_VOYAGERGX=y | ||
254 | # CONFIG_HD6446X_SERIES is not set | ||
255 | CONFIG_HEARTBEAT=y | ||
256 | 215 | ||
257 | # | 216 | # |
258 | # Additional SuperH Device Drivers | 217 | # Additional SuperH Device Drivers |
259 | # | 218 | # |
219 | CONFIG_HEARTBEAT=y | ||
260 | # CONFIG_PUSH_SWITCH is not set | 220 | # CONFIG_PUSH_SWITCH is not set |
261 | 221 | ||
262 | # | 222 | # |
@@ -268,7 +228,7 @@ CONFIG_HZ_250=y | |||
268 | # CONFIG_HZ_1000 is not set | 228 | # CONFIG_HZ_1000 is not set |
269 | CONFIG_HZ=250 | 229 | CONFIG_HZ=250 |
270 | # CONFIG_KEXEC is not set | 230 | # CONFIG_KEXEC is not set |
271 | # CONFIG_SMP is not set | 231 | # CONFIG_CRASH_DUMP is not set |
272 | CONFIG_PREEMPT_NONE=y | 232 | CONFIG_PREEMPT_NONE=y |
273 | # CONFIG_PREEMPT_VOLUNTARY is not set | 233 | # CONFIG_PREEMPT_VOLUNTARY is not set |
274 | # CONFIG_PREEMPT is not set | 234 | # CONFIG_PREEMPT is not set |
@@ -289,15 +249,12 @@ CONFIG_PCI=y | |||
289 | CONFIG_SH_PCIDMA_NONCOHERENT=y | 249 | CONFIG_SH_PCIDMA_NONCOHERENT=y |
290 | CONFIG_PCI_AUTO=y | 250 | CONFIG_PCI_AUTO=y |
291 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y | 251 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y |
252 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
292 | 253 | ||
293 | # | 254 | # |
294 | # PCCARD (PCMCIA/CardBus) support | 255 | # PCCARD (PCMCIA/CardBus) support |
295 | # | 256 | # |
296 | # CONFIG_PCCARD is not set | 257 | # CONFIG_PCCARD is not set |
297 | |||
298 | # | ||
299 | # PCI Hotplug Support | ||
300 | # | ||
301 | CONFIG_HOTPLUG_PCI=y | 258 | CONFIG_HOTPLUG_PCI=y |
302 | # CONFIG_HOTPLUG_PCI_FAKE is not set | 259 | # CONFIG_HOTPLUG_PCI_FAKE is not set |
303 | # CONFIG_HOTPLUG_PCI_CPCI is not set | 260 | # CONFIG_HOTPLUG_PCI_CPCI is not set |
@@ -307,15 +264,9 @@ CONFIG_HOTPLUG_PCI=y | |||
307 | # Executable file formats | 264 | # Executable file formats |
308 | # | 265 | # |
309 | CONFIG_BINFMT_ELF=y | 266 | CONFIG_BINFMT_ELF=y |
310 | # CONFIG_BINFMT_FLAT is not set | ||
311 | # CONFIG_BINFMT_MISC is not set | 267 | # CONFIG_BINFMT_MISC is not set |
312 | 268 | ||
313 | # | 269 | # |
314 | # Power management options (EXPERIMENTAL) | ||
315 | # | ||
316 | # CONFIG_PM is not set | ||
317 | |||
318 | # | ||
319 | # Networking | 270 | # Networking |
320 | # | 271 | # |
321 | CONFIG_NET=y | 272 | CONFIG_NET=y |
@@ -323,7 +274,6 @@ CONFIG_NET=y | |||
323 | # | 274 | # |
324 | # Networking options | 275 | # Networking options |
325 | # | 276 | # |
326 | # CONFIG_NETDEBUG is not set | ||
327 | CONFIG_PACKET=y | 277 | CONFIG_PACKET=y |
328 | # CONFIG_PACKET_MMAP is not set | 278 | # CONFIG_PACKET_MMAP is not set |
329 | CONFIG_UNIX=y | 279 | CONFIG_UNIX=y |
@@ -360,20 +310,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
360 | # CONFIG_INET6_TUNNEL is not set | 310 | # CONFIG_INET6_TUNNEL is not set |
361 | # CONFIG_NETWORK_SECMARK is not set | 311 | # CONFIG_NETWORK_SECMARK is not set |
362 | # CONFIG_NETFILTER is not set | 312 | # CONFIG_NETFILTER is not set |
363 | |||
364 | # | ||
365 | # DCCP Configuration (EXPERIMENTAL) | ||
366 | # | ||
367 | # CONFIG_IP_DCCP is not set | 313 | # CONFIG_IP_DCCP is not set |
368 | |||
369 | # | ||
370 | # SCTP Configuration (EXPERIMENTAL) | ||
371 | # | ||
372 | # CONFIG_IP_SCTP is not set | 314 | # CONFIG_IP_SCTP is not set |
373 | |||
374 | # | ||
375 | # TIPC Configuration (EXPERIMENTAL) | ||
376 | # | ||
377 | # CONFIG_TIPC is not set | 315 | # CONFIG_TIPC is not set |
378 | # CONFIG_ATM is not set | 316 | # CONFIG_ATM is not set |
379 | # CONFIG_BRIDGE is not set | 317 | # CONFIG_BRIDGE is not set |
@@ -399,8 +337,17 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
399 | # CONFIG_HAMRADIO is not set | 337 | # CONFIG_HAMRADIO is not set |
400 | # CONFIG_IRDA is not set | 338 | # CONFIG_IRDA is not set |
401 | # CONFIG_BT is not set | 339 | # CONFIG_BT is not set |
402 | # CONFIG_IEEE80211 is not set | 340 | # CONFIG_AF_RXRPC is not set |
341 | |||
342 | # | ||
343 | # Wireless | ||
344 | # | ||
345 | # CONFIG_CFG80211 is not set | ||
403 | CONFIG_WIRELESS_EXT=y | 346 | CONFIG_WIRELESS_EXT=y |
347 | # CONFIG_MAC80211 is not set | ||
348 | # CONFIG_IEEE80211 is not set | ||
349 | # CONFIG_RFKILL is not set | ||
350 | # CONFIG_NET_9P is not set | ||
404 | 351 | ||
405 | # | 352 | # |
406 | # Device Drivers | 353 | # Device Drivers |
@@ -413,31 +360,10 @@ CONFIG_STANDALONE=y | |||
413 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 360 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
414 | CONFIG_FW_LOADER=m | 361 | CONFIG_FW_LOADER=m |
415 | # CONFIG_SYS_HYPERVISOR is not set | 362 | # CONFIG_SYS_HYPERVISOR is not set |
416 | |||
417 | # | ||
418 | # Connector - unified userspace <-> kernelspace linker | ||
419 | # | ||
420 | # CONFIG_CONNECTOR is not set | 363 | # CONFIG_CONNECTOR is not set |
421 | |||
422 | # | ||
423 | # Memory Technology Devices (MTD) | ||
424 | # | ||
425 | # CONFIG_MTD is not set | 364 | # CONFIG_MTD is not set |
426 | |||
427 | # | ||
428 | # Parallel port support | ||
429 | # | ||
430 | # CONFIG_PARPORT is not set | 365 | # CONFIG_PARPORT is not set |
431 | 366 | CONFIG_BLK_DEV=y | |
432 | # | ||
433 | # Plug and Play support | ||
434 | # | ||
435 | # CONFIG_PNPACPI is not set | ||
436 | |||
437 | # | ||
438 | # Block devices | ||
439 | # | ||
440 | # CONFIG_BLK_CPQ_DA is not set | ||
441 | # CONFIG_BLK_CPQ_CISS_DA is not set | 367 | # CONFIG_BLK_CPQ_CISS_DA is not set |
442 | # CONFIG_BLK_DEV_DAC960 is not set | 368 | # CONFIG_BLK_DEV_DAC960 is not set |
443 | # CONFIG_BLK_DEV_UMEM is not set | 369 | # CONFIG_BLK_DEV_UMEM is not set |
@@ -449,19 +375,13 @@ CONFIG_BLK_DEV_RAM=y | |||
449 | CONFIG_BLK_DEV_RAM_COUNT=16 | 375 | CONFIG_BLK_DEV_RAM_COUNT=16 |
450 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 376 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
451 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 377 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
452 | # CONFIG_BLK_DEV_INITRD is not set | ||
453 | # CONFIG_CDROM_PKTCDVD is not set | 378 | # CONFIG_CDROM_PKTCDVD is not set |
454 | # CONFIG_ATA_OVER_ETH is not set | 379 | # CONFIG_ATA_OVER_ETH is not set |
455 | 380 | CONFIG_MISC_DEVICES=y | |
456 | # | 381 | # CONFIG_PHANTOM is not set |
457 | # Misc devices | 382 | # CONFIG_EEPROM_93CX6 is not set |
458 | # | ||
459 | # CONFIG_SGI_IOC4 is not set | 383 | # CONFIG_SGI_IOC4 is not set |
460 | # CONFIG_TIFM_CORE is not set | 384 | # CONFIG_TIFM_CORE is not set |
461 | |||
462 | # | ||
463 | # ATA/ATAPI/MFM/RLL support | ||
464 | # | ||
465 | # CONFIG_IDE is not set | 385 | # CONFIG_IDE is not set |
466 | 386 | ||
467 | # | 387 | # |
@@ -469,6 +389,7 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | |||
469 | # | 389 | # |
470 | # CONFIG_RAID_ATTRS is not set | 390 | # CONFIG_RAID_ATTRS is not set |
471 | CONFIG_SCSI=y | 391 | CONFIG_SCSI=y |
392 | CONFIG_SCSI_DMA=y | ||
472 | # CONFIG_SCSI_TGT is not set | 393 | # CONFIG_SCSI_TGT is not set |
473 | # CONFIG_SCSI_NETLINK is not set | 394 | # CONFIG_SCSI_NETLINK is not set |
474 | CONFIG_SCSI_PROC_FS=y | 395 | CONFIG_SCSI_PROC_FS=y |
@@ -490,6 +411,7 @@ CONFIG_BLK_DEV_SD=y | |||
490 | # CONFIG_SCSI_CONSTANTS is not set | 411 | # CONFIG_SCSI_CONSTANTS is not set |
491 | # CONFIG_SCSI_LOGGING is not set | 412 | # CONFIG_SCSI_LOGGING is not set |
492 | # CONFIG_SCSI_SCAN_ASYNC is not set | 413 | # CONFIG_SCSI_SCAN_ASYNC is not set |
414 | CONFIG_SCSI_WAIT_SCAN=m | ||
493 | 415 | ||
494 | # | 416 | # |
495 | # SCSI Transports | 417 | # SCSI Transports |
@@ -497,12 +419,8 @@ CONFIG_BLK_DEV_SD=y | |||
497 | # CONFIG_SCSI_SPI_ATTRS is not set | 419 | # CONFIG_SCSI_SPI_ATTRS is not set |
498 | # CONFIG_SCSI_FC_ATTRS is not set | 420 | # CONFIG_SCSI_FC_ATTRS is not set |
499 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 421 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
500 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
501 | # CONFIG_SCSI_SAS_LIBSAS is not set | 422 | # CONFIG_SCSI_SAS_LIBSAS is not set |
502 | 423 | CONFIG_SCSI_LOWLEVEL=y | |
503 | # | ||
504 | # SCSI low-level drivers | ||
505 | # | ||
506 | # CONFIG_ISCSI_TCP is not set | 424 | # CONFIG_ISCSI_TCP is not set |
507 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 425 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
508 | # CONFIG_SCSI_3W_9XXX is not set | 426 | # CONFIG_SCSI_3W_9XXX is not set |
@@ -512,7 +430,6 @@ CONFIG_BLK_DEV_SD=y | |||
512 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 430 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
513 | # CONFIG_SCSI_AIC79XX is not set | 431 | # CONFIG_SCSI_AIC79XX is not set |
514 | # CONFIG_SCSI_AIC94XX is not set | 432 | # CONFIG_SCSI_AIC94XX is not set |
515 | # CONFIG_SCSI_DPT_I2O is not set | ||
516 | # CONFIG_SCSI_ARCMSR is not set | 433 | # CONFIG_SCSI_ARCMSR is not set |
517 | # CONFIG_MEGARAID_NEWGEN is not set | 434 | # CONFIG_MEGARAID_NEWGEN is not set |
518 | # CONFIG_MEGARAID_LEGACY is not set | 435 | # CONFIG_MEGARAID_LEGACY is not set |
@@ -535,10 +452,6 @@ CONFIG_BLK_DEV_SD=y | |||
535 | # CONFIG_SCSI_NSP32 is not set | 452 | # CONFIG_SCSI_NSP32 is not set |
536 | # CONFIG_SCSI_DEBUG is not set | 453 | # CONFIG_SCSI_DEBUG is not set |
537 | # CONFIG_SCSI_SRP is not set | 454 | # CONFIG_SCSI_SRP is not set |
538 | |||
539 | # | ||
540 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
541 | # | ||
542 | CONFIG_ATA=y | 455 | CONFIG_ATA=y |
543 | # CONFIG_ATA_NONSTANDARD is not set | 456 | # CONFIG_ATA_NONSTANDARD is not set |
544 | # CONFIG_SATA_AHCI is not set | 457 | # CONFIG_SATA_AHCI is not set |
@@ -561,6 +474,7 @@ CONFIG_ATA=y | |||
561 | # CONFIG_PATA_AMD is not set | 474 | # CONFIG_PATA_AMD is not set |
562 | # CONFIG_PATA_ARTOP is not set | 475 | # CONFIG_PATA_ARTOP is not set |
563 | # CONFIG_PATA_ATIIXP is not set | 476 | # CONFIG_PATA_ATIIXP is not set |
477 | # CONFIG_PATA_CMD640_PCI is not set | ||
564 | # CONFIG_PATA_CMD64X is not set | 478 | # CONFIG_PATA_CMD64X is not set |
565 | # CONFIG_PATA_CS5520 is not set | 479 | # CONFIG_PATA_CS5520 is not set |
566 | # CONFIG_PATA_CS5530 is not set | 480 | # CONFIG_PATA_CS5530 is not set |
@@ -593,10 +507,6 @@ CONFIG_ATA=y | |||
593 | # CONFIG_PATA_VIA is not set | 507 | # CONFIG_PATA_VIA is not set |
594 | # CONFIG_PATA_WINBOND is not set | 508 | # CONFIG_PATA_WINBOND is not set |
595 | CONFIG_PATA_PLATFORM=y | 509 | CONFIG_PATA_PLATFORM=y |
596 | |||
597 | # | ||
598 | # Multi-device support (RAID and LVM) | ||
599 | # | ||
600 | # CONFIG_MD is not set | 510 | # CONFIG_MD is not set |
601 | 511 | ||
602 | # | 512 | # |
@@ -610,35 +520,18 @@ CONFIG_PATA_PLATFORM=y | |||
610 | # | 520 | # |
611 | # IEEE 1394 (FireWire) support | 521 | # IEEE 1394 (FireWire) support |
612 | # | 522 | # |
523 | # CONFIG_FIREWIRE is not set | ||
613 | # CONFIG_IEEE1394 is not set | 524 | # CONFIG_IEEE1394 is not set |
614 | |||
615 | # | ||
616 | # I2O device support | ||
617 | # | ||
618 | # CONFIG_I2O is not set | 525 | # CONFIG_I2O is not set |
619 | |||
620 | # | ||
621 | # Network device support | ||
622 | # | ||
623 | CONFIG_NETDEVICES=y | 526 | CONFIG_NETDEVICES=y |
527 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
624 | # CONFIG_DUMMY is not set | 528 | # CONFIG_DUMMY is not set |
625 | # CONFIG_BONDING is not set | 529 | # CONFIG_BONDING is not set |
530 | # CONFIG_MACVLAN is not set | ||
626 | # CONFIG_EQUALIZER is not set | 531 | # CONFIG_EQUALIZER is not set |
627 | # CONFIG_TUN is not set | 532 | # CONFIG_TUN is not set |
628 | |||
629 | # | ||
630 | # ARCnet devices | ||
631 | # | ||
632 | # CONFIG_ARCNET is not set | 533 | # CONFIG_ARCNET is not set |
633 | |||
634 | # | ||
635 | # PHY device support | ||
636 | # | ||
637 | # CONFIG_PHYLIB is not set | 534 | # CONFIG_PHYLIB is not set |
638 | |||
639 | # | ||
640 | # Ethernet (10 or 100Mbit) | ||
641 | # | ||
642 | CONFIG_NET_ETHERNET=y | 535 | CONFIG_NET_ETHERNET=y |
643 | CONFIG_MII=y | 536 | CONFIG_MII=y |
644 | # CONFIG_STNIC is not set | 537 | # CONFIG_STNIC is not set |
@@ -647,10 +540,6 @@ CONFIG_MII=y | |||
647 | # CONFIG_CASSINI is not set | 540 | # CONFIG_CASSINI is not set |
648 | # CONFIG_NET_VENDOR_3COM is not set | 541 | # CONFIG_NET_VENDOR_3COM is not set |
649 | # CONFIG_SMC91X is not set | 542 | # CONFIG_SMC91X is not set |
650 | |||
651 | # | ||
652 | # Tulip family network device support | ||
653 | # | ||
654 | # CONFIG_NET_TULIP is not set | 543 | # CONFIG_NET_TULIP is not set |
655 | # CONFIG_HP100 is not set | 544 | # CONFIG_HP100 is not set |
656 | CONFIG_NET_PCI=y | 545 | CONFIG_NET_PCI=y |
@@ -677,10 +566,7 @@ CONFIG_8139TOO=y | |||
677 | # CONFIG_TLAN is not set | 566 | # CONFIG_TLAN is not set |
678 | # CONFIG_VIA_RHINE is not set | 567 | # CONFIG_VIA_RHINE is not set |
679 | # CONFIG_SC92031 is not set | 568 | # CONFIG_SC92031 is not set |
680 | 569 | CONFIG_NETDEV_1000=y | |
681 | # | ||
682 | # Ethernet (1000 Mbit) | ||
683 | # | ||
684 | # CONFIG_ACENIC is not set | 570 | # CONFIG_ACENIC is not set |
685 | # CONFIG_DL2K is not set | 571 | # CONFIG_DL2K is not set |
686 | # CONFIG_E1000 is not set | 572 | # CONFIG_E1000 is not set |
@@ -691,61 +577,26 @@ CONFIG_8139TOO=y | |||
691 | # CONFIG_SIS190 is not set | 577 | # CONFIG_SIS190 is not set |
692 | # CONFIG_SKGE is not set | 578 | # CONFIG_SKGE is not set |
693 | # CONFIG_SKY2 is not set | 579 | # CONFIG_SKY2 is not set |
694 | # CONFIG_SK98LIN is not set | ||
695 | # CONFIG_VIA_VELOCITY is not set | 580 | # CONFIG_VIA_VELOCITY is not set |
696 | # CONFIG_TIGON3 is not set | 581 | # CONFIG_TIGON3 is not set |
697 | # CONFIG_BNX2 is not set | 582 | # CONFIG_BNX2 is not set |
698 | # CONFIG_QLA3XXX is not set | 583 | # CONFIG_QLA3XXX is not set |
699 | # CONFIG_ATL1 is not set | 584 | # CONFIG_ATL1 is not set |
700 | 585 | CONFIG_NETDEV_10000=y | |
701 | # | ||
702 | # Ethernet (10000 Mbit) | ||
703 | # | ||
704 | # CONFIG_CHELSIO_T1 is not set | 586 | # CONFIG_CHELSIO_T1 is not set |
705 | # CONFIG_CHELSIO_T3 is not set | 587 | # CONFIG_CHELSIO_T3 is not set |
706 | # CONFIG_IXGB is not set | 588 | # CONFIG_IXGB is not set |
707 | # CONFIG_S2IO is not set | 589 | # CONFIG_S2IO is not set |
708 | # CONFIG_MYRI10GE is not set | 590 | # CONFIG_MYRI10GE is not set |
709 | # CONFIG_NETXEN_NIC is not set | 591 | # CONFIG_NETXEN_NIC is not set |
710 | 592 | # CONFIG_MLX4_CORE is not set | |
711 | # | ||
712 | # Token Ring devices | ||
713 | # | ||
714 | # CONFIG_TR is not set | 593 | # CONFIG_TR is not set |
715 | 594 | ||
716 | # | 595 | # |
717 | # Wireless LAN (non-hamradio) | 596 | # Wireless LAN |
718 | # | ||
719 | CONFIG_NET_RADIO=y | ||
720 | # CONFIG_NET_WIRELESS_RTNETLINK is not set | ||
721 | |||
722 | # | ||
723 | # Obsolete Wireless cards support (pre-802.11) | ||
724 | # | ||
725 | # CONFIG_STRIP is not set | ||
726 | |||
727 | # | ||
728 | # Wireless 802.11b ISA/PCI cards support | ||
729 | # | ||
730 | # CONFIG_IPW2100 is not set | ||
731 | # CONFIG_IPW2200 is not set | ||
732 | CONFIG_HERMES=m | ||
733 | # CONFIG_PLX_HERMES is not set | ||
734 | # CONFIG_TMD_HERMES is not set | ||
735 | # CONFIG_NORTEL_HERMES is not set | ||
736 | # CONFIG_PCI_HERMES is not set | ||
737 | # CONFIG_ATMEL is not set | ||
738 | |||
739 | # | ||
740 | # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support | ||
741 | # | ||
742 | # CONFIG_PRISM54 is not set | ||
743 | # CONFIG_HOSTAP is not set | ||
744 | CONFIG_NET_WIRELESS=y | ||
745 | |||
746 | # | ||
747 | # Wan interfaces | ||
748 | # | 597 | # |
598 | # CONFIG_WLAN_PRE80211 is not set | ||
599 | # CONFIG_WLAN_80211 is not set | ||
749 | # CONFIG_WAN is not set | 600 | # CONFIG_WAN is not set |
750 | # CONFIG_FDDI is not set | 601 | # CONFIG_FDDI is not set |
751 | # CONFIG_HIPPI is not set | 602 | # CONFIG_HIPPI is not set |
@@ -756,15 +607,7 @@ CONFIG_NET_WIRELESS=y | |||
756 | # CONFIG_NETCONSOLE is not set | 607 | # CONFIG_NETCONSOLE is not set |
757 | # CONFIG_NETPOLL is not set | 608 | # CONFIG_NETPOLL is not set |
758 | # CONFIG_NET_POLL_CONTROLLER is not set | 609 | # CONFIG_NET_POLL_CONTROLLER is not set |
759 | |||
760 | # | ||
761 | # ISDN subsystem | ||
762 | # | ||
763 | # CONFIG_ISDN is not set | 610 | # CONFIG_ISDN is not set |
764 | |||
765 | # | ||
766 | # Telephony Support | ||
767 | # | ||
768 | # CONFIG_PHONE is not set | 611 | # CONFIG_PHONE is not set |
769 | 612 | ||
770 | # | 613 | # |
@@ -772,6 +615,7 @@ CONFIG_NET_WIRELESS=y | |||
772 | # | 615 | # |
773 | CONFIG_INPUT=y | 616 | CONFIG_INPUT=y |
774 | # CONFIG_INPUT_FF_MEMLESS is not set | 617 | # CONFIG_INPUT_FF_MEMLESS is not set |
618 | # CONFIG_INPUT_POLLDEV is not set | ||
775 | 619 | ||
776 | # | 620 | # |
777 | # Userland interfaces | 621 | # Userland interfaces |
@@ -788,6 +632,7 @@ CONFIG_INPUT=y | |||
788 | # CONFIG_INPUT_KEYBOARD is not set | 632 | # CONFIG_INPUT_KEYBOARD is not set |
789 | # CONFIG_INPUT_MOUSE is not set | 633 | # CONFIG_INPUT_MOUSE is not set |
790 | # CONFIG_INPUT_JOYSTICK is not set | 634 | # CONFIG_INPUT_JOYSTICK is not set |
635 | # CONFIG_INPUT_TABLET is not set | ||
791 | # CONFIG_INPUT_TOUCHSCREEN is not set | 636 | # CONFIG_INPUT_TOUCHSCREEN is not set |
792 | # CONFIG_INPUT_MISC is not set | 637 | # CONFIG_INPUT_MISC is not set |
793 | 638 | ||
@@ -828,32 +673,15 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
828 | CONFIG_UNIX98_PTYS=y | 673 | CONFIG_UNIX98_PTYS=y |
829 | CONFIG_LEGACY_PTYS=y | 674 | CONFIG_LEGACY_PTYS=y |
830 | CONFIG_LEGACY_PTY_COUNT=256 | 675 | CONFIG_LEGACY_PTY_COUNT=256 |
831 | |||
832 | # | ||
833 | # IPMI | ||
834 | # | ||
835 | # CONFIG_IPMI_HANDLER is not set | 676 | # CONFIG_IPMI_HANDLER is not set |
836 | |||
837 | # | ||
838 | # Watchdog Cards | ||
839 | # | ||
840 | # CONFIG_WATCHDOG is not set | 677 | # CONFIG_WATCHDOG is not set |
841 | CONFIG_HW_RANDOM=y | 678 | CONFIG_HW_RANDOM=y |
842 | # CONFIG_GEN_RTC is not set | ||
843 | # CONFIG_DTLK is not set | ||
844 | # CONFIG_R3964 is not set | 679 | # CONFIG_R3964 is not set |
845 | # CONFIG_APPLICOM is not set | 680 | # CONFIG_APPLICOM is not set |
846 | # CONFIG_DRM is not set | 681 | # CONFIG_DRM is not set |
847 | # CONFIG_RAW_DRIVER is not set | 682 | # CONFIG_RAW_DRIVER is not set |
848 | |||
849 | # | ||
850 | # TPM devices | ||
851 | # | ||
852 | # CONFIG_TCG_TPM is not set | 683 | # CONFIG_TCG_TPM is not set |
853 | 684 | CONFIG_DEVPORT=y | |
854 | # | ||
855 | # I2C support | ||
856 | # | ||
857 | # CONFIG_I2C is not set | 685 | # CONFIG_I2C is not set |
858 | 686 | ||
859 | # | 687 | # |
@@ -861,21 +689,24 @@ CONFIG_HW_RANDOM=y | |||
861 | # | 689 | # |
862 | # CONFIG_SPI is not set | 690 | # CONFIG_SPI is not set |
863 | # CONFIG_SPI_MASTER is not set | 691 | # CONFIG_SPI_MASTER is not set |
864 | |||
865 | # | ||
866 | # Dallas's 1-wire bus | ||
867 | # | ||
868 | # CONFIG_W1 is not set | 692 | # CONFIG_W1 is not set |
869 | 693 | # CONFIG_POWER_SUPPLY is not set | |
870 | # | ||
871 | # Hardware Monitoring support | ||
872 | # | ||
873 | CONFIG_HWMON=y | 694 | CONFIG_HWMON=y |
874 | # CONFIG_HWMON_VID is not set | 695 | # CONFIG_HWMON_VID is not set |
875 | # CONFIG_SENSORS_ABITUGURU is not set | 696 | # CONFIG_SENSORS_ABITUGURU is not set |
697 | # CONFIG_SENSORS_ABITUGURU3 is not set | ||
876 | # CONFIG_SENSORS_F71805F is not set | 698 | # CONFIG_SENSORS_F71805F is not set |
699 | # CONFIG_SENSORS_IT87 is not set | ||
700 | # CONFIG_SENSORS_PC87360 is not set | ||
877 | # CONFIG_SENSORS_PC87427 is not set | 701 | # CONFIG_SENSORS_PC87427 is not set |
702 | # CONFIG_SENSORS_SIS5595 is not set | ||
703 | # CONFIG_SENSORS_SMSC47M1 is not set | ||
704 | # CONFIG_SENSORS_SMSC47B397 is not set | ||
705 | # CONFIG_SENSORS_VIA686A is not set | ||
878 | # CONFIG_SENSORS_VT1211 is not set | 706 | # CONFIG_SENSORS_VT1211 is not set |
707 | # CONFIG_SENSORS_VT8231 is not set | ||
708 | # CONFIG_SENSORS_W83627HF is not set | ||
709 | # CONFIG_SENSORS_W83627EHF is not set | ||
879 | # CONFIG_HWMON_DEBUG_CHIP is not set | 710 | # CONFIG_HWMON_DEBUG_CHIP is not set |
880 | 711 | ||
881 | # | 712 | # |
@@ -887,22 +718,31 @@ CONFIG_MFD_SM501=y | |||
887 | # Multimedia devices | 718 | # Multimedia devices |
888 | # | 719 | # |
889 | # CONFIG_VIDEO_DEV is not set | 720 | # CONFIG_VIDEO_DEV is not set |
721 | # CONFIG_DVB_CORE is not set | ||
722 | CONFIG_DAB=y | ||
890 | 723 | ||
891 | # | 724 | # |
892 | # Digital Video Broadcasting Devices | 725 | # Graphics support |
893 | # | 726 | # |
894 | # CONFIG_DVB is not set | 727 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
895 | 728 | ||
896 | # | 729 | # |
897 | # Graphics support | 730 | # Display device support |
898 | # | 731 | # |
899 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 732 | # CONFIG_DISPLAY_SUPPORT is not set |
733 | # CONFIG_VGASTATE is not set | ||
734 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
900 | CONFIG_FB=y | 735 | CONFIG_FB=y |
901 | # CONFIG_FIRMWARE_EDID is not set | 736 | # CONFIG_FIRMWARE_EDID is not set |
902 | # CONFIG_FB_DDC is not set | 737 | # CONFIG_FB_DDC is not set |
903 | CONFIG_FB_CFB_FILLRECT=y | 738 | CONFIG_FB_CFB_FILLRECT=y |
904 | CONFIG_FB_CFB_COPYAREA=y | 739 | CONFIG_FB_CFB_COPYAREA=y |
905 | CONFIG_FB_CFB_IMAGEBLIT=y | 740 | CONFIG_FB_CFB_IMAGEBLIT=y |
741 | # CONFIG_FB_SYS_FILLRECT is not set | ||
742 | # CONFIG_FB_SYS_COPYAREA is not set | ||
743 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
744 | # CONFIG_FB_SYS_FOPS is not set | ||
745 | CONFIG_FB_DEFERRED_IO=y | ||
906 | # CONFIG_FB_SVGALIB is not set | 746 | # CONFIG_FB_SVGALIB is not set |
907 | # CONFIG_FB_MACMODES is not set | 747 | # CONFIG_FB_MACMODES is not set |
908 | # CONFIG_FB_BACKLIGHT is not set | 748 | # CONFIG_FB_BACKLIGHT is not set |
@@ -910,14 +750,13 @@ CONFIG_FB_CFB_IMAGEBLIT=y | |||
910 | # CONFIG_FB_TILEBLITTING is not set | 750 | # CONFIG_FB_TILEBLITTING is not set |
911 | 751 | ||
912 | # | 752 | # |
913 | # Frambuffer hardware drivers | 753 | # Frame buffer hardware drivers |
914 | # | 754 | # |
915 | # CONFIG_FB_CIRRUS is not set | 755 | # CONFIG_FB_CIRRUS is not set |
916 | # CONFIG_FB_PM2 is not set | 756 | # CONFIG_FB_PM2 is not set |
917 | # CONFIG_FB_CYBER2000 is not set | 757 | # CONFIG_FB_CYBER2000 is not set |
918 | # CONFIG_FB_ASILIANT is not set | 758 | # CONFIG_FB_ASILIANT is not set |
919 | # CONFIG_FB_IMSTT is not set | 759 | # CONFIG_FB_IMSTT is not set |
920 | # CONFIG_FB_EPSON1355 is not set | ||
921 | # CONFIG_FB_S1D13XXX is not set | 760 | # CONFIG_FB_S1D13XXX is not set |
922 | # CONFIG_FB_NVIDIA is not set | 761 | # CONFIG_FB_NVIDIA is not set |
923 | # CONFIG_FB_RIVA is not set | 762 | # CONFIG_FB_RIVA is not set |
@@ -932,7 +771,10 @@ CONFIG_FB_CFB_IMAGEBLIT=y | |||
932 | # CONFIG_FB_KYRO is not set | 771 | # CONFIG_FB_KYRO is not set |
933 | # CONFIG_FB_3DFX is not set | 772 | # CONFIG_FB_3DFX is not set |
934 | # CONFIG_FB_VOODOO1 is not set | 773 | # CONFIG_FB_VOODOO1 is not set |
774 | # CONFIG_FB_VT8623 is not set | ||
935 | # CONFIG_FB_TRIDENT is not set | 775 | # CONFIG_FB_TRIDENT is not set |
776 | # CONFIG_FB_ARK is not set | ||
777 | # CONFIG_FB_PM3 is not set | ||
936 | CONFIG_FB_SM501=y | 778 | CONFIG_FB_SM501=y |
937 | # CONFIG_FB_VIRTUAL is not set | 779 | # CONFIG_FB_VIRTUAL is not set |
938 | 780 | ||
@@ -941,14 +783,11 @@ CONFIG_FB_SM501=y | |||
941 | # | 783 | # |
942 | CONFIG_DUMMY_CONSOLE=y | 784 | CONFIG_DUMMY_CONSOLE=y |
943 | CONFIG_FRAMEBUFFER_CONSOLE=y | 785 | CONFIG_FRAMEBUFFER_CONSOLE=y |
786 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
944 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | 787 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set |
945 | # CONFIG_FONTS is not set | 788 | # CONFIG_FONTS is not set |
946 | CONFIG_FONT_8x8=y | 789 | CONFIG_FONT_8x8=y |
947 | CONFIG_FONT_8x16=y | 790 | CONFIG_FONT_8x16=y |
948 | |||
949 | # | ||
950 | # Logo configuration | ||
951 | # | ||
952 | CONFIG_LOGO=y | 791 | CONFIG_LOGO=y |
953 | # CONFIG_LOGO_LINUX_MONO is not set | 792 | # CONFIG_LOGO_LINUX_MONO is not set |
954 | # CONFIG_LOGO_LINUX_VGA16 is not set | 793 | # CONFIG_LOGO_LINUX_VGA16 is not set |
@@ -1048,35 +887,34 @@ CONFIG_SND_AC97_CODEC=m | |||
1048 | # CONFIG_SND_VIA82XX_MODEM is not set | 887 | # CONFIG_SND_VIA82XX_MODEM is not set |
1049 | # CONFIG_SND_VX222 is not set | 888 | # CONFIG_SND_VX222 is not set |
1050 | CONFIG_SND_YMFPCI=m | 889 | CONFIG_SND_YMFPCI=m |
890 | CONFIG_SND_YMFPCI_FIRMWARE_IN_KERNEL=y | ||
1051 | # CONFIG_SND_AC97_POWER_SAVE is not set | 891 | # CONFIG_SND_AC97_POWER_SAVE is not set |
1052 | 892 | ||
1053 | # | 893 | # |
1054 | # SoC audio support | 894 | # SUPERH devices |
895 | # | ||
896 | |||
897 | # | ||
898 | # System on Chip audio support | ||
1055 | # | 899 | # |
1056 | # CONFIG_SND_SOC is not set | 900 | # CONFIG_SND_SOC is not set |
1057 | 901 | ||
1058 | # | 902 | # |
903 | # SoC Audio support for SuperH | ||
904 | # | ||
905 | |||
906 | # | ||
1059 | # Open Sound System | 907 | # Open Sound System |
1060 | # | 908 | # |
1061 | CONFIG_SOUND_PRIME=m | 909 | CONFIG_SOUND_PRIME=m |
1062 | # CONFIG_OBSOLETE_OSS is not set | ||
1063 | # CONFIG_SOUND_BT878 is not set | ||
1064 | # CONFIG_SOUND_ICH is not set | ||
1065 | # CONFIG_SOUND_TRIDENT is not set | 910 | # CONFIG_SOUND_TRIDENT is not set |
1066 | # CONFIG_SOUND_MSNDCLAS is not set | 911 | # CONFIG_SOUND_MSNDCLAS is not set |
1067 | # CONFIG_SOUND_MSNDPIN is not set | 912 | # CONFIG_SOUND_MSNDPIN is not set |
1068 | # CONFIG_SOUND_VIA82CXXX is not set | ||
1069 | CONFIG_AC97_BUS=m | 913 | CONFIG_AC97_BUS=m |
1070 | 914 | CONFIG_HID_SUPPORT=y | |
1071 | # | ||
1072 | # HID Devices | ||
1073 | # | ||
1074 | CONFIG_HID=y | 915 | CONFIG_HID=y |
1075 | # CONFIG_HID_DEBUG is not set | 916 | # CONFIG_HID_DEBUG is not set |
1076 | 917 | CONFIG_USB_SUPPORT=y | |
1077 | # | ||
1078 | # USB support | ||
1079 | # | ||
1080 | CONFIG_USB_ARCH_HAS_HCD=y | 918 | CONFIG_USB_ARCH_HAS_HCD=y |
1081 | CONFIG_USB_ARCH_HAS_OHCI=y | 919 | CONFIG_USB_ARCH_HAS_OHCI=y |
1082 | CONFIG_USB_ARCH_HAS_EHCI=y | 920 | CONFIG_USB_ARCH_HAS_EHCI=y |
@@ -1090,37 +928,9 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
1090 | # USB Gadget Support | 928 | # USB Gadget Support |
1091 | # | 929 | # |
1092 | # CONFIG_USB_GADGET is not set | 930 | # CONFIG_USB_GADGET is not set |
1093 | |||
1094 | # | ||
1095 | # MMC/SD Card support | ||
1096 | # | ||
1097 | # CONFIG_MMC is not set | 931 | # CONFIG_MMC is not set |
1098 | |||
1099 | # | ||
1100 | # LED devices | ||
1101 | # | ||
1102 | # CONFIG_NEW_LEDS is not set | 932 | # CONFIG_NEW_LEDS is not set |
1103 | |||
1104 | # | ||
1105 | # LED drivers | ||
1106 | # | ||
1107 | |||
1108 | # | ||
1109 | # LED Triggers | ||
1110 | # | ||
1111 | |||
1112 | # | ||
1113 | # InfiniBand support | ||
1114 | # | ||
1115 | # CONFIG_INFINIBAND is not set | 933 | # CONFIG_INFINIBAND is not set |
1116 | |||
1117 | # | ||
1118 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
1119 | # | ||
1120 | |||
1121 | # | ||
1122 | # Real Time Clock | ||
1123 | # | ||
1124 | CONFIG_RTC_LIB=y | 934 | CONFIG_RTC_LIB=y |
1125 | CONFIG_RTC_CLASS=y | 935 | CONFIG_RTC_CLASS=y |
1126 | CONFIG_RTC_HCTOSYS=y | 936 | CONFIG_RTC_HCTOSYS=y |
@@ -1134,18 +944,28 @@ CONFIG_RTC_INTF_SYSFS=y | |||
1134 | CONFIG_RTC_INTF_PROC=y | 944 | CONFIG_RTC_INTF_PROC=y |
1135 | CONFIG_RTC_INTF_DEV=y | 945 | CONFIG_RTC_INTF_DEV=y |
1136 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | 946 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set |
947 | # CONFIG_RTC_DRV_TEST is not set | ||
948 | |||
949 | # | ||
950 | # SPI RTC drivers | ||
951 | # | ||
1137 | 952 | ||
1138 | # | 953 | # |
1139 | # RTC drivers | 954 | # Platform RTC drivers |
1140 | # | 955 | # |
1141 | # CONFIG_RTC_DRV_DS1553 is not set | 956 | # CONFIG_RTC_DRV_DS1553 is not set |
957 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
1142 | # CONFIG_RTC_DRV_DS1742 is not set | 958 | # CONFIG_RTC_DRV_DS1742 is not set |
1143 | # CONFIG_RTC_DRV_M48T86 is not set | 959 | # CONFIG_RTC_DRV_M48T86 is not set |
1144 | CONFIG_RTC_DRV_SH=y | 960 | # CONFIG_RTC_DRV_M48T59 is not set |
1145 | # CONFIG_RTC_DRV_TEST is not set | ||
1146 | # CONFIG_RTC_DRV_V3020 is not set | 961 | # CONFIG_RTC_DRV_V3020 is not set |
1147 | 962 | ||
1148 | # | 963 | # |
964 | # on-CPU RTC drivers | ||
965 | # | ||
966 | CONFIG_RTC_DRV_SH=y | ||
967 | |||
968 | # | ||
1149 | # DMA Engine support | 969 | # DMA Engine support |
1150 | # | 970 | # |
1151 | # CONFIG_DMA_ENGINE is not set | 971 | # CONFIG_DMA_ENGINE is not set |
@@ -1159,12 +979,9 @@ CONFIG_RTC_DRV_SH=y | |||
1159 | # | 979 | # |
1160 | 980 | ||
1161 | # | 981 | # |
1162 | # Auxiliary Display support | 982 | # Userspace I/O |
1163 | # | ||
1164 | |||
1165 | # | ||
1166 | # Virtualization | ||
1167 | # | 983 | # |
984 | # CONFIG_UIO is not set | ||
1168 | 985 | ||
1169 | # | 986 | # |
1170 | # File systems | 987 | # File systems |
@@ -1247,7 +1064,6 @@ CONFIG_RAMFS=y | |||
1247 | # CONFIG_NCP_FS is not set | 1064 | # CONFIG_NCP_FS is not set |
1248 | # CONFIG_CODA_FS is not set | 1065 | # CONFIG_CODA_FS is not set |
1249 | # CONFIG_AFS_FS is not set | 1066 | # CONFIG_AFS_FS is not set |
1250 | # CONFIG_9P_FS is not set | ||
1251 | 1067 | ||
1252 | # | 1068 | # |
1253 | # Partition Types | 1069 | # Partition Types |
@@ -1321,7 +1137,6 @@ CONFIG_ENABLE_MUST_CHECK=y | |||
1321 | # CONFIG_DEBUG_FS is not set | 1137 | # CONFIG_DEBUG_FS is not set |
1322 | # CONFIG_HEADERS_CHECK is not set | 1138 | # CONFIG_HEADERS_CHECK is not set |
1323 | # CONFIG_DEBUG_KERNEL is not set | 1139 | # CONFIG_DEBUG_KERNEL is not set |
1324 | CONFIG_LOG_BUF_SHIFT=14 | ||
1325 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1140 | # CONFIG_DEBUG_BUGVERBOSE is not set |
1326 | # CONFIG_SH_STANDARD_BIOS is not set | 1141 | # CONFIG_SH_STANDARD_BIOS is not set |
1327 | CONFIG_EARLY_SCIF_CONSOLE=y | 1142 | CONFIG_EARLY_SCIF_CONSOLE=y |
@@ -1334,10 +1149,6 @@ CONFIG_EARLY_PRINTK=y | |||
1334 | # | 1149 | # |
1335 | # CONFIG_KEYS is not set | 1150 | # CONFIG_KEYS is not set |
1336 | # CONFIG_SECURITY is not set | 1151 | # CONFIG_SECURITY is not set |
1337 | |||
1338 | # | ||
1339 | # Cryptographic options | ||
1340 | # | ||
1341 | # CONFIG_CRYPTO is not set | 1152 | # CONFIG_CRYPTO is not set |
1342 | 1153 | ||
1343 | # | 1154 | # |
@@ -1346,8 +1157,11 @@ CONFIG_EARLY_PRINTK=y | |||
1346 | CONFIG_BITREVERSE=y | 1157 | CONFIG_BITREVERSE=y |
1347 | # CONFIG_CRC_CCITT is not set | 1158 | # CONFIG_CRC_CCITT is not set |
1348 | # CONFIG_CRC16 is not set | 1159 | # CONFIG_CRC16 is not set |
1160 | # CONFIG_CRC_ITU_T is not set | ||
1349 | CONFIG_CRC32=y | 1161 | CONFIG_CRC32=y |
1162 | # CONFIG_CRC7 is not set | ||
1350 | # CONFIG_LIBCRC32C is not set | 1163 | # CONFIG_LIBCRC32C is not set |
1351 | CONFIG_PLIST=y | 1164 | CONFIG_PLIST=y |
1352 | CONFIG_HAS_IOMEM=y | 1165 | CONFIG_HAS_IOMEM=y |
1353 | CONFIG_HAS_IOPORT=y | 1166 | CONFIG_HAS_IOPORT=y |
1167 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/sh/configs/rts7751r2dplus_defconfig b/arch/sh/configs/rts7751r2dplus_defconfig new file mode 100644 index 000000000000..4ff5a752dcd9 --- /dev/null +++ b/arch/sh/configs/rts7751r2dplus_defconfig | |||
@@ -0,0 +1,1167 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.23-rc2 | ||
4 | # Tue Aug 14 16:33:08 2007 | ||
5 | # | ||
6 | CONFIG_SUPERH=y | ||
7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
8 | CONFIG_GENERIC_BUG=y | ||
9 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
10 | CONFIG_GENERIC_HWEIGHT=y | ||
11 | CONFIG_GENERIC_HARDIRQS=y | ||
12 | CONFIG_GENERIC_IRQ_PROBE=y | ||
13 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
14 | CONFIG_GENERIC_TIME=y | ||
15 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
16 | CONFIG_SYS_SUPPORTS_PCI=y | ||
17 | CONFIG_STACKTRACE_SUPPORT=y | ||
18 | CONFIG_LOCKDEP_SUPPORT=y | ||
19 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
20 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
21 | CONFIG_ARCH_NO_VIRT_TO_BUS=y | ||
22 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
23 | |||
24 | # | ||
25 | # General setup | ||
26 | # | ||
27 | CONFIG_EXPERIMENTAL=y | ||
28 | CONFIG_BROKEN_ON_SMP=y | ||
29 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
30 | CONFIG_LOCALVERSION="" | ||
31 | CONFIG_LOCALVERSION_AUTO=y | ||
32 | CONFIG_SWAP=y | ||
33 | CONFIG_SYSVIPC=y | ||
34 | CONFIG_SYSVIPC_SYSCTL=y | ||
35 | # CONFIG_POSIX_MQUEUE is not set | ||
36 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
37 | # CONFIG_TASKSTATS is not set | ||
38 | # CONFIG_USER_NS is not set | ||
39 | # CONFIG_AUDIT is not set | ||
40 | # CONFIG_IKCONFIG is not set | ||
41 | CONFIG_LOG_BUF_SHIFT=14 | ||
42 | CONFIG_SYSFS_DEPRECATED=y | ||
43 | # CONFIG_RELAY is not set | ||
44 | # CONFIG_BLK_DEV_INITRD is not set | ||
45 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
46 | CONFIG_SYSCTL=y | ||
47 | CONFIG_EMBEDDED=y | ||
48 | CONFIG_UID16=y | ||
49 | # CONFIG_SYSCTL_SYSCALL is not set | ||
50 | CONFIG_KALLSYMS=y | ||
51 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
52 | CONFIG_HOTPLUG=y | ||
53 | CONFIG_PRINTK=y | ||
54 | CONFIG_BUG=y | ||
55 | CONFIG_ELF_CORE=y | ||
56 | CONFIG_BASE_FULL=y | ||
57 | CONFIG_FUTEX=y | ||
58 | CONFIG_ANON_INODES=y | ||
59 | CONFIG_EPOLL=y | ||
60 | CONFIG_SIGNALFD=y | ||
61 | CONFIG_TIMERFD=y | ||
62 | CONFIG_EVENTFD=y | ||
63 | CONFIG_SHMEM=y | ||
64 | CONFIG_VM_EVENT_COUNTERS=y | ||
65 | CONFIG_SLAB=y | ||
66 | # CONFIG_SLUB is not set | ||
67 | # CONFIG_SLOB is not set | ||
68 | CONFIG_RT_MUTEXES=y | ||
69 | # CONFIG_TINY_SHMEM is not set | ||
70 | CONFIG_BASE_SMALL=0 | ||
71 | CONFIG_MODULES=y | ||
72 | # CONFIG_MODULE_UNLOAD is not set | ||
73 | # CONFIG_MODVERSIONS is not set | ||
74 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
75 | # CONFIG_KMOD is not set | ||
76 | CONFIG_BLOCK=y | ||
77 | # CONFIG_LBD is not set | ||
78 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
79 | # CONFIG_LSF is not set | ||
80 | # CONFIG_BLK_DEV_BSG is not set | ||
81 | |||
82 | # | ||
83 | # IO Schedulers | ||
84 | # | ||
85 | CONFIG_IOSCHED_NOOP=y | ||
86 | CONFIG_IOSCHED_AS=y | ||
87 | CONFIG_IOSCHED_DEADLINE=y | ||
88 | CONFIG_IOSCHED_CFQ=y | ||
89 | CONFIG_DEFAULT_AS=y | ||
90 | # CONFIG_DEFAULT_DEADLINE is not set | ||
91 | # CONFIG_DEFAULT_CFQ is not set | ||
92 | # CONFIG_DEFAULT_NOOP is not set | ||
93 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
94 | |||
95 | # | ||
96 | # System type | ||
97 | # | ||
98 | CONFIG_CPU_SH4=y | ||
99 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | ||
100 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | ||
101 | # CONFIG_CPU_SUBTYPE_SH7705 is not set | ||
102 | # CONFIG_CPU_SUBTYPE_SH7706 is not set | ||
103 | # CONFIG_CPU_SUBTYPE_SH7707 is not set | ||
104 | # CONFIG_CPU_SUBTYPE_SH7708 is not set | ||
105 | # CONFIG_CPU_SUBTYPE_SH7709 is not set | ||
106 | # CONFIG_CPU_SUBTYPE_SH7710 is not set | ||
107 | # CONFIG_CPU_SUBTYPE_SH7712 is not set | ||
108 | # CONFIG_CPU_SUBTYPE_SH7750 is not set | ||
109 | # CONFIG_CPU_SUBTYPE_SH7091 is not set | ||
110 | # CONFIG_CPU_SUBTYPE_SH7750R is not set | ||
111 | # CONFIG_CPU_SUBTYPE_SH7750S is not set | ||
112 | # CONFIG_CPU_SUBTYPE_SH7751 is not set | ||
113 | CONFIG_CPU_SUBTYPE_SH7751R=y | ||
114 | # CONFIG_CPU_SUBTYPE_SH7760 is not set | ||
115 | # CONFIG_CPU_SUBTYPE_SH4_202 is not set | ||
116 | # CONFIG_CPU_SUBTYPE_ST40STB1 is not set | ||
117 | # CONFIG_CPU_SUBTYPE_ST40GX1 is not set | ||
118 | # CONFIG_CPU_SUBTYPE_SH7770 is not set | ||
119 | # CONFIG_CPU_SUBTYPE_SH7780 is not set | ||
120 | # CONFIG_CPU_SUBTYPE_SH7785 is not set | ||
121 | # CONFIG_CPU_SUBTYPE_SHX3 is not set | ||
122 | # CONFIG_CPU_SUBTYPE_SH7343 is not set | ||
123 | # CONFIG_CPU_SUBTYPE_SH7722 is not set | ||
124 | |||
125 | # | ||
126 | # Memory management options | ||
127 | # | ||
128 | CONFIG_QUICKLIST=y | ||
129 | CONFIG_MMU=y | ||
130 | CONFIG_PAGE_OFFSET=0x80000000 | ||
131 | CONFIG_MEMORY_START=0x0c000000 | ||
132 | CONFIG_MEMORY_SIZE=0x04000000 | ||
133 | CONFIG_VSYSCALL=y | ||
134 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
135 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | ||
136 | CONFIG_ARCH_SPARSEMEM_DEFAULT=y | ||
137 | CONFIG_MAX_ACTIVE_REGIONS=1 | ||
138 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
139 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | ||
140 | CONFIG_PAGE_SIZE_4KB=y | ||
141 | # CONFIG_PAGE_SIZE_8KB is not set | ||
142 | # CONFIG_PAGE_SIZE_64KB is not set | ||
143 | CONFIG_SELECT_MEMORY_MODEL=y | ||
144 | CONFIG_FLATMEM_MANUAL=y | ||
145 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
146 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
147 | CONFIG_FLATMEM=y | ||
148 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
149 | CONFIG_SPARSEMEM_STATIC=y | ||
150 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
151 | # CONFIG_RESOURCES_64BIT is not set | ||
152 | CONFIG_ZONE_DMA_FLAG=0 | ||
153 | CONFIG_NR_QUICK=2 | ||
154 | |||
155 | # | ||
156 | # Cache configuration | ||
157 | # | ||
158 | # CONFIG_SH_DIRECT_MAPPED is not set | ||
159 | CONFIG_CACHE_WRITEBACK=y | ||
160 | # CONFIG_CACHE_WRITETHROUGH is not set | ||
161 | # CONFIG_CACHE_OFF is not set | ||
162 | |||
163 | # | ||
164 | # Processor features | ||
165 | # | ||
166 | CONFIG_CPU_LITTLE_ENDIAN=y | ||
167 | # CONFIG_CPU_BIG_ENDIAN is not set | ||
168 | CONFIG_SH_FPU=y | ||
169 | # CONFIG_SH_STORE_QUEUES is not set | ||
170 | CONFIG_CPU_HAS_INTEVT=y | ||
171 | CONFIG_CPU_HAS_INTC_IRQ=y | ||
172 | CONFIG_CPU_HAS_SR_RB=y | ||
173 | CONFIG_CPU_HAS_PTEA=y | ||
174 | |||
175 | # | ||
176 | # Board support | ||
177 | # | ||
178 | # CONFIG_SH_7751_SYSTEMH is not set | ||
179 | # CONFIG_SH_SECUREEDGE5410 is not set | ||
180 | # CONFIG_SH_HS7751RVOIP is not set | ||
181 | CONFIG_SH_RTS7751R2D=y | ||
182 | # CONFIG_SH_LANDISK is not set | ||
183 | # CONFIG_SH_TITAN is not set | ||
184 | # CONFIG_SH_LBOX_RE2 is not set | ||
185 | |||
186 | # | ||
187 | # RTS7751R2D options | ||
188 | # | ||
189 | CONFIG_RTS7751R2D_PLUS=y | ||
190 | # CONFIG_RTS7751R2D_1 is not set | ||
191 | |||
192 | # | ||
193 | # Timer and clock configuration | ||
194 | # | ||
195 | CONFIG_SH_TMU=y | ||
196 | CONFIG_SH_TIMER_IRQ=16 | ||
197 | CONFIG_SH_PCLK_FREQ=60000000 | ||
198 | # CONFIG_TICK_ONESHOT is not set | ||
199 | # CONFIG_NO_HZ is not set | ||
200 | # CONFIG_HIGH_RES_TIMERS is not set | ||
201 | |||
202 | # | ||
203 | # CPU Frequency scaling | ||
204 | # | ||
205 | # CONFIG_CPU_FREQ is not set | ||
206 | |||
207 | # | ||
208 | # DMA support | ||
209 | # | ||
210 | # CONFIG_SH_DMA is not set | ||
211 | |||
212 | # | ||
213 | # Companion Chips | ||
214 | # | ||
215 | |||
216 | # | ||
217 | # Additional SuperH Device Drivers | ||
218 | # | ||
219 | CONFIG_HEARTBEAT=y | ||
220 | # CONFIG_PUSH_SWITCH is not set | ||
221 | |||
222 | # | ||
223 | # Kernel features | ||
224 | # | ||
225 | # CONFIG_HZ_100 is not set | ||
226 | CONFIG_HZ_250=y | ||
227 | # CONFIG_HZ_300 is not set | ||
228 | # CONFIG_HZ_1000 is not set | ||
229 | CONFIG_HZ=250 | ||
230 | # CONFIG_KEXEC is not set | ||
231 | # CONFIG_CRASH_DUMP is not set | ||
232 | CONFIG_PREEMPT_NONE=y | ||
233 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
234 | # CONFIG_PREEMPT is not set | ||
235 | |||
236 | # | ||
237 | # Boot options | ||
238 | # | ||
239 | CONFIG_ZERO_PAGE_OFFSET=0x00010000 | ||
240 | CONFIG_BOOT_LINK_OFFSET=0x00800000 | ||
241 | # CONFIG_UBC_WAKEUP is not set | ||
242 | CONFIG_CMDLINE_BOOL=y | ||
243 | CONFIG_CMDLINE="console=tty0 console=ttySC0,115200 root=/dev/sda1 earlyprintk=serial" | ||
244 | |||
245 | # | ||
246 | # Bus options | ||
247 | # | ||
248 | CONFIG_PCI=y | ||
249 | CONFIG_SH_PCIDMA_NONCOHERENT=y | ||
250 | CONFIG_PCI_AUTO=y | ||
251 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y | ||
252 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
253 | |||
254 | # | ||
255 | # PCCARD (PCMCIA/CardBus) support | ||
256 | # | ||
257 | # CONFIG_PCCARD is not set | ||
258 | CONFIG_HOTPLUG_PCI=y | ||
259 | # CONFIG_HOTPLUG_PCI_FAKE is not set | ||
260 | # CONFIG_HOTPLUG_PCI_CPCI is not set | ||
261 | # CONFIG_HOTPLUG_PCI_SHPC is not set | ||
262 | |||
263 | # | ||
264 | # Executable file formats | ||
265 | # | ||
266 | CONFIG_BINFMT_ELF=y | ||
267 | # CONFIG_BINFMT_MISC is not set | ||
268 | |||
269 | # | ||
270 | # Networking | ||
271 | # | ||
272 | CONFIG_NET=y | ||
273 | |||
274 | # | ||
275 | # Networking options | ||
276 | # | ||
277 | CONFIG_PACKET=y | ||
278 | # CONFIG_PACKET_MMAP is not set | ||
279 | CONFIG_UNIX=y | ||
280 | CONFIG_XFRM=y | ||
281 | # CONFIG_XFRM_USER is not set | ||
282 | # CONFIG_XFRM_SUB_POLICY is not set | ||
283 | # CONFIG_XFRM_MIGRATE is not set | ||
284 | # CONFIG_NET_KEY is not set | ||
285 | CONFIG_INET=y | ||
286 | # CONFIG_IP_MULTICAST is not set | ||
287 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
288 | CONFIG_IP_FIB_HASH=y | ||
289 | # CONFIG_IP_PNP is not set | ||
290 | # CONFIG_NET_IPIP is not set | ||
291 | # CONFIG_NET_IPGRE is not set | ||
292 | # CONFIG_ARPD is not set | ||
293 | # CONFIG_SYN_COOKIES is not set | ||
294 | # CONFIG_INET_AH is not set | ||
295 | # CONFIG_INET_ESP is not set | ||
296 | # CONFIG_INET_IPCOMP is not set | ||
297 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
298 | # CONFIG_INET_TUNNEL is not set | ||
299 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
300 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
301 | CONFIG_INET_XFRM_MODE_BEET=y | ||
302 | CONFIG_INET_DIAG=y | ||
303 | CONFIG_INET_TCP_DIAG=y | ||
304 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
305 | CONFIG_TCP_CONG_CUBIC=y | ||
306 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
307 | # CONFIG_TCP_MD5SIG is not set | ||
308 | # CONFIG_IPV6 is not set | ||
309 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
310 | # CONFIG_INET6_TUNNEL is not set | ||
311 | # CONFIG_NETWORK_SECMARK is not set | ||
312 | # CONFIG_NETFILTER is not set | ||
313 | # CONFIG_IP_DCCP is not set | ||
314 | # CONFIG_IP_SCTP is not set | ||
315 | # CONFIG_TIPC is not set | ||
316 | # CONFIG_ATM is not set | ||
317 | # CONFIG_BRIDGE is not set | ||
318 | # CONFIG_VLAN_8021Q is not set | ||
319 | # CONFIG_DECNET is not set | ||
320 | # CONFIG_LLC2 is not set | ||
321 | # CONFIG_IPX is not set | ||
322 | # CONFIG_ATALK is not set | ||
323 | # CONFIG_X25 is not set | ||
324 | # CONFIG_LAPB is not set | ||
325 | # CONFIG_ECONET is not set | ||
326 | # CONFIG_WAN_ROUTER is not set | ||
327 | |||
328 | # | ||
329 | # QoS and/or fair queueing | ||
330 | # | ||
331 | # CONFIG_NET_SCHED is not set | ||
332 | |||
333 | # | ||
334 | # Network testing | ||
335 | # | ||
336 | # CONFIG_NET_PKTGEN is not set | ||
337 | # CONFIG_HAMRADIO is not set | ||
338 | # CONFIG_IRDA is not set | ||
339 | # CONFIG_BT is not set | ||
340 | # CONFIG_AF_RXRPC is not set | ||
341 | |||
342 | # | ||
343 | # Wireless | ||
344 | # | ||
345 | # CONFIG_CFG80211 is not set | ||
346 | CONFIG_WIRELESS_EXT=y | ||
347 | # CONFIG_MAC80211 is not set | ||
348 | # CONFIG_IEEE80211 is not set | ||
349 | # CONFIG_RFKILL is not set | ||
350 | # CONFIG_NET_9P is not set | ||
351 | |||
352 | # | ||
353 | # Device Drivers | ||
354 | # | ||
355 | |||
356 | # | ||
357 | # Generic Driver Options | ||
358 | # | ||
359 | CONFIG_STANDALONE=y | ||
360 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
361 | CONFIG_FW_LOADER=m | ||
362 | # CONFIG_SYS_HYPERVISOR is not set | ||
363 | # CONFIG_CONNECTOR is not set | ||
364 | # CONFIG_MTD is not set | ||
365 | # CONFIG_PARPORT is not set | ||
366 | CONFIG_BLK_DEV=y | ||
367 | # CONFIG_BLK_CPQ_CISS_DA is not set | ||
368 | # CONFIG_BLK_DEV_DAC960 is not set | ||
369 | # CONFIG_BLK_DEV_UMEM is not set | ||
370 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
371 | # CONFIG_BLK_DEV_LOOP is not set | ||
372 | # CONFIG_BLK_DEV_NBD is not set | ||
373 | # CONFIG_BLK_DEV_SX8 is not set | ||
374 | CONFIG_BLK_DEV_RAM=y | ||
375 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
376 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
377 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
378 | # CONFIG_CDROM_PKTCDVD is not set | ||
379 | # CONFIG_ATA_OVER_ETH is not set | ||
380 | CONFIG_MISC_DEVICES=y | ||
381 | # CONFIG_PHANTOM is not set | ||
382 | # CONFIG_EEPROM_93CX6 is not set | ||
383 | # CONFIG_SGI_IOC4 is not set | ||
384 | # CONFIG_TIFM_CORE is not set | ||
385 | # CONFIG_IDE is not set | ||
386 | |||
387 | # | ||
388 | # SCSI device support | ||
389 | # | ||
390 | # CONFIG_RAID_ATTRS is not set | ||
391 | CONFIG_SCSI=y | ||
392 | CONFIG_SCSI_DMA=y | ||
393 | # CONFIG_SCSI_TGT is not set | ||
394 | # CONFIG_SCSI_NETLINK is not set | ||
395 | CONFIG_SCSI_PROC_FS=y | ||
396 | |||
397 | # | ||
398 | # SCSI support type (disk, tape, CD-ROM) | ||
399 | # | ||
400 | CONFIG_BLK_DEV_SD=y | ||
401 | # CONFIG_CHR_DEV_ST is not set | ||
402 | # CONFIG_CHR_DEV_OSST is not set | ||
403 | # CONFIG_BLK_DEV_SR is not set | ||
404 | # CONFIG_CHR_DEV_SG is not set | ||
405 | # CONFIG_CHR_DEV_SCH is not set | ||
406 | |||
407 | # | ||
408 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
409 | # | ||
410 | # CONFIG_SCSI_MULTI_LUN is not set | ||
411 | # CONFIG_SCSI_CONSTANTS is not set | ||
412 | # CONFIG_SCSI_LOGGING is not set | ||
413 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
414 | CONFIG_SCSI_WAIT_SCAN=m | ||
415 | |||
416 | # | ||
417 | # SCSI Transports | ||
418 | # | ||
419 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
420 | # CONFIG_SCSI_FC_ATTRS is not set | ||
421 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
422 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
423 | CONFIG_SCSI_LOWLEVEL=y | ||
424 | # CONFIG_ISCSI_TCP is not set | ||
425 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | ||
426 | # CONFIG_SCSI_3W_9XXX is not set | ||
427 | # CONFIG_SCSI_ACARD is not set | ||
428 | # CONFIG_SCSI_AACRAID is not set | ||
429 | # CONFIG_SCSI_AIC7XXX is not set | ||
430 | # CONFIG_SCSI_AIC7XXX_OLD is not set | ||
431 | # CONFIG_SCSI_AIC79XX is not set | ||
432 | # CONFIG_SCSI_AIC94XX is not set | ||
433 | # CONFIG_SCSI_ARCMSR is not set | ||
434 | # CONFIG_MEGARAID_NEWGEN is not set | ||
435 | # CONFIG_MEGARAID_LEGACY is not set | ||
436 | # CONFIG_MEGARAID_SAS is not set | ||
437 | # CONFIG_SCSI_HPTIOP is not set | ||
438 | # CONFIG_SCSI_DMX3191D is not set | ||
439 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | ||
440 | # CONFIG_SCSI_IPS is not set | ||
441 | # CONFIG_SCSI_INITIO is not set | ||
442 | # CONFIG_SCSI_INIA100 is not set | ||
443 | # CONFIG_SCSI_STEX is not set | ||
444 | # CONFIG_SCSI_SYM53C8XX_2 is not set | ||
445 | # CONFIG_SCSI_IPR is not set | ||
446 | # CONFIG_SCSI_QLOGIC_1280 is not set | ||
447 | # CONFIG_SCSI_QLA_FC is not set | ||
448 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
449 | # CONFIG_SCSI_LPFC is not set | ||
450 | # CONFIG_SCSI_DC395x is not set | ||
451 | # CONFIG_SCSI_DC390T is not set | ||
452 | # CONFIG_SCSI_NSP32 is not set | ||
453 | # CONFIG_SCSI_DEBUG is not set | ||
454 | # CONFIG_SCSI_SRP is not set | ||
455 | CONFIG_ATA=y | ||
456 | # CONFIG_ATA_NONSTANDARD is not set | ||
457 | # CONFIG_SATA_AHCI is not set | ||
458 | # CONFIG_SATA_SVW is not set | ||
459 | # CONFIG_ATA_PIIX is not set | ||
460 | # CONFIG_SATA_MV is not set | ||
461 | # CONFIG_SATA_NV is not set | ||
462 | # CONFIG_PDC_ADMA is not set | ||
463 | # CONFIG_SATA_QSTOR is not set | ||
464 | # CONFIG_SATA_PROMISE is not set | ||
465 | # CONFIG_SATA_SX4 is not set | ||
466 | # CONFIG_SATA_SIL is not set | ||
467 | # CONFIG_SATA_SIL24 is not set | ||
468 | # CONFIG_SATA_SIS is not set | ||
469 | # CONFIG_SATA_ULI is not set | ||
470 | # CONFIG_SATA_VIA is not set | ||
471 | # CONFIG_SATA_VITESSE is not set | ||
472 | # CONFIG_SATA_INIC162X is not set | ||
473 | # CONFIG_PATA_ALI is not set | ||
474 | # CONFIG_PATA_AMD is not set | ||
475 | # CONFIG_PATA_ARTOP is not set | ||
476 | # CONFIG_PATA_ATIIXP is not set | ||
477 | # CONFIG_PATA_CMD640_PCI is not set | ||
478 | # CONFIG_PATA_CMD64X is not set | ||
479 | # CONFIG_PATA_CS5520 is not set | ||
480 | # CONFIG_PATA_CS5530 is not set | ||
481 | # CONFIG_PATA_CYPRESS is not set | ||
482 | # CONFIG_PATA_EFAR is not set | ||
483 | # CONFIG_ATA_GENERIC is not set | ||
484 | # CONFIG_PATA_HPT366 is not set | ||
485 | # CONFIG_PATA_HPT37X is not set | ||
486 | # CONFIG_PATA_HPT3X2N is not set | ||
487 | # CONFIG_PATA_HPT3X3 is not set | ||
488 | # CONFIG_PATA_IT821X is not set | ||
489 | # CONFIG_PATA_IT8213 is not set | ||
490 | # CONFIG_PATA_JMICRON is not set | ||
491 | # CONFIG_PATA_TRIFLEX is not set | ||
492 | # CONFIG_PATA_MARVELL is not set | ||
493 | # CONFIG_PATA_MPIIX is not set | ||
494 | # CONFIG_PATA_OLDPIIX is not set | ||
495 | # CONFIG_PATA_NETCELL is not set | ||
496 | # CONFIG_PATA_NS87410 is not set | ||
497 | # CONFIG_PATA_OPTI is not set | ||
498 | # CONFIG_PATA_OPTIDMA is not set | ||
499 | # CONFIG_PATA_PDC_OLD is not set | ||
500 | # CONFIG_PATA_RADISYS is not set | ||
501 | # CONFIG_PATA_RZ1000 is not set | ||
502 | # CONFIG_PATA_SC1200 is not set | ||
503 | # CONFIG_PATA_SERVERWORKS is not set | ||
504 | # CONFIG_PATA_PDC2027X is not set | ||
505 | # CONFIG_PATA_SIL680 is not set | ||
506 | # CONFIG_PATA_SIS is not set | ||
507 | # CONFIG_PATA_VIA is not set | ||
508 | # CONFIG_PATA_WINBOND is not set | ||
509 | CONFIG_PATA_PLATFORM=y | ||
510 | # CONFIG_MD is not set | ||
511 | |||
512 | # | ||
513 | # Fusion MPT device support | ||
514 | # | ||
515 | # CONFIG_FUSION is not set | ||
516 | # CONFIG_FUSION_SPI is not set | ||
517 | # CONFIG_FUSION_FC is not set | ||
518 | # CONFIG_FUSION_SAS is not set | ||
519 | |||
520 | # | ||
521 | # IEEE 1394 (FireWire) support | ||
522 | # | ||
523 | # CONFIG_FIREWIRE is not set | ||
524 | # CONFIG_IEEE1394 is not set | ||
525 | # CONFIG_I2O is not set | ||
526 | CONFIG_NETDEVICES=y | ||
527 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
528 | # CONFIG_DUMMY is not set | ||
529 | # CONFIG_BONDING is not set | ||
530 | # CONFIG_MACVLAN is not set | ||
531 | # CONFIG_EQUALIZER is not set | ||
532 | # CONFIG_TUN is not set | ||
533 | # CONFIG_ARCNET is not set | ||
534 | # CONFIG_PHYLIB is not set | ||
535 | CONFIG_NET_ETHERNET=y | ||
536 | CONFIG_MII=y | ||
537 | # CONFIG_STNIC is not set | ||
538 | # CONFIG_HAPPYMEAL is not set | ||
539 | # CONFIG_SUNGEM is not set | ||
540 | # CONFIG_CASSINI is not set | ||
541 | # CONFIG_NET_VENDOR_3COM is not set | ||
542 | # CONFIG_SMC91X is not set | ||
543 | # CONFIG_NET_TULIP is not set | ||
544 | # CONFIG_HP100 is not set | ||
545 | CONFIG_NET_PCI=y | ||
546 | # CONFIG_PCNET32 is not set | ||
547 | # CONFIG_AMD8111_ETH is not set | ||
548 | # CONFIG_ADAPTEC_STARFIRE is not set | ||
549 | # CONFIG_B44 is not set | ||
550 | # CONFIG_FORCEDETH is not set | ||
551 | # CONFIG_DGRS is not set | ||
552 | # CONFIG_EEPRO100 is not set | ||
553 | # CONFIG_E100 is not set | ||
554 | # CONFIG_FEALNX is not set | ||
555 | # CONFIG_NATSEMI is not set | ||
556 | # CONFIG_NE2K_PCI is not set | ||
557 | # CONFIG_8139CP is not set | ||
558 | CONFIG_8139TOO=y | ||
559 | # CONFIG_8139TOO_PIO is not set | ||
560 | # CONFIG_8139TOO_TUNE_TWISTER is not set | ||
561 | # CONFIG_8139TOO_8129 is not set | ||
562 | # CONFIG_8139_OLD_RX_RESET is not set | ||
563 | # CONFIG_SIS900 is not set | ||
564 | # CONFIG_EPIC100 is not set | ||
565 | # CONFIG_SUNDANCE is not set | ||
566 | # CONFIG_TLAN is not set | ||
567 | # CONFIG_VIA_RHINE is not set | ||
568 | # CONFIG_SC92031 is not set | ||
569 | CONFIG_NETDEV_1000=y | ||
570 | # CONFIG_ACENIC is not set | ||
571 | # CONFIG_DL2K is not set | ||
572 | # CONFIG_E1000 is not set | ||
573 | # CONFIG_NS83820 is not set | ||
574 | # CONFIG_HAMACHI is not set | ||
575 | # CONFIG_YELLOWFIN is not set | ||
576 | # CONFIG_R8169 is not set | ||
577 | # CONFIG_SIS190 is not set | ||
578 | # CONFIG_SKGE is not set | ||
579 | # CONFIG_SKY2 is not set | ||
580 | # CONFIG_VIA_VELOCITY is not set | ||
581 | # CONFIG_TIGON3 is not set | ||
582 | # CONFIG_BNX2 is not set | ||
583 | # CONFIG_QLA3XXX is not set | ||
584 | # CONFIG_ATL1 is not set | ||
585 | CONFIG_NETDEV_10000=y | ||
586 | # CONFIG_CHELSIO_T1 is not set | ||
587 | # CONFIG_CHELSIO_T3 is not set | ||
588 | # CONFIG_IXGB is not set | ||
589 | # CONFIG_S2IO is not set | ||
590 | # CONFIG_MYRI10GE is not set | ||
591 | # CONFIG_NETXEN_NIC is not set | ||
592 | # CONFIG_MLX4_CORE is not set | ||
593 | # CONFIG_TR is not set | ||
594 | |||
595 | # | ||
596 | # Wireless LAN | ||
597 | # | ||
598 | # CONFIG_WLAN_PRE80211 is not set | ||
599 | # CONFIG_WLAN_80211 is not set | ||
600 | # CONFIG_WAN is not set | ||
601 | # CONFIG_FDDI is not set | ||
602 | # CONFIG_HIPPI is not set | ||
603 | # CONFIG_PPP is not set | ||
604 | # CONFIG_SLIP is not set | ||
605 | # CONFIG_NET_FC is not set | ||
606 | # CONFIG_SHAPER is not set | ||
607 | # CONFIG_NETCONSOLE is not set | ||
608 | # CONFIG_NETPOLL is not set | ||
609 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
610 | # CONFIG_ISDN is not set | ||
611 | # CONFIG_PHONE is not set | ||
612 | |||
613 | # | ||
614 | # Input device support | ||
615 | # | ||
616 | CONFIG_INPUT=y | ||
617 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
618 | # CONFIG_INPUT_POLLDEV is not set | ||
619 | |||
620 | # | ||
621 | # Userland interfaces | ||
622 | # | ||
623 | # CONFIG_INPUT_MOUSEDEV is not set | ||
624 | # CONFIG_INPUT_JOYDEV is not set | ||
625 | # CONFIG_INPUT_TSDEV is not set | ||
626 | # CONFIG_INPUT_EVDEV is not set | ||
627 | # CONFIG_INPUT_EVBUG is not set | ||
628 | |||
629 | # | ||
630 | # Input Device Drivers | ||
631 | # | ||
632 | # CONFIG_INPUT_KEYBOARD is not set | ||
633 | # CONFIG_INPUT_MOUSE is not set | ||
634 | # CONFIG_INPUT_JOYSTICK is not set | ||
635 | # CONFIG_INPUT_TABLET is not set | ||
636 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
637 | # CONFIG_INPUT_MISC is not set | ||
638 | |||
639 | # | ||
640 | # Hardware I/O ports | ||
641 | # | ||
642 | # CONFIG_SERIO is not set | ||
643 | # CONFIG_GAMEPORT is not set | ||
644 | |||
645 | # | ||
646 | # Character devices | ||
647 | # | ||
648 | CONFIG_VT=y | ||
649 | CONFIG_VT_CONSOLE=y | ||
650 | CONFIG_HW_CONSOLE=y | ||
651 | CONFIG_VT_HW_CONSOLE_BINDING=y | ||
652 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
653 | |||
654 | # | ||
655 | # Serial drivers | ||
656 | # | ||
657 | CONFIG_SERIAL_8250=y | ||
658 | # CONFIG_SERIAL_8250_CONSOLE is not set | ||
659 | CONFIG_SERIAL_8250_PCI=y | ||
660 | CONFIG_SERIAL_8250_NR_UARTS=4 | ||
661 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
662 | # CONFIG_SERIAL_8250_EXTENDED is not set | ||
663 | |||
664 | # | ||
665 | # Non-8250 serial port support | ||
666 | # | ||
667 | CONFIG_SERIAL_SH_SCI=y | ||
668 | CONFIG_SERIAL_SH_SCI_NR_UARTS=1 | ||
669 | CONFIG_SERIAL_SH_SCI_CONSOLE=y | ||
670 | CONFIG_SERIAL_CORE=y | ||
671 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
672 | # CONFIG_SERIAL_JSM is not set | ||
673 | CONFIG_UNIX98_PTYS=y | ||
674 | CONFIG_LEGACY_PTYS=y | ||
675 | CONFIG_LEGACY_PTY_COUNT=256 | ||
676 | # CONFIG_IPMI_HANDLER is not set | ||
677 | # CONFIG_WATCHDOG is not set | ||
678 | CONFIG_HW_RANDOM=y | ||
679 | # CONFIG_R3964 is not set | ||
680 | # CONFIG_APPLICOM is not set | ||
681 | # CONFIG_DRM is not set | ||
682 | # CONFIG_RAW_DRIVER is not set | ||
683 | # CONFIG_TCG_TPM is not set | ||
684 | CONFIG_DEVPORT=y | ||
685 | # CONFIG_I2C is not set | ||
686 | |||
687 | # | ||
688 | # SPI support | ||
689 | # | ||
690 | # CONFIG_SPI is not set | ||
691 | # CONFIG_SPI_MASTER is not set | ||
692 | # CONFIG_W1 is not set | ||
693 | # CONFIG_POWER_SUPPLY is not set | ||
694 | CONFIG_HWMON=y | ||
695 | # CONFIG_HWMON_VID is not set | ||
696 | # CONFIG_SENSORS_ABITUGURU is not set | ||
697 | # CONFIG_SENSORS_ABITUGURU3 is not set | ||
698 | # CONFIG_SENSORS_F71805F is not set | ||
699 | # CONFIG_SENSORS_IT87 is not set | ||
700 | # CONFIG_SENSORS_PC87360 is not set | ||
701 | # CONFIG_SENSORS_PC87427 is not set | ||
702 | # CONFIG_SENSORS_SIS5595 is not set | ||
703 | # CONFIG_SENSORS_SMSC47M1 is not set | ||
704 | # CONFIG_SENSORS_SMSC47B397 is not set | ||
705 | # CONFIG_SENSORS_VIA686A is not set | ||
706 | # CONFIG_SENSORS_VT1211 is not set | ||
707 | # CONFIG_SENSORS_VT8231 is not set | ||
708 | # CONFIG_SENSORS_W83627HF is not set | ||
709 | # CONFIG_SENSORS_W83627EHF is not set | ||
710 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
711 | |||
712 | # | ||
713 | # Multifunction device drivers | ||
714 | # | ||
715 | CONFIG_MFD_SM501=y | ||
716 | |||
717 | # | ||
718 | # Multimedia devices | ||
719 | # | ||
720 | # CONFIG_VIDEO_DEV is not set | ||
721 | # CONFIG_DVB_CORE is not set | ||
722 | CONFIG_DAB=y | ||
723 | |||
724 | # | ||
725 | # Graphics support | ||
726 | # | ||
727 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
728 | |||
729 | # | ||
730 | # Display device support | ||
731 | # | ||
732 | # CONFIG_DISPLAY_SUPPORT is not set | ||
733 | # CONFIG_VGASTATE is not set | ||
734 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
735 | CONFIG_FB=y | ||
736 | # CONFIG_FIRMWARE_EDID is not set | ||
737 | # CONFIG_FB_DDC is not set | ||
738 | CONFIG_FB_CFB_FILLRECT=y | ||
739 | CONFIG_FB_CFB_COPYAREA=y | ||
740 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
741 | # CONFIG_FB_SYS_FILLRECT is not set | ||
742 | # CONFIG_FB_SYS_COPYAREA is not set | ||
743 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
744 | # CONFIG_FB_SYS_FOPS is not set | ||
745 | CONFIG_FB_DEFERRED_IO=y | ||
746 | # CONFIG_FB_SVGALIB is not set | ||
747 | # CONFIG_FB_MACMODES is not set | ||
748 | # CONFIG_FB_BACKLIGHT is not set | ||
749 | # CONFIG_FB_MODE_HELPERS is not set | ||
750 | # CONFIG_FB_TILEBLITTING is not set | ||
751 | |||
752 | # | ||
753 | # Frame buffer hardware drivers | ||
754 | # | ||
755 | # CONFIG_FB_CIRRUS is not set | ||
756 | # CONFIG_FB_PM2 is not set | ||
757 | # CONFIG_FB_CYBER2000 is not set | ||
758 | # CONFIG_FB_ASILIANT is not set | ||
759 | # CONFIG_FB_IMSTT is not set | ||
760 | # CONFIG_FB_S1D13XXX is not set | ||
761 | # CONFIG_FB_NVIDIA is not set | ||
762 | # CONFIG_FB_RIVA is not set | ||
763 | # CONFIG_FB_MATROX is not set | ||
764 | # CONFIG_FB_RADEON is not set | ||
765 | # CONFIG_FB_ATY128 is not set | ||
766 | # CONFIG_FB_ATY is not set | ||
767 | # CONFIG_FB_S3 is not set | ||
768 | # CONFIG_FB_SAVAGE is not set | ||
769 | # CONFIG_FB_SIS is not set | ||
770 | # CONFIG_FB_NEOMAGIC is not set | ||
771 | # CONFIG_FB_KYRO is not set | ||
772 | # CONFIG_FB_3DFX is not set | ||
773 | # CONFIG_FB_VOODOO1 is not set | ||
774 | # CONFIG_FB_VT8623 is not set | ||
775 | # CONFIG_FB_TRIDENT is not set | ||
776 | # CONFIG_FB_ARK is not set | ||
777 | # CONFIG_FB_PM3 is not set | ||
778 | CONFIG_FB_SM501=y | ||
779 | # CONFIG_FB_VIRTUAL is not set | ||
780 | |||
781 | # | ||
782 | # Console display driver support | ||
783 | # | ||
784 | CONFIG_DUMMY_CONSOLE=y | ||
785 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
786 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
787 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
788 | # CONFIG_FONTS is not set | ||
789 | CONFIG_FONT_8x8=y | ||
790 | CONFIG_FONT_8x16=y | ||
791 | CONFIG_LOGO=y | ||
792 | # CONFIG_LOGO_LINUX_MONO is not set | ||
793 | # CONFIG_LOGO_LINUX_VGA16 is not set | ||
794 | # CONFIG_LOGO_LINUX_CLUT224 is not set | ||
795 | # CONFIG_LOGO_SUPERH_MONO is not set | ||
796 | # CONFIG_LOGO_SUPERH_VGA16 is not set | ||
797 | CONFIG_LOGO_SUPERH_CLUT224=y | ||
798 | |||
799 | # | ||
800 | # Sound | ||
801 | # | ||
802 | CONFIG_SOUND=y | ||
803 | |||
804 | # | ||
805 | # Advanced Linux Sound Architecture | ||
806 | # | ||
807 | CONFIG_SND=m | ||
808 | CONFIG_SND_TIMER=m | ||
809 | CONFIG_SND_PCM=m | ||
810 | CONFIG_SND_HWDEP=m | ||
811 | CONFIG_SND_RAWMIDI=m | ||
812 | # CONFIG_SND_SEQUENCER is not set | ||
813 | # CONFIG_SND_MIXER_OSS is not set | ||
814 | # CONFIG_SND_PCM_OSS is not set | ||
815 | # CONFIG_SND_DYNAMIC_MINORS is not set | ||
816 | CONFIG_SND_SUPPORT_OLD_API=y | ||
817 | CONFIG_SND_VERBOSE_PROCFS=y | ||
818 | # CONFIG_SND_VERBOSE_PRINTK is not set | ||
819 | # CONFIG_SND_DEBUG is not set | ||
820 | |||
821 | # | ||
822 | # Generic devices | ||
823 | # | ||
824 | CONFIG_SND_MPU401_UART=m | ||
825 | CONFIG_SND_OPL3_LIB=m | ||
826 | CONFIG_SND_AC97_CODEC=m | ||
827 | # CONFIG_SND_DUMMY is not set | ||
828 | # CONFIG_SND_MTPAV is not set | ||
829 | # CONFIG_SND_SERIAL_U16550 is not set | ||
830 | # CONFIG_SND_MPU401 is not set | ||
831 | |||
832 | # | ||
833 | # PCI devices | ||
834 | # | ||
835 | # CONFIG_SND_AD1889 is not set | ||
836 | # CONFIG_SND_ALS300 is not set | ||
837 | # CONFIG_SND_ALI5451 is not set | ||
838 | # CONFIG_SND_ATIIXP is not set | ||
839 | # CONFIG_SND_ATIIXP_MODEM is not set | ||
840 | # CONFIG_SND_AU8810 is not set | ||
841 | # CONFIG_SND_AU8820 is not set | ||
842 | # CONFIG_SND_AU8830 is not set | ||
843 | # CONFIG_SND_AZT3328 is not set | ||
844 | # CONFIG_SND_BT87X is not set | ||
845 | # CONFIG_SND_CA0106 is not set | ||
846 | # CONFIG_SND_CMIPCI is not set | ||
847 | # CONFIG_SND_CS4281 is not set | ||
848 | # CONFIG_SND_CS46XX is not set | ||
849 | # CONFIG_SND_DARLA20 is not set | ||
850 | # CONFIG_SND_GINA20 is not set | ||
851 | # CONFIG_SND_LAYLA20 is not set | ||
852 | # CONFIG_SND_DARLA24 is not set | ||
853 | # CONFIG_SND_GINA24 is not set | ||
854 | # CONFIG_SND_LAYLA24 is not set | ||
855 | # CONFIG_SND_MONA is not set | ||
856 | # CONFIG_SND_MIA is not set | ||
857 | # CONFIG_SND_ECHO3G is not set | ||
858 | # CONFIG_SND_INDIGO is not set | ||
859 | # CONFIG_SND_INDIGOIO is not set | ||
860 | # CONFIG_SND_INDIGODJ is not set | ||
861 | # CONFIG_SND_EMU10K1 is not set | ||
862 | # CONFIG_SND_EMU10K1X is not set | ||
863 | # CONFIG_SND_ENS1370 is not set | ||
864 | # CONFIG_SND_ENS1371 is not set | ||
865 | # CONFIG_SND_ES1938 is not set | ||
866 | # CONFIG_SND_ES1968 is not set | ||
867 | # CONFIG_SND_FM801 is not set | ||
868 | # CONFIG_SND_HDA_INTEL is not set | ||
869 | # CONFIG_SND_HDSP is not set | ||
870 | # CONFIG_SND_HDSPM is not set | ||
871 | # CONFIG_SND_ICE1712 is not set | ||
872 | # CONFIG_SND_ICE1724 is not set | ||
873 | # CONFIG_SND_INTEL8X0 is not set | ||
874 | # CONFIG_SND_INTEL8X0M is not set | ||
875 | # CONFIG_SND_KORG1212 is not set | ||
876 | # CONFIG_SND_MAESTRO3 is not set | ||
877 | # CONFIG_SND_MIXART is not set | ||
878 | # CONFIG_SND_NM256 is not set | ||
879 | # CONFIG_SND_PCXHR is not set | ||
880 | # CONFIG_SND_RIPTIDE is not set | ||
881 | # CONFIG_SND_RME32 is not set | ||
882 | # CONFIG_SND_RME96 is not set | ||
883 | # CONFIG_SND_RME9652 is not set | ||
884 | # CONFIG_SND_SONICVIBES is not set | ||
885 | # CONFIG_SND_TRIDENT is not set | ||
886 | # CONFIG_SND_VIA82XX is not set | ||
887 | # CONFIG_SND_VIA82XX_MODEM is not set | ||
888 | # CONFIG_SND_VX222 is not set | ||
889 | CONFIG_SND_YMFPCI=m | ||
890 | CONFIG_SND_YMFPCI_FIRMWARE_IN_KERNEL=y | ||
891 | # CONFIG_SND_AC97_POWER_SAVE is not set | ||
892 | |||
893 | # | ||
894 | # SUPERH devices | ||
895 | # | ||
896 | |||
897 | # | ||
898 | # System on Chip audio support | ||
899 | # | ||
900 | # CONFIG_SND_SOC is not set | ||
901 | |||
902 | # | ||
903 | # SoC Audio support for SuperH | ||
904 | # | ||
905 | |||
906 | # | ||
907 | # Open Sound System | ||
908 | # | ||
909 | CONFIG_SOUND_PRIME=m | ||
910 | # CONFIG_SOUND_TRIDENT is not set | ||
911 | # CONFIG_SOUND_MSNDCLAS is not set | ||
912 | # CONFIG_SOUND_MSNDPIN is not set | ||
913 | CONFIG_AC97_BUS=m | ||
914 | CONFIG_HID_SUPPORT=y | ||
915 | CONFIG_HID=y | ||
916 | # CONFIG_HID_DEBUG is not set | ||
917 | CONFIG_USB_SUPPORT=y | ||
918 | CONFIG_USB_ARCH_HAS_HCD=y | ||
919 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
920 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
921 | # CONFIG_USB is not set | ||
922 | |||
923 | # | ||
924 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
925 | # | ||
926 | |||
927 | # | ||
928 | # USB Gadget Support | ||
929 | # | ||
930 | # CONFIG_USB_GADGET is not set | ||
931 | # CONFIG_MMC is not set | ||
932 | # CONFIG_NEW_LEDS is not set | ||
933 | # CONFIG_INFINIBAND is not set | ||
934 | CONFIG_RTC_LIB=y | ||
935 | CONFIG_RTC_CLASS=y | ||
936 | CONFIG_RTC_HCTOSYS=y | ||
937 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
938 | # CONFIG_RTC_DEBUG is not set | ||
939 | |||
940 | # | ||
941 | # RTC interfaces | ||
942 | # | ||
943 | CONFIG_RTC_INTF_SYSFS=y | ||
944 | CONFIG_RTC_INTF_PROC=y | ||
945 | CONFIG_RTC_INTF_DEV=y | ||
946 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
947 | # CONFIG_RTC_DRV_TEST is not set | ||
948 | |||
949 | # | ||
950 | # SPI RTC drivers | ||
951 | # | ||
952 | |||
953 | # | ||
954 | # Platform RTC drivers | ||
955 | # | ||
956 | # CONFIG_RTC_DRV_DS1553 is not set | ||
957 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
958 | # CONFIG_RTC_DRV_DS1742 is not set | ||
959 | # CONFIG_RTC_DRV_M48T86 is not set | ||
960 | # CONFIG_RTC_DRV_M48T59 is not set | ||
961 | # CONFIG_RTC_DRV_V3020 is not set | ||
962 | |||
963 | # | ||
964 | # on-CPU RTC drivers | ||
965 | # | ||
966 | CONFIG_RTC_DRV_SH=y | ||
967 | |||
968 | # | ||
969 | # DMA Engine support | ||
970 | # | ||
971 | # CONFIG_DMA_ENGINE is not set | ||
972 | |||
973 | # | ||
974 | # DMA Clients | ||
975 | # | ||
976 | |||
977 | # | ||
978 | # DMA Devices | ||
979 | # | ||
980 | |||
981 | # | ||
982 | # Userspace I/O | ||
983 | # | ||
984 | # CONFIG_UIO is not set | ||
985 | |||
986 | # | ||
987 | # File systems | ||
988 | # | ||
989 | CONFIG_EXT2_FS=y | ||
990 | # CONFIG_EXT2_FS_XATTR is not set | ||
991 | # CONFIG_EXT2_FS_XIP is not set | ||
992 | # CONFIG_EXT3_FS is not set | ||
993 | # CONFIG_EXT4DEV_FS is not set | ||
994 | # CONFIG_REISERFS_FS is not set | ||
995 | # CONFIG_JFS_FS is not set | ||
996 | # CONFIG_FS_POSIX_ACL is not set | ||
997 | # CONFIG_XFS_FS is not set | ||
998 | # CONFIG_GFS2_FS is not set | ||
999 | # CONFIG_OCFS2_FS is not set | ||
1000 | CONFIG_MINIX_FS=y | ||
1001 | # CONFIG_ROMFS_FS is not set | ||
1002 | CONFIG_INOTIFY=y | ||
1003 | CONFIG_INOTIFY_USER=y | ||
1004 | # CONFIG_QUOTA is not set | ||
1005 | CONFIG_DNOTIFY=y | ||
1006 | # CONFIG_AUTOFS_FS is not set | ||
1007 | # CONFIG_AUTOFS4_FS is not set | ||
1008 | # CONFIG_FUSE_FS is not set | ||
1009 | |||
1010 | # | ||
1011 | # CD-ROM/DVD Filesystems | ||
1012 | # | ||
1013 | # CONFIG_ISO9660_FS is not set | ||
1014 | # CONFIG_UDF_FS is not set | ||
1015 | |||
1016 | # | ||
1017 | # DOS/FAT/NT Filesystems | ||
1018 | # | ||
1019 | CONFIG_FAT_FS=y | ||
1020 | CONFIG_MSDOS_FS=y | ||
1021 | CONFIG_VFAT_FS=y | ||
1022 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
1023 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
1024 | # CONFIG_NTFS_FS is not set | ||
1025 | |||
1026 | # | ||
1027 | # Pseudo filesystems | ||
1028 | # | ||
1029 | CONFIG_PROC_FS=y | ||
1030 | CONFIG_PROC_KCORE=y | ||
1031 | CONFIG_PROC_SYSCTL=y | ||
1032 | CONFIG_SYSFS=y | ||
1033 | CONFIG_TMPFS=y | ||
1034 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
1035 | # CONFIG_HUGETLBFS is not set | ||
1036 | # CONFIG_HUGETLB_PAGE is not set | ||
1037 | CONFIG_RAMFS=y | ||
1038 | # CONFIG_CONFIGFS_FS is not set | ||
1039 | |||
1040 | # | ||
1041 | # Miscellaneous filesystems | ||
1042 | # | ||
1043 | # CONFIG_ADFS_FS is not set | ||
1044 | # CONFIG_AFFS_FS is not set | ||
1045 | # CONFIG_HFS_FS is not set | ||
1046 | # CONFIG_HFSPLUS_FS is not set | ||
1047 | # CONFIG_BEFS_FS is not set | ||
1048 | # CONFIG_BFS_FS is not set | ||
1049 | # CONFIG_EFS_FS is not set | ||
1050 | # CONFIG_CRAMFS is not set | ||
1051 | # CONFIG_VXFS_FS is not set | ||
1052 | # CONFIG_HPFS_FS is not set | ||
1053 | # CONFIG_QNX4FS_FS is not set | ||
1054 | # CONFIG_SYSV_FS is not set | ||
1055 | # CONFIG_UFS_FS is not set | ||
1056 | |||
1057 | # | ||
1058 | # Network File Systems | ||
1059 | # | ||
1060 | # CONFIG_NFS_FS is not set | ||
1061 | # CONFIG_NFSD is not set | ||
1062 | # CONFIG_SMB_FS is not set | ||
1063 | # CONFIG_CIFS is not set | ||
1064 | # CONFIG_NCP_FS is not set | ||
1065 | # CONFIG_CODA_FS is not set | ||
1066 | # CONFIG_AFS_FS is not set | ||
1067 | |||
1068 | # | ||
1069 | # Partition Types | ||
1070 | # | ||
1071 | # CONFIG_PARTITION_ADVANCED is not set | ||
1072 | CONFIG_MSDOS_PARTITION=y | ||
1073 | |||
1074 | # | ||
1075 | # Native Language Support | ||
1076 | # | ||
1077 | CONFIG_NLS=y | ||
1078 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
1079 | # CONFIG_NLS_CODEPAGE_437 is not set | ||
1080 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
1081 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
1082 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
1083 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
1084 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
1085 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
1086 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
1087 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
1088 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
1089 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
1090 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
1091 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
1092 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
1093 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
1094 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
1095 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
1096 | CONFIG_NLS_CODEPAGE_932=y | ||
1097 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
1098 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
1099 | # CONFIG_NLS_ISO8859_8 is not set | ||
1100 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
1101 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
1102 | # CONFIG_NLS_ASCII is not set | ||
1103 | # CONFIG_NLS_ISO8859_1 is not set | ||
1104 | # CONFIG_NLS_ISO8859_2 is not set | ||
1105 | # CONFIG_NLS_ISO8859_3 is not set | ||
1106 | # CONFIG_NLS_ISO8859_4 is not set | ||
1107 | # CONFIG_NLS_ISO8859_5 is not set | ||
1108 | # CONFIG_NLS_ISO8859_6 is not set | ||
1109 | # CONFIG_NLS_ISO8859_7 is not set | ||
1110 | # CONFIG_NLS_ISO8859_9 is not set | ||
1111 | # CONFIG_NLS_ISO8859_13 is not set | ||
1112 | # CONFIG_NLS_ISO8859_14 is not set | ||
1113 | # CONFIG_NLS_ISO8859_15 is not set | ||
1114 | # CONFIG_NLS_KOI8_R is not set | ||
1115 | # CONFIG_NLS_KOI8_U is not set | ||
1116 | # CONFIG_NLS_UTF8 is not set | ||
1117 | |||
1118 | # | ||
1119 | # Distributed Lock Manager | ||
1120 | # | ||
1121 | # CONFIG_DLM is not set | ||
1122 | |||
1123 | # | ||
1124 | # Profiling support | ||
1125 | # | ||
1126 | CONFIG_PROFILING=y | ||
1127 | CONFIG_OPROFILE=y | ||
1128 | |||
1129 | # | ||
1130 | # Kernel hacking | ||
1131 | # | ||
1132 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
1133 | # CONFIG_PRINTK_TIME is not set | ||
1134 | CONFIG_ENABLE_MUST_CHECK=y | ||
1135 | # CONFIG_MAGIC_SYSRQ is not set | ||
1136 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1137 | # CONFIG_DEBUG_FS is not set | ||
1138 | # CONFIG_HEADERS_CHECK is not set | ||
1139 | # CONFIG_DEBUG_KERNEL is not set | ||
1140 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
1141 | # CONFIG_SH_STANDARD_BIOS is not set | ||
1142 | CONFIG_EARLY_SCIF_CONSOLE=y | ||
1143 | CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000 | ||
1144 | CONFIG_EARLY_PRINTK=y | ||
1145 | # CONFIG_SH_KGDB is not set | ||
1146 | |||
1147 | # | ||
1148 | # Security options | ||
1149 | # | ||
1150 | # CONFIG_KEYS is not set | ||
1151 | # CONFIG_SECURITY is not set | ||
1152 | # CONFIG_CRYPTO is not set | ||
1153 | |||
1154 | # | ||
1155 | # Library routines | ||
1156 | # | ||
1157 | CONFIG_BITREVERSE=y | ||
1158 | # CONFIG_CRC_CCITT is not set | ||
1159 | # CONFIG_CRC16 is not set | ||
1160 | # CONFIG_CRC_ITU_T is not set | ||
1161 | CONFIG_CRC32=y | ||
1162 | # CONFIG_CRC7 is not set | ||
1163 | # CONFIG_LIBCRC32C is not set | ||
1164 | CONFIG_PLIST=y | ||
1165 | CONFIG_HAS_IOMEM=y | ||
1166 | CONFIG_HAS_IOPORT=y | ||
1167 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/sh/configs/se7206_defconfig b/arch/sh/configs/se7206_defconfig index f2f2a3c9c32d..0d0cda908270 100644 --- a/arch/sh/configs/se7206_defconfig +++ b/arch/sh/configs/se7206_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.22-rc4 | 3 | # Linux kernel version: 2.6.23-rc4 |
4 | # Fri Jun 15 19:37:46 2007 | 4 | # Thu Sep 13 16:40:16 2007 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
@@ -17,25 +17,22 @@ CONFIG_STACKTRACE_SUPPORT=y | |||
17 | CONFIG_LOCKDEP_SUPPORT=y | 17 | CONFIG_LOCKDEP_SUPPORT=y |
18 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | 18 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set |
19 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | 19 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set |
20 | CONFIG_ARCH_NO_VIRT_TO_BUS=y | ||
20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 21 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
21 | 22 | ||
22 | # | 23 | # |
23 | # Code maturity level options | 24 | # General setup |
24 | # | 25 | # |
25 | CONFIG_EXPERIMENTAL=y | 26 | CONFIG_EXPERIMENTAL=y |
26 | CONFIG_BROKEN_ON_SMP=y | 27 | CONFIG_BROKEN_ON_SMP=y |
27 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 28 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
28 | |||
29 | # | ||
30 | # General setup | ||
31 | # | ||
32 | CONFIG_LOCALVERSION="" | 29 | CONFIG_LOCALVERSION="" |
33 | # CONFIG_LOCALVERSION_AUTO is not set | 30 | # CONFIG_LOCALVERSION_AUTO is not set |
34 | # CONFIG_SYSVIPC is not set | 31 | # CONFIG_SYSVIPC is not set |
35 | # CONFIG_POSIX_MQUEUE is not set | 32 | # CONFIG_POSIX_MQUEUE is not set |
36 | # CONFIG_BSD_PROCESS_ACCT is not set | 33 | # CONFIG_BSD_PROCESS_ACCT is not set |
37 | # CONFIG_TASKSTATS is not set | 34 | # CONFIG_TASKSTATS is not set |
38 | # CONFIG_UTS_NS is not set | 35 | # CONFIG_USER_NS is not set |
39 | # CONFIG_AUDIT is not set | 36 | # CONFIG_AUDIT is not set |
40 | # CONFIG_IKCONFIG is not set | 37 | # CONFIG_IKCONFIG is not set |
41 | CONFIG_LOG_BUF_SHIFT=14 | 38 | CONFIG_LOG_BUF_SHIFT=14 |
@@ -60,23 +57,17 @@ CONFIG_SIGNALFD=y | |||
60 | CONFIG_TIMERFD=y | 57 | CONFIG_TIMERFD=y |
61 | CONFIG_EVENTFD=y | 58 | CONFIG_EVENTFD=y |
62 | # CONFIG_VM_EVENT_COUNTERS is not set | 59 | # CONFIG_VM_EVENT_COUNTERS is not set |
63 | CONFIG_SLAB=y | 60 | CONFIG_SLUB_DEBUG=y |
64 | # CONFIG_SLUB is not set | 61 | # CONFIG_SLAB is not set |
62 | CONFIG_SLUB=y | ||
65 | # CONFIG_SLOB is not set | 63 | # CONFIG_SLOB is not set |
66 | CONFIG_TINY_SHMEM=y | 64 | CONFIG_TINY_SHMEM=y |
67 | CONFIG_BASE_SMALL=1 | 65 | CONFIG_BASE_SMALL=1 |
68 | |||
69 | # | ||
70 | # Loadable module support | ||
71 | # | ||
72 | # CONFIG_MODULES is not set | 66 | # CONFIG_MODULES is not set |
73 | |||
74 | # | ||
75 | # Block layer | ||
76 | # | ||
77 | CONFIG_BLOCK=y | 67 | CONFIG_BLOCK=y |
78 | # CONFIG_LBD is not set | 68 | # CONFIG_LBD is not set |
79 | # CONFIG_LSF is not set | 69 | # CONFIG_LSF is not set |
70 | # CONFIG_BLK_DEV_BSG is not set | ||
80 | 71 | ||
81 | # | 72 | # |
82 | # IO Schedulers | 73 | # IO Schedulers |
@@ -98,7 +89,6 @@ CONFIG_CPU_SH2=y | |||
98 | CONFIG_CPU_SH2A=y | 89 | CONFIG_CPU_SH2A=y |
99 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 90 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
100 | CONFIG_CPU_SUBTYPE_SH7206=y | 91 | CONFIG_CPU_SUBTYPE_SH7206=y |
101 | # CONFIG_CPU_SUBTYPE_SH7300 is not set | ||
102 | # CONFIG_CPU_SUBTYPE_SH7705 is not set | 92 | # CONFIG_CPU_SUBTYPE_SH7705 is not set |
103 | # CONFIG_CPU_SUBTYPE_SH7706 is not set | 93 | # CONFIG_CPU_SUBTYPE_SH7706 is not set |
104 | # CONFIG_CPU_SUBTYPE_SH7707 is not set | 94 | # CONFIG_CPU_SUBTYPE_SH7707 is not set |
@@ -106,6 +96,7 @@ CONFIG_CPU_SUBTYPE_SH7206=y | |||
106 | # CONFIG_CPU_SUBTYPE_SH7709 is not set | 96 | # CONFIG_CPU_SUBTYPE_SH7709 is not set |
107 | # CONFIG_CPU_SUBTYPE_SH7710 is not set | 97 | # CONFIG_CPU_SUBTYPE_SH7710 is not set |
108 | # CONFIG_CPU_SUBTYPE_SH7712 is not set | 98 | # CONFIG_CPU_SUBTYPE_SH7712 is not set |
99 | # CONFIG_CPU_SUBTYPE_SH7720 is not set | ||
109 | # CONFIG_CPU_SUBTYPE_SH7750 is not set | 100 | # CONFIG_CPU_SUBTYPE_SH7750 is not set |
110 | # CONFIG_CPU_SUBTYPE_SH7091 is not set | 101 | # CONFIG_CPU_SUBTYPE_SH7091 is not set |
111 | # CONFIG_CPU_SUBTYPE_SH7750R is not set | 102 | # CONFIG_CPU_SUBTYPE_SH7750R is not set |
@@ -119,7 +110,7 @@ CONFIG_CPU_SUBTYPE_SH7206=y | |||
119 | # CONFIG_CPU_SUBTYPE_SH7770 is not set | 110 | # CONFIG_CPU_SUBTYPE_SH7770 is not set |
120 | # CONFIG_CPU_SUBTYPE_SH7780 is not set | 111 | # CONFIG_CPU_SUBTYPE_SH7780 is not set |
121 | # CONFIG_CPU_SUBTYPE_SH7785 is not set | 112 | # CONFIG_CPU_SUBTYPE_SH7785 is not set |
122 | # CONFIG_CPU_SUBTYPE_SH73180 is not set | 113 | # CONFIG_CPU_SUBTYPE_SHX3 is not set |
123 | # CONFIG_CPU_SUBTYPE_SH7343 is not set | 114 | # CONFIG_CPU_SUBTYPE_SH7343 is not set |
124 | # CONFIG_CPU_SUBTYPE_SH7722 is not set | 115 | # CONFIG_CPU_SUBTYPE_SH7722 is not set |
125 | 116 | ||
@@ -136,15 +127,16 @@ CONFIG_ARCH_SPARSEMEM_DEFAULT=y | |||
136 | CONFIG_MAX_ACTIVE_REGIONS=1 | 127 | CONFIG_MAX_ACTIVE_REGIONS=1 |
137 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 128 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
138 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | 129 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y |
130 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
139 | CONFIG_PAGE_SIZE_4KB=y | 131 | CONFIG_PAGE_SIZE_4KB=y |
140 | # CONFIG_PAGE_SIZE_8KB is not set | 132 | # CONFIG_PAGE_SIZE_8KB is not set |
141 | # CONFIG_PAGE_SIZE_64KB is not set | 133 | # CONFIG_PAGE_SIZE_64KB is not set |
142 | CONFIG_SELECT_MEMORY_MODEL=y | 134 | CONFIG_SELECT_MEMORY_MODEL=y |
143 | CONFIG_FLATMEM_MANUAL=y | 135 | # CONFIG_FLATMEM_MANUAL is not set |
144 | # CONFIG_DISCONTIGMEM_MANUAL is not set | 136 | # CONFIG_DISCONTIGMEM_MANUAL is not set |
145 | # CONFIG_SPARSEMEM_MANUAL is not set | 137 | CONFIG_SPARSEMEM_MANUAL=y |
146 | CONFIG_FLATMEM=y | 138 | CONFIG_SPARSEMEM=y |
147 | CONFIG_FLAT_NODE_MEM_MAP=y | 139 | CONFIG_HAVE_MEMORY_PRESENT=y |
148 | CONFIG_SPARSEMEM_STATIC=y | 140 | CONFIG_SPARSEMEM_STATIC=y |
149 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 141 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
150 | # CONFIG_RESOURCES_64BIT is not set | 142 | # CONFIG_RESOURCES_64BIT is not set |
@@ -155,7 +147,9 @@ CONFIG_NR_QUICK=2 | |||
155 | # Cache configuration | 147 | # Cache configuration |
156 | # | 148 | # |
157 | # CONFIG_SH_DIRECT_MAPPED is not set | 149 | # CONFIG_SH_DIRECT_MAPPED is not set |
158 | # CONFIG_SH_WRITETHROUGH is not set | 150 | CONFIG_CACHE_WRITEBACK=y |
151 | # CONFIG_CACHE_WRITETHROUGH is not set | ||
152 | # CONFIG_CACHE_OFF is not set | ||
159 | 153 | ||
160 | # | 154 | # |
161 | # Processor features | 155 | # Processor features |
@@ -163,8 +157,6 @@ CONFIG_NR_QUICK=2 | |||
163 | # CONFIG_CPU_LITTLE_ENDIAN is not set | 157 | # CONFIG_CPU_LITTLE_ENDIAN is not set |
164 | CONFIG_CPU_BIG_ENDIAN=y | 158 | CONFIG_CPU_BIG_ENDIAN=y |
165 | # CONFIG_SH_FPU_EMU is not set | 159 | # CONFIG_SH_FPU_EMU is not set |
166 | # CONFIG_SH_DSP is not set | ||
167 | CONFIG_CPU_HAS_IPR_IRQ=y | ||
168 | 160 | ||
169 | # | 161 | # |
170 | # Board support | 162 | # Board support |
@@ -185,12 +177,23 @@ CONFIG_SH_CLK_MD=6 | |||
185 | # | 177 | # |
186 | # CPU Frequency scaling | 178 | # CPU Frequency scaling |
187 | # | 179 | # |
188 | # CONFIG_CPU_FREQ is not set | 180 | CONFIG_CPU_FREQ=y |
181 | CONFIG_CPU_FREQ_TABLE=y | ||
182 | # CONFIG_CPU_FREQ_DEBUG is not set | ||
183 | CONFIG_CPU_FREQ_STAT=y | ||
184 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set | ||
185 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y | ||
186 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set | ||
187 | CONFIG_CPU_FREQ_GOV_PERFORMANCE=y | ||
188 | # CONFIG_CPU_FREQ_GOV_POWERSAVE is not set | ||
189 | # CONFIG_CPU_FREQ_GOV_USERSPACE is not set | ||
190 | # CONFIG_CPU_FREQ_GOV_ONDEMAND is not set | ||
191 | # CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set | ||
192 | # CONFIG_SH_CPU_FREQ is not set | ||
189 | 193 | ||
190 | # | 194 | # |
191 | # DMA support | 195 | # DMA support |
192 | # | 196 | # |
193 | # CONFIG_SH_DMA is not set | ||
194 | 197 | ||
195 | # | 198 | # |
196 | # Companion Chips | 199 | # Companion Chips |
@@ -199,17 +202,17 @@ CONFIG_SH_CLK_MD=6 | |||
199 | # | 202 | # |
200 | # Additional SuperH Device Drivers | 203 | # Additional SuperH Device Drivers |
201 | # | 204 | # |
202 | # CONFIG_HEARTBEAT is not set | 205 | CONFIG_HEARTBEAT=y |
203 | # CONFIG_PUSH_SWITCH is not set | 206 | # CONFIG_PUSH_SWITCH is not set |
204 | 207 | ||
205 | # | 208 | # |
206 | # Kernel features | 209 | # Kernel features |
207 | # | 210 | # |
208 | CONFIG_HZ_100=y | 211 | # CONFIG_HZ_100 is not set |
209 | # CONFIG_HZ_250 is not set | 212 | # CONFIG_HZ_250 is not set |
210 | # CONFIG_HZ_300 is not set | 213 | # CONFIG_HZ_300 is not set |
211 | # CONFIG_HZ_1000 is not set | 214 | CONFIG_HZ_1000=y |
212 | CONFIG_HZ=100 | 215 | CONFIG_HZ=1000 |
213 | # CONFIG_KEXEC is not set | 216 | # CONFIG_KEXEC is not set |
214 | # CONFIG_CRASH_DUMP is not set | 217 | # CONFIG_CRASH_DUMP is not set |
215 | CONFIG_PREEMPT_NONE=y | 218 | CONFIG_PREEMPT_NONE=y |
@@ -221,11 +224,13 @@ CONFIG_PREEMPT_NONE=y | |||
221 | # | 224 | # |
222 | CONFIG_ZERO_PAGE_OFFSET=0x00001000 | 225 | CONFIG_ZERO_PAGE_OFFSET=0x00001000 |
223 | CONFIG_BOOT_LINK_OFFSET=0x00800000 | 226 | CONFIG_BOOT_LINK_OFFSET=0x00800000 |
224 | # CONFIG_CMDLINE_BOOL is not set | 227 | CONFIG_CMDLINE_BOOL=y |
228 | CONFIG_CMDLINE="console=ttySC3,115200 earlyprintk=serial ignore_loglevel" | ||
225 | 229 | ||
226 | # | 230 | # |
227 | # Bus options | 231 | # Bus options |
228 | # | 232 | # |
233 | # CONFIG_CF_ENABLER is not set | ||
229 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 234 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
230 | 235 | ||
231 | # | 236 | # |
@@ -315,6 +320,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
315 | # CONFIG_MAC80211 is not set | 320 | # CONFIG_MAC80211 is not set |
316 | # CONFIG_IEEE80211 is not set | 321 | # CONFIG_IEEE80211 is not set |
317 | # CONFIG_RFKILL is not set | 322 | # CONFIG_RFKILL is not set |
323 | # CONFIG_NET_9P is not set | ||
318 | 324 | ||
319 | # | 325 | # |
320 | # Device Drivers | 326 | # Device Drivers |
@@ -325,11 +331,9 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
325 | # | 331 | # |
326 | # CONFIG_STANDALONE is not set | 332 | # CONFIG_STANDALONE is not set |
327 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set | 333 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set |
334 | # CONFIG_DEBUG_DRIVER is not set | ||
335 | # CONFIG_DEBUG_DEVRES is not set | ||
328 | # CONFIG_SYS_HYPERVISOR is not set | 336 | # CONFIG_SYS_HYPERVISOR is not set |
329 | |||
330 | # | ||
331 | # Connector - unified userspace <-> kernelspace linker | ||
332 | # | ||
333 | # CONFIG_CONNECTOR is not set | 337 | # CONFIG_CONNECTOR is not set |
334 | CONFIG_MTD=y | 338 | CONFIG_MTD=y |
335 | # CONFIG_MTD_DEBUG is not set | 339 | # CONFIG_MTD_DEBUG is not set |
@@ -411,31 +415,16 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=4 | |||
411 | # UBI - Unsorted block images | 415 | # UBI - Unsorted block images |
412 | # | 416 | # |
413 | # CONFIG_MTD_UBI is not set | 417 | # CONFIG_MTD_UBI is not set |
414 | |||
415 | # | ||
416 | # Parallel port support | ||
417 | # | ||
418 | # CONFIG_PARPORT is not set | 418 | # CONFIG_PARPORT is not set |
419 | 419 | CONFIG_BLK_DEV=y | |
420 | # | ||
421 | # Plug and Play support | ||
422 | # | ||
423 | # CONFIG_PNPACPI is not set | ||
424 | |||
425 | # | ||
426 | # Block devices | ||
427 | # | ||
428 | # CONFIG_BLK_DEV_COW_COMMON is not set | 420 | # CONFIG_BLK_DEV_COW_COMMON is not set |
429 | # CONFIG_BLK_DEV_LOOP is not set | 421 | # CONFIG_BLK_DEV_LOOP is not set |
430 | # CONFIG_BLK_DEV_NBD is not set | 422 | # CONFIG_BLK_DEV_NBD is not set |
431 | # CONFIG_BLK_DEV_RAM is not set | 423 | # CONFIG_BLK_DEV_RAM is not set |
432 | # CONFIG_CDROM_PKTCDVD is not set | 424 | # CONFIG_CDROM_PKTCDVD is not set |
433 | # CONFIG_ATA_OVER_ETH is not set | 425 | # CONFIG_ATA_OVER_ETH is not set |
434 | 426 | CONFIG_MISC_DEVICES=y | |
435 | # | 427 | # CONFIG_EEPROM_93CX6 is not set |
436 | # Misc devices | ||
437 | # | ||
438 | # CONFIG_BLINK is not set | ||
439 | # CONFIG_IDE is not set | 428 | # CONFIG_IDE is not set |
440 | 429 | ||
441 | # | 430 | # |
@@ -443,27 +432,18 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=4 | |||
443 | # | 432 | # |
444 | # CONFIG_RAID_ATTRS is not set | 433 | # CONFIG_RAID_ATTRS is not set |
445 | # CONFIG_SCSI is not set | 434 | # CONFIG_SCSI is not set |
435 | # CONFIG_SCSI_DMA is not set | ||
446 | # CONFIG_SCSI_NETLINK is not set | 436 | # CONFIG_SCSI_NETLINK is not set |
447 | # CONFIG_ATA is not set | 437 | # CONFIG_ATA is not set |
448 | |||
449 | # | ||
450 | # Multi-device support (RAID and LVM) | ||
451 | # | ||
452 | # CONFIG_MD is not set | 438 | # CONFIG_MD is not set |
453 | |||
454 | # | ||
455 | # Network device support | ||
456 | # | ||
457 | CONFIG_NETDEVICES=y | 439 | CONFIG_NETDEVICES=y |
440 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
458 | # CONFIG_DUMMY is not set | 441 | # CONFIG_DUMMY is not set |
459 | # CONFIG_BONDING is not set | 442 | # CONFIG_BONDING is not set |
443 | # CONFIG_MACVLAN is not set | ||
460 | # CONFIG_EQUALIZER is not set | 444 | # CONFIG_EQUALIZER is not set |
461 | # CONFIG_TUN is not set | 445 | # CONFIG_TUN is not set |
462 | # CONFIG_PHYLIB is not set | 446 | # CONFIG_PHYLIB is not set |
463 | |||
464 | # | ||
465 | # Ethernet (10 or 100Mbit) | ||
466 | # | ||
467 | CONFIG_NET_ETHERNET=y | 447 | CONFIG_NET_ETHERNET=y |
468 | CONFIG_MII=y | 448 | CONFIG_MII=y |
469 | # CONFIG_STNIC is not set | 449 | # CONFIG_STNIC is not set |
@@ -483,15 +463,7 @@ CONFIG_NETDEV_10000=y | |||
483 | # CONFIG_NETCONSOLE is not set | 463 | # CONFIG_NETCONSOLE is not set |
484 | # CONFIG_NETPOLL is not set | 464 | # CONFIG_NETPOLL is not set |
485 | # CONFIG_NET_POLL_CONTROLLER is not set | 465 | # CONFIG_NET_POLL_CONTROLLER is not set |
486 | |||
487 | # | ||
488 | # ISDN subsystem | ||
489 | # | ||
490 | # CONFIG_ISDN is not set | 466 | # CONFIG_ISDN is not set |
491 | |||
492 | # | ||
493 | # Telephony Support | ||
494 | # | ||
495 | # CONFIG_PHONE is not set | 467 | # CONFIG_PHONE is not set |
496 | 468 | ||
497 | # | 469 | # |
@@ -499,6 +471,7 @@ CONFIG_NETDEV_10000=y | |||
499 | # | 471 | # |
500 | CONFIG_INPUT=y | 472 | CONFIG_INPUT=y |
501 | # CONFIG_INPUT_FF_MEMLESS is not set | 473 | # CONFIG_INPUT_FF_MEMLESS is not set |
474 | # CONFIG_INPUT_POLLDEV is not set | ||
502 | 475 | ||
503 | # | 476 | # |
504 | # Userland interfaces | 477 | # Userland interfaces |
@@ -546,19 +519,11 @@ CONFIG_SERIAL_CORE=y | |||
546 | CONFIG_SERIAL_CORE_CONSOLE=y | 519 | CONFIG_SERIAL_CORE_CONSOLE=y |
547 | # CONFIG_UNIX98_PTYS is not set | 520 | # CONFIG_UNIX98_PTYS is not set |
548 | # CONFIG_LEGACY_PTYS is not set | 521 | # CONFIG_LEGACY_PTYS is not set |
549 | |||
550 | # | ||
551 | # IPMI | ||
552 | # | ||
553 | # CONFIG_IPMI_HANDLER is not set | 522 | # CONFIG_IPMI_HANDLER is not set |
554 | # CONFIG_WATCHDOG is not set | 523 | # CONFIG_WATCHDOG is not set |
555 | # CONFIG_HW_RANDOM is not set | 524 | # CONFIG_HW_RANDOM is not set |
556 | # CONFIG_R3964 is not set | 525 | # CONFIG_R3964 is not set |
557 | # CONFIG_RAW_DRIVER is not set | 526 | # CONFIG_RAW_DRIVER is not set |
558 | |||
559 | # | ||
560 | # TPM devices | ||
561 | # | ||
562 | # CONFIG_TCG_TPM is not set | 527 | # CONFIG_TCG_TPM is not set |
563 | # CONFIG_I2C is not set | 528 | # CONFIG_I2C is not set |
564 | 529 | ||
@@ -567,11 +532,8 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
567 | # | 532 | # |
568 | # CONFIG_SPI is not set | 533 | # CONFIG_SPI is not set |
569 | # CONFIG_SPI_MASTER is not set | 534 | # CONFIG_SPI_MASTER is not set |
570 | |||
571 | # | ||
572 | # Dallas's 1-wire bus | ||
573 | # | ||
574 | # CONFIG_W1 is not set | 535 | # CONFIG_W1 is not set |
536 | # CONFIG_POWER_SUPPLY is not set | ||
575 | # CONFIG_HWMON is not set | 537 | # CONFIG_HWMON is not set |
576 | 538 | ||
577 | # | 539 | # |
@@ -596,25 +558,21 @@ CONFIG_DAB=y | |||
596 | # | 558 | # |
597 | # CONFIG_DISPLAY_SUPPORT is not set | 559 | # CONFIG_DISPLAY_SUPPORT is not set |
598 | # CONFIG_VGASTATE is not set | 560 | # CONFIG_VGASTATE is not set |
561 | CONFIG_VIDEO_OUTPUT_CONTROL=y | ||
599 | # CONFIG_FB is not set | 562 | # CONFIG_FB is not set |
600 | 563 | ||
601 | # | 564 | # |
602 | # Sound | 565 | # Sound |
603 | # | 566 | # |
604 | # CONFIG_SOUND is not set | 567 | # CONFIG_SOUND is not set |
605 | 568 | CONFIG_HID_SUPPORT=y | |
606 | # | ||
607 | # HID Devices | ||
608 | # | ||
609 | CONFIG_HID=y | 569 | CONFIG_HID=y |
610 | # CONFIG_HID_DEBUG is not set | 570 | # CONFIG_HID_DEBUG is not set |
611 | 571 | CONFIG_USB_SUPPORT=y | |
612 | # | 572 | CONFIG_USB_ARCH_HAS_HCD=y |
613 | # USB support | ||
614 | # | ||
615 | # CONFIG_USB_ARCH_HAS_HCD is not set | ||
616 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 573 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
617 | # CONFIG_USB_ARCH_HAS_EHCI is not set | 574 | # CONFIG_USB_ARCH_HAS_EHCI is not set |
575 | # CONFIG_USB is not set | ||
618 | 576 | ||
619 | # | 577 | # |
620 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 578 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
@@ -625,31 +583,7 @@ CONFIG_HID=y | |||
625 | # | 583 | # |
626 | # CONFIG_USB_GADGET is not set | 584 | # CONFIG_USB_GADGET is not set |
627 | # CONFIG_MMC is not set | 585 | # CONFIG_MMC is not set |
628 | |||
629 | # | ||
630 | # LED devices | ||
631 | # | ||
632 | # CONFIG_NEW_LEDS is not set | 586 | # CONFIG_NEW_LEDS is not set |
633 | |||
634 | # | ||
635 | # LED drivers | ||
636 | # | ||
637 | |||
638 | # | ||
639 | # LED Triggers | ||
640 | # | ||
641 | |||
642 | # | ||
643 | # InfiniBand support | ||
644 | # | ||
645 | |||
646 | # | ||
647 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
648 | # | ||
649 | |||
650 | # | ||
651 | # Real Time Clock | ||
652 | # | ||
653 | # CONFIG_RTC_CLASS is not set | 587 | # CONFIG_RTC_CLASS is not set |
654 | 588 | ||
655 | # | 589 | # |
@@ -666,6 +600,11 @@ CONFIG_HID=y | |||
666 | # | 600 | # |
667 | 601 | ||
668 | # | 602 | # |
603 | # Userspace I/O | ||
604 | # | ||
605 | # CONFIG_UIO is not set | ||
606 | |||
607 | # | ||
669 | # File systems | 608 | # File systems |
670 | # | 609 | # |
671 | # CONFIG_EXT2_FS is not set | 610 | # CONFIG_EXT2_FS is not set |
@@ -736,7 +675,6 @@ CONFIG_RAMFS=y | |||
736 | # CONFIG_NCP_FS is not set | 675 | # CONFIG_NCP_FS is not set |
737 | # CONFIG_CODA_FS is not set | 676 | # CONFIG_CODA_FS is not set |
738 | # CONFIG_AFS_FS is not set | 677 | # CONFIG_AFS_FS is not set |
739 | # CONFIG_9P_FS is not set | ||
740 | 678 | ||
741 | # | 679 | # |
742 | # Partition Types | 680 | # Partition Types |
@@ -752,12 +690,12 @@ CONFIG_MSDOS_PARTITION=y | |||
752 | # | 690 | # |
753 | # Distributed Lock Manager | 691 | # Distributed Lock Manager |
754 | # | 692 | # |
755 | # CONFIG_DLM is not set | ||
756 | 693 | ||
757 | # | 694 | # |
758 | # Profiling support | 695 | # Profiling support |
759 | # | 696 | # |
760 | # CONFIG_PROFILING is not set | 697 | CONFIG_PROFILING=y |
698 | # CONFIG_OPROFILE is not set | ||
761 | 699 | ||
762 | # | 700 | # |
763 | # Kernel hacking | 701 | # Kernel hacking |
@@ -768,19 +706,41 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y | |||
768 | # CONFIG_MAGIC_SYSRQ is not set | 706 | # CONFIG_MAGIC_SYSRQ is not set |
769 | # CONFIG_UNUSED_SYMBOLS is not set | 707 | # CONFIG_UNUSED_SYMBOLS is not set |
770 | # CONFIG_HEADERS_CHECK is not set | 708 | # CONFIG_HEADERS_CHECK is not set |
771 | # CONFIG_DEBUG_KERNEL is not set | 709 | CONFIG_DEBUG_KERNEL=y |
772 | # CONFIG_DEBUG_BUGVERBOSE is not set | 710 | # CONFIG_DEBUG_SHIRQ is not set |
711 | CONFIG_DETECT_SOFTLOCKUP=y | ||
712 | CONFIG_SCHED_DEBUG=y | ||
713 | # CONFIG_SCHEDSTATS is not set | ||
714 | # CONFIG_TIMER_STATS is not set | ||
715 | CONFIG_SLUB_DEBUG_ON=y | ||
716 | # CONFIG_DEBUG_SPINLOCK is not set | ||
717 | # CONFIG_DEBUG_MUTEXES is not set | ||
718 | # CONFIG_DEBUG_LOCK_ALLOC is not set | ||
719 | # CONFIG_PROVE_LOCKING is not set | ||
720 | # CONFIG_LOCK_STAT is not set | ||
721 | CONFIG_DEBUG_SPINLOCK_SLEEP=y | ||
722 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
723 | # CONFIG_DEBUG_KOBJECT is not set | ||
724 | CONFIG_DEBUG_BUGVERBOSE=y | ||
725 | CONFIG_DEBUG_INFO=y | ||
726 | # CONFIG_DEBUG_VM is not set | ||
727 | # CONFIG_DEBUG_LIST is not set | ||
728 | CONFIG_FRAME_POINTER=y | ||
729 | CONFIG_FORCED_INLINING=y | ||
730 | # CONFIG_FAULT_INJECTION is not set | ||
773 | # CONFIG_SH_STANDARD_BIOS is not set | 731 | # CONFIG_SH_STANDARD_BIOS is not set |
774 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 732 | CONFIG_EARLY_SCIF_CONSOLE=y |
733 | CONFIG_EARLY_SCIF_CONSOLE_PORT=0xfffe9800 | ||
734 | CONFIG_EARLY_PRINTK=y | ||
735 | # CONFIG_DEBUG_BOOTMEM is not set | ||
736 | CONFIG_DEBUG_STACKOVERFLOW=y | ||
737 | CONFIG_DEBUG_STACK_USAGE=y | ||
738 | # CONFIG_4KSTACKS is not set | ||
775 | 739 | ||
776 | # | 740 | # |
777 | # Security options | 741 | # Security options |
778 | # | 742 | # |
779 | # CONFIG_KEYS is not set | 743 | # CONFIG_KEYS is not set |
780 | |||
781 | # | ||
782 | # Cryptographic options | ||
783 | # | ||
784 | # CONFIG_CRYPTO is not set | 744 | # CONFIG_CRYPTO is not set |
785 | 745 | ||
786 | # | 746 | # |
@@ -791,6 +751,7 @@ CONFIG_BITREVERSE=y | |||
791 | # CONFIG_CRC16 is not set | 751 | # CONFIG_CRC16 is not set |
792 | # CONFIG_CRC_ITU_T is not set | 752 | # CONFIG_CRC_ITU_T is not set |
793 | CONFIG_CRC32=y | 753 | CONFIG_CRC32=y |
754 | # CONFIG_CRC7 is not set | ||
794 | # CONFIG_LIBCRC32C is not set | 755 | # CONFIG_LIBCRC32C is not set |
795 | CONFIG_ZLIB_INFLATE=y | 756 | CONFIG_ZLIB_INFLATE=y |
796 | CONFIG_HAS_IOMEM=y | 757 | CONFIG_HAS_IOMEM=y |
diff --git a/arch/sh/configs/shx3_defconfig b/arch/sh/configs/shx3_defconfig index 219bad558b10..a794c082709b 100644 --- a/arch/sh/configs/shx3_defconfig +++ b/arch/sh/configs/shx3_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.22-rc4 | 3 | # Linux kernel version: 2.6.23-rc7 |
4 | # Wed Jun 20 14:09:27 2007 | 4 | # Fri Sep 21 19:07:30 2007 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
@@ -13,32 +13,33 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
13 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 13 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
14 | CONFIG_GENERIC_TIME=y | 14 | CONFIG_GENERIC_TIME=y |
15 | CONFIG_GENERIC_CLOCKEVENTS=y | 15 | CONFIG_GENERIC_CLOCKEVENTS=y |
16 | CONFIG_SYS_SUPPORTS_SMP=y | ||
17 | CONFIG_SYS_SUPPORTS_NUMA=y | ||
16 | CONFIG_STACKTRACE_SUPPORT=y | 18 | CONFIG_STACKTRACE_SUPPORT=y |
17 | CONFIG_LOCKDEP_SUPPORT=y | 19 | CONFIG_LOCKDEP_SUPPORT=y |
18 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | 20 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set |
19 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | 21 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set |
22 | CONFIG_ARCH_NO_VIRT_TO_BUS=y | ||
20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 23 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
21 | 24 | ||
22 | # | 25 | # |
23 | # Code maturity level options | 26 | # General setup |
24 | # | 27 | # |
25 | CONFIG_EXPERIMENTAL=y | 28 | CONFIG_EXPERIMENTAL=y |
26 | CONFIG_BROKEN_ON_SMP=y | 29 | CONFIG_BROKEN_ON_SMP=y |
27 | CONFIG_LOCK_KERNEL=y | 30 | CONFIG_LOCK_KERNEL=y |
28 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 31 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
29 | |||
30 | # | ||
31 | # General setup | ||
32 | # | ||
33 | CONFIG_LOCALVERSION="" | 32 | CONFIG_LOCALVERSION="" |
34 | CONFIG_LOCALVERSION_AUTO=y | 33 | CONFIG_LOCALVERSION_AUTO=y |
35 | CONFIG_SWAP=y | 34 | CONFIG_SWAP=y |
36 | CONFIG_SYSVIPC=y | 35 | CONFIG_SYSVIPC=y |
37 | # CONFIG_IPC_NS is not set | ||
38 | CONFIG_SYSVIPC_SYSCTL=y | 36 | CONFIG_SYSVIPC_SYSCTL=y |
37 | # CONFIG_POSIX_MQUEUE is not set | ||
39 | CONFIG_BSD_PROCESS_ACCT=y | 38 | CONFIG_BSD_PROCESS_ACCT=y |
40 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 39 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
41 | # CONFIG_UTS_NS is not set | 40 | # CONFIG_TASKSTATS is not set |
41 | # CONFIG_USER_NS is not set | ||
42 | # CONFIG_AUDIT is not set | ||
42 | CONFIG_IKCONFIG=y | 43 | CONFIG_IKCONFIG=y |
43 | CONFIG_IKCONFIG_PROC=y | 44 | CONFIG_IKCONFIG_PROC=y |
44 | CONFIG_LOG_BUF_SHIFT=14 | 45 | CONFIG_LOG_BUF_SHIFT=14 |
@@ -63,34 +64,26 @@ CONFIG_FUTEX=y | |||
63 | CONFIG_ANON_INODES=y | 64 | CONFIG_ANON_INODES=y |
64 | CONFIG_EPOLL=y | 65 | CONFIG_EPOLL=y |
65 | CONFIG_SIGNALFD=y | 66 | CONFIG_SIGNALFD=y |
66 | CONFIG_TIMERFD=y | ||
67 | CONFIG_EVENTFD=y | 67 | CONFIG_EVENTFD=y |
68 | CONFIG_SHMEM=y | 68 | CONFIG_SHMEM=y |
69 | CONFIG_VM_EVENT_COUNTERS=y | 69 | CONFIG_VM_EVENT_COUNTERS=y |
70 | CONFIG_SLAB=y | 70 | # CONFIG_SLAB is not set |
71 | # CONFIG_SLUB is not set | 71 | # CONFIG_SLUB is not set |
72 | # CONFIG_SLOB is not set | 72 | CONFIG_SLOB=y |
73 | CONFIG_RT_MUTEXES=y | 73 | CONFIG_RT_MUTEXES=y |
74 | # CONFIG_TINY_SHMEM is not set | 74 | # CONFIG_TINY_SHMEM is not set |
75 | CONFIG_BASE_SMALL=0 | 75 | CONFIG_BASE_SMALL=0 |
76 | |||
77 | # | ||
78 | # Loadable module support | ||
79 | # | ||
80 | CONFIG_MODULES=y | 76 | CONFIG_MODULES=y |
81 | CONFIG_MODULE_UNLOAD=y | 77 | CONFIG_MODULE_UNLOAD=y |
82 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 78 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
83 | # CONFIG_MODVERSIONS is not set | 79 | # CONFIG_MODVERSIONS is not set |
84 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 80 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
85 | CONFIG_KMOD=y | 81 | CONFIG_KMOD=y |
86 | |||
87 | # | ||
88 | # Block layer | ||
89 | # | ||
90 | CONFIG_BLOCK=y | 82 | CONFIG_BLOCK=y |
91 | # CONFIG_LBD is not set | 83 | # CONFIG_LBD is not set |
92 | # CONFIG_BLK_DEV_IO_TRACE is not set | 84 | # CONFIG_BLK_DEV_IO_TRACE is not set |
93 | # CONFIG_LSF is not set | 85 | # CONFIG_LSF is not set |
86 | # CONFIG_BLK_DEV_BSG is not set | ||
94 | 87 | ||
95 | # | 88 | # |
96 | # IO Schedulers | 89 | # IO Schedulers |
@@ -113,7 +106,6 @@ CONFIG_CPU_SH4A=y | |||
113 | CONFIG_CPU_SHX3=y | 106 | CONFIG_CPU_SHX3=y |
114 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 107 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
115 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 108 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
116 | # CONFIG_CPU_SUBTYPE_SH7300 is not set | ||
117 | # CONFIG_CPU_SUBTYPE_SH7705 is not set | 109 | # CONFIG_CPU_SUBTYPE_SH7705 is not set |
118 | # CONFIG_CPU_SUBTYPE_SH7706 is not set | 110 | # CONFIG_CPU_SUBTYPE_SH7706 is not set |
119 | # CONFIG_CPU_SUBTYPE_SH7707 is not set | 111 | # CONFIG_CPU_SUBTYPE_SH7707 is not set |
@@ -121,6 +113,7 @@ CONFIG_CPU_SHX3=y | |||
121 | # CONFIG_CPU_SUBTYPE_SH7709 is not set | 113 | # CONFIG_CPU_SUBTYPE_SH7709 is not set |
122 | # CONFIG_CPU_SUBTYPE_SH7710 is not set | 114 | # CONFIG_CPU_SUBTYPE_SH7710 is not set |
123 | # CONFIG_CPU_SUBTYPE_SH7712 is not set | 115 | # CONFIG_CPU_SUBTYPE_SH7712 is not set |
116 | # CONFIG_CPU_SUBTYPE_SH7720 is not set | ||
124 | # CONFIG_CPU_SUBTYPE_SH7750 is not set | 117 | # CONFIG_CPU_SUBTYPE_SH7750 is not set |
125 | # CONFIG_CPU_SUBTYPE_SH7091 is not set | 118 | # CONFIG_CPU_SUBTYPE_SH7091 is not set |
126 | # CONFIG_CPU_SUBTYPE_SH7750R is not set | 119 | # CONFIG_CPU_SUBTYPE_SH7750R is not set |
@@ -135,7 +128,6 @@ CONFIG_CPU_SHX3=y | |||
135 | # CONFIG_CPU_SUBTYPE_SH7780 is not set | 128 | # CONFIG_CPU_SUBTYPE_SH7780 is not set |
136 | # CONFIG_CPU_SUBTYPE_SH7785 is not set | 129 | # CONFIG_CPU_SUBTYPE_SH7785 is not set |
137 | CONFIG_CPU_SUBTYPE_SHX3=y | 130 | CONFIG_CPU_SUBTYPE_SHX3=y |
138 | # CONFIG_CPU_SUBTYPE_SH73180 is not set | ||
139 | # CONFIG_CPU_SUBTYPE_SH7343 is not set | 131 | # CONFIG_CPU_SUBTYPE_SH7343 is not set |
140 | # CONFIG_CPU_SUBTYPE_SH7722 is not set | 132 | # CONFIG_CPU_SUBTYPE_SH7722 is not set |
141 | 133 | ||
@@ -148,12 +140,15 @@ CONFIG_PAGE_OFFSET=0x80000000 | |||
148 | CONFIG_MEMORY_START=0x0c000000 | 140 | CONFIG_MEMORY_START=0x0c000000 |
149 | CONFIG_MEMORY_SIZE=0x04000000 | 141 | CONFIG_MEMORY_SIZE=0x04000000 |
150 | CONFIG_VSYSCALL=y | 142 | CONFIG_VSYSCALL=y |
143 | # CONFIG_NUMA is not set | ||
151 | CONFIG_ARCH_FLATMEM_ENABLE=y | 144 | CONFIG_ARCH_FLATMEM_ENABLE=y |
152 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | 145 | CONFIG_ARCH_SPARSEMEM_ENABLE=y |
153 | CONFIG_ARCH_SPARSEMEM_DEFAULT=y | 146 | CONFIG_ARCH_SPARSEMEM_DEFAULT=y |
154 | CONFIG_MAX_ACTIVE_REGIONS=1 | 147 | CONFIG_MAX_ACTIVE_REGIONS=6 |
155 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 148 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
156 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | 149 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y |
150 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
151 | CONFIG_ARCH_MEMORY_PROBE=y | ||
157 | CONFIG_PAGE_SIZE_4KB=y | 152 | CONFIG_PAGE_SIZE_4KB=y |
158 | # CONFIG_PAGE_SIZE_8KB is not set | 153 | # CONFIG_PAGE_SIZE_8KB is not set |
159 | # CONFIG_PAGE_SIZE_64KB is not set | 154 | # CONFIG_PAGE_SIZE_64KB is not set |
@@ -163,12 +158,14 @@ CONFIG_HUGETLB_PAGE_SIZE_64K=y | |||
163 | # CONFIG_HUGETLB_PAGE_SIZE_4MB is not set | 158 | # CONFIG_HUGETLB_PAGE_SIZE_4MB is not set |
164 | # CONFIG_HUGETLB_PAGE_SIZE_64MB is not set | 159 | # CONFIG_HUGETLB_PAGE_SIZE_64MB is not set |
165 | CONFIG_SELECT_MEMORY_MODEL=y | 160 | CONFIG_SELECT_MEMORY_MODEL=y |
166 | CONFIG_FLATMEM_MANUAL=y | 161 | # CONFIG_FLATMEM_MANUAL is not set |
167 | # CONFIG_DISCONTIGMEM_MANUAL is not set | 162 | # CONFIG_DISCONTIGMEM_MANUAL is not set |
168 | # CONFIG_SPARSEMEM_MANUAL is not set | 163 | CONFIG_SPARSEMEM_MANUAL=y |
169 | CONFIG_FLATMEM=y | 164 | CONFIG_SPARSEMEM=y |
170 | CONFIG_FLAT_NODE_MEM_MAP=y | 165 | CONFIG_HAVE_MEMORY_PRESENT=y |
171 | CONFIG_SPARSEMEM_STATIC=y | 166 | CONFIG_SPARSEMEM_STATIC=y |
167 | CONFIG_MEMORY_HOTPLUG=y | ||
168 | CONFIG_MEMORY_HOTPLUG_SPARSE=y | ||
172 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 169 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
173 | # CONFIG_RESOURCES_64BIT is not set | 170 | # CONFIG_RESOURCES_64BIT is not set |
174 | CONFIG_ZONE_DMA_FLAG=0 | 171 | CONFIG_ZONE_DMA_FLAG=0 |
@@ -178,24 +175,25 @@ CONFIG_NR_QUICK=2 | |||
178 | # Cache configuration | 175 | # Cache configuration |
179 | # | 176 | # |
180 | # CONFIG_SH_DIRECT_MAPPED is not set | 177 | # CONFIG_SH_DIRECT_MAPPED is not set |
181 | # CONFIG_SH_WRITETHROUGH is not set | 178 | # CONFIG_CACHE_WRITEBACK is not set |
179 | # CONFIG_CACHE_WRITETHROUGH is not set | ||
180 | CONFIG_CACHE_OFF=y | ||
182 | 181 | ||
183 | # | 182 | # |
184 | # Processor features | 183 | # Processor features |
185 | # | 184 | # |
186 | CONFIG_CPU_LITTLE_ENDIAN=y | 185 | CONFIG_CPU_LITTLE_ENDIAN=y |
187 | # CONFIG_CPU_BIG_ENDIAN is not set | 186 | # CONFIG_CPU_BIG_ENDIAN is not set |
188 | # CONFIG_SH_FPU is not set | 187 | CONFIG_SH_FPU=y |
189 | # CONFIG_SH_FPU_EMU is not set | ||
190 | CONFIG_SH_DSP=y | ||
191 | CONFIG_SH_STORE_QUEUES=y | 188 | CONFIG_SH_STORE_QUEUES=y |
192 | CONFIG_CPU_HAS_INTEVT=y | 189 | CONFIG_CPU_HAS_INTEVT=y |
193 | CONFIG_CPU_HAS_INTC2_IRQ=y | ||
194 | CONFIG_CPU_HAS_SR_RB=y | 190 | CONFIG_CPU_HAS_SR_RB=y |
191 | CONFIG_CPU_HAS_FPU=y | ||
195 | 192 | ||
196 | # | 193 | # |
197 | # Board support | 194 | # Board support |
198 | # | 195 | # |
196 | CONFIG_SH_X3PROTO=y | ||
199 | 197 | ||
200 | # | 198 | # |
201 | # Timer and clock configuration | 199 | # Timer and clock configuration |
@@ -204,13 +202,25 @@ CONFIG_SH_TMU=y | |||
204 | CONFIG_SH_TIMER_IRQ=16 | 202 | CONFIG_SH_TIMER_IRQ=16 |
205 | CONFIG_SH_PCLK_FREQ=50000000 | 203 | CONFIG_SH_PCLK_FREQ=50000000 |
206 | CONFIG_TICK_ONESHOT=y | 204 | CONFIG_TICK_ONESHOT=y |
207 | CONFIG_NO_HZ=y | 205 | # CONFIG_NO_HZ is not set |
208 | CONFIG_HIGH_RES_TIMERS=y | 206 | CONFIG_HIGH_RES_TIMERS=y |
209 | 207 | ||
210 | # | 208 | # |
211 | # CPU Frequency scaling | 209 | # CPU Frequency scaling |
212 | # | 210 | # |
213 | # CONFIG_CPU_FREQ is not set | 211 | CONFIG_CPU_FREQ=y |
212 | CONFIG_CPU_FREQ_TABLE=y | ||
213 | # CONFIG_CPU_FREQ_DEBUG is not set | ||
214 | CONFIG_CPU_FREQ_STAT=y | ||
215 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set | ||
216 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y | ||
217 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set | ||
218 | CONFIG_CPU_FREQ_GOV_PERFORMANCE=y | ||
219 | CONFIG_CPU_FREQ_GOV_POWERSAVE=m | ||
220 | CONFIG_CPU_FREQ_GOV_USERSPACE=m | ||
221 | CONFIG_CPU_FREQ_GOV_ONDEMAND=m | ||
222 | CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m | ||
223 | CONFIG_SH_CPU_FREQ=y | ||
214 | 224 | ||
215 | # | 225 | # |
216 | # DMA support | 226 | # DMA support |
@@ -237,6 +247,7 @@ CONFIG_HZ_250=y | |||
237 | CONFIG_HZ=250 | 247 | CONFIG_HZ=250 |
238 | CONFIG_KEXEC=y | 248 | CONFIG_KEXEC=y |
239 | # CONFIG_CRASH_DUMP is not set | 249 | # CONFIG_CRASH_DUMP is not set |
250 | # CONFIG_SMP is not set | ||
240 | # CONFIG_PREEMPT_NONE is not set | 251 | # CONFIG_PREEMPT_NONE is not set |
241 | # CONFIG_PREEMPT_VOLUNTARY is not set | 252 | # CONFIG_PREEMPT_VOLUNTARY is not set |
242 | CONFIG_PREEMPT=y | 253 | CONFIG_PREEMPT=y |
@@ -249,7 +260,7 @@ CONFIG_ZERO_PAGE_OFFSET=0x00001000 | |||
249 | CONFIG_BOOT_LINK_OFFSET=0x00800000 | 260 | CONFIG_BOOT_LINK_OFFSET=0x00800000 |
250 | # CONFIG_UBC_WAKEUP is not set | 261 | # CONFIG_UBC_WAKEUP is not set |
251 | CONFIG_CMDLINE_BOOL=y | 262 | CONFIG_CMDLINE_BOOL=y |
252 | CONFIG_CMDLINE="console=ttySC0,115200 ip=192.168.1.2:::255.255.255.0 root=/dev/nfs nfsroot=192.168.1.1:/exports/devel/rfs/mobiler noaliencache earlyprintk=bios ignore_loglevel" | 263 | CONFIG_CMDLINE="console=ttySC0,115200 earlyprintk=bios ignore_loglevel" |
253 | 264 | ||
254 | # | 265 | # |
255 | # Bus options | 266 | # Bus options |
@@ -265,12 +276,106 @@ CONFIG_CMDLINE="console=ttySC0,115200 ip=192.168.1.2:::255.255.255.0 root=/dev/n | |||
265 | # Executable file formats | 276 | # Executable file formats |
266 | # | 277 | # |
267 | CONFIG_BINFMT_ELF=y | 278 | CONFIG_BINFMT_ELF=y |
268 | # CONFIG_BINFMT_MISC is not set | 279 | CONFIG_BINFMT_MISC=y |
269 | 280 | ||
270 | # | 281 | # |
271 | # Networking | 282 | # Networking |
272 | # | 283 | # |
273 | # CONFIG_NET is not set | 284 | CONFIG_NET=y |
285 | |||
286 | # | ||
287 | # Networking options | ||
288 | # | ||
289 | # CONFIG_PACKET is not set | ||
290 | # CONFIG_UNIX is not set | ||
291 | CONFIG_XFRM=y | ||
292 | # CONFIG_XFRM_USER is not set | ||
293 | # CONFIG_XFRM_SUB_POLICY is not set | ||
294 | # CONFIG_XFRM_MIGRATE is not set | ||
295 | # CONFIG_NET_KEY is not set | ||
296 | CONFIG_INET=y | ||
297 | # CONFIG_IP_MULTICAST is not set | ||
298 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
299 | CONFIG_IP_FIB_HASH=y | ||
300 | CONFIG_IP_PNP=y | ||
301 | CONFIG_IP_PNP_DHCP=y | ||
302 | # CONFIG_IP_PNP_BOOTP is not set | ||
303 | # CONFIG_IP_PNP_RARP is not set | ||
304 | # CONFIG_NET_IPIP is not set | ||
305 | # CONFIG_NET_IPGRE is not set | ||
306 | # CONFIG_ARPD is not set | ||
307 | # CONFIG_SYN_COOKIES is not set | ||
308 | # CONFIG_INET_AH is not set | ||
309 | # CONFIG_INET_ESP is not set | ||
310 | # CONFIG_INET_IPCOMP is not set | ||
311 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
312 | CONFIG_INET_TUNNEL=m | ||
313 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
314 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
315 | CONFIG_INET_XFRM_MODE_BEET=y | ||
316 | CONFIG_INET_DIAG=y | ||
317 | CONFIG_INET_TCP_DIAG=y | ||
318 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
319 | CONFIG_TCP_CONG_CUBIC=y | ||
320 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
321 | # CONFIG_TCP_MD5SIG is not set | ||
322 | CONFIG_IPV6=m | ||
323 | # CONFIG_IPV6_PRIVACY is not set | ||
324 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
325 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
326 | # CONFIG_INET6_AH is not set | ||
327 | # CONFIG_INET6_ESP is not set | ||
328 | # CONFIG_INET6_IPCOMP is not set | ||
329 | # CONFIG_IPV6_MIP6 is not set | ||
330 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
331 | # CONFIG_INET6_TUNNEL is not set | ||
332 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
333 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
334 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
335 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
336 | CONFIG_IPV6_SIT=m | ||
337 | # CONFIG_IPV6_TUNNEL is not set | ||
338 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
339 | # CONFIG_NETWORK_SECMARK is not set | ||
340 | # CONFIG_NETFILTER is not set | ||
341 | # CONFIG_IP_DCCP is not set | ||
342 | # CONFIG_IP_SCTP is not set | ||
343 | # CONFIG_TIPC is not set | ||
344 | # CONFIG_ATM is not set | ||
345 | # CONFIG_BRIDGE is not set | ||
346 | # CONFIG_VLAN_8021Q is not set | ||
347 | # CONFIG_DECNET is not set | ||
348 | # CONFIG_LLC2 is not set | ||
349 | # CONFIG_IPX is not set | ||
350 | # CONFIG_ATALK is not set | ||
351 | # CONFIG_X25 is not set | ||
352 | # CONFIG_LAPB is not set | ||
353 | # CONFIG_ECONET is not set | ||
354 | # CONFIG_WAN_ROUTER is not set | ||
355 | |||
356 | # | ||
357 | # QoS and/or fair queueing | ||
358 | # | ||
359 | # CONFIG_NET_SCHED is not set | ||
360 | |||
361 | # | ||
362 | # Network testing | ||
363 | # | ||
364 | # CONFIG_NET_PKTGEN is not set | ||
365 | # CONFIG_HAMRADIO is not set | ||
366 | # CONFIG_IRDA is not set | ||
367 | # CONFIG_BT is not set | ||
368 | # CONFIG_AF_RXRPC is not set | ||
369 | |||
370 | # | ||
371 | # Wireless | ||
372 | # | ||
373 | # CONFIG_CFG80211 is not set | ||
374 | # CONFIG_WIRELESS_EXT is not set | ||
375 | # CONFIG_MAC80211 is not set | ||
376 | # CONFIG_IEEE80211 is not set | ||
377 | # CONFIG_RFKILL is not set | ||
378 | # CONFIG_NET_9P is not set | ||
274 | 379 | ||
275 | # | 380 | # |
276 | # Device Drivers | 381 | # Device Drivers |
@@ -285,37 +390,21 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
285 | # CONFIG_DEBUG_DRIVER is not set | 390 | # CONFIG_DEBUG_DRIVER is not set |
286 | # CONFIG_DEBUG_DEVRES is not set | 391 | # CONFIG_DEBUG_DEVRES is not set |
287 | # CONFIG_SYS_HYPERVISOR is not set | 392 | # CONFIG_SYS_HYPERVISOR is not set |
288 | 393 | # CONFIG_CONNECTOR is not set | |
289 | # | ||
290 | # Connector - unified userspace <-> kernelspace linker | ||
291 | # | ||
292 | # CONFIG_MTD is not set | 394 | # CONFIG_MTD is not set |
293 | |||
294 | # | ||
295 | # Parallel port support | ||
296 | # | ||
297 | # CONFIG_PARPORT is not set | 395 | # CONFIG_PARPORT is not set |
298 | 396 | CONFIG_BLK_DEV=y | |
299 | # | ||
300 | # Plug and Play support | ||
301 | # | ||
302 | # CONFIG_PNPACPI is not set | ||
303 | |||
304 | # | ||
305 | # Block devices | ||
306 | # | ||
307 | # CONFIG_BLK_DEV_COW_COMMON is not set | 397 | # CONFIG_BLK_DEV_COW_COMMON is not set |
308 | # CONFIG_BLK_DEV_LOOP is not set | 398 | # CONFIG_BLK_DEV_LOOP is not set |
399 | # CONFIG_BLK_DEV_NBD is not set | ||
309 | CONFIG_BLK_DEV_RAM=y | 400 | CONFIG_BLK_DEV_RAM=y |
310 | CONFIG_BLK_DEV_RAM_COUNT=16 | 401 | CONFIG_BLK_DEV_RAM_COUNT=16 |
311 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 402 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
312 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 403 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
313 | # CONFIG_CDROM_PKTCDVD is not set | 404 | # CONFIG_CDROM_PKTCDVD is not set |
314 | 405 | # CONFIG_ATA_OVER_ETH is not set | |
315 | # | 406 | CONFIG_MISC_DEVICES=y |
316 | # Misc devices | 407 | # CONFIG_EEPROM_93CX6 is not set |
317 | # | ||
318 | # CONFIG_BLINK is not set | ||
319 | # CONFIG_IDE is not set | 408 | # CONFIG_IDE is not set |
320 | 409 | ||
321 | # | 410 | # |
@@ -323,6 +412,7 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | |||
323 | # | 412 | # |
324 | # CONFIG_RAID_ATTRS is not set | 413 | # CONFIG_RAID_ATTRS is not set |
325 | CONFIG_SCSI=y | 414 | CONFIG_SCSI=y |
415 | CONFIG_SCSI_DMA=y | ||
326 | # CONFIG_SCSI_TGT is not set | 416 | # CONFIG_SCSI_TGT is not set |
327 | # CONFIG_SCSI_NETLINK is not set | 417 | # CONFIG_SCSI_NETLINK is not set |
328 | CONFIG_SCSI_PROC_FS=y | 418 | CONFIG_SCSI_PROC_FS=y |
@@ -351,73 +441,54 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
351 | # | 441 | # |
352 | # CONFIG_SCSI_SPI_ATTRS is not set | 442 | # CONFIG_SCSI_SPI_ATTRS is not set |
353 | # CONFIG_SCSI_FC_ATTRS is not set | 443 | # CONFIG_SCSI_FC_ATTRS is not set |
354 | # CONFIG_SCSI_SAS_ATTRS is not set | 444 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
355 | # CONFIG_SCSI_SAS_LIBSAS is not set | 445 | # CONFIG_SCSI_SAS_LIBSAS is not set |
356 | 446 | CONFIG_SCSI_LOWLEVEL=y | |
357 | # | 447 | # CONFIG_ISCSI_TCP is not set |
358 | # SCSI low-level drivers | ||
359 | # | ||
360 | # CONFIG_SCSI_DEBUG is not set | 448 | # CONFIG_SCSI_DEBUG is not set |
361 | CONFIG_ATA=y | 449 | CONFIG_ATA=y |
362 | # CONFIG_ATA_NONSTANDARD is not set | 450 | # CONFIG_ATA_NONSTANDARD is not set |
363 | CONFIG_PATA_PLATFORM=y | 451 | CONFIG_PATA_PLATFORM=y |
364 | |||
365 | # | ||
366 | # Multi-device support (RAID and LVM) | ||
367 | # | ||
368 | # CONFIG_MD is not set | 452 | # CONFIG_MD is not set |
369 | 453 | CONFIG_NETDEVICES=y | |
370 | # | 454 | # CONFIG_NETDEVICES_MULTIQUEUE is not set |
371 | # ISDN subsystem | 455 | # CONFIG_DUMMY is not set |
372 | # | 456 | # CONFIG_BONDING is not set |
373 | 457 | # CONFIG_MACVLAN is not set | |
374 | # | 458 | # CONFIG_EQUALIZER is not set |
375 | # Telephony Support | 459 | # CONFIG_TUN is not set |
376 | # | 460 | # CONFIG_PHYLIB is not set |
461 | CONFIG_NET_ETHERNET=y | ||
462 | CONFIG_MII=y | ||
463 | # CONFIG_STNIC is not set | ||
464 | CONFIG_SMC91X=y | ||
465 | # CONFIG_NETDEV_1000 is not set | ||
466 | # CONFIG_NETDEV_10000 is not set | ||
467 | |||
468 | # | ||
469 | # Wireless LAN | ||
470 | # | ||
471 | # CONFIG_WLAN_PRE80211 is not set | ||
472 | # CONFIG_WLAN_80211 is not set | ||
473 | # CONFIG_WAN is not set | ||
474 | # CONFIG_PPP is not set | ||
475 | # CONFIG_SLIP is not set | ||
476 | # CONFIG_SHAPER is not set | ||
477 | # CONFIG_NETCONSOLE is not set | ||
478 | # CONFIG_NETPOLL is not set | ||
479 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
480 | # CONFIG_ISDN is not set | ||
377 | # CONFIG_PHONE is not set | 481 | # CONFIG_PHONE is not set |
378 | 482 | ||
379 | # | 483 | # |
380 | # Input device support | 484 | # Input device support |
381 | # | 485 | # |
382 | CONFIG_INPUT=y | 486 | # CONFIG_INPUT is not set |
383 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
384 | |||
385 | # | ||
386 | # Userland interfaces | ||
387 | # | ||
388 | CONFIG_INPUT_MOUSEDEV=y | ||
389 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | ||
390 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
391 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
392 | # CONFIG_INPUT_JOYDEV is not set | ||
393 | # CONFIG_INPUT_TSDEV is not set | ||
394 | # CONFIG_INPUT_EVDEV is not set | ||
395 | # CONFIG_INPUT_EVBUG is not set | ||
396 | |||
397 | # | ||
398 | # Input Device Drivers | ||
399 | # | ||
400 | CONFIG_INPUT_KEYBOARD=y | ||
401 | CONFIG_KEYBOARD_ATKBD=y | ||
402 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
403 | # CONFIG_KEYBOARD_LKKBD is not set | ||
404 | # CONFIG_KEYBOARD_XTKBD is not set | ||
405 | # CONFIG_KEYBOARD_NEWTON is not set | ||
406 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
407 | # CONFIG_INPUT_MOUSE is not set | ||
408 | # CONFIG_INPUT_JOYSTICK is not set | ||
409 | # CONFIG_INPUT_TABLET is not set | ||
410 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
411 | # CONFIG_INPUT_MISC is not set | ||
412 | 487 | ||
413 | # | 488 | # |
414 | # Hardware I/O ports | 489 | # Hardware I/O ports |
415 | # | 490 | # |
416 | CONFIG_SERIO=y | 491 | # CONFIG_SERIO is not set |
417 | # CONFIG_SERIO_I8042 is not set | ||
418 | # CONFIG_SERIO_SERPORT is not set | ||
419 | CONFIG_SERIO_LIBPS2=y | ||
420 | # CONFIG_SERIO_RAW is not set | ||
421 | # CONFIG_GAMEPORT is not set | 492 | # CONFIG_GAMEPORT is not set |
422 | 493 | ||
423 | # | 494 | # |
@@ -442,19 +513,18 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
442 | CONFIG_UNIX98_PTYS=y | 513 | CONFIG_UNIX98_PTYS=y |
443 | CONFIG_LEGACY_PTYS=y | 514 | CONFIG_LEGACY_PTYS=y |
444 | CONFIG_LEGACY_PTY_COUNT=256 | 515 | CONFIG_LEGACY_PTY_COUNT=256 |
516 | # CONFIG_IPMI_HANDLER is not set | ||
517 | CONFIG_WATCHDOG=y | ||
518 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
445 | 519 | ||
446 | # | 520 | # |
447 | # IPMI | 521 | # Watchdog Device Drivers |
448 | # | 522 | # |
449 | # CONFIG_IPMI_HANDLER is not set | 523 | # CONFIG_SOFT_WATCHDOG is not set |
450 | # CONFIG_WATCHDOG is not set | 524 | # CONFIG_SH_WDT is not set |
451 | CONFIG_HW_RANDOM=y | 525 | # CONFIG_HW_RANDOM is not set |
452 | # CONFIG_R3964 is not set | 526 | # CONFIG_R3964 is not set |
453 | # CONFIG_RAW_DRIVER is not set | 527 | # CONFIG_RAW_DRIVER is not set |
454 | |||
455 | # | ||
456 | # TPM devices | ||
457 | # | ||
458 | # CONFIG_TCG_TPM is not set | 528 | # CONFIG_TCG_TPM is not set |
459 | # CONFIG_I2C is not set | 529 | # CONFIG_I2C is not set |
460 | 530 | ||
@@ -463,11 +533,8 @@ CONFIG_HW_RANDOM=y | |||
463 | # | 533 | # |
464 | # CONFIG_SPI is not set | 534 | # CONFIG_SPI is not set |
465 | # CONFIG_SPI_MASTER is not set | 535 | # CONFIG_SPI_MASTER is not set |
466 | |||
467 | # | ||
468 | # Dallas's 1-wire bus | ||
469 | # | ||
470 | # CONFIG_W1 is not set | 536 | # CONFIG_W1 is not set |
537 | # CONFIG_POWER_SUPPLY is not set | ||
471 | # CONFIG_HWMON is not set | 538 | # CONFIG_HWMON is not set |
472 | 539 | ||
473 | # | 540 | # |
@@ -479,6 +546,7 @@ CONFIG_HW_RANDOM=y | |||
479 | # Multimedia devices | 546 | # Multimedia devices |
480 | # | 547 | # |
481 | # CONFIG_VIDEO_DEV is not set | 548 | # CONFIG_VIDEO_DEV is not set |
549 | # CONFIG_DVB_CORE is not set | ||
482 | # CONFIG_DAB is not set | 550 | # CONFIG_DAB is not set |
483 | 551 | ||
484 | # | 552 | # |
@@ -491,24 +559,18 @@ CONFIG_HW_RANDOM=y | |||
491 | # | 559 | # |
492 | # CONFIG_DISPLAY_SUPPORT is not set | 560 | # CONFIG_DISPLAY_SUPPORT is not set |
493 | # CONFIG_VGASTATE is not set | 561 | # CONFIG_VGASTATE is not set |
562 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
494 | # CONFIG_FB is not set | 563 | # CONFIG_FB is not set |
495 | 564 | ||
496 | # | 565 | # |
497 | # Sound | 566 | # Sound |
498 | # | 567 | # |
499 | # CONFIG_SOUND is not set | 568 | # CONFIG_SOUND is not set |
500 | 569 | CONFIG_USB_SUPPORT=y | |
501 | # | 570 | CONFIG_USB_ARCH_HAS_HCD=y |
502 | # HID Devices | ||
503 | # | ||
504 | # CONFIG_HID is not set | ||
505 | |||
506 | # | ||
507 | # USB support | ||
508 | # | ||
509 | # CONFIG_USB_ARCH_HAS_HCD is not set | ||
510 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 571 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
511 | # CONFIG_USB_ARCH_HAS_EHCI is not set | 572 | # CONFIG_USB_ARCH_HAS_EHCI is not set |
573 | # CONFIG_USB is not set | ||
512 | 574 | ||
513 | # | 575 | # |
514 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 576 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
@@ -517,68 +579,32 @@ CONFIG_HW_RANDOM=y | |||
517 | # | 579 | # |
518 | # USB Gadget Support | 580 | # USB Gadget Support |
519 | # | 581 | # |
520 | # CONFIG_USB_GADGET is not set | 582 | CONFIG_USB_GADGET=y |
583 | # CONFIG_USB_GADGET_DEBUG is not set | ||
584 | # CONFIG_USB_GADGET_DEBUG_FILES is not set | ||
585 | CONFIG_USB_GADGET_SELECTED=y | ||
586 | # CONFIG_USB_GADGET_AMD5536UDC is not set | ||
587 | # CONFIG_USB_GADGET_FSL_USB2 is not set | ||
588 | # CONFIG_USB_GADGET_NET2280 is not set | ||
589 | # CONFIG_USB_GADGET_PXA2XX is not set | ||
590 | CONFIG_USB_GADGET_M66592=y | ||
591 | CONFIG_USB_M66592=y | ||
592 | # CONFIG_USB_GADGET_GOKU is not set | ||
593 | # CONFIG_USB_GADGET_LH7A40X is not set | ||
594 | # CONFIG_USB_GADGET_OMAP is not set | ||
595 | # CONFIG_USB_GADGET_S3C2410 is not set | ||
596 | # CONFIG_USB_GADGET_AT91 is not set | ||
597 | # CONFIG_USB_GADGET_DUMMY_HCD is not set | ||
598 | CONFIG_USB_GADGET_DUALSPEED=y | ||
599 | # CONFIG_USB_ZERO is not set | ||
600 | # CONFIG_USB_ETH is not set | ||
601 | # CONFIG_USB_GADGETFS is not set | ||
602 | # CONFIG_USB_FILE_STORAGE is not set | ||
603 | # CONFIG_USB_G_SERIAL is not set | ||
604 | # CONFIG_USB_MIDI_GADGET is not set | ||
521 | # CONFIG_MMC is not set | 605 | # CONFIG_MMC is not set |
522 | |||
523 | # | ||
524 | # LED devices | ||
525 | # | ||
526 | # CONFIG_NEW_LEDS is not set | 606 | # CONFIG_NEW_LEDS is not set |
527 | 607 | # CONFIG_RTC_CLASS is not set | |
528 | # | ||
529 | # LED drivers | ||
530 | # | ||
531 | |||
532 | # | ||
533 | # LED Triggers | ||
534 | # | ||
535 | |||
536 | # | ||
537 | # InfiniBand support | ||
538 | # | ||
539 | |||
540 | # | ||
541 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
542 | # | ||
543 | |||
544 | # | ||
545 | # Real Time Clock | ||
546 | # | ||
547 | CONFIG_RTC_LIB=y | ||
548 | CONFIG_RTC_CLASS=y | ||
549 | CONFIG_RTC_HCTOSYS=y | ||
550 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
551 | # CONFIG_RTC_DEBUG is not set | ||
552 | |||
553 | # | ||
554 | # RTC interfaces | ||
555 | # | ||
556 | CONFIG_RTC_INTF_SYSFS=y | ||
557 | CONFIG_RTC_INTF_PROC=y | ||
558 | CONFIG_RTC_INTF_DEV=y | ||
559 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
560 | # CONFIG_RTC_DRV_TEST is not set | ||
561 | |||
562 | # | ||
563 | # I2C RTC drivers | ||
564 | # | ||
565 | |||
566 | # | ||
567 | # SPI RTC drivers | ||
568 | # | ||
569 | |||
570 | # | ||
571 | # Platform RTC drivers | ||
572 | # | ||
573 | # CONFIG_RTC_DRV_DS1553 is not set | ||
574 | # CONFIG_RTC_DRV_DS1742 is not set | ||
575 | # CONFIG_RTC_DRV_M48T86 is not set | ||
576 | # CONFIG_RTC_DRV_V3020 is not set | ||
577 | |||
578 | # | ||
579 | # on-CPU RTC drivers | ||
580 | # | ||
581 | CONFIG_RTC_DRV_SH=y | ||
582 | 608 | ||
583 | # | 609 | # |
584 | # DMA Engine support | 610 | # DMA Engine support |
@@ -594,6 +620,11 @@ CONFIG_RTC_DRV_SH=y | |||
594 | # | 620 | # |
595 | 621 | ||
596 | # | 622 | # |
623 | # Userspace I/O | ||
624 | # | ||
625 | CONFIG_UIO=m | ||
626 | |||
627 | # | ||
597 | # File systems | 628 | # File systems |
598 | # | 629 | # |
599 | CONFIG_EXT2_FS=y | 630 | CONFIG_EXT2_FS=y |
@@ -612,6 +643,7 @@ CONFIG_FS_MBCACHE=y | |||
612 | # CONFIG_FS_POSIX_ACL is not set | 643 | # CONFIG_FS_POSIX_ACL is not set |
613 | # CONFIG_XFS_FS is not set | 644 | # CONFIG_XFS_FS is not set |
614 | # CONFIG_GFS2_FS is not set | 645 | # CONFIG_GFS2_FS is not set |
646 | # CONFIG_OCFS2_FS is not set | ||
615 | # CONFIG_MINIX_FS is not set | 647 | # CONFIG_MINIX_FS is not set |
616 | # CONFIG_ROMFS_FS is not set | 648 | # CONFIG_ROMFS_FS is not set |
617 | CONFIG_INOTIFY=y | 649 | CONFIG_INOTIFY=y |
@@ -667,6 +699,17 @@ CONFIG_RAMFS=y | |||
667 | # CONFIG_UFS_FS is not set | 699 | # CONFIG_UFS_FS is not set |
668 | 700 | ||
669 | # | 701 | # |
702 | # Network File Systems | ||
703 | # | ||
704 | # CONFIG_NFS_FS is not set | ||
705 | # CONFIG_NFSD is not set | ||
706 | # CONFIG_SMB_FS is not set | ||
707 | # CONFIG_CIFS is not set | ||
708 | # CONFIG_NCP_FS is not set | ||
709 | # CONFIG_CODA_FS is not set | ||
710 | # CONFIG_AFS_FS is not set | ||
711 | |||
712 | # | ||
670 | # Partition Types | 713 | # Partition Types |
671 | # | 714 | # |
672 | # CONFIG_PARTITION_ADVANCED is not set | 715 | # CONFIG_PARTITION_ADVANCED is not set |
@@ -678,6 +721,11 @@ CONFIG_MSDOS_PARTITION=y | |||
678 | # CONFIG_NLS is not set | 721 | # CONFIG_NLS is not set |
679 | 722 | ||
680 | # | 723 | # |
724 | # Distributed Lock Manager | ||
725 | # | ||
726 | # CONFIG_DLM is not set | ||
727 | |||
728 | # | ||
681 | # Profiling support | 729 | # Profiling support |
682 | # | 730 | # |
683 | CONFIG_PROFILING=y | 731 | CONFIG_PROFILING=y |
@@ -687,31 +735,28 @@ CONFIG_PROFILING=y | |||
687 | # Kernel hacking | 735 | # Kernel hacking |
688 | # | 736 | # |
689 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 737 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
690 | CONFIG_PRINTK_TIME=y | 738 | # CONFIG_PRINTK_TIME is not set |
691 | # CONFIG_ENABLE_MUST_CHECK is not set | 739 | # CONFIG_ENABLE_MUST_CHECK is not set |
692 | CONFIG_MAGIC_SYSRQ=y | 740 | CONFIG_MAGIC_SYSRQ=y |
693 | # CONFIG_UNUSED_SYMBOLS is not set | 741 | # CONFIG_UNUSED_SYMBOLS is not set |
694 | CONFIG_DEBUG_FS=y | 742 | CONFIG_DEBUG_FS=y |
695 | # CONFIG_HEADERS_CHECK is not set | 743 | # CONFIG_HEADERS_CHECK is not set |
696 | CONFIG_DEBUG_KERNEL=y | 744 | CONFIG_DEBUG_KERNEL=y |
697 | # CONFIG_DEBUG_SHIRQ is not set | 745 | CONFIG_DEBUG_SHIRQ=y |
698 | CONFIG_DETECT_SOFTLOCKUP=y | 746 | CONFIG_DETECT_SOFTLOCKUP=y |
747 | CONFIG_SCHED_DEBUG=y | ||
699 | # CONFIG_SCHEDSTATS is not set | 748 | # CONFIG_SCHEDSTATS is not set |
700 | # CONFIG_TIMER_STATS is not set | 749 | # CONFIG_TIMER_STATS is not set |
701 | CONFIG_DEBUG_SLAB=y | ||
702 | CONFIG_DEBUG_SLAB_LEAK=y | ||
703 | CONFIG_DEBUG_PREEMPT=y | 750 | CONFIG_DEBUG_PREEMPT=y |
704 | # CONFIG_DEBUG_RT_MUTEXES is not set | 751 | # CONFIG_DEBUG_RT_MUTEXES is not set |
705 | # CONFIG_RT_MUTEX_TESTER is not set | 752 | # CONFIG_RT_MUTEX_TESTER is not set |
706 | CONFIG_DEBUG_SPINLOCK=y | 753 | # CONFIG_DEBUG_SPINLOCK is not set |
707 | CONFIG_DEBUG_MUTEXES=y | 754 | # CONFIG_DEBUG_MUTEXES is not set |
708 | CONFIG_DEBUG_LOCK_ALLOC=y | 755 | # CONFIG_DEBUG_LOCK_ALLOC is not set |
709 | # CONFIG_PROVE_LOCKING is not set | 756 | # CONFIG_PROVE_LOCKING is not set |
710 | CONFIG_LOCKDEP=y | 757 | # CONFIG_LOCK_STAT is not set |
711 | CONFIG_DEBUG_LOCKDEP=y | ||
712 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 758 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
713 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | 759 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set |
714 | CONFIG_STACKTRACE=y | ||
715 | # CONFIG_DEBUG_KOBJECT is not set | 760 | # CONFIG_DEBUG_KOBJECT is not set |
716 | CONFIG_DEBUG_BUGVERBOSE=y | 761 | CONFIG_DEBUG_BUGVERBOSE=y |
717 | # CONFIG_DEBUG_INFO is not set | 762 | # CONFIG_DEBUG_INFO is not set |
@@ -735,10 +780,6 @@ CONFIG_DEBUG_STACK_USAGE=y | |||
735 | # | 780 | # |
736 | # CONFIG_KEYS is not set | 781 | # CONFIG_KEYS is not set |
737 | # CONFIG_SECURITY is not set | 782 | # CONFIG_SECURITY is not set |
738 | |||
739 | # | ||
740 | # Cryptographic options | ||
741 | # | ||
742 | # CONFIG_CRYPTO is not set | 783 | # CONFIG_CRYPTO is not set |
743 | 784 | ||
744 | # | 785 | # |
@@ -749,6 +790,7 @@ CONFIG_BITREVERSE=y | |||
749 | # CONFIG_CRC16 is not set | 790 | # CONFIG_CRC16 is not set |
750 | # CONFIG_CRC_ITU_T is not set | 791 | # CONFIG_CRC_ITU_T is not set |
751 | CONFIG_CRC32=y | 792 | CONFIG_CRC32=y |
793 | # CONFIG_CRC7 is not set | ||
752 | # CONFIG_LIBCRC32C is not set | 794 | # CONFIG_LIBCRC32C is not set |
753 | CONFIG_PLIST=y | 795 | CONFIG_PLIST=y |
754 | CONFIG_HAS_IOMEM=y | 796 | CONFIG_HAS_IOMEM=y |
diff --git a/arch/sh/drivers/dma/Kconfig b/arch/sh/drivers/dma/Kconfig index ee711431e504..4e711a0c3dae 100644 --- a/arch/sh/drivers/dma/Kconfig +++ b/arch/sh/drivers/dma/Kconfig | |||
@@ -12,6 +12,7 @@ config SH_DMA | |||
12 | config NR_ONCHIP_DMA_CHANNELS | 12 | config NR_ONCHIP_DMA_CHANNELS |
13 | int | 13 | int |
14 | depends on SH_DMA | 14 | depends on SH_DMA |
15 | default "6" if CPU_SUBTYPE_SH7720 | ||
15 | default "8" if CPU_SUBTYPE_SH7750R || CPU_SUBTYPE_SH7751R | 16 | default "8" if CPU_SUBTYPE_SH7750R || CPU_SUBTYPE_SH7751R |
16 | default "12" if CPU_SUBTYPE_SH7780 | 17 | default "12" if CPU_SUBTYPE_SH7780 |
17 | default "4" | 18 | default "4" |
diff --git a/arch/sh/drivers/dma/dma-sh.c b/arch/sh/drivers/dma/dma-sh.c index 06ed0609a95d..958bac1c585a 100644 --- a/arch/sh/drivers/dma/dma-sh.c +++ b/arch/sh/drivers/dma/dma-sh.c | |||
@@ -24,13 +24,19 @@ static int dmte_irq_map[] = { | |||
24 | DMTE1_IRQ, | 24 | DMTE1_IRQ, |
25 | DMTE2_IRQ, | 25 | DMTE2_IRQ, |
26 | DMTE3_IRQ, | 26 | DMTE3_IRQ, |
27 | #if defined(CONFIG_CPU_SUBTYPE_SH7751R) || \ | 27 | #if defined(CONFIG_CPU_SUBTYPE_SH7720) || \ |
28 | defined(CONFIG_CPU_SUBTYPE_SH7751R) || \ | ||
28 | defined(CONFIG_CPU_SUBTYPE_SH7760) || \ | 29 | defined(CONFIG_CPU_SUBTYPE_SH7760) || \ |
30 | defined(CONFIG_CPU_SUBTYPE_SH7709) || \ | ||
29 | defined(CONFIG_CPU_SUBTYPE_SH7780) | 31 | defined(CONFIG_CPU_SUBTYPE_SH7780) |
30 | DMTE4_IRQ, | 32 | DMTE4_IRQ, |
31 | DMTE5_IRQ, | 33 | DMTE5_IRQ, |
34 | #endif | ||
35 | #if defined(CONFIG_CPU_SUBTYPE_SH7751R) || \ | ||
36 | defined(CONFIG_CPU_SUBTYPE_SH7760) || \ | ||
37 | defined(CONFIG_CPU_SUBTYPE_SH7780) | ||
32 | DMTE6_IRQ, | 38 | DMTE6_IRQ, |
33 | DMTE7_IRQ, | 39 | DMTE7_IRQ, |
34 | #endif | 40 | #endif |
35 | }; | 41 | }; |
36 | 42 | ||
@@ -196,7 +202,8 @@ static int sh_dmac_get_dma_residue(struct dma_channel *chan) | |||
196 | return ctrl_inl(DMATCR[chan->chan]) << calc_xmit_shift(chan); | 202 | return ctrl_inl(DMATCR[chan->chan]) << calc_xmit_shift(chan); |
197 | } | 203 | } |
198 | 204 | ||
199 | #ifdef CONFIG_CPU_SUBTYPE_SH7780 | 205 | #if defined(CONFIG_CPU_SUBTYPE_SH7720) || \ |
206 | defined(CONFIG_CPU_SUBTYPE_SH7780) | ||
200 | #define dmaor_read_reg() ctrl_inw(DMAOR) | 207 | #define dmaor_read_reg() ctrl_inw(DMAOR) |
201 | #define dmaor_write_reg(data) ctrl_outw(data, DMAOR) | 208 | #define dmaor_write_reg(data) ctrl_outw(data, DMAOR) |
202 | #else | 209 | #else |
diff --git a/arch/sh/drivers/heartbeat.c b/arch/sh/drivers/heartbeat.c index 10c1828c9ff5..b76a14f12ce2 100644 --- a/arch/sh/drivers/heartbeat.c +++ b/arch/sh/drivers/heartbeat.c | |||
@@ -24,24 +24,44 @@ | |||
24 | #include <linux/sched.h> | 24 | #include <linux/sched.h> |
25 | #include <linux/timer.h> | 25 | #include <linux/timer.h> |
26 | #include <linux/io.h> | 26 | #include <linux/io.h> |
27 | #include <asm/heartbeat.h> | ||
27 | 28 | ||
28 | #define DRV_NAME "heartbeat" | 29 | #define DRV_NAME "heartbeat" |
29 | #define DRV_VERSION "0.1.0" | 30 | #define DRV_VERSION "0.1.1" |
30 | 31 | ||
31 | struct heartbeat_data { | 32 | static unsigned char default_bit_pos[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; |
32 | void __iomem *base; | 33 | |
33 | unsigned char bit_pos[8]; | 34 | static inline void heartbeat_toggle_bit(struct heartbeat_data *hd, |
34 | struct timer_list timer; | 35 | unsigned bit, unsigned int inverted) |
35 | }; | 36 | { |
37 | unsigned int new; | ||
38 | |||
39 | new = (1 << hd->bit_pos[bit]); | ||
40 | if (inverted) | ||
41 | new = ~new; | ||
42 | |||
43 | switch (hd->regsize) { | ||
44 | case 32: | ||
45 | iowrite32(new, hd->base); | ||
46 | break; | ||
47 | case 16: | ||
48 | iowrite16(new, hd->base); | ||
49 | break; | ||
50 | default: | ||
51 | iowrite8(new, hd->base); | ||
52 | break; | ||
53 | } | ||
54 | } | ||
36 | 55 | ||
37 | static void heartbeat_timer(unsigned long data) | 56 | static void heartbeat_timer(unsigned long data) |
38 | { | 57 | { |
39 | struct heartbeat_data *hd = (struct heartbeat_data *)data; | 58 | struct heartbeat_data *hd = (struct heartbeat_data *)data; |
40 | static unsigned bit = 0, up = 1; | 59 | static unsigned bit = 0, up = 1; |
41 | 60 | ||
42 | ctrl_outw(1 << hd->bit_pos[bit], (unsigned long)hd->base); | 61 | heartbeat_toggle_bit(hd, bit, hd->flags & HEARTBEAT_INVERTED); |
62 | |||
43 | bit += up; | 63 | bit += up; |
44 | if ((bit == 0) || (bit == ARRAY_SIZE(hd->bit_pos)-1)) | 64 | if ((bit == 0) || (bit == (hd->nr_bits)-1)) |
45 | up = -up; | 65 | up = -up; |
46 | 66 | ||
47 | mod_timer(&hd->timer, jiffies + (110 - ((300 << FSHIFT) / | 67 | mod_timer(&hd->timer, jiffies + (110 - ((300 << FSHIFT) / |
@@ -64,21 +84,31 @@ static int heartbeat_drv_probe(struct platform_device *pdev) | |||
64 | return -EINVAL; | 84 | return -EINVAL; |
65 | } | 85 | } |
66 | 86 | ||
67 | hd = kmalloc(sizeof(struct heartbeat_data), GFP_KERNEL); | ||
68 | if (unlikely(!hd)) | ||
69 | return -ENOMEM; | ||
70 | |||
71 | if (pdev->dev.platform_data) { | 87 | if (pdev->dev.platform_data) { |
72 | memcpy(hd->bit_pos, pdev->dev.platform_data, | 88 | hd = pdev->dev.platform_data; |
73 | ARRAY_SIZE(hd->bit_pos)); | ||
74 | } else { | 89 | } else { |
75 | int i; | 90 | hd = kzalloc(sizeof(struct heartbeat_data), GFP_KERNEL); |
91 | if (unlikely(!hd)) | ||
92 | return -ENOMEM; | ||
93 | } | ||
94 | |||
95 | hd->base = ioremap_nocache(res->start, res->end - res->start + 1); | ||
96 | if (!unlikely(hd->base)) { | ||
97 | dev_err(&pdev->dev, "ioremap failed\n"); | ||
98 | |||
99 | if (!pdev->dev.platform_data) | ||
100 | kfree(hd); | ||
101 | |||
102 | return -ENXIO; | ||
103 | } | ||
76 | 104 | ||
77 | for (i = 0; i < ARRAY_SIZE(hd->bit_pos); i++) | 105 | if (!hd->nr_bits) { |
78 | hd->bit_pos[i] = i; | 106 | hd->bit_pos = default_bit_pos; |
107 | hd->nr_bits = ARRAY_SIZE(default_bit_pos); | ||
79 | } | 108 | } |
80 | 109 | ||
81 | hd->base = (void __iomem *)(unsigned long)res->start; | 110 | if (!hd->regsize) |
111 | hd->regsize = 8; /* default access size */ | ||
82 | 112 | ||
83 | setup_timer(&hd->timer, heartbeat_timer, (unsigned long)hd); | 113 | setup_timer(&hd->timer, heartbeat_timer, (unsigned long)hd); |
84 | platform_set_drvdata(pdev, hd); | 114 | platform_set_drvdata(pdev, hd); |
@@ -91,10 +121,12 @@ static int heartbeat_drv_remove(struct platform_device *pdev) | |||
91 | struct heartbeat_data *hd = platform_get_drvdata(pdev); | 121 | struct heartbeat_data *hd = platform_get_drvdata(pdev); |
92 | 122 | ||
93 | del_timer_sync(&hd->timer); | 123 | del_timer_sync(&hd->timer); |
124 | iounmap(hd->base); | ||
94 | 125 | ||
95 | platform_set_drvdata(pdev, NULL); | 126 | platform_set_drvdata(pdev, NULL); |
96 | 127 | ||
97 | kfree(hd); | 128 | if (!pdev->dev.platform_data) |
129 | kfree(hd); | ||
98 | 130 | ||
99 | return 0; | 131 | return 0; |
100 | } | 132 | } |
diff --git a/arch/sh/drivers/pci/ops-rts7751r2d.c b/arch/sh/drivers/pci/ops-rts7751r2d.c index 4a518d948049..ec8430c8d2d1 100644 --- a/arch/sh/drivers/pci/ops-rts7751r2d.c +++ b/arch/sh/drivers/pci/ops-rts7751r2d.c | |||
@@ -19,10 +19,10 @@ | |||
19 | #include "pci-sh4.h" | 19 | #include "pci-sh4.h" |
20 | 20 | ||
21 | static u8 rts7751r2d_irq_tab[] __initdata = { | 21 | static u8 rts7751r2d_irq_tab[] __initdata = { |
22 | IRQ_PCISLOT1, | 22 | IRQ_PCI_INTA, |
23 | IRQ_PCISLOT2, | 23 | IRQ_PCI_INTB, |
24 | IRQ_PCMCIA, | 24 | IRQ_PCI_INTC, |
25 | IRQ_PCIETH, | 25 | IRQ_PCI_INTD, |
26 | }; | 26 | }; |
27 | 27 | ||
28 | int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) | 28 | int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) |
diff --git a/arch/sh/drivers/pci/pci-sh7780.c b/arch/sh/drivers/pci/pci-sh7780.c index 5508e45d4838..e516087fb435 100644 --- a/arch/sh/drivers/pci/pci-sh7780.c +++ b/arch/sh/drivers/pci/pci-sh7780.c | |||
@@ -79,19 +79,6 @@ static int __init sh7780_pci_init(void) | |||
79 | ctrl_outl(0xAAAA0000, INTC_ICR1); | 79 | ctrl_outl(0xAAAA0000, INTC_ICR1); |
80 | /* INTPRI: priority=3(all) */ | 80 | /* INTPRI: priority=3(all) */ |
81 | ctrl_outl(0x33333333, INTC_INTPRI); | 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 | } | 82 | } |
96 | 83 | ||
97 | if ((ret = sh4_pci_check_direct()) != 0) | 84 | if ((ret = sh4_pci_check_direct()) != 0) |
diff --git a/arch/sh/kernel/cpu/clock.c b/arch/sh/kernel/cpu/clock.c index 92807ffa8e20..b5f1e23ed57c 100644 --- a/arch/sh/kernel/cpu/clock.c +++ b/arch/sh/kernel/cpu/clock.c | |||
@@ -83,6 +83,8 @@ static void propagate_rate(struct clk *clk) | |||
83 | continue; | 83 | continue; |
84 | if (likely(clkp->ops && clkp->ops->recalc)) | 84 | if (likely(clkp->ops && clkp->ops->recalc)) |
85 | clkp->ops->recalc(clkp); | 85 | clkp->ops->recalc(clkp); |
86 | if (unlikely(clkp->flags & CLK_RATE_PROPAGATES)) | ||
87 | propagate_rate(clkp); | ||
86 | } | 88 | } |
87 | } | 89 | } |
88 | 90 | ||
diff --git a/arch/sh/kernel/cpu/init.c b/arch/sh/kernel/cpu/init.c index 9172e97dc26a..c217c4bf0085 100644 --- a/arch/sh/kernel/cpu/init.c +++ b/arch/sh/kernel/cpu/init.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <asm/cache.h> | 22 | #include <asm/cache.h> |
23 | #include <asm/io.h> | 23 | #include <asm/io.h> |
24 | #include <asm/ubc.h> | 24 | #include <asm/ubc.h> |
25 | #include <asm/smp.h> | ||
25 | 26 | ||
26 | /* | 27 | /* |
27 | * Generic wrapper for command line arguments to disable on-chip | 28 | * Generic wrapper for command line arguments to disable on-chip |
@@ -143,12 +144,15 @@ static void __init cache_init(void) | |||
143 | flags &= ~CCR_CACHE_EMODE; | 144 | flags &= ~CCR_CACHE_EMODE; |
144 | #endif | 145 | #endif |
145 | 146 | ||
146 | #ifdef CONFIG_SH_WRITETHROUGH | 147 | #if defined(CONFIG_CACHE_WRITETHROUGH) |
147 | /* Turn on Write-through caching */ | 148 | /* Write-through */ |
148 | flags |= CCR_CACHE_WT; | 149 | flags |= CCR_CACHE_WT; |
149 | #else | 150 | #elif defined(CONFIG_CACHE_WRITEBACK) |
150 | /* .. or default to Write-back */ | 151 | /* Write-back */ |
151 | flags |= CCR_CACHE_CB; | 152 | flags |= CCR_CACHE_CB; |
153 | #else | ||
154 | /* Off */ | ||
155 | flags &= ~CCR_CACHE_ENABLE; | ||
152 | #endif | 156 | #endif |
153 | 157 | ||
154 | ctrl_outl(flags, CCR); | 158 | ctrl_outl(flags, CCR); |
@@ -213,8 +217,11 @@ static void __init dsp_init(void) | |||
213 | * Each processor family is still responsible for doing its own probing | 217 | * Each processor family is still responsible for doing its own probing |
214 | * and cache configuration in detect_cpu_and_cache_system(). | 218 | * and cache configuration in detect_cpu_and_cache_system(). |
215 | */ | 219 | */ |
216 | asmlinkage void __init sh_cpu_init(void) | 220 | |
221 | asmlinkage void __cpuinit sh_cpu_init(void) | ||
217 | { | 222 | { |
223 | current_thread_info()->cpu = hard_smp_processor_id(); | ||
224 | |||
218 | /* First, probe the CPU */ | 225 | /* First, probe the CPU */ |
219 | detect_cpu_and_cache_system(); | 226 | detect_cpu_and_cache_system(); |
220 | 227 | ||
@@ -224,9 +231,10 @@ asmlinkage void __init sh_cpu_init(void) | |||
224 | /* Init the cache */ | 231 | /* Init the cache */ |
225 | cache_init(); | 232 | cache_init(); |
226 | 233 | ||
227 | shm_align_mask = max_t(unsigned long, | 234 | if (raw_smp_processor_id() == 0) |
228 | current_cpu_data.dcache.way_size - 1, | 235 | shm_align_mask = max_t(unsigned long, |
229 | PAGE_SIZE - 1); | 236 | current_cpu_data.dcache.way_size - 1, |
237 | PAGE_SIZE - 1); | ||
230 | 238 | ||
231 | /* Disable the FPU */ | 239 | /* Disable the FPU */ |
232 | if (fpu_disabled) { | 240 | if (fpu_disabled) { |
@@ -265,6 +273,7 @@ asmlinkage void __init sh_cpu_init(void) | |||
265 | * like PTRACE_SINGLESTEP or doing hardware watchpoints in GDB. So .. | 273 | * like PTRACE_SINGLESTEP or doing hardware watchpoints in GDB. So .. |
266 | * we wake it up and hope that all is well. | 274 | * we wake it up and hope that all is well. |
267 | */ | 275 | */ |
268 | ubc_wakeup(); | 276 | if (raw_smp_processor_id() == 0) |
277 | ubc_wakeup(); | ||
269 | speculative_execution_init(); | 278 | speculative_execution_init(); |
270 | } | 279 | } |
diff --git a/arch/sh/kernel/cpu/irq/Makefile b/arch/sh/kernel/cpu/irq/Makefile index 60bfc05cf354..8da8e178f09c 100644 --- a/arch/sh/kernel/cpu/irq/Makefile +++ b/arch/sh/kernel/cpu/irq/Makefile | |||
@@ -1,9 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Makefile for the Linux/SuperH CPU-specifc IRQ handlers. | 2 | # Makefile for the Linux/SuperH CPU-specifc IRQ handlers. |
3 | # | 3 | # |
4 | obj-y += imask.o | 4 | obj-y += imask.o intc.o |
5 | 5 | ||
6 | obj-$(CONFIG_CPU_HAS_IPR_IRQ) += ipr.o | 6 | obj-$(CONFIG_CPU_HAS_IPR_IRQ) += ipr.o |
7 | obj-$(CONFIG_CPU_HAS_MASKREG_IRQ) += maskreg.o | 7 | obj-$(CONFIG_CPU_HAS_MASKREG_IRQ) += maskreg.o |
8 | obj-$(CONFIG_CPU_HAS_INTC_IRQ) += intc.o | ||
9 | obj-$(CONFIG_CPU_HAS_INTC2_IRQ) += intc2.o | ||
diff --git a/arch/sh/kernel/cpu/irq/intc.c b/arch/sh/kernel/cpu/irq/intc.c index 9345a7130e9e..6ac018c15e03 100644 --- a/arch/sh/kernel/cpu/irq/intc.c +++ b/arch/sh/kernel/cpu/irq/intc.c | |||
@@ -20,145 +20,258 @@ | |||
20 | #include <linux/module.h> | 20 | #include <linux/module.h> |
21 | #include <linux/io.h> | 21 | #include <linux/io.h> |
22 | #include <linux/interrupt.h> | 22 | #include <linux/interrupt.h> |
23 | #include <linux/bootmem.h> | ||
24 | |||
25 | #define _INTC_MK(fn, mode, addr_e, addr_d, width, shift) \ | ||
26 | ((shift) | ((width) << 5) | ((fn) << 9) | ((mode) << 13) | \ | ||
27 | ((addr_e) << 16) | ((addr_d << 24))) | ||
28 | |||
29 | #define _INTC_SHIFT(h) (h & 0x1f) | ||
30 | #define _INTC_WIDTH(h) ((h >> 5) & 0xf) | ||
31 | #define _INTC_FN(h) ((h >> 9) & 0xf) | ||
32 | #define _INTC_MODE(h) ((h >> 13) & 0x7) | ||
33 | #define _INTC_ADDR_E(h) ((h >> 16) & 0xff) | ||
34 | #define _INTC_ADDR_D(h) ((h >> 24) & 0xff) | ||
35 | |||
36 | struct intc_handle_int { | ||
37 | unsigned int irq; | ||
38 | unsigned long handle; | ||
39 | }; | ||
40 | |||
41 | struct intc_desc_int { | ||
42 | unsigned long *reg; | ||
43 | #ifdef CONFIG_SMP | ||
44 | unsigned long *smp; | ||
45 | #endif | ||
46 | unsigned int nr_reg; | ||
47 | struct intc_handle_int *prio; | ||
48 | unsigned int nr_prio; | ||
49 | struct intc_handle_int *sense; | ||
50 | unsigned int nr_sense; | ||
51 | struct irq_chip chip; | ||
52 | }; | ||
23 | 53 | ||
24 | #define _INTC_MK(fn, idx, bit, value) \ | 54 | #ifdef CONFIG_SMP |
25 | ((fn) << 24 | ((value) << 16) | ((idx) << 8) | (bit)) | 55 | #define IS_SMP(x) x.smp |
26 | #define _INTC_FN(h) (h >> 24) | 56 | #define INTC_REG(d, x, c) (d->reg[(x)] + ((d->smp[(x)] & 0xff) * c)) |
27 | #define _INTC_VALUE(h) ((h >> 16) & 0xff) | 57 | #define SMP_NR(d, x) ((d->smp[(x)] >> 8) ? (d->smp[(x)] >> 8) : 1) |
28 | #define _INTC_IDX(h) ((h >> 8) & 0xff) | 58 | #else |
29 | #define _INTC_BIT(h) (h & 0xff) | 59 | #define IS_SMP(x) 0 |
60 | #define INTC_REG(d, x, c) (d->reg[(x)]) | ||
61 | #define SMP_NR(d, x) 1 | ||
62 | #endif | ||
30 | 63 | ||
31 | #define _INTC_PTR(desc, member, data) \ | 64 | static unsigned int intc_prio_level[NR_IRQS]; /* for now */ |
32 | (desc->member + _INTC_IDX(data)) | ||
33 | 65 | ||
34 | static inline struct intc_desc *get_intc_desc(unsigned int irq) | 66 | static inline struct intc_desc_int *get_intc_desc(unsigned int irq) |
35 | { | 67 | { |
36 | struct irq_chip *chip = get_irq_chip(irq); | 68 | struct irq_chip *chip = get_irq_chip(irq); |
37 | return (void *)((char *)chip - offsetof(struct intc_desc, chip)); | 69 | return (void *)((char *)chip - offsetof(struct intc_desc_int, chip)); |
38 | } | 70 | } |
39 | 71 | ||
40 | static inline unsigned int set_field(unsigned int value, | 72 | static inline unsigned int set_field(unsigned int value, |
41 | unsigned int field_value, | 73 | unsigned int field_value, |
42 | unsigned int width, | 74 | unsigned int handle) |
43 | unsigned int shift) | ||
44 | { | 75 | { |
76 | unsigned int width = _INTC_WIDTH(handle); | ||
77 | unsigned int shift = _INTC_SHIFT(handle); | ||
78 | |||
45 | value &= ~(((1 << width) - 1) << shift); | 79 | value &= ~(((1 << width) - 1) << shift); |
46 | value |= field_value << shift; | 80 | value |= field_value << shift; |
47 | return value; | 81 | return value; |
48 | } | 82 | } |
49 | 83 | ||
50 | static inline unsigned int set_prio_field(struct intc_desc *desc, | 84 | static void write_8(unsigned long addr, unsigned long h, unsigned long data) |
51 | unsigned int value, | ||
52 | unsigned int priority, | ||
53 | unsigned int data) | ||
54 | { | 85 | { |
55 | unsigned int width = _INTC_PTR(desc, prio_regs, data)->field_width; | 86 | ctrl_outb(set_field(0, data, h), addr); |
56 | |||
57 | return set_field(value, priority, width, _INTC_BIT(data)); | ||
58 | } | 87 | } |
59 | 88 | ||
60 | static void disable_prio_16(struct intc_desc *desc, unsigned int data) | 89 | static void write_16(unsigned long addr, unsigned long h, unsigned long data) |
61 | { | 90 | { |
62 | unsigned long addr = _INTC_PTR(desc, prio_regs, data)->reg; | 91 | ctrl_outw(set_field(0, data, h), addr); |
63 | |||
64 | ctrl_outw(set_prio_field(desc, ctrl_inw(addr), 0, data), addr); | ||
65 | } | 92 | } |
66 | 93 | ||
67 | static void enable_prio_16(struct intc_desc *desc, unsigned int data) | 94 | static void write_32(unsigned long addr, unsigned long h, unsigned long data) |
68 | { | 95 | { |
69 | unsigned long addr = _INTC_PTR(desc, prio_regs, data)->reg; | 96 | ctrl_outl(set_field(0, data, h), addr); |
70 | unsigned int prio = _INTC_VALUE(data); | ||
71 | |||
72 | ctrl_outw(set_prio_field(desc, ctrl_inw(addr), prio, data), addr); | ||
73 | } | 97 | } |
74 | 98 | ||
75 | static void disable_prio_32(struct intc_desc *desc, unsigned int data) | 99 | static void modify_8(unsigned long addr, unsigned long h, unsigned long data) |
76 | { | 100 | { |
77 | unsigned long addr = _INTC_PTR(desc, prio_regs, data)->reg; | 101 | ctrl_outb(set_field(ctrl_inb(addr), data, h), addr); |
78 | |||
79 | ctrl_outl(set_prio_field(desc, ctrl_inl(addr), 0, data), addr); | ||
80 | } | 102 | } |
81 | 103 | ||
82 | static void enable_prio_32(struct intc_desc *desc, unsigned int data) | 104 | static void modify_16(unsigned long addr, unsigned long h, unsigned long data) |
83 | { | 105 | { |
84 | unsigned long addr = _INTC_PTR(desc, prio_regs, data)->reg; | 106 | ctrl_outw(set_field(ctrl_inw(addr), data, h), addr); |
85 | unsigned int prio = _INTC_VALUE(data); | ||
86 | |||
87 | ctrl_outl(set_prio_field(desc, ctrl_inl(addr), prio, data), addr); | ||
88 | } | 107 | } |
89 | 108 | ||
90 | static void disable_mask_8(struct intc_desc *desc, unsigned int data) | 109 | static void modify_32(unsigned long addr, unsigned long h, unsigned long data) |
91 | { | 110 | { |
92 | ctrl_outb(1 << _INTC_BIT(data), | 111 | ctrl_outl(set_field(ctrl_inl(addr), data, h), addr); |
93 | _INTC_PTR(desc, mask_regs, data)->set_reg); | ||
94 | } | 112 | } |
95 | 113 | ||
96 | static void enable_mask_8(struct intc_desc *desc, unsigned int data) | 114 | enum { REG_FN_ERR = 0, REG_FN_WRITE_BASE = 1, REG_FN_MODIFY_BASE = 5 }; |
115 | |||
116 | static void (*intc_reg_fns[])(unsigned long addr, | ||
117 | unsigned long h, | ||
118 | unsigned long data) = { | ||
119 | [REG_FN_WRITE_BASE + 0] = write_8, | ||
120 | [REG_FN_WRITE_BASE + 1] = write_16, | ||
121 | [REG_FN_WRITE_BASE + 3] = write_32, | ||
122 | [REG_FN_MODIFY_BASE + 0] = modify_8, | ||
123 | [REG_FN_MODIFY_BASE + 1] = modify_16, | ||
124 | [REG_FN_MODIFY_BASE + 3] = modify_32, | ||
125 | }; | ||
126 | |||
127 | enum { MODE_ENABLE_REG = 0, /* Bit(s) set -> interrupt enabled */ | ||
128 | MODE_MASK_REG, /* Bit(s) set -> interrupt disabled */ | ||
129 | MODE_DUAL_REG, /* Two registers, set bit to enable / disable */ | ||
130 | MODE_PRIO_REG, /* Priority value written to enable interrupt */ | ||
131 | MODE_PCLR_REG, /* Above plus all bits set to disable interrupt */ | ||
132 | }; | ||
133 | |||
134 | static void intc_mode_field(unsigned long addr, | ||
135 | unsigned long handle, | ||
136 | void (*fn)(unsigned long, | ||
137 | unsigned long, | ||
138 | unsigned long), | ||
139 | unsigned int irq) | ||
97 | { | 140 | { |
98 | ctrl_outb(1 << _INTC_BIT(data), | 141 | fn(addr, handle, ((1 << _INTC_WIDTH(handle)) - 1)); |
99 | _INTC_PTR(desc, mask_regs, data)->clr_reg); | ||
100 | } | 142 | } |
101 | 143 | ||
102 | static void disable_mask_32(struct intc_desc *desc, unsigned int data) | 144 | static void intc_mode_zero(unsigned long addr, |
145 | unsigned long handle, | ||
146 | void (*fn)(unsigned long, | ||
147 | unsigned long, | ||
148 | unsigned long), | ||
149 | unsigned int irq) | ||
103 | { | 150 | { |
104 | ctrl_outl(1 << _INTC_BIT(data), | 151 | fn(addr, handle, 0); |
105 | _INTC_PTR(desc, mask_regs, data)->set_reg); | ||
106 | } | 152 | } |
107 | 153 | ||
108 | static void enable_mask_32(struct intc_desc *desc, unsigned int data) | 154 | static void intc_mode_prio(unsigned long addr, |
155 | unsigned long handle, | ||
156 | void (*fn)(unsigned long, | ||
157 | unsigned long, | ||
158 | unsigned long), | ||
159 | unsigned int irq) | ||
109 | { | 160 | { |
110 | ctrl_outl(1 << _INTC_BIT(data), | 161 | fn(addr, handle, intc_prio_level[irq]); |
111 | _INTC_PTR(desc, mask_regs, data)->clr_reg); | ||
112 | } | 162 | } |
113 | 163 | ||
114 | enum { REG_FN_ERROR=0, | 164 | static void (*intc_enable_fns[])(unsigned long addr, |
115 | REG_FN_MASK_8, REG_FN_MASK_32, | 165 | unsigned long handle, |
116 | REG_FN_PRIO_16, REG_FN_PRIO_32 }; | 166 | void (*fn)(unsigned long, |
117 | 167 | unsigned long, | |
118 | static struct { | 168 | unsigned long), |
119 | void (*enable)(struct intc_desc *, unsigned int); | 169 | unsigned int irq) = { |
120 | void (*disable)(struct intc_desc *, unsigned int); | 170 | [MODE_ENABLE_REG] = intc_mode_field, |
121 | } intc_reg_fns[] = { | 171 | [MODE_MASK_REG] = intc_mode_zero, |
122 | [REG_FN_MASK_8] = { enable_mask_8, disable_mask_8 }, | 172 | [MODE_DUAL_REG] = intc_mode_field, |
123 | [REG_FN_MASK_32] = { enable_mask_32, disable_mask_32 }, | 173 | [MODE_PRIO_REG] = intc_mode_prio, |
124 | [REG_FN_PRIO_16] = { enable_prio_16, disable_prio_16 }, | 174 | [MODE_PCLR_REG] = intc_mode_prio, |
125 | [REG_FN_PRIO_32] = { enable_prio_32, disable_prio_32 }, | ||
126 | }; | 175 | }; |
127 | 176 | ||
128 | static void intc_enable(unsigned int irq) | 177 | static void (*intc_disable_fns[])(unsigned long addr, |
178 | unsigned long handle, | ||
179 | void (*fn)(unsigned long, | ||
180 | unsigned long, | ||
181 | unsigned long), | ||
182 | unsigned int irq) = { | ||
183 | [MODE_ENABLE_REG] = intc_mode_zero, | ||
184 | [MODE_MASK_REG] = intc_mode_field, | ||
185 | [MODE_DUAL_REG] = intc_mode_field, | ||
186 | [MODE_PRIO_REG] = intc_mode_zero, | ||
187 | [MODE_PCLR_REG] = intc_mode_field, | ||
188 | }; | ||
189 | |||
190 | static inline void _intc_enable(unsigned int irq, unsigned long handle) | ||
129 | { | 191 | { |
130 | struct intc_desc *desc = get_intc_desc(irq); | 192 | struct intc_desc_int *d = get_intc_desc(irq); |
131 | unsigned int data = (unsigned int) get_irq_chip_data(irq); | 193 | unsigned long addr; |
194 | unsigned int cpu; | ||
195 | |||
196 | for (cpu = 0; cpu < SMP_NR(d, _INTC_ADDR_E(handle)); cpu++) { | ||
197 | addr = INTC_REG(d, _INTC_ADDR_E(handle), cpu); | ||
198 | intc_enable_fns[_INTC_MODE(handle)](addr, handle, intc_reg_fns\ | ||
199 | [_INTC_FN(handle)], irq); | ||
200 | } | ||
201 | } | ||
132 | 202 | ||
133 | intc_reg_fns[_INTC_FN(data)].enable(desc, data); | 203 | static void intc_enable(unsigned int irq) |
204 | { | ||
205 | _intc_enable(irq, (unsigned long)get_irq_chip_data(irq)); | ||
134 | } | 206 | } |
135 | 207 | ||
136 | static void intc_disable(unsigned int irq) | 208 | static void intc_disable(unsigned int irq) |
137 | { | 209 | { |
138 | struct intc_desc *desc = get_intc_desc(irq); | 210 | struct intc_desc_int *d = get_intc_desc(irq); |
139 | unsigned int data = (unsigned int) get_irq_chip_data(irq); | 211 | unsigned long handle = (unsigned long) get_irq_chip_data(irq); |
140 | 212 | unsigned long addr; | |
141 | intc_reg_fns[_INTC_FN(data)].disable(desc, data); | 213 | unsigned int cpu; |
214 | |||
215 | for (cpu = 0; cpu < SMP_NR(d, _INTC_ADDR_D(handle)); cpu++) { | ||
216 | addr = INTC_REG(d, _INTC_ADDR_D(handle), cpu); | ||
217 | intc_disable_fns[_INTC_MODE(handle)](addr, handle,intc_reg_fns\ | ||
218 | [_INTC_FN(handle)], irq); | ||
219 | } | ||
142 | } | 220 | } |
143 | 221 | ||
144 | static void set_sense_16(struct intc_desc *desc, unsigned int data) | 222 | static struct intc_handle_int *intc_find_irq(struct intc_handle_int *hp, |
223 | unsigned int nr_hp, | ||
224 | unsigned int irq) | ||
145 | { | 225 | { |
146 | unsigned long addr = _INTC_PTR(desc, sense_regs, data)->reg; | 226 | int i; |
147 | unsigned int width = _INTC_PTR(desc, sense_regs, data)->field_width; | 227 | |
148 | unsigned int bit = _INTC_BIT(data); | 228 | /* this doesn't scale well, but... |
149 | unsigned int value = _INTC_VALUE(data); | 229 | * |
230 | * this function should only be used for cerain uncommon | ||
231 | * operations such as intc_set_priority() and intc_set_sense() | ||
232 | * and in those rare cases performance doesn't matter that much. | ||
233 | * keeping the memory footprint low is more important. | ||
234 | * | ||
235 | * one rather simple way to speed this up and still keep the | ||
236 | * memory footprint down is to make sure the array is sorted | ||
237 | * and then perform a bisect to lookup the irq. | ||
238 | */ | ||
150 | 239 | ||
151 | ctrl_outw(set_field(ctrl_inw(addr), value, width, bit), addr); | 240 | for (i = 0; i < nr_hp; i++) { |
241 | if ((hp + i)->irq != irq) | ||
242 | continue; | ||
243 | |||
244 | return hp + i; | ||
245 | } | ||
246 | |||
247 | return NULL; | ||
152 | } | 248 | } |
153 | 249 | ||
154 | static void set_sense_32(struct intc_desc *desc, unsigned int data) | 250 | int intc_set_priority(unsigned int irq, unsigned int prio) |
155 | { | 251 | { |
156 | unsigned long addr = _INTC_PTR(desc, sense_regs, data)->reg; | 252 | struct intc_desc_int *d = get_intc_desc(irq); |
157 | unsigned int width = _INTC_PTR(desc, sense_regs, data)->field_width; | 253 | struct intc_handle_int *ihp; |
158 | unsigned int bit = _INTC_BIT(data); | 254 | |
159 | unsigned int value = _INTC_VALUE(data); | 255 | if (!intc_prio_level[irq] || prio <= 1) |
256 | return -EINVAL; | ||
257 | |||
258 | ihp = intc_find_irq(d->prio, d->nr_prio, irq); | ||
259 | if (ihp) { | ||
260 | if (prio >= (1 << _INTC_WIDTH(ihp->handle))) | ||
261 | return -EINVAL; | ||
160 | 262 | ||
161 | ctrl_outl(set_field(ctrl_inl(addr), value, width, bit), addr); | 263 | intc_prio_level[irq] = prio; |
264 | |||
265 | /* | ||
266 | * only set secondary masking method directly | ||
267 | * primary masking method is using intc_prio_level[irq] | ||
268 | * priority level will be set during next enable() | ||
269 | */ | ||
270 | |||
271 | if (_INTC_FN(ihp->handle) != REG_FN_ERR) | ||
272 | _intc_enable(irq, ihp->handle); | ||
273 | } | ||
274 | return 0; | ||
162 | } | 275 | } |
163 | 276 | ||
164 | #define VALID(x) (x | 0x80) | 277 | #define VALID(x) (x | 0x80) |
@@ -172,79 +285,38 @@ static unsigned char intc_irq_sense_table[IRQ_TYPE_SENSE_MASK + 1] = { | |||
172 | 285 | ||
173 | static int intc_set_sense(unsigned int irq, unsigned int type) | 286 | static int intc_set_sense(unsigned int irq, unsigned int type) |
174 | { | 287 | { |
175 | struct intc_desc *desc = get_intc_desc(irq); | 288 | struct intc_desc_int *d = get_intc_desc(irq); |
176 | unsigned char value = intc_irq_sense_table[type & IRQ_TYPE_SENSE_MASK]; | 289 | unsigned char value = intc_irq_sense_table[type & IRQ_TYPE_SENSE_MASK]; |
177 | unsigned int i, j, data, bit; | 290 | struct intc_handle_int *ihp; |
178 | intc_enum enum_id = 0; | 291 | unsigned long addr; |
179 | |||
180 | for (i = 0; i < desc->nr_vectors; i++) { | ||
181 | struct intc_vect *vect = desc->vectors + i; | ||
182 | |||
183 | if (evt2irq(vect->vect) != irq) | ||
184 | continue; | ||
185 | 292 | ||
186 | enum_id = vect->enum_id; | 293 | if (!value) |
187 | break; | ||
188 | } | ||
189 | |||
190 | if (!enum_id || !value) | ||
191 | return -EINVAL; | 294 | return -EINVAL; |
192 | 295 | ||
193 | value ^= VALID(0); | 296 | ihp = intc_find_irq(d->sense, d->nr_sense, irq); |
194 | 297 | if (ihp) { | |
195 | for (i = 0; i < desc->nr_sense_regs; i++) { | 298 | addr = INTC_REG(d, _INTC_ADDR_E(ihp->handle), 0); |
196 | struct intc_sense_reg *sr = desc->sense_regs + i; | 299 | intc_reg_fns[_INTC_FN(ihp->handle)](addr, ihp->handle, value); |
197 | |||
198 | for (j = 0; j < ARRAY_SIZE(sr->enum_ids); j++) { | ||
199 | if (sr->enum_ids[j] != enum_id) | ||
200 | continue; | ||
201 | |||
202 | bit = sr->reg_width - ((j + 1) * sr->field_width); | ||
203 | data = _INTC_MK(0, i, bit, value); | ||
204 | |||
205 | switch(sr->reg_width) { | ||
206 | case 16: | ||
207 | set_sense_16(desc, data); | ||
208 | break; | ||
209 | case 32: | ||
210 | set_sense_32(desc, data); | ||
211 | break; | ||
212 | } | ||
213 | |||
214 | return 0; | ||
215 | } | ||
216 | } | 300 | } |
217 | 301 | return 0; | |
218 | return -EINVAL; | ||
219 | } | 302 | } |
220 | 303 | ||
221 | static unsigned int __init intc_find_mask_handler(unsigned int width) | 304 | static unsigned int __init intc_get_reg(struct intc_desc_int *d, |
305 | unsigned long address) | ||
222 | { | 306 | { |
223 | switch (width) { | 307 | unsigned int k; |
224 | case 8: | ||
225 | return REG_FN_MASK_8; | ||
226 | case 32: | ||
227 | return REG_FN_MASK_32; | ||
228 | } | ||
229 | 308 | ||
230 | BUG(); | 309 | for (k = 0; k < d->nr_reg; k++) { |
231 | return REG_FN_ERROR; | 310 | if (d->reg[k] == address) |
232 | } | 311 | return k; |
233 | |||
234 | static unsigned int __init intc_find_prio_handler(unsigned int width) | ||
235 | { | ||
236 | switch (width) { | ||
237 | case 16: | ||
238 | return REG_FN_PRIO_16; | ||
239 | case 32: | ||
240 | return REG_FN_PRIO_32; | ||
241 | } | 312 | } |
242 | 313 | ||
243 | BUG(); | 314 | BUG(); |
244 | return REG_FN_ERROR; | 315 | return 0; |
245 | } | 316 | } |
246 | 317 | ||
247 | static intc_enum __init intc_grp_id(struct intc_desc *desc, intc_enum enum_id) | 318 | static intc_enum __init intc_grp_id(struct intc_desc *desc, |
319 | intc_enum enum_id) | ||
248 | { | 320 | { |
249 | struct intc_group *g = desc->groups; | 321 | struct intc_group *g = desc->groups; |
250 | unsigned int i, j; | 322 | unsigned int i, j; |
@@ -289,10 +361,12 @@ static unsigned int __init intc_prio_value(struct intc_desc *desc, | |||
289 | } | 361 | } |
290 | 362 | ||
291 | static unsigned int __init intc_mask_data(struct intc_desc *desc, | 363 | static unsigned int __init intc_mask_data(struct intc_desc *desc, |
364 | struct intc_desc_int *d, | ||
292 | intc_enum enum_id, int do_grps) | 365 | intc_enum enum_id, int do_grps) |
293 | { | 366 | { |
294 | struct intc_mask_reg *mr = desc->mask_regs; | 367 | struct intc_mask_reg *mr = desc->mask_regs; |
295 | unsigned int i, j, fn; | 368 | unsigned int i, j, fn, mode; |
369 | unsigned long reg_e, reg_d; | ||
296 | 370 | ||
297 | for (i = 0; mr && enum_id && i < desc->nr_mask_regs; i++) { | 371 | for (i = 0; mr && enum_id && i < desc->nr_mask_regs; i++) { |
298 | mr = desc->mask_regs + i; | 372 | mr = desc->mask_regs + i; |
@@ -301,25 +375,46 @@ static unsigned int __init intc_mask_data(struct intc_desc *desc, | |||
301 | if (mr->enum_ids[j] != enum_id) | 375 | if (mr->enum_ids[j] != enum_id) |
302 | continue; | 376 | continue; |
303 | 377 | ||
304 | fn = intc_find_mask_handler(mr->reg_width); | 378 | if (mr->set_reg && mr->clr_reg) { |
305 | if (fn == REG_FN_ERROR) | 379 | fn = REG_FN_WRITE_BASE; |
306 | return 0; | 380 | mode = MODE_DUAL_REG; |
381 | reg_e = mr->clr_reg; | ||
382 | reg_d = mr->set_reg; | ||
383 | } else { | ||
384 | fn = REG_FN_MODIFY_BASE; | ||
385 | if (mr->set_reg) { | ||
386 | mode = MODE_ENABLE_REG; | ||
387 | reg_e = mr->set_reg; | ||
388 | reg_d = mr->set_reg; | ||
389 | } else { | ||
390 | mode = MODE_MASK_REG; | ||
391 | reg_e = mr->clr_reg; | ||
392 | reg_d = mr->clr_reg; | ||
393 | } | ||
394 | } | ||
307 | 395 | ||
308 | return _INTC_MK(fn, i, (mr->reg_width - 1) - j, 0); | 396 | fn += (mr->reg_width >> 3) - 1; |
397 | return _INTC_MK(fn, mode, | ||
398 | intc_get_reg(d, reg_e), | ||
399 | intc_get_reg(d, reg_d), | ||
400 | 1, | ||
401 | (mr->reg_width - 1) - j); | ||
309 | } | 402 | } |
310 | } | 403 | } |
311 | 404 | ||
312 | if (do_grps) | 405 | if (do_grps) |
313 | return intc_mask_data(desc, intc_grp_id(desc, enum_id), 0); | 406 | return intc_mask_data(desc, d, intc_grp_id(desc, enum_id), 0); |
314 | 407 | ||
315 | return 0; | 408 | return 0; |
316 | } | 409 | } |
317 | 410 | ||
318 | static unsigned int __init intc_prio_data(struct intc_desc *desc, | 411 | static unsigned int __init intc_prio_data(struct intc_desc *desc, |
412 | struct intc_desc_int *d, | ||
319 | intc_enum enum_id, int do_grps) | 413 | intc_enum enum_id, int do_grps) |
320 | { | 414 | { |
321 | struct intc_prio_reg *pr = desc->prio_regs; | 415 | struct intc_prio_reg *pr = desc->prio_regs; |
322 | unsigned int i, j, fn, bit, prio; | 416 | unsigned int i, j, fn, mode, bit; |
417 | unsigned long reg_e, reg_d; | ||
323 | 418 | ||
324 | for (i = 0; pr && enum_id && i < desc->nr_prio_regs; i++) { | 419 | for (i = 0; pr && enum_id && i < desc->nr_prio_regs; i++) { |
325 | pr = desc->prio_regs + i; | 420 | pr = desc->prio_regs + i; |
@@ -328,28 +423,72 @@ static unsigned int __init intc_prio_data(struct intc_desc *desc, | |||
328 | if (pr->enum_ids[j] != enum_id) | 423 | if (pr->enum_ids[j] != enum_id) |
329 | continue; | 424 | continue; |
330 | 425 | ||
331 | fn = intc_find_prio_handler(pr->reg_width); | 426 | if (pr->set_reg && pr->clr_reg) { |
332 | if (fn == REG_FN_ERROR) | 427 | fn = REG_FN_WRITE_BASE; |
333 | return 0; | 428 | mode = MODE_PCLR_REG; |
429 | reg_e = pr->set_reg; | ||
430 | reg_d = pr->clr_reg; | ||
431 | } else { | ||
432 | fn = REG_FN_MODIFY_BASE; | ||
433 | mode = MODE_PRIO_REG; | ||
434 | if (!pr->set_reg) | ||
435 | BUG(); | ||
436 | reg_e = pr->set_reg; | ||
437 | reg_d = pr->set_reg; | ||
438 | } | ||
334 | 439 | ||
335 | prio = intc_prio_value(desc, enum_id, 1); | 440 | fn += (pr->reg_width >> 3) - 1; |
336 | bit = pr->reg_width - ((j + 1) * pr->field_width); | 441 | bit = pr->reg_width - ((j + 1) * pr->field_width); |
337 | 442 | ||
338 | BUG_ON(bit < 0); | 443 | BUG_ON(bit < 0); |
339 | 444 | ||
340 | return _INTC_MK(fn, i, bit, prio); | 445 | return _INTC_MK(fn, mode, |
446 | intc_get_reg(d, reg_e), | ||
447 | intc_get_reg(d, reg_d), | ||
448 | pr->field_width, bit); | ||
341 | } | 449 | } |
342 | } | 450 | } |
343 | 451 | ||
344 | if (do_grps) | 452 | if (do_grps) |
345 | return intc_prio_data(desc, intc_grp_id(desc, enum_id), 0); | 453 | return intc_prio_data(desc, d, intc_grp_id(desc, enum_id), 0); |
346 | 454 | ||
347 | return 0; | 455 | return 0; |
348 | } | 456 | } |
349 | 457 | ||
350 | static void __init intc_register_irq(struct intc_desc *desc, intc_enum enum_id, | 458 | static unsigned int __init intc_sense_data(struct intc_desc *desc, |
459 | struct intc_desc_int *d, | ||
460 | intc_enum enum_id) | ||
461 | { | ||
462 | struct intc_sense_reg *sr = desc->sense_regs; | ||
463 | unsigned int i, j, fn, bit; | ||
464 | |||
465 | for (i = 0; sr && enum_id && i < desc->nr_sense_regs; i++) { | ||
466 | sr = desc->sense_regs + i; | ||
467 | |||
468 | for (j = 0; j < ARRAY_SIZE(sr->enum_ids); j++) { | ||
469 | if (sr->enum_ids[j] != enum_id) | ||
470 | continue; | ||
471 | |||
472 | fn = REG_FN_MODIFY_BASE; | ||
473 | fn += (sr->reg_width >> 3) - 1; | ||
474 | bit = sr->reg_width - ((j + 1) * sr->field_width); | ||
475 | |||
476 | BUG_ON(bit < 0); | ||
477 | |||
478 | return _INTC_MK(fn, 0, intc_get_reg(d, sr->reg), | ||
479 | 0, sr->field_width, bit); | ||
480 | } | ||
481 | } | ||
482 | |||
483 | return 0; | ||
484 | } | ||
485 | |||
486 | static void __init intc_register_irq(struct intc_desc *desc, | ||
487 | struct intc_desc_int *d, | ||
488 | intc_enum enum_id, | ||
351 | unsigned int irq) | 489 | unsigned int irq) |
352 | { | 490 | { |
491 | struct intc_handle_int *hp; | ||
353 | unsigned int data[2], primary; | 492 | unsigned int data[2], primary; |
354 | 493 | ||
355 | /* Prefer single interrupt source bitmap over other combinations: | 494 | /* Prefer single interrupt source bitmap over other combinations: |
@@ -359,15 +498,15 @@ static void __init intc_register_irq(struct intc_desc *desc, intc_enum enum_id, | |||
359 | * 4. priority, multiple interrupt sources (groups) | 498 | * 4. priority, multiple interrupt sources (groups) |
360 | */ | 499 | */ |
361 | 500 | ||
362 | data[0] = intc_mask_data(desc, enum_id, 0); | 501 | data[0] = intc_mask_data(desc, d, enum_id, 0); |
363 | data[1] = intc_prio_data(desc, enum_id, 0); | 502 | data[1] = intc_prio_data(desc, d, enum_id, 0); |
364 | 503 | ||
365 | primary = 0; | 504 | primary = 0; |
366 | if (!data[0] && data[1]) | 505 | if (!data[0] && data[1]) |
367 | primary = 1; | 506 | primary = 1; |
368 | 507 | ||
369 | data[0] = data[0] ? data[0] : intc_mask_data(desc, enum_id, 1); | 508 | data[0] = data[0] ? data[0] : intc_mask_data(desc, d, enum_id, 1); |
370 | data[1] = data[1] ? data[1] : intc_prio_data(desc, enum_id, 1); | 509 | data[1] = data[1] ? data[1] : intc_prio_data(desc, d, enum_id, 1); |
371 | 510 | ||
372 | if (!data[primary]) | 511 | if (!data[primary]) |
373 | primary ^= 1; | 512 | primary ^= 1; |
@@ -375,31 +514,118 @@ static void __init intc_register_irq(struct intc_desc *desc, intc_enum enum_id, | |||
375 | BUG_ON(!data[primary]); /* must have primary masking method */ | 514 | BUG_ON(!data[primary]); /* must have primary masking method */ |
376 | 515 | ||
377 | disable_irq_nosync(irq); | 516 | disable_irq_nosync(irq); |
378 | set_irq_chip_and_handler_name(irq, &desc->chip, | 517 | set_irq_chip_and_handler_name(irq, &d->chip, |
379 | handle_level_irq, "level"); | 518 | handle_level_irq, "level"); |
380 | set_irq_chip_data(irq, (void *)data[primary]); | 519 | set_irq_chip_data(irq, (void *)data[primary]); |
381 | 520 | ||
521 | /* record the desired priority level */ | ||
522 | intc_prio_level[irq] = intc_prio_value(desc, enum_id, 1); | ||
523 | |||
382 | /* enable secondary masking method if present */ | 524 | /* enable secondary masking method if present */ |
383 | if (data[!primary]) | 525 | if (data[!primary]) |
384 | intc_reg_fns[_INTC_FN(data[!primary])].enable(desc, | 526 | _intc_enable(irq, data[!primary]); |
385 | data[!primary]); | 527 | |
528 | /* add irq to d->prio list if priority is available */ | ||
529 | if (data[1]) { | ||
530 | hp = d->prio + d->nr_prio; | ||
531 | hp->irq = irq; | ||
532 | hp->handle = data[1]; | ||
533 | |||
534 | if (primary) { | ||
535 | /* | ||
536 | * only secondary priority should access registers, so | ||
537 | * set _INTC_FN(h) = REG_FN_ERR for intc_set_priority() | ||
538 | */ | ||
539 | |||
540 | hp->handle &= ~_INTC_MK(0x0f, 0, 0, 0, 0, 0); | ||
541 | hp->handle |= _INTC_MK(REG_FN_ERR, 0, 0, 0, 0, 0); | ||
542 | } | ||
543 | d->nr_prio++; | ||
544 | } | ||
545 | |||
546 | /* add irq to d->sense list if sense is available */ | ||
547 | data[0] = intc_sense_data(desc, d, enum_id); | ||
548 | if (data[0]) { | ||
549 | (d->sense + d->nr_sense)->irq = irq; | ||
550 | (d->sense + d->nr_sense)->handle = data[0]; | ||
551 | d->nr_sense++; | ||
552 | } | ||
386 | 553 | ||
387 | /* irq should be disabled by default */ | 554 | /* irq should be disabled by default */ |
388 | desc->chip.mask(irq); | 555 | d->chip.mask(irq); |
389 | } | 556 | } |
390 | 557 | ||
558 | static unsigned int __init save_reg(struct intc_desc_int *d, | ||
559 | unsigned int cnt, | ||
560 | unsigned long value, | ||
561 | unsigned int smp) | ||
562 | { | ||
563 | if (value) { | ||
564 | d->reg[cnt] = value; | ||
565 | #ifdef CONFIG_SMP | ||
566 | d->smp[cnt] = smp; | ||
567 | #endif | ||
568 | return 1; | ||
569 | } | ||
570 | |||
571 | return 0; | ||
572 | } | ||
573 | |||
574 | |||
391 | void __init register_intc_controller(struct intc_desc *desc) | 575 | void __init register_intc_controller(struct intc_desc *desc) |
392 | { | 576 | { |
393 | unsigned int i; | 577 | unsigned int i, k, smp; |
578 | struct intc_desc_int *d; | ||
579 | |||
580 | d = alloc_bootmem(sizeof(*d)); | ||
581 | |||
582 | d->nr_reg = desc->mask_regs ? desc->nr_mask_regs * 2 : 0; | ||
583 | d->nr_reg += desc->prio_regs ? desc->nr_prio_regs * 2 : 0; | ||
584 | d->nr_reg += desc->sense_regs ? desc->nr_sense_regs : 0; | ||
585 | |||
586 | d->reg = alloc_bootmem(d->nr_reg * sizeof(*d->reg)); | ||
587 | #ifdef CONFIG_SMP | ||
588 | d->smp = alloc_bootmem(d->nr_reg * sizeof(*d->smp)); | ||
589 | #endif | ||
590 | k = 0; | ||
591 | |||
592 | if (desc->mask_regs) { | ||
593 | for (i = 0; i < desc->nr_mask_regs; i++) { | ||
594 | smp = IS_SMP(desc->mask_regs[i]); | ||
595 | k += save_reg(d, k, desc->mask_regs[i].set_reg, smp); | ||
596 | k += save_reg(d, k, desc->mask_regs[i].clr_reg, smp); | ||
597 | } | ||
598 | } | ||
599 | |||
600 | if (desc->prio_regs) { | ||
601 | d->prio = alloc_bootmem(desc->nr_vectors * sizeof(*d->prio)); | ||
602 | |||
603 | for (i = 0; i < desc->nr_prio_regs; i++) { | ||
604 | smp = IS_SMP(desc->prio_regs[i]); | ||
605 | k += save_reg(d, k, desc->prio_regs[i].set_reg, smp); | ||
606 | k += save_reg(d, k, desc->prio_regs[i].clr_reg, smp); | ||
607 | } | ||
608 | } | ||
609 | |||
610 | if (desc->sense_regs) { | ||
611 | d->sense = alloc_bootmem(desc->nr_vectors * sizeof(*d->sense)); | ||
612 | |||
613 | for (i = 0; i < desc->nr_sense_regs; i++) { | ||
614 | k += save_reg(d, k, desc->sense_regs[i].reg, 0); | ||
615 | } | ||
616 | } | ||
617 | |||
618 | BUG_ON(k > 256); /* _INTC_ADDR_E() and _INTC_ADDR_D() are 8 bits */ | ||
394 | 619 | ||
395 | desc->chip.mask = intc_disable; | 620 | d->chip.name = desc->name; |
396 | desc->chip.unmask = intc_enable; | 621 | d->chip.mask = intc_disable; |
397 | desc->chip.mask_ack = intc_disable; | 622 | d->chip.unmask = intc_enable; |
398 | desc->chip.set_type = intc_set_sense; | 623 | d->chip.mask_ack = intc_disable; |
624 | d->chip.set_type = intc_set_sense; | ||
399 | 625 | ||
400 | for (i = 0; i < desc->nr_vectors; i++) { | 626 | for (i = 0; i < desc->nr_vectors; i++) { |
401 | struct intc_vect *vect = desc->vectors + i; | 627 | struct intc_vect *vect = desc->vectors + i; |
402 | 628 | ||
403 | intc_register_irq(desc, vect->enum_id, evt2irq(vect->vect)); | 629 | intc_register_irq(desc, d, vect->enum_id, evt2irq(vect->vect)); |
404 | } | 630 | } |
405 | } | 631 | } |
diff --git a/arch/sh/kernel/cpu/irq/intc2.c b/arch/sh/kernel/cpu/irq/intc2.c deleted file mode 100644 index cc5221390e09..000000000000 --- a/arch/sh/kernel/cpu/irq/intc2.c +++ /dev/null | |||
@@ -1,86 +0,0 @@ | |||
1 | /* | ||
2 | * Interrupt handling for INTC2-based IRQ. | ||
3 | * | ||
4 | * Copyright (C) 2001 David J. Mckay (david.mckay@st.com) | ||
5 | * Copyright (C) 2005, 2006 Paul Mundt (lethal@linux-sh.org) | ||
6 | * | ||
7 | * May be copied or modified under the terms of the GNU General Public | ||
8 | * License. See linux/COPYING for more information. | ||
9 | * | ||
10 | * These are the "new Hitachi style" interrupts, as present on the | ||
11 | * Hitachi 7751, the STM ST40 STB1, SH7760, and SH7780. | ||
12 | */ | ||
13 | #include <linux/kernel.h> | ||
14 | #include <linux/interrupt.h> | ||
15 | #include <linux/io.h> | ||
16 | #include <asm/smp.h> | ||
17 | |||
18 | static inline struct intc2_desc *get_intc2_desc(unsigned int irq) | ||
19 | { | ||
20 | struct irq_chip *chip = get_irq_chip(irq); | ||
21 | return (void *)((char *)chip - offsetof(struct intc2_desc, chip)); | ||
22 | } | ||
23 | |||
24 | static void disable_intc2_irq(unsigned int irq) | ||
25 | { | ||
26 | struct intc2_data *p = get_irq_chip_data(irq); | ||
27 | struct intc2_desc *d = get_intc2_desc(irq); | ||
28 | |||
29 | ctrl_outl(1 << p->msk_shift, d->msk_base + p->msk_offset + | ||
30 | (hard_smp_processor_id() * 4)); | ||
31 | } | ||
32 | |||
33 | static void enable_intc2_irq(unsigned int irq) | ||
34 | { | ||
35 | struct intc2_data *p = get_irq_chip_data(irq); | ||
36 | struct intc2_desc *d = get_intc2_desc(irq); | ||
37 | |||
38 | ctrl_outl(1 << p->msk_shift, d->mskclr_base + p->msk_offset + | ||
39 | (hard_smp_processor_id() * 4)); | ||
40 | } | ||
41 | |||
42 | /* | ||
43 | * Setup an INTC2 style interrupt. | ||
44 | * NOTE: Unlike IPR interrupts, parameters are not shifted by this code, | ||
45 | * allowing the use of the numbers straight out of the datasheet. | ||
46 | * For example: | ||
47 | * PIO1 which is INTPRI00[19,16] and INTMSK00[13] | ||
48 | * would be: ^ ^ ^ ^ | ||
49 | * | | | | | ||
50 | * { 84, 0, 16, 0, 13 }, | ||
51 | * | ||
52 | * in the intc2_data table. | ||
53 | */ | ||
54 | void register_intc2_controller(struct intc2_desc *desc) | ||
55 | { | ||
56 | int i; | ||
57 | |||
58 | desc->chip.mask = disable_intc2_irq; | ||
59 | desc->chip.unmask = enable_intc2_irq; | ||
60 | desc->chip.mask_ack = disable_intc2_irq; | ||
61 | |||
62 | for (i = 0; i < desc->nr_irqs; i++) { | ||
63 | unsigned long ipr, flags; | ||
64 | struct intc2_data *p = desc->intc2_data + i; | ||
65 | |||
66 | disable_irq_nosync(p->irq); | ||
67 | |||
68 | if (desc->prio_base) { | ||
69 | /* Set the priority level */ | ||
70 | local_irq_save(flags); | ||
71 | |||
72 | ipr = ctrl_inl(desc->prio_base + p->ipr_offset); | ||
73 | ipr &= ~(0xf << p->ipr_shift); | ||
74 | ipr |= p->priority << p->ipr_shift; | ||
75 | ctrl_outl(ipr, desc->prio_base + p->ipr_offset); | ||
76 | |||
77 | local_irq_restore(flags); | ||
78 | } | ||
79 | |||
80 | set_irq_chip_and_handler_name(p->irq, &desc->chip, | ||
81 | handle_level_irq, "level"); | ||
82 | set_irq_chip_data(p->irq, p); | ||
83 | |||
84 | disable_intc2_irq(p->irq); | ||
85 | } | ||
86 | } | ||
diff --git a/arch/sh/kernel/cpu/sh2/probe.c b/arch/sh/kernel/cpu/sh2/probe.c index abbf17427e52..5916d9096b99 100644 --- a/arch/sh/kernel/cpu/sh2/probe.c +++ b/arch/sh/kernel/cpu/sh2/probe.c | |||
@@ -10,26 +10,25 @@ | |||
10 | * for more details. | 10 | * for more details. |
11 | */ | 11 | */ |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/smp.h> | ||
14 | #include <asm/processor.h> | 13 | #include <asm/processor.h> |
15 | #include <asm/cache.h> | 14 | #include <asm/cache.h> |
16 | 15 | ||
17 | int __init detect_cpu_and_cache_system(void) | 16 | int __init detect_cpu_and_cache_system(void) |
18 | { | 17 | { |
19 | #if defined(CONFIG_CPU_SUBTYPE_SH7619) | 18 | #if defined(CONFIG_CPU_SUBTYPE_SH7619) |
20 | current_cpu_data.type = CPU_SH7619; | 19 | boot_cpu_data.type = CPU_SH7619; |
21 | current_cpu_data.dcache.ways = 4; | 20 | boot_cpu_data.dcache.ways = 4; |
22 | current_cpu_data.dcache.way_incr = (1<<12); | 21 | boot_cpu_data.dcache.way_incr = (1<<12); |
23 | current_cpu_data.dcache.sets = 256; | 22 | boot_cpu_data.dcache.sets = 256; |
24 | current_cpu_data.dcache.entry_shift = 4; | 23 | boot_cpu_data.dcache.entry_shift = 4; |
25 | current_cpu_data.dcache.linesz = L1_CACHE_BYTES; | 24 | boot_cpu_data.dcache.linesz = L1_CACHE_BYTES; |
26 | current_cpu_data.dcache.flags = 0; | 25 | boot_cpu_data.dcache.flags = 0; |
27 | #endif | 26 | #endif |
28 | /* | 27 | /* |
29 | * SH-2 doesn't have separate caches | 28 | * SH-2 doesn't have separate caches |
30 | */ | 29 | */ |
31 | current_cpu_data.dcache.flags |= SH_CACHE_COMBINED; | 30 | boot_cpu_data.dcache.flags |= SH_CACHE_COMBINED; |
32 | current_cpu_data.icache = current_cpu_data.dcache; | 31 | boot_cpu_data.icache = boot_cpu_data.dcache; |
33 | 32 | ||
34 | return 0; | 33 | return 0; |
35 | } | 34 | } |
diff --git a/arch/sh/kernel/cpu/sh2/setup-sh7619.c b/arch/sh/kernel/cpu/sh2/setup-sh7619.c index a979b981e6a3..ec6adc3f306f 100644 --- a/arch/sh/kernel/cpu/sh2/setup-sh7619.c +++ b/arch/sh/kernel/cpu/sh2/setup-sh7619.c | |||
@@ -12,6 +12,61 @@ | |||
12 | #include <linux/serial.h> | 12 | #include <linux/serial.h> |
13 | #include <asm/sci.h> | 13 | #include <asm/sci.h> |
14 | 14 | ||
15 | enum { | ||
16 | UNUSED = 0, | ||
17 | |||
18 | /* interrupt sources */ | ||
19 | IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7, | ||
20 | WDT, EDMAC, CMT0, CMT1, | ||
21 | SCIF0_ERI, SCIF0_RXI, SCIF0_BRI, SCIF0_TXI, | ||
22 | SCIF1_ERI, SCIF1_RXI, SCIF1_BRI, SCIF1_TXI, | ||
23 | SCIF2_ERI, SCIF2_RXI, SCIF2_BRI, SCIF2_TXI, | ||
24 | HIF_HIFI, HIF_HIFBI, | ||
25 | DMAC0, DMAC1, DMAC2, DMAC3, | ||
26 | SIOF, | ||
27 | |||
28 | /* interrupt groups */ | ||
29 | SCIF0, SCIF1, SCIF2, | ||
30 | }; | ||
31 | |||
32 | static struct intc_vect vectors[] __initdata = { | ||
33 | INTC_IRQ(IRQ0, 64), INTC_IRQ(IRQ1, 65), | ||
34 | INTC_IRQ(IRQ2, 66), INTC_IRQ(IRQ3, 67), | ||
35 | INTC_IRQ(IRQ4, 80), INTC_IRQ(IRQ5, 81), | ||
36 | INTC_IRQ(IRQ6, 82), INTC_IRQ(IRQ7, 83), | ||
37 | INTC_IRQ(WDT, 84), INTC_IRQ(EDMAC, 85), | ||
38 | INTC_IRQ(CMT0, 86), INTC_IRQ(CMT1, 87), | ||
39 | INTC_IRQ(SCIF0_ERI, 88), INTC_IRQ(SCIF0_RXI, 89), | ||
40 | INTC_IRQ(SCIF0_BRI, 90), INTC_IRQ(SCIF0_TXI, 91), | ||
41 | INTC_IRQ(SCIF1_ERI, 92), INTC_IRQ(SCIF1_RXI, 93), | ||
42 | INTC_IRQ(SCIF1_BRI, 94), INTC_IRQ(SCIF1_TXI, 95), | ||
43 | INTC_IRQ(SCIF2_ERI, 96), INTC_IRQ(SCIF2_RXI, 97), | ||
44 | INTC_IRQ(SCIF2_BRI, 98), INTC_IRQ(SCIF2_TXI, 99), | ||
45 | INTC_IRQ(HIF_HIFI, 100), INTC_IRQ(HIF_HIFBI, 101), | ||
46 | INTC_IRQ(DMAC0, 104), INTC_IRQ(DMAC1, 105), | ||
47 | INTC_IRQ(DMAC2, 106), INTC_IRQ(DMAC3, 107), | ||
48 | INTC_IRQ(SIOF, 108), | ||
49 | }; | ||
50 | |||
51 | static struct intc_group groups[] __initdata = { | ||
52 | INTC_GROUP(SCIF0, SCIF0_ERI, SCIF0_RXI, SCIF0_BRI, SCIF0_TXI), | ||
53 | INTC_GROUP(SCIF1, SCIF1_ERI, SCIF1_RXI, SCIF1_BRI, SCIF1_TXI), | ||
54 | INTC_GROUP(SCIF2, SCIF2_ERI, SCIF2_RXI, SCIF2_BRI, SCIF2_TXI), | ||
55 | }; | ||
56 | |||
57 | static struct intc_prio_reg prio_registers[] __initdata = { | ||
58 | { 0xf8140006, 0, 16, 4, /* IPRA */ { IRQ0, IRQ1, IRQ2, IRQ3 } }, | ||
59 | { 0xf8140008, 0, 16, 4, /* IPRB */ { IRQ4, IRQ5, IRQ6, IRQ7 } }, | ||
60 | { 0xf8080000, 0, 16, 4, /* IPRC */ { WDT, EDMAC, CMT0, CMT1 } }, | ||
61 | { 0xf8080002, 0, 16, 4, /* IPRD */ { SCIF0, SCIF1, SCIF2 } }, | ||
62 | { 0xf8080004, 0, 16, 4, /* IPRE */ { HIF_HIFI, HIF_HIFBI } }, | ||
63 | { 0xf8080006, 0, 16, 4, /* IPRF */ { DMAC0, DMAC1, DMAC2, DMAC3 } }, | ||
64 | { 0xf8080008, 0, 16, 4, /* IPRG */ { SIOF } }, | ||
65 | }; | ||
66 | |||
67 | static DECLARE_INTC_DESC(intc_desc, "sh7619", vectors, groups, | ||
68 | NULL, NULL, prio_registers, NULL); | ||
69 | |||
15 | static struct plat_sci_port sci_platform_data[] = { | 70 | static struct plat_sci_port sci_platform_data[] = { |
16 | { | 71 | { |
17 | .mapbase = 0xf8400000, | 72 | .mapbase = 0xf8400000, |
@@ -52,43 +107,7 @@ static int __init sh7619_devices_setup(void) | |||
52 | } | 107 | } |
53 | __initcall(sh7619_devices_setup); | 108 | __initcall(sh7619_devices_setup); |
54 | 109 | ||
55 | static struct ipr_data ipr_irq_table[] = { | ||
56 | { 86, 0, 4, 2 }, /* CMI0 */ | ||
57 | { 88, 1, 12, 3 }, /* SCIF0_ERI */ | ||
58 | { 89, 1, 12, 3 }, /* SCIF0_RXI */ | ||
59 | { 90, 1, 12, 3 }, /* SCIF0_BRI */ | ||
60 | { 91, 1, 12, 3 }, /* SCIF0_TXI */ | ||
61 | { 92, 1, 8, 3 }, /* SCIF1_ERI */ | ||
62 | { 93, 1, 8, 3 }, /* SCIF1_RXI */ | ||
63 | { 94, 1, 8, 3 }, /* SCIF1_BRI */ | ||
64 | { 95, 1, 8, 3 }, /* SCIF1_TXI */ | ||
65 | { 96, 1, 4, 3 }, /* SCIF2_ERI */ | ||
66 | { 97, 1, 4, 3 }, /* SCIF2_RXI */ | ||
67 | { 98, 1, 4, 3 }, /* SCIF2_BRI */ | ||
68 | { 99, 1, 4, 3 }, /* SCIF2_TXI */ | ||
69 | }; | ||
70 | |||
71 | static unsigned long ipr_offsets[] = { | ||
72 | 0xf8080000, /* IPRC */ | ||
73 | 0xf8080002, /* IPRD */ | ||
74 | 0xf8080004, /* IPRE */ | ||
75 | 0xf8080006, /* IPRF */ | ||
76 | 0xf8080008, /* IPRG */ | ||
77 | }; | ||
78 | |||
79 | static struct ipr_desc ipr_irq_desc = { | ||
80 | .ipr_offsets = ipr_offsets, | ||
81 | .nr_offsets = ARRAY_SIZE(ipr_offsets), | ||
82 | |||
83 | .ipr_data = ipr_irq_table, | ||
84 | .nr_irqs = ARRAY_SIZE(ipr_irq_table), | ||
85 | |||
86 | .chip = { | ||
87 | .name = "IPR-sh7619", | ||
88 | }, | ||
89 | }; | ||
90 | |||
91 | void __init plat_irq_setup(void) | 110 | void __init plat_irq_setup(void) |
92 | { | 111 | { |
93 | register_ipr_controller(&ipr_irq_desc); | 112 | register_intc_controller(&intc_desc); |
94 | } | 113 | } |
diff --git a/arch/sh/kernel/cpu/sh2a/probe.c b/arch/sh/kernel/cpu/sh2a/probe.c index f455c3509789..6d02465704b9 100644 --- a/arch/sh/kernel/cpu/sh2a/probe.c +++ b/arch/sh/kernel/cpu/sh2a/probe.c | |||
@@ -17,15 +17,15 @@ | |||
17 | int __init detect_cpu_and_cache_system(void) | 17 | int __init detect_cpu_and_cache_system(void) |
18 | { | 18 | { |
19 | /* Just SH7206 for now .. */ | 19 | /* Just SH7206 for now .. */ |
20 | current_cpu_data.type = CPU_SH7206; | 20 | boot_cpu_data.type = CPU_SH7206; |
21 | current_cpu_data.flags |= CPU_HAS_OP32; | 21 | boot_cpu_data.flags |= CPU_HAS_OP32; |
22 | 22 | ||
23 | current_cpu_data.dcache.ways = 4; | 23 | boot_cpu_data.dcache.ways = 4; |
24 | current_cpu_data.dcache.way_incr = (1 << 11); | 24 | boot_cpu_data.dcache.way_incr = (1 << 11); |
25 | current_cpu_data.dcache.sets = 128; | 25 | boot_cpu_data.dcache.sets = 128; |
26 | current_cpu_data.dcache.entry_shift = 4; | 26 | boot_cpu_data.dcache.entry_shift = 4; |
27 | current_cpu_data.dcache.linesz = L1_CACHE_BYTES; | 27 | boot_cpu_data.dcache.linesz = L1_CACHE_BYTES; |
28 | current_cpu_data.dcache.flags = 0; | 28 | boot_cpu_data.dcache.flags = 0; |
29 | 29 | ||
30 | /* | 30 | /* |
31 | * The icache is the same as the dcache as far as this setup is | 31 | * The icache is the same as the dcache as far as this setup is |
@@ -33,7 +33,7 @@ int __init detect_cpu_and_cache_system(void) | |||
33 | * lacks the U bit that the dcache has, none of this has any bearing | 33 | * lacks the U bit that the dcache has, none of this has any bearing |
34 | * on the cache info. | 34 | * on the cache info. |
35 | */ | 35 | */ |
36 | current_cpu_data.icache = current_cpu_data.dcache; | 36 | boot_cpu_data.icache = boot_cpu_data.dcache; |
37 | 37 | ||
38 | return 0; | 38 | return 0; |
39 | } | 39 | } |
diff --git a/arch/sh/kernel/cpu/sh2a/setup-sh7206.c b/arch/sh/kernel/cpu/sh2a/setup-sh7206.c index deab16500167..bd745aa87222 100644 --- a/arch/sh/kernel/cpu/sh2a/setup-sh7206.c +++ b/arch/sh/kernel/cpu/sh2a/setup-sh7206.c | |||
@@ -12,27 +12,184 @@ | |||
12 | #include <linux/serial.h> | 12 | #include <linux/serial.h> |
13 | #include <asm/sci.h> | 13 | #include <asm/sci.h> |
14 | 14 | ||
15 | enum { | ||
16 | UNUSED = 0, | ||
17 | |||
18 | /* interrupt sources */ | ||
19 | IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7, | ||
20 | PINT0, PINT1, PINT2, PINT3, PINT4, PINT5, PINT6, PINT7, | ||
21 | ADC_ADI0, ADC_ADI1, | ||
22 | DMAC0_DEI, DMAC0_HEI, DMAC1_DEI, DMAC1_HEI, | ||
23 | DMAC2_DEI, DMAC2_HEI, DMAC3_DEI, DMAC3_HEI, | ||
24 | DMAC4_DEI, DMAC4_HEI, DMAC5_DEI, DMAC5_HEI, | ||
25 | DMAC6_DEI, DMAC6_HEI, DMAC7_DEI, DMAC7_HEI, | ||
26 | CMT0, CMT1, BSC, WDT, | ||
27 | MTU2_TGI0A, MTU2_TGI0B, MTU2_TGI0C, MTU2_TGI0D, | ||
28 | MTU2_TCI0V, MTU2_TGI0E, MTU2_TGI0F, | ||
29 | MTU2_TGI1A, MTU2_TGI1B, MTU2_TCI1V, MTU2_TCI1U, | ||
30 | MTU2_TGI2A, MTU2_TGI2B, MTU2_TCI2V, MTU2_TCI2U, | ||
31 | MTU2_TGI3A, MTU2_TGI3B, MTU2_TGI3C, MTU2_TGI3D, MTU2_TCI3V, | ||
32 | MTU2_TGI4A, MTU2_TGI4B, MTU2_TGI4C, MTU2_TGI4D, MTU2_TCI4V, | ||
33 | MTU2_TGI5U, MTU2_TGI5V, MTU2_TGI5W, | ||
34 | POE2_OEI1, POE2_OEI2, | ||
35 | MTU2S_TGI3A, MTU2S_TGI3B, MTU2S_TGI3C, MTU2S_TGI3D, MTU2S_TCI3V, | ||
36 | MTU2S_TGI4A, MTU2S_TGI4B, MTU2S_TGI4C, MTU2S_TGI4D, MTU2S_TCI4V, | ||
37 | MTU2S_TGI5U, MTU2S_TGI5V, MTU2S_TGI5W, | ||
38 | POE2_OEI3, | ||
39 | IIC3_STPI, IIC3_NAKI, IIC3_RXI, IIC3_TXI, IIC3_TEI, | ||
40 | SCIF0_BRI, SCIF0_ERI, SCIF0_RXI, SCIF0_TXI, | ||
41 | SCIF1_BRI, SCIF1_ERI, SCIF1_RXI, SCIF1_TXI, | ||
42 | SCIF2_BRI, SCIF2_ERI, SCIF2_RXI, SCIF2_TXI, | ||
43 | SCIF3_BRI, SCIF3_ERI, SCIF3_RXI, SCIF3_TXI, | ||
44 | |||
45 | /* interrupt groups */ | ||
46 | PINT, DMAC0, DMAC1, DMAC2, DMAC3, DMAC4, DMAC5, DMAC6, DMAC7, | ||
47 | MTU0_ABCD, MTU0_VEF, MTU1_AB, MTU1_VU, MTU2_AB, MTU2_VU, | ||
48 | MTU3_ABCD, MTU4_ABCD, MTU5, POE2_12, MTU3S_ABCD, MTU4S_ABCD, MTU5S, | ||
49 | IIC3, SCIF0, SCIF1, SCIF2, SCIF3, | ||
50 | }; | ||
51 | |||
52 | static struct intc_vect vectors[] __initdata = { | ||
53 | INTC_IRQ(IRQ0, 64), INTC_IRQ(IRQ1, 65), | ||
54 | INTC_IRQ(IRQ2, 66), INTC_IRQ(IRQ3, 67), | ||
55 | INTC_IRQ(IRQ4, 68), INTC_IRQ(IRQ5, 69), | ||
56 | INTC_IRQ(IRQ6, 70), INTC_IRQ(IRQ7, 71), | ||
57 | INTC_IRQ(PINT0, 80), INTC_IRQ(PINT1, 81), | ||
58 | INTC_IRQ(PINT2, 82), INTC_IRQ(PINT3, 83), | ||
59 | INTC_IRQ(PINT4, 84), INTC_IRQ(PINT5, 85), | ||
60 | INTC_IRQ(PINT6, 86), INTC_IRQ(PINT7, 87), | ||
61 | INTC_IRQ(ADC_ADI0, 92), INTC_IRQ(ADC_ADI1, 96), | ||
62 | INTC_IRQ(DMAC0_DEI, 108), INTC_IRQ(DMAC0_HEI, 109), | ||
63 | INTC_IRQ(DMAC1_DEI, 112), INTC_IRQ(DMAC1_HEI, 113), | ||
64 | INTC_IRQ(DMAC2_DEI, 116), INTC_IRQ(DMAC2_HEI, 117), | ||
65 | INTC_IRQ(DMAC3_DEI, 120), INTC_IRQ(DMAC3_HEI, 121), | ||
66 | INTC_IRQ(DMAC4_DEI, 124), INTC_IRQ(DMAC4_HEI, 125), | ||
67 | INTC_IRQ(DMAC5_DEI, 128), INTC_IRQ(DMAC5_HEI, 129), | ||
68 | INTC_IRQ(DMAC6_DEI, 132), INTC_IRQ(DMAC6_HEI, 133), | ||
69 | INTC_IRQ(DMAC7_DEI, 136), INTC_IRQ(DMAC7_HEI, 137), | ||
70 | INTC_IRQ(CMT0, 140), INTC_IRQ(CMT1, 144), | ||
71 | INTC_IRQ(BSC, 148), INTC_IRQ(WDT, 152), | ||
72 | INTC_IRQ(MTU2_TGI0A, 156), INTC_IRQ(MTU2_TGI0B, 157), | ||
73 | INTC_IRQ(MTU2_TGI0C, 158), INTC_IRQ(MTU2_TGI0D, 159), | ||
74 | INTC_IRQ(MTU2_TCI0V, 160), | ||
75 | INTC_IRQ(MTU2_TGI0E, 161), INTC_IRQ(MTU2_TGI0F, 162), | ||
76 | INTC_IRQ(MTU2_TGI1A, 164), INTC_IRQ(MTU2_TGI1B, 165), | ||
77 | INTC_IRQ(MTU2_TCI1V, 168), INTC_IRQ(MTU2_TCI1U, 169), | ||
78 | INTC_IRQ(MTU2_TGI2A, 172), INTC_IRQ(MTU2_TGI2B, 173), | ||
79 | INTC_IRQ(MTU2_TCI2V, 176), INTC_IRQ(MTU2_TCI2U, 177), | ||
80 | INTC_IRQ(MTU2_TGI3A, 180), INTC_IRQ(MTU2_TGI3B, 181), | ||
81 | INTC_IRQ(MTU2_TGI3C, 182), INTC_IRQ(MTU2_TGI3D, 183), | ||
82 | INTC_IRQ(MTU2_TCI3V, 184), | ||
83 | INTC_IRQ(MTU2_TGI4A, 188), INTC_IRQ(MTU2_TGI4B, 189), | ||
84 | INTC_IRQ(MTU2_TGI4C, 190), INTC_IRQ(MTU2_TGI4D, 191), | ||
85 | INTC_IRQ(MTU2_TCI4V, 192), | ||
86 | INTC_IRQ(MTU2_TGI5U, 196), INTC_IRQ(MTU2_TGI5V, 197), | ||
87 | INTC_IRQ(MTU2_TGI5W, 198), | ||
88 | INTC_IRQ(POE2_OEI1, 200), INTC_IRQ(POE2_OEI2, 201), | ||
89 | INTC_IRQ(MTU2S_TGI3A, 204), INTC_IRQ(MTU2S_TGI3B, 205), | ||
90 | INTC_IRQ(MTU2S_TGI3C, 206), INTC_IRQ(MTU2S_TGI3D, 207), | ||
91 | INTC_IRQ(MTU2S_TCI3V, 208), | ||
92 | INTC_IRQ(MTU2S_TGI4A, 212), INTC_IRQ(MTU2S_TGI4B, 213), | ||
93 | INTC_IRQ(MTU2S_TGI4C, 214), INTC_IRQ(MTU2S_TGI4D, 215), | ||
94 | INTC_IRQ(MTU2S_TCI4V, 216), | ||
95 | INTC_IRQ(MTU2S_TGI5U, 220), INTC_IRQ(MTU2S_TGI5V, 221), | ||
96 | INTC_IRQ(MTU2S_TGI5W, 222), | ||
97 | INTC_IRQ(POE2_OEI3, 224), | ||
98 | INTC_IRQ(IIC3_STPI, 228), INTC_IRQ(IIC3_NAKI, 229), | ||
99 | INTC_IRQ(IIC3_RXI, 230), INTC_IRQ(IIC3_TXI, 231), | ||
100 | INTC_IRQ(IIC3_TEI, 232), | ||
101 | INTC_IRQ(SCIF0_BRI, 240), INTC_IRQ(SCIF0_ERI, 241), | ||
102 | INTC_IRQ(SCIF0_RXI, 242), INTC_IRQ(SCIF0_TXI, 243), | ||
103 | INTC_IRQ(SCIF1_BRI, 244), INTC_IRQ(SCIF1_ERI, 245), | ||
104 | INTC_IRQ(SCIF1_RXI, 246), INTC_IRQ(SCIF1_TXI, 247), | ||
105 | INTC_IRQ(SCIF2_BRI, 248), INTC_IRQ(SCIF2_ERI, 249), | ||
106 | INTC_IRQ(SCIF2_RXI, 250), INTC_IRQ(SCIF2_TXI, 251), | ||
107 | INTC_IRQ(SCIF3_BRI, 252), INTC_IRQ(SCIF3_ERI, 253), | ||
108 | INTC_IRQ(SCIF3_RXI, 254), INTC_IRQ(SCIF3_TXI, 255), | ||
109 | }; | ||
110 | |||
111 | static struct intc_group groups[] __initdata = { | ||
112 | INTC_GROUP(PINT, PINT0, PINT1, PINT2, PINT3, | ||
113 | PINT4, PINT5, PINT6, PINT7), | ||
114 | INTC_GROUP(DMAC0, DMAC0_DEI, DMAC0_HEI), | ||
115 | INTC_GROUP(DMAC1, DMAC1_DEI, DMAC1_HEI), | ||
116 | INTC_GROUP(DMAC2, DMAC2_DEI, DMAC2_HEI), | ||
117 | INTC_GROUP(DMAC3, DMAC3_DEI, DMAC3_HEI), | ||
118 | INTC_GROUP(DMAC4, DMAC4_DEI, DMAC4_HEI), | ||
119 | INTC_GROUP(DMAC5, DMAC5_DEI, DMAC5_HEI), | ||
120 | INTC_GROUP(DMAC6, DMAC6_DEI, DMAC6_HEI), | ||
121 | INTC_GROUP(DMAC7, DMAC7_DEI, DMAC7_HEI), | ||
122 | INTC_GROUP(MTU0_ABCD, MTU2_TGI0A, MTU2_TGI0B, MTU2_TGI0C, MTU2_TGI0D), | ||
123 | INTC_GROUP(MTU0_VEF, MTU2_TCI0V, MTU2_TGI0E, MTU2_TGI0F), | ||
124 | INTC_GROUP(MTU1_AB, MTU2_TGI1A, MTU2_TGI1B), | ||
125 | INTC_GROUP(MTU1_VU, MTU2_TCI1V, MTU2_TCI1U), | ||
126 | INTC_GROUP(MTU2_AB, MTU2_TGI2A, MTU2_TGI2B), | ||
127 | INTC_GROUP(MTU2_VU, MTU2_TCI2V, MTU2_TCI2U), | ||
128 | INTC_GROUP(MTU3_ABCD, MTU2_TGI3A, MTU2_TGI3B, MTU2_TGI3C, MTU2_TGI3D), | ||
129 | INTC_GROUP(MTU4_ABCD, MTU2_TGI4A, MTU2_TGI4B, MTU2_TGI4C, MTU2_TGI4D), | ||
130 | INTC_GROUP(MTU5, MTU2_TGI5U, MTU2_TGI5V, MTU2_TGI5W), | ||
131 | INTC_GROUP(POE2_12, POE2_OEI1, POE2_OEI2), | ||
132 | INTC_GROUP(MTU3S_ABCD, MTU2S_TGI3A, MTU2S_TGI3B, | ||
133 | MTU2S_TGI3C, MTU2S_TGI3D), | ||
134 | INTC_GROUP(MTU4S_ABCD, MTU2S_TGI4A, MTU2S_TGI4B, | ||
135 | MTU2S_TGI4C, MTU2S_TGI4D), | ||
136 | INTC_GROUP(MTU5S, MTU2S_TGI5U, MTU2S_TGI5V, MTU2S_TGI5W), | ||
137 | INTC_GROUP(IIC3, IIC3_STPI, IIC3_NAKI, IIC3_RXI, IIC3_TXI, IIC3_TEI), | ||
138 | INTC_GROUP(SCIF0, SCIF0_BRI, SCIF0_ERI, SCIF0_RXI, SCIF0_TXI), | ||
139 | INTC_GROUP(SCIF1, SCIF1_BRI, SCIF1_ERI, SCIF1_RXI, SCIF1_TXI), | ||
140 | INTC_GROUP(SCIF2, SCIF2_BRI, SCIF2_ERI, SCIF2_RXI, SCIF2_TXI), | ||
141 | INTC_GROUP(SCIF3, SCIF3_BRI, SCIF3_ERI, SCIF3_RXI, SCIF3_TXI), | ||
142 | }; | ||
143 | |||
144 | static struct intc_prio_reg prio_registers[] __initdata = { | ||
145 | { 0xfffe0818, 0, 16, 4, /* IPR01 */ { IRQ0, IRQ1, IRQ2, IRQ3 } }, | ||
146 | { 0xfffe081a, 0, 16, 4, /* IPR02 */ { IRQ4, IRQ5, IRQ6, IRQ7 } }, | ||
147 | { 0xfffe0820, 0, 16, 4, /* IPR05 */ { PINT, 0, ADC_ADI0, ADC_ADI1 } }, | ||
148 | { 0xfffe0c00, 0, 16, 4, /* IPR06 */ { DMAC0, DMAC1, DMAC2, DMAC3 } }, | ||
149 | { 0xfffe0c02, 0, 16, 4, /* IPR07 */ { DMAC4, DMAC5, DMAC6, DMAC7 } }, | ||
150 | { 0xfffe0c04, 0, 16, 4, /* IPR08 */ { CMT0, CMT1, BSC, WDT } }, | ||
151 | { 0xfffe0c06, 0, 16, 4, /* IPR09 */ { MTU0_ABCD, MTU0_VEF, | ||
152 | MTU1_AB, MTU1_VU } }, | ||
153 | { 0xfffe0c08, 0, 16, 4, /* IPR10 */ { MTU2_AB, MTU2_VU, | ||
154 | MTU3_ABCD, MTU2_TCI3V } }, | ||
155 | { 0xfffe0c0a, 0, 16, 4, /* IPR11 */ { MTU4_ABCD, MTU2_TCI4V, | ||
156 | MTU5, POE2_12 } }, | ||
157 | { 0xfffe0c0c, 0, 16, 4, /* IPR12 */ { MTU3S_ABCD, MTU2S_TCI3V, | ||
158 | MTU4S_ABCD, MTU2S_TCI4V } }, | ||
159 | { 0xfffe0c0e, 0, 16, 4, /* IPR13 */ { MTU5S, POE2_OEI3, IIC3, 0 } }, | ||
160 | { 0xfffe0c10, 0, 16, 4, /* IPR14 */ { SCIF0, SCIF1, SCIF2, SCIF3 } }, | ||
161 | }; | ||
162 | |||
163 | static struct intc_mask_reg mask_registers[] __initdata = { | ||
164 | { 0xfffe0808, 0, 16, /* PINTER */ | ||
165 | { 0, 0, 0, 0, 0, 0, 0, 0, | ||
166 | PINT7, PINT6, PINT5, PINT4, PINT3, PINT2, PINT1, PINT0 } }, | ||
167 | }; | ||
168 | |||
169 | static DECLARE_INTC_DESC(intc_desc, "sh7206", vectors, groups, | ||
170 | NULL, mask_registers, prio_registers, NULL); | ||
171 | |||
15 | static struct plat_sci_port sci_platform_data[] = { | 172 | static struct plat_sci_port sci_platform_data[] = { |
16 | { | 173 | { |
17 | .mapbase = 0xfffe8000, | 174 | .mapbase = 0xfffe8000, |
18 | .flags = UPF_BOOT_AUTOCONF, | 175 | .flags = UPF_BOOT_AUTOCONF, |
19 | .type = PORT_SCIF, | 176 | .type = PORT_SCIF, |
20 | .irqs = { 241, 242, 243, 240}, | 177 | .irqs = { 241, 242, 243, 240 }, |
21 | }, { | 178 | }, { |
22 | .mapbase = 0xfffe8800, | 179 | .mapbase = 0xfffe8800, |
23 | .flags = UPF_BOOT_AUTOCONF, | 180 | .flags = UPF_BOOT_AUTOCONF, |
24 | .type = PORT_SCIF, | 181 | .type = PORT_SCIF, |
25 | .irqs = { 247, 244, 245, 246}, | 182 | .irqs = { 245, 246, 247, 244 }, |
26 | }, { | 183 | }, { |
27 | .mapbase = 0xfffe9000, | 184 | .mapbase = 0xfffe9000, |
28 | .flags = UPF_BOOT_AUTOCONF, | 185 | .flags = UPF_BOOT_AUTOCONF, |
29 | .type = PORT_SCIF, | 186 | .type = PORT_SCIF, |
30 | .irqs = { 249, 250, 251, 248}, | 187 | .irqs = { 249, 250, 251, 248 }, |
31 | }, { | 188 | }, { |
32 | .mapbase = 0xfffe9800, | 189 | .mapbase = 0xfffe9800, |
33 | .flags = UPF_BOOT_AUTOCONF, | 190 | .flags = UPF_BOOT_AUTOCONF, |
34 | .type = PORT_SCIF, | 191 | .type = PORT_SCIF, |
35 | .irqs = { 253, 254, 255, 252}, | 192 | .irqs = { 253, 254, 255, 252 }, |
36 | }, { | 193 | }, { |
37 | .flags = 0, | 194 | .flags = 0, |
38 | } | 195 | } |
@@ -57,57 +214,7 @@ static int __init sh7206_devices_setup(void) | |||
57 | } | 214 | } |
58 | __initcall(sh7206_devices_setup); | 215 | __initcall(sh7206_devices_setup); |
59 | 216 | ||
60 | static struct ipr_data ipr_irq_table[] = { | ||
61 | { 140, 7, 12, 2 }, /* CMI0 */ | ||
62 | { 164, 8, 4, 2 }, /* MTU2_TGI1A */ | ||
63 | { 240, 13, 12, 3 }, /* SCIF0_BRI */ | ||
64 | { 241, 13, 12, 3 }, /* SCIF0_ERI */ | ||
65 | { 242, 13, 12, 3 }, /* SCIF0_RXI */ | ||
66 | { 243, 13, 12, 3 }, /* SCIF0_TXI */ | ||
67 | { 244, 13, 8, 3 }, /* SCIF1_BRI */ | ||
68 | { 245, 13, 8, 3 }, /* SCIF1_ERI */ | ||
69 | { 246, 13, 8, 3 }, /* SCIF1_RXI */ | ||
70 | { 247, 13, 8, 3 }, /* SCIF1_TXI */ | ||
71 | { 248, 13, 4, 3 }, /* SCIF2_BRI */ | ||
72 | { 249, 13, 4, 3 }, /* SCIF2_ERI */ | ||
73 | { 250, 13, 4, 3 }, /* SCIF2_RXI */ | ||
74 | { 251, 13, 4, 3 }, /* SCIF2_TXI */ | ||
75 | { 252, 13, 0, 3 }, /* SCIF3_BRI */ | ||
76 | { 253, 13, 0, 3 }, /* SCIF3_ERI */ | ||
77 | { 254, 13, 0, 3 }, /* SCIF3_RXI */ | ||
78 | { 255, 13, 0, 3 }, /* SCIF3_TXI */ | ||
79 | }; | ||
80 | |||
81 | static unsigned long ipr_offsets[] = { | ||
82 | 0xfffe0818, /* IPR01 */ | ||
83 | 0xfffe081a, /* IPR02 */ | ||
84 | 0, /* unused */ | ||
85 | 0, /* unused */ | ||
86 | 0xfffe0820, /* IPR05 */ | ||
87 | 0xfffe0c00, /* IPR06 */ | ||
88 | 0xfffe0c02, /* IPR07 */ | ||
89 | 0xfffe0c04, /* IPR08 */ | ||
90 | 0xfffe0c06, /* IPR09 */ | ||
91 | 0xfffe0c08, /* IPR10 */ | ||
92 | 0xfffe0c0a, /* IPR11 */ | ||
93 | 0xfffe0c0c, /* IPR12 */ | ||
94 | 0xfffe0c0e, /* IPR13 */ | ||
95 | 0xfffe0c10, /* IPR14 */ | ||
96 | }; | ||
97 | |||
98 | static struct ipr_desc ipr_irq_desc = { | ||
99 | .ipr_offsets = ipr_offsets, | ||
100 | .nr_offsets = ARRAY_SIZE(ipr_offsets), | ||
101 | |||
102 | .ipr_data = ipr_irq_table, | ||
103 | .nr_irqs = ARRAY_SIZE(ipr_irq_table), | ||
104 | |||
105 | .chip = { | ||
106 | .name = "IPR-sh7206", | ||
107 | }, | ||
108 | }; | ||
109 | |||
110 | void __init plat_irq_setup(void) | 217 | void __init plat_irq_setup(void) |
111 | { | 218 | { |
112 | register_ipr_controller(&ipr_irq_desc); | 219 | register_intc_controller(&intc_desc); |
113 | } | 220 | } |
diff --git a/arch/sh/kernel/cpu/sh3/Makefile b/arch/sh/kernel/cpu/sh3/Makefile index 55b750763f66..646eb6933614 100644 --- a/arch/sh/kernel/cpu/sh3/Makefile +++ b/arch/sh/kernel/cpu/sh3/Makefile | |||
@@ -6,12 +6,13 @@ obj-y := ex.o probe.o entry.o | |||
6 | 6 | ||
7 | # CPU subtype setup | 7 | # CPU subtype setup |
8 | obj-$(CONFIG_CPU_SUBTYPE_SH7705) += setup-sh7705.o | 8 | obj-$(CONFIG_CPU_SUBTYPE_SH7705) += setup-sh7705.o |
9 | obj-$(CONFIG_CPU_SUBTYPE_SH7706) += setup-sh7709.o | 9 | obj-$(CONFIG_CPU_SUBTYPE_SH7706) += setup-sh770x.o |
10 | obj-$(CONFIG_CPU_SUBTYPE_SH7707) += setup-sh7709.o | 10 | obj-$(CONFIG_CPU_SUBTYPE_SH7707) += setup-sh770x.o |
11 | obj-$(CONFIG_CPU_SUBTYPE_SH7708) += setup-sh7708.o | 11 | obj-$(CONFIG_CPU_SUBTYPE_SH7708) += setup-sh770x.o |
12 | obj-$(CONFIG_CPU_SUBTYPE_SH7709) += setup-sh7709.o | 12 | obj-$(CONFIG_CPU_SUBTYPE_SH7709) += setup-sh770x.o |
13 | obj-$(CONFIG_CPU_SUBTYPE_SH7710) += setup-sh7710.o | 13 | obj-$(CONFIG_CPU_SUBTYPE_SH7710) += setup-sh7710.o |
14 | obj-$(CONFIG_CPU_SUBTYPE_SH7712) += setup-sh7710.o | 14 | obj-$(CONFIG_CPU_SUBTYPE_SH7712) += setup-sh7710.o |
15 | obj-$(CONFIG_CPU_SUBTYPE_SH7720) += setup-sh7720.o | ||
15 | 16 | ||
16 | # Primary on-chip clocks (common) | 17 | # Primary on-chip clocks (common) |
17 | clock-$(CONFIG_CPU_SH3) := clock-sh3.o | 18 | clock-$(CONFIG_CPU_SH3) := clock-sh3.o |
@@ -19,5 +20,6 @@ clock-$(CONFIG_CPU_SUBTYPE_SH7705) := clock-sh7705.o | |||
19 | clock-$(CONFIG_CPU_SUBTYPE_SH7706) := clock-sh7706.o | 20 | clock-$(CONFIG_CPU_SUBTYPE_SH7706) := clock-sh7706.o |
20 | clock-$(CONFIG_CPU_SUBTYPE_SH7709) := clock-sh7709.o | 21 | clock-$(CONFIG_CPU_SUBTYPE_SH7709) := clock-sh7709.o |
21 | clock-$(CONFIG_CPU_SUBTYPE_SH7710) := clock-sh7710.o | 22 | clock-$(CONFIG_CPU_SUBTYPE_SH7710) := clock-sh7710.o |
23 | clock-$(CONFIG_CPU_SUBTYPE_SH7720) := clock-sh7710.o | ||
22 | 24 | ||
23 | obj-y += $(clock-y) | 25 | obj-y += $(clock-y) |
diff --git a/arch/sh/kernel/cpu/sh3/probe.c b/arch/sh/kernel/cpu/sh3/probe.c index 647623b22edc..bf579e061e09 100644 --- a/arch/sh/kernel/cpu/sh3/probe.c +++ b/arch/sh/kernel/cpu/sh3/probe.c | |||
@@ -50,44 +50,47 @@ int __init detect_cpu_and_cache_system(void) | |||
50 | 50 | ||
51 | back_to_P1(); | 51 | back_to_P1(); |
52 | 52 | ||
53 | current_cpu_data.dcache.ways = 4; | 53 | boot_cpu_data.dcache.ways = 4; |
54 | current_cpu_data.dcache.entry_shift = 4; | 54 | boot_cpu_data.dcache.entry_shift = 4; |
55 | current_cpu_data.dcache.linesz = L1_CACHE_BYTES; | 55 | boot_cpu_data.dcache.linesz = L1_CACHE_BYTES; |
56 | current_cpu_data.dcache.flags = 0; | 56 | boot_cpu_data.dcache.flags = 0; |
57 | 57 | ||
58 | /* | 58 | /* |
59 | * 7709A/7729 has 16K cache (256-entry), while 7702 has only | 59 | * 7709A/7729 has 16K cache (256-entry), while 7702 has only |
60 | * 2K(direct) 7702 is not supported (yet) | 60 | * 2K(direct) 7702 is not supported (yet) |
61 | */ | 61 | */ |
62 | if (data0 == data1 && data2 == data3) { /* Shadow */ | 62 | if (data0 == data1 && data2 == data3) { /* Shadow */ |
63 | current_cpu_data.dcache.way_incr = (1 << 11); | 63 | boot_cpu_data.dcache.way_incr = (1 << 11); |
64 | current_cpu_data.dcache.entry_mask = 0x7f0; | 64 | boot_cpu_data.dcache.entry_mask = 0x7f0; |
65 | current_cpu_data.dcache.sets = 128; | 65 | boot_cpu_data.dcache.sets = 128; |
66 | current_cpu_data.type = CPU_SH7708; | 66 | boot_cpu_data.type = CPU_SH7708; |
67 | 67 | ||
68 | current_cpu_data.flags |= CPU_HAS_MMU_PAGE_ASSOC; | 68 | boot_cpu_data.flags |= CPU_HAS_MMU_PAGE_ASSOC; |
69 | } else { /* 7709A or 7729 */ | 69 | } else { /* 7709A or 7729 */ |
70 | current_cpu_data.dcache.way_incr = (1 << 12); | 70 | boot_cpu_data.dcache.way_incr = (1 << 12); |
71 | current_cpu_data.dcache.entry_mask = 0xff0; | 71 | boot_cpu_data.dcache.entry_mask = 0xff0; |
72 | current_cpu_data.dcache.sets = 256; | 72 | boot_cpu_data.dcache.sets = 256; |
73 | current_cpu_data.type = CPU_SH7729; | 73 | boot_cpu_data.type = CPU_SH7729; |
74 | 74 | ||
75 | #if defined(CONFIG_CPU_SUBTYPE_SH7706) | 75 | #if defined(CONFIG_CPU_SUBTYPE_SH7706) |
76 | current_cpu_data.type = CPU_SH7706; | 76 | boot_cpu_data.type = CPU_SH7706; |
77 | #endif | 77 | #endif |
78 | #if defined(CONFIG_CPU_SUBTYPE_SH7710) | 78 | #if defined(CONFIG_CPU_SUBTYPE_SH7710) |
79 | current_cpu_data.type = CPU_SH7710; | 79 | boot_cpu_data.type = CPU_SH7710; |
80 | #endif | 80 | #endif |
81 | #if defined(CONFIG_CPU_SUBTYPE_SH7712) | 81 | #if defined(CONFIG_CPU_SUBTYPE_SH7712) |
82 | current_cpu_data.type = CPU_SH7712; | 82 | boot_cpu_data.type = CPU_SH7712; |
83 | #endif | ||
84 | #if defined(CONFIG_CPU_SUBTYPE_SH7720) | ||
85 | boot_cpu_data.type = CPU_SH7720; | ||
83 | #endif | 86 | #endif |
84 | #if defined(CONFIG_CPU_SUBTYPE_SH7705) | 87 | #if defined(CONFIG_CPU_SUBTYPE_SH7705) |
85 | current_cpu_data.type = CPU_SH7705; | 88 | boot_cpu_data.type = CPU_SH7705; |
86 | 89 | ||
87 | #if defined(CONFIG_SH7705_CACHE_32KB) | 90 | #if defined(CONFIG_SH7705_CACHE_32KB) |
88 | current_cpu_data.dcache.way_incr = (1 << 13); | 91 | boot_cpu_data.dcache.way_incr = (1 << 13); |
89 | current_cpu_data.dcache.entry_mask = 0x1ff0; | 92 | boot_cpu_data.dcache.entry_mask = 0x1ff0; |
90 | current_cpu_data.dcache.sets = 512; | 93 | boot_cpu_data.dcache.sets = 512; |
91 | ctrl_outl(CCR_CACHE_32KB, CCR3); | 94 | ctrl_outl(CCR_CACHE_32KB, CCR3); |
92 | #else | 95 | #else |
93 | ctrl_outl(CCR_CACHE_16KB, CCR3); | 96 | ctrl_outl(CCR_CACHE_16KB, CCR3); |
@@ -98,9 +101,8 @@ int __init detect_cpu_and_cache_system(void) | |||
98 | /* | 101 | /* |
99 | * SH-3 doesn't have separate caches | 102 | * SH-3 doesn't have separate caches |
100 | */ | 103 | */ |
101 | current_cpu_data.dcache.flags |= SH_CACHE_COMBINED; | 104 | boot_cpu_data.dcache.flags |= SH_CACHE_COMBINED; |
102 | current_cpu_data.icache = current_cpu_data.dcache; | 105 | boot_cpu_data.icache = boot_cpu_data.dcache; |
103 | 106 | ||
104 | return 0; | 107 | return 0; |
105 | } | 108 | } |
106 | |||
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7705.c b/arch/sh/kernel/cpu/sh3/setup-sh7705.c index ebd9d06d8bdd..f6c65f2659e9 100644 --- a/arch/sh/kernel/cpu/sh3/setup-sh7705.c +++ b/arch/sh/kernel/cpu/sh3/setup-sh7705.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * SH7705 Setup | 2 | * SH7705 Setup |
3 | * | 3 | * |
4 | * Copyright (C) 2006 Paul Mundt | 4 | * Copyright (C) 2006, 2007 Paul Mundt |
5 | * Copyright (C) 2007 Nobuhiro Iwamatsu | 5 | * Copyright (C) 2007 Nobuhiro Iwamatsu |
6 | * | 6 | * |
7 | * 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 |
@@ -10,8 +10,90 @@ | |||
10 | */ | 10 | */ |
11 | #include <linux/platform_device.h> | 11 | #include <linux/platform_device.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/irq.h> | ||
13 | #include <linux/serial.h> | 14 | #include <linux/serial.h> |
14 | #include <asm/sci.h> | 15 | #include <asm/sci.h> |
16 | #include <asm/rtc.h> | ||
17 | |||
18 | enum { | ||
19 | UNUSED = 0, | ||
20 | |||
21 | /* interrupt sources */ | ||
22 | IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, | ||
23 | PINT07, PINT815, | ||
24 | DMAC_DEI0, DMAC_DEI1, DMAC_DEI2, DMAC_DEI3, | ||
25 | SCIF0_ERI, SCIF0_RXI, SCIF0_TXI, | ||
26 | SCIF2_ERI, SCIF2_RXI, SCIF2_TXI, | ||
27 | ADC_ADI, | ||
28 | USB_USI0, USB_USI1, | ||
29 | TPU0, TPU1, TPU2, TPU3, | ||
30 | TMU0, TMU1, TMU2_TUNI, TMU2_TICPI, | ||
31 | RTC_ATI, RTC_PRI, RTC_CUI, | ||
32 | WDT, | ||
33 | REF_RCMI, | ||
34 | |||
35 | /* interrupt groups */ | ||
36 | RTC, TMU2, DMAC, USB, SCIF2, SCIF0, | ||
37 | }; | ||
38 | |||
39 | static struct intc_vect vectors[] __initdata = { | ||
40 | INTC_VECT(IRQ4, 0x680), INTC_VECT(IRQ5, 0x6a0), | ||
41 | INTC_VECT(PINT07, 0x700), INTC_VECT(PINT815, 0x720), | ||
42 | INTC_VECT(DMAC_DEI0, 0x800), INTC_VECT(DMAC_DEI1, 0x820), | ||
43 | INTC_VECT(DMAC_DEI2, 0x840), INTC_VECT(DMAC_DEI3, 0x860), | ||
44 | INTC_VECT(SCIF0_ERI, 0x880), INTC_VECT(SCIF0_RXI, 0x8a0), | ||
45 | INTC_VECT(SCIF0_TXI, 0x8e0), | ||
46 | INTC_VECT(SCIF2_ERI, 0x900), INTC_VECT(SCIF2_RXI, 0x920), | ||
47 | INTC_VECT(SCIF2_TXI, 0x960), | ||
48 | INTC_VECT(ADC_ADI, 0x980), | ||
49 | INTC_VECT(USB_USI0, 0xa20), INTC_VECT(USB_USI1, 0xa40), | ||
50 | INTC_VECT(TPU0, 0xc00), INTC_VECT(TPU1, 0xc20), | ||
51 | INTC_VECT(TPU3, 0xc80), INTC_VECT(TPU1, 0xca0), | ||
52 | INTC_VECT(TMU0, 0x400), INTC_VECT(TMU1, 0x420), | ||
53 | INTC_VECT(TMU2_TUNI, 0x440), INTC_VECT(TMU2_TICPI, 0x460), | ||
54 | INTC_VECT(RTC_ATI, 0x480), INTC_VECT(RTC_PRI, 0x4a0), | ||
55 | INTC_VECT(RTC_CUI, 0x4c0), | ||
56 | INTC_VECT(WDT, 0x560), | ||
57 | INTC_VECT(REF_RCMI, 0x580), | ||
58 | }; | ||
59 | |||
60 | static struct intc_group groups[] __initdata = { | ||
61 | INTC_GROUP(RTC, RTC_ATI, RTC_PRI, RTC_CUI), | ||
62 | INTC_GROUP(TMU2, TMU2_TUNI, TMU2_TICPI), | ||
63 | INTC_GROUP(DMAC, DMAC_DEI0, DMAC_DEI1, DMAC_DEI2, DMAC_DEI3), | ||
64 | INTC_GROUP(USB, USB_USI0, USB_USI1), | ||
65 | INTC_GROUP(SCIF0, SCIF0_ERI, SCIF0_RXI, SCIF0_TXI), | ||
66 | INTC_GROUP(SCIF2, SCIF2_ERI, SCIF2_RXI, SCIF2_TXI), | ||
67 | }; | ||
68 | |||
69 | static struct intc_prio priorities[] __initdata = { | ||
70 | INTC_PRIO(DMAC, 7), | ||
71 | INTC_PRIO(SCIF2, 3), | ||
72 | INTC_PRIO(SCIF0, 3), | ||
73 | }; | ||
74 | |||
75 | static struct intc_prio_reg prio_registers[] __initdata = { | ||
76 | { 0xfffffee2, 0, 16, 4, /* IPRA */ { TMU0, TMU1, TMU2, RTC } }, | ||
77 | { 0xfffffee4, 0, 16, 4, /* IPRB */ { WDT, REF_RCMI, 0, 0 } }, | ||
78 | { 0xa4000016, 0, 16, 4, /* IPRC */ { IRQ3, IRQ2, IRQ1, IRQ0 } }, | ||
79 | { 0xa4000018, 0, 16, 4, /* IPRD */ { PINT07, PINT815, IRQ5, IRQ4 } }, | ||
80 | { 0xa400001a, 0, 16, 4, /* IPRE */ { DMAC, SCIF0, SCIF2, ADC_ADI } }, | ||
81 | { 0xa4080000, 0, 16, 4, /* IPRF */ { 0, 0, USB } }, | ||
82 | { 0xa4080002, 0, 16, 4, /* IPRG */ { TPU0, TPU1 } }, | ||
83 | { 0xa4080004, 0, 16, 4, /* IPRH */ { TPU2, TPU3 } }, | ||
84 | |||
85 | }; | ||
86 | |||
87 | static DECLARE_INTC_DESC(intc_desc, "sh7705", vectors, groups, | ||
88 | priorities, NULL, prio_registers, NULL); | ||
89 | |||
90 | static struct intc_vect vectors_irq[] __initdata = { | ||
91 | INTC_VECT(IRQ0, 0x600), INTC_VECT(IRQ1, 0x620), | ||
92 | INTC_VECT(IRQ2, 0x640), INTC_VECT(IRQ3, 0x660), | ||
93 | }; | ||
94 | |||
95 | static DECLARE_INTC_DESC(intc_desc_irq, "sh7705-irq", vectors_irq, NULL, | ||
96 | priorities, NULL, prio_registers, NULL); | ||
15 | 97 | ||
16 | static struct plat_sci_port sci_platform_data[] = { | 98 | static struct plat_sci_port sci_platform_data[] = { |
17 | { | 99 | { |
@@ -37,8 +119,43 @@ static struct platform_device sci_device = { | |||
37 | }, | 119 | }, |
38 | }; | 120 | }; |
39 | 121 | ||
122 | static struct resource rtc_resources[] = { | ||
123 | [0] = { | ||
124 | .start = 0xfffffec0, | ||
125 | .end = 0xfffffec0 + 0x1e, | ||
126 | .flags = IORESOURCE_IO, | ||
127 | }, | ||
128 | [1] = { | ||
129 | .start = 20, | ||
130 | .flags = IORESOURCE_IRQ, | ||
131 | }, | ||
132 | [2] = { | ||
133 | .start = 21, | ||
134 | .flags = IORESOURCE_IRQ, | ||
135 | }, | ||
136 | [3] = { | ||
137 | .start = 22, | ||
138 | .flags = IORESOURCE_IRQ, | ||
139 | }, | ||
140 | }; | ||
141 | |||
142 | static struct sh_rtc_platform_info rtc_info = { | ||
143 | .capabilities = RTC_CAP_4_DIGIT_YEAR, | ||
144 | }; | ||
145 | |||
146 | static struct platform_device rtc_device = { | ||
147 | .name = "sh-rtc", | ||
148 | .id = -1, | ||
149 | .num_resources = ARRAY_SIZE(rtc_resources), | ||
150 | .resource = rtc_resources, | ||
151 | .dev = { | ||
152 | .platform_data = &rtc_info, | ||
153 | }, | ||
154 | }; | ||
155 | |||
40 | static struct platform_device *sh7705_devices[] __initdata = { | 156 | static struct platform_device *sh7705_devices[] __initdata = { |
41 | &sci_device, | 157 | &sci_device, |
158 | &rtc_device, | ||
42 | }; | 159 | }; |
43 | 160 | ||
44 | static int __init sh7705_devices_setup(void) | 161 | static int __init sh7705_devices_setup(void) |
@@ -48,51 +165,16 @@ static int __init sh7705_devices_setup(void) | |||
48 | } | 165 | } |
49 | __initcall(sh7705_devices_setup); | 166 | __initcall(sh7705_devices_setup); |
50 | 167 | ||
51 | static struct ipr_data ipr_irq_table[] = { | 168 | void __init plat_irq_setup_pins(int mode) |
52 | /* IRQ, IPR-idx, shift, priority */ | 169 | { |
53 | { 16, 0, 12, 2 }, /* TMU0 TUNI*/ | 170 | if (mode == IRQ_MODE_IRQ) { |
54 | { 17, 0, 8, 2 }, /* TMU1 TUNI */ | 171 | register_intc_controller(&intc_desc_irq); |
55 | { 18, 0, 4, 2 }, /* TMU2 TUNI */ | 172 | return; |
56 | { 27, 1, 12, 2 }, /* WDT ITI */ | 173 | } |
57 | { 20, 0, 0, 2 }, /* RTC ATI (alarm) */ | 174 | BUG(); |
58 | { 21, 0, 0, 2 }, /* RTC PRI (period) */ | 175 | } |
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 | |||
72 | static 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 | static struct ipr_desc ipr_irq_desc = { | ||
84 | .ipr_offsets = ipr_offsets, | ||
85 | .nr_offsets = ARRAY_SIZE(ipr_offsets), | ||
86 | |||
87 | .ipr_data = ipr_irq_table, | ||
88 | .nr_irqs = ARRAY_SIZE(ipr_irq_table), | ||
89 | |||
90 | .chip = { | ||
91 | .name = "IPR-sh7705", | ||
92 | }, | ||
93 | }; | ||
94 | 176 | ||
95 | void __init plat_irq_setup(void) | 177 | void __init plat_irq_setup(void) |
96 | { | 178 | { |
97 | register_ipr_controller(&ipr_irq_desc); | 179 | register_intc_controller(&intc_desc); |
98 | } | 180 | } |
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7708.c b/arch/sh/kernel/cpu/sh3/setup-sh7708.c deleted file mode 100644 index f933723911ca..000000000000 --- a/arch/sh/kernel/cpu/sh3/setup-sh7708.c +++ /dev/null | |||
@@ -1,43 +0,0 @@ | |||
1 | /* | ||
2 | * SH7708 Setup | ||
3 | * | ||
4 | * Copyright (C) 2006 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 | |||
15 | static struct plat_sci_port sci_platform_data[] = { | ||
16 | { | ||
17 | .mapbase = 0xfffffe80, | ||
18 | .flags = UPF_BOOT_AUTOCONF, | ||
19 | .type = PORT_SCI, | ||
20 | .irqs = { 23, 24, 25, 0 }, | ||
21 | }, { | ||
22 | .flags = 0, | ||
23 | } | ||
24 | }; | ||
25 | |||
26 | static struct platform_device sci_device = { | ||
27 | .name = "sh-sci", | ||
28 | .id = -1, | ||
29 | .dev = { | ||
30 | .platform_data = sci_platform_data, | ||
31 | }, | ||
32 | }; | ||
33 | |||
34 | static struct platform_device *sh7708_devices[] __initdata = { | ||
35 | &sci_device, | ||
36 | }; | ||
37 | |||
38 | static int __init sh7708_devices_setup(void) | ||
39 | { | ||
40 | return platform_add_devices(sh7708_devices, | ||
41 | ARRAY_SIZE(sh7708_devices)); | ||
42 | } | ||
43 | __initcall(sh7708_devices_setup); | ||
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7709.c b/arch/sh/kernel/cpu/sh3/setup-sh7709.c deleted file mode 100644 index 086f8e2545af..000000000000 --- a/arch/sh/kernel/cpu/sh3/setup-sh7709.c +++ /dev/null | |||
@@ -1,145 +0,0 @@ | |||
1 | /* | ||
2 | * SH7707/SH7709 Setup | ||
3 | * | ||
4 | * Copyright (C) 2006 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 | |||
15 | static struct resource rtc_resources[] = { | ||
16 | [0] = { | ||
17 | .start = 0xfffffec0, | ||
18 | .end = 0xfffffec0 + 0x1e, | ||
19 | .flags = IORESOURCE_IO, | ||
20 | }, | ||
21 | [1] = { | ||
22 | .start = 20, | ||
23 | .flags = IORESOURCE_IRQ, | ||
24 | }, | ||
25 | [2] = { | ||
26 | .start = 21, | ||
27 | .flags = IORESOURCE_IRQ, | ||
28 | }, | ||
29 | [3] = { | ||
30 | .start = 22, | ||
31 | .flags = IORESOURCE_IRQ, | ||
32 | }, | ||
33 | }; | ||
34 | |||
35 | static struct plat_sci_port sci_platform_data[] = { | ||
36 | { | ||
37 | .mapbase = 0xfffffe80, | ||
38 | .flags = UPF_BOOT_AUTOCONF, | ||
39 | .type = PORT_SCI, | ||
40 | .irqs = { 23, 24, 25, 0 }, | ||
41 | }, { | ||
42 | .mapbase = 0xa4000150, | ||
43 | .flags = UPF_BOOT_AUTOCONF, | ||
44 | .type = PORT_SCIF, | ||
45 | .irqs = { 56, 57, 59, 58 }, | ||
46 | }, { | ||
47 | .mapbase = 0xa4000140, | ||
48 | .flags = UPF_BOOT_AUTOCONF, | ||
49 | .type = PORT_IRDA, | ||
50 | .irqs = { 52, 53, 55, 54 }, | ||
51 | }, { | ||
52 | .flags = 0, | ||
53 | } | ||
54 | }; | ||
55 | |||
56 | static struct platform_device sci_device = { | ||
57 | .name = "sh-sci", | ||
58 | .id = -1, | ||
59 | .dev = { | ||
60 | .platform_data = sci_platform_data, | ||
61 | }, | ||
62 | }; | ||
63 | |||
64 | static struct platform_device rtc_device = { | ||
65 | .name = "sh-rtc", | ||
66 | .id = -1, | ||
67 | .num_resources = ARRAY_SIZE(rtc_resources), | ||
68 | .resource = rtc_resources, | ||
69 | }; | ||
70 | |||
71 | static struct platform_device *sh7709_devices[] __initdata = { | ||
72 | &sci_device, | ||
73 | &rtc_device, | ||
74 | }; | ||
75 | |||
76 | static int __init sh7709_devices_setup(void) | ||
77 | { | ||
78 | return platform_add_devices(sh7709_devices, | ||
79 | ARRAY_SIZE(sh7709_devices)); | ||
80 | } | ||
81 | __initcall(sh7709_devices_setup); | ||
82 | |||
83 | static struct ipr_data ipr_irq_table[] = { | ||
84 | { 16, 0, 12, 2 }, /* TMU TUNI0 */ | ||
85 | { 17, 0, 8, 4 }, /* TMU TUNI1 */ | ||
86 | { 18, 0, 4, 1 }, /* TMU TUNI1 */ | ||
87 | { 19, 0, 4, 1 }, /* TMU TUNI1 */ | ||
88 | { 20, 0, 0, 2 }, /* RTC CUI */ | ||
89 | { 21, 0, 0, 2 }, /* RTC CUI */ | ||
90 | { 22, 0, 0, 2 }, /* RTC CUI */ | ||
91 | |||
92 | { 23, 1, 4, 3 }, /* SCI */ | ||
93 | { 24, 1, 4, 3 }, /* SCI */ | ||
94 | { 25, 1, 4, 3 }, /* SCI */ | ||
95 | { 26, 1, 4, 3 }, /* SCI */ | ||
96 | { 27, 1, 12, 3 }, /* WDT ITI */ | ||
97 | |||
98 | { 32, 2, 0, 1 }, /* IRQ 0 */ | ||
99 | { 33, 2, 4, 1 }, /* IRQ 1 */ | ||
100 | { 34, 2, 8, 1 }, /* IRQ 2 APM */ | ||
101 | { 35, 2, 12, 1 }, /* IRQ 3 TOUCHSCREEN */ | ||
102 | |||
103 | { 36, 3, 0, 1 }, /* IRQ 4 */ | ||
104 | { 37, 3, 4, 1 }, /* IRQ 5 */ | ||
105 | |||
106 | { 48, 4, 12, 7 }, /* DMA */ | ||
107 | { 49, 4, 12, 7 }, /* DMA */ | ||
108 | { 50, 4, 12, 7 }, /* DMA */ | ||
109 | { 51, 4, 12, 7 }, /* DMA */ | ||
110 | |||
111 | { 52, 4, 8, 3 }, /* IRDA */ | ||
112 | { 53, 4, 8, 3 }, /* IRDA */ | ||
113 | { 54, 4, 8, 3 }, /* IRDA */ | ||
114 | { 55, 4, 8, 3 }, /* IRDA */ | ||
115 | |||
116 | { 56, 4, 4, 3 }, /* SCIF */ | ||
117 | { 57, 4, 4, 3 }, /* SCIF */ | ||
118 | { 58, 4, 4, 3 }, /* SCIF */ | ||
119 | { 59, 4, 4, 3 }, /* SCIF */ | ||
120 | }; | ||
121 | |||
122 | static unsigned long ipr_offsets[] = { | ||
123 | 0xfffffee2, /* 0: IPRA */ | ||
124 | 0xfffffee4, /* 1: IPRB */ | ||
125 | 0xa4000016, /* 2: IPRC */ | ||
126 | 0xa4000018, /* 3: IPRD */ | ||
127 | 0xa400001a, /* 4: IPRE */ | ||
128 | }; | ||
129 | |||
130 | static struct ipr_desc ipr_irq_desc = { | ||
131 | .ipr_offsets = ipr_offsets, | ||
132 | .nr_offsets = ARRAY_SIZE(ipr_offsets), | ||
133 | |||
134 | .ipr_data = ipr_irq_table, | ||
135 | .nr_irqs = ARRAY_SIZE(ipr_irq_table), | ||
136 | |||
137 | .chip = { | ||
138 | .name = "IPR-sh7709", | ||
139 | }, | ||
140 | }; | ||
141 | |||
142 | void __init plat_irq_setup(void) | ||
143 | { | ||
144 | register_ipr_controller(&ipr_irq_desc); | ||
145 | } | ||
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh770x.c b/arch/sh/kernel/cpu/sh3/setup-sh770x.c new file mode 100644 index 000000000000..60b04b1f9453 --- /dev/null +++ b/arch/sh/kernel/cpu/sh3/setup-sh770x.c | |||
@@ -0,0 +1,224 @@ | |||
1 | /* | ||
2 | * SH3 Setup code for SH7706, SH7707, SH7708, SH7709 | ||
3 | * | ||
4 | * Copyright (C) 2007 Magnus Damm | ||
5 | * | ||
6 | * Based on setup-sh7709.c | ||
7 | * | ||
8 | * Copyright (C) 2006 Paul Mundt | ||
9 | * | ||
10 | * This file is subject to the terms and conditions of the GNU General Public | ||
11 | * License. See the file "COPYING" in the main directory of this archive | ||
12 | * for more details. | ||
13 | */ | ||
14 | #include <linux/init.h> | ||
15 | #include <linux/io.h> | ||
16 | #include <linux/irq.h> | ||
17 | #include <linux/platform_device.h> | ||
18 | #include <linux/serial.h> | ||
19 | #include <asm/sci.h> | ||
20 | |||
21 | enum { | ||
22 | UNUSED = 0, | ||
23 | |||
24 | /* interrupt sources */ | ||
25 | IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, | ||
26 | PINT07, PINT815, | ||
27 | DMAC_DEI0, DMAC_DEI1, DMAC_DEI2, DMAC_DEI3, | ||
28 | SCIF0_ERI, SCIF0_RXI, SCIF0_BRI, SCIF0_TXI, | ||
29 | SCIF2_ERI, SCIF2_RXI, SCIF2_BRI, SCIF2_TXI, | ||
30 | SCI_ERI, SCI_RXI, SCI_TXI, SCI_TEI, | ||
31 | ADC_ADI, | ||
32 | LCDC, PCC0, PCC1, | ||
33 | TMU0, TMU1, TMU2_TUNI, TMU2_TICPI, | ||
34 | RTC_ATI, RTC_PRI, RTC_CUI, | ||
35 | WDT, | ||
36 | REF_RCMI, REF_ROVI, | ||
37 | |||
38 | /* interrupt groups */ | ||
39 | RTC, REF, TMU2, DMAC, SCI, SCIF2, SCIF0, | ||
40 | }; | ||
41 | |||
42 | static struct intc_vect vectors[] __initdata = { | ||
43 | INTC_VECT(TMU0, 0x400), INTC_VECT(TMU1, 0x420), | ||
44 | INTC_VECT(TMU2_TUNI, 0x440), INTC_VECT(TMU2_TICPI, 0x460), | ||
45 | INTC_VECT(RTC_ATI, 0x480), INTC_VECT(RTC_PRI, 0x4a0), | ||
46 | INTC_VECT(RTC_CUI, 0x4c0), | ||
47 | INTC_VECT(SCI_ERI, 0x4e0), INTC_VECT(SCI_RXI, 0x500), | ||
48 | INTC_VECT(SCI_TXI, 0x520), INTC_VECT(SCI_TEI, 0x540), | ||
49 | INTC_VECT(WDT, 0x560), | ||
50 | INTC_VECT(REF_RCMI, 0x580), | ||
51 | INTC_VECT(REF_ROVI, 0x5a0), | ||
52 | #if defined(CONFIG_CPU_SUBTYPE_SH7706) || \ | ||
53 | defined(CONFIG_CPU_SUBTYPE_SH7707) || \ | ||
54 | defined(CONFIG_CPU_SUBTYPE_SH7709) | ||
55 | INTC_VECT(IRQ4, 0x680), INTC_VECT(IRQ5, 0x6a0), | ||
56 | INTC_VECT(DMAC_DEI0, 0x800), INTC_VECT(DMAC_DEI1, 0x820), | ||
57 | INTC_VECT(DMAC_DEI2, 0x840), INTC_VECT(DMAC_DEI3, 0x860), | ||
58 | INTC_VECT(ADC_ADI, 0x980), | ||
59 | INTC_VECT(SCIF2_ERI, 0x900), INTC_VECT(SCIF2_RXI, 0x920), | ||
60 | INTC_VECT(SCIF2_BRI, 0x940), INTC_VECT(SCIF2_TXI, 0x960), | ||
61 | #endif | ||
62 | #if defined(CONFIG_CPU_SUBTYPE_SH7707) || \ | ||
63 | defined(CONFIG_CPU_SUBTYPE_SH7709) | ||
64 | INTC_VECT(PINT07, 0x700), INTC_VECT(PINT815, 0x720), | ||
65 | INTC_VECT(SCIF0_ERI, 0x880), INTC_VECT(SCIF0_RXI, 0x8a0), | ||
66 | INTC_VECT(SCIF0_BRI, 0x8c0), INTC_VECT(SCIF0_TXI, 0x8e0), | ||
67 | #endif | ||
68 | #if defined(CONFIG_CPU_SUBTYPE_SH7707) | ||
69 | INTC_VECT(LCDC, 0x9a0), | ||
70 | INTC_VECT(PCC0, 0x9c0), INTC_VECT(PCC1, 0x9e0), | ||
71 | #endif | ||
72 | }; | ||
73 | |||
74 | static struct intc_group groups[] __initdata = { | ||
75 | INTC_GROUP(RTC, RTC_ATI, RTC_PRI, RTC_CUI), | ||
76 | INTC_GROUP(TMU2, TMU2_TUNI, TMU2_TICPI), | ||
77 | INTC_GROUP(REF, REF_RCMI, REF_ROVI), | ||
78 | INTC_GROUP(DMAC, DMAC_DEI0, DMAC_DEI1, DMAC_DEI2, DMAC_DEI3), | ||
79 | INTC_GROUP(SCI, SCI_ERI, SCI_RXI, SCI_TXI, SCI_TEI), | ||
80 | INTC_GROUP(SCIF0, SCIF0_ERI, SCIF0_RXI, SCIF0_BRI, SCIF0_TXI), | ||
81 | INTC_GROUP(SCIF2, SCIF2_ERI, SCIF2_RXI, SCIF2_BRI, SCIF2_TXI), | ||
82 | }; | ||
83 | |||
84 | static struct intc_prio priorities[] __initdata = { | ||
85 | INTC_PRIO(DMAC, 7), | ||
86 | INTC_PRIO(SCI, 3), | ||
87 | INTC_PRIO(SCIF2, 3), | ||
88 | INTC_PRIO(SCIF0, 3), | ||
89 | }; | ||
90 | |||
91 | static struct intc_prio_reg prio_registers[] __initdata = { | ||
92 | { 0xfffffee2, 0, 16, 4, /* IPRA */ { TMU0, TMU1, TMU2, RTC } }, | ||
93 | { 0xfffffee4, 0, 16, 4, /* IPRB */ { WDT, REF, SCI, 0 } }, | ||
94 | #if defined(CONFIG_CPU_SUBTYPE_SH7706) || \ | ||
95 | defined(CONFIG_CPU_SUBTYPE_SH7707) || \ | ||
96 | defined(CONFIG_CPU_SUBTYPE_SH7709) | ||
97 | { 0xa4000016, 0, 16, 4, /* IPRC */ { IRQ3, IRQ2, IRQ1, IRQ0 } }, | ||
98 | { 0xa4000018, 0, 16, 4, /* IPRD */ { 0, 0, IRQ5, IRQ4 } }, | ||
99 | { 0xa400001a, 0, 16, 4, /* IPRE */ { DMAC, 0, SCIF2, ADC_ADI } }, | ||
100 | #endif | ||
101 | #if defined(CONFIG_CPU_SUBTYPE_SH7707) || \ | ||
102 | defined(CONFIG_CPU_SUBTYPE_SH7709) | ||
103 | { 0xa4000018, 0, 16, 4, /* IPRD */ { PINT07, PINT815, } }, | ||
104 | { 0xa400001a, 0, 16, 4, /* IPRE */ { 0, SCIF0 } }, | ||
105 | #endif | ||
106 | #if defined(CONFIG_CPU_SUBTYPE_SH7707) | ||
107 | { 0xa400001c, 0, 16, 4, /* IPRF */ { 0, LCDC, PCC0, PCC1, } }, | ||
108 | #endif | ||
109 | }; | ||
110 | |||
111 | static DECLARE_INTC_DESC(intc_desc, "sh770x", vectors, groups, | ||
112 | priorities, NULL, prio_registers, NULL); | ||
113 | |||
114 | #if defined(CONFIG_CPU_SUBTYPE_SH7706) || \ | ||
115 | defined(CONFIG_CPU_SUBTYPE_SH7707) || \ | ||
116 | defined(CONFIG_CPU_SUBTYPE_SH7709) | ||
117 | static struct intc_vect vectors_irq[] __initdata = { | ||
118 | INTC_VECT(IRQ0, 0x600), INTC_VECT(IRQ1, 0x620), | ||
119 | INTC_VECT(IRQ2, 0x640), INTC_VECT(IRQ3, 0x660), | ||
120 | }; | ||
121 | |||
122 | static DECLARE_INTC_DESC(intc_desc_irq, "sh770x-irq", vectors_irq, NULL, | ||
123 | priorities, NULL, prio_registers, NULL); | ||
124 | #endif | ||
125 | |||
126 | static struct resource rtc_resources[] = { | ||
127 | [0] = { | ||
128 | .start = 0xfffffec0, | ||
129 | .end = 0xfffffec0 + 0x1e, | ||
130 | .flags = IORESOURCE_IO, | ||
131 | }, | ||
132 | [1] = { | ||
133 | .start = 20, | ||
134 | .flags = IORESOURCE_IRQ, | ||
135 | }, | ||
136 | [2] = { | ||
137 | .start = 21, | ||
138 | .flags = IORESOURCE_IRQ, | ||
139 | }, | ||
140 | [3] = { | ||
141 | .start = 22, | ||
142 | .flags = IORESOURCE_IRQ, | ||
143 | }, | ||
144 | }; | ||
145 | |||
146 | static struct platform_device rtc_device = { | ||
147 | .name = "sh-rtc", | ||
148 | .id = -1, | ||
149 | .num_resources = ARRAY_SIZE(rtc_resources), | ||
150 | .resource = rtc_resources, | ||
151 | }; | ||
152 | |||
153 | static struct plat_sci_port sci_platform_data[] = { | ||
154 | { | ||
155 | .mapbase = 0xfffffe80, | ||
156 | .flags = UPF_BOOT_AUTOCONF, | ||
157 | .type = PORT_SCI, | ||
158 | .irqs = { 23, 24, 25, 0 }, | ||
159 | }, | ||
160 | #if defined(CONFIG_CPU_SUBTYPE_SH7706) || \ | ||
161 | defined(CONFIG_CPU_SUBTYPE_SH7707) || \ | ||
162 | defined(CONFIG_CPU_SUBTYPE_SH7709) | ||
163 | { | ||
164 | .mapbase = 0xa4000150, | ||
165 | .flags = UPF_BOOT_AUTOCONF, | ||
166 | .type = PORT_SCIF, | ||
167 | .irqs = { 56, 57, 59, 58 }, | ||
168 | }, | ||
169 | #endif | ||
170 | #if defined(CONFIG_CPU_SUBTYPE_SH7707) || \ | ||
171 | defined(CONFIG_CPU_SUBTYPE_SH7709) | ||
172 | { | ||
173 | .mapbase = 0xa4000140, | ||
174 | .flags = UPF_BOOT_AUTOCONF, | ||
175 | .type = PORT_IRDA, | ||
176 | .irqs = { 52, 53, 55, 54 }, | ||
177 | }, | ||
178 | #endif | ||
179 | { | ||
180 | .flags = 0, | ||
181 | } | ||
182 | }; | ||
183 | |||
184 | static struct platform_device sci_device = { | ||
185 | .name = "sh-sci", | ||
186 | .id = -1, | ||
187 | .dev = { | ||
188 | .platform_data = sci_platform_data, | ||
189 | }, | ||
190 | }; | ||
191 | |||
192 | static struct platform_device *sh770x_devices[] __initdata = { | ||
193 | &sci_device, | ||
194 | &rtc_device, | ||
195 | }; | ||
196 | |||
197 | static int __init sh770x_devices_setup(void) | ||
198 | { | ||
199 | return platform_add_devices(sh770x_devices, | ||
200 | ARRAY_SIZE(sh770x_devices)); | ||
201 | } | ||
202 | __initcall(sh770x_devices_setup); | ||
203 | |||
204 | #define INTC_ICR1 0xa4000010UL | ||
205 | #define INTC_ICR1_IRQLVL (1<<14) | ||
206 | |||
207 | void __init plat_irq_setup_pins(int mode) | ||
208 | { | ||
209 | if (mode == IRQ_MODE_IRQ) { | ||
210 | #if defined(CONFIG_CPU_SUBTYPE_SH7706) || \ | ||
211 | defined(CONFIG_CPU_SUBTYPE_SH7707) || \ | ||
212 | defined(CONFIG_CPU_SUBTYPE_SH7709) | ||
213 | ctrl_outw(ctrl_inw(INTC_ICR1) & ~INTC_ICR1_IRQLVL, INTC_ICR1); | ||
214 | register_intc_controller(&intc_desc_irq); | ||
215 | return; | ||
216 | #endif | ||
217 | } | ||
218 | BUG(); | ||
219 | } | ||
220 | |||
221 | void __init plat_irq_setup(void) | ||
222 | { | ||
223 | register_intc_controller(&intc_desc); | ||
224 | } | ||
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7710.c b/arch/sh/kernel/cpu/sh3/setup-sh7710.c index 132284893373..84e5629fa841 100644 --- a/arch/sh/kernel/cpu/sh3/setup-sh7710.c +++ b/arch/sh/kernel/cpu/sh3/setup-sh7710.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * SH7710 Setup | 2 | * SH3 Setup code for SH7710, SH7712 |
3 | * | 3 | * |
4 | * Copyright (C) 2006 Paul Mundt | 4 | * Copyright (C) 2006, 2007 Paul Mundt |
5 | * Copyright (C) 2007 Nobuhiro Iwamatsu | 5 | * Copyright (C) 2007 Nobuhiro Iwamatsu |
6 | * | 6 | * |
7 | * 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 |
@@ -10,8 +10,140 @@ | |||
10 | */ | 10 | */ |
11 | #include <linux/platform_device.h> | 11 | #include <linux/platform_device.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/irq.h> | ||
13 | #include <linux/serial.h> | 14 | #include <linux/serial.h> |
14 | #include <asm/sci.h> | 15 | #include <asm/sci.h> |
16 | #include <asm/rtc.h> | ||
17 | |||
18 | enum { | ||
19 | UNUSED = 0, | ||
20 | |||
21 | /* interrupt sources */ | ||
22 | IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, | ||
23 | DMAC_DEI0, DMAC_DEI1, DMAC_DEI2, DMAC_DEI3, | ||
24 | SCIF0_ERI, SCIF0_RXI, SCIF0_BRI, SCIF0_TXI, | ||
25 | SCIF1_ERI, SCIF1_RXI, SCIF1_BRI, SCIF1_TXI, | ||
26 | DMAC_DEI4, DMAC_DEI5, | ||
27 | IPSEC, | ||
28 | EDMAC0, EDMAC1, EDMAC2, | ||
29 | SIOF0_ERI, SIOF0_TXI, SIOF0_RXI, SIOF0_CCI, | ||
30 | SIOF1_ERI, SIOF1_TXI, SIOF1_RXI, SIOF1_CCI, | ||
31 | TMU0, TMU1, TMU2, | ||
32 | RTC_ATI, RTC_PRI, RTC_CUI, | ||
33 | WDT, | ||
34 | REF, | ||
35 | |||
36 | /* interrupt groups */ | ||
37 | RTC, DMAC1, SCIF0, SCIF1, DMAC2, SIOF0, SIOF1, | ||
38 | }; | ||
39 | |||
40 | static struct intc_vect vectors[] __initdata = { | ||
41 | INTC_VECT(IRQ4, 0x680), INTC_VECT(IRQ5, 0x6a0), | ||
42 | INTC_VECT(DMAC_DEI0, 0x800), INTC_VECT(DMAC_DEI1, 0x820), | ||
43 | INTC_VECT(DMAC_DEI2, 0x840), INTC_VECT(DMAC_DEI3, 0x860), | ||
44 | INTC_VECT(SCIF0_ERI, 0x880), INTC_VECT(SCIF0_RXI, 0x8a0), | ||
45 | INTC_VECT(SCIF0_BRI, 0x8c0), INTC_VECT(SCIF0_TXI, 0x8e0), | ||
46 | INTC_VECT(SCIF1_ERI, 0x900), INTC_VECT(SCIF1_RXI, 0x920), | ||
47 | INTC_VECT(SCIF1_BRI, 0x940), INTC_VECT(SCIF1_TXI, 0x960), | ||
48 | INTC_VECT(DMAC_DEI4, 0xb80), INTC_VECT(DMAC_DEI5, 0xba0), | ||
49 | #ifdef CONFIG_CPU_SUBTYPE_SH7710 | ||
50 | INTC_VECT(IPSEC, 0xbe0), | ||
51 | #endif | ||
52 | INTC_VECT(EDMAC0, 0xc00), INTC_VECT(EDMAC1, 0xc20), | ||
53 | INTC_VECT(EDMAC2, 0xc40), | ||
54 | INTC_VECT(SIOF0_ERI, 0xe00), INTC_VECT(SIOF0_TXI, 0xe20), | ||
55 | INTC_VECT(SIOF0_RXI, 0xe40), INTC_VECT(SIOF0_CCI, 0xe60), | ||
56 | INTC_VECT(SIOF1_ERI, 0xe80), INTC_VECT(SIOF1_TXI, 0xea0), | ||
57 | INTC_VECT(SIOF1_RXI, 0xec0), INTC_VECT(SIOF1_CCI, 0xee0), | ||
58 | INTC_VECT(TMU0, 0x400), INTC_VECT(TMU1, 0x420), | ||
59 | INTC_VECT(TMU2, 0x440), | ||
60 | INTC_VECT(RTC_ATI, 0x480), INTC_VECT(RTC_PRI, 0x4a0), | ||
61 | INTC_VECT(RTC_CUI, 0x4c0), | ||
62 | INTC_VECT(WDT, 0x560), | ||
63 | INTC_VECT(REF, 0x580), | ||
64 | }; | ||
65 | |||
66 | static struct intc_group groups[] __initdata = { | ||
67 | INTC_GROUP(RTC, RTC_ATI, RTC_PRI, RTC_CUI), | ||
68 | INTC_GROUP(DMAC1, DMAC_DEI0, DMAC_DEI1, DMAC_DEI2, DMAC_DEI3), | ||
69 | INTC_GROUP(SCIF0, SCIF0_ERI, SCIF0_RXI, SCIF0_BRI, SCIF0_TXI), | ||
70 | INTC_GROUP(SCIF1, SCIF1_ERI, SCIF1_RXI, SCIF1_BRI, SCIF1_TXI), | ||
71 | INTC_GROUP(DMAC2, DMAC_DEI4, DMAC_DEI5), | ||
72 | INTC_GROUP(SIOF0, SIOF0_ERI, SIOF0_TXI, SIOF0_RXI, SIOF0_CCI), | ||
73 | INTC_GROUP(SIOF1, SIOF1_ERI, SIOF1_TXI, SIOF1_RXI, SIOF1_CCI), | ||
74 | }; | ||
75 | |||
76 | static struct intc_prio priorities[] __initdata = { | ||
77 | INTC_PRIO(DMAC1, 7), | ||
78 | INTC_PRIO(DMAC2, 7), | ||
79 | INTC_PRIO(SCIF0, 3), | ||
80 | INTC_PRIO(SCIF1, 3), | ||
81 | INTC_PRIO(SIOF0, 3), | ||
82 | INTC_PRIO(SIOF1, 3), | ||
83 | INTC_PRIO(EDMAC0, 5), | ||
84 | INTC_PRIO(EDMAC1, 5), | ||
85 | INTC_PRIO(EDMAC2, 5), | ||
86 | }; | ||
87 | |||
88 | static struct intc_prio_reg prio_registers[] __initdata = { | ||
89 | { 0xfffffee2, 0, 16, 4, /* IPRA */ { TMU0, TMU1, TMU2, RTC } }, | ||
90 | { 0xfffffee4, 0, 16, 4, /* IPRB */ { WDT, REF, 0, 0 } }, | ||
91 | { 0xa4000016, 0, 16, 4, /* IPRC */ { IRQ3, IRQ2, IRQ1, IRQ0 } }, | ||
92 | { 0xa4000018, 0, 16, 4, /* IPRD */ { 0, 0, IRQ5, IRQ4 } }, | ||
93 | { 0xa400001a, 0, 16, 4, /* IPRE */ { DMAC1, SCIF0, SCIF1 } }, | ||
94 | { 0xa4080000, 0, 16, 4, /* IPRF */ { 0, DMAC2 } }, | ||
95 | #ifdef CONFIG_CPU_SUBTYPE_SH7710 | ||
96 | { 0xa4080000, 0, 16, 4, /* IPRF */ { IPSEC } }, | ||
97 | #endif | ||
98 | { 0xa4080002, 0, 16, 4, /* IPRG */ { EDMAC0, EDMAC1, EDMAC2 } }, | ||
99 | { 0xa4080004, 0, 16, 4, /* IPRH */ { 0, 0, 0, SIOF0 } }, | ||
100 | { 0xa4080006, 0, 16, 4, /* IPRI */ { 0, 0, SIOF1 } }, | ||
101 | }; | ||
102 | |||
103 | static DECLARE_INTC_DESC(intc_desc, "sh7710", vectors, groups, | ||
104 | priorities, NULL, prio_registers, NULL); | ||
105 | |||
106 | static struct intc_vect vectors_irq[] __initdata = { | ||
107 | INTC_VECT(IRQ0, 0x600), INTC_VECT(IRQ1, 0x620), | ||
108 | INTC_VECT(IRQ2, 0x640), INTC_VECT(IRQ3, 0x660), | ||
109 | }; | ||
110 | |||
111 | static DECLARE_INTC_DESC(intc_desc_irq, "sh7710-irq", vectors_irq, NULL, | ||
112 | priorities, NULL, prio_registers, NULL); | ||
113 | |||
114 | static struct resource rtc_resources[] = { | ||
115 | [0] = { | ||
116 | .start = 0xa413fec0, | ||
117 | .end = 0xa413fec0 + 0x1e, | ||
118 | .flags = IORESOURCE_IO, | ||
119 | }, | ||
120 | [1] = { | ||
121 | .start = 20, | ||
122 | .flags = IORESOURCE_IRQ, | ||
123 | }, | ||
124 | [2] = { | ||
125 | .start = 21, | ||
126 | .flags = IORESOURCE_IRQ, | ||
127 | }, | ||
128 | [3] = { | ||
129 | .start = 22, | ||
130 | .flags = IORESOURCE_IRQ, | ||
131 | }, | ||
132 | }; | ||
133 | |||
134 | static struct sh_rtc_platform_info rtc_info = { | ||
135 | .capabilities = RTC_CAP_4_DIGIT_YEAR, | ||
136 | }; | ||
137 | |||
138 | static struct platform_device rtc_device = { | ||
139 | .name = "sh-rtc", | ||
140 | .id = -1, | ||
141 | .num_resources = ARRAY_SIZE(rtc_resources), | ||
142 | .resource = rtc_resources, | ||
143 | .dev = { | ||
144 | .platform_data = &rtc_info, | ||
145 | }, | ||
146 | }; | ||
15 | 147 | ||
16 | static struct plat_sci_port sci_platform_data[] = { | 148 | static struct plat_sci_port sci_platform_data[] = { |
17 | { | 149 | { |
@@ -20,7 +152,7 @@ static struct plat_sci_port sci_platform_data[] = { | |||
20 | .type = PORT_SCIF, | 152 | .type = PORT_SCIF, |
21 | .irqs = { 52, 53, 55, 54 }, | 153 | .irqs = { 52, 53, 55, 54 }, |
22 | }, { | 154 | }, { |
23 | .mapbase = 0xa4420000, | 155 | .mapbase = 0xa4410000, |
24 | .flags = UPF_BOOT_AUTOCONF, | 156 | .flags = UPF_BOOT_AUTOCONF, |
25 | .type = PORT_SCIF, | 157 | .type = PORT_SCIF, |
26 | .irqs = { 56, 57, 59, 58 }, | 158 | .irqs = { 56, 57, 59, 58 }, |
@@ -40,6 +172,7 @@ static struct platform_device sci_device = { | |||
40 | 172 | ||
41 | static struct platform_device *sh7710_devices[] __initdata = { | 173 | static struct platform_device *sh7710_devices[] __initdata = { |
42 | &sci_device, | 174 | &sci_device, |
175 | &rtc_device, | ||
43 | }; | 176 | }; |
44 | 177 | ||
45 | static int __init sh7710_devices_setup(void) | 178 | static int __init sh7710_devices_setup(void) |
@@ -49,59 +182,16 @@ static int __init sh7710_devices_setup(void) | |||
49 | } | 182 | } |
50 | __initcall(sh7710_devices_setup); | 183 | __initcall(sh7710_devices_setup); |
51 | 184 | ||
52 | static struct ipr_data ipr_irq_table[] = { | 185 | void __init plat_irq_setup_pins(int mode) |
53 | /* IRQ, IPR-idx, shift, priority */ | 186 | { |
54 | { 16, 0, 12, 2 }, /* TMU0 TUNI*/ | 187 | if (mode == IRQ_MODE_IRQ) { |
55 | { 17, 0, 8, 2 }, /* TMU1 TUNI */ | 188 | register_intc_controller(&intc_desc_irq); |
56 | { 18, 0, 4, 2 }, /* TMU2 TUNI */ | 189 | return; |
57 | { 27, 1, 12, 2 }, /* WDT ITI */ | 190 | } |
58 | { 20, 0, 0, 2 }, /* RTC ATI (alarm) */ | 191 | BUG(); |
59 | { 21, 0, 0, 2 }, /* RTC PRI (period) */ | 192 | } |
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 | |||
80 | static 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 | static struct ipr_desc ipr_irq_desc = { | ||
93 | .ipr_offsets = ipr_offsets, | ||
94 | .nr_offsets = ARRAY_SIZE(ipr_offsets), | ||
95 | |||
96 | .ipr_data = ipr_irq_table, | ||
97 | .nr_irqs = ARRAY_SIZE(ipr_irq_table), | ||
98 | |||
99 | .chip = { | ||
100 | .name = "IPR-sh7710", | ||
101 | }, | ||
102 | }; | ||
103 | 193 | ||
104 | void __init plat_irq_setup(void) | 194 | void __init plat_irq_setup(void) |
105 | { | 195 | { |
106 | register_ipr_controller(&ipr_irq_desc); | 196 | register_intc_controller(&intc_desc); |
107 | } | 197 | } |
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7720.c b/arch/sh/kernel/cpu/sh3/setup-sh7720.c new file mode 100644 index 000000000000..a0929b8a95ae --- /dev/null +++ b/arch/sh/kernel/cpu/sh3/setup-sh7720.c | |||
@@ -0,0 +1,210 @@ | |||
1 | /* | ||
2 | * SH7720 Setup | ||
3 | * | ||
4 | * Copyright (C) 2007 Markus Brunner, Mark Jonas | ||
5 | * | ||
6 | * Based on arch/sh/kernel/cpu/sh4/setup-sh7750.c: | ||
7 | * | ||
8 | * Copyright (C) 2006 Paul Mundt | ||
9 | * Copyright (C) 2006 Jamie Lenehan | ||
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 <linux/platform_device.h> | ||
16 | #include <linux/init.h> | ||
17 | #include <linux/serial.h> | ||
18 | #include <linux/io.h> | ||
19 | #include <asm/sci.h> | ||
20 | #include <asm/rtc.h> | ||
21 | |||
22 | #define INTC_ICR1 0xA4140010UL | ||
23 | #define INTC_ICR_IRLM 0x4000 | ||
24 | #define INTC_ICR_IRQ (~INTC_ICR_IRLM) | ||
25 | |||
26 | static struct resource rtc_resources[] = { | ||
27 | [0] = { | ||
28 | .start = 0xa413fec0, | ||
29 | .end = 0xa413fec0 + 0x28 - 1, | ||
30 | .flags = IORESOURCE_IO, | ||
31 | }, | ||
32 | [1] = { | ||
33 | /* Period IRQ */ | ||
34 | .start = 21, | ||
35 | .flags = IORESOURCE_IRQ, | ||
36 | }, | ||
37 | [2] = { | ||
38 | /* Carry IRQ */ | ||
39 | .start = 22, | ||
40 | .flags = IORESOURCE_IRQ, | ||
41 | }, | ||
42 | [3] = { | ||
43 | /* Alarm IRQ */ | ||
44 | .start = 20, | ||
45 | .flags = IORESOURCE_IRQ, | ||
46 | }, | ||
47 | }; | ||
48 | |||
49 | static struct sh_rtc_platform_info rtc_info = { | ||
50 | .capabilities = RTC_CAP_4_DIGIT_YEAR, | ||
51 | }; | ||
52 | |||
53 | static struct platform_device rtc_device = { | ||
54 | .name = "sh-rtc", | ||
55 | .id = -1, | ||
56 | .num_resources = ARRAY_SIZE(rtc_resources), | ||
57 | .resource = rtc_resources, | ||
58 | .dev = { | ||
59 | .platform_data = &rtc_info, | ||
60 | }, | ||
61 | }; | ||
62 | |||
63 | static struct plat_sci_port sci_platform_data[] = { | ||
64 | { | ||
65 | .mapbase = 0xa4430000, | ||
66 | .flags = UPF_BOOT_AUTOCONF, | ||
67 | .type = PORT_SCIF, | ||
68 | .irqs = { 80, 80, 80, 80 }, | ||
69 | }, { | ||
70 | .mapbase = 0xa4438000, | ||
71 | .flags = UPF_BOOT_AUTOCONF, | ||
72 | .type = PORT_SCIF, | ||
73 | .irqs = { 81, 81, 81, 81 }, | ||
74 | }, { | ||
75 | |||
76 | .flags = 0, | ||
77 | } | ||
78 | }; | ||
79 | |||
80 | static struct platform_device sci_device = { | ||
81 | .name = "sh-sci", | ||
82 | .id = -1, | ||
83 | .dev = { | ||
84 | .platform_data = sci_platform_data, | ||
85 | }, | ||
86 | }; | ||
87 | |||
88 | static struct platform_device *sh7720_devices[] __initdata = { | ||
89 | &rtc_device, | ||
90 | &sci_device, | ||
91 | }; | ||
92 | |||
93 | static int __init sh7720_devices_setup(void) | ||
94 | { | ||
95 | return platform_add_devices(sh7720_devices, | ||
96 | ARRAY_SIZE(sh7720_devices)); | ||
97 | } | ||
98 | __initcall(sh7720_devices_setup); | ||
99 | |||
100 | enum { | ||
101 | UNUSED = 0, | ||
102 | |||
103 | /* interrupt sources */ | ||
104 | TMU0, TMU1, TMU2, RTC_ATI, RTC_PRI, RTC_CUI, | ||
105 | WDT, REF_RCMI, SIM_ERI, SIM_RXI, SIM_TXI, SIM_TEND, | ||
106 | IRQ0, IRQ1, IRQ2, IRQ3, | ||
107 | USBF_SPD, TMU_SUNI, IRQ5, IRQ4, | ||
108 | DMAC1_DEI0, DMAC1_DEI1, DMAC1_DEI2, DMAC1_DEI3, LCDC, SSL, | ||
109 | ADC, DMAC2_DEI4, DMAC2_DEI5, USBFI0, USBFI1, CMT, | ||
110 | SCIF0, SCIF1, | ||
111 | PINT07, PINT815, TPU0, TPU1, TPU2, TPU3, IIC, | ||
112 | SIOF0, SIOF1, MMCI0, MMCI1, MMCI2, MMCI3, PCC, | ||
113 | USBHI, AFEIF, | ||
114 | H_UDI, | ||
115 | /* interrupt groups */ | ||
116 | TMU, RTC, SIM, DMAC1, USBFI, DMAC2, USB, TPU, MMC, | ||
117 | }; | ||
118 | |||
119 | static struct intc_vect vectors[] __initdata = { | ||
120 | INTC_VECT(TMU0, 0x400), INTC_VECT(TMU1, 0x420), | ||
121 | INTC_VECT(TMU2, 0x440), INTC_VECT(RTC_ATI, 0x480), | ||
122 | INTC_VECT(RTC_PRI, 0x4a0), INTC_VECT(RTC_CUI, 0x4c0), | ||
123 | INTC_VECT(SIM_ERI, 0x4e0), INTC_VECT(SIM_RXI, 0x500), | ||
124 | INTC_VECT(SIM_TXI, 0x520), INTC_VECT(SIM_TEND, 0x540), | ||
125 | INTC_VECT(WDT, 0x560), INTC_VECT(REF_RCMI, 0x580), | ||
126 | /* H_UDI cannot be masked */ INTC_VECT(TMU_SUNI, 0x6c0), | ||
127 | INTC_VECT(USBF_SPD, 0x6e0), INTC_VECT(DMAC1_DEI0, 0x800), | ||
128 | INTC_VECT(DMAC1_DEI1, 0x820), INTC_VECT(DMAC1_DEI2, 0x840), | ||
129 | INTC_VECT(DMAC1_DEI3, 0x860), INTC_VECT(LCDC, 0x900), | ||
130 | INTC_VECT(SSL, 0x980), INTC_VECT(USBFI0, 0xa20), | ||
131 | INTC_VECT(USBFI1, 0xa40), INTC_VECT(USBHI, 0xa60), | ||
132 | INTC_VECT(DMAC2_DEI4, 0xb80), INTC_VECT(DMAC2_DEI5, 0xba0), | ||
133 | INTC_VECT(ADC, 0xbe0), INTC_VECT(SCIF0, 0xc00), | ||
134 | INTC_VECT(SCIF1, 0xc20), INTC_VECT(PINT07, 0xc80), | ||
135 | INTC_VECT(PINT815, 0xca0), INTC_VECT(SIOF0, 0xd00), | ||
136 | INTC_VECT(SIOF1, 0xd20), INTC_VECT(TPU0, 0xd80), | ||
137 | INTC_VECT(TPU1, 0xda0), INTC_VECT(TPU2, 0xdc0), | ||
138 | INTC_VECT(TPU3, 0xde0), INTC_VECT(IIC, 0xe00), | ||
139 | INTC_VECT(MMCI0, 0xe80), INTC_VECT(MMCI1, 0xea0), | ||
140 | INTC_VECT(MMCI2, 0xec0), INTC_VECT(MMCI3, 0xee0), | ||
141 | INTC_VECT(CMT, 0xf00), INTC_VECT(PCC, 0xf60), | ||
142 | INTC_VECT(AFEIF, 0xfe0), | ||
143 | }; | ||
144 | |||
145 | static struct intc_group groups[] __initdata = { | ||
146 | INTC_GROUP(TMU, TMU0, TMU1, TMU2), | ||
147 | INTC_GROUP(RTC, RTC_ATI, RTC_PRI, RTC_CUI), | ||
148 | INTC_GROUP(SIM, SIM_ERI, SIM_RXI, SIM_TXI, SIM_TEND), | ||
149 | INTC_GROUP(DMAC1, DMAC1_DEI0, DMAC1_DEI1, DMAC1_DEI2, DMAC1_DEI3), | ||
150 | INTC_GROUP(USBFI, USBFI0, USBFI1), | ||
151 | INTC_GROUP(DMAC2, DMAC2_DEI4, DMAC2_DEI5), | ||
152 | INTC_GROUP(TPU, TPU0, TPU1, TPU2, TPU3), | ||
153 | INTC_GROUP(MMC, MMCI0, MMCI1, MMCI2, MMCI3), | ||
154 | }; | ||
155 | |||
156 | static struct intc_prio priorities[] __initdata = { | ||
157 | INTC_PRIO(SCIF0, 2), | ||
158 | INTC_PRIO(SCIF1, 2), | ||
159 | INTC_PRIO(DMAC1, 1), | ||
160 | INTC_PRIO(DMAC2, 1), | ||
161 | INTC_PRIO(RTC, 2), | ||
162 | INTC_PRIO(TMU, 2), | ||
163 | INTC_PRIO(TPU, 2), | ||
164 | }; | ||
165 | |||
166 | static struct intc_prio_reg prio_registers[] __initdata = { | ||
167 | { 0xA414FEE2UL, 0, 16, 4, /* IPRA */ { TMU0, TMU1, TMU2, RTC } }, | ||
168 | { 0xA414FEE4UL, 0, 16, 4, /* IPRB */ { WDT, REF_RCMI, SIM, 0 } }, | ||
169 | { 0xA4140016UL, 0, 16, 4, /* IPRC */ { IRQ3, IRQ2, IRQ1, IRQ0 } }, | ||
170 | { 0xA4140018UL, 0, 16, 4, /* IPRD */ { USBF_SPD, TMU_SUNI, IRQ5, IRQ4 } }, | ||
171 | { 0xA414001AUL, 0, 16, 4, /* IPRE */ { DMAC1, 0, LCDC, SSL } }, | ||
172 | { 0xA4080000UL, 0, 16, 4, /* IPRF */ { ADC, DMAC2, USBFI, CMT } }, | ||
173 | { 0xA4080002UL, 0, 16, 4, /* IPRG */ { SCIF0, SCIF1, 0, 0 } }, | ||
174 | { 0xA4080004UL, 0, 16, 4, /* IPRH */ { PINT07, PINT815, TPU, IIC } }, | ||
175 | { 0xA4080006UL, 0, 16, 4, /* IPRI */ { SIOF0, SIOF1, MMC, PCC } }, | ||
176 | { 0xA4080008UL, 0, 16, 4, /* IPRJ */ { 0, USBHI, 0, AFEIF } }, | ||
177 | }; | ||
178 | |||
179 | static DECLARE_INTC_DESC(intc_desc, "sh7720", vectors, groups, | ||
180 | priorities, NULL, prio_registers, NULL); | ||
181 | |||
182 | static struct intc_sense_reg sense_registers[] __initdata = { | ||
183 | { INTC_ICR1, 16, 2, { 0, 0, IRQ5, IRQ4, IRQ3, IRQ2, IRQ1, IRQ0 } }, | ||
184 | }; | ||
185 | |||
186 | static struct intc_vect vectors_irq[] __initdata = { | ||
187 | INTC_VECT(IRQ0, 0x600), INTC_VECT(IRQ1, 0x620), | ||
188 | INTC_VECT(IRQ2, 0x640), INTC_VECT(IRQ3, 0x660), | ||
189 | INTC_VECT(IRQ4, 0x680), INTC_VECT(IRQ5, 0x6a0), | ||
190 | }; | ||
191 | |||
192 | static DECLARE_INTC_DESC(intc_irq_desc, "sh7720-irq", vectors_irq, | ||
193 | NULL, priorities, NULL, prio_registers, sense_registers); | ||
194 | |||
195 | void __init plat_irq_setup_pins(int mode) | ||
196 | { | ||
197 | switch (mode) { | ||
198 | case IRQ_MODE_IRQ: | ||
199 | ctrl_outw(ctrl_inw(INTC_ICR1) & INTC_ICR_IRQ, INTC_ICR1); | ||
200 | register_intc_controller(&intc_irq_desc); | ||
201 | break; | ||
202 | default: | ||
203 | BUG(); | ||
204 | } | ||
205 | } | ||
206 | |||
207 | void __init plat_irq_setup(void) | ||
208 | { | ||
209 | register_intc_controller(&intc_desc); | ||
210 | } | ||
diff --git a/arch/sh/kernel/cpu/sh4/probe.c b/arch/sh/kernel/cpu/sh4/probe.c index 98d28fb1ce16..21375d777e99 100644 --- a/arch/sh/kernel/cpu/sh4/probe.c +++ b/arch/sh/kernel/cpu/sh4/probe.c | |||
@@ -3,7 +3,7 @@ | |||
3 | * | 3 | * |
4 | * CPU Subtype Probing for SH-4. | 4 | * CPU Subtype Probing for SH-4. |
5 | * | 5 | * |
6 | * Copyright (C) 2001 - 2006 Paul Mundt | 6 | * Copyright (C) 2001 - 2007 Paul Mundt |
7 | * Copyright (C) 2003 Richard Curnow | 7 | * Copyright (C) 2003 Richard Curnow |
8 | * | 8 | * |
9 | * This file is subject to the terms and conditions of the GNU General Public | 9 | * This file is subject to the terms and conditions of the GNU General Public |
@@ -12,7 +12,6 @@ | |||
12 | */ | 12 | */ |
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
15 | #include <linux/smp.h> | ||
16 | #include <asm/processor.h> | 15 | #include <asm/processor.h> |
17 | #include <asm/cache.h> | 16 | #include <asm/cache.h> |
18 | 17 | ||
@@ -36,37 +35,34 @@ int __init detect_cpu_and_cache_system(void) | |||
36 | /* | 35 | /* |
37 | * Setup some sane SH-4 defaults for the icache | 36 | * Setup some sane SH-4 defaults for the icache |
38 | */ | 37 | */ |
39 | current_cpu_data.icache.way_incr = (1 << 13); | 38 | boot_cpu_data.icache.way_incr = (1 << 13); |
40 | current_cpu_data.icache.entry_shift = 5; | 39 | boot_cpu_data.icache.entry_shift = 5; |
41 | current_cpu_data.icache.sets = 256; | 40 | boot_cpu_data.icache.sets = 256; |
42 | current_cpu_data.icache.ways = 1; | 41 | boot_cpu_data.icache.ways = 1; |
43 | current_cpu_data.icache.linesz = L1_CACHE_BYTES; | 42 | boot_cpu_data.icache.linesz = L1_CACHE_BYTES; |
44 | 43 | ||
45 | /* | 44 | /* |
46 | * And again for the dcache .. | 45 | * And again for the dcache .. |
47 | */ | 46 | */ |
48 | current_cpu_data.dcache.way_incr = (1 << 14); | 47 | boot_cpu_data.dcache.way_incr = (1 << 14); |
49 | current_cpu_data.dcache.entry_shift = 5; | 48 | boot_cpu_data.dcache.entry_shift = 5; |
50 | current_cpu_data.dcache.sets = 512; | 49 | boot_cpu_data.dcache.sets = 512; |
51 | current_cpu_data.dcache.ways = 1; | 50 | boot_cpu_data.dcache.ways = 1; |
52 | current_cpu_data.dcache.linesz = L1_CACHE_BYTES; | 51 | boot_cpu_data.dcache.linesz = L1_CACHE_BYTES; |
53 | 52 | ||
54 | /* | 53 | /* |
55 | * Setup some generic flags we can probe | 54 | * Setup some generic flags we can probe on SH-4A parts |
56 | * (L2 and DSP detection only work on SH-4A) | ||
57 | */ | 55 | */ |
58 | if (((pvr >> 16) & 0xff) == 0x10) { | 56 | if (((pvr >> 16) & 0xff) == 0x10) { |
59 | if ((cvr & 0x02000000) == 0) | ||
60 | current_cpu_data.flags |= CPU_HAS_L2_CACHE; | ||
61 | if ((cvr & 0x10000000) == 0) | 57 | if ((cvr & 0x10000000) == 0) |
62 | current_cpu_data.flags |= CPU_HAS_DSP; | 58 | boot_cpu_data.flags |= CPU_HAS_DSP; |
63 | 59 | ||
64 | current_cpu_data.flags |= CPU_HAS_LLSC; | 60 | boot_cpu_data.flags |= CPU_HAS_LLSC; |
65 | } | 61 | } |
66 | 62 | ||
67 | /* FPU detection works for everyone */ | 63 | /* FPU detection works for everyone */ |
68 | if ((cvr & 0x20000000) == 1) | 64 | if ((cvr & 0x20000000) == 1) |
69 | current_cpu_data.flags |= CPU_HAS_FPU; | 65 | boot_cpu_data.flags |= CPU_HAS_FPU; |
70 | 66 | ||
71 | /* Mask off the upper chip ID */ | 67 | /* Mask off the upper chip ID */ |
72 | pvr &= 0xffff; | 68 | pvr &= 0xffff; |
@@ -77,140 +73,140 @@ int __init detect_cpu_and_cache_system(void) | |||
77 | */ | 73 | */ |
78 | switch (pvr) { | 74 | switch (pvr) { |
79 | case 0x205: | 75 | case 0x205: |
80 | current_cpu_data.type = CPU_SH7750; | 76 | boot_cpu_data.type = CPU_SH7750; |
81 | current_cpu_data.flags |= CPU_HAS_P2_FLUSH_BUG | CPU_HAS_FPU | | 77 | boot_cpu_data.flags |= CPU_HAS_P2_FLUSH_BUG | CPU_HAS_FPU | |
82 | CPU_HAS_PERF_COUNTER; | 78 | CPU_HAS_PERF_COUNTER; |
83 | break; | 79 | break; |
84 | case 0x206: | 80 | case 0x206: |
85 | current_cpu_data.type = CPU_SH7750S; | 81 | boot_cpu_data.type = CPU_SH7750S; |
86 | current_cpu_data.flags |= CPU_HAS_P2_FLUSH_BUG | CPU_HAS_FPU | | 82 | boot_cpu_data.flags |= CPU_HAS_P2_FLUSH_BUG | CPU_HAS_FPU | |
87 | CPU_HAS_PERF_COUNTER; | 83 | CPU_HAS_PERF_COUNTER; |
88 | break; | 84 | break; |
89 | case 0x1100: | 85 | case 0x1100: |
90 | current_cpu_data.type = CPU_SH7751; | 86 | boot_cpu_data.type = CPU_SH7751; |
91 | current_cpu_data.flags |= CPU_HAS_FPU; | 87 | boot_cpu_data.flags |= CPU_HAS_FPU; |
92 | break; | 88 | break; |
93 | case 0x2001: | 89 | case 0x2001: |
94 | case 0x2004: | 90 | case 0x2004: |
95 | current_cpu_data.type = CPU_SH7770; | 91 | boot_cpu_data.type = CPU_SH7770; |
96 | current_cpu_data.icache.ways = 4; | 92 | boot_cpu_data.icache.ways = 4; |
97 | current_cpu_data.dcache.ways = 4; | 93 | boot_cpu_data.dcache.ways = 4; |
98 | 94 | ||
99 | current_cpu_data.flags |= CPU_HAS_FPU | CPU_HAS_LLSC; | 95 | boot_cpu_data.flags |= CPU_HAS_FPU | CPU_HAS_LLSC; |
100 | break; | 96 | break; |
101 | case 0x2006: | 97 | case 0x2006: |
102 | case 0x200A: | 98 | case 0x200A: |
103 | if (prr == 0x61) | 99 | if (prr == 0x61) |
104 | current_cpu_data.type = CPU_SH7781; | 100 | boot_cpu_data.type = CPU_SH7781; |
105 | else | 101 | else |
106 | current_cpu_data.type = CPU_SH7780; | 102 | boot_cpu_data.type = CPU_SH7780; |
107 | 103 | ||
108 | current_cpu_data.icache.ways = 4; | 104 | boot_cpu_data.icache.ways = 4; |
109 | current_cpu_data.dcache.ways = 4; | 105 | boot_cpu_data.dcache.ways = 4; |
110 | 106 | ||
111 | current_cpu_data.flags |= CPU_HAS_FPU | CPU_HAS_PERF_COUNTER | | 107 | boot_cpu_data.flags |= CPU_HAS_FPU | CPU_HAS_PERF_COUNTER | |
112 | CPU_HAS_LLSC; | 108 | CPU_HAS_LLSC; |
113 | break; | 109 | break; |
114 | case 0x3000: | 110 | case 0x3000: |
115 | case 0x3003: | 111 | case 0x3003: |
116 | case 0x3009: | 112 | case 0x3009: |
117 | current_cpu_data.type = CPU_SH7343; | 113 | boot_cpu_data.type = CPU_SH7343; |
118 | current_cpu_data.icache.ways = 4; | 114 | boot_cpu_data.icache.ways = 4; |
119 | current_cpu_data.dcache.ways = 4; | 115 | boot_cpu_data.dcache.ways = 4; |
120 | current_cpu_data.flags |= CPU_HAS_LLSC; | 116 | boot_cpu_data.flags |= CPU_HAS_LLSC; |
121 | break; | 117 | break; |
122 | case 0x3004: | 118 | case 0x3004: |
123 | case 0x3007: | 119 | case 0x3007: |
124 | current_cpu_data.type = CPU_SH7785; | 120 | boot_cpu_data.type = CPU_SH7785; |
125 | current_cpu_data.icache.ways = 4; | 121 | boot_cpu_data.icache.ways = 4; |
126 | current_cpu_data.dcache.ways = 4; | 122 | boot_cpu_data.dcache.ways = 4; |
127 | current_cpu_data.flags |= CPU_HAS_FPU | CPU_HAS_PERF_COUNTER | | 123 | boot_cpu_data.flags |= CPU_HAS_FPU | CPU_HAS_PERF_COUNTER | |
128 | CPU_HAS_LLSC; | 124 | CPU_HAS_LLSC; |
129 | break; | 125 | break; |
130 | case 0x3008: | 126 | case 0x3008: |
131 | if (prr == 0xa0) { | 127 | if (prr == 0xa0) { |
132 | current_cpu_data.type = CPU_SH7722; | 128 | boot_cpu_data.type = CPU_SH7722; |
133 | current_cpu_data.icache.ways = 4; | 129 | boot_cpu_data.icache.ways = 4; |
134 | current_cpu_data.dcache.ways = 4; | 130 | boot_cpu_data.dcache.ways = 4; |
135 | current_cpu_data.flags |= CPU_HAS_LLSC; | 131 | boot_cpu_data.flags |= CPU_HAS_LLSC; |
136 | } | 132 | } |
137 | break; | 133 | break; |
138 | case 0x4000: /* 1st cut */ | 134 | case 0x4000: /* 1st cut */ |
139 | case 0x4001: /* 2nd cut */ | 135 | case 0x4001: /* 2nd cut */ |
140 | current_cpu_data.type = CPU_SHX3; | 136 | boot_cpu_data.type = CPU_SHX3; |
141 | current_cpu_data.icache.ways = 4; | 137 | boot_cpu_data.icache.ways = 4; |
142 | current_cpu_data.dcache.ways = 4; | 138 | boot_cpu_data.dcache.ways = 4; |
143 | current_cpu_data.flags |= CPU_HAS_FPU | CPU_HAS_PERF_COUNTER | | 139 | boot_cpu_data.flags |= CPU_HAS_FPU | CPU_HAS_PERF_COUNTER | |
144 | CPU_HAS_LLSC; | 140 | CPU_HAS_LLSC; |
145 | break; | 141 | break; |
146 | case 0x8000: | 142 | case 0x8000: |
147 | current_cpu_data.type = CPU_ST40RA; | 143 | boot_cpu_data.type = CPU_ST40RA; |
148 | current_cpu_data.flags |= CPU_HAS_FPU; | 144 | boot_cpu_data.flags |= CPU_HAS_FPU; |
149 | break; | 145 | break; |
150 | case 0x8100: | 146 | case 0x8100: |
151 | current_cpu_data.type = CPU_ST40GX1; | 147 | boot_cpu_data.type = CPU_ST40GX1; |
152 | current_cpu_data.flags |= CPU_HAS_FPU; | 148 | boot_cpu_data.flags |= CPU_HAS_FPU; |
153 | break; | 149 | break; |
154 | case 0x700: | 150 | case 0x700: |
155 | current_cpu_data.type = CPU_SH4_501; | 151 | boot_cpu_data.type = CPU_SH4_501; |
156 | current_cpu_data.icache.ways = 2; | 152 | boot_cpu_data.icache.ways = 2; |
157 | current_cpu_data.dcache.ways = 2; | 153 | boot_cpu_data.dcache.ways = 2; |
158 | break; | 154 | break; |
159 | case 0x600: | 155 | case 0x600: |
160 | current_cpu_data.type = CPU_SH4_202; | 156 | boot_cpu_data.type = CPU_SH4_202; |
161 | current_cpu_data.icache.ways = 2; | 157 | boot_cpu_data.icache.ways = 2; |
162 | current_cpu_data.dcache.ways = 2; | 158 | boot_cpu_data.dcache.ways = 2; |
163 | current_cpu_data.flags |= CPU_HAS_FPU; | 159 | boot_cpu_data.flags |= CPU_HAS_FPU; |
164 | break; | 160 | break; |
165 | case 0x500 ... 0x501: | 161 | case 0x500 ... 0x501: |
166 | switch (prr) { | 162 | switch (prr) { |
167 | case 0x10: | 163 | case 0x10: |
168 | current_cpu_data.type = CPU_SH7750R; | 164 | boot_cpu_data.type = CPU_SH7750R; |
169 | break; | 165 | break; |
170 | case 0x11: | 166 | case 0x11: |
171 | current_cpu_data.type = CPU_SH7751R; | 167 | boot_cpu_data.type = CPU_SH7751R; |
172 | break; | 168 | break; |
173 | case 0x50 ... 0x5f: | 169 | case 0x50 ... 0x5f: |
174 | current_cpu_data.type = CPU_SH7760; | 170 | boot_cpu_data.type = CPU_SH7760; |
175 | break; | 171 | break; |
176 | } | 172 | } |
177 | 173 | ||
178 | current_cpu_data.icache.ways = 2; | 174 | boot_cpu_data.icache.ways = 2; |
179 | current_cpu_data.dcache.ways = 2; | 175 | boot_cpu_data.dcache.ways = 2; |
180 | 176 | ||
181 | current_cpu_data.flags |= CPU_HAS_FPU; | 177 | boot_cpu_data.flags |= CPU_HAS_FPU; |
182 | 178 | ||
183 | break; | 179 | break; |
184 | default: | 180 | default: |
185 | current_cpu_data.type = CPU_SH_NONE; | 181 | boot_cpu_data.type = CPU_SH_NONE; |
186 | break; | 182 | break; |
187 | } | 183 | } |
188 | 184 | ||
189 | #ifdef CONFIG_SH_DIRECT_MAPPED | 185 | #ifdef CONFIG_SH_DIRECT_MAPPED |
190 | current_cpu_data.icache.ways = 1; | 186 | boot_cpu_data.icache.ways = 1; |
191 | current_cpu_data.dcache.ways = 1; | 187 | boot_cpu_data.dcache.ways = 1; |
192 | #endif | 188 | #endif |
193 | 189 | ||
194 | #ifdef CONFIG_CPU_HAS_PTEA | 190 | #ifdef CONFIG_CPU_HAS_PTEA |
195 | current_cpu_data.flags |= CPU_HAS_PTEA; | 191 | boot_cpu_data.flags |= CPU_HAS_PTEA; |
196 | #endif | 192 | #endif |
197 | 193 | ||
198 | /* | 194 | /* |
199 | * On anything that's not a direct-mapped cache, look to the CVR | 195 | * On anything that's not a direct-mapped cache, look to the CVR |
200 | * for I/D-cache specifics. | 196 | * for I/D-cache specifics. |
201 | */ | 197 | */ |
202 | if (current_cpu_data.icache.ways > 1) { | 198 | if (boot_cpu_data.icache.ways > 1) { |
203 | size = sizes[(cvr >> 20) & 0xf]; | 199 | size = sizes[(cvr >> 20) & 0xf]; |
204 | current_cpu_data.icache.way_incr = (size >> 1); | 200 | boot_cpu_data.icache.way_incr = (size >> 1); |
205 | current_cpu_data.icache.sets = (size >> 6); | 201 | boot_cpu_data.icache.sets = (size >> 6); |
206 | 202 | ||
207 | } | 203 | } |
208 | 204 | ||
209 | /* And the rest of the D-cache */ | 205 | /* And the rest of the D-cache */ |
210 | if (current_cpu_data.dcache.ways > 1) { | 206 | if (boot_cpu_data.dcache.ways > 1) { |
211 | size = sizes[(cvr >> 16) & 0xf]; | 207 | size = sizes[(cvr >> 16) & 0xf]; |
212 | current_cpu_data.dcache.way_incr = (size >> 1); | 208 | boot_cpu_data.dcache.way_incr = (size >> 1); |
213 | current_cpu_data.dcache.sets = (size >> 6); | 209 | boot_cpu_data.dcache.sets = (size >> 6); |
214 | } | 210 | } |
215 | 211 | ||
216 | /* | 212 | /* |
@@ -218,7 +214,7 @@ int __init detect_cpu_and_cache_system(void) | |||
218 | * | 214 | * |
219 | * SH-4A's have an optional PIPT L2. | 215 | * SH-4A's have an optional PIPT L2. |
220 | */ | 216 | */ |
221 | if (current_cpu_data.flags & CPU_HAS_L2_CACHE) { | 217 | if (boot_cpu_data.flags & CPU_HAS_L2_CACHE) { |
222 | /* | 218 | /* |
223 | * Size calculation is much more sensible | 219 | * Size calculation is much more sensible |
224 | * than it is for the L1. | 220 | * than it is for the L1. |
@@ -229,22 +225,22 @@ int __init detect_cpu_and_cache_system(void) | |||
229 | 225 | ||
230 | BUG_ON(!size); | 226 | BUG_ON(!size); |
231 | 227 | ||
232 | current_cpu_data.scache.way_incr = (1 << 16); | 228 | boot_cpu_data.scache.way_incr = (1 << 16); |
233 | current_cpu_data.scache.entry_shift = 5; | 229 | boot_cpu_data.scache.entry_shift = 5; |
234 | current_cpu_data.scache.ways = 4; | 230 | boot_cpu_data.scache.ways = 4; |
235 | current_cpu_data.scache.linesz = L1_CACHE_BYTES; | 231 | boot_cpu_data.scache.linesz = L1_CACHE_BYTES; |
236 | 232 | ||
237 | current_cpu_data.scache.entry_mask = | 233 | boot_cpu_data.scache.entry_mask = |
238 | (current_cpu_data.scache.way_incr - | 234 | (boot_cpu_data.scache.way_incr - |
239 | current_cpu_data.scache.linesz); | 235 | boot_cpu_data.scache.linesz); |
240 | 236 | ||
241 | current_cpu_data.scache.sets = size / | 237 | boot_cpu_data.scache.sets = size / |
242 | (current_cpu_data.scache.linesz * | 238 | (boot_cpu_data.scache.linesz * |
243 | current_cpu_data.scache.ways); | 239 | boot_cpu_data.scache.ways); |
244 | 240 | ||
245 | current_cpu_data.scache.way_size = | 241 | boot_cpu_data.scache.way_size = |
246 | (current_cpu_data.scache.sets * | 242 | (boot_cpu_data.scache.sets * |
247 | current_cpu_data.scache.linesz); | 243 | boot_cpu_data.scache.linesz); |
248 | } | 244 | } |
249 | 245 | ||
250 | return 0; | 246 | return 0; |
diff --git a/arch/sh/kernel/cpu/sh4/setup-sh7750.c b/arch/sh/kernel/cpu/sh4/setup-sh7750.c index f2286de22bd5..523f68a9ce0e 100644 --- a/arch/sh/kernel/cpu/sh4/setup-sh7750.c +++ b/arch/sh/kernel/cpu/sh4/setup-sh7750.c | |||
@@ -104,7 +104,7 @@ enum { | |||
104 | DMAC, PCIC1, TMU2, RTC, SCI1, SCIF, REF, | 104 | DMAC, PCIC1, TMU2, RTC, SCI1, SCIF, REF, |
105 | }; | 105 | }; |
106 | 106 | ||
107 | static struct intc_vect vectors[] = { | 107 | static struct intc_vect vectors[] __initdata = { |
108 | INTC_VECT(HUDI, 0x600), INTC_VECT(GPIOI, 0x620), | 108 | INTC_VECT(HUDI, 0x600), INTC_VECT(GPIOI, 0x620), |
109 | INTC_VECT(TMU0, 0x400), INTC_VECT(TMU1, 0x420), | 109 | INTC_VECT(TMU0, 0x400), INTC_VECT(TMU1, 0x420), |
110 | INTC_VECT(TMU2_TUNI, 0x440), INTC_VECT(TMU2_TICPI, 0x460), | 110 | INTC_VECT(TMU2_TUNI, 0x440), INTC_VECT(TMU2_TICPI, 0x460), |
@@ -118,7 +118,7 @@ static struct intc_vect vectors[] = { | |||
118 | INTC_VECT(REF_RCMI, 0x580), INTC_VECT(REF_ROVI, 0x5a0), | 118 | INTC_VECT(REF_RCMI, 0x580), INTC_VECT(REF_ROVI, 0x5a0), |
119 | }; | 119 | }; |
120 | 120 | ||
121 | static struct intc_group groups[] = { | 121 | static struct intc_group groups[] __initdata = { |
122 | INTC_GROUP(TMU2, TMU2_TUNI, TMU2_TICPI), | 122 | INTC_GROUP(TMU2, TMU2_TUNI, TMU2_TICPI), |
123 | INTC_GROUP(RTC, RTC_ATI, RTC_PRI, RTC_CUI), | 123 | INTC_GROUP(RTC, RTC_ATI, RTC_PRI, RTC_CUI), |
124 | INTC_GROUP(SCI1, SCI1_ERI, SCI1_RXI, SCI1_TXI, SCI1_TEI), | 124 | INTC_GROUP(SCI1, SCI1_ERI, SCI1_RXI, SCI1_TXI, SCI1_TEI), |
@@ -126,20 +126,20 @@ static struct intc_group groups[] = { | |||
126 | INTC_GROUP(REF, REF_RCMI, REF_ROVI), | 126 | INTC_GROUP(REF, REF_RCMI, REF_ROVI), |
127 | }; | 127 | }; |
128 | 128 | ||
129 | static struct intc_prio priorities[] = { | 129 | static struct intc_prio priorities[] __initdata = { |
130 | INTC_PRIO(SCIF, 3), | 130 | INTC_PRIO(SCIF, 3), |
131 | INTC_PRIO(SCI1, 3), | 131 | INTC_PRIO(SCI1, 3), |
132 | INTC_PRIO(DMAC, 7), | 132 | INTC_PRIO(DMAC, 7), |
133 | }; | 133 | }; |
134 | 134 | ||
135 | static struct intc_prio_reg prio_registers[] = { | 135 | static struct intc_prio_reg prio_registers[] __initdata = { |
136 | { 0xffd00004, 16, 4, /* IPRA */ { TMU0, TMU1, TMU2, RTC } }, | 136 | { 0xffd00004, 0, 16, 4, /* IPRA */ { TMU0, TMU1, TMU2, RTC } }, |
137 | { 0xffd00008, 16, 4, /* IPRB */ { WDT, REF, SCI1, 0 } }, | 137 | { 0xffd00008, 0, 16, 4, /* IPRB */ { WDT, REF, SCI1, 0 } }, |
138 | { 0xffd0000c, 16, 4, /* IPRC */ { GPIOI, DMAC, SCIF, HUDI } }, | 138 | { 0xffd0000c, 0, 16, 4, /* IPRC */ { GPIOI, DMAC, SCIF, HUDI } }, |
139 | { 0xffd00010, 16, 4, /* IPRD */ { IRL0, IRL1, IRL2, IRL3 } }, | 139 | { 0xffd00010, 0, 16, 4, /* IPRD */ { IRL0, IRL1, IRL2, IRL3 } }, |
140 | { 0xfe080000, 32, 4, /* INTPRI00 */ { 0, 0, 0, 0, | 140 | { 0xfe080000, 0, 32, 4, /* INTPRI00 */ { 0, 0, 0, 0, |
141 | TMU4, TMU3, | 141 | TMU4, TMU3, |
142 | PCIC1, PCIC0_PCISERR } }, | 142 | PCIC1, PCIC0_PCISERR } }, |
143 | }; | 143 | }; |
144 | 144 | ||
145 | static DECLARE_INTC_DESC(intc_desc, "sh7750", vectors, groups, | 145 | static DECLARE_INTC_DESC(intc_desc, "sh7750", vectors, groups, |
@@ -150,13 +150,13 @@ static DECLARE_INTC_DESC(intc_desc, "sh7750", vectors, groups, | |||
150 | defined(CONFIG_CPU_SUBTYPE_SH7750S) || \ | 150 | defined(CONFIG_CPU_SUBTYPE_SH7750S) || \ |
151 | defined(CONFIG_CPU_SUBTYPE_SH7751) || \ | 151 | defined(CONFIG_CPU_SUBTYPE_SH7751) || \ |
152 | defined(CONFIG_CPU_SUBTYPE_SH7091) | 152 | defined(CONFIG_CPU_SUBTYPE_SH7091) |
153 | static struct intc_vect vectors_dma4[] = { | 153 | static struct intc_vect vectors_dma4[] __initdata = { |
154 | INTC_VECT(DMAC_DMTE0, 0x640), INTC_VECT(DMAC_DMTE1, 0x660), | 154 | INTC_VECT(DMAC_DMTE0, 0x640), INTC_VECT(DMAC_DMTE1, 0x660), |
155 | INTC_VECT(DMAC_DMTE2, 0x680), INTC_VECT(DMAC_DMTE3, 0x6a0), | 155 | INTC_VECT(DMAC_DMTE2, 0x680), INTC_VECT(DMAC_DMTE3, 0x6a0), |
156 | INTC_VECT(DMAC_DMAE, 0x6c0), | 156 | INTC_VECT(DMAC_DMAE, 0x6c0), |
157 | }; | 157 | }; |
158 | 158 | ||
159 | static struct intc_group groups_dma4[] = { | 159 | static struct intc_group groups_dma4[] __initdata = { |
160 | INTC_GROUP(DMAC, DMAC_DMTE0, DMAC_DMTE1, DMAC_DMTE2, | 160 | INTC_GROUP(DMAC, DMAC_DMTE0, DMAC_DMTE1, DMAC_DMTE2, |
161 | DMAC_DMTE3, DMAC_DMAE), | 161 | DMAC_DMTE3, DMAC_DMAE), |
162 | }; | 162 | }; |
@@ -168,7 +168,7 @@ static DECLARE_INTC_DESC(intc_desc_dma4, "sh7750_dma4", | |||
168 | 168 | ||
169 | /* SH7750R and SH7751R both have 8-channel DMA controllers */ | 169 | /* SH7750R and SH7751R both have 8-channel DMA controllers */ |
170 | #if defined(CONFIG_CPU_SUBTYPE_SH7750R) || defined(CONFIG_CPU_SUBTYPE_SH7751R) | 170 | #if defined(CONFIG_CPU_SUBTYPE_SH7750R) || defined(CONFIG_CPU_SUBTYPE_SH7751R) |
171 | static struct intc_vect vectors_dma8[] = { | 171 | static struct intc_vect vectors_dma8[] __initdata = { |
172 | INTC_VECT(DMAC_DMTE0, 0x640), INTC_VECT(DMAC_DMTE1, 0x660), | 172 | INTC_VECT(DMAC_DMTE0, 0x640), INTC_VECT(DMAC_DMTE1, 0x660), |
173 | INTC_VECT(DMAC_DMTE2, 0x680), INTC_VECT(DMAC_DMTE3, 0x6a0), | 173 | INTC_VECT(DMAC_DMTE2, 0x680), INTC_VECT(DMAC_DMTE3, 0x6a0), |
174 | INTC_VECT(DMAC_DMTE4, 0x780), INTC_VECT(DMAC_DMTE5, 0x7a0), | 174 | INTC_VECT(DMAC_DMTE4, 0x780), INTC_VECT(DMAC_DMTE5, 0x7a0), |
@@ -176,7 +176,7 @@ static struct intc_vect vectors_dma8[] = { | |||
176 | INTC_VECT(DMAC_DMAE, 0x6c0), | 176 | INTC_VECT(DMAC_DMAE, 0x6c0), |
177 | }; | 177 | }; |
178 | 178 | ||
179 | static struct intc_group groups_dma8[] = { | 179 | static struct intc_group groups_dma8[] __initdata = { |
180 | INTC_GROUP(DMAC, DMAC_DMTE0, DMAC_DMTE1, DMAC_DMTE2, | 180 | INTC_GROUP(DMAC, DMAC_DMTE0, DMAC_DMTE1, DMAC_DMTE2, |
181 | DMAC_DMTE3, DMAC_DMTE4, DMAC_DMTE5, | 181 | DMAC_DMTE3, DMAC_DMTE4, DMAC_DMTE5, |
182 | DMAC_DMTE6, DMAC_DMTE7, DMAC_DMAE), | 182 | DMAC_DMTE6, DMAC_DMTE7, DMAC_DMAE), |
@@ -191,11 +191,11 @@ static DECLARE_INTC_DESC(intc_desc_dma8, "sh7750_dma8", | |||
191 | #if defined(CONFIG_CPU_SUBTYPE_SH7750R) || \ | 191 | #if defined(CONFIG_CPU_SUBTYPE_SH7750R) || \ |
192 | defined(CONFIG_CPU_SUBTYPE_SH7751) || \ | 192 | defined(CONFIG_CPU_SUBTYPE_SH7751) || \ |
193 | defined(CONFIG_CPU_SUBTYPE_SH7751R) | 193 | defined(CONFIG_CPU_SUBTYPE_SH7751R) |
194 | static struct intc_vect vectors_tmu34[] = { | 194 | static struct intc_vect vectors_tmu34[] __initdata = { |
195 | INTC_VECT(TMU3, 0xb00), INTC_VECT(TMU4, 0xb80), | 195 | INTC_VECT(TMU3, 0xb00), INTC_VECT(TMU4, 0xb80), |
196 | }; | 196 | }; |
197 | 197 | ||
198 | static struct intc_mask_reg mask_registers[] = { | 198 | static struct intc_mask_reg mask_registers[] __initdata = { |
199 | { 0xfe080040, 0xfe080060, 32, /* INTMSK00 / INTMSKCLR00 */ | 199 | { 0xfe080040, 0xfe080060, 32, /* INTMSK00 / INTMSKCLR00 */ |
200 | { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 200 | { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
201 | 0, 0, 0, 0, 0, 0, TMU4, TMU3, | 201 | 0, 0, 0, 0, 0, 0, TMU4, TMU3, |
@@ -210,7 +210,7 @@ static DECLARE_INTC_DESC(intc_desc_tmu34, "sh7750_tmu34", | |||
210 | #endif | 210 | #endif |
211 | 211 | ||
212 | /* SH7750S, SH7750R, SH7751 and SH7751R all have IRLM priority registers */ | 212 | /* SH7750S, SH7750R, SH7751 and SH7751R all have IRLM priority registers */ |
213 | static struct intc_vect vectors_irlm[] = { | 213 | static struct intc_vect vectors_irlm[] __initdata = { |
214 | INTC_VECT(IRL0, 0x240), INTC_VECT(IRL1, 0x2a0), | 214 | INTC_VECT(IRL0, 0x240), INTC_VECT(IRL1, 0x2a0), |
215 | INTC_VECT(IRL2, 0x300), INTC_VECT(IRL3, 0x360), | 215 | INTC_VECT(IRL2, 0x300), INTC_VECT(IRL3, 0x360), |
216 | }; | 216 | }; |
@@ -220,14 +220,14 @@ static DECLARE_INTC_DESC(intc_desc_irlm, "sh7750_irlm", vectors_irlm, NULL, | |||
220 | 220 | ||
221 | /* SH7751 and SH7751R both have PCI */ | 221 | /* SH7751 and SH7751R both have PCI */ |
222 | #if defined(CONFIG_CPU_SUBTYPE_SH7751) || defined(CONFIG_CPU_SUBTYPE_SH7751R) | 222 | #if defined(CONFIG_CPU_SUBTYPE_SH7751) || defined(CONFIG_CPU_SUBTYPE_SH7751R) |
223 | static struct intc_vect vectors_pci[] = { | 223 | static struct intc_vect vectors_pci[] __initdata = { |
224 | INTC_VECT(PCIC0_PCISERR, 0xa00), INTC_VECT(PCIC1_PCIERR, 0xae0), | 224 | INTC_VECT(PCIC0_PCISERR, 0xa00), INTC_VECT(PCIC1_PCIERR, 0xae0), |
225 | INTC_VECT(PCIC1_PCIPWDWN, 0xac0), INTC_VECT(PCIC1_PCIPWON, 0xaa0), | 225 | INTC_VECT(PCIC1_PCIPWDWN, 0xac0), INTC_VECT(PCIC1_PCIPWON, 0xaa0), |
226 | INTC_VECT(PCIC1_PCIDMA0, 0xa80), INTC_VECT(PCIC1_PCIDMA1, 0xa60), | 226 | INTC_VECT(PCIC1_PCIDMA0, 0xa80), INTC_VECT(PCIC1_PCIDMA1, 0xa60), |
227 | INTC_VECT(PCIC1_PCIDMA2, 0xa40), INTC_VECT(PCIC1_PCIDMA3, 0xa20), | 227 | INTC_VECT(PCIC1_PCIDMA2, 0xa40), INTC_VECT(PCIC1_PCIDMA3, 0xa20), |
228 | }; | 228 | }; |
229 | 229 | ||
230 | static struct intc_group groups_pci[] = { | 230 | static struct intc_group groups_pci[] __initdata = { |
231 | INTC_GROUP(PCIC1, PCIC1_PCIERR, PCIC1_PCIPWDWN, PCIC1_PCIPWON, | 231 | INTC_GROUP(PCIC1, PCIC1_PCIERR, PCIC1_PCIPWDWN, PCIC1_PCIPWON, |
232 | PCIC1_PCIDMA0, PCIC1_PCIDMA1, PCIC1_PCIDMA2, PCIC1_PCIDMA3), | 232 | PCIC1_PCIDMA0, PCIC1_PCIDMA1, PCIC1_PCIDMA2, PCIC1_PCIDMA3), |
233 | }; | 233 | }; |
@@ -282,13 +282,19 @@ void __init plat_irq_setup(void) | |||
282 | #define INTC_ICR 0xffd00000UL | 282 | #define INTC_ICR 0xffd00000UL |
283 | #define INTC_ICR_IRLM (1<<7) | 283 | #define INTC_ICR_IRLM (1<<7) |
284 | 284 | ||
285 | /* enable individual interrupt mode for external interupts */ | 285 | void __init plat_irq_setup_pins(int mode) |
286 | void __init ipr_irq_enable_irlm(void) | ||
287 | { | 286 | { |
288 | #if defined(CONFIG_CPU_SUBTYPE_SH7750) || defined(CONFIG_CPU_SUBTYPE_SH7091) | 287 | #if defined(CONFIG_CPU_SUBTYPE_SH7750) || defined(CONFIG_CPU_SUBTYPE_SH7091) |
289 | BUG(); /* impossible to mask interrupts on SH7750 and SH7091 */ | 288 | BUG(); /* impossible to mask interrupts on SH7750 and SH7091 */ |
289 | return; | ||
290 | #endif | 290 | #endif |
291 | register_intc_controller(&intc_desc_irlm); | ||
292 | 291 | ||
293 | ctrl_outw(ctrl_inw(INTC_ICR) | INTC_ICR_IRLM, INTC_ICR); | 292 | switch (mode) { |
293 | case IRQ_MODE_IRQ: /* individual interrupt mode for IRL3-0 */ | ||
294 | ctrl_outw(ctrl_inw(INTC_ICR) | INTC_ICR_IRLM, INTC_ICR); | ||
295 | register_intc_controller(&intc_desc_irlm); | ||
296 | break; | ||
297 | default: | ||
298 | BUG(); | ||
299 | } | ||
294 | } | 300 | } |
diff --git a/arch/sh/kernel/cpu/sh4/setup-sh7760.c b/arch/sh/kernel/cpu/sh4/setup-sh7760.c index 47fa27056253..7a898cb1d940 100644 --- a/arch/sh/kernel/cpu/sh4/setup-sh7760.c +++ b/arch/sh/kernel/cpu/sh4/setup-sh7760.c | |||
@@ -12,6 +12,136 @@ | |||
12 | #include <linux/serial.h> | 12 | #include <linux/serial.h> |
13 | #include <asm/sci.h> | 13 | #include <asm/sci.h> |
14 | 14 | ||
15 | enum { | ||
16 | UNUSED = 0, | ||
17 | |||
18 | /* interrupt sources */ | ||
19 | IRL0, IRL1, IRL2, IRL3, | ||
20 | HUDI, GPIOI, | ||
21 | DMAC_DMTE0, DMAC_DMTE1, DMAC_DMTE2, DMAC_DMTE3, | ||
22 | DMAC_DMTE4, DMAC_DMTE5, DMAC_DMTE6, DMAC_DMTE7, | ||
23 | DMAC_DMAE, | ||
24 | IRQ4, IRQ5, IRQ6, IRQ7, | ||
25 | HCAN20, HCAN21, | ||
26 | SSI0, SSI1, | ||
27 | HAC0, HAC1, | ||
28 | I2C0, I2C1, | ||
29 | USB, LCDC, | ||
30 | DMABRG0, DMABRG1, DMABRG2, | ||
31 | SCIF0_ERI, SCIF0_RXI, SCIF0_BRI, SCIF0_TXI, | ||
32 | SCIF1_ERI, SCIF1_RXI, SCIF1_BRI, SCIF1_TXI, | ||
33 | SCIF2_ERI, SCIF2_RXI, SCIF2_BRI, SCIF2_TXI, | ||
34 | SIM_ERI, SIM_RXI, SIM_TXI, SIM_TEI, | ||
35 | HSPI, | ||
36 | MMCIF0, MMCIF1, MMCIF2, MMCIF3, | ||
37 | MFI, ADC, CMT, | ||
38 | TMU0, TMU1, TMU2_TUNI, TMU2_TICPI, | ||
39 | WDT, | ||
40 | REF_RCMI, REF_ROVI, | ||
41 | |||
42 | /* interrupt groups */ | ||
43 | DMAC, DMABRG, SCIF0, SCIF1, SCIF2, SIM, MMCIF, TMU2, REF, | ||
44 | }; | ||
45 | |||
46 | static struct intc_vect vectors[] __initdata = { | ||
47 | INTC_VECT(HUDI, 0x600), INTC_VECT(GPIOI, 0x620), | ||
48 | INTC_VECT(DMAC_DMTE0, 0x640), INTC_VECT(DMAC_DMTE1, 0x660), | ||
49 | INTC_VECT(DMAC_DMTE2, 0x680), INTC_VECT(DMAC_DMTE3, 0x6a0), | ||
50 | INTC_VECT(DMAC_DMTE4, 0x780), INTC_VECT(DMAC_DMTE5, 0x7a0), | ||
51 | INTC_VECT(DMAC_DMTE6, 0x7c0), INTC_VECT(DMAC_DMTE7, 0x7e0), | ||
52 | INTC_VECT(DMAC_DMAE, 0x6c0), | ||
53 | INTC_VECT(IRQ4, 0x800), INTC_VECT(IRQ5, 0x820), | ||
54 | INTC_VECT(IRQ6, 0x840), INTC_VECT(IRQ6, 0x860), | ||
55 | INTC_VECT(HCAN20, 0x900), INTC_VECT(HCAN21, 0x920), | ||
56 | INTC_VECT(SSI0, 0x940), INTC_VECT(SSI1, 0x960), | ||
57 | INTC_VECT(HAC0, 0x980), INTC_VECT(HAC1, 0x9a0), | ||
58 | INTC_VECT(I2C0, 0x9c0), INTC_VECT(I2C1, 0x9e0), | ||
59 | INTC_VECT(USB, 0xa00), INTC_VECT(LCDC, 0xa20), | ||
60 | INTC_VECT(DMABRG0, 0xa80), INTC_VECT(DMABRG1, 0xaa0), | ||
61 | INTC_VECT(DMABRG2, 0xac0), | ||
62 | INTC_VECT(SCIF0_ERI, 0x880), INTC_VECT(SCIF0_RXI, 0x8a0), | ||
63 | INTC_VECT(SCIF0_BRI, 0x8c0), INTC_VECT(SCIF0_TXI, 0x8e0), | ||
64 | INTC_VECT(SCIF1_ERI, 0xb00), INTC_VECT(SCIF1_RXI, 0xb20), | ||
65 | INTC_VECT(SCIF1_BRI, 0xb40), INTC_VECT(SCIF1_TXI, 0xb60), | ||
66 | INTC_VECT(SCIF2_ERI, 0xb80), INTC_VECT(SCIF2_RXI, 0xba0), | ||
67 | INTC_VECT(SCIF2_BRI, 0xbc0), INTC_VECT(SCIF2_TXI, 0xbe0), | ||
68 | INTC_VECT(SIM_ERI, 0xc00), INTC_VECT(SIM_RXI, 0xc20), | ||
69 | INTC_VECT(SIM_TXI, 0xc40), INTC_VECT(SIM_TEI, 0xc60), | ||
70 | INTC_VECT(HSPI, 0xc80), | ||
71 | INTC_VECT(MMCIF0, 0xd00), INTC_VECT(MMCIF1, 0xd20), | ||
72 | INTC_VECT(MMCIF2, 0xd40), INTC_VECT(MMCIF3, 0xd60), | ||
73 | INTC_VECT(MFI, 0xe80), /* 0xf80 according to data sheet */ | ||
74 | INTC_VECT(ADC, 0xf80), INTC_VECT(CMT, 0xfa0), | ||
75 | INTC_VECT(TMU0, 0x400), INTC_VECT(TMU1, 0x420), | ||
76 | INTC_VECT(TMU2_TUNI, 0x440), INTC_VECT(TMU2_TICPI, 0x460), | ||
77 | INTC_VECT(WDT, 0x560), | ||
78 | INTC_VECT(REF_RCMI, 0x580), INTC_VECT(REF_ROVI, 0x5a0), | ||
79 | }; | ||
80 | |||
81 | static struct intc_group groups[] __initdata = { | ||
82 | INTC_GROUP(DMAC, DMAC_DMTE0, DMAC_DMTE1, DMAC_DMTE2, | ||
83 | DMAC_DMTE3, DMAC_DMTE4, DMAC_DMTE5, | ||
84 | DMAC_DMTE6, DMAC_DMTE7, DMAC_DMAE), | ||
85 | INTC_GROUP(DMABRG, DMABRG0, DMABRG1, DMABRG2), | ||
86 | INTC_GROUP(SCIF0, SCIF0_ERI, SCIF0_RXI, SCIF0_BRI, SCIF0_TXI), | ||
87 | INTC_GROUP(SCIF1, SCIF1_ERI, SCIF1_RXI, SCIF1_BRI, SCIF1_TXI), | ||
88 | INTC_GROUP(SCIF2, SCIF2_ERI, SCIF2_RXI, SCIF2_BRI, SCIF2_TXI), | ||
89 | INTC_GROUP(SIM, SIM_ERI, SIM_RXI, SIM_TXI, SIM_TEI), | ||
90 | INTC_GROUP(MMCIF, MMCIF0, MMCIF1, MMCIF2, MMCIF3), | ||
91 | INTC_GROUP(TMU2, TMU2_TUNI, TMU2_TICPI), | ||
92 | INTC_GROUP(REF, REF_RCMI, REF_ROVI), | ||
93 | }; | ||
94 | |||
95 | static struct intc_prio priorities[] __initdata = { | ||
96 | INTC_PRIO(SCIF0, 3), | ||
97 | INTC_PRIO(SCIF1, 3), | ||
98 | INTC_PRIO(SCIF2, 3), | ||
99 | INTC_PRIO(SIM, 3), | ||
100 | INTC_PRIO(DMAC, 7), | ||
101 | INTC_PRIO(DMABRG, 13), | ||
102 | }; | ||
103 | |||
104 | static struct intc_mask_reg mask_registers[] __initdata = { | ||
105 | { 0xfe080040, 0xfe080060, 32, /* INTMSK00 / INTMSKCLR00 */ | ||
106 | { IRQ4, IRQ5, IRQ6, IRQ7, 0, 0, HCAN20, HCAN21, | ||
107 | SSI0, SSI1, HAC0, HAC1, I2C0, I2C1, USB, LCDC, | ||
108 | 0, DMABRG0, DMABRG1, DMABRG2, | ||
109 | SCIF0_ERI, SCIF0_RXI, SCIF0_BRI, SCIF0_TXI, | ||
110 | SCIF1_ERI, SCIF1_RXI, SCIF1_BRI, SCIF1_TXI, | ||
111 | SCIF2_ERI, SCIF2_RXI, SCIF2_BRI, SCIF2_TXI, } }, | ||
112 | { 0xfe080044, 0xfe080064, 32, /* INTMSK04 / INTMSKCLR04 */ | ||
113 | { 0, 0, 0, 0, 0, 0, 0, 0, | ||
114 | SIM_ERI, SIM_RXI, SIM_TXI, SIM_TEI, | ||
115 | HSPI, MMCIF0, MMCIF1, MMCIF2, | ||
116 | MMCIF3, 0, 0, 0, 0, 0, 0, 0, | ||
117 | 0, MFI, 0, 0, 0, 0, ADC, CMT, } }, | ||
118 | }; | ||
119 | |||
120 | static struct intc_prio_reg prio_registers[] __initdata = { | ||
121 | { 0xffd00004, 0, 16, 4, /* IPRA */ { TMU0, TMU1, TMU2 } }, | ||
122 | { 0xffd00008, 0, 16, 4, /* IPRB */ { WDT, REF, 0, 0 } }, | ||
123 | { 0xffd0000c, 0, 16, 4, /* IPRC */ { GPIOI, DMAC, 0, HUDI } }, | ||
124 | { 0xffd00010, 0, 16, 4, /* IPRD */ { IRL0, IRL1, IRL2, IRL3 } }, | ||
125 | { 0xfe080000, 0, 32, 4, /* INTPRI00 */ { IRQ4, IRQ5, IRQ6, IRQ7 } }, | ||
126 | { 0xfe080004, 0, 32, 4, /* INTPRI04 */ { HCAN20, HCAN21, SSI0, SSI1, | ||
127 | HAC0, HAC1, I2C0, I2C1 } }, | ||
128 | { 0xfe080008, 0, 32, 4, /* INTPRI08 */ { USB, LCDC, DMABRG, SCIF0, | ||
129 | SCIF1, SCIF2, SIM, HSPI } }, | ||
130 | { 0xfe08000c, 0, 32, 4, /* INTPRI0C */ { 0, 0, MMCIF, 0, | ||
131 | MFI, 0, ADC, CMT } }, | ||
132 | }; | ||
133 | |||
134 | static DECLARE_INTC_DESC(intc_desc, "sh7760", vectors, groups, | ||
135 | priorities, mask_registers, prio_registers, NULL); | ||
136 | |||
137 | static struct intc_vect vectors_irq[] __initdata = { | ||
138 | INTC_VECT(IRL0, 0x240), INTC_VECT(IRL1, 0x2a0), | ||
139 | INTC_VECT(IRL2, 0x300), INTC_VECT(IRL3, 0x360), | ||
140 | }; | ||
141 | |||
142 | static DECLARE_INTC_DESC(intc_desc_irq, "sh7760-irq", vectors_irq, groups, | ||
143 | priorities, mask_registers, prio_registers, NULL); | ||
144 | |||
15 | static struct plat_sci_port sci_platform_data[] = { | 145 | static struct plat_sci_port sci_platform_data[] = { |
16 | { | 146 | { |
17 | .mapbase = 0xfe600000, | 147 | .mapbase = 0xfe600000, |
@@ -29,6 +159,11 @@ static struct plat_sci_port sci_platform_data[] = { | |||
29 | .type = PORT_SCIF, | 159 | .type = PORT_SCIF, |
30 | .irqs = { 76, 77, 79, 78 }, | 160 | .irqs = { 76, 77, 79, 78 }, |
31 | }, { | 161 | }, { |
162 | .mapbase = 0xfe480000, | ||
163 | .flags = UPF_BOOT_AUTOCONF, | ||
164 | .type = PORT_SCI, | ||
165 | .irqs = { 80, 81, 82, 0 }, | ||
166 | }, { | ||
32 | .flags = 0, | 167 | .flags = 0, |
33 | } | 168 | } |
34 | }; | 169 | }; |
@@ -52,114 +187,18 @@ static int __init sh7760_devices_setup(void) | |||
52 | } | 187 | } |
53 | __initcall(sh7760_devices_setup); | 188 | __initcall(sh7760_devices_setup); |
54 | 189 | ||
55 | static struct intc2_data intc2_irq_table[] = { | 190 | void __init plat_irq_setup_pins(int mode) |
56 | {48, 0, 28, 0, 31, 3}, /* IRQ 4 */ | 191 | { |
57 | {49, 0, 24, 0, 30, 3}, /* IRQ 3 */ | 192 | switch (mode) { |
58 | {50, 0, 20, 0, 29, 3}, /* IRQ 2 */ | 193 | case IRQ_MODE_IRQ: |
59 | {51, 0, 16, 0, 28, 3}, /* IRQ 1 */ | 194 | register_intc_controller(&intc_desc_irq); |
60 | {56, 4, 28, 0, 25, 3}, /* HCAN2_CHAN0 */ | 195 | break; |
61 | {57, 4, 24, 0, 24, 3}, /* HCAN2_CHAN1 */ | 196 | default: |
62 | {58, 4, 20, 0, 23, 3}, /* I2S_CHAN0 */ | 197 | BUG(); |
63 | {59, 4, 16, 0, 22, 3}, /* I2S_CHAN1 */ | 198 | } |
64 | {60, 4, 12, 0, 21, 3}, /* AC97_CHAN0 */ | 199 | } |
65 | {61, 4, 8, 0, 20, 3}, /* AC97_CHAN1 */ | ||
66 | {62, 4, 4, 0, 19, 3}, /* I2C_CHAN0 */ | ||
67 | {63, 4, 0, 0, 18, 3}, /* I2C_CHAN1 */ | ||
68 | {52, 8, 16, 0, 11, 3}, /* SCIF0_ERI_IRQ */ | ||
69 | {53, 8, 16, 0, 10, 3}, /* SCIF0_RXI_IRQ */ | ||
70 | {54, 8, 16, 0, 9, 3}, /* SCIF0_BRI_IRQ */ | ||
71 | {55, 8, 16, 0, 8, 3}, /* SCIF0_TXI_IRQ */ | ||
72 | {64, 8, 28, 0, 17, 3}, /* USBHI_IRQ */ | ||
73 | {65, 8, 24, 0, 16, 3}, /* LCDC */ | ||
74 | {68, 8, 20, 0, 14, 13}, /* DMABRGI0_IRQ */ | ||
75 | {69, 8, 20, 0, 13, 13}, /* DMABRGI1_IRQ */ | ||
76 | {70, 8, 20, 0, 12, 13}, /* DMABRGI2_IRQ */ | ||
77 | {72, 8, 12, 0, 7, 3}, /* SCIF1_ERI_IRQ */ | ||
78 | {73, 8, 12, 0, 6, 3}, /* SCIF1_RXI_IRQ */ | ||
79 | {74, 8, 12, 0, 5, 3}, /* SCIF1_BRI_IRQ */ | ||
80 | {75, 8, 12, 0, 4, 3}, /* SCIF1_TXI_IRQ */ | ||
81 | {76, 8, 8, 0, 3, 3}, /* SCIF2_ERI_IRQ */ | ||
82 | {77, 8, 8, 0, 2, 3}, /* SCIF2_RXI_IRQ */ | ||
83 | {78, 8, 8, 0, 1, 3}, /* SCIF2_BRI_IRQ */ | ||
84 | {79, 8, 8, 0, 0, 3}, /* SCIF2_TXI_IRQ */ | ||
85 | {80, 8, 4, 4, 23, 3}, /* SIM_ERI */ | ||
86 | {81, 8, 4, 4, 22, 3}, /* SIM_RXI */ | ||
87 | {82, 8, 4, 4, 21, 3}, /* SIM_TXI */ | ||
88 | {83, 8, 4, 4, 20, 3}, /* SIM_TEI */ | ||
89 | {84, 8, 0, 4, 19, 3}, /* HSPII */ | ||
90 | {88, 12, 20, 4, 18, 3}, /* MMCI0 */ | ||
91 | {89, 12, 20, 4, 17, 3}, /* MMCI1 */ | ||
92 | {90, 12, 20, 4, 16, 3}, /* MMCI2 */ | ||
93 | {91, 12, 20, 4, 15, 3}, /* MMCI3 */ | ||
94 | {92, 12, 12, 4, 6, 3}, /* MFI */ | ||
95 | {108,12, 4, 4, 1, 3}, /* ADC */ | ||
96 | {109,12, 0, 4, 0, 3}, /* CMTI */ | ||
97 | }; | ||
98 | |||
99 | static struct intc2_desc intc2_irq_desc __read_mostly = { | ||
100 | .prio_base = 0xfe080000, | ||
101 | .msk_base = 0xfe080040, | ||
102 | .mskclr_base = 0xfe080060, | ||
103 | |||
104 | .intc2_data = intc2_irq_table, | ||
105 | .nr_irqs = ARRAY_SIZE(intc2_irq_table), | ||
106 | |||
107 | .chip = { | ||
108 | .name = "INTC2-sh7760", | ||
109 | }, | ||
110 | }; | ||
111 | |||
112 | static struct ipr_data ipr_irq_table[] = { | ||
113 | /* IRQ, IPR-idx, shift, priority */ | ||
114 | { 16, 0, 12, 2 }, /* TMU0 TUNI*/ | ||
115 | { 17, 0, 8, 2 }, /* TMU1 TUNI */ | ||
116 | { 18, 0, 4, 2 }, /* TMU2 TUNI */ | ||
117 | { 19, 0, 4, 2 }, /* TMU2 TIPCI */ | ||
118 | { 27, 1, 12, 2 }, /* WDT ITI */ | ||
119 | { 28, 1, 8, 2 }, /* REF RCMI */ | ||
120 | { 29, 1, 8, 2 }, /* REF ROVI */ | ||
121 | { 32, 2, 0, 7 }, /* HUDI */ | ||
122 | { 33, 2, 12, 7 }, /* GPIOI */ | ||
123 | { 34, 2, 8, 7 }, /* DMAC DMTE0 */ | ||
124 | { 35, 2, 8, 7 }, /* DMAC DMTE1 */ | ||
125 | { 36, 2, 8, 7 }, /* DMAC DMTE2 */ | ||
126 | { 37, 2, 8, 7 }, /* DMAC DMTE3 */ | ||
127 | { 38, 2, 8, 7 }, /* DMAC DMAE */ | ||
128 | { 44, 2, 8, 7 }, /* DMAC DMTE4 */ | ||
129 | { 45, 2, 8, 7 }, /* DMAC DMTE5 */ | ||
130 | { 46, 2, 8, 7 }, /* DMAC DMTE6 */ | ||
131 | { 47, 2, 8, 7 }, /* DMAC DMTE7 */ | ||
132 | /* these here are only valid if INTC_ICR bit 7 is set to 1! | ||
133 | * XXX: maybe CONFIG_SH_IRLMODE symbol? SH7751 could use it too */ | ||
134 | #if 0 | ||
135 | { 2, 3, 12, 3 }, /* IRL0 */ | ||
136 | { 5, 3, 8, 3 }, /* IRL1 */ | ||
137 | { 8, 3, 4, 3 }, /* IRL2 */ | ||
138 | { 11, 3, 0, 3 }, /* IRL3 */ | ||
139 | #endif | ||
140 | }; | ||
141 | |||
142 | static unsigned long ipr_offsets[] = { | ||
143 | 0xffd00004UL, /* 0: IPRA */ | ||
144 | 0xffd00008UL, /* 1: IPRB */ | ||
145 | 0xffd0000cUL, /* 2: IPRC */ | ||
146 | 0xffd00010UL, /* 3: IPRD */ | ||
147 | }; | ||
148 | |||
149 | static struct ipr_desc ipr_irq_desc = { | ||
150 | .ipr_offsets = ipr_offsets, | ||
151 | .nr_offsets = ARRAY_SIZE(ipr_offsets), | ||
152 | |||
153 | .ipr_data = ipr_irq_table, | ||
154 | .nr_irqs = ARRAY_SIZE(ipr_irq_table), | ||
155 | |||
156 | .chip = { | ||
157 | .name = "IPR-sh7760", | ||
158 | }, | ||
159 | }; | ||
160 | 200 | ||
161 | void __init plat_irq_setup(void) | 201 | void __init plat_irq_setup(void) |
162 | { | 202 | { |
163 | register_intc2_controller(&intc2_irq_desc); | 203 | register_intc_controller(&intc_desc); |
164 | register_ipr_controller(&ipr_irq_desc); | ||
165 | } | 204 | } |
diff --git a/arch/sh/kernel/cpu/sh4/sq.c b/arch/sh/kernel/cpu/sh4/sq.c index c21512c6044e..b22a78c807e6 100644 --- a/arch/sh/kernel/cpu/sh4/sq.c +++ b/arch/sh/kernel/cpu/sh4/sq.c | |||
@@ -58,11 +58,11 @@ do { \ | |||
58 | */ | 58 | */ |
59 | void sq_flush_range(unsigned long start, unsigned int len) | 59 | void sq_flush_range(unsigned long start, unsigned int len) |
60 | { | 60 | { |
61 | volatile unsigned long *sq = (unsigned long *)start; | 61 | unsigned long *sq = (unsigned long *)start; |
62 | 62 | ||
63 | /* Flush the queues */ | 63 | /* Flush the queues */ |
64 | for (len >>= 5; len--; sq += 8) | 64 | for (len >>= 5; len--; sq += 8) |
65 | prefetchw((void *)sq); | 65 | prefetchw(sq); |
66 | 66 | ||
67 | /* Wait for completion */ | 67 | /* Wait for completion */ |
68 | store_queue_barrier(); | 68 | store_queue_barrier(); |
diff --git a/arch/sh/kernel/cpu/sh4a/Makefile b/arch/sh/kernel/cpu/sh4a/Makefile index e6a1fb5f8484..24539873943a 100644 --- a/arch/sh/kernel/cpu/sh4a/Makefile +++ b/arch/sh/kernel/cpu/sh4a/Makefile | |||
@@ -10,6 +10,9 @@ obj-$(CONFIG_CPU_SUBTYPE_SH7343) += setup-sh7343.o | |||
10 | obj-$(CONFIG_CPU_SUBTYPE_SH7722) += setup-sh7722.o | 10 | obj-$(CONFIG_CPU_SUBTYPE_SH7722) += setup-sh7722.o |
11 | obj-$(CONFIG_CPU_SUBTYPE_SHX3) += setup-shx3.o | 11 | obj-$(CONFIG_CPU_SUBTYPE_SHX3) += setup-shx3.o |
12 | 12 | ||
13 | # SMP setup | ||
14 | smp-$(CONFIG_CPU_SUBTYPE_SHX3) := smp-shx3.o | ||
15 | |||
13 | # Primary on-chip clocks (common) | 16 | # Primary on-chip clocks (common) |
14 | clock-$(CONFIG_CPU_SUBTYPE_SH7770) := clock-sh7770.o | 17 | clock-$(CONFIG_CPU_SUBTYPE_SH7770) := clock-sh7770.o |
15 | clock-$(CONFIG_CPU_SUBTYPE_SH7780) := clock-sh7780.o | 18 | clock-$(CONFIG_CPU_SUBTYPE_SH7780) := clock-sh7780.o |
@@ -18,4 +21,5 @@ clock-$(CONFIG_CPU_SUBTYPE_SH7343) := clock-sh7343.o | |||
18 | clock-$(CONFIG_CPU_SUBTYPE_SH7722) := clock-sh7722.o | 21 | clock-$(CONFIG_CPU_SUBTYPE_SH7722) := clock-sh7722.o |
19 | clock-$(CONFIG_CPU_SUBTYPE_SHX3) := clock-shx3.o | 22 | clock-$(CONFIG_CPU_SUBTYPE_SHX3) := clock-shx3.o |
20 | 23 | ||
21 | obj-y += $(clock-y) | 24 | obj-y += $(clock-y) |
25 | obj-$(CONFIG_SMP) += $(smp-y) | ||
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7343.c b/arch/sh/kernel/cpu/sh4a/setup-sh7343.c index 91d61cf91ba1..c0a3f079dfdc 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7343.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7343.c | |||
@@ -41,3 +41,7 @@ static int __init sh7343_devices_setup(void) | |||
41 | ARRAY_SIZE(sh7343_devices)); | 41 | ARRAY_SIZE(sh7343_devices)); |
42 | } | 42 | } |
43 | __initcall(sh7343_devices_setup); | 43 | __initcall(sh7343_devices_setup); |
44 | |||
45 | void __init plat_irq_setup(void) | ||
46 | { | ||
47 | } | ||
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c index 25b913e07e2c..55f66104431d 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c | |||
@@ -84,7 +84,7 @@ enum { | |||
84 | SIM, RTC, DMAC0123, VIOVOU, USB, DMAC45, FLCTL, I2C, SDHI, | 84 | SIM, RTC, DMAC0123, VIOVOU, USB, DMAC45, FLCTL, I2C, SDHI, |
85 | }; | 85 | }; |
86 | 86 | ||
87 | static struct intc_vect vectors[] = { | 87 | static struct intc_vect vectors[] __initdata = { |
88 | INTC_VECT(IRQ0, 0x600), INTC_VECT(IRQ1, 0x620), | 88 | INTC_VECT(IRQ0, 0x600), INTC_VECT(IRQ1, 0x620), |
89 | INTC_VECT(IRQ2, 0x640), INTC_VECT(IRQ3, 0x660), | 89 | INTC_VECT(IRQ2, 0x640), INTC_VECT(IRQ3, 0x660), |
90 | INTC_VECT(IRQ4, 0x680), INTC_VECT(IRQ5, 0x6a0), | 90 | INTC_VECT(IRQ4, 0x680), INTC_VECT(IRQ5, 0x6a0), |
@@ -117,7 +117,7 @@ static struct intc_vect vectors[] = { | |||
117 | INTC_VECT(JPU, 0x560), INTC_VECT(LCDC, 0x580), | 117 | INTC_VECT(JPU, 0x560), INTC_VECT(LCDC, 0x580), |
118 | }; | 118 | }; |
119 | 119 | ||
120 | static struct intc_group groups[] = { | 120 | static struct intc_group groups[] __initdata = { |
121 | INTC_GROUP(SIM, SIM_ERI, SIM_RXI, SIM_TXI, SIM_TEI), | 121 | INTC_GROUP(SIM, SIM_ERI, SIM_RXI, SIM_TXI, SIM_TEI), |
122 | INTC_GROUP(RTC, RTC_ATI, RTC_PRI, RTC_CUI), | 122 | INTC_GROUP(RTC, RTC_ATI, RTC_PRI, RTC_CUI), |
123 | INTC_GROUP(DMAC0123, DMAC0, DMAC1, DMAC2, DMAC3), | 123 | INTC_GROUP(DMAC0123, DMAC0, DMAC1, DMAC2, DMAC3), |
@@ -130,7 +130,7 @@ static struct intc_group groups[] = { | |||
130 | INTC_GROUP(SDHI, SDHI0, SDHI1, SDHI2, SDHI3), | 130 | INTC_GROUP(SDHI, SDHI0, SDHI1, SDHI2, SDHI3), |
131 | }; | 131 | }; |
132 | 132 | ||
133 | static struct intc_prio priorities[] = { | 133 | static struct intc_prio priorities[] __initdata = { |
134 | INTC_PRIO(SCIF0, 3), | 134 | INTC_PRIO(SCIF0, 3), |
135 | INTC_PRIO(SCIF1, 3), | 135 | INTC_PRIO(SCIF1, 3), |
136 | INTC_PRIO(SCIF2, 3), | 136 | INTC_PRIO(SCIF2, 3), |
@@ -138,7 +138,7 @@ static struct intc_prio priorities[] = { | |||
138 | INTC_PRIO(TMU1, 2), | 138 | INTC_PRIO(TMU1, 2), |
139 | }; | 139 | }; |
140 | 140 | ||
141 | static struct intc_mask_reg mask_registers[] = { | 141 | static struct intc_mask_reg mask_registers[] __initdata = { |
142 | { 0xa4080080, 0xa40800c0, 8, /* IMR0 / IMCR0 */ | 142 | { 0xa4080080, 0xa40800c0, 8, /* IMR0 / IMCR0 */ |
143 | { } }, | 143 | { } }, |
144 | { 0xa4080084, 0xa40800c4, 8, /* IMR1 / IMCR1 */ | 144 | { 0xa4080084, 0xa40800c4, 8, /* IMR1 / IMCR1 */ |
@@ -168,24 +168,24 @@ static struct intc_mask_reg mask_registers[] = { | |||
168 | { IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7 } }, | 168 | { IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7 } }, |
169 | }; | 169 | }; |
170 | 170 | ||
171 | static struct intc_prio_reg prio_registers[] = { | 171 | static struct intc_prio_reg prio_registers[] __initdata = { |
172 | { 0xa4080000, 16, 4, /* IPRA */ { TMU0, TMU1, TMU2, IRDA } }, | 172 | { 0xa4080000, 0, 16, 4, /* IPRA */ { TMU0, TMU1, TMU2, IRDA } }, |
173 | { 0xa4080004, 16, 4, /* IPRB */ { JPU, LCDC, SIM } }, | 173 | { 0xa4080004, 0, 16, 4, /* IPRB */ { JPU, LCDC, SIM } }, |
174 | { 0xa4080008, 16, 4, /* IPRC */ { } }, | 174 | { 0xa4080008, 0, 16, 4, /* IPRC */ { } }, |
175 | { 0xa408000c, 16, 4, /* IPRD */ { } }, | 175 | { 0xa408000c, 0, 16, 4, /* IPRD */ { } }, |
176 | { 0xa4080010, 16, 4, /* IPRE */ { DMAC0123, VIOVOU, 0, VPU } }, | 176 | { 0xa4080010, 0, 16, 4, /* IPRE */ { DMAC0123, VIOVOU, 0, VPU } }, |
177 | { 0xa4080014, 16, 4, /* IPRF */ { KEYSC, DMAC45, USB, CMT } }, | 177 | { 0xa4080014, 0, 16, 4, /* IPRF */ { KEYSC, DMAC45, USB, CMT } }, |
178 | { 0xa4080018, 16, 4, /* IPRG */ { SCIF0, SCIF1, SCIF2 } }, | 178 | { 0xa4080018, 0, 16, 4, /* IPRG */ { SCIF0, SCIF1, SCIF2 } }, |
179 | { 0xa408001c, 16, 4, /* IPRH */ { SIOF0, SIOF1, FLCTL, I2C } }, | 179 | { 0xa408001c, 0, 16, 4, /* IPRH */ { SIOF0, SIOF1, FLCTL, I2C } }, |
180 | { 0xa4080020, 16, 4, /* IPRI */ { SIO, 0, TSIF, RTC } }, | 180 | { 0xa4080020, 0, 16, 4, /* IPRI */ { SIO, 0, TSIF, RTC } }, |
181 | { 0xa4080024, 16, 4, /* IPRJ */ { 0, 0, SIU } }, | 181 | { 0xa4080024, 0, 16, 4, /* IPRJ */ { 0, 0, SIU } }, |
182 | { 0xa4080028, 16, 4, /* IPRK */ { 0, 0, 0, SDHI } }, | 182 | { 0xa4080028, 0, 16, 4, /* IPRK */ { 0, 0, 0, SDHI } }, |
183 | { 0xa408002c, 16, 4, /* IPRL */ { TWODG, 0, TPU } }, | 183 | { 0xa408002c, 0, 16, 4, /* IPRL */ { TWODG, 0, TPU } }, |
184 | { 0xa4140010, 32, 4, /* INTPRI00 */ | 184 | { 0xa4140010, 0, 32, 4, /* INTPRI00 */ |
185 | { IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7 } }, | 185 | { IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7 } }, |
186 | }; | 186 | }; |
187 | 187 | ||
188 | static struct intc_sense_reg sense_registers[] = { | 188 | static struct intc_sense_reg sense_registers[] __initdata = { |
189 | { 0xa414001c, 16, 2, /* ICR1 */ | 189 | { 0xa414001c, 16, 2, /* ICR1 */ |
190 | { IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7 } }, | 190 | { IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7 } }, |
191 | }; | 191 | }; |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7770.c b/arch/sh/kernel/cpu/sh4a/setup-sh7770.c index 6a04cc5f5aca..32f4f59a837b 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7770.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7770.c | |||
@@ -51,3 +51,7 @@ static int __init sh7770_devices_setup(void) | |||
51 | ARRAY_SIZE(sh7770_devices)); | 51 | ARRAY_SIZE(sh7770_devices)); |
52 | } | 52 | } |
53 | __initcall(sh7770_devices_setup); | 53 | __initcall(sh7770_devices_setup); |
54 | |||
55 | void __init plat_irq_setup(void) | ||
56 | { | ||
57 | } | ||
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7780.c b/arch/sh/kernel/cpu/sh4a/setup-sh7780.c index a4127ec15203..e8fd33ff0605 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7780.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7780.c | |||
@@ -10,6 +10,7 @@ | |||
10 | #include <linux/platform_device.h> | 10 | #include <linux/platform_device.h> |
11 | #include <linux/init.h> | 11 | #include <linux/init.h> |
12 | #include <linux/serial.h> | 12 | #include <linux/serial.h> |
13 | #include <linux/io.h> | ||
13 | #include <asm/sci.h> | 14 | #include <asm/sci.h> |
14 | 15 | ||
15 | static struct resource rtc_resources[] = { | 16 | static struct resource rtc_resources[] = { |
@@ -114,7 +115,7 @@ enum { | |||
114 | PCIC5, SCIF1, MMCIF, TMU345, FLCTL, GPIO, | 115 | PCIC5, SCIF1, MMCIF, TMU345, FLCTL, GPIO, |
115 | }; | 116 | }; |
116 | 117 | ||
117 | static struct intc_vect vectors[] = { | 118 | static struct intc_vect vectors[] __initdata = { |
118 | INTC_VECT(RTC_ATI, 0x480), INTC_VECT(RTC_PRI, 0x4a0), | 119 | INTC_VECT(RTC_ATI, 0x480), INTC_VECT(RTC_PRI, 0x4a0), |
119 | INTC_VECT(RTC_CUI, 0x4c0), | 120 | INTC_VECT(RTC_CUI, 0x4c0), |
120 | INTC_VECT(WDT, 0x560), | 121 | INTC_VECT(WDT, 0x560), |
@@ -150,7 +151,7 @@ static struct intc_vect vectors[] = { | |||
150 | INTC_VECT(GPIOI2, 0xfc0), INTC_VECT(GPIOI3, 0xfe0), | 151 | INTC_VECT(GPIOI2, 0xfc0), INTC_VECT(GPIOI3, 0xfe0), |
151 | }; | 152 | }; |
152 | 153 | ||
153 | static struct intc_group groups[] = { | 154 | static struct intc_group groups[] __initdata = { |
154 | INTC_GROUP(RTC, RTC_ATI, RTC_PRI, RTC_CUI), | 155 | INTC_GROUP(RTC, RTC_ATI, RTC_PRI, RTC_CUI), |
155 | INTC_GROUP(TMU012, TMU0, TMU1, TMU2, TMU2_TICPI), | 156 | INTC_GROUP(TMU012, TMU0, TMU1, TMU2, TMU2_TICPI), |
156 | INTC_GROUP(DMAC0, DMAC0_DMINT0, DMAC0_DMINT1, DMAC0_DMINT2, | 157 | INTC_GROUP(DMAC0, DMAC0_DMINT0, DMAC0_DMINT1, DMAC0_DMINT2, |
@@ -167,12 +168,12 @@ static struct intc_group groups[] = { | |||
167 | INTC_GROUP(GPIO, GPIOI0, GPIOI1, GPIOI2, GPIOI3), | 168 | INTC_GROUP(GPIO, GPIOI0, GPIOI1, GPIOI2, GPIOI3), |
168 | }; | 169 | }; |
169 | 170 | ||
170 | static struct intc_prio priorities[] = { | 171 | static struct intc_prio priorities[] __initdata = { |
171 | INTC_PRIO(SCIF0, 3), | 172 | INTC_PRIO(SCIF0, 3), |
172 | INTC_PRIO(SCIF1, 3), | 173 | INTC_PRIO(SCIF1, 3), |
173 | }; | 174 | }; |
174 | 175 | ||
175 | static struct intc_mask_reg mask_registers[] = { | 176 | static struct intc_mask_reg mask_registers[] __initdata = { |
176 | { 0xffd40038, 0xffd4003c, 32, /* INT2MSKR / INT2MSKCR */ | 177 | { 0xffd40038, 0xffd4003c, 32, /* INT2MSKR / INT2MSKCR */ |
177 | { 0, 0, 0, 0, 0, 0, GPIO, FLCTL, | 178 | { 0, 0, 0, 0, 0, 0, GPIO, FLCTL, |
178 | SSI, MMCIF, HSPI, SIOF, PCIC5, PCIINTD, PCIINTC, PCIINTB, | 179 | SSI, MMCIF, HSPI, SIOF, PCIC5, PCIINTD, PCIINTC, PCIINTB, |
@@ -180,16 +181,18 @@ static struct intc_mask_reg mask_registers[] = { | |||
180 | HUDI, 0, WDT, SCIF1, SCIF0, RTC, TMU345, TMU012 } }, | 181 | HUDI, 0, WDT, SCIF1, SCIF0, RTC, TMU345, TMU012 } }, |
181 | }; | 182 | }; |
182 | 183 | ||
183 | static struct intc_prio_reg prio_registers[] = { | 184 | static struct intc_prio_reg prio_registers[] __initdata = { |
184 | { 0xffd40000, 32, 8, /* INT2PRI0 */ { TMU0, TMU1, TMU2, TMU2_TICPI } }, | 185 | { 0xffd40000, 0, 32, 8, /* INT2PRI0 */ { TMU0, TMU1, |
185 | { 0xffd40004, 32, 8, /* INT2PRI1 */ { TMU3, TMU4, TMU5, RTC } }, | 186 | TMU2, TMU2_TICPI } }, |
186 | { 0xffd40008, 32, 8, /* INT2PRI2 */ { SCIF0, SCIF1, WDT } }, | 187 | { 0xffd40004, 0, 32, 8, /* INT2PRI1 */ { TMU3, TMU4, TMU5, RTC } }, |
187 | { 0xffd4000c, 32, 8, /* INT2PRI3 */ { HUDI, DMAC0, DMAC1 } }, | 188 | { 0xffd40008, 0, 32, 8, /* INT2PRI2 */ { SCIF0, SCIF1, WDT } }, |
188 | { 0xffd40010, 32, 8, /* INT2PRI4 */ { CMT, HAC, PCISERR, PCIINTA, } }, | 189 | { 0xffd4000c, 0, 32, 8, /* INT2PRI3 */ { HUDI, DMAC0, DMAC1 } }, |
189 | { 0xffd40014, 32, 8, /* INT2PRI5 */ { PCIINTB, PCIINTC, | 190 | { 0xffd40010, 0, 32, 8, /* INT2PRI4 */ { CMT, HAC, |
190 | PCIINTD, PCIC5 } }, | 191 | PCISERR, PCIINTA, } }, |
191 | { 0xffd40018, 32, 8, /* INT2PRI6 */ { SIOF, HSPI, MMCIF, SSI } }, | 192 | { 0xffd40014, 0, 32, 8, /* INT2PRI5 */ { PCIINTB, PCIINTC, |
192 | { 0xffd4001c, 32, 8, /* INT2PRI7 */ { FLCTL, GPIO } }, | 193 | PCIINTD, PCIC5 } }, |
194 | { 0xffd40018, 0, 32, 8, /* INT2PRI6 */ { SIOF, HSPI, MMCIF, SSI } }, | ||
195 | { 0xffd4001c, 0, 32, 8, /* INT2PRI7 */ { FLCTL, GPIO } }, | ||
193 | }; | 196 | }; |
194 | 197 | ||
195 | static DECLARE_INTC_DESC(intc_desc, "sh7780", vectors, groups, priorities, | 198 | static DECLARE_INTC_DESC(intc_desc, "sh7780", vectors, groups, priorities, |
@@ -197,24 +200,24 @@ static DECLARE_INTC_DESC(intc_desc, "sh7780", vectors, groups, priorities, | |||
197 | 200 | ||
198 | /* Support for external interrupt pins in IRQ mode */ | 201 | /* Support for external interrupt pins in IRQ mode */ |
199 | 202 | ||
200 | static struct intc_vect irq_vectors[] = { | 203 | static struct intc_vect irq_vectors[] __initdata = { |
201 | INTC_VECT(IRQ0, 0x240), INTC_VECT(IRQ1, 0x280), | 204 | INTC_VECT(IRQ0, 0x240), INTC_VECT(IRQ1, 0x280), |
202 | INTC_VECT(IRQ2, 0x2c0), INTC_VECT(IRQ3, 0x300), | 205 | INTC_VECT(IRQ2, 0x2c0), INTC_VECT(IRQ3, 0x300), |
203 | INTC_VECT(IRQ4, 0x340), INTC_VECT(IRQ5, 0x380), | 206 | INTC_VECT(IRQ4, 0x340), INTC_VECT(IRQ5, 0x380), |
204 | INTC_VECT(IRQ6, 0x3c0), INTC_VECT(IRQ7, 0x200), | 207 | INTC_VECT(IRQ6, 0x3c0), INTC_VECT(IRQ7, 0x200), |
205 | }; | 208 | }; |
206 | 209 | ||
207 | static struct intc_mask_reg irq_mask_registers[] = { | 210 | static struct intc_mask_reg irq_mask_registers[] __initdata = { |
208 | { 0xffd00044, 0xffd00064, 32, /* INTMSK0 / INTMSKCLR0 */ | 211 | { 0xffd00044, 0xffd00064, 32, /* INTMSK0 / INTMSKCLR0 */ |
209 | { IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7 } }, | 212 | { IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7 } }, |
210 | }; | 213 | }; |
211 | 214 | ||
212 | static struct intc_prio_reg irq_prio_registers[] = { | 215 | static struct intc_prio_reg irq_prio_registers[] __initdata = { |
213 | { 0xffd00010, 32, 4, /* INTPRI */ { IRQ0, IRQ1, IRQ2, IRQ3, | 216 | { 0xffd00010, 0, 32, 4, /* INTPRI */ { IRQ0, IRQ1, IRQ2, IRQ3, |
214 | IRQ4, IRQ5, IRQ6, IRQ7 } }, | 217 | IRQ4, IRQ5, IRQ6, IRQ7 } }, |
215 | }; | 218 | }; |
216 | 219 | ||
217 | static struct intc_sense_reg irq_sense_registers[] = { | 220 | static struct intc_sense_reg irq_sense_registers[] __initdata = { |
218 | { 0xffd0001c, 32, 2, /* ICR1 */ { IRQ0, IRQ1, IRQ2, IRQ3, | 221 | { 0xffd0001c, 32, 2, /* ICR1 */ { IRQ0, IRQ1, IRQ2, IRQ3, |
219 | IRQ4, IRQ5, IRQ6, IRQ7 } }, | 222 | IRQ4, IRQ5, IRQ6, IRQ7 } }, |
220 | }; | 223 | }; |
@@ -225,7 +228,7 @@ static DECLARE_INTC_DESC(intc_irq_desc, "sh7780-irq", irq_vectors, | |||
225 | 228 | ||
226 | /* External interrupt pins in IRL mode */ | 229 | /* External interrupt pins in IRL mode */ |
227 | 230 | ||
228 | static struct intc_vect irl_vectors[] = { | 231 | static struct intc_vect irl_vectors[] __initdata = { |
229 | INTC_VECT(IRL_LLLL, 0x200), INTC_VECT(IRL_LLLH, 0x220), | 232 | INTC_VECT(IRL_LLLL, 0x200), INTC_VECT(IRL_LLLH, 0x220), |
230 | INTC_VECT(IRL_LLHL, 0x240), INTC_VECT(IRL_LLHH, 0x260), | 233 | INTC_VECT(IRL_LLHL, 0x240), INTC_VECT(IRL_LLHH, 0x260), |
231 | INTC_VECT(IRL_LHLL, 0x280), INTC_VECT(IRL_LHLH, 0x2a0), | 234 | INTC_VECT(IRL_LHLL, 0x280), INTC_VECT(IRL_LHLH, 0x2a0), |
@@ -236,16 +239,16 @@ static struct intc_vect irl_vectors[] = { | |||
236 | INTC_VECT(IRL_HHHL, 0x3c0), | 239 | INTC_VECT(IRL_HHHL, 0x3c0), |
237 | }; | 240 | }; |
238 | 241 | ||
239 | static struct intc_mask_reg irl3210_mask_registers[] = { | 242 | static struct intc_mask_reg irl3210_mask_registers[] __initdata = { |
240 | { 0xffd00080, 0xffd00084, 32, /* INTMSK2 / INTMSKCLR2 */ | 243 | { 0xffd40080, 0xffd40084, 32, /* INTMSK2 / INTMSKCLR2 */ |
241 | { IRL_LLLL, IRL_LLLH, IRL_LLHL, IRL_LLHH, | 244 | { IRL_LLLL, IRL_LLLH, IRL_LLHL, IRL_LLHH, |
242 | IRL_LHLL, IRL_LHLH, IRL_LHHL, IRL_LHHH, | 245 | IRL_LHLL, IRL_LHLH, IRL_LHHL, IRL_LHHH, |
243 | IRL_HLLL, IRL_HLLH, IRL_HLHL, IRL_HLHH, | 246 | IRL_HLLL, IRL_HLLH, IRL_HLHL, IRL_HLHH, |
244 | IRL_HHLL, IRL_HHLH, IRL_HHHL, } }, | 247 | IRL_HHLL, IRL_HHLH, IRL_HHHL, } }, |
245 | }; | 248 | }; |
246 | 249 | ||
247 | static struct intc_mask_reg irl7654_mask_registers[] = { | 250 | static struct intc_mask_reg irl7654_mask_registers[] __initdata = { |
248 | { 0xffd00080, 0xffd00084, 32, /* INTMSK2 / INTMSKCLR2 */ | 251 | { 0xffd40080, 0xffd40084, 32, /* INTMSK2 / INTMSKCLR2 */ |
249 | { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 252 | { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
250 | IRL_LLLL, IRL_LLLH, IRL_LLHL, IRL_LLHH, | 253 | IRL_LLLL, IRL_LLLH, IRL_LLHL, IRL_LLHH, |
251 | IRL_LHLL, IRL_LHLH, IRL_LHHL, IRL_LHHH, | 254 | IRL_LHLL, IRL_LHLH, IRL_LHHL, IRL_LHHH, |
@@ -259,8 +262,28 @@ static DECLARE_INTC_DESC(intc_irl7654_desc, "sh7780-irl7654", irl_vectors, | |||
259 | static DECLARE_INTC_DESC(intc_irl3210_desc, "sh7780-irl3210", irl_vectors, | 262 | static DECLARE_INTC_DESC(intc_irl3210_desc, "sh7780-irl3210", irl_vectors, |
260 | NULL, NULL, irl3210_mask_registers, NULL, NULL); | 263 | NULL, NULL, irl3210_mask_registers, NULL, NULL); |
261 | 264 | ||
265 | #define INTC_ICR0 0xffd00000 | ||
266 | #define INTC_INTMSK0 0xffd00044 | ||
267 | #define INTC_INTMSK1 0xffd00048 | ||
268 | #define INTC_INTMSK2 0xffd40080 | ||
269 | #define INTC_INTMSKCLR1 0xffd00068 | ||
270 | #define INTC_INTMSKCLR2 0xffd40084 | ||
271 | |||
262 | void __init plat_irq_setup(void) | 272 | void __init plat_irq_setup(void) |
263 | { | 273 | { |
274 | /* disable IRQ7-0 */ | ||
275 | ctrl_outl(0xff000000, INTC_INTMSK0); | ||
276 | |||
277 | /* disable IRL3-0 + IRL7-4 */ | ||
278 | ctrl_outl(0xc0000000, INTC_INTMSK1); | ||
279 | ctrl_outl(0xfffefffe, INTC_INTMSK2); | ||
280 | |||
281 | /* select IRL mode for IRL3-0 + IRL7-4 */ | ||
282 | ctrl_outl(ctrl_inl(INTC_ICR0) & ~0x00c00000, INTC_ICR0); | ||
283 | |||
284 | /* disable holding function, ie enable "SH-4 Mode" */ | ||
285 | ctrl_outl(ctrl_inl(INTC_ICR0) | 0x00200000, INTC_ICR0); | ||
286 | |||
264 | register_intc_controller(&intc_desc); | 287 | register_intc_controller(&intc_desc); |
265 | } | 288 | } |
266 | 289 | ||
@@ -268,12 +291,28 @@ void __init plat_irq_setup_pins(int mode) | |||
268 | { | 291 | { |
269 | switch (mode) { | 292 | switch (mode) { |
270 | case IRQ_MODE_IRQ: | 293 | case IRQ_MODE_IRQ: |
294 | /* select IRQ mode for IRL3-0 + IRL7-4 */ | ||
295 | ctrl_outl(ctrl_inl(INTC_ICR0) | 0x00c00000, INTC_ICR0); | ||
271 | register_intc_controller(&intc_irq_desc); | 296 | register_intc_controller(&intc_irq_desc); |
272 | break; | 297 | break; |
273 | case IRQ_MODE_IRL7654: | 298 | case IRQ_MODE_IRL7654: |
274 | register_intc_controller(&intc_irl7654_desc); | 299 | /* enable IRL7-4 but don't provide any masking */ |
300 | ctrl_outl(0x40000000, INTC_INTMSKCLR1); | ||
301 | ctrl_outl(0x0000fffe, INTC_INTMSKCLR2); | ||
275 | break; | 302 | break; |
276 | case IRQ_MODE_IRL3210: | 303 | case IRQ_MODE_IRL3210: |
304 | /* enable IRL0-3 but don't provide any masking */ | ||
305 | ctrl_outl(0x80000000, INTC_INTMSKCLR1); | ||
306 | ctrl_outl(0xfffe0000, INTC_INTMSKCLR2); | ||
307 | break; | ||
308 | case IRQ_MODE_IRL7654_MASK: | ||
309 | /* enable IRL7-4 and mask using cpu intc controller */ | ||
310 | ctrl_outl(0x40000000, INTC_INTMSKCLR1); | ||
311 | register_intc_controller(&intc_irl7654_desc); | ||
312 | break; | ||
313 | case IRQ_MODE_IRL3210_MASK: | ||
314 | /* enable IRL0-3 and mask using cpu intc controller */ | ||
315 | ctrl_outl(0x80000000, INTC_INTMSKCLR1); | ||
277 | register_intc_controller(&intc_irl3210_desc); | 316 | register_intc_controller(&intc_irl3210_desc); |
278 | break; | 317 | break; |
279 | default: | 318 | default: |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7785.c b/arch/sh/kernel/cpu/sh4a/setup-sh7785.c index cf047562e43f..39b215d6cee5 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7785.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7785.c | |||
@@ -10,6 +10,9 @@ | |||
10 | #include <linux/platform_device.h> | 10 | #include <linux/platform_device.h> |
11 | #include <linux/init.h> | 11 | #include <linux/init.h> |
12 | #include <linux/serial.h> | 12 | #include <linux/serial.h> |
13 | #include <linux/io.h> | ||
14 | #include <linux/mm.h> | ||
15 | #include <asm/mmzone.h> | ||
13 | #include <asm/sci.h> | 16 | #include <asm/sci.h> |
14 | 17 | ||
15 | static struct plat_sci_port sci_platform_data[] = { | 18 | static struct plat_sci_port sci_platform_data[] = { |
@@ -72,46 +75,281 @@ static int __init sh7785_devices_setup(void) | |||
72 | } | 75 | } |
73 | __initcall(sh7785_devices_setup); | 76 | __initcall(sh7785_devices_setup); |
74 | 77 | ||
75 | static struct intc2_data intc2_irq_table[] = { | 78 | enum { |
76 | { 28, 0, 24, 0, 0, 2 }, /* TMU0 */ | 79 | UNUSED = 0, |
77 | 80 | ||
78 | { 40, 8, 24, 0, 2, 3 }, /* SCIF0 ERI */ | 81 | /* interrupt sources */ |
79 | { 41, 8, 24, 0, 2, 3 }, /* SCIF0 RXI */ | 82 | |
80 | { 42, 8, 24, 0, 2, 3 }, /* SCIF0 BRI */ | 83 | IRL0_LLLL, IRL0_LLLH, IRL0_LLHL, IRL0_LLHH, |
81 | { 43, 8, 24, 0, 2, 3 }, /* SCIF0 TXI */ | 84 | IRL0_LHLL, IRL0_LHLH, IRL0_LHHL, IRL0_LHHH, |
82 | 85 | IRL0_HLLL, IRL0_HLLH, IRL0_HLHL, IRL0_HLHH, | |
83 | { 44, 8, 16, 0, 3, 3 }, /* SCIF1 ERI */ | 86 | IRL0_HHLL, IRL0_HHLH, IRL0_HHHL, |
84 | { 45, 8, 16, 0, 3, 3 }, /* SCIF1 RXI */ | 87 | |
85 | { 46, 8, 16, 0, 3, 3 }, /* SCIF1 BRI */ | 88 | IRL4_LLLL, IRL4_LLLH, IRL4_LLHL, IRL4_LLHH, |
86 | { 47, 8, 16, 0, 3, 3 }, /* SCIF1 TXI */ | 89 | IRL4_LHLL, IRL4_LHLH, IRL4_LHHL, IRL4_LHHH, |
87 | 90 | IRL4_HLLL, IRL4_HLLH, IRL4_HLHL, IRL4_HLHH, | |
88 | { 64, 0x14, 8, 0, 14, 2 }, /* PCIC0 */ | 91 | IRL4_HHLL, IRL4_HHLH, IRL4_HHHL, |
89 | { 65, 0x14, 0, 0, 15, 2 }, /* PCIC1 */ | 92 | |
90 | { 66, 0x18, 24, 0, 16, 2 }, /* PCIC2 */ | 93 | IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7, |
91 | { 67, 0x18, 16, 0, 17, 2 }, /* PCIC3 */ | 94 | WDT, |
92 | { 68, 0x18, 8, 0, 18, 2 }, /* PCIC4 */ | 95 | TMU0, TMU1, TMU2, TMU2_TICPI, |
93 | 96 | HUDI, | |
94 | { 60, 8, 8, 0, 4, 3 }, /* SCIF2 ERI, RXI, BRI, TXI */ | 97 | DMAC0_DMINT0, DMAC0_DMINT1, DMAC0_DMINT2, DMAC0_DMINT3, |
95 | { 60, 8, 0, 0, 5, 3 }, /* SCIF3 ERI, RXI, BRI, TXI */ | 98 | DMAC0_DMINT4, DMAC0_DMINT5, DMAC0_DMAE, |
96 | { 60, 12, 24, 0, 6, 3 }, /* SCIF4 ERI, RXI, BRI, TXI */ | 99 | SCIF0_ERI, SCIF0_RXI, SCIF0_BRI, SCIF0_TXI, |
97 | { 60, 12, 16, 0, 7, 3 }, /* SCIF5 ERI, RXI, BRI, TXI */ | 100 | SCIF1_ERI, SCIF1_RXI, SCIF1_BRI, SCIF1_TXI, |
101 | DMAC1_DMINT6, DMAC1_DMINT7, DMAC1_DMINT8, DMAC1_DMINT9, | ||
102 | DMAC1_DMINT10, DMAC1_DMINT11, DMAC1_DMAE, | ||
103 | HSPI, | ||
104 | SCIF2, SCIF3, SCIF4, SCIF5, | ||
105 | PCISERR, PCIINTA, PCIINTB, PCIINTC, PCIINTD, | ||
106 | PCIERR, PCIPWD3, PCIPWD2, PCIPWD1, PCIPWD0, | ||
107 | SIOF, | ||
108 | MMCIF_FSTAT, MMCIF_TRAN, MMCIF_ERR, MMCIF_FRDY, | ||
109 | DU, | ||
110 | GDTA_GACLI, GDTA_GAMCI, GDTA_GAERI, | ||
111 | TMU3, TMU4, TMU5, | ||
112 | SSI0, SSI1, | ||
113 | HAC0, HAC1, | ||
114 | FLCTL_FLSTE, FLCTL_FLEND, FLCTL_FLTRQ0, FLCTL_FLTRQ1, | ||
115 | GPIOI0, GPIOI1, GPIOI2, GPIOI3, | ||
116 | |||
117 | /* interrupt groups */ | ||
118 | |||
119 | TMU012, DMAC0, SCIF0, SCIF1, DMAC1, | ||
120 | PCIC5, MMCIF, GDTA, TMU345, FLCTL, GPIO | ||
98 | }; | 121 | }; |
99 | 122 | ||
100 | static struct intc2_desc intc2_irq_desc __read_mostly = { | 123 | static struct intc_vect vectors[] __initdata = { |
101 | .prio_base = 0xffd40000, | 124 | INTC_VECT(WDT, 0x560), |
102 | .msk_base = 0xffd40038, | 125 | INTC_VECT(TMU0, 0x580), INTC_VECT(TMU1, 0x5a0), |
103 | .mskclr_base = 0xffd4003c, | 126 | INTC_VECT(TMU2, 0x5c0), INTC_VECT(TMU2_TICPI, 0x5e0), |
127 | INTC_VECT(HUDI, 0x600), | ||
128 | INTC_VECT(DMAC0_DMINT0, 0x620), INTC_VECT(DMAC0_DMINT1, 0x640), | ||
129 | INTC_VECT(DMAC0_DMINT2, 0x660), INTC_VECT(DMAC0_DMINT3, 0x680), | ||
130 | INTC_VECT(DMAC0_DMINT4, 0x6a0), INTC_VECT(DMAC0_DMINT5, 0x6c0), | ||
131 | INTC_VECT(DMAC0_DMAE, 0x6e0), | ||
132 | INTC_VECT(SCIF0_ERI, 0x700), INTC_VECT(SCIF0_RXI, 0x720), | ||
133 | INTC_VECT(SCIF0_BRI, 0x740), INTC_VECT(SCIF0_TXI, 0x760), | ||
134 | INTC_VECT(SCIF1_ERI, 0x780), INTC_VECT(SCIF1_RXI, 0x7a0), | ||
135 | INTC_VECT(SCIF1_BRI, 0x7c0), INTC_VECT(SCIF1_TXI, 0x7e0), | ||
136 | INTC_VECT(DMAC1_DMINT6, 0x880), INTC_VECT(DMAC1_DMINT7, 0x8a0), | ||
137 | INTC_VECT(DMAC1_DMINT8, 0x8c0), INTC_VECT(DMAC1_DMINT9, 0x8e0), | ||
138 | INTC_VECT(DMAC1_DMINT10, 0x900), INTC_VECT(DMAC1_DMINT11, 0x920), | ||
139 | INTC_VECT(DMAC1_DMAE, 0x940), | ||
140 | INTC_VECT(HSPI, 0x960), | ||
141 | INTC_VECT(SCIF2, 0x980), INTC_VECT(SCIF3, 0x9a0), | ||
142 | INTC_VECT(SCIF4, 0x9c0), INTC_VECT(SCIF5, 0x9e0), | ||
143 | INTC_VECT(PCISERR, 0xa00), INTC_VECT(PCIINTA, 0xa20), | ||
144 | INTC_VECT(PCIINTB, 0xa40), INTC_VECT(PCIINTC, 0xa60), | ||
145 | INTC_VECT(PCIINTD, 0xa80), INTC_VECT(PCIERR, 0xaa0), | ||
146 | INTC_VECT(PCIPWD3, 0xac0), INTC_VECT(PCIPWD2, 0xae0), | ||
147 | INTC_VECT(PCIPWD1, 0xb00), INTC_VECT(PCIPWD0, 0xb20), | ||
148 | INTC_VECT(SIOF, 0xc00), | ||
149 | INTC_VECT(MMCIF_FSTAT, 0xd00), INTC_VECT(MMCIF_TRAN, 0xd20), | ||
150 | INTC_VECT(MMCIF_ERR, 0xd40), INTC_VECT(MMCIF_FRDY, 0xd60), | ||
151 | INTC_VECT(DU, 0xd80), | ||
152 | INTC_VECT(GDTA_GACLI, 0xda0), INTC_VECT(GDTA_GAMCI, 0xdc0), | ||
153 | INTC_VECT(GDTA_GAERI, 0xde0), | ||
154 | INTC_VECT(TMU3, 0xe00), INTC_VECT(TMU4, 0xe20), | ||
155 | INTC_VECT(TMU5, 0xe40), | ||
156 | INTC_VECT(SSI0, 0xe80), INTC_VECT(SSI1, 0xea0), | ||
157 | INTC_VECT(HAC0, 0xec0), INTC_VECT(HAC1, 0xee0), | ||
158 | INTC_VECT(FLCTL_FLSTE, 0xf00), INTC_VECT(FLCTL_FLEND, 0xf20), | ||
159 | INTC_VECT(FLCTL_FLTRQ0, 0xf40), INTC_VECT(FLCTL_FLTRQ1, 0xf60), | ||
160 | INTC_VECT(GPIOI0, 0xf80), INTC_VECT(GPIOI1, 0xfa0), | ||
161 | INTC_VECT(GPIOI2, 0xfc0), INTC_VECT(GPIOI3, 0xfe0), | ||
162 | }; | ||
104 | 163 | ||
105 | .intc2_data = intc2_irq_table, | 164 | static struct intc_group groups[] __initdata = { |
106 | .nr_irqs = ARRAY_SIZE(intc2_irq_table), | 165 | INTC_GROUP(TMU012, TMU0, TMU1, TMU2, TMU2_TICPI), |
166 | INTC_GROUP(DMAC0, DMAC0_DMINT0, DMAC0_DMINT1, DMAC0_DMINT2, | ||
167 | DMAC0_DMINT3, DMAC0_DMINT4, DMAC0_DMINT5, DMAC0_DMAE), | ||
168 | INTC_GROUP(SCIF0, SCIF0_ERI, SCIF0_RXI, SCIF0_BRI, SCIF0_TXI), | ||
169 | INTC_GROUP(SCIF1, SCIF1_ERI, SCIF1_RXI, SCIF1_BRI, SCIF1_TXI), | ||
170 | INTC_GROUP(DMAC1, DMAC1_DMINT6, DMAC1_DMINT7, DMAC1_DMINT8, | ||
171 | DMAC1_DMINT9, DMAC1_DMINT10, DMAC1_DMINT11, DMAC1_DMAE), | ||
172 | INTC_GROUP(PCIC5, PCIERR, PCIPWD3, PCIPWD2, PCIPWD1, PCIPWD0), | ||
173 | INTC_GROUP(MMCIF, MMCIF_FSTAT, MMCIF_TRAN, MMCIF_ERR, MMCIF_FRDY), | ||
174 | INTC_GROUP(GDTA, GDTA_GACLI, GDTA_GAMCI, GDTA_GAERI), | ||
175 | INTC_GROUP(TMU345, TMU3, TMU4, TMU5), | ||
176 | INTC_GROUP(FLCTL, FLCTL_FLSTE, FLCTL_FLEND, | ||
177 | FLCTL_FLTRQ0, FLCTL_FLTRQ1), | ||
178 | INTC_GROUP(GPIO, GPIOI0, GPIOI1, GPIOI2, GPIOI3), | ||
179 | }; | ||
107 | 180 | ||
108 | .chip = { | 181 | static struct intc_prio priorities[] __initdata = { |
109 | .name = "INTC2-sh7785", | 182 | INTC_PRIO(SCIF0, 3), |
110 | }, | 183 | INTC_PRIO(SCIF1, 3), |
184 | INTC_PRIO(SCIF2, 3), | ||
185 | INTC_PRIO(SCIF3, 3), | ||
186 | INTC_PRIO(SCIF4, 3), | ||
187 | INTC_PRIO(SCIF5, 3), | ||
188 | }; | ||
189 | |||
190 | static struct intc_mask_reg mask_registers[] __initdata = { | ||
191 | { 0xffd00044, 0xffd00064, 32, /* INTMSK0 / INTMSKCLR0 */ | ||
192 | { IRQ0, IRQ1, IRQ2, IRQ3, IRQ4, IRQ5, IRQ6, IRQ7 } }, | ||
193 | |||
194 | { 0xffd40080, 0xffd40084, 32, /* INTMSK2 / INTMSKCLR2 */ | ||
195 | { IRL0_LLLL, IRL0_LLLH, IRL0_LLHL, IRL0_LLHH, | ||
196 | IRL0_LHLL, IRL0_LHLH, IRL0_LHHL, IRL0_LHHH, | ||
197 | IRL0_HLLL, IRL0_HLLH, IRL0_HLHL, IRL0_HLHH, | ||
198 | IRL0_HHLL, IRL0_HHLH, IRL0_HHHL, 0, | ||
199 | IRL4_LLLL, IRL4_LLLH, IRL4_LLHL, IRL4_LLHH, | ||
200 | IRL4_LHLL, IRL4_LHLH, IRL4_LHHL, IRL4_LHHH, | ||
201 | IRL4_HLLL, IRL4_HLLH, IRL4_HLHL, IRL4_HLHH, | ||
202 | IRL4_HHLL, IRL4_HHLH, IRL4_HHHL, 0, } }, | ||
203 | |||
204 | { 0xffd40038, 0xffd4003c, 32, /* INT2MSKR / INT2MSKCR */ | ||
205 | { 0, 0, 0, GDTA, DU, SSI0, SSI1, GPIO, | ||
206 | FLCTL, MMCIF, HSPI, SIOF, PCIC5, PCIINTD, PCIINTC, PCIINTB, | ||
207 | PCIINTA, PCISERR, HAC1, HAC0, DMAC1, DMAC0, HUDI, WDT, | ||
208 | SCIF5, SCIF4, SCIF3, SCIF2, SCIF1, SCIF0, TMU345, TMU012 } }, | ||
209 | }; | ||
210 | |||
211 | static struct intc_prio_reg prio_registers[] __initdata = { | ||
212 | { 0xffd00010, 0, 32, 4, /* INTPRI */ { IRQ0, IRQ1, IRQ2, IRQ3, | ||
213 | IRQ4, IRQ5, IRQ6, IRQ7 } }, | ||
214 | { 0xffd40000, 0, 32, 8, /* INT2PRI0 */ { TMU0, TMU1, | ||
215 | TMU2, TMU2_TICPI } }, | ||
216 | { 0xffd40004, 0, 32, 8, /* INT2PRI1 */ { TMU3, TMU4, TMU5, } }, | ||
217 | { 0xffd40008, 0, 32, 8, /* INT2PRI2 */ { SCIF0, SCIF1, | ||
218 | SCIF2, SCIF3 } }, | ||
219 | { 0xffd4000c, 0, 32, 8, /* INT2PRI3 */ { SCIF4, SCIF5, WDT, } }, | ||
220 | { 0xffd40010, 0, 32, 8, /* INT2PRI4 */ { HUDI, DMAC0, DMAC1, } }, | ||
221 | { 0xffd40014, 0, 32, 8, /* INT2PRI5 */ { HAC0, HAC1, | ||
222 | PCISERR, PCIINTA } }, | ||
223 | { 0xffd40018, 0, 32, 8, /* INT2PRI6 */ { PCIINTB, PCIINTC, | ||
224 | PCIINTD, PCIC5 } }, | ||
225 | { 0xffd4001c, 0, 32, 8, /* INT2PRI7 */ { SIOF, HSPI, MMCIF, } }, | ||
226 | { 0xffd40020, 0, 32, 8, /* INT2PRI8 */ { FLCTL, GPIO, SSI0, SSI1, } }, | ||
227 | { 0xffd40024, 0, 32, 8, /* INT2PRI9 */ { DU, GDTA, } }, | ||
111 | }; | 228 | }; |
112 | 229 | ||
230 | static DECLARE_INTC_DESC(intc_desc, "sh7785", vectors, groups, priorities, | ||
231 | mask_registers, prio_registers, NULL); | ||
232 | |||
233 | /* Support for external interrupt pins in IRQ mode */ | ||
234 | |||
235 | static struct intc_vect vectors_irq0123[] __initdata = { | ||
236 | INTC_VECT(IRQ0, 0x240), INTC_VECT(IRQ1, 0x280), | ||
237 | INTC_VECT(IRQ2, 0x2c0), INTC_VECT(IRQ3, 0x300), | ||
238 | }; | ||
239 | |||
240 | static struct intc_vect vectors_irq4567[] __initdata = { | ||
241 | INTC_VECT(IRQ4, 0x340), INTC_VECT(IRQ5, 0x380), | ||
242 | INTC_VECT(IRQ6, 0x3c0), INTC_VECT(IRQ7, 0x200), | ||
243 | }; | ||
244 | |||
245 | static struct intc_sense_reg sense_registers[] __initdata = { | ||
246 | { 0xffd0001c, 32, 2, /* ICR1 */ { IRQ0, IRQ1, IRQ2, IRQ3, | ||
247 | IRQ4, IRQ5, IRQ6, IRQ7 } }, | ||
248 | }; | ||
249 | |||
250 | static DECLARE_INTC_DESC(intc_desc_irq0123, "sh7785-irq0123", vectors_irq0123, | ||
251 | NULL, NULL, mask_registers, prio_registers, | ||
252 | sense_registers); | ||
253 | |||
254 | static DECLARE_INTC_DESC(intc_desc_irq4567, "sh7785-irq4567", vectors_irq4567, | ||
255 | NULL, NULL, mask_registers, prio_registers, | ||
256 | sense_registers); | ||
257 | |||
258 | /* External interrupt pins in IRL mode */ | ||
259 | |||
260 | static struct intc_vect vectors_irl0123[] __initdata = { | ||
261 | INTC_VECT(IRL0_LLLL, 0x200), INTC_VECT(IRL0_LLLH, 0x220), | ||
262 | INTC_VECT(IRL0_LLHL, 0x240), INTC_VECT(IRL0_LLHH, 0x260), | ||
263 | INTC_VECT(IRL0_LHLL, 0x280), INTC_VECT(IRL0_LHLH, 0x2a0), | ||
264 | INTC_VECT(IRL0_LHHL, 0x2c0), INTC_VECT(IRL0_LHHH, 0x2e0), | ||
265 | INTC_VECT(IRL0_HLLL, 0x300), INTC_VECT(IRL0_HLLH, 0x320), | ||
266 | INTC_VECT(IRL0_HLHL, 0x340), INTC_VECT(IRL0_HLHH, 0x360), | ||
267 | INTC_VECT(IRL0_HHLL, 0x380), INTC_VECT(IRL0_HHLH, 0x3a0), | ||
268 | INTC_VECT(IRL0_HHHL, 0x3c0), | ||
269 | }; | ||
270 | |||
271 | static struct intc_vect vectors_irl4567[] __initdata = { | ||
272 | INTC_VECT(IRL4_LLLL, 0xb00), INTC_VECT(IRL4_LLLH, 0xb20), | ||
273 | INTC_VECT(IRL4_LLHL, 0xb40), INTC_VECT(IRL4_LLHH, 0xb60), | ||
274 | INTC_VECT(IRL4_LHLL, 0xb80), INTC_VECT(IRL4_LHLH, 0xba0), | ||
275 | INTC_VECT(IRL4_LHHL, 0xbc0), INTC_VECT(IRL4_LHHH, 0xbe0), | ||
276 | INTC_VECT(IRL4_HLLL, 0xc00), INTC_VECT(IRL4_HLLH, 0xc20), | ||
277 | INTC_VECT(IRL4_HLHL, 0xc40), INTC_VECT(IRL4_HLHH, 0xc60), | ||
278 | INTC_VECT(IRL4_HHLL, 0xc80), INTC_VECT(IRL4_HHLH, 0xca0), | ||
279 | INTC_VECT(IRL4_HHHL, 0xcc0), | ||
280 | }; | ||
281 | |||
282 | static DECLARE_INTC_DESC(intc_desc_irl0123, "sh7785-irl0123", vectors_irl0123, | ||
283 | NULL, NULL, mask_registers, NULL, NULL); | ||
284 | |||
285 | static DECLARE_INTC_DESC(intc_desc_irl4567, "sh7785-irl4567", vectors_irl4567, | ||
286 | NULL, NULL, mask_registers, NULL, NULL); | ||
287 | |||
288 | #define INTC_ICR0 0xffd00000 | ||
289 | #define INTC_INTMSK0 0xffd00044 | ||
290 | #define INTC_INTMSK1 0xffd00048 | ||
291 | #define INTC_INTMSK2 0xffd40080 | ||
292 | #define INTC_INTMSKCLR1 0xffd00068 | ||
293 | #define INTC_INTMSKCLR2 0xffd40084 | ||
294 | |||
113 | void __init plat_irq_setup(void) | 295 | void __init plat_irq_setup(void) |
114 | { | 296 | { |
115 | register_intc2_controller(&intc2_irq_desc); | 297 | /* disable IRQ3-0 + IRQ7-4 */ |
298 | ctrl_outl(0xff000000, INTC_INTMSK0); | ||
299 | |||
300 | /* disable IRL3-0 + IRL7-4 */ | ||
301 | ctrl_outl(0xc0000000, INTC_INTMSK1); | ||
302 | ctrl_outl(0xfffefffe, INTC_INTMSK2); | ||
303 | |||
304 | /* select IRL mode for IRL3-0 + IRL7-4 */ | ||
305 | ctrl_outl(ctrl_inl(INTC_ICR0) & ~0x00c00000, INTC_ICR0); | ||
306 | |||
307 | /* disable holding function, ie enable "SH-4 Mode" */ | ||
308 | ctrl_outl(ctrl_inl(INTC_ICR0) | 0x00200000, INTC_ICR0); | ||
309 | |||
310 | register_intc_controller(&intc_desc); | ||
311 | } | ||
312 | |||
313 | void __init plat_irq_setup_pins(int mode) | ||
314 | { | ||
315 | switch (mode) { | ||
316 | case IRQ_MODE_IRQ7654: | ||
317 | /* select IRQ mode for IRL7-4 */ | ||
318 | ctrl_outl(ctrl_inl(INTC_ICR0) | 0x00400000, INTC_ICR0); | ||
319 | register_intc_controller(&intc_desc_irq4567); | ||
320 | break; | ||
321 | case IRQ_MODE_IRQ3210: | ||
322 | /* select IRQ mode for IRL3-0 */ | ||
323 | ctrl_outl(ctrl_inl(INTC_ICR0) | 0x00800000, INTC_ICR0); | ||
324 | register_intc_controller(&intc_desc_irq0123); | ||
325 | break; | ||
326 | case IRQ_MODE_IRL7654: | ||
327 | /* enable IRL7-4 but don't provide any masking */ | ||
328 | ctrl_outl(0x40000000, INTC_INTMSKCLR1); | ||
329 | ctrl_outl(0x0000fffe, INTC_INTMSKCLR2); | ||
330 | break; | ||
331 | case IRQ_MODE_IRL3210: | ||
332 | /* enable IRL0-3 but don't provide any masking */ | ||
333 | ctrl_outl(0x80000000, INTC_INTMSKCLR1); | ||
334 | ctrl_outl(0xfffe0000, INTC_INTMSKCLR2); | ||
335 | break; | ||
336 | case IRQ_MODE_IRL7654_MASK: | ||
337 | /* enable IRL7-4 and mask using cpu intc controller */ | ||
338 | ctrl_outl(0x40000000, INTC_INTMSKCLR1); | ||
339 | register_intc_controller(&intc_desc_irl4567); | ||
340 | break; | ||
341 | case IRQ_MODE_IRL3210_MASK: | ||
342 | /* enable IRL0-3 and mask using cpu intc controller */ | ||
343 | ctrl_outl(0x80000000, INTC_INTMSKCLR1); | ||
344 | register_intc_controller(&intc_desc_irl0123); | ||
345 | break; | ||
346 | default: | ||
347 | BUG(); | ||
348 | } | ||
116 | } | 349 | } |
117 | 350 | ||
351 | void __init plat_mem_setup(void) | ||
352 | { | ||
353 | /* Register the URAM space as Node 1 */ | ||
354 | setup_bootmem_node(1, 0xe55f0000, 0xe5610000); | ||
355 | } | ||
diff --git a/arch/sh/kernel/cpu/sh4a/setup-shx3.c b/arch/sh/kernel/cpu/sh4a/setup-shx3.c index 704c064f70dc..c6cdd7e3b049 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-shx3.c +++ b/arch/sh/kernel/cpu/sh4a/setup-shx3.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/init.h> | 11 | #include <linux/init.h> |
12 | #include <linux/serial.h> | 12 | #include <linux/serial.h> |
13 | #include <linux/io.h> | 13 | #include <linux/io.h> |
14 | #include <asm/mmzone.h> | ||
14 | #include <asm/sci.h> | 15 | #include <asm/sci.h> |
15 | 16 | ||
16 | static struct plat_sci_port sci_platform_data[] = { | 17 | static struct plat_sci_port sci_platform_data[] = { |
@@ -58,28 +59,229 @@ static int __init shx3_devices_setup(void) | |||
58 | } | 59 | } |
59 | __initcall(shx3_devices_setup); | 60 | __initcall(shx3_devices_setup); |
60 | 61 | ||
61 | static struct intc2_data intc2_irq_table[] = { | 62 | enum { |
62 | { 16, 0, 0, 0, 1, 2 }, /* TMU0 */ | 63 | UNUSED = 0, |
63 | { 40, 4, 0, 0x20, 0, 3 }, /* SCIF0 ERI */ | 64 | |
64 | { 41, 4, 0, 0x20, 1, 3 }, /* SCIF0 RXI */ | 65 | /* interrupt sources */ |
65 | { 42, 4, 0, 0x20, 2, 3 }, /* SCIF0 BRI */ | 66 | IRL_LLLL, IRL_LLLH, IRL_LLHL, IRL_LLHH, |
66 | { 43, 4, 0, 0x20, 3, 3 }, /* SCIF0 TXI */ | 67 | IRL_LHLL, IRL_LHLH, IRL_LHHL, IRL_LHHH, |
68 | IRL_HLLL, IRL_HLLH, IRL_HLHL, IRL_HLHH, | ||
69 | IRL_HHLL, IRL_HHLH, IRL_HHHL, | ||
70 | IRQ0, IRQ1, IRQ2, IRQ3, | ||
71 | HUDII, | ||
72 | TMU0, TMU1, TMU2, TMU3, TMU4, TMU5, | ||
73 | PCII0, PCII1, PCII2, PCII3, PCII4, | ||
74 | PCII5, PCII6, PCII7, PCII8, PCII9, | ||
75 | SCIF0_ERI, SCIF0_RXI, SCIF0_BRI, SCIF0_TXI, | ||
76 | SCIF1_ERI, SCIF1_RXI, SCIF1_BRI, SCIF1_TXI, | ||
77 | SCIF2_ERI, SCIF2_RXI, SCIF2_BRI, SCIF2_TXI, | ||
78 | SCIF3_ERI, SCIF3_RXI, SCIF3_BRI, SCIF3_TXI, | ||
79 | DMAC0_DMINT0, DMAC0_DMINT1, DMAC0_DMINT2, DMAC0_DMINT3, | ||
80 | DMAC0_DMINT4, DMAC0_DMINT5, DMAC0_DMAE, | ||
81 | DU, | ||
82 | DMAC1_DMINT6, DMAC1_DMINT7, DMAC1_DMINT8, DMAC1_DMINT9, | ||
83 | DMAC1_DMINT10, DMAC1_DMINT11, DMAC1_DMAE, | ||
84 | IIC, VIN0, VIN1, VCORE0, ATAPI, | ||
85 | DTU0_TEND, DTU0_AE, DTU0_TMISS, | ||
86 | DTU1_TEND, DTU1_AE, DTU1_TMISS, | ||
87 | DTU2_TEND, DTU2_AE, DTU2_TMISS, | ||
88 | DTU3_TEND, DTU3_AE, DTU3_TMISS, | ||
89 | FE0, FE1, | ||
90 | GPIO0, GPIO1, GPIO2, GPIO3, | ||
91 | PAM, IRM, | ||
92 | INTICI0, INTICI1, INTICI2, INTICI3, | ||
93 | INTICI4, INTICI5, INTICI6, INTICI7, | ||
94 | |||
95 | /* interrupt groups */ | ||
96 | IRL, PCII56789, SCIF0, SCIF1, SCIF2, SCIF3, | ||
97 | DMAC0, DMAC1, DTU0, DTU1, DTU2, DTU3, | ||
98 | }; | ||
99 | |||
100 | static struct intc_vect vectors[] __initdata = { | ||
101 | INTC_VECT(HUDII, 0x3e0), | ||
102 | INTC_VECT(TMU0, 0x400), INTC_VECT(TMU1, 0x420), | ||
103 | INTC_VECT(TMU2, 0x440), INTC_VECT(TMU3, 0x460), | ||
104 | INTC_VECT(TMU4, 0x480), INTC_VECT(TMU5, 0x4a0), | ||
105 | INTC_VECT(PCII0, 0x500), INTC_VECT(PCII1, 0x520), | ||
106 | INTC_VECT(PCII2, 0x540), INTC_VECT(PCII3, 0x560), | ||
107 | INTC_VECT(PCII4, 0x580), INTC_VECT(PCII5, 0x5a0), | ||
108 | INTC_VECT(PCII6, 0x5c0), INTC_VECT(PCII7, 0x5e0), | ||
109 | INTC_VECT(PCII8, 0x600), INTC_VECT(PCII9, 0x620), | ||
110 | INTC_VECT(SCIF0_ERI, 0x700), INTC_VECT(SCIF0_RXI, 0x720), | ||
111 | INTC_VECT(SCIF0_BRI, 0x740), INTC_VECT(SCIF0_TXI, 0x760), | ||
112 | INTC_VECT(SCIF1_ERI, 0x780), INTC_VECT(SCIF1_RXI, 0x7a0), | ||
113 | INTC_VECT(SCIF1_BRI, 0x7c0), INTC_VECT(SCIF1_TXI, 0x7e0), | ||
114 | INTC_VECT(SCIF2_ERI, 0x800), INTC_VECT(SCIF2_RXI, 0x820), | ||
115 | INTC_VECT(SCIF2_BRI, 0x840), INTC_VECT(SCIF2_TXI, 0x860), | ||
116 | INTC_VECT(SCIF3_ERI, 0x880), INTC_VECT(SCIF3_RXI, 0x8a0), | ||
117 | INTC_VECT(SCIF3_BRI, 0x8c0), INTC_VECT(SCIF3_TXI, 0x8e0), | ||
118 | INTC_VECT(DMAC0_DMINT0, 0x900), INTC_VECT(DMAC0_DMINT1, 0x920), | ||
119 | INTC_VECT(DMAC0_DMINT2, 0x940), INTC_VECT(DMAC0_DMINT3, 0x960), | ||
120 | INTC_VECT(DMAC0_DMINT4, 0x980), INTC_VECT(DMAC0_DMINT5, 0x9a0), | ||
121 | INTC_VECT(DMAC0_DMAE, 0x9c0), | ||
122 | INTC_VECT(DU, 0x9e0), | ||
123 | INTC_VECT(DMAC1_DMINT6, 0xa00), INTC_VECT(DMAC1_DMINT7, 0xa20), | ||
124 | INTC_VECT(DMAC1_DMINT8, 0xa40), INTC_VECT(DMAC1_DMINT9, 0xa60), | ||
125 | INTC_VECT(DMAC1_DMINT10, 0xa80), INTC_VECT(DMAC1_DMINT11, 0xaa0), | ||
126 | INTC_VECT(DMAC1_DMAE, 0xac0), | ||
127 | INTC_VECT(IIC, 0xae0), | ||
128 | INTC_VECT(VIN0, 0xb00), INTC_VECT(VIN1, 0xb20), | ||
129 | INTC_VECT(VCORE0, 0xb00), INTC_VECT(ATAPI, 0xb60), | ||
130 | INTC_VECT(DTU0_TEND, 0xc00), INTC_VECT(DTU0_AE, 0xc20), | ||
131 | INTC_VECT(DTU0_TMISS, 0xc40), | ||
132 | INTC_VECT(DTU1_TEND, 0xc60), INTC_VECT(DTU1_AE, 0xc80), | ||
133 | INTC_VECT(DTU1_TMISS, 0xca0), | ||
134 | INTC_VECT(DTU2_TEND, 0xcc0), INTC_VECT(DTU2_AE, 0xce0), | ||
135 | INTC_VECT(DTU2_TMISS, 0xd00), | ||
136 | INTC_VECT(DTU3_TEND, 0xd20), INTC_VECT(DTU3_AE, 0xd40), | ||
137 | INTC_VECT(DTU3_TMISS, 0xd60), | ||
138 | INTC_VECT(FE0, 0xe00), INTC_VECT(FE1, 0xe20), | ||
139 | INTC_VECT(GPIO0, 0xe40), INTC_VECT(GPIO1, 0xe60), | ||
140 | INTC_VECT(GPIO2, 0xe80), INTC_VECT(GPIO3, 0xea0), | ||
141 | INTC_VECT(PAM, 0xec0), INTC_VECT(IRM, 0xee0), | ||
142 | INTC_VECT(INTICI0, 0xf00), INTC_VECT(INTICI1, 0xf20), | ||
143 | INTC_VECT(INTICI2, 0xf40), INTC_VECT(INTICI3, 0xf60), | ||
144 | INTC_VECT(INTICI4, 0xf80), INTC_VECT(INTICI5, 0xfa0), | ||
145 | INTC_VECT(INTICI6, 0xfc0), INTC_VECT(INTICI7, 0xfe0), | ||
67 | }; | 146 | }; |
68 | 147 | ||
69 | static struct intc2_desc intc2_irq_desc __read_mostly = { | 148 | static struct intc_group groups[] __initdata = { |
70 | .prio_base = 0xfe410000, | 149 | INTC_GROUP(IRL, IRL_LLLL, IRL_LLLH, IRL_LLHL, IRL_LLHH, |
71 | .msk_base = 0xfe410820, | 150 | IRL_LHLL, IRL_LHLH, IRL_LHHL, IRL_LHHH, |
72 | .mskclr_base = 0xfe410850, | 151 | IRL_HLLL, IRL_HLLH, IRL_HLHL, IRL_HLHH, |
152 | IRL_HHLL, IRL_HHLH, IRL_HHHL), | ||
153 | INTC_GROUP(PCII56789, PCII5, PCII6, PCII7, PCII8, PCII9), | ||
154 | INTC_GROUP(SCIF0, SCIF0_ERI, SCIF0_RXI, SCIF0_BRI, SCIF0_TXI), | ||
155 | INTC_GROUP(SCIF1, SCIF1_ERI, SCIF1_RXI, SCIF1_BRI, SCIF1_TXI), | ||
156 | INTC_GROUP(SCIF2, SCIF2_ERI, SCIF2_RXI, SCIF2_BRI, SCIF2_TXI), | ||
157 | INTC_GROUP(SCIF3, SCIF3_ERI, SCIF3_RXI, SCIF3_BRI, SCIF3_TXI), | ||
158 | INTC_GROUP(DMAC0, DMAC0_DMINT0, DMAC0_DMINT1, DMAC0_DMINT2, | ||
159 | DMAC0_DMINT3, DMAC0_DMINT4, DMAC0_DMINT5, DMAC0_DMAE), | ||
160 | INTC_GROUP(DMAC1, DMAC1_DMINT6, DMAC1_DMINT7, DMAC1_DMINT8, | ||
161 | DMAC1_DMINT9, DMAC1_DMINT10, DMAC1_DMINT11), | ||
162 | INTC_GROUP(DTU0, DTU0_TEND, DTU0_AE, DTU0_TMISS), | ||
163 | INTC_GROUP(DTU1, DTU1_TEND, DTU1_AE, DTU1_TMISS), | ||
164 | INTC_GROUP(DTU2, DTU2_TEND, DTU2_AE, DTU2_TMISS), | ||
165 | INTC_GROUP(DTU3, DTU3_TEND, DTU3_AE, DTU3_TMISS), | ||
166 | }; | ||
73 | 167 | ||
74 | .intc2_data = intc2_irq_table, | 168 | static struct intc_prio priorities[] __initdata = { |
75 | .nr_irqs = ARRAY_SIZE(intc2_irq_table), | 169 | INTC_PRIO(SCIF0, 3), |
170 | INTC_PRIO(SCIF1, 3), | ||
171 | INTC_PRIO(SCIF2, 3), | ||
172 | INTC_PRIO(SCIF3, 3), | ||
173 | }; | ||
76 | 174 | ||
77 | .chip = { | 175 | static struct intc_mask_reg mask_registers[] __initdata = { |
78 | .name = "INTC2-SHX3", | 176 | { 0xfe410030, 0xfe410050, 32, /* CnINTMSK0 / CnINTMSKCLR0 */ |
79 | }, | 177 | { IRQ0, IRQ1, IRQ2, IRQ3 } }, |
178 | { 0xfe410040, 0xfe410060, 32, /* CnINTMSK1 / CnINTMSKCLR1 */ | ||
179 | { IRL } }, | ||
180 | { 0xfe410820, 0xfe410850, 32, /* CnINT2MSK0 / CnINT2MSKCLR0 */ | ||
181 | { FE1, FE0, 0, ATAPI, VCORE0, VIN1, VIN0, IIC, | ||
182 | DU, GPIO3, GPIO2, GPIO1, GPIO0, PAM, 0, 0, | ||
183 | 0, 0, 0, 0, 0, 0, 0, 0, /* HUDI bits ignored */ | ||
184 | 0, TMU5, TMU4, TMU3, TMU2, TMU1, TMU0, 0, } }, | ||
185 | { 0xfe410830, 0xfe410860, 32, /* CnINT2MSK1 / CnINT2MSKCLR1 */ | ||
186 | { 0, 0, 0, 0, DTU3, DTU2, DTU1, DTU0, /* IRM bits ignored */ | ||
187 | PCII9, PCII8, PCII7, PCII6, PCII5, PCII4, PCII3, PCII2, | ||
188 | PCII1, PCII0, DMAC1_DMAE, DMAC1_DMINT11, | ||
189 | DMAC1_DMINT10, DMAC1_DMINT9, DMAC1_DMINT8, DMAC1_DMINT7, | ||
190 | DMAC1_DMINT6, DMAC0_DMAE, DMAC0_DMINT5, DMAC0_DMINT4, | ||
191 | DMAC0_DMINT3, DMAC0_DMINT2, DMAC0_DMINT1, DMAC0_DMINT0 } }, | ||
192 | { 0xfe410840, 0xfe410870, 32, /* CnINT2MSK2 / CnINT2MSKCLR2 */ | ||
193 | { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
194 | SCIF3_TXI, SCIF3_BRI, SCIF3_RXI, SCIF3_ERI, | ||
195 | SCIF2_TXI, SCIF2_BRI, SCIF2_RXI, SCIF2_ERI, | ||
196 | SCIF1_TXI, SCIF1_BRI, SCIF1_RXI, SCIF1_ERI, | ||
197 | SCIF0_TXI, SCIF0_BRI, SCIF0_RXI, SCIF0_ERI } }, | ||
198 | }; | ||
199 | |||
200 | static struct intc_prio_reg prio_registers[] __initdata = { | ||
201 | { 0xfe410010, 0, 32, 4, /* INTPRI */ { IRQ0, IRQ1, IRQ2, IRQ3 } }, | ||
202 | |||
203 | { 0xfe410800, 0, 32, 4, /* INT2PRI0 */ { 0, HUDII, TMU5, TMU4, | ||
204 | TMU3, TMU2, TMU1, TMU0 } }, | ||
205 | { 0xfe410804, 0, 32, 4, /* INT2PRI1 */ { DTU3, DTU2, DTU1, DTU0, | ||
206 | SCIF3, SCIF2, | ||
207 | SCIF1, SCIF0 } }, | ||
208 | { 0xfe410808, 0, 32, 4, /* INT2PRI2 */ { DMAC1, DMAC0, | ||
209 | PCII56789, PCII4, | ||
210 | PCII3, PCII2, | ||
211 | PCII1, PCII0 } }, | ||
212 | { 0xfe41080c, 0, 32, 4, /* INT2PRI3 */ { FE1, FE0, ATAPI, VCORE0, | ||
213 | VIN1, VIN0, IIC, DU} }, | ||
214 | { 0xfe410810, 0, 32, 4, /* INT2PRI4 */ { 0, 0, PAM, GPIO3, | ||
215 | GPIO2, GPIO1, GPIO0, IRM } }, | ||
216 | { 0xfe410090, 0xfe4100a0, 32, 4, /* CnICIPRI / CnICIPRICLR */ | ||
217 | { INTICI7, INTICI6, INTICI5, INTICI4, | ||
218 | INTICI3, INTICI2, INTICI1, INTICI0 }, INTC_SMP(4, 4) }, | ||
219 | }; | ||
220 | |||
221 | static DECLARE_INTC_DESC(intc_desc, "shx3", vectors, groups, priorities, | ||
222 | mask_registers, prio_registers, NULL); | ||
223 | |||
224 | /* Support for external interrupt pins in IRQ mode */ | ||
225 | static struct intc_vect vectors_irq[] __initdata = { | ||
226 | INTC_VECT(IRQ0, 0x240), INTC_VECT(IRQ1, 0x280), | ||
227 | INTC_VECT(IRQ2, 0x2c0), INTC_VECT(IRQ3, 0x300), | ||
228 | }; | ||
229 | |||
230 | static struct intc_sense_reg sense_registers[] __initdata = { | ||
231 | { 0xfe41001c, 32, 2, /* ICR1 */ { IRQ0, IRQ1, IRQ2, IRQ3 } }, | ||
80 | }; | 232 | }; |
81 | 233 | ||
234 | static DECLARE_INTC_DESC(intc_desc_irq, "shx3-irq", vectors_irq, groups, | ||
235 | priorities, mask_registers, prio_registers, | ||
236 | sense_registers); | ||
237 | |||
238 | /* External interrupt pins in IRL mode */ | ||
239 | static struct intc_vect vectors_irl[] __initdata = { | ||
240 | INTC_VECT(IRL_LLLL, 0x200), INTC_VECT(IRL_LLLH, 0x220), | ||
241 | INTC_VECT(IRL_LLHL, 0x240), INTC_VECT(IRL_LLHH, 0x260), | ||
242 | INTC_VECT(IRL_LHLL, 0x280), INTC_VECT(IRL_LHLH, 0x2a0), | ||
243 | INTC_VECT(IRL_LHHL, 0x2c0), INTC_VECT(IRL_LHHH, 0x2e0), | ||
244 | INTC_VECT(IRL_HLLL, 0x300), INTC_VECT(IRL_HLLH, 0x320), | ||
245 | INTC_VECT(IRL_HLHL, 0x340), INTC_VECT(IRL_HLHH, 0x360), | ||
246 | INTC_VECT(IRL_HHLL, 0x380), INTC_VECT(IRL_HHLH, 0x3a0), | ||
247 | INTC_VECT(IRL_HHHL, 0x3c0), | ||
248 | }; | ||
249 | |||
250 | static DECLARE_INTC_DESC(intc_desc_irl, "shx3-irl", vectors_irl, groups, | ||
251 | priorities, mask_registers, prio_registers, NULL); | ||
252 | |||
253 | void __init plat_irq_setup_pins(int mode) | ||
254 | { | ||
255 | switch (mode) { | ||
256 | case IRQ_MODE_IRQ: | ||
257 | register_intc_controller(&intc_desc_irq); | ||
258 | break; | ||
259 | case IRQ_MODE_IRL3210: | ||
260 | register_intc_controller(&intc_desc_irl); | ||
261 | break; | ||
262 | default: | ||
263 | BUG(); | ||
264 | } | ||
265 | } | ||
266 | |||
82 | void __init plat_irq_setup(void) | 267 | void __init plat_irq_setup(void) |
83 | { | 268 | { |
84 | register_intc2_controller(&intc2_irq_desc); | 269 | register_intc_controller(&intc_desc); |
270 | } | ||
271 | |||
272 | void __init plat_mem_setup(void) | ||
273 | { | ||
274 | unsigned int nid = 1; | ||
275 | |||
276 | /* Register CPU#0 URAM space as Node 1 */ | ||
277 | setup_bootmem_node(nid++, 0x145f0000, 0x14610000); /* CPU0 */ | ||
278 | |||
279 | #if 0 | ||
280 | /* XXX: Not yet.. */ | ||
281 | setup_bootmem_node(nid++, 0x14df0000, 0x14e10000); /* CPU1 */ | ||
282 | setup_bootmem_node(nid++, 0x155f0000, 0x15610000); /* CPU2 */ | ||
283 | setup_bootmem_node(nid++, 0x15df0000, 0x15e10000); /* CPU3 */ | ||
284 | #endif | ||
285 | |||
286 | setup_bootmem_node(nid++, 0x16000000, 0x16020000); /* CSM */ | ||
85 | } | 287 | } |
diff --git a/arch/sh/kernel/cpu/sh4a/smp-shx3.c b/arch/sh/kernel/cpu/sh4a/smp-shx3.c new file mode 100644 index 000000000000..e5e06845fa43 --- /dev/null +++ b/arch/sh/kernel/cpu/sh4a/smp-shx3.c | |||
@@ -0,0 +1,120 @@ | |||
1 | /* | ||
2 | * SH-X3 SMP | ||
3 | * | ||
4 | * Copyright (C) 2007 Paul Mundt | ||
5 | * Copyright (C) 2007 Magnus Damm | ||
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 <linux/cpumask.h> | ||
13 | #include <linux/smp.h> | ||
14 | #include <linux/interrupt.h> | ||
15 | #include <linux/io.h> | ||
16 | |||
17 | void __init plat_smp_setup(void) | ||
18 | { | ||
19 | unsigned int cpu = 0; | ||
20 | int i, num; | ||
21 | |||
22 | cpus_clear(cpu_possible_map); | ||
23 | cpu_set(cpu, cpu_possible_map); | ||
24 | |||
25 | __cpu_number_map[0] = 0; | ||
26 | __cpu_logical_map[0] = 0; | ||
27 | |||
28 | /* | ||
29 | * Do this stupidly for now.. we don't have an easy way to probe | ||
30 | * for the total number of cores. | ||
31 | */ | ||
32 | for (i = 1, num = 0; i < NR_CPUS; i++) { | ||
33 | cpu_set(i, cpu_possible_map); | ||
34 | __cpu_number_map[i] = ++num; | ||
35 | __cpu_logical_map[num] = i; | ||
36 | } | ||
37 | |||
38 | printk(KERN_INFO "Detected %i available secondary CPU(s)\n", num); | ||
39 | } | ||
40 | |||
41 | void __init plat_prepare_cpus(unsigned int max_cpus) | ||
42 | { | ||
43 | } | ||
44 | |||
45 | #define STBCR_REG(phys_id) (0xfe400004 | (phys_id << 12)) | ||
46 | #define RESET_REG(phys_id) (0xfe400008 | (phys_id << 12)) | ||
47 | |||
48 | #define STBCR_MSTP 0x00000001 | ||
49 | #define STBCR_RESET 0x00000002 | ||
50 | #define STBCR_LTSLP 0x80000000 | ||
51 | |||
52 | #define STBCR_AP_VAL (STBCR_RESET | STBCR_LTSLP) | ||
53 | |||
54 | void plat_start_cpu(unsigned int cpu, unsigned long entry_point) | ||
55 | { | ||
56 | ctrl_outl(entry_point, RESET_REG(cpu)); | ||
57 | |||
58 | if (!(ctrl_inl(STBCR_REG(cpu)) & STBCR_MSTP)) | ||
59 | ctrl_outl(STBCR_MSTP, STBCR_REG(cpu)); | ||
60 | |||
61 | while (!(ctrl_inl(STBCR_REG(cpu)) & STBCR_MSTP)) | ||
62 | ; | ||
63 | |||
64 | /* Start up secondary processor by sending a reset */ | ||
65 | ctrl_outl(STBCR_AP_VAL, STBCR_REG(cpu)); | ||
66 | } | ||
67 | |||
68 | int plat_smp_processor_id(void) | ||
69 | { | ||
70 | return ctrl_inl(0xff000048); /* CPIDR */ | ||
71 | } | ||
72 | |||
73 | void plat_send_ipi(unsigned int cpu, unsigned int message) | ||
74 | { | ||
75 | unsigned long addr = 0xfe410070 + (cpu * 4); | ||
76 | |||
77 | BUG_ON(cpu >= 4); | ||
78 | BUG_ON(message >= SMP_MSG_NR); | ||
79 | |||
80 | ctrl_outl(1 << (message << 2), addr); /* C0INTICI..CnINTICI */ | ||
81 | } | ||
82 | |||
83 | struct ipi_data { | ||
84 | void (*handler)(void *); | ||
85 | void *arg; | ||
86 | unsigned int message; | ||
87 | }; | ||
88 | |||
89 | static irqreturn_t ipi_interrupt_handler(int irq, void *arg) | ||
90 | { | ||
91 | struct ipi_data *id = arg; | ||
92 | unsigned int cpu = hard_smp_processor_id(); | ||
93 | unsigned int offs = 4 * cpu; | ||
94 | unsigned int x; | ||
95 | |||
96 | x = ctrl_inl(0xfe410070 + offs); /* C0INITICI..CnINTICI */ | ||
97 | x &= (1 << (id->message << 2)); | ||
98 | ctrl_outl(x, 0xfe410080 + offs); /* C0INTICICLR..CnINTICICLR */ | ||
99 | |||
100 | id->handler(id->arg); | ||
101 | |||
102 | return IRQ_HANDLED; | ||
103 | } | ||
104 | |||
105 | static struct ipi_data ipi_handlers[SMP_MSG_NR]; | ||
106 | |||
107 | int plat_register_ipi_handler(unsigned int message, | ||
108 | void (*handler)(void *), void *arg) | ||
109 | { | ||
110 | struct ipi_data *id = &ipi_handlers[message]; | ||
111 | |||
112 | BUG_ON(SMP_MSG_NR >= 8); | ||
113 | BUG_ON(message >= SMP_MSG_NR); | ||
114 | |||
115 | id->handler = handler; | ||
116 | id->arg = arg; | ||
117 | id->message = message; | ||
118 | |||
119 | return request_irq(104 + message, ipi_interrupt_handler, 0, "IPI", id); | ||
120 | } | ||
diff --git a/arch/sh/kernel/cpufreq.c b/arch/sh/kernel/cpufreq.c index 71d1c427b907..e0590ffebd73 100644 --- a/arch/sh/kernel/cpufreq.c +++ b/arch/sh/kernel/cpufreq.c | |||
@@ -77,8 +77,6 @@ static int sh_cpufreq_target(struct cpufreq_policy *policy, | |||
77 | 77 | ||
78 | static int sh_cpufreq_cpu_init(struct cpufreq_policy *policy) | 78 | static int sh_cpufreq_cpu_init(struct cpufreq_policy *policy) |
79 | { | 79 | { |
80 | printk(KERN_INFO "cpufreq: SuperH CPU frequency driver.\n"); | ||
81 | |||
82 | if (!cpu_online(policy->cpu)) | 80 | if (!cpu_online(policy->cpu)) |
83 | return -ENODEV; | 81 | return -ENODEV; |
84 | 82 | ||
@@ -143,6 +141,7 @@ static struct cpufreq_driver sh_cpufreq_driver = { | |||
143 | 141 | ||
144 | static int __init sh_cpufreq_module_init(void) | 142 | static int __init sh_cpufreq_module_init(void) |
145 | { | 143 | { |
144 | printk(KERN_INFO "cpufreq: SuperH CPU frequency driver.\n"); | ||
146 | return cpufreq_register_driver(&sh_cpufreq_driver); | 145 | return cpufreq_register_driver(&sh_cpufreq_driver); |
147 | } | 146 | } |
148 | 147 | ||
diff --git a/arch/sh/kernel/early_printk.c b/arch/sh/kernel/early_printk.c index 80b637c30203..2f30977558ad 100644 --- a/arch/sh/kernel/early_printk.c +++ b/arch/sh/kernel/early_printk.c | |||
@@ -3,7 +3,7 @@ | |||
3 | * | 3 | * |
4 | * Copyright (C) 1999, 2000 Niibe Yutaka | 4 | * Copyright (C) 1999, 2000 Niibe Yutaka |
5 | * Copyright (C) 2002 M. R. Brown | 5 | * Copyright (C) 2002 M. R. Brown |
6 | * Copyright (C) 2004 - 2006 Paul Mundt | 6 | * Copyright (C) 2004 - 2007 Paul Mundt |
7 | * | 7 | * |
8 | * This file is subject to the terms and conditions of the GNU General Public | 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 | 9 | * License. See the file "COPYING" in the main directory of this archive |
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/tty.h> | 13 | #include <linux/tty.h> |
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/io.h> | 15 | #include <linux/io.h> |
16 | #include <linux/delay.h> | ||
16 | 17 | ||
17 | #ifdef CONFIG_SH_STANDARD_BIOS | 18 | #ifdef CONFIG_SH_STANDARD_BIOS |
18 | #include <asm/sh_bios.h> | 19 | #include <asm/sh_bios.h> |
@@ -62,6 +63,16 @@ static struct console bios_console = { | |||
62 | #include <linux/serial_core.h> | 63 | #include <linux/serial_core.h> |
63 | #include "../../../drivers/serial/sh-sci.h" | 64 | #include "../../../drivers/serial/sh-sci.h" |
64 | 65 | ||
66 | #if defined(CONFIG_CPU_SUBTYPE_SH7720) | ||
67 | #define EPK_SCSMR_VALUE 0x000 | ||
68 | #define EPK_SCBRR_VALUE 0x00C | ||
69 | #define EPK_FIFO_SIZE 64 | ||
70 | #define EPK_FIFO_BITS (0x7f00 >> 8) | ||
71 | #else | ||
72 | #define EPK_FIFO_SIZE 16 | ||
73 | #define EPK_FIFO_BITS (0x1f00 >> 8) | ||
74 | #endif | ||
75 | |||
65 | static struct uart_port scif_port = { | 76 | static struct uart_port scif_port = { |
66 | .mapbase = CONFIG_EARLY_SCIF_CONSOLE_PORT, | 77 | .mapbase = CONFIG_EARLY_SCIF_CONSOLE_PORT, |
67 | .membase = (char __iomem *)CONFIG_EARLY_SCIF_CONSOLE_PORT, | 78 | .membase = (char __iomem *)CONFIG_EARLY_SCIF_CONSOLE_PORT, |
@@ -69,7 +80,7 @@ static struct uart_port scif_port = { | |||
69 | 80 | ||
70 | static void scif_sercon_putc(int c) | 81 | static void scif_sercon_putc(int c) |
71 | { | 82 | { |
72 | while (((sci_in(&scif_port, SCFDR) & 0x1f00 >> 8) == 16)) | 83 | while (((sci_in(&scif_port, SCFDR) & EPK_FIFO_BITS) >= EPK_FIFO_SIZE)) |
73 | ; | 84 | ; |
74 | 85 | ||
75 | sci_out(&scif_port, SCxTDR, c); | 86 | sci_out(&scif_port, SCxTDR, c); |
@@ -105,7 +116,22 @@ static struct console scif_console = { | |||
105 | .index = -1, | 116 | .index = -1, |
106 | }; | 117 | }; |
107 | 118 | ||
108 | #if defined(CONFIG_CPU_SH4) && !defined(CONFIG_SH_STANDARD_BIOS) | 119 | #if !defined(CONFIG_SH_STANDARD_BIOS) |
120 | #if defined(CONFIG_CPU_SUBTYPE_SH7720) | ||
121 | static void scif_sercon_init(char *s) | ||
122 | { | ||
123 | sci_out(&scif_port, SCSCR, 0x0000); /* clear TE and RE */ | ||
124 | sci_out(&scif_port, SCFCR, 0x4006); /* reset */ | ||
125 | sci_out(&scif_port, SCSCR, 0x0000); /* select internal clock */ | ||
126 | sci_out(&scif_port, SCSMR, EPK_SCSMR_VALUE); | ||
127 | sci_out(&scif_port, SCBRR, EPK_SCBRR_VALUE); | ||
128 | |||
129 | mdelay(1); /* wait 1-bit time */ | ||
130 | |||
131 | sci_out(&scif_port, SCFCR, 0x0030); /* TTRG=b'11 */ | ||
132 | sci_out(&scif_port, SCSCR, 0x0030); /* TE, RE */ | ||
133 | } | ||
134 | #elif defined(CONFIG_CPU_SH4) | ||
109 | #define DEFAULT_BAUD 115200 | 135 | #define DEFAULT_BAUD 115200 |
110 | /* | 136 | /* |
111 | * Simple SCIF init, primarily aimed at SH7750 and other similar SH-4 | 137 | * Simple SCIF init, primarily aimed at SH7750 and other similar SH-4 |
@@ -146,7 +172,8 @@ static void scif_sercon_init(char *s) | |||
146 | ctrl_outw(0, scif_port.mapbase + 36); | 172 | ctrl_outw(0, scif_port.mapbase + 36); |
147 | ctrl_outw(0x30, scif_port.mapbase + 8); | 173 | ctrl_outw(0x30, scif_port.mapbase + 8); |
148 | } | 174 | } |
149 | #endif /* CONFIG_CPU_SH4 && !CONFIG_SH_STANDARD_BIOS */ | 175 | #endif /* defined(CONFIG_CPU_SUBTYPE_SH7720) */ |
176 | #endif /* !defined(CONFIG_SH_STANDARD_BIOS) */ | ||
150 | #endif /* CONFIG_EARLY_SCIF_CONSOLE */ | 177 | #endif /* CONFIG_EARLY_SCIF_CONSOLE */ |
151 | 178 | ||
152 | /* | 179 | /* |
@@ -163,17 +190,12 @@ static struct console *early_console = | |||
163 | #endif | 190 | #endif |
164 | ; | 191 | ; |
165 | 192 | ||
166 | static int __initdata keep_early; | 193 | static int __init setup_early_printk(char *buf) |
167 | static int early_console_initialized; | ||
168 | |||
169 | int __init setup_early_printk(char *buf) | ||
170 | { | 194 | { |
171 | if (!buf) | 195 | int keep_early = 0; |
172 | return 0; | ||
173 | 196 | ||
174 | if (early_console_initialized) | 197 | if (!buf) |
175 | return 0; | 198 | return 0; |
176 | early_console_initialized = 1; | ||
177 | 199 | ||
178 | if (strstr(buf, "keep")) | 200 | if (strstr(buf, "keep")) |
179 | keep_early = 1; | 201 | keep_early = 1; |
@@ -186,7 +208,8 @@ int __init setup_early_printk(char *buf) | |||
186 | if (!strncmp(buf, "serial", 6)) { | 208 | if (!strncmp(buf, "serial", 6)) { |
187 | early_console = &scif_console; | 209 | early_console = &scif_console; |
188 | 210 | ||
189 | #if defined(CONFIG_CPU_SH4) && !defined(CONFIG_SH_STANDARD_BIOS) | 211 | #if (defined(CONFIG_CPU_SH4) || defined(CONFIG_CPU_SUBTYPE_SH7720)) && \ |
212 | !defined(CONFIG_SH_STANDARD_BIOS) | ||
190 | scif_sercon_init(buf + 6); | 213 | scif_sercon_init(buf + 6); |
191 | #endif | 214 | #endif |
192 | } | 215 | } |
diff --git a/arch/sh/kernel/entry-common.S b/arch/sh/kernel/entry-common.S index b46728027195..e0317ed080c3 100644 --- a/arch/sh/kernel/entry-common.S +++ b/arch/sh/kernel/entry-common.S | |||
@@ -176,7 +176,7 @@ work_notifysig: | |||
176 | jmp @r1 | 176 | jmp @r1 |
177 | lds r0, pr | 177 | lds r0, pr |
178 | work_resched: | 178 | work_resched: |
179 | #ifndef CONFIG_PREEMPT | 179 | #if defined(CONFIG_GUSA) && !defined(CONFIG_PREEMPT) |
180 | ! gUSA handling | 180 | ! gUSA handling |
181 | mov.l @(OFF_SP,r15), r0 ! get user space stack pointer | 181 | mov.l @(OFF_SP,r15), r0 ! get user space stack pointer |
182 | mov r0, r1 | 182 | mov r0, r1 |
diff --git a/arch/sh/kernel/head.S b/arch/sh/kernel/head.S index 0bccc0ca5a0f..3338239717f1 100644 --- a/arch/sh/kernel/head.S +++ b/arch/sh/kernel/head.S | |||
@@ -54,8 +54,8 @@ ENTRY(_stext) | |||
54 | mov.l 1f, r0 ! MD=1, RB=0, BL=0, IMASK=0xF | 54 | mov.l 1f, r0 ! MD=1, RB=0, BL=0, IMASK=0xF |
55 | ldc r0, sr | 55 | ldc r0, sr |
56 | ! Initialize global interrupt mask | 56 | ! Initialize global interrupt mask |
57 | mov #0, r0 | ||
58 | #ifdef CONFIG_CPU_HAS_SR_RB | 57 | #ifdef CONFIG_CPU_HAS_SR_RB |
58 | mov #0, r0 | ||
59 | ldc r0, r6_bank | 59 | ldc r0, r6_bank |
60 | #endif | 60 | #endif |
61 | 61 | ||
@@ -72,15 +72,18 @@ ENTRY(_stext) | |||
72 | ! | 72 | ! |
73 | mov.l 2f, r0 | 73 | mov.l 2f, r0 |
74 | mov r0, r15 ! Set initial r15 (stack pointer) | 74 | mov r0, r15 ! Set initial r15 (stack pointer) |
75 | mov #(THREAD_SIZE >> 10), r1 | ||
76 | shll8 r1 ! r1 = THREAD_SIZE | ||
77 | shll2 r1 | ||
78 | sub r1, r0 ! | ||
79 | #ifdef CONFIG_CPU_HAS_SR_RB | 75 | #ifdef CONFIG_CPU_HAS_SR_RB |
76 | mov.l 7f, r0 | ||
80 | ldc r0, r7_bank ! ... and initial thread_info | 77 | ldc r0, r7_bank ! ... and initial thread_info |
81 | #endif | 78 | #endif |
82 | 79 | ||
83 | ! Clear BSS area | 80 | ! Clear BSS area |
81 | #ifdef CONFIG_SMP | ||
82 | mov.l 3f, r0 | ||
83 | cmp/eq #0, r0 ! skip clear if set to zero | ||
84 | bt 10f | ||
85 | #endif | ||
86 | |||
84 | mov.l 3f, r1 | 87 | mov.l 3f, r1 |
85 | add #4, r1 | 88 | add #4, r1 |
86 | mov.l 4f, r2 | 89 | mov.l 4f, r2 |
@@ -89,13 +92,14 @@ ENTRY(_stext) | |||
89 | bf/s 9b ! while (r1 < r2) | 92 | bf/s 9b ! while (r1 < r2) |
90 | mov.l r0,@-r2 | 93 | mov.l r0,@-r2 |
91 | 94 | ||
95 | 10: | ||
92 | ! Additional CPU initialization | 96 | ! Additional CPU initialization |
93 | mov.l 6f, r0 | 97 | mov.l 6f, r0 |
94 | jsr @r0 | 98 | jsr @r0 |
95 | nop | 99 | nop |
96 | 100 | ||
97 | SYNCO() ! Wait for pending instructions.. | 101 | SYNCO() ! Wait for pending instructions.. |
98 | 102 | ||
99 | ! Start kernel | 103 | ! Start kernel |
100 | mov.l 5f, r0 | 104 | mov.l 5f, r0 |
101 | jmp @r0 | 105 | jmp @r0 |
@@ -107,8 +111,10 @@ ENTRY(_stext) | |||
107 | #else | 111 | #else |
108 | 1: .long 0x400080F0 ! MD=1, RB=0, BL=0, FD=1, IMASK=0xF | 112 | 1: .long 0x400080F0 ! MD=1, RB=0, BL=0, FD=1, IMASK=0xF |
109 | #endif | 113 | #endif |
114 | ENTRY(stack_start) | ||
110 | 2: .long init_thread_union+THREAD_SIZE | 115 | 2: .long init_thread_union+THREAD_SIZE |
111 | 3: .long __bss_start | 116 | 3: .long __bss_start |
112 | 4: .long _end | 117 | 4: .long _end |
113 | 5: .long start_kernel | 118 | 5: .long start_kernel |
114 | 6: .long sh_cpu_init | 119 | 6: .long sh_cpu_init |
120 | 7: .long init_thread_union | ||
diff --git a/arch/sh/kernel/kgdb_stub.c b/arch/sh/kernel/kgdb_stub.c index edd1ec214e6d..2fdc700dfd6e 100644 --- a/arch/sh/kernel/kgdb_stub.c +++ b/arch/sh/kernel/kgdb_stub.c | |||
@@ -150,13 +150,6 @@ struct kgdb_regs trap_registers; | |||
150 | char kgdb_in_gdb_mode; | 150 | char kgdb_in_gdb_mode; |
151 | char in_nmi; /* Set during NMI to prevent reentry */ | 151 | char in_nmi; /* Set during NMI to prevent reentry */ |
152 | int kgdb_nofault; /* Boolean to ignore bus errs (i.e. in GDB) */ | 152 | int kgdb_nofault; /* Boolean to ignore bus errs (i.e. in GDB) */ |
153 | int kgdb_enabled = 1; /* Default to enabled, cmdline can disable */ | ||
154 | |||
155 | /* Exposed for user access */ | ||
156 | struct task_struct *kgdb_current; | ||
157 | unsigned int kgdb_g_imask; | ||
158 | int kgdb_trapa_val; | ||
159 | int kgdb_excode; | ||
160 | 153 | ||
161 | /* Default values for SCI (can override via kernel args in setup.c) */ | 154 | /* Default values for SCI (can override via kernel args in setup.c) */ |
162 | #ifndef CONFIG_KGDB_DEFPORT | 155 | #ifndef CONFIG_KGDB_DEFPORT |
@@ -616,7 +609,7 @@ static short *get_step_address(void) | |||
616 | else | 609 | else |
617 | addr = trap_registers.pc + 2; | 610 | addr = trap_registers.pc + 2; |
618 | 611 | ||
619 | kgdb_flush_icache_range(addr, addr + 2); | 612 | flush_icache_range(addr, addr + 2); |
620 | return (short *) addr; | 613 | return (short *) addr; |
621 | } | 614 | } |
622 | 615 | ||
@@ -639,8 +632,7 @@ static void do_single_step(void) | |||
639 | *addr = STEP_OPCODE; | 632 | *addr = STEP_OPCODE; |
640 | 633 | ||
641 | /* Flush and return */ | 634 | /* Flush and return */ |
642 | kgdb_flush_icache_range((long) addr, (long) addr + 2); | 635 | flush_icache_range((long) addr, (long) addr + 2); |
643 | return; | ||
644 | } | 636 | } |
645 | 637 | ||
646 | /* Undo a single step */ | 638 | /* Undo a single step */ |
@@ -650,7 +642,7 @@ static void undo_single_step(void) | |||
650 | /* Use stepped_address in case we stopped elsewhere */ | 642 | /* Use stepped_address in case we stopped elsewhere */ |
651 | if (stepped_opcode != 0) { | 643 | if (stepped_opcode != 0) { |
652 | *(short*)stepped_address = stepped_opcode; | 644 | *(short*)stepped_address = stepped_opcode; |
653 | kgdb_flush_icache_range(stepped_address, stepped_address + 2); | 645 | flush_icache_range(stepped_address, stepped_address + 2); |
654 | } | 646 | } |
655 | stepped_opcode = 0; | 647 | stepped_opcode = 0; |
656 | } | 648 | } |
@@ -736,7 +728,7 @@ static void write_mem_msg(int binary) | |||
736 | ebin_to_mem(ptr, (char*)addr, length); | 728 | ebin_to_mem(ptr, (char*)addr, length); |
737 | else | 729 | else |
738 | hex_to_mem(ptr, (char*)addr, length); | 730 | hex_to_mem(ptr, (char*)addr, length); |
739 | kgdb_flush_icache_range(addr, addr + length); | 731 | flush_icache_range(addr, addr + length); |
740 | ptr = 0; | 732 | ptr = 0; |
741 | send_ok_msg(); | 733 | send_ok_msg(); |
742 | } | 734 | } |
@@ -815,14 +807,10 @@ static void set_regs_msg(void) | |||
815 | /* | 807 | /* |
816 | * Bring up the ports.. | 808 | * Bring up the ports.. |
817 | */ | 809 | */ |
818 | static int kgdb_serial_setup(void) | 810 | static int __init kgdb_serial_setup(void) |
819 | { | 811 | { |
820 | extern int kgdb_console_setup(struct console *co, char *options); | ||
821 | struct console dummy; | 812 | struct console dummy; |
822 | 813 | return kgdb_console_setup(&dummy, 0); | |
823 | kgdb_console_setup(&dummy, 0); | ||
824 | |||
825 | return 0; | ||
826 | } | 814 | } |
827 | #else | 815 | #else |
828 | #define kgdb_serial_setup() 0 | 816 | #define kgdb_serial_setup() 0 |
@@ -833,22 +821,6 @@ static void kgdb_command_loop(const int excep_code, const int trapa_value) | |||
833 | { | 821 | { |
834 | int sigval; | 822 | int sigval; |
835 | 823 | ||
836 | if (excep_code == NMI_VEC) { | ||
837 | #ifndef CONFIG_KGDB_NMI | ||
838 | printk(KERN_NOTICE "KGDB: Ignoring unexpected NMI?\n"); | ||
839 | return; | ||
840 | #else /* CONFIG_KGDB_NMI */ | ||
841 | if (!kgdb_enabled) { | ||
842 | kgdb_enabled = 1; | ||
843 | kgdb_init(); | ||
844 | } | ||
845 | #endif /* CONFIG_KGDB_NMI */ | ||
846 | } | ||
847 | |||
848 | /* Ignore if we're disabled */ | ||
849 | if (!kgdb_enabled) | ||
850 | return; | ||
851 | |||
852 | /* Enter GDB mode (e.g. after detach) */ | 824 | /* Enter GDB mode (e.g. after detach) */ |
853 | if (!kgdb_in_gdb_mode) { | 825 | if (!kgdb_in_gdb_mode) { |
854 | /* Do serial setup, notify user, issue preemptive ack */ | 826 | /* Do serial setup, notify user, issue preemptive ack */ |
@@ -959,18 +931,10 @@ static void handle_exception(struct pt_regs *regs) | |||
959 | 931 | ||
960 | /* Get excode for command loop call, user access */ | 932 | /* Get excode for command loop call, user access */ |
961 | asm("stc r2_bank, %0":"=r"(excep_code)); | 933 | asm("stc r2_bank, %0":"=r"(excep_code)); |
962 | kgdb_excode = excep_code; | ||
963 | |||
964 | /* Other interesting environment items for reference */ | ||
965 | asm("stc r6_bank, %0":"=r"(kgdb_g_imask)); | ||
966 | kgdb_current = current; | ||
967 | kgdb_trapa_val = trapa_value; | ||
968 | 934 | ||
969 | /* Act on the exception */ | 935 | /* Act on the exception */ |
970 | kgdb_command_loop(excep_code, trapa_value); | 936 | kgdb_command_loop(excep_code, trapa_value); |
971 | 937 | ||
972 | kgdb_current = NULL; | ||
973 | |||
974 | /* Copy back the (maybe modified) registers */ | 938 | /* Copy back the (maybe modified) registers */ |
975 | for (count = 0; count < 16; count++) | 939 | for (count = 0; count < 16; count++) |
976 | regs->regs[count] = trap_registers.regs[count]; | 940 | regs->regs[count] = trap_registers.regs[count]; |
@@ -994,11 +958,8 @@ asmlinkage void kgdb_handle_exception(unsigned long r4, unsigned long r5, | |||
994 | } | 958 | } |
995 | 959 | ||
996 | /* Initialise the KGDB data structures and serial configuration */ | 960 | /* Initialise the KGDB data structures and serial configuration */ |
997 | int kgdb_init(void) | 961 | int __init kgdb_init(void) |
998 | { | 962 | { |
999 | if (!kgdb_enabled) | ||
1000 | return 1; | ||
1001 | |||
1002 | in_nmi = 0; | 963 | in_nmi = 0; |
1003 | kgdb_nofault = 0; | 964 | kgdb_nofault = 0; |
1004 | stepped_opcode = 0; | 965 | stepped_opcode = 0; |
diff --git a/arch/sh/kernel/process.c b/arch/sh/kernel/process.c index 15ae322dbd74..b4469992d6b2 100644 --- a/arch/sh/kernel/process.c +++ b/arch/sh/kernel/process.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/tick.h> | 19 | #include <linux/tick.h> |
20 | #include <linux/reboot.h> | 20 | #include <linux/reboot.h> |
21 | #include <linux/fs.h> | 21 | #include <linux/fs.h> |
22 | #include <linux/preempt.h> | ||
22 | #include <asm/uaccess.h> | 23 | #include <asm/uaccess.h> |
23 | #include <asm/mmu_context.h> | 24 | #include <asm/mmu_context.h> |
24 | #include <asm/pgalloc.h> | 25 | #include <asm/pgalloc.h> |
@@ -349,12 +350,11 @@ struct task_struct *__switch_to(struct task_struct *prev, | |||
349 | unlazy_fpu(prev, task_pt_regs(prev)); | 350 | unlazy_fpu(prev, task_pt_regs(prev)); |
350 | #endif | 351 | #endif |
351 | 352 | ||
352 | #ifdef CONFIG_PREEMPT | 353 | #if defined(CONFIG_GUSA) && defined(CONFIG_PREEMPT) |
353 | { | 354 | { |
354 | unsigned long flags; | ||
355 | struct pt_regs *regs; | 355 | struct pt_regs *regs; |
356 | 356 | ||
357 | local_irq_save(flags); | 357 | preempt_disable(); |
358 | regs = task_pt_regs(prev); | 358 | regs = task_pt_regs(prev); |
359 | if (user_mode(regs) && regs->regs[15] >= 0xc0000000) { | 359 | if (user_mode(regs) && regs->regs[15] >= 0xc0000000) { |
360 | int offset = (int)regs->regs[15]; | 360 | int offset = (int)regs->regs[15]; |
@@ -365,7 +365,7 @@ struct task_struct *__switch_to(struct task_struct *prev, | |||
365 | /* Go to rewind point */ | 365 | /* Go to rewind point */ |
366 | regs->pc = regs->regs[0] + offset; | 366 | regs->pc = regs->regs[0] + offset; |
367 | } | 367 | } |
368 | local_irq_restore(flags); | 368 | preempt_enable_no_resched(); |
369 | } | 369 | } |
370 | #endif | 370 | #endif |
371 | 371 | ||
diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c index 2cf7dec0d690..b3027a6775b9 100644 --- a/arch/sh/kernel/setup.c +++ b/arch/sh/kernel/setup.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/mm.h> | 22 | #include <linux/mm.h> |
23 | #include <linux/kexec.h> | 23 | #include <linux/kexec.h> |
24 | #include <linux/module.h> | 24 | #include <linux/module.h> |
25 | #include <linux/smp.h> | ||
25 | #include <asm/uaccess.h> | 26 | #include <asm/uaccess.h> |
26 | #include <asm/io.h> | 27 | #include <asm/io.h> |
27 | #include <asm/page.h> | 28 | #include <asm/page.h> |
@@ -42,7 +43,13 @@ extern void * __rd_start, * __rd_end; | |||
42 | * This value will be used at the very early stage of serial setup. | 43 | * This value will be used at the very early stage of serial setup. |
43 | * The bigger value means no problem. | 44 | * The bigger value means no problem. |
44 | */ | 45 | */ |
45 | struct sh_cpuinfo boot_cpu_data = { CPU_SH_NONE, 10000000, }; | 46 | struct sh_cpuinfo cpu_data[NR_CPUS] __read_mostly = { |
47 | [0] = { | ||
48 | .type = CPU_SH_NONE, | ||
49 | .loops_per_jiffy = 10000000, | ||
50 | }, | ||
51 | }; | ||
52 | EXPORT_SYMBOL(cpu_data); | ||
46 | 53 | ||
47 | /* | 54 | /* |
48 | * The machine vector. First entry in .machvec.init, or clobbered by | 55 | * The machine vector. First entry in .machvec.init, or clobbered by |
@@ -272,6 +279,10 @@ void __init setup_arch(char **cmdline_p) | |||
272 | sh_mv.mv_setup(cmdline_p); | 279 | sh_mv.mv_setup(cmdline_p); |
273 | 280 | ||
274 | paging_init(); | 281 | paging_init(); |
282 | |||
283 | #ifdef CONFIG_SMP | ||
284 | plat_smp_setup(); | ||
285 | #endif | ||
275 | } | 286 | } |
276 | 287 | ||
277 | static const char *cpu_name[] = { | 288 | static const char *cpu_name[] = { |
@@ -279,7 +290,7 @@ static const char *cpu_name[] = { | |||
279 | [CPU_SH7705] = "SH7705", [CPU_SH7706] = "SH7706", | 290 | [CPU_SH7705] = "SH7705", [CPU_SH7706] = "SH7706", |
280 | [CPU_SH7707] = "SH7707", [CPU_SH7708] = "SH7708", | 291 | [CPU_SH7707] = "SH7707", [CPU_SH7708] = "SH7708", |
281 | [CPU_SH7709] = "SH7709", [CPU_SH7710] = "SH7710", | 292 | [CPU_SH7709] = "SH7709", [CPU_SH7710] = "SH7710", |
282 | [CPU_SH7712] = "SH7712", | 293 | [CPU_SH7712] = "SH7712", [CPU_SH7720] = "SH7720", |
283 | [CPU_SH7729] = "SH7729", [CPU_SH7750] = "SH7750", | 294 | [CPU_SH7729] = "SH7729", [CPU_SH7750] = "SH7750", |
284 | [CPU_SH7750S] = "SH7750S", [CPU_SH7750R] = "SH7750R", | 295 | [CPU_SH7750S] = "SH7750S", [CPU_SH7750R] = "SH7750R", |
285 | [CPU_SH7751] = "SH7751", [CPU_SH7751R] = "SH7751R", | 296 | [CPU_SH7751] = "SH7751", [CPU_SH7751R] = "SH7751R", |
diff --git a/arch/sh/kernel/sh_ksyms.c b/arch/sh/kernel/sh_ksyms.c index 37aef0a85197..548e4285b375 100644 --- a/arch/sh/kernel/sh_ksyms.c +++ b/arch/sh/kernel/sh_ksyms.c | |||
@@ -8,7 +8,7 @@ | |||
8 | #include <linux/vmalloc.h> | 8 | #include <linux/vmalloc.h> |
9 | #include <linux/pci.h> | 9 | #include <linux/pci.h> |
10 | #include <linux/irq.h> | 10 | #include <linux/irq.h> |
11 | 11 | #include <asm/sections.h> | |
12 | #include <asm/semaphore.h> | 12 | #include <asm/semaphore.h> |
13 | #include <asm/processor.h> | 13 | #include <asm/processor.h> |
14 | #include <asm/uaccess.h> | 14 | #include <asm/uaccess.h> |
@@ -43,7 +43,6 @@ EXPORT_SYMBOL(memcpy); | |||
43 | EXPORT_SYMBOL(memset); | 43 | EXPORT_SYMBOL(memset); |
44 | EXPORT_SYMBOL(memmove); | 44 | EXPORT_SYMBOL(memmove); |
45 | EXPORT_SYMBOL(__copy_user); | 45 | EXPORT_SYMBOL(__copy_user); |
46 | EXPORT_SYMBOL(boot_cpu_data); | ||
47 | 46 | ||
48 | #ifdef CONFIG_MMU | 47 | #ifdef CONFIG_MMU |
49 | EXPORT_SYMBOL(get_vm_area); | 48 | EXPORT_SYMBOL(get_vm_area); |
@@ -53,6 +52,7 @@ EXPORT_SYMBOL(get_vm_area); | |||
53 | EXPORT_SYMBOL(__up); | 52 | EXPORT_SYMBOL(__up); |
54 | EXPORT_SYMBOL(__down); | 53 | EXPORT_SYMBOL(__down); |
55 | EXPORT_SYMBOL(__down_interruptible); | 54 | EXPORT_SYMBOL(__down_interruptible); |
55 | EXPORT_SYMBOL(__down_trylock); | ||
56 | 56 | ||
57 | EXPORT_SYMBOL(__udelay); | 57 | EXPORT_SYMBOL(__udelay); |
58 | EXPORT_SYMBOL(__ndelay); | 58 | EXPORT_SYMBOL(__ndelay); |
@@ -128,7 +128,8 @@ DECLARE_EXPORT(__movstrSI12_i4); | |||
128 | #endif /* __GNUC__ == 4 */ | 128 | #endif /* __GNUC__ == 4 */ |
129 | #endif | 129 | #endif |
130 | 130 | ||
131 | #if defined(CONFIG_CPU_SH4) || defined(CONFIG_SH7705_CACHE_32KB) | 131 | #if !defined(CONFIG_CACHE_OFF) && (defined(CONFIG_CPU_SH4) || \ |
132 | defined(CONFIG_SH7705_CACHE_32KB)) | ||
132 | /* needed by some modules */ | 133 | /* needed by some modules */ |
133 | EXPORT_SYMBOL(flush_cache_all); | 134 | EXPORT_SYMBOL(flush_cache_all); |
134 | EXPORT_SYMBOL(flush_cache_range); | 135 | EXPORT_SYMBOL(flush_cache_range); |
@@ -136,17 +137,11 @@ EXPORT_SYMBOL(flush_dcache_page); | |||
136 | EXPORT_SYMBOL(__flush_purge_region); | 137 | EXPORT_SYMBOL(__flush_purge_region); |
137 | #endif | 138 | #endif |
138 | 139 | ||
139 | #if defined(CONFIG_MMU) && (defined(CONFIG_CPU_SH4) || \ | 140 | #if !defined(CONFIG_CACHE_OFF) && defined(CONFIG_MMU) && \ |
140 | defined(CONFIG_SH7705_CACHE_32KB)) | 141 | (defined(CONFIG_CPU_SH4) || defined(CONFIG_SH7705_CACHE_32KB)) |
141 | EXPORT_SYMBOL(clear_user_page); | 142 | EXPORT_SYMBOL(clear_user_page); |
142 | #endif | 143 | #endif |
143 | 144 | ||
144 | EXPORT_SYMBOL(__down_trylock); | ||
145 | |||
146 | #ifdef CONFIG_SMP | ||
147 | EXPORT_SYMBOL(synchronize_irq); | ||
148 | #endif | ||
149 | |||
150 | EXPORT_SYMBOL(csum_partial); | 145 | EXPORT_SYMBOL(csum_partial); |
151 | EXPORT_SYMBOL(csum_partial_copy_generic); | 146 | EXPORT_SYMBOL(csum_partial_copy_generic); |
152 | #ifdef CONFIG_IPV6 | 147 | #ifdef CONFIG_IPV6 |
@@ -154,3 +149,4 @@ EXPORT_SYMBOL(csum_ipv6_magic); | |||
154 | #endif | 149 | #endif |
155 | EXPORT_SYMBOL(clear_page); | 150 | EXPORT_SYMBOL(clear_page); |
156 | EXPORT_SYMBOL(__clear_user); | 151 | EXPORT_SYMBOL(__clear_user); |
152 | EXPORT_SYMBOL(_ebss); | ||
diff --git a/arch/sh/kernel/signal.c b/arch/sh/kernel/signal.c index 706d81ccd101..2f42442cf164 100644 --- a/arch/sh/kernel/signal.c +++ b/arch/sh/kernel/signal.c | |||
@@ -507,13 +507,11 @@ handle_signal(unsigned long sig, struct k_sigaction *ka, siginfo_t *info, | |||
507 | ctrl_inw(regs->pc - 4)); | 507 | ctrl_inw(regs->pc - 4)); |
508 | break; | 508 | break; |
509 | } | 509 | } |
510 | #ifdef CONFIG_GUSA | ||
510 | } else { | 511 | } else { |
511 | /* gUSA handling */ | 512 | /* gUSA handling */ |
512 | #ifdef CONFIG_PREEMPT | 513 | preempt_disable(); |
513 | unsigned long flags; | ||
514 | 514 | ||
515 | local_irq_save(flags); | ||
516 | #endif | ||
517 | if (regs->regs[15] >= 0xc0000000) { | 515 | if (regs->regs[15] >= 0xc0000000) { |
518 | int offset = (int)regs->regs[15]; | 516 | int offset = (int)regs->regs[15]; |
519 | 517 | ||
@@ -524,8 +522,8 @@ handle_signal(unsigned long sig, struct k_sigaction *ka, siginfo_t *info, | |||
524 | regs->pc = regs->regs[0] + offset - | 522 | regs->pc = regs->regs[0] + offset - |
525 | instruction_size(ctrl_inw(regs->pc-4)); | 523 | instruction_size(ctrl_inw(regs->pc-4)); |
526 | } | 524 | } |
527 | #ifdef CONFIG_PREEMPT | 525 | |
528 | local_irq_restore(flags); | 526 | preempt_enable_no_resched(); |
529 | #endif | 527 | #endif |
530 | } | 528 | } |
531 | 529 | ||
diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c index 283e1425ced5..94075e1a1e61 100644 --- a/arch/sh/kernel/smp.c +++ b/arch/sh/kernel/smp.c | |||
@@ -3,68 +3,40 @@ | |||
3 | * | 3 | * |
4 | * SMP support for the SuperH processors. | 4 | * SMP support for the SuperH processors. |
5 | * | 5 | * |
6 | * Copyright (C) 2002, 2003 Paul Mundt | 6 | * Copyright (C) 2002 - 2007 Paul Mundt |
7 | * Copyright (C) 2006 - 2007 Akio Idehara | ||
7 | * | 8 | * |
8 | * This program is free software; you can redistribute it and/or modify it | 9 | * This file is subject to the terms and conditions of the GNU General Public |
9 | * under the terms of the GNU General Public License as published by the | 10 | * License. See the file "COPYING" in the main directory of this archive |
10 | * Free Software Foundation; either version 2 of the License, or (at your | 11 | * for more details. |
11 | * option) any later version. | ||
12 | */ | 12 | */ |
13 | |||
14 | #include <linux/err.h> | 13 | #include <linux/err.h> |
15 | #include <linux/cache.h> | 14 | #include <linux/cache.h> |
16 | #include <linux/cpumask.h> | 15 | #include <linux/cpumask.h> |
17 | #include <linux/delay.h> | 16 | #include <linux/delay.h> |
18 | #include <linux/init.h> | 17 | #include <linux/init.h> |
19 | #include <linux/interrupt.h> | ||
20 | #include <linux/spinlock.h> | 18 | #include <linux/spinlock.h> |
21 | #include <linux/threads.h> | 19 | #include <linux/mm.h> |
22 | #include <linux/module.h> | 20 | #include <linux/module.h> |
23 | #include <linux/time.h> | 21 | #include <linux/interrupt.h> |
24 | #include <linux/timex.h> | ||
25 | #include <linux/sched.h> | ||
26 | #include <linux/module.h> | ||
27 | |||
28 | #include <asm/atomic.h> | 22 | #include <asm/atomic.h> |
29 | #include <asm/processor.h> | 23 | #include <asm/processor.h> |
30 | #include <asm/system.h> | 24 | #include <asm/system.h> |
31 | #include <asm/mmu_context.h> | 25 | #include <asm/mmu_context.h> |
32 | #include <asm/smp.h> | 26 | #include <asm/smp.h> |
27 | #include <asm/cacheflush.h> | ||
28 | #include <asm/sections.h> | ||
33 | 29 | ||
34 | /* | 30 | int __cpu_number_map[NR_CPUS]; /* Map physical to logical */ |
35 | * This was written with the Sega Saturn (SMP SH-2 7604) in mind, | 31 | int __cpu_logical_map[NR_CPUS]; /* Map logical to physical */ |
36 | * but is designed to be usable regardless if there's an MMU | ||
37 | * present or not. | ||
38 | */ | ||
39 | struct sh_cpuinfo cpu_data[NR_CPUS]; | ||
40 | |||
41 | extern void per_cpu_trap_init(void); | ||
42 | 32 | ||
43 | cpumask_t cpu_possible_map; | 33 | cpumask_t cpu_possible_map; |
44 | EXPORT_SYMBOL(cpu_possible_map); | 34 | EXPORT_SYMBOL(cpu_possible_map); |
45 | 35 | ||
46 | cpumask_t cpu_online_map; | 36 | cpumask_t cpu_online_map; |
47 | EXPORT_SYMBOL(cpu_online_map); | 37 | EXPORT_SYMBOL(cpu_online_map); |
48 | static atomic_t cpus_booted = ATOMIC_INIT(0); | ||
49 | 38 | ||
50 | /* These are defined by the board-specific code. */ | 39 | static atomic_t cpus_booted = ATOMIC_INIT(0); |
51 | |||
52 | /* | ||
53 | * Cause the function described by call_data to be executed on the passed | ||
54 | * cpu. When the function has finished, increment the finished field of | ||
55 | * call_data. | ||
56 | */ | ||
57 | void __smp_send_ipi(unsigned int cpu, unsigned int action); | ||
58 | |||
59 | /* | ||
60 | * Find the number of available processors | ||
61 | */ | ||
62 | unsigned int __smp_probe_cpus(void); | ||
63 | |||
64 | /* | ||
65 | * Start a particular processor | ||
66 | */ | ||
67 | void __smp_slave_init(unsigned int cpu); | ||
68 | 40 | ||
69 | /* | 41 | /* |
70 | * Run specified function on a particular processor. | 42 | * Run specified function on a particular processor. |
@@ -73,74 +45,123 @@ void __smp_call_function(unsigned int cpu); | |||
73 | 45 | ||
74 | static inline void __init smp_store_cpu_info(unsigned int cpu) | 46 | static inline void __init smp_store_cpu_info(unsigned int cpu) |
75 | { | 47 | { |
76 | cpu_data[cpu].loops_per_jiffy = loops_per_jiffy; | 48 | struct sh_cpuinfo *c = cpu_data + cpu; |
49 | |||
50 | c->loops_per_jiffy = loops_per_jiffy; | ||
77 | } | 51 | } |
78 | 52 | ||
79 | void __init smp_prepare_cpus(unsigned int max_cpus) | 53 | void __init smp_prepare_cpus(unsigned int max_cpus) |
80 | { | 54 | { |
81 | unsigned int cpu = smp_processor_id(); | 55 | unsigned int cpu = smp_processor_id(); |
82 | int i; | ||
83 | 56 | ||
84 | atomic_set(&cpus_booted, 1); | 57 | init_new_context(current, &init_mm); |
85 | smp_store_cpu_info(cpu); | 58 | current_thread_info()->cpu = cpu; |
86 | 59 | plat_prepare_cpus(max_cpus); | |
87 | for (i = 0; i < __smp_probe_cpus(); i++) | 60 | |
88 | cpu_set(i, cpu_possible_map); | 61 | #ifndef CONFIG_HOTPLUG_CPU |
62 | cpu_present_map = cpu_possible_map; | ||
63 | #endif | ||
89 | } | 64 | } |
90 | 65 | ||
91 | void __devinit smp_prepare_boot_cpu(void) | 66 | void __devinit smp_prepare_boot_cpu(void) |
92 | { | 67 | { |
93 | unsigned int cpu = smp_processor_id(); | 68 | unsigned int cpu = smp_processor_id(); |
94 | 69 | ||
70 | __cpu_number_map[0] = cpu; | ||
71 | __cpu_logical_map[0] = cpu; | ||
72 | |||
95 | cpu_set(cpu, cpu_online_map); | 73 | cpu_set(cpu, cpu_online_map); |
96 | cpu_set(cpu, cpu_possible_map); | 74 | cpu_set(cpu, cpu_possible_map); |
97 | } | 75 | } |
98 | 76 | ||
99 | int __cpu_up(unsigned int cpu) | 77 | asmlinkage void __cpuinit start_secondary(void) |
100 | { | 78 | { |
101 | struct task_struct *tsk; | 79 | unsigned int cpu; |
80 | struct mm_struct *mm = &init_mm; | ||
102 | 81 | ||
103 | tsk = fork_idle(cpu); | 82 | atomic_inc(&mm->mm_count); |
83 | atomic_inc(&mm->mm_users); | ||
84 | current->active_mm = mm; | ||
85 | BUG_ON(current->mm); | ||
86 | enter_lazy_tlb(mm, current); | ||
104 | 87 | ||
105 | if (IS_ERR(tsk)) | 88 | per_cpu_trap_init(); |
106 | panic("Failed forking idle task for cpu %d\n", cpu); | 89 | |
107 | 90 | preempt_disable(); | |
108 | task_thread_info(tsk)->cpu = cpu; | 91 | |
92 | local_irq_enable(); | ||
93 | |||
94 | calibrate_delay(); | ||
95 | |||
96 | cpu = smp_processor_id(); | ||
97 | smp_store_cpu_info(cpu); | ||
109 | 98 | ||
110 | cpu_set(cpu, cpu_online_map); | 99 | cpu_set(cpu, cpu_online_map); |
111 | 100 | ||
112 | return 0; | 101 | cpu_idle(); |
113 | } | 102 | } |
114 | 103 | ||
115 | int start_secondary(void *unused) | 104 | extern struct { |
105 | unsigned long sp; | ||
106 | unsigned long bss_start; | ||
107 | unsigned long bss_end; | ||
108 | void *start_kernel_fn; | ||
109 | void *cpu_init_fn; | ||
110 | void *thread_info; | ||
111 | } stack_start; | ||
112 | |||
113 | int __cpuinit __cpu_up(unsigned int cpu) | ||
116 | { | 114 | { |
117 | unsigned int cpu; | 115 | struct task_struct *tsk; |
116 | unsigned long timeout; | ||
118 | 117 | ||
119 | cpu = smp_processor_id(); | 118 | tsk = fork_idle(cpu); |
119 | if (IS_ERR(tsk)) { | ||
120 | printk(KERN_ERR "Failed forking idle task for cpu %d\n", cpu); | ||
121 | return PTR_ERR(tsk); | ||
122 | } | ||
120 | 123 | ||
121 | atomic_inc(&init_mm.mm_count); | 124 | /* Fill in data in head.S for secondary cpus */ |
122 | current->active_mm = &init_mm; | 125 | stack_start.sp = tsk->thread.sp; |
126 | stack_start.thread_info = tsk->stack; | ||
127 | stack_start.bss_start = 0; /* don't clear bss for secondary cpus */ | ||
128 | stack_start.start_kernel_fn = start_secondary; | ||
123 | 129 | ||
124 | smp_store_cpu_info(cpu); | 130 | flush_cache_all(); |
125 | 131 | ||
126 | __smp_slave_init(cpu); | 132 | plat_start_cpu(cpu, (unsigned long)_stext); |
127 | preempt_disable(); | ||
128 | per_cpu_trap_init(); | ||
129 | |||
130 | atomic_inc(&cpus_booted); | ||
131 | 133 | ||
132 | cpu_idle(); | 134 | timeout = jiffies + HZ; |
133 | return 0; | 135 | while (time_before(jiffies, timeout)) { |
136 | if (cpu_online(cpu)) | ||
137 | break; | ||
138 | |||
139 | udelay(10); | ||
140 | } | ||
141 | |||
142 | if (cpu_online(cpu)) | ||
143 | return 0; | ||
144 | |||
145 | return -ENOENT; | ||
134 | } | 146 | } |
135 | 147 | ||
136 | void __init smp_cpus_done(unsigned int max_cpus) | 148 | void __init smp_cpus_done(unsigned int max_cpus) |
137 | { | 149 | { |
138 | smp_mb(); | 150 | unsigned long bogosum = 0; |
151 | int cpu; | ||
152 | |||
153 | for_each_online_cpu(cpu) | ||
154 | bogosum += cpu_data[cpu].loops_per_jiffy; | ||
155 | |||
156 | printk(KERN_INFO "SMP: Total of %d processors activated " | ||
157 | "(%lu.%02lu BogoMIPS).\n", num_online_cpus(), | ||
158 | bogosum / (500000/HZ), | ||
159 | (bogosum / (5000/HZ)) % 100); | ||
139 | } | 160 | } |
140 | 161 | ||
141 | void smp_send_reschedule(int cpu) | 162 | void smp_send_reschedule(int cpu) |
142 | { | 163 | { |
143 | __smp_send_ipi(cpu, SMP_MSG_RESCHEDULE); | 164 | plat_send_ipi(cpu, SMP_MSG_RESCHEDULE); |
144 | } | 165 | } |
145 | 166 | ||
146 | static void stop_this_cpu(void *unused) | 167 | static void stop_this_cpu(void *unused) |
@@ -157,7 +178,6 @@ void smp_send_stop(void) | |||
157 | smp_call_function(stop_this_cpu, 0, 1, 0); | 178 | smp_call_function(stop_this_cpu, 0, 1, 0); |
158 | } | 179 | } |
159 | 180 | ||
160 | |||
161 | struct smp_fn_call_struct smp_fn_call = { | 181 | struct smp_fn_call_struct smp_fn_call = { |
162 | .lock = SPIN_LOCK_UNLOCKED, | 182 | .lock = SPIN_LOCK_UNLOCKED, |
163 | .finished = ATOMIC_INIT(0), | 183 | .finished = ATOMIC_INIT(0), |
@@ -175,9 +195,6 @@ int smp_call_function(void (*func)(void *info), void *info, int retry, int wait) | |||
175 | unsigned int nr_cpus = atomic_read(&cpus_booted); | 195 | unsigned int nr_cpus = atomic_read(&cpus_booted); |
176 | int i; | 196 | int i; |
177 | 197 | ||
178 | if (nr_cpus < 2) | ||
179 | return 0; | ||
180 | |||
181 | /* Can deadlock when called with interrupts disabled */ | 198 | /* Can deadlock when called with interrupts disabled */ |
182 | WARN_ON(irqs_disabled()); | 199 | WARN_ON(irqs_disabled()); |
183 | 200 | ||
@@ -189,7 +206,7 @@ int smp_call_function(void (*func)(void *info), void *info, int retry, int wait) | |||
189 | 206 | ||
190 | for (i = 0; i < nr_cpus; i++) | 207 | for (i = 0; i < nr_cpus; i++) |
191 | if (i != smp_processor_id()) | 208 | if (i != smp_processor_id()) |
192 | __smp_call_function(i); | 209 | plat_send_ipi(i, SMP_MSG_FUNCTION); |
193 | 210 | ||
194 | if (wait) | 211 | if (wait) |
195 | while (atomic_read(&smp_fn_call.finished) != (nr_cpus - 1)); | 212 | while (atomic_read(&smp_fn_call.finished) != (nr_cpus - 1)); |
@@ -205,3 +222,143 @@ int setup_profiling_timer(unsigned int multiplier) | |||
205 | return 0; | 222 | return 0; |
206 | } | 223 | } |
207 | 224 | ||
225 | static void flush_tlb_all_ipi(void *info) | ||
226 | { | ||
227 | local_flush_tlb_all(); | ||
228 | } | ||
229 | |||
230 | void flush_tlb_all(void) | ||
231 | { | ||
232 | on_each_cpu(flush_tlb_all_ipi, 0, 1, 1); | ||
233 | } | ||
234 | |||
235 | static void flush_tlb_mm_ipi(void *mm) | ||
236 | { | ||
237 | local_flush_tlb_mm((struct mm_struct *)mm); | ||
238 | } | ||
239 | |||
240 | /* | ||
241 | * The following tlb flush calls are invoked when old translations are | ||
242 | * being torn down, or pte attributes are changing. For single threaded | ||
243 | * address spaces, a new context is obtained on the current cpu, and tlb | ||
244 | * context on other cpus are invalidated to force a new context allocation | ||
245 | * at switch_mm time, should the mm ever be used on other cpus. For | ||
246 | * multithreaded address spaces, intercpu interrupts have to be sent. | ||
247 | * Another case where intercpu interrupts are required is when the target | ||
248 | * mm might be active on another cpu (eg debuggers doing the flushes on | ||
249 | * behalf of debugees, kswapd stealing pages from another process etc). | ||
250 | * Kanoj 07/00. | ||
251 | */ | ||
252 | |||
253 | void flush_tlb_mm(struct mm_struct *mm) | ||
254 | { | ||
255 | preempt_disable(); | ||
256 | |||
257 | if ((atomic_read(&mm->mm_users) != 1) || (current->mm != mm)) { | ||
258 | smp_call_function(flush_tlb_mm_ipi, (void *)mm, 1, 1); | ||
259 | } else { | ||
260 | int i; | ||
261 | for (i = 0; i < num_online_cpus(); i++) | ||
262 | if (smp_processor_id() != i) | ||
263 | cpu_context(i, mm) = 0; | ||
264 | } | ||
265 | local_flush_tlb_mm(mm); | ||
266 | |||
267 | preempt_enable(); | ||
268 | } | ||
269 | |||
270 | struct flush_tlb_data { | ||
271 | struct vm_area_struct *vma; | ||
272 | unsigned long addr1; | ||
273 | unsigned long addr2; | ||
274 | }; | ||
275 | |||
276 | static void flush_tlb_range_ipi(void *info) | ||
277 | { | ||
278 | struct flush_tlb_data *fd = (struct flush_tlb_data *)info; | ||
279 | |||
280 | local_flush_tlb_range(fd->vma, fd->addr1, fd->addr2); | ||
281 | } | ||
282 | |||
283 | void flush_tlb_range(struct vm_area_struct *vma, | ||
284 | unsigned long start, unsigned long end) | ||
285 | { | ||
286 | struct mm_struct *mm = vma->vm_mm; | ||
287 | |||
288 | preempt_disable(); | ||
289 | if ((atomic_read(&mm->mm_users) != 1) || (current->mm != mm)) { | ||
290 | struct flush_tlb_data fd; | ||
291 | |||
292 | fd.vma = vma; | ||
293 | fd.addr1 = start; | ||
294 | fd.addr2 = end; | ||
295 | smp_call_function(flush_tlb_range_ipi, (void *)&fd, 1, 1); | ||
296 | } else { | ||
297 | int i; | ||
298 | for (i = 0; i < num_online_cpus(); i++) | ||
299 | if (smp_processor_id() != i) | ||
300 | cpu_context(i, mm) = 0; | ||
301 | } | ||
302 | local_flush_tlb_range(vma, start, end); | ||
303 | preempt_enable(); | ||
304 | } | ||
305 | |||
306 | static void flush_tlb_kernel_range_ipi(void *info) | ||
307 | { | ||
308 | struct flush_tlb_data *fd = (struct flush_tlb_data *)info; | ||
309 | |||
310 | local_flush_tlb_kernel_range(fd->addr1, fd->addr2); | ||
311 | } | ||
312 | |||
313 | void flush_tlb_kernel_range(unsigned long start, unsigned long end) | ||
314 | { | ||
315 | struct flush_tlb_data fd; | ||
316 | |||
317 | fd.addr1 = start; | ||
318 | fd.addr2 = end; | ||
319 | on_each_cpu(flush_tlb_kernel_range_ipi, (void *)&fd, 1, 1); | ||
320 | } | ||
321 | |||
322 | static void flush_tlb_page_ipi(void *info) | ||
323 | { | ||
324 | struct flush_tlb_data *fd = (struct flush_tlb_data *)info; | ||
325 | |||
326 | local_flush_tlb_page(fd->vma, fd->addr1); | ||
327 | } | ||
328 | |||
329 | void flush_tlb_page(struct vm_area_struct *vma, unsigned long page) | ||
330 | { | ||
331 | preempt_disable(); | ||
332 | if ((atomic_read(&vma->vm_mm->mm_users) != 1) || | ||
333 | (current->mm != vma->vm_mm)) { | ||
334 | struct flush_tlb_data fd; | ||
335 | |||
336 | fd.vma = vma; | ||
337 | fd.addr1 = page; | ||
338 | smp_call_function(flush_tlb_page_ipi, (void *)&fd, 1, 1); | ||
339 | } else { | ||
340 | int i; | ||
341 | for (i = 0; i < num_online_cpus(); i++) | ||
342 | if (smp_processor_id() != i) | ||
343 | cpu_context(i, vma->vm_mm) = 0; | ||
344 | } | ||
345 | local_flush_tlb_page(vma, page); | ||
346 | preempt_enable(); | ||
347 | } | ||
348 | |||
349 | static void flush_tlb_one_ipi(void *info) | ||
350 | { | ||
351 | struct flush_tlb_data *fd = (struct flush_tlb_data *)info; | ||
352 | local_flush_tlb_one(fd->addr1, fd->addr2); | ||
353 | } | ||
354 | |||
355 | void flush_tlb_one(unsigned long asid, unsigned long vaddr) | ||
356 | { | ||
357 | struct flush_tlb_data fd; | ||
358 | |||
359 | fd.addr1 = asid; | ||
360 | fd.addr2 = vaddr; | ||
361 | |||
362 | smp_call_function(flush_tlb_one_ipi, (void *)&fd, 1, 1); | ||
363 | local_flush_tlb_one(asid, vaddr); | ||
364 | } | ||
diff --git a/arch/sh/kernel/syscalls.S b/arch/sh/kernel/syscalls.S index 91fb7024e06f..10bec45415ba 100644 --- a/arch/sh/kernel/syscalls.S +++ b/arch/sh/kernel/syscalls.S | |||
@@ -14,24 +14,6 @@ | |||
14 | #include <linux/sys.h> | 14 | #include <linux/sys.h> |
15 | #include <linux/linkage.h> | 15 | #include <linux/linkage.h> |
16 | 16 | ||
17 | #if !defined(CONFIG_NFSD) && !defined(CONFIG_NFSD_MODULE) | ||
18 | #define sys_nfsservctl sys_ni_syscall | ||
19 | #endif | ||
20 | |||
21 | #if !defined(CONFIG_MMU) | ||
22 | #define sys_madvise sys_ni_syscall | ||
23 | #define sys_readahead sys_ni_syscall | ||
24 | #define sys_mprotect sys_ni_syscall | ||
25 | #define sys_msync sys_ni_syscall | ||
26 | #define sys_mlock sys_ni_syscall | ||
27 | #define sys_munlock sys_ni_syscall | ||
28 | #define sys_mlockall sys_ni_syscall | ||
29 | #define sys_munlockall sys_ni_syscall | ||
30 | #define sys_mremap sys_ni_syscall | ||
31 | #define sys_mincore sys_ni_syscall | ||
32 | #define sys_remap_file_pages sys_ni_syscall | ||
33 | #endif | ||
34 | |||
35 | .data | 17 | .data |
36 | ENTRY(sys_call_table) | 18 | ENTRY(sys_call_table) |
37 | .long sys_restart_syscall /* 0 - old "setup()" system call*/ | 19 | .long sys_restart_syscall /* 0 - old "setup()" system call*/ |
diff --git a/arch/sh/kernel/timers/timer-tmu.c b/arch/sh/kernel/timers/timer-tmu.c index 8a545d54e2d3..628ec9a15e38 100644 --- a/arch/sh/kernel/timers/timer-tmu.c +++ b/arch/sh/kernel/timers/timer-tmu.c | |||
@@ -173,7 +173,8 @@ static int tmu_timer_init(void) | |||
173 | 173 | ||
174 | tmu_timer_stop(); | 174 | tmu_timer_stop(); |
175 | 175 | ||
176 | #if !defined(CONFIG_CPU_SUBTYPE_SH7760) && \ | 176 | #if !defined(CONFIG_CPU_SUBTYPE_SH7720) && \ |
177 | !defined(CONFIG_CPU_SUBTYPE_SH7760) && \ | ||
177 | !defined(CONFIG_CPU_SUBTYPE_SH7785) && \ | 178 | !defined(CONFIG_CPU_SUBTYPE_SH7785) && \ |
178 | !defined(CONFIG_CPU_SUBTYPE_SHX3) | 179 | !defined(CONFIG_CPU_SUBTYPE_SHX3) |
179 | ctrl_outb(TMU_TOCR_INIT, TMU_TOCR); | 180 | ctrl_outb(TMU_TOCR_INIT, TMU_TOCR); |
diff --git a/arch/sh/kernel/traps.c b/arch/sh/kernel/traps.c index 67015044d74a..dcb46e71da1c 100644 --- a/arch/sh/kernel/traps.c +++ b/arch/sh/kernel/traps.c | |||
@@ -807,12 +807,13 @@ static inline void __init gdb_vbr_init(void) | |||
807 | } | 807 | } |
808 | #endif | 808 | #endif |
809 | 809 | ||
810 | void __init per_cpu_trap_init(void) | 810 | void __cpuinit per_cpu_trap_init(void) |
811 | { | 811 | { |
812 | extern void *vbr_base; | 812 | extern void *vbr_base; |
813 | 813 | ||
814 | #ifdef CONFIG_SH_STANDARD_BIOS | 814 | #ifdef CONFIG_SH_STANDARD_BIOS |
815 | gdb_vbr_init(); | 815 | if (raw_smp_processor_id() == 0) |
816 | gdb_vbr_init(); | ||
816 | #endif | 817 | #endif |
817 | 818 | ||
818 | /* NOTE: The VBR value should be at P1 | 819 | /* NOTE: The VBR value should be at P1 |
diff --git a/arch/sh/kernel/vmlinux.lds.S b/arch/sh/kernel/vmlinux.lds.S index 9cb95af7b090..6d5abba2ee27 100644 --- a/arch/sh/kernel/vmlinux.lds.S +++ b/arch/sh/kernel/vmlinux.lds.S | |||
@@ -62,6 +62,8 @@ SECTIONS | |||
62 | __nosave_end = .; | 62 | __nosave_end = .; |
63 | 63 | ||
64 | PERCPU(PAGE_SIZE) | 64 | PERCPU(PAGE_SIZE) |
65 | |||
66 | . = ALIGN(L1_CACHE_BYTES); | ||
65 | .data.cacheline_aligned : { *(.data.cacheline_aligned) } | 67 | .data.cacheline_aligned : { *(.data.cacheline_aligned) } |
66 | 68 | ||
67 | _edata = .; /* End of data section */ | 69 | _edata = .; /* End of data section */ |
@@ -89,7 +91,14 @@ SECTIONS | |||
89 | __con_initcall_end = .; | 91 | __con_initcall_end = .; |
90 | SECURITY_INIT | 92 | SECURITY_INIT |
91 | 93 | ||
94 | /* .exit.text is discarded at runtime, not link time, to deal with | ||
95 | references from .rodata */ | ||
96 | .exit.text : { *(.exit.text) } | ||
97 | .exit.data : { *(.exit.data) } | ||
98 | |||
92 | #ifdef CONFIG_BLK_DEV_INITRD | 99 | #ifdef CONFIG_BLK_DEV_INITRD |
100 | . = ALIGN(PAGE_SIZE); | ||
101 | |||
93 | __initramfs_start = .; | 102 | __initramfs_start = .; |
94 | .init.ramfs : { *(.init.ramfs) } | 103 | .init.ramfs : { *(.init.ramfs) } |
95 | __initramfs_end = .; | 104 | __initramfs_end = .; |
@@ -107,6 +116,7 @@ SECTIONS | |||
107 | *(.bss.page_aligned) | 116 | *(.bss.page_aligned) |
108 | *(.bss) | 117 | *(.bss) |
109 | . = ALIGN(4); | 118 | . = ALIGN(4); |
119 | _ebss = .; /* uClinux MTD sucks */ | ||
110 | _end = . ; | 120 | _end = . ; |
111 | } | 121 | } |
112 | 122 | ||
diff --git a/arch/sh/mm/Kconfig b/arch/sh/mm/Kconfig index 43f3972a5fb9..cf446bbab5b0 100644 --- a/arch/sh/mm/Kconfig +++ b/arch/sh/mm/Kconfig | |||
@@ -2,7 +2,6 @@ | |||
2 | # Processor families | 2 | # Processor families |
3 | # | 3 | # |
4 | config CPU_SH2 | 4 | config CPU_SH2 |
5 | select SH_WRITETHROUGH if !CPU_SH2A | ||
6 | bool | 5 | bool |
7 | 6 | ||
8 | config CPU_SH2A | 7 | config CPU_SH2A |
@@ -19,6 +18,7 @@ config CPU_SH4 | |||
19 | select CPU_HAS_INTEVT | 18 | select CPU_HAS_INTEVT |
20 | select CPU_HAS_SR_RB | 19 | select CPU_HAS_SR_RB |
21 | select CPU_HAS_PTEA if (!CPU_SUBTYPE_ST40 && !CPU_SH4A) || CPU_SHX2 | 20 | select CPU_HAS_PTEA if (!CPU_SUBTYPE_ST40 && !CPU_SH4A) || CPU_SHX2 |
21 | select CPU_HAS_FPU if !CPU_SH4AL_DSP | ||
22 | 22 | ||
23 | config CPU_SH4A | 23 | config CPU_SH4A |
24 | bool | 24 | bool |
@@ -32,7 +32,6 @@ config CPU_SH4AL_DSP | |||
32 | config CPU_SUBTYPE_ST40 | 32 | config CPU_SUBTYPE_ST40 |
33 | bool | 33 | bool |
34 | select CPU_SH4 | 34 | select CPU_SH4 |
35 | select CPU_HAS_INTC2_IRQ | ||
36 | 35 | ||
37 | config CPU_SHX2 | 36 | config CPU_SHX2 |
38 | bool | 37 | bool |
@@ -52,26 +51,22 @@ choice | |||
52 | config CPU_SUBTYPE_SH7619 | 51 | config CPU_SUBTYPE_SH7619 |
53 | bool "Support SH7619 processor" | 52 | bool "Support SH7619 processor" |
54 | select CPU_SH2 | 53 | select CPU_SH2 |
55 | select CPU_HAS_IPR_IRQ | ||
56 | 54 | ||
57 | # SH-2A Processor Support | 55 | # SH-2A Processor Support |
58 | 56 | ||
59 | config CPU_SUBTYPE_SH7206 | 57 | config CPU_SUBTYPE_SH7206 |
60 | bool "Support SH7206 processor" | 58 | bool "Support SH7206 processor" |
61 | select CPU_SH2A | 59 | select CPU_SH2A |
62 | select CPU_HAS_IPR_IRQ | ||
63 | 60 | ||
64 | # SH-3 Processor Support | 61 | # SH-3 Processor Support |
65 | 62 | ||
66 | config CPU_SUBTYPE_SH7705 | 63 | config CPU_SUBTYPE_SH7705 |
67 | bool "Support SH7705 processor" | 64 | bool "Support SH7705 processor" |
68 | select CPU_SH3 | 65 | select CPU_SH3 |
69 | select CPU_HAS_IPR_IRQ | ||
70 | 66 | ||
71 | config CPU_SUBTYPE_SH7706 | 67 | config CPU_SUBTYPE_SH7706 |
72 | bool "Support SH7706 processor" | 68 | bool "Support SH7706 processor" |
73 | select CPU_SH3 | 69 | select CPU_SH3 |
74 | select CPU_HAS_IPR_IRQ | ||
75 | help | 70 | help |
76 | Select SH7706 if you have a 133 Mhz SH-3 HD6417706 CPU. | 71 | Select SH7706 if you have a 133 Mhz SH-3 HD6417706 CPU. |
77 | 72 | ||
@@ -91,14 +86,12 @@ config CPU_SUBTYPE_SH7708 | |||
91 | config CPU_SUBTYPE_SH7709 | 86 | config CPU_SUBTYPE_SH7709 |
92 | bool "Support SH7709 processor" | 87 | bool "Support SH7709 processor" |
93 | select CPU_SH3 | 88 | select CPU_SH3 |
94 | select CPU_HAS_IPR_IRQ | ||
95 | help | 89 | help |
96 | Select SH7709 if you have a 80 Mhz SH-3 HD6417709 CPU. | 90 | Select SH7709 if you have a 80 Mhz SH-3 HD6417709 CPU. |
97 | 91 | ||
98 | config CPU_SUBTYPE_SH7710 | 92 | config CPU_SUBTYPE_SH7710 |
99 | bool "Support SH7710 processor" | 93 | bool "Support SH7710 processor" |
100 | select CPU_SH3 | 94 | select CPU_SH3 |
101 | select CPU_HAS_IPR_IRQ | ||
102 | select CPU_HAS_DSP | 95 | select CPU_HAS_DSP |
103 | help | 96 | help |
104 | Select SH7710 if you have a SH3-DSP SH7710 CPU. | 97 | Select SH7710 if you have a SH3-DSP SH7710 CPU. |
@@ -106,24 +99,28 @@ config CPU_SUBTYPE_SH7710 | |||
106 | config CPU_SUBTYPE_SH7712 | 99 | config CPU_SUBTYPE_SH7712 |
107 | bool "Support SH7712 processor" | 100 | bool "Support SH7712 processor" |
108 | select CPU_SH3 | 101 | select CPU_SH3 |
109 | select CPU_HAS_IPR_IRQ | ||
110 | select CPU_HAS_DSP | 102 | select CPU_HAS_DSP |
111 | help | 103 | help |
112 | Select SH7712 if you have a SH3-DSP SH7712 CPU. | 104 | Select SH7712 if you have a SH3-DSP SH7712 CPU. |
113 | 105 | ||
106 | config CPU_SUBTYPE_SH7720 | ||
107 | bool "Support SH7720 processor" | ||
108 | select CPU_SH3 | ||
109 | select CPU_HAS_DSP | ||
110 | help | ||
111 | Select SH7720 if you have a SH3-DSP SH7720 CPU. | ||
112 | |||
114 | # SH-4 Processor Support | 113 | # SH-4 Processor Support |
115 | 114 | ||
116 | config CPU_SUBTYPE_SH7750 | 115 | config CPU_SUBTYPE_SH7750 |
117 | bool "Support SH7750 processor" | 116 | bool "Support SH7750 processor" |
118 | select CPU_SH4 | 117 | select CPU_SH4 |
119 | select CPU_HAS_INTC_IRQ | ||
120 | help | 118 | help |
121 | Select SH7750 if you have a 200 Mhz SH-4 HD6417750 CPU. | 119 | Select SH7750 if you have a 200 Mhz SH-4 HD6417750 CPU. |
122 | 120 | ||
123 | config CPU_SUBTYPE_SH7091 | 121 | config CPU_SUBTYPE_SH7091 |
124 | bool "Support SH7091 processor" | 122 | bool "Support SH7091 processor" |
125 | select CPU_SH4 | 123 | select CPU_SH4 |
126 | select CPU_HAS_INTC_IRQ | ||
127 | help | 124 | help |
128 | Select SH7091 if you have an SH-4 based Sega device (such as | 125 | Select SH7091 if you have an SH-4 based Sega device (such as |
129 | the Dreamcast, Naomi, and Naomi 2). | 126 | the Dreamcast, Naomi, and Naomi 2). |
@@ -131,17 +128,14 @@ config CPU_SUBTYPE_SH7091 | |||
131 | config CPU_SUBTYPE_SH7750R | 128 | config CPU_SUBTYPE_SH7750R |
132 | bool "Support SH7750R processor" | 129 | bool "Support SH7750R processor" |
133 | select CPU_SH4 | 130 | select CPU_SH4 |
134 | select CPU_HAS_INTC_IRQ | ||
135 | 131 | ||
136 | config CPU_SUBTYPE_SH7750S | 132 | config CPU_SUBTYPE_SH7750S |
137 | bool "Support SH7750S processor" | 133 | bool "Support SH7750S processor" |
138 | select CPU_SH4 | 134 | select CPU_SH4 |
139 | select CPU_HAS_INTC_IRQ | ||
140 | 135 | ||
141 | config CPU_SUBTYPE_SH7751 | 136 | config CPU_SUBTYPE_SH7751 |
142 | bool "Support SH7751 processor" | 137 | bool "Support SH7751 processor" |
143 | select CPU_SH4 | 138 | select CPU_SH4 |
144 | select CPU_HAS_INTC_IRQ | ||
145 | help | 139 | help |
146 | Select SH7751 if you have a 166 Mhz SH-4 HD6417751 CPU, | 140 | Select SH7751 if you have a 166 Mhz SH-4 HD6417751 CPU, |
147 | or if you have a HD6417751R CPU. | 141 | or if you have a HD6417751R CPU. |
@@ -149,13 +143,10 @@ config CPU_SUBTYPE_SH7751 | |||
149 | config CPU_SUBTYPE_SH7751R | 143 | config CPU_SUBTYPE_SH7751R |
150 | bool "Support SH7751R processor" | 144 | bool "Support SH7751R processor" |
151 | select CPU_SH4 | 145 | select CPU_SH4 |
152 | select CPU_HAS_INTC_IRQ | ||
153 | 146 | ||
154 | config CPU_SUBTYPE_SH7760 | 147 | config CPU_SUBTYPE_SH7760 |
155 | bool "Support SH7760 processor" | 148 | bool "Support SH7760 processor" |
156 | select CPU_SH4 | 149 | select CPU_SH4 |
157 | select CPU_HAS_INTC2_IRQ | ||
158 | select CPU_HAS_IPR_IRQ | ||
159 | 150 | ||
160 | config CPU_SUBTYPE_SH4_202 | 151 | config CPU_SUBTYPE_SH4_202 |
161 | bool "Support SH4-202 processor" | 152 | bool "Support SH4-202 processor" |
@@ -185,19 +176,21 @@ config CPU_SUBTYPE_SH7770 | |||
185 | config CPU_SUBTYPE_SH7780 | 176 | config CPU_SUBTYPE_SH7780 |
186 | bool "Support SH7780 processor" | 177 | bool "Support SH7780 processor" |
187 | select CPU_SH4A | 178 | select CPU_SH4A |
188 | select CPU_HAS_INTC_IRQ | ||
189 | 179 | ||
190 | config CPU_SUBTYPE_SH7785 | 180 | config CPU_SUBTYPE_SH7785 |
191 | bool "Support SH7785 processor" | 181 | bool "Support SH7785 processor" |
192 | select CPU_SH4A | 182 | select CPU_SH4A |
193 | select CPU_SHX2 | 183 | select CPU_SHX2 |
194 | select CPU_HAS_INTC2_IRQ | 184 | select ARCH_SPARSEMEM_ENABLE |
185 | select SYS_SUPPORTS_NUMA | ||
195 | 186 | ||
196 | config CPU_SUBTYPE_SHX3 | 187 | config CPU_SUBTYPE_SHX3 |
197 | bool "Support SH-X3 processor" | 188 | bool "Support SH-X3 processor" |
198 | select CPU_SH4A | 189 | select CPU_SH4A |
199 | select CPU_SHX3 | 190 | select CPU_SHX3 |
200 | select CPU_HAS_INTC2_IRQ | 191 | select ARCH_SPARSEMEM_ENABLE |
192 | select SYS_SUPPORTS_NUMA | ||
193 | select SYS_SUPPORTS_SMP | ||
201 | 194 | ||
202 | # SH4AL-DSP Processor Support | 195 | # SH4AL-DSP Processor Support |
203 | 196 | ||
@@ -209,7 +202,6 @@ config CPU_SUBTYPE_SH7722 | |||
209 | bool "Support SH7722 processor" | 202 | bool "Support SH7722 processor" |
210 | select CPU_SH4AL_DSP | 203 | select CPU_SH4AL_DSP |
211 | select CPU_SHX2 | 204 | select CPU_SHX2 |
212 | select CPU_HAS_INTC_IRQ | ||
213 | select ARCH_SPARSEMEM_ENABLE | 205 | select ARCH_SPARSEMEM_ENABLE |
214 | select SYS_SUPPORTS_NUMA | 206 | select SYS_SUPPORTS_NUMA |
215 | 207 | ||
@@ -274,7 +266,7 @@ config 32BIT | |||
274 | 266 | ||
275 | config X2TLB | 267 | config X2TLB |
276 | bool "Enable extended TLB mode" | 268 | bool "Enable extended TLB mode" |
277 | depends on CPU_SHX2 && MMU && EXPERIMENTAL | 269 | depends on (CPU_SHX2 || CPU_SHX3) && MMU && EXPERIMENTAL |
278 | help | 270 | help |
279 | Selecting this option will enable the extended mode of the SH-X2 | 271 | Selecting this option will enable the extended mode of the SH-X2 |
280 | TLB. For legacy SH-X behaviour and interoperability, say N. For | 272 | TLB. For legacy SH-X behaviour and interoperability, say N. For |
@@ -307,6 +299,7 @@ config NUMA | |||
307 | 299 | ||
308 | config NODES_SHIFT | 300 | config NODES_SHIFT |
309 | int | 301 | int |
302 | default "3" if CPU_SUBTYPE_SHX3 | ||
310 | default "1" | 303 | default "1" |
311 | depends on NEED_MULTIPLE_NODES | 304 | depends on NEED_MULTIPLE_NODES |
312 | 305 | ||
@@ -323,7 +316,9 @@ config ARCH_SPARSEMEM_DEFAULT | |||
323 | 316 | ||
324 | config MAX_ACTIVE_REGIONS | 317 | config MAX_ACTIVE_REGIONS |
325 | int | 318 | int |
326 | default "2" if (CPU_SUBTYPE_SH7722 && SPARSEMEM) | 319 | default "6" if (CPU_SUBTYPE_SHX3 && SPARSEMEM) |
320 | default "2" if SPARSEMEM && (CPU_SUBTYPE_SH7722 || \ | ||
321 | CPU_SUBTYPE_SH7785) | ||
327 | default "1" | 322 | default "1" |
328 | 323 | ||
329 | config ARCH_POPULATES_NODE_MAP | 324 | config ARCH_POPULATES_NODE_MAP |
@@ -342,25 +337,27 @@ config ARCH_MEMORY_PROBE | |||
342 | 337 | ||
343 | choice | 338 | choice |
344 | prompt "Kernel page size" | 339 | prompt "Kernel page size" |
340 | default PAGE_SIZE_8KB if X2TLB | ||
345 | default PAGE_SIZE_4KB | 341 | default PAGE_SIZE_4KB |
346 | 342 | ||
347 | config PAGE_SIZE_4KB | 343 | config PAGE_SIZE_4KB |
348 | bool "4kB" | 344 | bool "4kB" |
345 | depends on !X2TLB | ||
349 | help | 346 | help |
350 | This is the default page size used by all SuperH CPUs. | 347 | This is the default page size used by all SuperH CPUs. |
351 | 348 | ||
352 | config PAGE_SIZE_8KB | 349 | config PAGE_SIZE_8KB |
353 | bool "8kB" | 350 | bool "8kB" |
354 | depends on EXPERIMENTAL && X2TLB | 351 | depends on X2TLB |
355 | help | 352 | help |
356 | This enables 8kB pages as supported by SH-X2 and later MMUs. | 353 | This enables 8kB pages as supported by SH-X2 and later MMUs. |
357 | 354 | ||
358 | config PAGE_SIZE_64KB | 355 | config PAGE_SIZE_64KB |
359 | bool "64kB" | 356 | bool "64kB" |
360 | depends on EXPERIMENTAL && CPU_SH4 | 357 | depends on CPU_SH4 |
361 | help | 358 | help |
362 | This enables support for 64kB pages, possible on all SH-4 | 359 | This enables support for 64kB pages, possible on all SH-4 |
363 | CPUs and later. Highly experimental, not recommended. | 360 | CPUs and later. |
364 | 361 | ||
365 | endchoice | 362 | endchoice |
366 | 363 | ||
@@ -412,8 +409,17 @@ config SH_DIRECT_MAPPED | |||
412 | Turn this option off for platforms that do not have a direct-mapped | 409 | Turn this option off for platforms that do not have a direct-mapped |
413 | cache, and you have no need to run the caches in such a configuration. | 410 | cache, and you have no need to run the caches in such a configuration. |
414 | 411 | ||
415 | config SH_WRITETHROUGH | 412 | choice |
416 | bool "Use write-through caching" | 413 | prompt "Cache mode" |
414 | default CACHE_WRITEBACK if CPU_SH2A || CPU_SH3 || CPU_SH4 | ||
415 | default CACHE_WRITETHROUGH if (CPU_SH2 && !CPU_SH2A) | ||
416 | |||
417 | config CACHE_WRITEBACK | ||
418 | bool "Write-back" | ||
419 | depends on CPU_SH2A || CPU_SH3 || CPU_SH4 | ||
420 | |||
421 | config CACHE_WRITETHROUGH | ||
422 | bool "Write-through" | ||
417 | help | 423 | help |
418 | Selecting this option will configure the caches in write-through | 424 | Selecting this option will configure the caches in write-through |
419 | mode, as opposed to the default write-back configuration. | 425 | mode, as opposed to the default write-back configuration. |
@@ -424,4 +430,9 @@ config SH_WRITETHROUGH | |||
424 | 430 | ||
425 | If unsure, say N. | 431 | If unsure, say N. |
426 | 432 | ||
433 | config CACHE_OFF | ||
434 | bool "Off" | ||
435 | |||
436 | endchoice | ||
437 | |||
427 | endmenu | 438 | endmenu |
diff --git a/arch/sh/mm/Makefile b/arch/sh/mm/Makefile index 4061e89d84d0..ee30fb44dfe1 100644 --- a/arch/sh/mm/Makefile +++ b/arch/sh/mm/Makefile | |||
@@ -4,29 +4,32 @@ | |||
4 | 4 | ||
5 | obj-y := init.o extable.o consistent.o | 5 | obj-y := init.o extable.o consistent.o |
6 | 6 | ||
7 | obj-$(CONFIG_CPU_SH2) += cache-sh2.o | 7 | ifndef CONFIG_CACHE_OFF |
8 | obj-$(CONFIG_CPU_SH3) += cache-sh3.o | 8 | obj-$(CONFIG_CPU_SH2) += cache-sh2.o |
9 | obj-$(CONFIG_CPU_SH4) += cache-sh4.o | 9 | obj-$(CONFIG_CPU_SH3) += cache-sh3.o |
10 | obj-$(CONFIG_CPU_SH4) += cache-sh4.o | ||
11 | obj-$(CONFIG_SH7705_CACHE_32KB) += cache-sh7705.o | ||
12 | endif | ||
10 | 13 | ||
11 | mmu-y := tlb-nommu.o pg-nommu.o | 14 | mmu-y := tlb-nommu.o pg-nommu.o |
12 | mmu-$(CONFIG_CPU_SH3) += fault-nommu.o | ||
13 | mmu-$(CONFIG_CPU_SH4) += fault-nommu.o | ||
14 | mmu-$(CONFIG_MMU) := fault.o clear_page.o copy_page.o tlb-flush.o \ | 15 | mmu-$(CONFIG_MMU) := fault.o clear_page.o copy_page.o tlb-flush.o \ |
15 | ioremap.o | 16 | ioremap.o |
16 | 17 | ||
17 | obj-y += $(mmu-y) | 18 | obj-y += $(mmu-y) |
18 | 19 | ||
19 | ifdef CONFIG_DEBUG_FS | 20 | ifdef CONFIG_DEBUG_FS |
20 | obj-$(CONFIG_CPU_SH4) += cache-debugfs.o | 21 | obj-$(CONFIG_CPU_SH4) += cache-debugfs.o |
21 | endif | 22 | endif |
22 | 23 | ||
23 | ifdef CONFIG_MMU | 24 | ifdef CONFIG_MMU |
24 | obj-$(CONFIG_CPU_SH3) += tlb-sh3.o | 25 | obj-$(CONFIG_CPU_SH3) += tlb-sh3.o |
25 | obj-$(CONFIG_CPU_SH4) += tlb-sh4.o pg-sh4.o | 26 | obj-$(CONFIG_CPU_SH4) += tlb-sh4.o |
26 | obj-$(CONFIG_SH7705_CACHE_32KB) += pg-sh7705.o | 27 | ifndef CONFIG_CACHE_OFF |
28 | obj-$(CONFIG_CPU_SH4) += pg-sh4.o | ||
29 | obj-$(CONFIG_SH7705_CACHE_32KB) += pg-sh7705.o | ||
30 | endif | ||
27 | endif | 31 | endif |
28 | 32 | ||
29 | obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o | 33 | obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o |
30 | obj-$(CONFIG_SH7705_CACHE_32KB) += cache-sh7705.o | ||
31 | obj-$(CONFIG_32BIT) += pmb.o | 34 | obj-$(CONFIG_32BIT) += pmb.o |
32 | obj-$(CONFIG_NUMA) += numa.o | 35 | obj-$(CONFIG_NUMA) += numa.o |
diff --git a/arch/sh/mm/cache-sh4.c b/arch/sh/mm/cache-sh4.c index 86486326ef1d..226b190c5b9c 100644 --- a/arch/sh/mm/cache-sh4.c +++ b/arch/sh/mm/cache-sh4.c | |||
@@ -2,7 +2,7 @@ | |||
2 | * arch/sh/mm/cache-sh4.c | 2 | * arch/sh/mm/cache-sh4.c |
3 | * | 3 | * |
4 | * Copyright (C) 1999, 2000, 2002 Niibe Yutaka | 4 | * Copyright (C) 1999, 2000, 2002 Niibe Yutaka |
5 | * Copyright (C) 2001 - 2006 Paul Mundt | 5 | * Copyright (C) 2001 - 2007 Paul Mundt |
6 | * Copyright (C) 2003 Richard Curnow | 6 | * Copyright (C) 2003 Richard Curnow |
7 | * | 7 | * |
8 | * This file is subject to the terms and conditions of the GNU General Public | 8 | * This file is subject to the terms and conditions of the GNU General Public |
@@ -44,7 +44,7 @@ static void (*__flush_dcache_segment_fn)(unsigned long, unsigned long) = | |||
44 | static void compute_alias(struct cache_info *c) | 44 | static void compute_alias(struct cache_info *c) |
45 | { | 45 | { |
46 | c->alias_mask = ((c->sets - 1) << c->entry_shift) & ~(PAGE_SIZE - 1); | 46 | c->alias_mask = ((c->sets - 1) << c->entry_shift) & ~(PAGE_SIZE - 1); |
47 | c->n_aliases = (c->alias_mask >> PAGE_SHIFT) + 1; | 47 | c->n_aliases = c->alias_mask ? (c->alias_mask >> PAGE_SHIFT) + 1 : 0; |
48 | } | 48 | } |
49 | 49 | ||
50 | static void __init emit_cache_params(void) | 50 | static void __init emit_cache_params(void) |
@@ -54,21 +54,35 @@ static void __init emit_cache_params(void) | |||
54 | ctrl_inl(CCN_CVR), | 54 | ctrl_inl(CCN_CVR), |
55 | ctrl_inl(CCN_PRR)); | 55 | ctrl_inl(CCN_PRR)); |
56 | printk("I-cache : n_ways=%d n_sets=%d way_incr=%d\n", | 56 | printk("I-cache : n_ways=%d n_sets=%d way_incr=%d\n", |
57 | current_cpu_data.icache.ways, | 57 | boot_cpu_data.icache.ways, |
58 | current_cpu_data.icache.sets, | 58 | boot_cpu_data.icache.sets, |
59 | current_cpu_data.icache.way_incr); | 59 | boot_cpu_data.icache.way_incr); |
60 | printk("I-cache : entry_mask=0x%08x alias_mask=0x%08x n_aliases=%d\n", | 60 | printk("I-cache : entry_mask=0x%08x alias_mask=0x%08x n_aliases=%d\n", |
61 | current_cpu_data.icache.entry_mask, | 61 | boot_cpu_data.icache.entry_mask, |
62 | current_cpu_data.icache.alias_mask, | 62 | boot_cpu_data.icache.alias_mask, |
63 | current_cpu_data.icache.n_aliases); | 63 | boot_cpu_data.icache.n_aliases); |
64 | printk("D-cache : n_ways=%d n_sets=%d way_incr=%d\n", | 64 | printk("D-cache : n_ways=%d n_sets=%d way_incr=%d\n", |
65 | current_cpu_data.dcache.ways, | 65 | boot_cpu_data.dcache.ways, |
66 | current_cpu_data.dcache.sets, | 66 | boot_cpu_data.dcache.sets, |
67 | current_cpu_data.dcache.way_incr); | 67 | boot_cpu_data.dcache.way_incr); |
68 | printk("D-cache : entry_mask=0x%08x alias_mask=0x%08x n_aliases=%d\n", | 68 | printk("D-cache : entry_mask=0x%08x alias_mask=0x%08x n_aliases=%d\n", |
69 | current_cpu_data.dcache.entry_mask, | 69 | boot_cpu_data.dcache.entry_mask, |
70 | current_cpu_data.dcache.alias_mask, | 70 | boot_cpu_data.dcache.alias_mask, |
71 | current_cpu_data.dcache.n_aliases); | 71 | boot_cpu_data.dcache.n_aliases); |
72 | |||
73 | /* | ||
74 | * Emit Secondary Cache parameters if the CPU has a probed L2. | ||
75 | */ | ||
76 | if (boot_cpu_data.flags & CPU_HAS_L2_CACHE) { | ||
77 | printk("S-cache : n_ways=%d n_sets=%d way_incr=%d\n", | ||
78 | boot_cpu_data.scache.ways, | ||
79 | boot_cpu_data.scache.sets, | ||
80 | boot_cpu_data.scache.way_incr); | ||
81 | printk("S-cache : entry_mask=0x%08x alias_mask=0x%08x n_aliases=%d\n", | ||
82 | boot_cpu_data.scache.entry_mask, | ||
83 | boot_cpu_data.scache.alias_mask, | ||
84 | boot_cpu_data.scache.n_aliases); | ||
85 | } | ||
72 | 86 | ||
73 | if (!__flush_dcache_segment_fn) | 87 | if (!__flush_dcache_segment_fn) |
74 | panic("unknown number of cache ways\n"); | 88 | panic("unknown number of cache ways\n"); |
@@ -79,10 +93,11 @@ static void __init emit_cache_params(void) | |||
79 | */ | 93 | */ |
80 | void __init p3_cache_init(void) | 94 | void __init p3_cache_init(void) |
81 | { | 95 | { |
82 | compute_alias(¤t_cpu_data.icache); | 96 | compute_alias(&boot_cpu_data.icache); |
83 | compute_alias(¤t_cpu_data.dcache); | 97 | compute_alias(&boot_cpu_data.dcache); |
98 | compute_alias(&boot_cpu_data.scache); | ||
84 | 99 | ||
85 | switch (current_cpu_data.dcache.ways) { | 100 | switch (boot_cpu_data.dcache.ways) { |
86 | case 1: | 101 | case 1: |
87 | __flush_dcache_segment_fn = __flush_dcache_segment_1way; | 102 | __flush_dcache_segment_fn = __flush_dcache_segment_1way; |
88 | break; | 103 | break; |
@@ -187,13 +202,13 @@ void flush_cache_sigtramp(unsigned long addr) | |||
187 | : "m" (__m(v))); | 202 | : "m" (__m(v))); |
188 | 203 | ||
189 | index = CACHE_IC_ADDRESS_ARRAY | | 204 | index = CACHE_IC_ADDRESS_ARRAY | |
190 | (v & current_cpu_data.icache.entry_mask); | 205 | (v & boot_cpu_data.icache.entry_mask); |
191 | 206 | ||
192 | local_irq_save(flags); | 207 | local_irq_save(flags); |
193 | jump_to_P2(); | 208 | jump_to_P2(); |
194 | 209 | ||
195 | for (i = 0; i < current_cpu_data.icache.ways; | 210 | for (i = 0; i < boot_cpu_data.icache.ways; |
196 | i++, index += current_cpu_data.icache.way_incr) | 211 | i++, index += boot_cpu_data.icache.way_incr) |
197 | ctrl_outl(0, index); /* Clear out Valid-bit */ | 212 | ctrl_outl(0, index); /* Clear out Valid-bit */ |
198 | 213 | ||
199 | back_to_P1(); | 214 | back_to_P1(); |
@@ -210,7 +225,7 @@ static inline void flush_cache_4096(unsigned long start, | |||
210 | * All types of SH-4 require PC to be in P2 to operate on the I-cache. | 225 | * All types of SH-4 require PC to be in P2 to operate on the I-cache. |
211 | * Some types of SH-4 require PC to be in P2 to operate on the D-cache. | 226 | * Some types of SH-4 require PC to be in P2 to operate on the D-cache. |
212 | */ | 227 | */ |
213 | if ((current_cpu_data.flags & CPU_HAS_P2_FLUSH_BUG) || | 228 | if ((boot_cpu_data.flags & CPU_HAS_P2_FLUSH_BUG) || |
214 | (start < CACHE_OC_ADDRESS_ARRAY)) | 229 | (start < CACHE_OC_ADDRESS_ARRAY)) |
215 | exec_offset = 0x20000000; | 230 | exec_offset = 0x20000000; |
216 | 231 | ||
@@ -232,7 +247,7 @@ void flush_dcache_page(struct page *page) | |||
232 | int i, n; | 247 | int i, n; |
233 | 248 | ||
234 | /* Loop all the D-cache */ | 249 | /* Loop all the D-cache */ |
235 | n = current_cpu_data.dcache.n_aliases; | 250 | n = boot_cpu_data.dcache.n_aliases; |
236 | for (i = 0; i < n; i++, addr += 4096) | 251 | for (i = 0; i < n; i++, addr += 4096) |
237 | flush_cache_4096(addr, phys); | 252 | flush_cache_4096(addr, phys); |
238 | } | 253 | } |
@@ -264,7 +279,7 @@ static inline void flush_icache_all(void) | |||
264 | 279 | ||
265 | void flush_dcache_all(void) | 280 | void flush_dcache_all(void) |
266 | { | 281 | { |
267 | (*__flush_dcache_segment_fn)(0UL, current_cpu_data.dcache.way_size); | 282 | (*__flush_dcache_segment_fn)(0UL, boot_cpu_data.dcache.way_size); |
268 | wmb(); | 283 | wmb(); |
269 | } | 284 | } |
270 | 285 | ||
@@ -278,8 +293,8 @@ static void __flush_cache_mm(struct mm_struct *mm, unsigned long start, | |||
278 | unsigned long end) | 293 | unsigned long end) |
279 | { | 294 | { |
280 | unsigned long d = 0, p = start & PAGE_MASK; | 295 | unsigned long d = 0, p = start & PAGE_MASK; |
281 | unsigned long alias_mask = current_cpu_data.dcache.alias_mask; | 296 | unsigned long alias_mask = boot_cpu_data.dcache.alias_mask; |
282 | unsigned long n_aliases = current_cpu_data.dcache.n_aliases; | 297 | unsigned long n_aliases = boot_cpu_data.dcache.n_aliases; |
283 | unsigned long select_bit; | 298 | unsigned long select_bit; |
284 | unsigned long all_aliases_mask; | 299 | unsigned long all_aliases_mask; |
285 | unsigned long addr_offset; | 300 | unsigned long addr_offset; |
@@ -366,7 +381,7 @@ void flush_cache_mm(struct mm_struct *mm) | |||
366 | * If cache is only 4k-per-way, there are never any 'aliases'. Since | 381 | * If cache is only 4k-per-way, there are never any 'aliases'. Since |
367 | * the cache is physically tagged, the data can just be left in there. | 382 | * the cache is physically tagged, the data can just be left in there. |
368 | */ | 383 | */ |
369 | if (current_cpu_data.dcache.n_aliases == 0) | 384 | if (boot_cpu_data.dcache.n_aliases == 0) |
370 | return; | 385 | return; |
371 | 386 | ||
372 | /* | 387 | /* |
@@ -403,7 +418,7 @@ void flush_cache_page(struct vm_area_struct *vma, unsigned long address, | |||
403 | unsigned long phys = pfn << PAGE_SHIFT; | 418 | unsigned long phys = pfn << PAGE_SHIFT; |
404 | unsigned int alias_mask; | 419 | unsigned int alias_mask; |
405 | 420 | ||
406 | alias_mask = current_cpu_data.dcache.alias_mask; | 421 | alias_mask = boot_cpu_data.dcache.alias_mask; |
407 | 422 | ||
408 | /* We only need to flush D-cache when we have alias */ | 423 | /* We only need to flush D-cache when we have alias */ |
409 | if ((address^phys) & alias_mask) { | 424 | if ((address^phys) & alias_mask) { |
@@ -417,7 +432,7 @@ void flush_cache_page(struct vm_area_struct *vma, unsigned long address, | |||
417 | phys); | 432 | phys); |
418 | } | 433 | } |
419 | 434 | ||
420 | alias_mask = current_cpu_data.icache.alias_mask; | 435 | alias_mask = boot_cpu_data.icache.alias_mask; |
421 | if (vma->vm_flags & VM_EXEC) { | 436 | if (vma->vm_flags & VM_EXEC) { |
422 | /* | 437 | /* |
423 | * Evict entries from the portion of the cache from which code | 438 | * Evict entries from the portion of the cache from which code |
@@ -449,7 +464,7 @@ void flush_cache_range(struct vm_area_struct *vma, unsigned long start, | |||
449 | * If cache is only 4k-per-way, there are never any 'aliases'. Since | 464 | * If cache is only 4k-per-way, there are never any 'aliases'. Since |
450 | * the cache is physically tagged, the data can just be left in there. | 465 | * the cache is physically tagged, the data can just be left in there. |
451 | */ | 466 | */ |
452 | if (current_cpu_data.dcache.n_aliases == 0) | 467 | if (boot_cpu_data.dcache.n_aliases == 0) |
453 | return; | 468 | return; |
454 | 469 | ||
455 | /* | 470 | /* |
@@ -510,7 +525,7 @@ static void __flush_cache_4096(unsigned long addr, unsigned long phys, | |||
510 | unsigned long a, ea, p; | 525 | unsigned long a, ea, p; |
511 | unsigned long temp_pc; | 526 | unsigned long temp_pc; |
512 | 527 | ||
513 | dcache = ¤t_cpu_data.dcache; | 528 | dcache = &boot_cpu_data.dcache; |
514 | /* Write this way for better assembly. */ | 529 | /* Write this way for better assembly. */ |
515 | way_count = dcache->ways; | 530 | way_count = dcache->ways; |
516 | way_incr = dcache->way_incr; | 531 | way_incr = dcache->way_incr; |
@@ -585,7 +600,7 @@ static void __flush_dcache_segment_1way(unsigned long start, | |||
585 | base_addr = ((base_addr >> 16) << 16); | 600 | base_addr = ((base_addr >> 16) << 16); |
586 | base_addr |= start; | 601 | base_addr |= start; |
587 | 602 | ||
588 | dcache = ¤t_cpu_data.dcache; | 603 | dcache = &boot_cpu_data.dcache; |
589 | linesz = dcache->linesz; | 604 | linesz = dcache->linesz; |
590 | way_incr = dcache->way_incr; | 605 | way_incr = dcache->way_incr; |
591 | way_size = dcache->way_size; | 606 | way_size = dcache->way_size; |
@@ -627,7 +642,7 @@ static void __flush_dcache_segment_2way(unsigned long start, | |||
627 | base_addr = ((base_addr >> 16) << 16); | 642 | base_addr = ((base_addr >> 16) << 16); |
628 | base_addr |= start; | 643 | base_addr |= start; |
629 | 644 | ||
630 | dcache = ¤t_cpu_data.dcache; | 645 | dcache = &boot_cpu_data.dcache; |
631 | linesz = dcache->linesz; | 646 | linesz = dcache->linesz; |
632 | way_incr = dcache->way_incr; | 647 | way_incr = dcache->way_incr; |
633 | way_size = dcache->way_size; | 648 | way_size = dcache->way_size; |
@@ -686,7 +701,7 @@ static void __flush_dcache_segment_4way(unsigned long start, | |||
686 | base_addr = ((base_addr >> 16) << 16); | 701 | base_addr = ((base_addr >> 16) << 16); |
687 | base_addr |= start; | 702 | base_addr |= start; |
688 | 703 | ||
689 | dcache = ¤t_cpu_data.dcache; | 704 | dcache = &boot_cpu_data.dcache; |
690 | linesz = dcache->linesz; | 705 | linesz = dcache->linesz; |
691 | way_incr = dcache->way_incr; | 706 | way_incr = dcache->way_incr; |
692 | way_size = dcache->way_size; | 707 | way_size = dcache->way_size; |
diff --git a/arch/sh/mm/copy_page.S b/arch/sh/mm/copy_page.S index ae039f2da162..a81dbdb05596 100644 --- a/arch/sh/mm/copy_page.S +++ b/arch/sh/mm/copy_page.S | |||
@@ -141,47 +141,38 @@ ENTRY(__copy_user_page) | |||
141 | .long 9999b, 6000f ; \ | 141 | .long 9999b, 6000f ; \ |
142 | .previous | 142 | .previous |
143 | ENTRY(__copy_user) | 143 | ENTRY(__copy_user) |
144 | tst r6,r6 ! Check explicitly for zero | 144 | ! Check if small number of bytes |
145 | bf 1f | 145 | mov #11,r0 |
146 | rts | ||
147 | mov #0,r0 ! normal return | ||
148 | 1: | ||
149 | mov.l r10,@-r15 | ||
150 | mov.l r9,@-r15 | ||
151 | mov.l r8,@-r15 | ||
152 | mov r4,r3 | 146 | mov r4,r3 |
153 | add r6,r3 ! last destination address | 147 | cmp/gt r0,r6 ! r6 (len) > r0 (11) |
154 | mov #12,r0 ! Check if small number of bytes | 148 | bf/s .L_cleanup_loop_no_pop |
155 | cmp/gt r0,r6 | 149 | add r6,r3 ! last destination address |
156 | bt 2f | 150 | |
157 | bra .L_cleanup_loop | 151 | ! Calculate bytes needed to align to src |
158 | nop | 152 | mov.l r11,@-r15 |
159 | 2: | 153 | neg r5,r0 |
160 | neg r5,r0 ! Calculate bytes needed to align source | 154 | mov.l r10,@-r15 |
161 | add #4,r0 | 155 | add #4,r0 |
156 | mov.l r9,@-r15 | ||
162 | and #3,r0 | 157 | and #3,r0 |
158 | mov.l r8,@-r15 | ||
163 | tst r0,r0 | 159 | tst r0,r0 |
164 | bt .L_jump | 160 | bt 2f |
165 | mov r0,r1 | ||
166 | 161 | ||
167 | .L_loop1: | 162 | 1: |
168 | ! Copy bytes to align source | 163 | ! Copy bytes to long word align src |
169 | EX( mov.b @r5+,r0 ) | 164 | EX( mov.b @r5+,r1 ) |
170 | dt r1 | 165 | dt r0 |
171 | EX( mov.b r0,@r4 ) | ||
172 | add #-1,r6 | 166 | add #-1,r6 |
173 | bf/s .L_loop1 | 167 | EX( mov.b r1,@r4 ) |
168 | bf/s 1b | ||
174 | add #1,r4 | 169 | add #1,r4 |
175 | 170 | ||
176 | .L_jump: | 171 | ! Jump to appropriate routine depending on dest |
177 | mov r6,r2 ! Calculate number of longwords to copy | 172 | 2: mov #3,r1 |
173 | mov r6, r2 | ||
174 | and r4,r1 | ||
178 | shlr2 r2 | 175 | shlr2 r2 |
179 | tst r2,r2 | ||
180 | bt .L_cleanup | ||
181 | |||
182 | mov r4,r0 ! Jump to appropriate routine | ||
183 | and #3,r0 | ||
184 | mov r0,r1 | ||
185 | shll2 r1 | 176 | shll2 r1 |
186 | mova .L_jump_tbl,r0 | 177 | mova .L_jump_tbl,r0 |
187 | mov.l @(r0,r1),r1 | 178 | mov.l @(r0,r1),r1 |
@@ -195,43 +186,97 @@ EX( mov.b r0,@r4 ) | |||
195 | .long .L_dest10 | 186 | .long .L_dest10 |
196 | .long .L_dest11 | 187 | .long .L_dest11 |
197 | 188 | ||
189 | /* | ||
190 | * Come here if there are less than 12 bytes to copy | ||
191 | * | ||
192 | * Keep the branch target close, so the bf/s callee doesn't overflow | ||
193 | * and result in a more expensive branch being inserted. This is the | ||
194 | * fast-path for small copies, the jump via the jump table will hit the | ||
195 | * default slow-path cleanup. -PFM. | ||
196 | */ | ||
197 | .L_cleanup_loop_no_pop: | ||
198 | tst r6,r6 ! Check explicitly for zero | ||
199 | bt 1f | ||
200 | |||
201 | 2: | ||
202 | EX( mov.b @r5+,r0 ) | ||
203 | dt r6 | ||
204 | EX( mov.b r0,@r4 ) | ||
205 | bf/s 2b | ||
206 | add #1,r4 | ||
207 | |||
208 | 1: mov #0,r0 ! normal return | ||
209 | 5000: | ||
210 | |||
211 | # Exception handler: | ||
212 | .section .fixup, "ax" | ||
213 | 6000: | ||
214 | mov.l 8000f,r1 | ||
215 | mov r3,r0 | ||
216 | jmp @r1 | ||
217 | sub r4,r0 | ||
218 | .align 2 | ||
219 | 8000: .long 5000b | ||
220 | |||
221 | .previous | ||
222 | rts | ||
223 | nop | ||
224 | |||
198 | ! Destination = 00 | 225 | ! Destination = 00 |
199 | 226 | ||
200 | .L_dest00: | 227 | .L_dest00: |
201 | mov r2,r7 | 228 | ! Skip the large copy for small transfers |
202 | shlr2 r7 | 229 | mov #(32+32-4), r0 |
203 | shlr r7 | 230 | cmp/gt r6, r0 ! r0 (60) > r6 (len) |
204 | tst r7,r7 | 231 | bt 1f |
205 | mov #7,r0 | 232 | |
206 | bt/s 1f | 233 | ! Align dest to a 32 byte boundary |
207 | and r0,r2 | 234 | neg r4,r0 |
208 | .align 2 | 235 | add #0x20, r0 |
236 | and #0x1f, r0 | ||
237 | tst r0, r0 | ||
238 | bt 2f | ||
239 | |||
240 | sub r0, r6 | ||
241 | shlr2 r0 | ||
242 | 3: | ||
243 | EX( mov.l @r5+,r1 ) | ||
244 | dt r0 | ||
245 | EX( mov.l r1,@r4 ) | ||
246 | bf/s 3b | ||
247 | add #4,r4 | ||
248 | |||
209 | 2: | 249 | 2: |
210 | EX( mov.l @r5+,r0 ) | 250 | EX( mov.l @r5+,r0 ) |
251 | EX( mov.l @r5+,r1 ) | ||
252 | EX( mov.l @r5+,r2 ) | ||
253 | EX( mov.l @r5+,r7 ) | ||
211 | EX( mov.l @r5+,r8 ) | 254 | EX( mov.l @r5+,r8 ) |
212 | EX( mov.l @r5+,r9 ) | 255 | EX( mov.l @r5+,r9 ) |
213 | EX( mov.l @r5+,r10 ) | 256 | EX( mov.l @r5+,r10 ) |
214 | EX( mov.l r0,@r4 ) | 257 | EX( mov.l @r5+,r11 ) |
215 | EX( mov.l r8,@(4,r4) ) | 258 | EX( movca.l r0,@r4 ) |
216 | EX( mov.l r9,@(8,r4) ) | 259 | add #-32, r6 |
217 | EX( mov.l r10,@(12,r4) ) | 260 | EX( mov.l r1,@(4,r4) ) |
218 | EX( mov.l @r5+,r0 ) | 261 | mov #32, r0 |
219 | EX( mov.l @r5+,r8 ) | 262 | EX( mov.l r2,@(8,r4) ) |
220 | EX( mov.l @r5+,r9 ) | 263 | cmp/gt r6, r0 ! r0 (32) > r6 (len) |
221 | EX( mov.l @r5+,r10 ) | 264 | EX( mov.l r7,@(12,r4) ) |
222 | dt r7 | 265 | EX( mov.l r8,@(16,r4) ) |
223 | EX( mov.l r0,@(16,r4) ) | 266 | EX( mov.l r9,@(20,r4) ) |
224 | EX( mov.l r8,@(20,r4) ) | 267 | EX( mov.l r10,@(24,r4) ) |
225 | EX( mov.l r9,@(24,r4) ) | 268 | EX( mov.l r11,@(28,r4) ) |
226 | EX( mov.l r10,@(28,r4) ) | ||
227 | bf/s 2b | 269 | bf/s 2b |
228 | add #32,r4 | 270 | add #32,r4 |
229 | tst r2,r2 | 271 | |
272 | 1: mov r6, r0 | ||
273 | shlr2 r0 | ||
274 | tst r0, r0 | ||
230 | bt .L_cleanup | 275 | bt .L_cleanup |
231 | 1: | 276 | 1: |
232 | EX( mov.l @r5+,r0 ) | 277 | EX( mov.l @r5+,r1 ) |
233 | dt r2 | 278 | dt r0 |
234 | EX( mov.l r0,@r4 ) | 279 | EX( mov.l r1,@r4 ) |
235 | bf/s 1b | 280 | bf/s 1b |
236 | add #4,r4 | 281 | add #4,r4 |
237 | 282 | ||
@@ -250,7 +295,7 @@ EX( mov.l r0,@r4 ) | |||
250 | and r0,r2 | 295 | and r0,r2 |
251 | 2: | 296 | 2: |
252 | dt r7 | 297 | dt r7 |
253 | #ifdef __LITTLE_ENDIAN__ | 298 | #ifdef CONFIG_CPU_LITTLE_ENDIAN |
254 | EX( mov.l @r5+,r0 ) | 299 | EX( mov.l @r5+,r0 ) |
255 | EX( mov.l @r5+,r1 ) | 300 | EX( mov.l @r5+,r1 ) |
256 | EX( mov.l @r5+,r8 ) | 301 | EX( mov.l @r5+,r8 ) |
@@ -320,7 +365,7 @@ EX( mov.w r0,@(2,r4) ) | |||
320 | 1: ! Read longword, write two words per iteration | 365 | 1: ! Read longword, write two words per iteration |
321 | EX( mov.l @r5+,r0 ) | 366 | EX( mov.l @r5+,r0 ) |
322 | dt r2 | 367 | dt r2 |
323 | #ifdef __LITTLE_ENDIAN__ | 368 | #ifdef CONFIG_CPU_LITTLE_ENDIAN |
324 | EX( mov.w r0,@r4 ) | 369 | EX( mov.w r0,@r4 ) |
325 | shlr16 r0 | 370 | shlr16 r0 |
326 | EX( mov.w r0,@(2,r4) ) | 371 | EX( mov.w r0,@(2,r4) ) |
@@ -342,7 +387,7 @@ EX( mov.w r0,@r4 ) | |||
342 | ! Read longword, write byte, word, byte per iteration | 387 | ! Read longword, write byte, word, byte per iteration |
343 | EX( mov.l @r5+,r0 ) | 388 | EX( mov.l @r5+,r0 ) |
344 | dt r2 | 389 | dt r2 |
345 | #ifdef __LITTLE_ENDIAN__ | 390 | #ifdef CONFIG_CPU_LITTLE_ENDIAN |
346 | EX( mov.b r0,@r4 ) | 391 | EX( mov.b r0,@r4 ) |
347 | shlr8 r0 | 392 | shlr8 r0 |
348 | add #1,r4 | 393 | add #1,r4 |
@@ -379,6 +424,7 @@ EX( mov.b r0,@r4 ) | |||
379 | 424 | ||
380 | .L_exit: | 425 | .L_exit: |
381 | mov #0,r0 ! normal return | 426 | mov #0,r0 ! normal return |
427 | |||
382 | 5000: | 428 | 5000: |
383 | 429 | ||
384 | # Exception handler: | 430 | # Exception handler: |
@@ -394,5 +440,6 @@ EX( mov.b r0,@r4 ) | |||
394 | .previous | 440 | .previous |
395 | mov.l @r15+,r8 | 441 | mov.l @r15+,r8 |
396 | mov.l @r15+,r9 | 442 | mov.l @r15+,r9 |
443 | mov.l @r15+,r10 | ||
397 | rts | 444 | rts |
398 | mov.l @r15+,r10 | 445 | mov.l @r15+,r11 |
diff --git a/arch/sh/mm/fault-nommu.c b/arch/sh/mm/fault-nommu.c deleted file mode 100644 index c6f5b51ec2c7..000000000000 --- a/arch/sh/mm/fault-nommu.c +++ /dev/null | |||
@@ -1,64 +0,0 @@ | |||
1 | /* | ||
2 | * arch/sh/mm/fault-nommu.c | ||
3 | * | ||
4 | * Copyright (C) 2002 - 2007 Paul Mundt | ||
5 | * | ||
6 | * Based on linux/arch/sh/mm/fault.c: | ||
7 | * Copyright (C) 1999 Niibe Yutaka | ||
8 | * | ||
9 | * Released under the terms of the GNU GPL v2.0. | ||
10 | */ | ||
11 | #include <linux/kernel.h> | ||
12 | #include <linux/mm.h> | ||
13 | #include <linux/hardirq.h> | ||
14 | #include <linux/kprobes.h> | ||
15 | #include <asm/system.h> | ||
16 | #include <asm/ptrace.h> | ||
17 | #include <asm/kgdb.h> | ||
18 | |||
19 | /* | ||
20 | * This routine handles page faults. It determines the address, | ||
21 | * and the problem, and then passes it off to one of the appropriate | ||
22 | * routines. | ||
23 | */ | ||
24 | asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, | ||
25 | unsigned long writeaccess, | ||
26 | unsigned long address) | ||
27 | { | ||
28 | trace_hardirqs_on(); | ||
29 | local_irq_enable(); | ||
30 | |||
31 | #if defined(CONFIG_SH_KGDB) | ||
32 | if (kgdb_nofault && kgdb_bus_err_hook) | ||
33 | kgdb_bus_err_hook(); | ||
34 | #endif | ||
35 | |||
36 | /* | ||
37 | * Oops. The kernel tried to access some bad page. We'll have to | ||
38 | * terminate things with extreme prejudice. | ||
39 | * | ||
40 | */ | ||
41 | if (address < PAGE_SIZE) { | ||
42 | printk(KERN_ALERT "Unable to handle kernel NULL pointer dereference"); | ||
43 | } else { | ||
44 | printk(KERN_ALERT "Unable to handle kernel paging request"); | ||
45 | } | ||
46 | |||
47 | printk(" at virtual address %08lx\n", address); | ||
48 | printk(KERN_ALERT "pc = %08lx\n", regs->pc); | ||
49 | |||
50 | die("Oops", regs, writeaccess); | ||
51 | do_exit(SIGKILL); | ||
52 | } | ||
53 | |||
54 | asmlinkage int __kprobes __do_page_fault(struct pt_regs *regs, | ||
55 | unsigned long writeaccess, | ||
56 | unsigned long address) | ||
57 | { | ||
58 | #if defined(CONFIG_SH_KGDB) | ||
59 | if (kgdb_nofault && kgdb_bus_err_hook) | ||
60 | kgdb_bus_err_hook(); | ||
61 | #endif | ||
62 | |||
63 | return (address >= TASK_SIZE); | ||
64 | } | ||
diff --git a/arch/sh/mm/pmb.c b/arch/sh/mm/pmb.c index a08a4a958add..7d43758dc244 100644 --- a/arch/sh/mm/pmb.c +++ b/arch/sh/mm/pmb.c | |||
@@ -145,7 +145,7 @@ repeat: | |||
145 | 145 | ||
146 | ctrl_outl(vpn | PMB_V, mk_pmb_addr(pos)); | 146 | ctrl_outl(vpn | PMB_V, mk_pmb_addr(pos)); |
147 | 147 | ||
148 | #ifdef CONFIG_SH_WRITETHROUGH | 148 | #ifdef CONFIG_CACHE_WRITETHROUGH |
149 | /* | 149 | /* |
150 | * When we are in 32-bit address extended mode, CCR.CB becomes | 150 | * When we are in 32-bit address extended mode, CCR.CB becomes |
151 | * invalid, so care must be taken to manually adjust cacheable | 151 | * invalid, so care must be taken to manually adjust cacheable |
diff --git a/arch/sh/mm/tlb-sh4.c b/arch/sh/mm/tlb-sh4.c index f74cf667c8fa..2d1dd6044307 100644 --- a/arch/sh/mm/tlb-sh4.c +++ b/arch/sh/mm/tlb-sh4.c | |||
@@ -4,27 +4,14 @@ | |||
4 | * SH-4 specific TLB operations | 4 | * SH-4 specific TLB operations |
5 | * | 5 | * |
6 | * Copyright (C) 1999 Niibe Yutaka | 6 | * Copyright (C) 1999 Niibe Yutaka |
7 | * Copyright (C) 2002 Paul Mundt | 7 | * Copyright (C) 2002 - 2007 Paul Mundt |
8 | * | 8 | * |
9 | * Released under the terms of the GNU GPL v2.0. | 9 | * Released under the terms of the GNU GPL v2.0. |
10 | */ | 10 | */ |
11 | #include <linux/signal.h> | ||
12 | #include <linux/sched.h> | ||
13 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
14 | #include <linux/errno.h> | ||
15 | #include <linux/string.h> | ||
16 | #include <linux/types.h> | ||
17 | #include <linux/ptrace.h> | ||
18 | #include <linux/mman.h> | ||
19 | #include <linux/mm.h> | 12 | #include <linux/mm.h> |
20 | #include <linux/smp.h> | 13 | #include <linux/io.h> |
21 | #include <linux/smp_lock.h> | ||
22 | #include <linux/interrupt.h> | ||
23 | |||
24 | #include <asm/system.h> | 14 | #include <asm/system.h> |
25 | #include <asm/io.h> | ||
26 | #include <asm/uaccess.h> | ||
27 | #include <asm/pgalloc.h> | ||
28 | #include <asm/mmu_context.h> | 15 | #include <asm/mmu_context.h> |
29 | #include <asm/cacheflush.h> | 16 | #include <asm/cacheflush.h> |
30 | 17 | ||
@@ -34,22 +21,27 @@ void update_mmu_cache(struct vm_area_struct * vma, | |||
34 | unsigned long flags; | 21 | unsigned long flags; |
35 | unsigned long pteval; | 22 | unsigned long pteval; |
36 | unsigned long vpn; | 23 | unsigned long vpn; |
37 | struct page *page; | ||
38 | unsigned long pfn; | ||
39 | 24 | ||
40 | /* Ptrace may call this routine. */ | 25 | /* Ptrace may call this routine. */ |
41 | if (vma && current->active_mm != vma->vm_mm) | 26 | if (vma && current->active_mm != vma->vm_mm) |
42 | return; | 27 | return; |
43 | 28 | ||
44 | pfn = pte_pfn(pte); | 29 | #ifndef CONFIG_CACHE_OFF |
45 | if (pfn_valid(pfn)) { | 30 | { |
46 | page = pfn_to_page(pfn); | 31 | unsigned long pfn = pte_pfn(pte); |
47 | if (!test_bit(PG_mapped, &page->flags)) { | 32 | |
48 | unsigned long phys = pte_val(pte) & PTE_PHYS_MASK; | 33 | if (pfn_valid(pfn)) { |
49 | __flush_wback_region((void *)P1SEGADDR(phys), PAGE_SIZE); | 34 | struct page *page = pfn_to_page(pfn); |
50 | __set_bit(PG_mapped, &page->flags); | 35 | |
36 | if (!test_bit(PG_mapped, &page->flags)) { | ||
37 | unsigned long phys = pte_val(pte) & PTE_PHYS_MASK; | ||
38 | __flush_wback_region((void *)P1SEGADDR(phys), | ||
39 | PAGE_SIZE); | ||
40 | __set_bit(PG_mapped, &page->flags); | ||
41 | } | ||
51 | } | 42 | } |
52 | } | 43 | } |
44 | #endif | ||
53 | 45 | ||
54 | local_irq_save(flags); | 46 | local_irq_save(flags); |
55 | 47 | ||
@@ -57,16 +49,26 @@ void update_mmu_cache(struct vm_area_struct * vma, | |||
57 | vpn = (address & MMU_VPN_MASK) | get_asid(); | 49 | vpn = (address & MMU_VPN_MASK) | get_asid(); |
58 | ctrl_outl(vpn, MMU_PTEH); | 50 | ctrl_outl(vpn, MMU_PTEH); |
59 | 51 | ||
60 | pteval = pte_val(pte); | 52 | pteval = pte.pte_low; |
61 | 53 | ||
62 | /* Set PTEA register */ | 54 | /* Set PTEA register */ |
55 | #ifdef CONFIG_X2TLB | ||
56 | /* | ||
57 | * For the extended mode TLB this is trivial, only the ESZ and | ||
58 | * EPR bits need to be written out to PTEA, with the remainder of | ||
59 | * the protection bits (with the exception of the compat-mode SZ | ||
60 | * and PR bits, which are cleared) being written out in PTEL. | ||
61 | */ | ||
62 | ctrl_outl(pte.pte_high, MMU_PTEA); | ||
63 | #else | ||
63 | if (cpu_data->flags & CPU_HAS_PTEA) | 64 | if (cpu_data->flags & CPU_HAS_PTEA) |
64 | /* TODO: make this look less hacky */ | 65 | /* TODO: make this look less hacky */ |
65 | ctrl_outl(((pteval >> 28) & 0xe) | (pteval & 0x1), MMU_PTEA); | 66 | ctrl_outl(((pteval >> 28) & 0xe) | (pteval & 0x1), MMU_PTEA); |
67 | #endif | ||
66 | 68 | ||
67 | /* Set PTEL register */ | 69 | /* Set PTEL register */ |
68 | pteval &= _PAGE_FLAGS_HARDWARE_MASK; /* drop software flags */ | 70 | pteval &= _PAGE_FLAGS_HARDWARE_MASK; /* drop software flags */ |
69 | #ifdef CONFIG_SH_WRITETHROUGH | 71 | #ifdef CONFIG_CACHE_WRITETHROUGH |
70 | pteval |= _PAGE_WT; | 72 | pteval |= _PAGE_WT; |
71 | #endif | 73 | #endif |
72 | /* conveniently, we want all the software flags to be 0 anyway */ | 74 | /* conveniently, we want all the software flags to be 0 anyway */ |
@@ -93,4 +95,3 @@ void local_flush_tlb_one(unsigned long asid, unsigned long page) | |||
93 | ctrl_outl(data, addr); | 95 | ctrl_outl(data, addr); |
94 | back_to_P1(); | 96 | back_to_P1(); |
95 | } | 97 | } |
96 | |||
diff --git a/drivers/rtc/rtc-sh.c b/drivers/rtc/rtc-sh.c index 93ee05eeaeba..78277a118b67 100644 --- a/drivers/rtc/rtc-sh.c +++ b/drivers/rtc/rtc-sh.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * SuperH On-Chip RTC Support | 2 | * SuperH On-Chip RTC Support |
3 | * | 3 | * |
4 | * Copyright (C) 2006 Paul Mundt | 4 | * Copyright (C) 2006, 2007 Paul Mundt |
5 | * Copyright (C) 2006 Jamie Lenehan | 5 | * Copyright (C) 2006 Jamie Lenehan |
6 | * | 6 | * |
7 | * Based on the old arch/sh/kernel/cpu/rtc.c by: | 7 | * Based on the old arch/sh/kernel/cpu/rtc.c by: |
@@ -23,16 +23,19 @@ | |||
23 | #include <linux/interrupt.h> | 23 | #include <linux/interrupt.h> |
24 | #include <linux/spinlock.h> | 24 | #include <linux/spinlock.h> |
25 | #include <linux/io.h> | 25 | #include <linux/io.h> |
26 | #include <asm/rtc.h> | ||
26 | 27 | ||
27 | #define DRV_NAME "sh-rtc" | 28 | #define DRV_NAME "sh-rtc" |
28 | #define DRV_VERSION "0.1.2" | 29 | #define DRV_VERSION "0.1.3" |
29 | 30 | ||
30 | #ifdef CONFIG_CPU_SH3 | 31 | #ifdef CONFIG_CPU_SH3 |
31 | #define rtc_reg_size sizeof(u16) | 32 | #define rtc_reg_size sizeof(u16) |
32 | #define RTC_BIT_INVERTED 0 /* No bug on SH7708, SH7709A */ | 33 | #define RTC_BIT_INVERTED 0 /* No bug on SH7708, SH7709A */ |
34 | #define RTC_DEF_CAPABILITIES 0UL | ||
33 | #elif defined(CONFIG_CPU_SH4) | 35 | #elif defined(CONFIG_CPU_SH4) |
34 | #define rtc_reg_size sizeof(u32) | 36 | #define rtc_reg_size sizeof(u32) |
35 | #define RTC_BIT_INVERTED 0x40 /* bug on SH7750, SH7750S */ | 37 | #define RTC_BIT_INVERTED 0x40 /* bug on SH7750, SH7750S */ |
38 | #define RTC_DEF_CAPABILITIES RTC_CAP_4_DIGIT_YEAR | ||
36 | #endif | 39 | #endif |
37 | 40 | ||
38 | #define RTC_REG(r) ((r) * rtc_reg_size) | 41 | #define RTC_REG(r) ((r) * rtc_reg_size) |
@@ -80,6 +83,7 @@ struct sh_rtc { | |||
80 | struct rtc_device *rtc_dev; | 83 | struct rtc_device *rtc_dev; |
81 | spinlock_t lock; | 84 | spinlock_t lock; |
82 | int rearm_aie; | 85 | int rearm_aie; |
86 | unsigned long capabilities; /* See asm-sh/rtc.h for cap bits */ | ||
83 | }; | 87 | }; |
84 | 88 | ||
85 | static irqreturn_t sh_rtc_interrupt(int irq, void *dev_id) | 89 | static irqreturn_t sh_rtc_interrupt(int irq, void *dev_id) |
@@ -319,14 +323,14 @@ static int sh_rtc_read_time(struct device *dev, struct rtc_time *tm) | |||
319 | tm->tm_mday = BCD2BIN(readb(rtc->regbase + RDAYCNT)); | 323 | tm->tm_mday = BCD2BIN(readb(rtc->regbase + RDAYCNT)); |
320 | tm->tm_mon = BCD2BIN(readb(rtc->regbase + RMONCNT)) - 1; | 324 | tm->tm_mon = BCD2BIN(readb(rtc->regbase + RMONCNT)) - 1; |
321 | 325 | ||
322 | #if defined(CONFIG_CPU_SH4) | 326 | if (rtc->capabilities & RTC_CAP_4_DIGIT_YEAR) { |
323 | yr = readw(rtc->regbase + RYRCNT); | 327 | yr = readw(rtc->regbase + RYRCNT); |
324 | yr100 = BCD2BIN(yr >> 8); | 328 | yr100 = BCD2BIN(yr >> 8); |
325 | yr &= 0xff; | 329 | yr &= 0xff; |
326 | #else | 330 | } else { |
327 | yr = readb(rtc->regbase + RYRCNT); | 331 | yr = readb(rtc->regbase + RYRCNT); |
328 | yr100 = BCD2BIN((yr == 0x99) ? 0x19 : 0x20); | 332 | yr100 = BCD2BIN((yr == 0x99) ? 0x19 : 0x20); |
329 | #endif | 333 | } |
330 | 334 | ||
331 | tm->tm_year = (yr100 * 100 + BCD2BIN(yr)) - 1900; | 335 | tm->tm_year = (yr100 * 100 + BCD2BIN(yr)) - 1900; |
332 | 336 | ||
@@ -375,14 +379,14 @@ static int sh_rtc_set_time(struct device *dev, struct rtc_time *tm) | |||
375 | writeb(BIN2BCD(tm->tm_mday), rtc->regbase + RDAYCNT); | 379 | writeb(BIN2BCD(tm->tm_mday), rtc->regbase + RDAYCNT); |
376 | writeb(BIN2BCD(tm->tm_mon + 1), rtc->regbase + RMONCNT); | 380 | writeb(BIN2BCD(tm->tm_mon + 1), rtc->regbase + RMONCNT); |
377 | 381 | ||
378 | #ifdef CONFIG_CPU_SH3 | 382 | if (rtc->capabilities & RTC_CAP_4_DIGIT_YEAR) { |
379 | year = tm->tm_year % 100; | 383 | year = (BIN2BCD((tm->tm_year + 1900) / 100) << 8) | |
380 | writeb(BIN2BCD(year), rtc->regbase + RYRCNT); | 384 | BIN2BCD(tm->tm_year % 100); |
381 | #else | 385 | writew(year, rtc->regbase + RYRCNT); |
382 | year = (BIN2BCD((tm->tm_year + 1900) / 100) << 8) | | 386 | } else { |
383 | BIN2BCD(tm->tm_year % 100); | 387 | year = tm->tm_year % 100; |
384 | writew(year, rtc->regbase + RYRCNT); | 388 | writeb(BIN2BCD(year), rtc->regbase + RYRCNT); |
385 | #endif | 389 | } |
386 | 390 | ||
387 | /* Start RTC */ | 391 | /* Start RTC */ |
388 | tmp = readb(rtc->regbase + RCR2); | 392 | tmp = readb(rtc->regbase + RCR2); |
@@ -589,6 +593,17 @@ static int __devinit sh_rtc_probe(struct platform_device *pdev) | |||
589 | goto err_badmap; | 593 | goto err_badmap; |
590 | } | 594 | } |
591 | 595 | ||
596 | rtc->capabilities = RTC_DEF_CAPABILITIES; | ||
597 | if (pdev->dev.platform_data) { | ||
598 | struct sh_rtc_platform_info *pinfo = pdev->dev.platform_data; | ||
599 | |||
600 | /* | ||
601 | * Some CPUs have special capabilities in addition to the | ||
602 | * default set. Add those in here. | ||
603 | */ | ||
604 | rtc->capabilities |= pinfo->capabilities; | ||
605 | } | ||
606 | |||
592 | platform_set_drvdata(pdev, rtc); | 607 | platform_set_drvdata(pdev, rtc); |
593 | 608 | ||
594 | return 0; | 609 | return 0; |
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c index 053fca41b08a..73440e26834b 100644 --- a/drivers/serial/sh-sci.c +++ b/drivers/serial/sh-sci.c | |||
@@ -4,6 +4,7 @@ | |||
4 | * SuperH on-chip serial module support. (SCI with no FIFO / with FIFO) | 4 | * SuperH on-chip serial module support. (SCI with no FIFO / with FIFO) |
5 | * | 5 | * |
6 | * Copyright (C) 2002 - 2006 Paul Mundt | 6 | * Copyright (C) 2002 - 2006 Paul Mundt |
7 | * Modified to support SH7720 SCIF. Markus Brunner, Mark Jonas (Jul 2007). | ||
7 | * | 8 | * |
8 | * based off of the old drivers/char/sh-sci.c by: | 9 | * based off of the old drivers/char/sh-sci.c by: |
9 | * | 10 | * |
@@ -301,6 +302,38 @@ static void sci_init_pins_scif(struct uart_port* port, unsigned int cflag) | |||
301 | } | 302 | } |
302 | sci_out(port, SCFCR, fcr_val); | 303 | sci_out(port, SCFCR, fcr_val); |
303 | } | 304 | } |
305 | #elif defined(CONFIG_CPU_SUBTYPE_SH7720) | ||
306 | static void sci_init_pins_scif(struct uart_port *port, unsigned int cflag) | ||
307 | { | ||
308 | unsigned int fcr_val = 0; | ||
309 | unsigned short data; | ||
310 | |||
311 | if (cflag & CRTSCTS) { | ||
312 | /* enable RTS/CTS */ | ||
313 | if (port->mapbase == 0xa4430000) { /* SCIF0 */ | ||
314 | /* Clear PTCR bit 9-2; enable all scif pins but sck */ | ||
315 | data = ctrl_inw(PORT_PTCR); | ||
316 | ctrl_outw((data & 0xfc03), PORT_PTCR); | ||
317 | } else if (port->mapbase == 0xa4438000) { /* SCIF1 */ | ||
318 | /* Clear PVCR bit 9-2 */ | ||
319 | data = ctrl_inw(PORT_PVCR); | ||
320 | ctrl_outw((data & 0xfc03), PORT_PVCR); | ||
321 | } | ||
322 | fcr_val |= SCFCR_MCE; | ||
323 | } else { | ||
324 | if (port->mapbase == 0xa4430000) { /* SCIF0 */ | ||
325 | /* Clear PTCR bit 5-2; enable only tx and rx */ | ||
326 | data = ctrl_inw(PORT_PTCR); | ||
327 | ctrl_outw((data & 0xffc3), PORT_PTCR); | ||
328 | } else if (port->mapbase == 0xa4438000) { /* SCIF1 */ | ||
329 | /* Clear PVCR bit 5-2 */ | ||
330 | data = ctrl_inw(PORT_PVCR); | ||
331 | ctrl_outw((data & 0xffc3), PORT_PVCR); | ||
332 | } | ||
333 | } | ||
334 | sci_out(port, SCFCR, fcr_val); | ||
335 | } | ||
336 | |||
304 | #elif defined(CONFIG_CPU_SH3) | 337 | #elif defined(CONFIG_CPU_SH3) |
305 | /* For SH7705, SH7706, SH7707, SH7709, SH7709A, SH7729 */ | 338 | /* For SH7705, SH7706, SH7707, SH7709, SH7709A, SH7729 */ |
306 | static void sci_init_pins_scif(struct uart_port *port, unsigned int cflag) | 339 | static void sci_init_pins_scif(struct uart_port *port, unsigned int cflag) |
@@ -1276,7 +1309,7 @@ static int __init sci_console_init(void) | |||
1276 | console_initcall(sci_console_init); | 1309 | console_initcall(sci_console_init); |
1277 | #endif /* CONFIG_SERIAL_SH_SCI_CONSOLE */ | 1310 | #endif /* CONFIG_SERIAL_SH_SCI_CONSOLE */ |
1278 | 1311 | ||
1279 | #ifdef CONFIG_SH_KGDB | 1312 | #ifdef CONFIG_SH_KGDB_CONSOLE |
1280 | /* | 1313 | /* |
1281 | * FIXME: Most of this can go away.. at the moment, we rely on | 1314 | * FIXME: Most of this can go away.. at the moment, we rely on |
1282 | * arch/sh/kernel/setup.c to do the command line parsing for kgdb, though | 1315 | * arch/sh/kernel/setup.c to do the command line parsing for kgdb, though |
@@ -1334,9 +1367,7 @@ int __init kgdb_console_setup(struct console *co, char *options) | |||
1334 | 1367 | ||
1335 | return uart_set_options(port, co, baud, parity, bits, flow); | 1368 | return uart_set_options(port, co, baud, parity, bits, flow); |
1336 | } | 1369 | } |
1337 | #endif /* CONFIG_SH_KGDB */ | ||
1338 | 1370 | ||
1339 | #ifdef CONFIG_SH_KGDB_CONSOLE | ||
1340 | static struct console kgdb_console = { | 1371 | static struct console kgdb_console = { |
1341 | .name = "ttySC", | 1372 | .name = "ttySC", |
1342 | .device = uart_console_device, | 1373 | .device = uart_console_device, |
@@ -1432,7 +1463,7 @@ static int __devinit sci_probe(struct platform_device *dev) | |||
1432 | 1463 | ||
1433 | #ifdef CONFIG_CPU_FREQ | 1464 | #ifdef CONFIG_CPU_FREQ |
1434 | cpufreq_register_notifier(&sci_nb, CPUFREQ_TRANSITION_NOTIFIER); | 1465 | cpufreq_register_notifier(&sci_nb, CPUFREQ_TRANSITION_NOTIFIER); |
1435 | dev_info(&dev->dev, "sci: CPU frequency notifier registered\n"); | 1466 | dev_info(&dev->dev, "CPU frequency notifier registered\n"); |
1436 | #endif | 1467 | #endif |
1437 | 1468 | ||
1438 | #ifdef CONFIG_SH_STANDARD_BIOS | 1469 | #ifdef CONFIG_SH_STANDARD_BIOS |
diff --git a/drivers/serial/sh-sci.h b/drivers/serial/sh-sci.h index cf75466ebf57..e89ae29645d6 100644 --- a/drivers/serial/sh-sci.h +++ b/drivers/serial/sh-sci.h | |||
@@ -10,19 +10,19 @@ | |||
10 | * Modified to support SH7300(SH-Mobile) SCIF. Takashi Kusuda (Jun 2003). | 10 | * Modified to support SH7300(SH-Mobile) SCIF. Takashi Kusuda (Jun 2003). |
11 | * Modified to support H8/300 Series Yoshinori Sato (Feb 2004). | 11 | * Modified to support H8/300 Series Yoshinori Sato (Feb 2004). |
12 | * Removed SH7300 support (Jul 2007). | 12 | * Removed SH7300 support (Jul 2007). |
13 | * Modified to support SH7720 SCIF. Markus Brunner, Mark Jonas (Aug 2007). | ||
13 | */ | 14 | */ |
14 | #include <linux/serial_core.h> | 15 | #include <linux/serial_core.h> |
15 | #include <asm/io.h> | 16 | #include <asm/io.h> |
16 | 17 | ||
17 | #if defined(__H8300H__) || defined(__H8300S__) | ||
18 | #include <asm/gpio.h> | 18 | #include <asm/gpio.h> |
19 | |||
19 | #if defined(CONFIG_H83007) || defined(CONFIG_H83068) | 20 | #if defined(CONFIG_H83007) || defined(CONFIG_H83068) |
20 | #include <asm/regs306x.h> | 21 | #include <asm/regs306x.h> |
21 | #endif | 22 | #endif |
22 | #if defined(CONFIG_H8S2678) | 23 | #if defined(CONFIG_H8S2678) |
23 | #include <asm/regs267x.h> | 24 | #include <asm/regs267x.h> |
24 | #endif | 25 | #endif |
25 | #endif | ||
26 | 26 | ||
27 | #if defined(CONFIG_CPU_SUBTYPE_SH7706) || \ | 27 | #if defined(CONFIG_CPU_SUBTYPE_SH7706) || \ |
28 | defined(CONFIG_CPU_SUBTYPE_SH7707) || \ | 28 | defined(CONFIG_CPU_SUBTYPE_SH7707) || \ |
@@ -46,6 +46,10 @@ | |||
46 | */ | 46 | */ |
47 | # define SCSCR_INIT(port) (port->mapbase == SCIF2) ? 0xF3 : 0xF0 | 47 | # define SCSCR_INIT(port) (port->mapbase == SCIF2) ? 0xF3 : 0xF0 |
48 | # define SCIF_ONLY | 48 | # define SCIF_ONLY |
49 | #elif defined(CONFIG_CPU_SUBTYPE_SH7720) | ||
50 | # define SCSCR_INIT(port) 0x0030 /* TIE=0,RIE=0,TE=1,RE=1 */ | ||
51 | # define SCIF_ONLY | ||
52 | #define SCIF_ORER 0x0200 /* overrun error bit */ | ||
49 | #elif defined(CONFIG_SH_RTS7751R2D) | 53 | #elif defined(CONFIG_SH_RTS7751R2D) |
50 | # define SCSPTR2 0xFFE80020 /* 16 bit SCIF */ | 54 | # define SCSPTR2 0xFFE80020 /* 16 bit SCIF */ |
51 | # define SCIF_ORER 0x0001 /* overrun error bit */ | 55 | # define SCIF_ORER 0x0001 /* overrun error bit */ |
@@ -217,7 +221,8 @@ | |||
217 | #define SCIF_RDF 0x0002 /* 7705 SCIF, 7707 SCIF, 7709 SCIF, 7750 SCIF */ | 221 | #define SCIF_RDF 0x0002 /* 7705 SCIF, 7707 SCIF, 7709 SCIF, 7750 SCIF */ |
218 | #define SCIF_DR 0x0001 /* 7705 SCIF, 7707 SCIF, 7709 SCIF, 7750 SCIF */ | 222 | #define SCIF_DR 0x0001 /* 7705 SCIF, 7707 SCIF, 7709 SCIF, 7750 SCIF */ |
219 | 223 | ||
220 | #if defined(CONFIG_CPU_SUBTYPE_SH7705) | 224 | #if defined(CONFIG_CPU_SUBTYPE_SH7705) || \ |
225 | defined(CONFIG_CPU_SUBTYPE_SH7720) | ||
221 | #define SCIF_ORER 0x0200 | 226 | #define SCIF_ORER 0x0200 |
222 | #define SCIF_ERRORS ( SCIF_PER | SCIF_FER | SCIF_ER | SCIF_BRK | SCIF_ORER) | 227 | #define SCIF_ERRORS ( SCIF_PER | SCIF_FER | SCIF_ER | SCIF_BRK | SCIF_ORER) |
223 | #define SCIF_RFDC_MASK 0x007f | 228 | #define SCIF_RFDC_MASK 0x007f |
@@ -254,7 +259,8 @@ | |||
254 | # define SCxSR_FER(port) SCIF_FER | 259 | # define SCxSR_FER(port) SCIF_FER |
255 | # define SCxSR_PER(port) SCIF_PER | 260 | # define SCxSR_PER(port) SCIF_PER |
256 | # define SCxSR_BRK(port) SCIF_BRK | 261 | # define SCxSR_BRK(port) SCIF_BRK |
257 | #if defined(CONFIG_CPU_SUBTYPE_SH7705) | 262 | #if defined(CONFIG_CPU_SUBTYPE_SH7705) || \ |
263 | defined(CONFIG_CPU_SUBTYPE_SH7720) | ||
258 | # define SCxSR_RDxF_CLEAR(port) (sci_in(port,SCxSR)&0xfffc) | 264 | # define SCxSR_RDxF_CLEAR(port) (sci_in(port,SCxSR)&0xfffc) |
259 | # define SCxSR_ERROR_CLEAR(port) (sci_in(port,SCxSR)&0xfd73) | 265 | # define SCxSR_ERROR_CLEAR(port) (sci_in(port,SCxSR)&0xfd73) |
260 | # define SCxSR_TDxE_CLEAR(port) (sci_in(port,SCxSR)&0xffdf) | 266 | # define SCxSR_TDxE_CLEAR(port) (sci_in(port,SCxSR)&0xffdf) |
@@ -362,7 +368,8 @@ | |||
362 | CPU_SCIx_FNS(name, sh4_sci_offset, sh4_sci_size, sh4_scif_offset, sh4_scif_size) | 368 | CPU_SCIx_FNS(name, sh4_sci_offset, sh4_sci_size, sh4_scif_offset, sh4_scif_size) |
363 | #define SCIF_FNS(name, sh3_scif_offset, sh3_scif_size, sh4_scif_offset, sh4_scif_size) \ | 369 | #define SCIF_FNS(name, sh3_scif_offset, sh3_scif_size, sh4_scif_offset, sh4_scif_size) \ |
364 | CPU_SCIF_FNS(name, sh4_scif_offset, sh4_scif_size) | 370 | CPU_SCIF_FNS(name, sh4_scif_offset, sh4_scif_size) |
365 | #elif defined(CONFIG_CPU_SUBTYPE_SH7705) | 371 | #elif defined(CONFIG_CPU_SUBTYPE_SH7705) || \ |
372 | defined(CONFIG_CPU_SUBTYPE_SH7720) | ||
366 | #define SCIF_FNS(name, scif_offset, scif_size) \ | 373 | #define SCIF_FNS(name, scif_offset, scif_size) \ |
367 | CPU_SCIF_FNS(name, scif_offset, scif_size) | 374 | CPU_SCIF_FNS(name, scif_offset, scif_size) |
368 | #else | 375 | #else |
@@ -388,7 +395,8 @@ | |||
388 | CPU_SCIF_FNS(name, sh4_scif_offset, sh4_scif_size) | 395 | CPU_SCIF_FNS(name, sh4_scif_offset, sh4_scif_size) |
389 | #endif | 396 | #endif |
390 | 397 | ||
391 | #if defined(CONFIG_CPU_SUBTYPE_SH7705) | 398 | #if defined(CONFIG_CPU_SUBTYPE_SH7705) || \ |
399 | defined(CONFIG_CPU_SUBTYPE_SH7720) | ||
392 | 400 | ||
393 | SCIF_FNS(SCSMR, 0x00, 16) | 401 | SCIF_FNS(SCSMR, 0x00, 16) |
394 | SCIF_FNS(SCBRR, 0x04, 8) | 402 | SCIF_FNS(SCBRR, 0x04, 8) |
@@ -510,7 +518,15 @@ static inline void set_sh771x_scif_pfc(struct uart_port *port) | |||
510 | return; | 518 | return; |
511 | } | 519 | } |
512 | } | 520 | } |
513 | 521 | #elif defined(CONFIG_CPU_SUBTYPE_SH7720) | |
522 | static inline int sci_rxd_in(struct uart_port *port) | ||
523 | { | ||
524 | if (port->mapbase == 0xa4430000) | ||
525 | return sci_in(port, SCxSR) & 0x0003 ? 1 : 0; | ||
526 | else if (port->mapbase == 0xa4438000) | ||
527 | return sci_in(port, SCxSR) & 0x0003 ? 1 : 0; | ||
528 | return 1; | ||
529 | } | ||
514 | #elif defined(CONFIG_CPU_SUBTYPE_SH7750) || \ | 530 | #elif defined(CONFIG_CPU_SUBTYPE_SH7750) || \ |
515 | defined(CONFIG_CPU_SUBTYPE_SH7751) || \ | 531 | defined(CONFIG_CPU_SUBTYPE_SH7751) || \ |
516 | defined(CONFIG_CPU_SUBTYPE_SH7751R) || \ | 532 | defined(CONFIG_CPU_SUBTYPE_SH7751R) || \ |
@@ -653,6 +669,7 @@ static inline int sci_rxd_in(struct uart_port *port) | |||
653 | return ctrl_inw(SCSPTR2) & 0x0001 ? 1 : 0; /* SCIF */ | 669 | return ctrl_inw(SCSPTR2) & 0x0001 ? 1 : 0; /* SCIF */ |
654 | if (port->mapbase == 0xffc60000) | 670 | if (port->mapbase == 0xffc60000) |
655 | return ctrl_inw(SCSPTR3) & 0x0001 ? 1 : 0; /* SCIF */ | 671 | return ctrl_inw(SCSPTR3) & 0x0001 ? 1 : 0; /* SCIF */ |
672 | return 1; | ||
656 | } | 673 | } |
657 | #endif | 674 | #endif |
658 | 675 | ||
@@ -691,7 +708,8 @@ static inline int sci_rxd_in(struct uart_port *port) | |||
691 | #if defined(CONFIG_CPU_SUBTYPE_SH7780) || \ | 708 | #if defined(CONFIG_CPU_SUBTYPE_SH7780) || \ |
692 | defined(CONFIG_CPU_SUBTYPE_SH7785) | 709 | defined(CONFIG_CPU_SUBTYPE_SH7785) |
693 | #define SCBRR_VALUE(bps, clk) ((clk+16*bps)/(16*bps)-1) | 710 | #define SCBRR_VALUE(bps, clk) ((clk+16*bps)/(16*bps)-1) |
694 | #elif defined(CONFIG_CPU_SUBTYPE_SH7705) | 711 | #elif defined(CONFIG_CPU_SUBTYPE_SH7705) || \ |
712 | defined(CONFIG_CPU_SUBTYPE_SH7720) | ||
695 | #define SCBRR_VALUE(bps, clk) (((clk*2)+16*bps)/(32*bps)-1) | 713 | #define SCBRR_VALUE(bps, clk) (((clk*2)+16*bps)/(32*bps)-1) |
696 | #elif defined(__H8300H__) || defined(__H8300S__) | 714 | #elif defined(__H8300H__) || defined(__H8300S__) |
697 | #define SCBRR_VALUE(bps) (((CONFIG_CPU_CLOCK*1000/32)/bps)-1) | 715 | #define SCBRR_VALUE(bps) (((CONFIG_CPU_CLOCK*1000/32)/bps)-1) |
diff --git a/drivers/sh/Makefile b/drivers/sh/Makefile index 8a143894e33f..a96f4a8cfeb8 100644 --- a/drivers/sh/Makefile +++ b/drivers/sh/Makefile | |||
@@ -2,5 +2,5 @@ | |||
2 | # Makefile for the SuperH specific drivers. | 2 | # Makefile for the SuperH specific drivers. |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-$(CONFIG_SUPERHYWAY) += superhyway/ | 5 | obj-$(CONFIG_SUPERHYWAY) += superhyway/ |
6 | 6 | obj-$(CONFIG_MAPLE) += maple/ | |
diff --git a/drivers/sh/maple/Makefile b/drivers/sh/maple/Makefile new file mode 100644 index 000000000000..65dfeeb610ef --- /dev/null +++ b/drivers/sh/maple/Makefile | |||
@@ -0,0 +1,3 @@ | |||
1 | # Makefile for Maple Bus | ||
2 | |||
3 | obj-$(CONFIG_MAPLE) := maple.o | ||
diff --git a/drivers/sh/maple/maple.c b/drivers/sh/maple/maple.c new file mode 100644 index 000000000000..161d1021b7eb --- /dev/null +++ b/drivers/sh/maple/maple.c | |||
@@ -0,0 +1,735 @@ | |||
1 | /* | ||
2 | * Core maple bus functionality | ||
3 | * | ||
4 | * Copyright (C) 2007 Adrian McMenamin | ||
5 | * | ||
6 | * Based on 2.4 code by: | ||
7 | * | ||
8 | * Copyright (C) 2000-2001 YAEGASHI Takeshi | ||
9 | * Copyright (C) 2001 M. R. Brown | ||
10 | * Copyright (C) 2001 Paul Mundt | ||
11 | * | ||
12 | * and others. | ||
13 | * | ||
14 | * This file is subject to the terms and conditions of the GNU General Public | ||
15 | * License. See the file "COPYING" in the main directory of this archive | ||
16 | * for more details. | ||
17 | */ | ||
18 | #include <linux/init.h> | ||
19 | #include <linux/kernel.h> | ||
20 | #include <linux/device.h> | ||
21 | #include <linux/module.h> | ||
22 | #include <linux/interrupt.h> | ||
23 | #include <linux/list.h> | ||
24 | #include <linux/io.h> | ||
25 | #include <linux/slab.h> | ||
26 | #include <linux/maple.h> | ||
27 | #include <linux/dma-mapping.h> | ||
28 | #include <asm/cacheflush.h> | ||
29 | #include <asm/dma.h> | ||
30 | #include <asm/io.h> | ||
31 | #include <asm/mach/dma.h> | ||
32 | #include <asm/mach/sysasic.h> | ||
33 | #include <asm/mach/maple.h> | ||
34 | |||
35 | MODULE_AUTHOR("Yaegshi Takeshi, Paul Mundt, M.R. Brown, Adrian McMenamin"); | ||
36 | MODULE_DESCRIPTION("Maple bus driver for Dreamcast"); | ||
37 | MODULE_LICENSE("GPL v2"); | ||
38 | MODULE_SUPPORTED_DEVICE("{{SEGA, Dreamcast/Maple}}"); | ||
39 | |||
40 | static void maple_dma_handler(struct work_struct *work); | ||
41 | static void maple_vblank_handler(struct work_struct *work); | ||
42 | |||
43 | static DECLARE_WORK(maple_dma_process, maple_dma_handler); | ||
44 | static DECLARE_WORK(maple_vblank_process, maple_vblank_handler); | ||
45 | |||
46 | static LIST_HEAD(maple_waitq); | ||
47 | static LIST_HEAD(maple_sentq); | ||
48 | |||
49 | static DEFINE_MUTEX(maple_list_lock); | ||
50 | |||
51 | static struct maple_driver maple_dummy_driver; | ||
52 | static struct device maple_bus; | ||
53 | static int subdevice_map[MAPLE_PORTS]; | ||
54 | static unsigned long *maple_sendbuf, *maple_sendptr, *maple_lastptr; | ||
55 | static unsigned long maple_pnp_time; | ||
56 | static int started, scanning, liststatus; | ||
57 | static struct kmem_cache *maple_queue_cache; | ||
58 | |||
59 | struct maple_device_specify { | ||
60 | int port; | ||
61 | int unit; | ||
62 | }; | ||
63 | |||
64 | /** | ||
65 | * maple_driver_register - register a device driver | ||
66 | * automatically makes the driver bus a maple bus | ||
67 | * @drv: the driver to be registered | ||
68 | */ | ||
69 | int maple_driver_register(struct device_driver *drv) | ||
70 | { | ||
71 | if (!drv) | ||
72 | return -EINVAL; | ||
73 | drv->bus = &maple_bus_type; | ||
74 | return driver_register(drv); | ||
75 | } | ||
76 | EXPORT_SYMBOL_GPL(maple_driver_register); | ||
77 | |||
78 | /* set hardware registers to enable next round of dma */ | ||
79 | static void maplebus_dma_reset(void) | ||
80 | { | ||
81 | ctrl_outl(MAPLE_MAGIC, MAPLE_RESET); | ||
82 | /* set trig type to 0 for software trigger, 1 for hardware (VBLANK) */ | ||
83 | ctrl_outl(1, MAPLE_TRIGTYPE); | ||
84 | ctrl_outl(MAPLE_2MBPS | MAPLE_TIMEOUT(50000), MAPLE_SPEED); | ||
85 | ctrl_outl(PHYSADDR(maple_sendbuf), MAPLE_DMAADDR); | ||
86 | ctrl_outl(1, MAPLE_ENABLE); | ||
87 | } | ||
88 | |||
89 | /** | ||
90 | * maple_getcond_callback - setup handling MAPLE_COMMAND_GETCOND | ||
91 | * @dev: device responding | ||
92 | * @callback: handler callback | ||
93 | * @interval: interval in jiffies between callbacks | ||
94 | * @function: the function code for the device | ||
95 | */ | ||
96 | void maple_getcond_callback(struct maple_device *dev, | ||
97 | void (*callback) (struct mapleq * mq), | ||
98 | unsigned long interval, unsigned long function) | ||
99 | { | ||
100 | dev->callback = callback; | ||
101 | dev->interval = interval; | ||
102 | dev->function = cpu_to_be32(function); | ||
103 | dev->when = jiffies; | ||
104 | } | ||
105 | EXPORT_SYMBOL_GPL(maple_getcond_callback); | ||
106 | |||
107 | static int maple_dma_done(void) | ||
108 | { | ||
109 | return (ctrl_inl(MAPLE_STATE) & 1) == 0; | ||
110 | } | ||
111 | |||
112 | static void maple_release_device(struct device *dev) | ||
113 | { | ||
114 | if (dev->type) { | ||
115 | kfree(dev->type->name); | ||
116 | kfree(dev->type); | ||
117 | } | ||
118 | } | ||
119 | |||
120 | /** | ||
121 | * maple_add_packet - add a single instruction to the queue | ||
122 | * @mq: instruction to add to waiting queue | ||
123 | */ | ||
124 | void maple_add_packet(struct mapleq *mq) | ||
125 | { | ||
126 | mutex_lock(&maple_list_lock); | ||
127 | list_add(&mq->list, &maple_waitq); | ||
128 | mutex_unlock(&maple_list_lock); | ||
129 | } | ||
130 | EXPORT_SYMBOL_GPL(maple_add_packet); | ||
131 | |||
132 | static struct mapleq *maple_allocq(struct maple_device *dev) | ||
133 | { | ||
134 | struct mapleq *mq; | ||
135 | |||
136 | mq = kmalloc(sizeof(*mq), GFP_KERNEL); | ||
137 | if (!mq) | ||
138 | return NULL; | ||
139 | |||
140 | mq->dev = dev; | ||
141 | mq->recvbufdcsp = kmem_cache_zalloc(maple_queue_cache, GFP_KERNEL); | ||
142 | mq->recvbuf = (void *) P2SEGADDR(mq->recvbufdcsp); | ||
143 | if (!mq->recvbuf) { | ||
144 | kfree(mq); | ||
145 | return NULL; | ||
146 | } | ||
147 | |||
148 | return mq; | ||
149 | } | ||
150 | |||
151 | static struct maple_device *maple_alloc_dev(int port, int unit) | ||
152 | { | ||
153 | struct maple_device *dev; | ||
154 | |||
155 | dev = kzalloc(sizeof(*dev), GFP_KERNEL); | ||
156 | if (!dev) | ||
157 | return NULL; | ||
158 | |||
159 | dev->port = port; | ||
160 | dev->unit = unit; | ||
161 | dev->mq = maple_allocq(dev); | ||
162 | |||
163 | if (!dev->mq) { | ||
164 | kfree(dev); | ||
165 | return NULL; | ||
166 | } | ||
167 | |||
168 | return dev; | ||
169 | } | ||
170 | |||
171 | static void maple_free_dev(struct maple_device *mdev) | ||
172 | { | ||
173 | if (!mdev) | ||
174 | return; | ||
175 | if (mdev->mq) { | ||
176 | kmem_cache_free(maple_queue_cache, mdev->mq->recvbufdcsp); | ||
177 | kfree(mdev->mq); | ||
178 | } | ||
179 | kfree(mdev); | ||
180 | } | ||
181 | |||
182 | /* process the command queue into a maple command block | ||
183 | * terminating command has bit 32 of first long set to 0 | ||
184 | */ | ||
185 | static void maple_build_block(struct mapleq *mq) | ||
186 | { | ||
187 | int port, unit, from, to, len; | ||
188 | unsigned long *lsendbuf = mq->sendbuf; | ||
189 | |||
190 | port = mq->dev->port & 3; | ||
191 | unit = mq->dev->unit; | ||
192 | len = mq->length; | ||
193 | from = port << 6; | ||
194 | to = (port << 6) | (unit > 0 ? (1 << (unit - 1)) & 0x1f : 0x20); | ||
195 | |||
196 | *maple_lastptr &= 0x7fffffff; | ||
197 | maple_lastptr = maple_sendptr; | ||
198 | |||
199 | *maple_sendptr++ = (port << 16) | len | 0x80000000; | ||
200 | *maple_sendptr++ = PHYSADDR(mq->recvbuf); | ||
201 | *maple_sendptr++ = | ||
202 | mq->command | (to << 8) | (from << 16) | (len << 24); | ||
203 | |||
204 | while (len-- > 0) | ||
205 | *maple_sendptr++ = *lsendbuf++; | ||
206 | } | ||
207 | |||
208 | /* build up command queue */ | ||
209 | static void maple_send(void) | ||
210 | { | ||
211 | int i; | ||
212 | int maple_packets; | ||
213 | struct mapleq *mq, *nmq; | ||
214 | |||
215 | if (!list_empty(&maple_sentq)) | ||
216 | return; | ||
217 | if (list_empty(&maple_waitq) || !maple_dma_done()) | ||
218 | return; | ||
219 | maple_packets = 0; | ||
220 | maple_sendptr = maple_lastptr = maple_sendbuf; | ||
221 | list_for_each_entry_safe(mq, nmq, &maple_waitq, list) { | ||
222 | maple_build_block(mq); | ||
223 | list_move(&mq->list, &maple_sentq); | ||
224 | if (maple_packets++ > MAPLE_MAXPACKETS) | ||
225 | break; | ||
226 | } | ||
227 | if (maple_packets > 0) { | ||
228 | for (i = 0; i < (1 << MAPLE_DMA_PAGES); i++) | ||
229 | dma_cache_sync(0, maple_sendbuf + i * PAGE_SIZE, | ||
230 | PAGE_SIZE, DMA_BIDIRECTIONAL); | ||
231 | } | ||
232 | } | ||
233 | |||
234 | static int attach_matching_maple_driver(struct device_driver *driver, | ||
235 | void *devptr) | ||
236 | { | ||
237 | struct maple_driver *maple_drv; | ||
238 | struct maple_device *mdev; | ||
239 | |||
240 | mdev = devptr; | ||
241 | maple_drv = to_maple_driver(driver); | ||
242 | if (mdev->devinfo.function & be32_to_cpu(maple_drv->function)) { | ||
243 | if (maple_drv->connect(mdev) == 0) { | ||
244 | mdev->driver = maple_drv; | ||
245 | return 1; | ||
246 | } | ||
247 | } | ||
248 | return 0; | ||
249 | } | ||
250 | |||
251 | static void maple_detach_driver(struct maple_device *mdev) | ||
252 | { | ||
253 | if (!mdev) | ||
254 | return; | ||
255 | if (mdev->driver) { | ||
256 | if (mdev->driver->disconnect) | ||
257 | mdev->driver->disconnect(mdev); | ||
258 | } | ||
259 | mdev->driver = NULL; | ||
260 | if (mdev->registered) { | ||
261 | maple_release_device(&mdev->dev); | ||
262 | device_unregister(&mdev->dev); | ||
263 | } | ||
264 | mdev->registered = 0; | ||
265 | maple_free_dev(mdev); | ||
266 | } | ||
267 | |||
268 | /* process initial MAPLE_COMMAND_DEVINFO for each device or port */ | ||
269 | static void maple_attach_driver(struct maple_device *dev) | ||
270 | { | ||
271 | char *p; | ||
272 | |||
273 | char *recvbuf; | ||
274 | unsigned long function; | ||
275 | int matched, retval; | ||
276 | |||
277 | recvbuf = dev->mq->recvbuf; | ||
278 | memcpy(&dev->devinfo, recvbuf + 4, sizeof(dev->devinfo)); | ||
279 | memcpy(dev->product_name, dev->devinfo.product_name, 30); | ||
280 | memcpy(dev->product_licence, dev->devinfo.product_licence, 60); | ||
281 | dev->product_name[30] = '\0'; | ||
282 | dev->product_licence[60] = '\0'; | ||
283 | |||
284 | for (p = dev->product_name + 29; dev->product_name <= p; p--) | ||
285 | if (*p == ' ') | ||
286 | *p = '\0'; | ||
287 | else | ||
288 | break; | ||
289 | |||
290 | for (p = dev->product_licence + 59; dev->product_licence <= p; p--) | ||
291 | if (*p == ' ') | ||
292 | *p = '\0'; | ||
293 | else | ||
294 | break; | ||
295 | |||
296 | function = be32_to_cpu(dev->devinfo.function); | ||
297 | |||
298 | if (function > 0x200) { | ||
299 | /* Do this silently - as not a real device */ | ||
300 | function = 0; | ||
301 | dev->driver = &maple_dummy_driver; | ||
302 | sprintf(dev->dev.bus_id, "%d:0.port", dev->port); | ||
303 | } else { | ||
304 | printk(KERN_INFO | ||
305 | "Maple bus at (%d, %d): Connected function 0x%lX\n", | ||
306 | dev->port, dev->unit, function); | ||
307 | |||
308 | matched = | ||
309 | bus_for_each_drv(&maple_bus_type, NULL, dev, | ||
310 | attach_matching_maple_driver); | ||
311 | |||
312 | if (matched == 0) { | ||
313 | /* Driver does not exist yet */ | ||
314 | printk(KERN_INFO | ||
315 | "No maple driver found for this device\n"); | ||
316 | dev->driver = &maple_dummy_driver; | ||
317 | } | ||
318 | |||
319 | sprintf(dev->dev.bus_id, "%d:0%d.%lX", dev->port, | ||
320 | dev->unit, function); | ||
321 | } | ||
322 | dev->function = function; | ||
323 | dev->dev.bus = &maple_bus_type; | ||
324 | dev->dev.parent = &maple_bus; | ||
325 | dev->dev.release = &maple_release_device; | ||
326 | retval = device_register(&dev->dev); | ||
327 | if (retval) { | ||
328 | printk(KERN_INFO | ||
329 | "Maple bus: Attempt to register device (%x, %x) failed.\n", | ||
330 | dev->port, dev->unit); | ||
331 | maple_free_dev(dev); | ||
332 | } | ||
333 | dev->registered = 1; | ||
334 | } | ||
335 | |||
336 | /* | ||
337 | * if device has been registered for the given | ||
338 | * port and unit then return 1 - allows identification | ||
339 | * of which devices need to be attached or detached | ||
340 | */ | ||
341 | static int detach_maple_device(struct device *device, void *portptr) | ||
342 | { | ||
343 | struct maple_device_specify *ds; | ||
344 | struct maple_device *mdev; | ||
345 | |||
346 | ds = portptr; | ||
347 | mdev = to_maple_dev(device); | ||
348 | if (mdev->port == ds->port && mdev->unit == ds->unit) | ||
349 | return 1; | ||
350 | return 0; | ||
351 | } | ||
352 | |||
353 | static int setup_maple_commands(struct device *device, void *ignored) | ||
354 | { | ||
355 | struct maple_device *maple_dev = to_maple_dev(device); | ||
356 | |||
357 | if ((maple_dev->interval > 0) | ||
358 | && time_after(jiffies, maple_dev->when)) { | ||
359 | maple_dev->when = jiffies + maple_dev->interval; | ||
360 | maple_dev->mq->command = MAPLE_COMMAND_GETCOND; | ||
361 | maple_dev->mq->sendbuf = &maple_dev->function; | ||
362 | maple_dev->mq->length = 1; | ||
363 | maple_add_packet(maple_dev->mq); | ||
364 | liststatus++; | ||
365 | } else { | ||
366 | if (time_after(jiffies, maple_pnp_time)) { | ||
367 | maple_dev->mq->command = MAPLE_COMMAND_DEVINFO; | ||
368 | maple_dev->mq->length = 0; | ||
369 | maple_add_packet(maple_dev->mq); | ||
370 | liststatus++; | ||
371 | } | ||
372 | } | ||
373 | |||
374 | return 0; | ||
375 | } | ||
376 | |||
377 | /* VBLANK bottom half - implemented via workqueue */ | ||
378 | static void maple_vblank_handler(struct work_struct *work) | ||
379 | { | ||
380 | if (!maple_dma_done()) | ||
381 | return; | ||
382 | if (!list_empty(&maple_sentq)) | ||
383 | return; | ||
384 | ctrl_outl(0, MAPLE_ENABLE); | ||
385 | liststatus = 0; | ||
386 | bus_for_each_dev(&maple_bus_type, NULL, NULL, | ||
387 | setup_maple_commands); | ||
388 | if (time_after(jiffies, maple_pnp_time)) | ||
389 | maple_pnp_time = jiffies + MAPLE_PNP_INTERVAL; | ||
390 | if (liststatus && list_empty(&maple_sentq)) { | ||
391 | INIT_LIST_HEAD(&maple_sentq); | ||
392 | maple_send(); | ||
393 | } | ||
394 | maplebus_dma_reset(); | ||
395 | } | ||
396 | |||
397 | /* handle devices added via hotplugs - placing them on queue for DEVINFO*/ | ||
398 | static void maple_map_subunits(struct maple_device *mdev, int submask) | ||
399 | { | ||
400 | int retval, k, devcheck; | ||
401 | struct maple_device *mdev_add; | ||
402 | struct maple_device_specify ds; | ||
403 | |||
404 | for (k = 0; k < 5; k++) { | ||
405 | ds.port = mdev->port; | ||
406 | ds.unit = k + 1; | ||
407 | retval = | ||
408 | bus_for_each_dev(&maple_bus_type, NULL, &ds, | ||
409 | detach_maple_device); | ||
410 | if (retval) { | ||
411 | submask = submask >> 1; | ||
412 | continue; | ||
413 | } | ||
414 | devcheck = submask & 0x01; | ||
415 | if (devcheck) { | ||
416 | mdev_add = maple_alloc_dev(mdev->port, k + 1); | ||
417 | if (!mdev_add) | ||
418 | return; | ||
419 | mdev_add->mq->command = MAPLE_COMMAND_DEVINFO; | ||
420 | mdev_add->mq->length = 0; | ||
421 | maple_add_packet(mdev_add->mq); | ||
422 | scanning = 1; | ||
423 | } | ||
424 | submask = submask >> 1; | ||
425 | } | ||
426 | } | ||
427 | |||
428 | /* mark a device as removed */ | ||
429 | static void maple_clean_submap(struct maple_device *mdev) | ||
430 | { | ||
431 | int killbit; | ||
432 | |||
433 | killbit = (mdev->unit > 0 ? (1 << (mdev->unit - 1)) & 0x1f : 0x20); | ||
434 | killbit = ~killbit; | ||
435 | killbit &= 0xFF; | ||
436 | subdevice_map[mdev->port] = subdevice_map[mdev->port] & killbit; | ||
437 | } | ||
438 | |||
439 | /* handle empty port or hotplug removal */ | ||
440 | static void maple_response_none(struct maple_device *mdev, | ||
441 | struct mapleq *mq) | ||
442 | { | ||
443 | if (mdev->unit != 0) { | ||
444 | list_del(&mq->list); | ||
445 | maple_clean_submap(mdev); | ||
446 | printk(KERN_INFO | ||
447 | "Maple bus device detaching at (%d, %d)\n", | ||
448 | mdev->port, mdev->unit); | ||
449 | maple_detach_driver(mdev); | ||
450 | return; | ||
451 | } | ||
452 | if (!started) { | ||
453 | printk(KERN_INFO "No maple devices attached to port %d\n", | ||
454 | mdev->port); | ||
455 | return; | ||
456 | } | ||
457 | maple_clean_submap(mdev); | ||
458 | } | ||
459 | |||
460 | /* preprocess hotplugs or scans */ | ||
461 | static void maple_response_devinfo(struct maple_device *mdev, | ||
462 | char *recvbuf) | ||
463 | { | ||
464 | char submask; | ||
465 | if ((!started) || (scanning == 2)) { | ||
466 | maple_attach_driver(mdev); | ||
467 | return; | ||
468 | } | ||
469 | if (mdev->unit == 0) { | ||
470 | submask = recvbuf[2] & 0x1F; | ||
471 | if (submask ^ subdevice_map[mdev->port]) { | ||
472 | maple_map_subunits(mdev, submask); | ||
473 | subdevice_map[mdev->port] = submask; | ||
474 | } | ||
475 | } | ||
476 | } | ||
477 | |||
478 | /* maple dma end bottom half - implemented via workqueue */ | ||
479 | static void maple_dma_handler(struct work_struct *work) | ||
480 | { | ||
481 | struct mapleq *mq, *nmq; | ||
482 | struct maple_device *dev; | ||
483 | char *recvbuf; | ||
484 | enum maple_code code; | ||
485 | |||
486 | if (!maple_dma_done()) | ||
487 | return; | ||
488 | ctrl_outl(0, MAPLE_ENABLE); | ||
489 | if (!list_empty(&maple_sentq)) { | ||
490 | list_for_each_entry_safe(mq, nmq, &maple_sentq, list) { | ||
491 | recvbuf = mq->recvbuf; | ||
492 | code = recvbuf[0]; | ||
493 | dev = mq->dev; | ||
494 | switch (code) { | ||
495 | case MAPLE_RESPONSE_NONE: | ||
496 | maple_response_none(dev, mq); | ||
497 | break; | ||
498 | |||
499 | case MAPLE_RESPONSE_DEVINFO: | ||
500 | maple_response_devinfo(dev, recvbuf); | ||
501 | break; | ||
502 | |||
503 | case MAPLE_RESPONSE_DATATRF: | ||
504 | if (dev->callback) | ||
505 | dev->callback(mq); | ||
506 | break; | ||
507 | |||
508 | case MAPLE_RESPONSE_FILEERR: | ||
509 | case MAPLE_RESPONSE_AGAIN: | ||
510 | case MAPLE_RESPONSE_BADCMD: | ||
511 | case MAPLE_RESPONSE_BADFUNC: | ||
512 | printk(KERN_DEBUG | ||
513 | "Maple non-fatal error 0x%X\n", | ||
514 | code); | ||
515 | break; | ||
516 | |||
517 | case MAPLE_RESPONSE_ALLINFO: | ||
518 | printk(KERN_DEBUG | ||
519 | "Maple - extended device information not supported\n"); | ||
520 | break; | ||
521 | |||
522 | case MAPLE_RESPONSE_OK: | ||
523 | break; | ||
524 | |||
525 | default: | ||
526 | break; | ||
527 | } | ||
528 | } | ||
529 | INIT_LIST_HEAD(&maple_sentq); | ||
530 | if (scanning == 1) { | ||
531 | maple_send(); | ||
532 | scanning = 2; | ||
533 | } else | ||
534 | scanning = 0; | ||
535 | |||
536 | if (started == 0) | ||
537 | started = 1; | ||
538 | } | ||
539 | maplebus_dma_reset(); | ||
540 | } | ||
541 | |||
542 | static irqreturn_t maplebus_dma_interrupt(int irq, void *dev_id) | ||
543 | { | ||
544 | /* Load everything into the bottom half */ | ||
545 | schedule_work(&maple_dma_process); | ||
546 | return IRQ_HANDLED; | ||
547 | } | ||
548 | |||
549 | static irqreturn_t maplebus_vblank_interrupt(int irq, void *dev_id) | ||
550 | { | ||
551 | schedule_work(&maple_vblank_process); | ||
552 | return IRQ_HANDLED; | ||
553 | } | ||
554 | |||
555 | static struct irqaction maple_dma_irq = { | ||
556 | .name = "maple bus DMA handler", | ||
557 | .handler = maplebus_dma_interrupt, | ||
558 | .flags = IRQF_SHARED, | ||
559 | }; | ||
560 | |||
561 | static struct irqaction maple_vblank_irq = { | ||
562 | .name = "maple bus VBLANK handler", | ||
563 | .handler = maplebus_vblank_interrupt, | ||
564 | .flags = IRQF_SHARED, | ||
565 | }; | ||
566 | |||
567 | static int maple_set_dma_interrupt_handler(void) | ||
568 | { | ||
569 | return setup_irq(HW_EVENT_MAPLE_DMA, &maple_dma_irq); | ||
570 | } | ||
571 | |||
572 | static int maple_set_vblank_interrupt_handler(void) | ||
573 | { | ||
574 | return setup_irq(HW_EVENT_VSYNC, &maple_vblank_irq); | ||
575 | } | ||
576 | |||
577 | static int maple_get_dma_buffer(void) | ||
578 | { | ||
579 | maple_sendbuf = | ||
580 | (void *) __get_free_pages(GFP_KERNEL | __GFP_ZERO, | ||
581 | MAPLE_DMA_PAGES); | ||
582 | if (!maple_sendbuf) | ||
583 | return -ENOMEM; | ||
584 | return 0; | ||
585 | } | ||
586 | |||
587 | static int match_maple_bus_driver(struct device *devptr, | ||
588 | struct device_driver *drvptr) | ||
589 | { | ||
590 | struct maple_driver *maple_drv; | ||
591 | struct maple_device *maple_dev; | ||
592 | |||
593 | maple_drv = container_of(drvptr, struct maple_driver, drv); | ||
594 | maple_dev = container_of(devptr, struct maple_device, dev); | ||
595 | /* Trap empty port case */ | ||
596 | if (maple_dev->devinfo.function == 0xFFFFFFFF) | ||
597 | return 0; | ||
598 | else if (maple_dev->devinfo.function & | ||
599 | be32_to_cpu(maple_drv->function)) | ||
600 | return 1; | ||
601 | return 0; | ||
602 | } | ||
603 | |||
604 | static int maple_bus_uevent(struct device *dev, char **envp, | ||
605 | int num_envp, char *buffer, int buffer_size) | ||
606 | { | ||
607 | return 0; | ||
608 | } | ||
609 | |||
610 | static void maple_bus_release(struct device *dev) | ||
611 | { | ||
612 | } | ||
613 | |||
614 | static struct maple_driver maple_dummy_driver = { | ||
615 | .drv = { | ||
616 | .name = "maple_dummy_driver", | ||
617 | .bus = &maple_bus_type, | ||
618 | }, | ||
619 | }; | ||
620 | |||
621 | struct bus_type maple_bus_type = { | ||
622 | .name = "maple", | ||
623 | .match = match_maple_bus_driver, | ||
624 | .uevent = maple_bus_uevent, | ||
625 | }; | ||
626 | EXPORT_SYMBOL_GPL(maple_bus_type); | ||
627 | |||
628 | static struct device maple_bus = { | ||
629 | .bus_id = "maple", | ||
630 | .release = maple_bus_release, | ||
631 | }; | ||
632 | |||
633 | static int __init maple_bus_init(void) | ||
634 | { | ||
635 | int retval, i; | ||
636 | struct maple_device *mdev[MAPLE_PORTS]; | ||
637 | ctrl_outl(0, MAPLE_STATE); | ||
638 | |||
639 | retval = device_register(&maple_bus); | ||
640 | if (retval) | ||
641 | goto cleanup; | ||
642 | |||
643 | retval = bus_register(&maple_bus_type); | ||
644 | if (retval) | ||
645 | goto cleanup_device; | ||
646 | |||
647 | retval = driver_register(&maple_dummy_driver.drv); | ||
648 | |||
649 | if (retval) | ||
650 | goto cleanup_bus; | ||
651 | |||
652 | /* allocate memory for maple bus dma */ | ||
653 | retval = maple_get_dma_buffer(); | ||
654 | if (retval) { | ||
655 | printk(KERN_INFO | ||
656 | "Maple bus: Failed to allocate Maple DMA buffers\n"); | ||
657 | goto cleanup_basic; | ||
658 | } | ||
659 | |||
660 | /* set up DMA interrupt handler */ | ||
661 | retval = maple_set_dma_interrupt_handler(); | ||
662 | if (retval) { | ||
663 | printk(KERN_INFO | ||
664 | "Maple bus: Failed to grab maple DMA IRQ\n"); | ||
665 | goto cleanup_dma; | ||
666 | } | ||
667 | |||
668 | /* set up VBLANK interrupt handler */ | ||
669 | retval = maple_set_vblank_interrupt_handler(); | ||
670 | if (retval) { | ||
671 | printk(KERN_INFO "Maple bus: Failed to grab VBLANK IRQ\n"); | ||
672 | goto cleanup_irq; | ||
673 | } | ||
674 | |||
675 | maple_queue_cache = | ||
676 | kmem_cache_create("maple_queue_cache", 0x400, 0, | ||
677 | SLAB_HWCACHE_ALIGN, NULL); | ||
678 | |||
679 | if (!maple_queue_cache) | ||
680 | goto cleanup_bothirqs; | ||
681 | |||
682 | /* setup maple ports */ | ||
683 | for (i = 0; i < MAPLE_PORTS; i++) { | ||
684 | mdev[i] = maple_alloc_dev(i, 0); | ||
685 | if (!mdev[i]) { | ||
686 | while (i-- > 0) | ||
687 | maple_free_dev(mdev[i]); | ||
688 | goto cleanup_cache; | ||
689 | } | ||
690 | mdev[i]->registered = 0; | ||
691 | mdev[i]->mq->command = MAPLE_COMMAND_DEVINFO; | ||
692 | mdev[i]->mq->length = 0; | ||
693 | maple_attach_driver(mdev[i]); | ||
694 | maple_add_packet(mdev[i]->mq); | ||
695 | subdevice_map[i] = 0; | ||
696 | } | ||
697 | |||
698 | /* setup maplebus hardware */ | ||
699 | maplebus_dma_reset(); | ||
700 | |||
701 | /* initial detection */ | ||
702 | maple_send(); | ||
703 | |||
704 | maple_pnp_time = jiffies; | ||
705 | |||
706 | printk(KERN_INFO "Maple bus core now registered.\n"); | ||
707 | |||
708 | return 0; | ||
709 | |||
710 | cleanup_cache: | ||
711 | kmem_cache_destroy(maple_queue_cache); | ||
712 | |||
713 | cleanup_bothirqs: | ||
714 | free_irq(HW_EVENT_VSYNC, 0); | ||
715 | |||
716 | cleanup_irq: | ||
717 | free_irq(HW_EVENT_MAPLE_DMA, 0); | ||
718 | |||
719 | cleanup_dma: | ||
720 | free_pages((unsigned long) maple_sendbuf, MAPLE_DMA_PAGES); | ||
721 | |||
722 | cleanup_basic: | ||
723 | driver_unregister(&maple_dummy_driver.drv); | ||
724 | |||
725 | cleanup_bus: | ||
726 | bus_unregister(&maple_bus_type); | ||
727 | |||
728 | cleanup_device: | ||
729 | device_unregister(&maple_bus); | ||
730 | |||
731 | cleanup: | ||
732 | printk(KERN_INFO "Maple bus registration failed\n"); | ||
733 | return retval; | ||
734 | } | ||
735 | subsys_initcall(maple_bus_init); | ||
diff --git a/drivers/video/backlight/hp680_bl.c b/drivers/video/backlight/hp680_bl.c index 0899fccbd570..fbea2bd129c7 100644 --- a/drivers/video/backlight/hp680_bl.c +++ b/drivers/video/backlight/hp680_bl.c | |||
@@ -125,8 +125,8 @@ static int hp680bl_remove(struct platform_device *pdev) | |||
125 | { | 125 | { |
126 | struct backlight_device *bd = platform_get_drvdata(pdev); | 126 | struct backlight_device *bd = platform_get_drvdata(pdev); |
127 | 127 | ||
128 | hp680bl_data.brightness = 0; | 128 | bd->props.brightness = 0; |
129 | hp680bl_data.power = 0; | 129 | bd->props.power = 0; |
130 | hp680bl_send_intensity(bd); | 130 | hp680bl_send_intensity(bd); |
131 | 131 | ||
132 | backlight_device_unregister(bd); | 132 | backlight_device_unregister(bd); |
diff --git a/drivers/video/pvr2fb.c b/drivers/video/pvr2fb.c index 7d6c29800d14..06805c9b237b 100644 --- a/drivers/video/pvr2fb.c +++ b/drivers/video/pvr2fb.c | |||
@@ -667,6 +667,8 @@ static int pvr2_init_cable(void) | |||
667 | related */ | 667 | related */ |
668 | if (cable_type == CT_COMPOSITE) | 668 | if (cable_type == CT_COMPOSITE) |
669 | fb_writel(3 << 8, VOUTC); | 669 | fb_writel(3 << 8, VOUTC); |
670 | else if (cable_type == CT_RGB) | ||
671 | fb_writel(1 << 9, VOUTC); | ||
670 | else | 672 | else |
671 | fb_writel(0, VOUTC); | 673 | fb_writel(0, VOUTC); |
672 | 674 | ||
@@ -890,7 +892,7 @@ static int __init pvr2fb_dc_init(void) | |||
890 | pvr2_fix.mmio_start = 0xa05f8000; /* registers start here */ | 892 | pvr2_fix.mmio_start = 0xa05f8000; /* registers start here */ |
891 | pvr2_fix.mmio_len = 0x2000; | 893 | pvr2_fix.mmio_len = 0x2000; |
892 | 894 | ||
893 | if (request_irq(HW_EVENT_VSYNC, pvr2fb_interrupt, 0, | 895 | if (request_irq(HW_EVENT_VSYNC, pvr2fb_interrupt, IRQF_SHARED, |
894 | "pvr2 VBL handler", fb_info)) { | 896 | "pvr2 VBL handler", fb_info)) { |
895 | return -EBUSY; | 897 | return -EBUSY; |
896 | } | 898 | } |
diff --git a/include/asm-sh/cacheflush.h b/include/asm-sh/cacheflush.h index 07f62ec9ff0c..aa558da08471 100644 --- a/include/asm-sh/cacheflush.h +++ b/include/asm-sh/cacheflush.h | |||
@@ -1,16 +1,47 @@ | |||
1 | #ifndef __ASM_SH_CACHEFLUSH_H | 1 | #ifndef __ASM_SH_CACHEFLUSH_H |
2 | #define __ASM_SH_CACHEFLUSH_H | 2 | #define __ASM_SH_CACHEFLUSH_H |
3 | |||
3 | #ifdef __KERNEL__ | 4 | #ifdef __KERNEL__ |
4 | 5 | ||
5 | #include <linux/mm.h> | 6 | #ifdef CONFIG_CACHE_OFF |
7 | /* | ||
8 | * Nothing to do when the cache is disabled, initial flush and explicit | ||
9 | * disabling is handled at CPU init time. | ||
10 | * | ||
11 | * See arch/sh/kernel/cpu/init.c:cache_init(). | ||
12 | */ | ||
13 | #define p3_cache_init() do { } while (0) | ||
14 | #define flush_cache_all() do { } while (0) | ||
15 | #define flush_cache_mm(mm) do { } while (0) | ||
16 | #define flush_cache_dup_mm(mm) do { } while (0) | ||
17 | #define flush_cache_range(vma, start, end) do { } while (0) | ||
18 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) | ||
19 | #define flush_dcache_page(page) do { } while (0) | ||
20 | #define flush_icache_range(start, end) do { } while (0) | ||
21 | #define flush_icache_page(vma,pg) do { } while (0) | ||
22 | #define flush_dcache_mmap_lock(mapping) do { } while (0) | ||
23 | #define flush_dcache_mmap_unlock(mapping) do { } while (0) | ||
24 | #define flush_cache_sigtramp(vaddr) do { } while (0) | ||
25 | #define flush_icache_user_range(vma,pg,adr,len) do { } while (0) | ||
26 | #define __flush_wback_region(start, size) do { (void)(start); } while (0) | ||
27 | #define __flush_purge_region(start, size) do { (void)(start); } while (0) | ||
28 | #define __flush_invalidate_region(start, size) do { (void)(start); } while (0) | ||
29 | #else | ||
6 | #include <asm/cpu/cacheflush.h> | 30 | #include <asm/cpu/cacheflush.h> |
7 | 31 | ||
32 | /* | ||
33 | * Consistent DMA requires that the __flush_xxx() primitives must be set | ||
34 | * for any of the enabled non-coherent caches (most of the UP CPUs), | ||
35 | * regardless of PIPT or VIPT cache configurations. | ||
36 | */ | ||
37 | |||
8 | /* Flush (write-back only) a region (smaller than a page) */ | 38 | /* Flush (write-back only) a region (smaller than a page) */ |
9 | extern void __flush_wback_region(void *start, int size); | 39 | extern void __flush_wback_region(void *start, int size); |
10 | /* Flush (write-back & invalidate) a region (smaller than a page) */ | 40 | /* Flush (write-back & invalidate) a region (smaller than a page) */ |
11 | extern void __flush_purge_region(void *start, int size); | 41 | extern void __flush_purge_region(void *start, int size); |
12 | /* Flush (invalidate only) a region (smaller than a page) */ | 42 | /* Flush (invalidate only) a region (smaller than a page) */ |
13 | extern void __flush_invalidate_region(void *start, int size); | 43 | extern void __flush_invalidate_region(void *start, int size); |
44 | #endif | ||
14 | 45 | ||
15 | #define flush_cache_vmap(start, end) flush_cache_all() | 46 | #define flush_cache_vmap(start, end) flush_cache_all() |
16 | #define flush_cache_vunmap(start, end) flush_cache_all() | 47 | #define flush_cache_vunmap(start, end) flush_cache_all() |
diff --git a/include/asm-sh/cpu-sh3/cache.h b/include/asm-sh/cpu-sh3/cache.h index ffe08d2813f9..255016fc91f0 100644 --- a/include/asm-sh/cpu-sh3/cache.h +++ b/include/asm-sh/cpu-sh3/cache.h | |||
@@ -26,7 +26,9 @@ | |||
26 | #define CCR_CACHE_ENABLE CCR_CACHE_CE | 26 | #define CCR_CACHE_ENABLE CCR_CACHE_CE |
27 | #define CCR_CACHE_INVALIDATE CCR_CACHE_CF | 27 | #define CCR_CACHE_INVALIDATE CCR_CACHE_CF |
28 | 28 | ||
29 | #if defined(CONFIG_CPU_SUBTYPE_SH7705) || defined(CONFIG_CPU_SUBTYPE_SH7710) | 29 | #if defined(CONFIG_CPU_SUBTYPE_SH7705) || \ |
30 | defined(CONFIG_CPU_SUBTYPE_SH7710) || \ | ||
31 | defined(CONFIG_CPU_SUBTYPE_SH7720) | ||
30 | #define CCR3 0xa40000b4 | 32 | #define CCR3 0xa40000b4 |
31 | #define CCR_CACHE_16KB 0x00010000 | 33 | #define CCR_CACHE_16KB 0x00010000 |
32 | #define CCR_CACHE_32KB 0x00020000 | 34 | #define CCR_CACHE_32KB 0x00020000 |
diff --git a/include/asm-sh/cpu-sh3/dma.h b/include/asm-sh/cpu-sh3/dma.h index 3a66dc458023..54bfece328c2 100644 --- a/include/asm-sh/cpu-sh3/dma.h +++ b/include/asm-sh/cpu-sh3/dma.h | |||
@@ -1,7 +1,20 @@ | |||
1 | #ifndef __ASM_CPU_SH3_DMA_H | 1 | #ifndef __ASM_CPU_SH3_DMA_H |
2 | #define __ASM_CPU_SH3_DMA_H | 2 | #define __ASM_CPU_SH3_DMA_H |
3 | 3 | ||
4 | |||
5 | #if defined(CONFIG_CPU_SUBTYPE_SH7720) || defined(CONFIG_CPU_SUBTYPE_SH7709) | ||
6 | #define SH_DMAC_BASE 0xa4010020 | ||
7 | |||
8 | #define DMTE0_IRQ 48 | ||
9 | #define DMTE1_IRQ 49 | ||
10 | #define DMTE2_IRQ 50 | ||
11 | #define DMTE3_IRQ 51 | ||
12 | #define DMTE4_IRQ 76 | ||
13 | #define DMTE5_IRQ 77 | ||
14 | |||
15 | #else | ||
4 | #define SH_DMAC_BASE 0xa4000020 | 16 | #define SH_DMAC_BASE 0xa4000020 |
17 | #endif | ||
5 | 18 | ||
6 | /* Definitions for the SuperH DMAC */ | 19 | /* Definitions for the SuperH DMAC */ |
7 | #define TM_BURST 0x00000020 | 20 | #define TM_BURST 0x00000020 |
diff --git a/include/asm-sh/cpu-sh3/gpio.h b/include/asm-sh/cpu-sh3/gpio.h new file mode 100644 index 000000000000..48770c1c7bdf --- /dev/null +++ b/include/asm-sh/cpu-sh3/gpio.h | |||
@@ -0,0 +1,66 @@ | |||
1 | /* | ||
2 | * include/asm-sh/cpu-sh3/gpio.h | ||
3 | * | ||
4 | * Copyright (C) 2007 Markus Brunner, Mark Jonas | ||
5 | * | ||
6 | * Addresses for the Pin Function Controller | ||
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 | #ifndef _CPU_SH3_GPIO_H | ||
13 | #define _CPU_SH3_GPIO_H | ||
14 | |||
15 | #if defined(CONFIG_CPU_SUBTYPE_SH7720) | ||
16 | |||
17 | /* Control registers */ | ||
18 | #define PORT_PACR 0xA4050100UL | ||
19 | #define PORT_PBCR 0xA4050102UL | ||
20 | #define PORT_PCCR 0xA4050104UL | ||
21 | #define PORT_PDCR 0xA4050106UL | ||
22 | #define PORT_PECR 0xA4050108UL | ||
23 | #define PORT_PFCR 0xA405010AUL | ||
24 | #define PORT_PGCR 0xA405010CUL | ||
25 | #define PORT_PHCR 0xA405010EUL | ||
26 | #define PORT_PJCR 0xA4050110UL | ||
27 | #define PORT_PKCR 0xA4050112UL | ||
28 | #define PORT_PLCR 0xA4050114UL | ||
29 | #define PORT_PMCR 0xA4050116UL | ||
30 | #define PORT_PPCR 0xA4050118UL | ||
31 | #define PORT_PRCR 0xA405011AUL | ||
32 | #define PORT_PSCR 0xA405011CUL | ||
33 | #define PORT_PTCR 0xA405011EUL | ||
34 | #define PORT_PUCR 0xA4050120UL | ||
35 | #define PORT_PVCR 0xA4050122UL | ||
36 | |||
37 | /* Data registers */ | ||
38 | #define PORT_PADR 0xA4050140UL | ||
39 | /* Address of PORT_PBDR is wrong in the datasheet, see errata 2005-09-21 */ | ||
40 | #define PORT_PBDR 0xA4050142UL | ||
41 | #define PORT_PCDR 0xA4050144UL | ||
42 | #define PORT_PDDR 0xA4050146UL | ||
43 | #define PORT_PEDR 0xA4050148UL | ||
44 | #define PORT_PFDR 0xA405014AUL | ||
45 | #define PORT_PGDR 0xA405014CUL | ||
46 | #define PORT_PHDR 0xA405014EUL | ||
47 | #define PORT_PJDR 0xA4050150UL | ||
48 | #define PORT_PKDR 0xA4050152UL | ||
49 | #define PORT_PLDR 0xA4050154UL | ||
50 | #define PORT_PMDR 0xA4050156UL | ||
51 | #define PORT_PPDR 0xA4050158UL | ||
52 | #define PORT_PRDR 0xA405015AUL | ||
53 | #define PORT_PSDR 0xA405015CUL | ||
54 | #define PORT_PTDR 0xA405015EUL | ||
55 | #define PORT_PUDR 0xA4050160UL | ||
56 | #define PORT_PVDR 0xA4050162UL | ||
57 | |||
58 | /* Pin Select Registers */ | ||
59 | #define PORT_PSELA 0xA4050124UL | ||
60 | #define PORT_PSELB 0xA4050126UL | ||
61 | #define PORT_PSELC 0xA4050128UL | ||
62 | #define PORT_PSELD 0xA405012AUL | ||
63 | |||
64 | #endif | ||
65 | |||
66 | #endif | ||
diff --git a/include/asm-sh/cpu-sh3/mmu_context.h b/include/asm-sh/cpu-sh3/mmu_context.h index b20786d42d09..16c2d63b7e39 100644 --- a/include/asm-sh/cpu-sh3/mmu_context.h +++ b/include/asm-sh/cpu-sh3/mmu_context.h | |||
@@ -27,12 +27,13 @@ | |||
27 | #define TRA 0xffffffd0 | 27 | #define TRA 0xffffffd0 |
28 | #define EXPEVT 0xffffffd4 | 28 | #define EXPEVT 0xffffffd4 |
29 | 29 | ||
30 | #if defined(CONFIG_CPU_SUBTYPE_SH7707) || \ | 30 | #if defined(CONFIG_CPU_SUBTYPE_SH7705) || \ |
31 | defined(CONFIG_CPU_SUBTYPE_SH7709) || \ | ||
32 | defined(CONFIG_CPU_SUBTYPE_SH7706) || \ | 31 | defined(CONFIG_CPU_SUBTYPE_SH7706) || \ |
33 | defined(CONFIG_CPU_SUBTYPE_SH7705) || \ | 32 | defined(CONFIG_CPU_SUBTYPE_SH7707) || \ |
33 | defined(CONFIG_CPU_SUBTYPE_SH7709) || \ | ||
34 | defined(CONFIG_CPU_SUBTYPE_SH7710) || \ | ||
34 | defined(CONFIG_CPU_SUBTYPE_SH7712) || \ | 35 | defined(CONFIG_CPU_SUBTYPE_SH7712) || \ |
35 | defined(CONFIG_CPU_SUBTYPE_SH7710) | 36 | defined(CONFIG_CPU_SUBTYPE_SH7720) |
36 | #define INTEVT 0xa4000000 /* INTEVTE2(0xa4000000) */ | 37 | #define INTEVT 0xa4000000 /* INTEVTE2(0xa4000000) */ |
37 | #else | 38 | #else |
38 | #define INTEVT 0xffffffd8 | 39 | #define INTEVT 0xffffffd8 |
diff --git a/include/asm-sh/cpu-sh3/timer.h b/include/asm-sh/cpu-sh3/timer.h index b6c2020a2ad3..3880ce047fe0 100644 --- a/include/asm-sh/cpu-sh3/timer.h +++ b/include/asm-sh/cpu-sh3/timer.h | |||
@@ -23,11 +23,13 @@ | |||
23 | * --------------------------------------------------------------------------- | 23 | * --------------------------------------------------------------------------- |
24 | */ | 24 | */ |
25 | 25 | ||
26 | #if !defined(CONFIG_CPU_SUBTYPE_SH7727) | 26 | #if !defined(CONFIG_CPU_SUBTYPE_SH7720) && \ |
27 | !defined(CONFIG_CPU_SUBTYPE_SH7727) | ||
27 | #define TMU_TOCR 0xfffffe90 /* Byte access */ | 28 | #define TMU_TOCR 0xfffffe90 /* Byte access */ |
28 | #endif | 29 | #endif |
29 | 30 | ||
30 | #if defined(CONFIG_CPU_SUBTYPE_SH7710) | 31 | #if defined(CONFIG_CPU_SUBTYPE_SH7710) || \ |
32 | defined(CONFIG_CPU_SUBTYPE_SH7720) | ||
31 | #define TMU_012_TSTR 0xa412fe92 /* Byte access */ | 33 | #define TMU_012_TSTR 0xa412fe92 /* Byte access */ |
32 | 34 | ||
33 | #define TMU0_TCOR 0xa412fe94 /* Long access */ | 35 | #define TMU0_TCOR 0xa412fe94 /* Long access */ |
@@ -56,7 +58,8 @@ | |||
56 | #define TMU2_TCOR 0xfffffeac /* Long access */ | 58 | #define TMU2_TCOR 0xfffffeac /* Long access */ |
57 | #define TMU2_TCNT 0xfffffeb0 /* Long access */ | 59 | #define TMU2_TCNT 0xfffffeb0 /* Long access */ |
58 | #define TMU2_TCR 0xfffffeb4 /* Word access */ | 60 | #define TMU2_TCR 0xfffffeb4 /* Word access */ |
59 | #if !defined(CONFIG_CPU_SUBTYPE_SH7727) | 61 | #if !defined(CONFIG_CPU_SUBTYPE_SH7720) && \ |
62 | !defined(CONFIG_CPU_SUBTYPE_SH7727) | ||
60 | #define TMU2_TCPR2 0xfffffeb8 /* Long access */ | 63 | #define TMU2_TCPR2 0xfffffeb8 /* Long access */ |
61 | #endif | 64 | #endif |
62 | #endif | 65 | #endif |
diff --git a/include/asm-sh/cpu-sh3/ubc.h b/include/asm-sh/cpu-sh3/ubc.h index 9d308cbe9b29..18467c574534 100644 --- a/include/asm-sh/cpu-sh3/ubc.h +++ b/include/asm-sh/cpu-sh3/ubc.h | |||
@@ -11,7 +11,8 @@ | |||
11 | #ifndef __ASM_CPU_SH3_UBC_H | 11 | #ifndef __ASM_CPU_SH3_UBC_H |
12 | #define __ASM_CPU_SH3_UBC_H | 12 | #define __ASM_CPU_SH3_UBC_H |
13 | 13 | ||
14 | #if defined(CONFIG_CPU_SUBTYPE_SH7710) | 14 | #if defined(CONFIG_CPU_SUBTYPE_SH7710) || \ |
15 | defined(CONFIG_CPU_SUBTYPE_SH7720) | ||
15 | #define UBC_BARA 0xa4ffffb0 | 16 | #define UBC_BARA 0xa4ffffb0 |
16 | #define UBC_BAMRA 0xa4ffffb4 | 17 | #define UBC_BAMRA 0xa4ffffb4 |
17 | #define UBC_BBRA 0xa4ffffb8 | 18 | #define UBC_BBRA 0xa4ffffb8 |
diff --git a/include/asm-sh/cpu-sh4/dma.h b/include/asm-sh/cpu-sh4/dma.h index 36e26a964765..aaf71b018c28 100644 --- a/include/asm-sh/cpu-sh4/dma.h +++ b/include/asm-sh/cpu-sh4/dma.h | |||
@@ -31,7 +31,7 @@ | |||
31 | #define TS_32 0x00000030 | 31 | #define TS_32 0x00000030 |
32 | #define TS_64 0x00000000 | 32 | #define TS_64 0x00000000 |
33 | 33 | ||
34 | #define CHCR_TS_MASK 0x30 | 34 | #define CHCR_TS_MASK 0x70 |
35 | #define CHCR_TS_SHIFT 4 | 35 | #define CHCR_TS_SHIFT 4 |
36 | 36 | ||
37 | #define DMAOR_COD 0x00000008 | 37 | #define DMAOR_COD 0x00000008 |
diff --git a/include/asm-sh/cpu-sh4/mmu_context.h b/include/asm-sh/cpu-sh4/mmu_context.h index ff4c5fbbfaf0..979acddc0f8e 100644 --- a/include/asm-sh/cpu-sh4/mmu_context.h +++ b/include/asm-sh/cpu-sh4/mmu_context.h | |||
@@ -22,13 +22,21 @@ | |||
22 | #define MMU_UTLB_ADDRESS_ARRAY 0xF6000000 | 22 | #define MMU_UTLB_ADDRESS_ARRAY 0xF6000000 |
23 | #define MMU_PAGE_ASSOC_BIT 0x80 | 23 | #define MMU_PAGE_ASSOC_BIT 0x80 |
24 | 24 | ||
25 | #define MMU_NTLB_ENTRIES 64 /* for 7750 */ | 25 | #ifdef CONFIG_X2TLB |
26 | #define MMUCR_ME (1 << 7) | ||
27 | #else | ||
28 | #define MMUCR_ME (0) | ||
29 | #endif | ||
30 | |||
26 | #ifdef CONFIG_SH_STORE_QUEUES | 31 | #ifdef CONFIG_SH_STORE_QUEUES |
27 | #define MMU_CONTROL_INIT 0x05 /* SQMD=0, SV=0, TI=1, AT=1 */ | 32 | #define MMUCR_SQMD (1 << 9) |
28 | #else | 33 | #else |
29 | #define MMU_CONTROL_INIT 0x205 /* SQMD=1, SV=0, TI=1, AT=1 */ | 34 | #define MMUCR_SQMD (0) |
30 | #endif | 35 | #endif |
31 | 36 | ||
37 | #define MMU_NTLB_ENTRIES 64 | ||
38 | #define MMU_CONTROL_INIT (0x05|MMUCR_SQMD|MMUCR_ME) | ||
39 | |||
32 | #define MMU_ITLB_DATA_ARRAY 0xF3000000 | 40 | #define MMU_ITLB_DATA_ARRAY 0xF3000000 |
33 | #define MMU_UTLB_DATA_ARRAY 0xF7000000 | 41 | #define MMU_UTLB_DATA_ARRAY 0xF7000000 |
34 | 42 | ||
diff --git a/include/asm-sh/dma.h b/include/asm-sh/dma.h index 4c75b70b6414..a65b02fd186e 100644 --- a/include/asm-sh/dma.h +++ b/include/asm-sh/dma.h | |||
@@ -152,14 +152,9 @@ extern struct dma_info *get_dma_info_by_name(const char *dmac_name); | |||
152 | extern int dma_extend(unsigned int chan, unsigned long op, void *param); | 152 | extern int dma_extend(unsigned int chan, unsigned long op, void *param); |
153 | extern int register_chan_caps(const char *dmac, struct dma_chan_caps *capslist); | 153 | extern int register_chan_caps(const char *dmac, struct dma_chan_caps *capslist); |
154 | 154 | ||
155 | #ifdef CONFIG_SYSFS | ||
156 | /* arch/sh/drivers/dma/dma-sysfs.c */ | 155 | /* arch/sh/drivers/dma/dma-sysfs.c */ |
157 | extern int dma_create_sysfs_files(struct dma_channel *, struct dma_info *); | 156 | extern int dma_create_sysfs_files(struct dma_channel *, struct dma_info *); |
158 | extern void dma_remove_sysfs_files(struct dma_channel *, struct dma_info *); | 157 | extern void dma_remove_sysfs_files(struct dma_channel *, struct dma_info *); |
159 | #else | ||
160 | #define dma_create_sysfs_file(channel, info) do { } while (0) | ||
161 | #define dma_remove_sysfs_file(channel, info) do { } while (0) | ||
162 | #endif | ||
163 | 158 | ||
164 | #ifdef CONFIG_PCI | 159 | #ifdef CONFIG_PCI |
165 | extern int isa_dma_bridge_buggy; | 160 | extern int isa_dma_bridge_buggy; |
diff --git a/include/asm-sh/dreamcast/maple.h b/include/asm-sh/dreamcast/maple.h new file mode 100644 index 000000000000..51f6a87f1f11 --- /dev/null +++ b/include/asm-sh/dreamcast/maple.h | |||
@@ -0,0 +1,37 @@ | |||
1 | #ifndef __ASM_MAPLE_H | ||
2 | #define __ASM_MAPLE_H | ||
3 | |||
4 | #define MAPLE_PORTS 4 | ||
5 | #define MAPLE_PNP_INTERVAL HZ | ||
6 | #define MAPLE_MAXPACKETS 8 | ||
7 | #define MAPLE_DMA_ORDER 14 | ||
8 | #define MAPLE_DMA_SIZE (1 << MAPLE_DMA_ORDER) | ||
9 | #define MAPLE_DMA_PAGES ((MAPLE_DMA_ORDER > PAGE_SHIFT) ? \ | ||
10 | MAPLE_DMA_ORDER - PAGE_SHIFT : 0) | ||
11 | |||
12 | /* Maple Bus registers */ | ||
13 | #define MAPLE_BASE 0xa05f6c00 | ||
14 | #define MAPLE_DMAADDR (MAPLE_BASE+0x04) | ||
15 | #define MAPLE_TRIGTYPE (MAPLE_BASE+0x10) | ||
16 | #define MAPLE_ENABLE (MAPLE_BASE+0x14) | ||
17 | #define MAPLE_STATE (MAPLE_BASE+0x18) | ||
18 | #define MAPLE_SPEED (MAPLE_BASE+0x80) | ||
19 | #define MAPLE_RESET (MAPLE_BASE+0x8c) | ||
20 | |||
21 | #define MAPLE_MAGIC 0x6155404f | ||
22 | #define MAPLE_2MBPS 0 | ||
23 | #define MAPLE_TIMEOUT(n) ((n)<<15) | ||
24 | |||
25 | /* Function codes */ | ||
26 | #define MAPLE_FUNC_CONTROLLER 0x001 | ||
27 | #define MAPLE_FUNC_MEMCARD 0x002 | ||
28 | #define MAPLE_FUNC_LCD 0x004 | ||
29 | #define MAPLE_FUNC_CLOCK 0x008 | ||
30 | #define MAPLE_FUNC_MICROPHONE 0x010 | ||
31 | #define MAPLE_FUNC_ARGUN 0x020 | ||
32 | #define MAPLE_FUNC_KEYBOARD 0x040 | ||
33 | #define MAPLE_FUNC_LIGHTGUN 0x080 | ||
34 | #define MAPLE_FUNC_PURUPURU 0x100 | ||
35 | #define MAPLE_FUNC_MOUSE 0x200 | ||
36 | |||
37 | #endif /* __ASM_MAPLE_H */ | ||
diff --git a/include/asm-sh/gpio.h b/include/asm-sh/gpio.h new file mode 100644 index 000000000000..9bb27e0f11a4 --- /dev/null +++ b/include/asm-sh/gpio.h | |||
@@ -0,0 +1,19 @@ | |||
1 | /* | ||
2 | * include/asm-sh/gpio.h | ||
3 | * | ||
4 | * Copyright (C) 2007 Markus Brunner, Mark Jonas | ||
5 | * | ||
6 | * Addresses for the Pin Function Controller | ||
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 | #ifndef __ASM_SH_GPIO_H | ||
13 | #define __ASM_SH_GPIO_H | ||
14 | |||
15 | #if defined(CONFIG_CPU_SH3) | ||
16 | #include <asm/cpu/gpio.h> | ||
17 | #endif | ||
18 | |||
19 | #endif /* __ASM_SH_GPIO_H */ | ||
diff --git a/include/asm-sh/hd64461.h b/include/asm-sh/hd64461.h index 4dd8592ca014..342ca55a266a 100644 --- a/include/asm-sh/hd64461.h +++ b/include/asm-sh/hd64461.h | |||
@@ -226,6 +226,7 @@ | |||
226 | #define HD64461_NIMR (CONFIG_HD64461_IOBASE + 0x5002) | 226 | #define HD64461_NIMR (CONFIG_HD64461_IOBASE + 0x5002) |
227 | 227 | ||
228 | #define HD64461_IRQBASE OFFCHIP_IRQ_BASE | 228 | #define HD64461_IRQBASE OFFCHIP_IRQ_BASE |
229 | #define OFFCHIP_IRQ_BASE 64 | ||
229 | #define HD64461_IRQ_NUM 16 | 230 | #define HD64461_IRQ_NUM 16 |
230 | 231 | ||
231 | #define HD64461_IRQ_UART (HD64461_IRQBASE+5) | 232 | #define HD64461_IRQ_UART (HD64461_IRQBASE+5) |
diff --git a/include/asm-sh/heartbeat.h b/include/asm-sh/heartbeat.h new file mode 100644 index 000000000000..724a43ed245e --- /dev/null +++ b/include/asm-sh/heartbeat.h | |||
@@ -0,0 +1,17 @@ | |||
1 | #ifndef __ASM_SH_HEARTBEAT_H | ||
2 | #define __ASM_SH_HEARTBEAT_H | ||
3 | |||
4 | #include <linux/timer.h> | ||
5 | |||
6 | #define HEARTBEAT_INVERTED (1 << 0) | ||
7 | |||
8 | struct heartbeat_data { | ||
9 | void __iomem *base; | ||
10 | unsigned char *bit_pos; | ||
11 | unsigned int nr_bits; | ||
12 | struct timer_list timer; | ||
13 | unsigned int regsize; | ||
14 | unsigned long flags; | ||
15 | }; | ||
16 | |||
17 | #endif /* __ASM_SH_HEARTBEAT_H */ | ||
diff --git a/include/asm-sh/hw_irq.h b/include/asm-sh/hw_irq.h index 20d42959f52a..cb0b6c9f7020 100644 --- a/include/asm-sh/hw_irq.h +++ b/include/asm-sh/hw_irq.h | |||
@@ -6,24 +6,6 @@ | |||
6 | 6 | ||
7 | extern atomic_t irq_err_count; | 7 | extern atomic_t irq_err_count; |
8 | 8 | ||
9 | struct intc2_data { | ||
10 | unsigned short irq; | ||
11 | unsigned char ipr_offset, ipr_shift; | ||
12 | unsigned char msk_offset, msk_shift; | ||
13 | unsigned char priority; | ||
14 | }; | ||
15 | |||
16 | struct intc2_desc { | ||
17 | unsigned long prio_base; | ||
18 | unsigned long msk_base; | ||
19 | unsigned long mskclr_base; | ||
20 | struct intc2_data *intc2_data; | ||
21 | unsigned int nr_irqs; | ||
22 | struct irq_chip chip; | ||
23 | }; | ||
24 | |||
25 | void register_intc2_controller(struct intc2_desc *); | ||
26 | |||
27 | struct ipr_data { | 9 | struct ipr_data { |
28 | unsigned char irq; | 10 | unsigned char irq; |
29 | unsigned char ipr_idx; /* Index for the IPR registered */ | 11 | unsigned char ipr_idx; /* Index for the IPR registered */ |
@@ -41,11 +23,6 @@ struct ipr_desc { | |||
41 | 23 | ||
42 | void register_ipr_controller(struct ipr_desc *); | 24 | void register_ipr_controller(struct ipr_desc *); |
43 | 25 | ||
44 | /* | ||
45 | * Enable individual interrupt mode for external IPR IRQs. | ||
46 | */ | ||
47 | void __init ipr_irq_enable_irlm(void); | ||
48 | |||
49 | typedef unsigned char intc_enum; | 26 | typedef unsigned char intc_enum; |
50 | 27 | ||
51 | struct intc_vect { | 28 | struct intc_vect { |
@@ -54,6 +31,7 @@ struct intc_vect { | |||
54 | }; | 31 | }; |
55 | 32 | ||
56 | #define INTC_VECT(enum_id, vect) { enum_id, vect } | 33 | #define INTC_VECT(enum_id, vect) { enum_id, vect } |
34 | #define INTC_IRQ(enum_id, irq) INTC_VECT(enum_id, irq2evt(irq)) | ||
57 | 35 | ||
58 | struct intc_prio { | 36 | struct intc_prio { |
59 | intc_enum enum_id; | 37 | intc_enum enum_id; |
@@ -64,19 +42,25 @@ struct intc_prio { | |||
64 | 42 | ||
65 | struct intc_group { | 43 | struct intc_group { |
66 | intc_enum enum_id; | 44 | intc_enum enum_id; |
67 | intc_enum *enum_ids; | 45 | intc_enum enum_ids[32]; |
68 | }; | 46 | }; |
69 | 47 | ||
70 | #define INTC_GROUP(enum_id, ids...) { enum_id, (intc_enum []) { ids, 0 } } | 48 | #define INTC_GROUP(enum_id, ids...) { enum_id, { ids } } |
71 | 49 | ||
72 | struct intc_mask_reg { | 50 | struct intc_mask_reg { |
73 | unsigned long set_reg, clr_reg, reg_width; | 51 | unsigned long set_reg, clr_reg, reg_width; |
74 | intc_enum enum_ids[32]; | 52 | intc_enum enum_ids[32]; |
53 | #ifdef CONFIG_SMP | ||
54 | unsigned long smp; | ||
55 | #endif | ||
75 | }; | 56 | }; |
76 | 57 | ||
77 | struct intc_prio_reg { | 58 | struct intc_prio_reg { |
78 | unsigned long reg, reg_width, field_width; | 59 | unsigned long set_reg, clr_reg, reg_width, field_width; |
79 | intc_enum enum_ids[16]; | 60 | intc_enum enum_ids[16]; |
61 | #ifdef CONFIG_SMP | ||
62 | unsigned long smp; | ||
63 | #endif | ||
80 | }; | 64 | }; |
81 | 65 | ||
82 | struct intc_sense_reg { | 66 | struct intc_sense_reg { |
@@ -84,6 +68,12 @@ struct intc_sense_reg { | |||
84 | intc_enum enum_ids[16]; | 68 | intc_enum enum_ids[16]; |
85 | }; | 69 | }; |
86 | 70 | ||
71 | #ifdef CONFIG_SMP | ||
72 | #define INTC_SMP(stride, nr) .smp = (stride) | ((nr) << 8) | ||
73 | #else | ||
74 | #define INTC_SMP(stride, nr) | ||
75 | #endif | ||
76 | |||
87 | struct intc_desc { | 77 | struct intc_desc { |
88 | struct intc_vect *vectors; | 78 | struct intc_vect *vectors; |
89 | unsigned int nr_vectors; | 79 | unsigned int nr_vectors; |
@@ -97,25 +87,28 @@ struct intc_desc { | |||
97 | unsigned int nr_prio_regs; | 87 | unsigned int nr_prio_regs; |
98 | struct intc_sense_reg *sense_regs; | 88 | struct intc_sense_reg *sense_regs; |
99 | unsigned int nr_sense_regs; | 89 | unsigned int nr_sense_regs; |
100 | struct irq_chip chip; | 90 | char *name; |
101 | }; | 91 | }; |
102 | 92 | ||
103 | #define _INTC_ARRAY(a) a, sizeof(a)/sizeof(*a) | 93 | #define _INTC_ARRAY(a) a, sizeof(a)/sizeof(*a) |
104 | #define DECLARE_INTC_DESC(symbol, chipname, vectors, groups, \ | 94 | #define DECLARE_INTC_DESC(symbol, chipname, vectors, groups, \ |
105 | priorities, mask_regs, prio_regs, sense_regs) \ | 95 | priorities, mask_regs, prio_regs, sense_regs) \ |
106 | struct intc_desc symbol = { \ | 96 | struct intc_desc symbol __initdata = { \ |
107 | _INTC_ARRAY(vectors), _INTC_ARRAY(groups), \ | 97 | _INTC_ARRAY(vectors), _INTC_ARRAY(groups), \ |
108 | _INTC_ARRAY(priorities), \ | 98 | _INTC_ARRAY(priorities), \ |
109 | _INTC_ARRAY(mask_regs), _INTC_ARRAY(prio_regs), \ | 99 | _INTC_ARRAY(mask_regs), _INTC_ARRAY(prio_regs), \ |
110 | _INTC_ARRAY(sense_regs), \ | 100 | _INTC_ARRAY(sense_regs), \ |
111 | .chip.name = chipname, \ | 101 | chipname, \ |
112 | } | 102 | } |
113 | 103 | ||
114 | void __init register_intc_controller(struct intc_desc *desc); | 104 | void __init register_intc_controller(struct intc_desc *desc); |
105 | int intc_set_priority(unsigned int irq, unsigned int prio); | ||
115 | 106 | ||
116 | void __init plat_irq_setup(void); | 107 | void __init plat_irq_setup(void); |
117 | 108 | ||
118 | enum { IRQ_MODE_IRQ, IRQ_MODE_IRL7654, IRQ_MODE_IRL3210 }; | 109 | enum { IRQ_MODE_IRQ, IRQ_MODE_IRQ7654, IRQ_MODE_IRQ3210, |
110 | IRQ_MODE_IRL7654_MASK, IRQ_MODE_IRL3210_MASK, | ||
111 | IRQ_MODE_IRL7654, IRQ_MODE_IRL3210 }; | ||
119 | void __init plat_irq_setup_pins(int mode); | 112 | void __init plat_irq_setup_pins(int mode); |
120 | 113 | ||
121 | #endif /* __ASM_SH_HW_IRQ_H */ | 114 | #endif /* __ASM_SH_HW_IRQ_H */ |
diff --git a/include/asm-sh/ilsel.h b/include/asm-sh/ilsel.h new file mode 100644 index 000000000000..e3d304b280f6 --- /dev/null +++ b/include/asm-sh/ilsel.h | |||
@@ -0,0 +1,45 @@ | |||
1 | #ifndef __ASM_SH_ILSEL_H | ||
2 | #define __ASM_SH_ILSEL_H | ||
3 | |||
4 | typedef enum { | ||
5 | ILSEL_NONE, | ||
6 | ILSEL_LAN, | ||
7 | ILSEL_USBH_I, | ||
8 | ILSEL_USBH_S, | ||
9 | ILSEL_USBH_V, | ||
10 | ILSEL_RTC, | ||
11 | ILSEL_USBP_I, | ||
12 | ILSEL_USBP_S, | ||
13 | ILSEL_USBP_V, | ||
14 | ILSEL_KEY, | ||
15 | |||
16 | /* | ||
17 | * ILSEL Aliases - corner cases for interleaved level tables. | ||
18 | * | ||
19 | * Someone thought this was a good idea and less hassle than | ||
20 | * demuxing a shared vector, really. | ||
21 | */ | ||
22 | |||
23 | /* ILSEL0 and 2 */ | ||
24 | ILSEL_FPGA0, | ||
25 | ILSEL_FPGA1, | ||
26 | ILSEL_EX1, | ||
27 | ILSEL_EX2, | ||
28 | ILSEL_EX3, | ||
29 | ILSEL_EX4, | ||
30 | |||
31 | /* ILSEL1 and 3 */ | ||
32 | ILSEL_FPGA2 = ILSEL_FPGA0, | ||
33 | ILSEL_FPGA3 = ILSEL_FPGA1, | ||
34 | ILSEL_EX5 = ILSEL_EX1, | ||
35 | ILSEL_EX6 = ILSEL_EX2, | ||
36 | ILSEL_EX7 = ILSEL_EX3, | ||
37 | ILSEL_EX8 = ILSEL_EX4, | ||
38 | } ilsel_source_t; | ||
39 | |||
40 | /* arch/sh/boards/renesas/x3proto/ilsel.c */ | ||
41 | int ilsel_enable(ilsel_source_t set); | ||
42 | int ilsel_enable_fixed(ilsel_source_t set, unsigned int level); | ||
43 | void ilsel_disable(unsigned int irq); | ||
44 | |||
45 | #endif /* __ASM_SH_ILSEL_H */ | ||
diff --git a/include/asm-sh/io.h b/include/asm-sh/io.h index e6a1877dcb20..1a336cdc75fe 100644 --- a/include/asm-sh/io.h +++ b/include/asm-sh/io.h | |||
@@ -135,6 +135,32 @@ void __raw_readsl(unsigned long addr, void *data, int longlen); | |||
135 | # define writel(v,a) ({ __raw_writel((v),(a)); mb(); }) | 135 | # define writel(v,a) ({ __raw_writel((v),(a)); mb(); }) |
136 | #endif | 136 | #endif |
137 | 137 | ||
138 | #define __BUILD_MEMORY_STRING(bwlq, type) \ | ||
139 | \ | ||
140 | static inline void writes##bwlq(volatile void __iomem *mem, \ | ||
141 | const void *addr, unsigned int count) \ | ||
142 | { \ | ||
143 | const volatile type *__addr = addr; \ | ||
144 | \ | ||
145 | while (count--) { \ | ||
146 | __raw_write##bwlq(*__addr, mem); \ | ||
147 | __addr++; \ | ||
148 | } \ | ||
149 | } \ | ||
150 | \ | ||
151 | static inline void reads##bwlq(volatile void __iomem *mem, void *addr, \ | ||
152 | unsigned int count) \ | ||
153 | { \ | ||
154 | volatile type *__addr = addr; \ | ||
155 | \ | ||
156 | while (count--) { \ | ||
157 | *__addr = __raw_read##bwlq(mem); \ | ||
158 | __addr++; \ | ||
159 | } \ | ||
160 | } | ||
161 | |||
162 | __BUILD_MEMORY_STRING(b, u8) | ||
163 | __BUILD_MEMORY_STRING(w, u16) | ||
138 | #define writesl __raw_writesl | 164 | #define writesl __raw_writesl |
139 | #define readsl __raw_readsl | 165 | #define readsl __raw_readsl |
140 | 166 | ||
diff --git a/include/asm-sh/kgdb.h b/include/asm-sh/kgdb.h index 74bd0953e5ce..4bc8cb187d11 100644 --- a/include/asm-sh/kgdb.h +++ b/include/asm-sh/kgdb.h | |||
@@ -17,9 +17,6 @@ | |||
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> | ||
21 | |||
22 | struct console; | ||
23 | 20 | ||
24 | /* Same as pt_regs but has vbr in place of syscall_nr */ | 21 | /* Same as pt_regs but has vbr in place of syscall_nr */ |
25 | struct kgdb_regs { | 22 | struct kgdb_regs { |
@@ -35,10 +32,7 @@ struct kgdb_regs { | |||
35 | 32 | ||
36 | /* State info */ | 33 | /* State info */ |
37 | extern char kgdb_in_gdb_mode; | 34 | extern char kgdb_in_gdb_mode; |
38 | extern int kgdb_done_init; | ||
39 | extern int kgdb_enabled; | ||
40 | extern int kgdb_nofault; /* Ignore bus errors (in gdb mem access) */ | 35 | extern int kgdb_nofault; /* Ignore bus errors (in gdb mem access) */ |
41 | extern int kgdb_halt; /* Execute initial breakpoint at startup */ | ||
42 | extern char in_nmi; /* Debounce flag to prevent NMI reentry*/ | 36 | extern char in_nmi; /* Debounce flag to prevent NMI reentry*/ |
43 | 37 | ||
44 | /* SCI */ | 38 | /* SCI */ |
@@ -59,6 +53,7 @@ extern kgdb_debug_hook_t *kgdb_debug_hook; | |||
59 | extern kgdb_bus_error_hook_t *kgdb_bus_err_hook; | 53 | extern kgdb_bus_error_hook_t *kgdb_bus_err_hook; |
60 | 54 | ||
61 | /* Console */ | 55 | /* Console */ |
56 | struct console; | ||
62 | void kgdb_console_write(struct console *co, const char *s, unsigned count); | 57 | void kgdb_console_write(struct console *co, const char *s, unsigned count); |
63 | extern int kgdb_console_setup(struct console *, char *); | 58 | extern int kgdb_console_setup(struct console *, char *); |
64 | 59 | ||
@@ -69,22 +64,7 @@ extern void longjmp(jmp_buf __jmpb, int __retval); | |||
69 | extern int setjmp(jmp_buf __jmpb); | 64 | extern int setjmp(jmp_buf __jmpb); |
70 | 65 | ||
71 | /* Forced breakpoint */ | 66 | /* Forced breakpoint */ |
72 | #define breakpoint() \ | 67 | #define breakpoint() __asm__ __volatile__("trapa #0x3c") |
73 | do { \ | ||
74 | if (kgdb_enabled) \ | ||
75 | __asm__ __volatile__("trapa #0x3c"); \ | ||
76 | } while (0) | ||
77 | |||
78 | /* KGDB should be able to flush all kernel text space */ | ||
79 | #if defined(CONFIG_CPU_SH4) | ||
80 | #define kgdb_flush_icache_range(start, end) \ | ||
81 | { \ | ||
82 | __flush_purge_region((void*)(start), (int)(end) - (int)(start));\ | ||
83 | flush_icache_range((start), (end)); \ | ||
84 | } | ||
85 | #else | ||
86 | #define kgdb_flush_icache_range(start, end) do { } while (0) | ||
87 | #endif | ||
88 | 68 | ||
89 | /* Taken from sh-stub.c of GDB 4.18 */ | 69 | /* Taken from sh-stub.c of GDB 4.18 */ |
90 | static const char hexchars[] = "0123456789abcdef"; | 70 | static const char hexchars[] = "0123456789abcdef"; |
diff --git a/include/asm-sh/magicpanelr2.h b/include/asm-sh/magicpanelr2.h new file mode 100644 index 000000000000..c644a77ee357 --- /dev/null +++ b/include/asm-sh/magicpanelr2.h | |||
@@ -0,0 +1,67 @@ | |||
1 | /* | ||
2 | * include/asm-sh/magicpanelr2.h | ||
3 | * | ||
4 | * Copyright (C) 2007 Markus Brunner, Mark Jonas | ||
5 | * | ||
6 | * I/O addresses and bitmasks for Magic Panel Release 2 board | ||
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 | #ifndef __ASM_SH_MAGICPANELR2_H | ||
14 | #define __ASM_SH_MAGICPANELR2_H | ||
15 | |||
16 | #include <asm/gpio.h> | ||
17 | |||
18 | #define __IO_PREFIX mpr2 | ||
19 | #include <asm/io_generic.h> | ||
20 | |||
21 | |||
22 | #define SETBITS_OUTB(mask, reg) ctrl_outb(ctrl_inb(reg) | mask, reg) | ||
23 | #define SETBITS_OUTW(mask, reg) ctrl_outw(ctrl_inw(reg) | mask, reg) | ||
24 | #define SETBITS_OUTL(mask, reg) ctrl_outl(ctrl_inl(reg) | mask, reg) | ||
25 | #define CLRBITS_OUTB(mask, reg) ctrl_outb(ctrl_inb(reg) & ~mask, reg) | ||
26 | #define CLRBITS_OUTW(mask, reg) ctrl_outw(ctrl_inw(reg) & ~mask, reg) | ||
27 | #define CLRBITS_OUTL(mask, reg) ctrl_outl(ctrl_inl(reg) & ~mask, reg) | ||
28 | |||
29 | |||
30 | #define PA_LED PORT_PADR /* LED */ | ||
31 | |||
32 | |||
33 | /* BSC */ | ||
34 | #define CMNCR 0xA4FD0000UL | ||
35 | #define CS0BCR 0xA4FD0004UL | ||
36 | #define CS2BCR 0xA4FD0008UL | ||
37 | #define CS3BCR 0xA4FD000CUL | ||
38 | #define CS4BCR 0xA4FD0010UL | ||
39 | #define CS5ABCR 0xA4FD0014UL | ||
40 | #define CS5BBCR 0xA4FD0018UL | ||
41 | #define CS6ABCR 0xA4FD001CUL | ||
42 | #define CS6BBCR 0xA4FD0020UL | ||
43 | #define CS0WCR 0xA4FD0024UL | ||
44 | #define CS2WCR 0xA4FD0028UL | ||
45 | #define CS3WCR 0xA4FD002CUL | ||
46 | #define CS4WCR 0xA4FD0030UL | ||
47 | #define CS5AWCR 0xA4FD0034UL | ||
48 | #define CS5BWCR 0xA4FD0038UL | ||
49 | #define CS6AWCR 0xA4FD003CUL | ||
50 | #define CS6BWCR 0xA4FD0040UL | ||
51 | |||
52 | |||
53 | /* usb */ | ||
54 | |||
55 | #define PORT_UTRCTL 0xA405012CUL | ||
56 | #define PORT_UCLKCR_W 0xA40A0008UL | ||
57 | |||
58 | #define INTC_ICR0 0xA414FEE0UL | ||
59 | #define INTC_ICR1 0xA4140010UL | ||
60 | #define INTC_ICR2 0xA4140012UL | ||
61 | |||
62 | /* MTD */ | ||
63 | |||
64 | #define MPR2_MTD_BOOTLOADER_SIZE 0x00060000UL | ||
65 | #define MPR2_MTD_KERNEL_SIZE 0x00200000UL | ||
66 | |||
67 | #endif /* __ASM_SH_MAGICPANELR2_H */ | ||
diff --git a/include/asm-sh/page.h b/include/asm-sh/page.h index 6bc9bba10105..cb3d46c59eab 100644 --- a/include/asm-sh/page.h +++ b/include/asm-sh/page.h | |||
@@ -70,14 +70,14 @@ extern void clear_page_nommu(void *to); | |||
70 | extern void copy_page_nommu(void *to, void *from); | 70 | extern void copy_page_nommu(void *to, void *from); |
71 | #endif | 71 | #endif |
72 | 72 | ||
73 | #if defined(CONFIG_MMU) && (defined(CONFIG_CPU_SH4) || \ | 73 | #if !defined(CONFIG_CACHE_OFF) && defined(CONFIG_MMU) && \ |
74 | defined(CONFIG_SH7705_CACHE_32KB)) | 74 | (defined(CONFIG_CPU_SH4) || defined(CONFIG_SH7705_CACHE_32KB)) |
75 | struct page; | 75 | struct page; |
76 | extern void clear_user_page(void *to, unsigned long address, struct page *pg); | 76 | extern void clear_user_page(void *to, unsigned long address, struct page *pg); |
77 | extern void copy_user_page(void *to, void *from, unsigned long address, struct page *pg); | 77 | extern void copy_user_page(void *to, void *from, unsigned long address, struct page *pg); |
78 | extern void __clear_user_page(void *to, void *orig_to); | 78 | extern void __clear_user_page(void *to, void *orig_to); |
79 | extern void __copy_user_page(void *to, void *from, void *orig_to); | 79 | extern void __copy_user_page(void *to, void *from, void *orig_to); |
80 | #elif defined(CONFIG_CPU_SH2) || defined(CONFIG_CPU_SH3) || !defined(CONFIG_MMU) | 80 | #else |
81 | #define clear_user_page(page, vaddr, pg) clear_page(page) | 81 | #define clear_user_page(page, vaddr, pg) clear_page(page) |
82 | #define copy_user_page(to, from, vaddr, pg) copy_page(to, from) | 82 | #define copy_user_page(to, from, vaddr, pg) copy_page(to, from) |
83 | #endif | 83 | #endif |
@@ -88,6 +88,7 @@ extern void __copy_user_page(void *to, void *from, void *orig_to); | |||
88 | #ifdef CONFIG_X2TLB | 88 | #ifdef CONFIG_X2TLB |
89 | typedef struct { unsigned long pte_low, pte_high; } pte_t; | 89 | typedef struct { unsigned long pte_low, pte_high; } pte_t; |
90 | typedef struct { unsigned long long pgprot; } pgprot_t; | 90 | typedef struct { unsigned long long pgprot; } pgprot_t; |
91 | typedef struct { unsigned long long pgd; } pgd_t; | ||
91 | #define pte_val(x) \ | 92 | #define pte_val(x) \ |
92 | ((x).pte_low | ((unsigned long long)(x).pte_high << 32)) | 93 | ((x).pte_low | ((unsigned long long)(x).pte_high << 32)) |
93 | #define __pte(x) \ | 94 | #define __pte(x) \ |
@@ -95,12 +96,11 @@ typedef struct { unsigned long long pgprot; } pgprot_t; | |||
95 | #else | 96 | #else |
96 | typedef struct { unsigned long pte_low; } pte_t; | 97 | typedef struct { unsigned long pte_low; } pte_t; |
97 | typedef struct { unsigned long pgprot; } pgprot_t; | 98 | typedef struct { unsigned long pgprot; } pgprot_t; |
99 | typedef struct { unsigned long pgd; } pgd_t; | ||
98 | #define pte_val(x) ((x).pte_low) | 100 | #define pte_val(x) ((x).pte_low) |
99 | #define __pte(x) ((pte_t) { (x) } ) | 101 | #define __pte(x) ((pte_t) { (x) } ) |
100 | #endif | 102 | #endif |
101 | 103 | ||
102 | typedef struct { unsigned long pgd; } pgd_t; | ||
103 | |||
104 | #define pgd_val(x) ((x).pgd) | 104 | #define pgd_val(x) ((x).pgd) |
105 | #define pgprot_val(x) ((x).pgprot) | 105 | #define pgprot_val(x) ((x).pgprot) |
106 | 106 | ||
diff --git a/include/asm-sh/pgtable.h b/include/asm-sh/pgtable.h index e3fae12c0e49..cf0dd2b648c2 100644 --- a/include/asm-sh/pgtable.h +++ b/include/asm-sh/pgtable.h | |||
@@ -42,13 +42,12 @@ extern unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)]; | |||
42 | 42 | ||
43 | /* PGD bits */ | 43 | /* PGD bits */ |
44 | #define PGDIR_SHIFT (PTE_SHIFT + PTE_BITS) | 44 | #define PGDIR_SHIFT (PTE_SHIFT + PTE_BITS) |
45 | #define PGDIR_BITS (32 - PGDIR_SHIFT) | ||
46 | #define PGDIR_SIZE (1UL << PGDIR_SHIFT) | 45 | #define PGDIR_SIZE (1UL << PGDIR_SHIFT) |
47 | #define PGDIR_MASK (~(PGDIR_SIZE-1)) | 46 | #define PGDIR_MASK (~(PGDIR_SIZE-1)) |
48 | 47 | ||
49 | /* Entries per level */ | 48 | /* Entries per level */ |
50 | #define PTRS_PER_PTE (PAGE_SIZE / (1 << PTE_MAGNITUDE)) | 49 | #define PTRS_PER_PTE (PAGE_SIZE / (1 << PTE_MAGNITUDE)) |
51 | #define PTRS_PER_PGD (PAGE_SIZE / 4) | 50 | #define PTRS_PER_PGD (PAGE_SIZE / sizeof(pgd_t)) |
52 | 51 | ||
53 | #define USER_PTRS_PER_PGD (TASK_SIZE/PGDIR_SIZE) | 52 | #define USER_PTRS_PER_PGD (TASK_SIZE/PGDIR_SIZE) |
54 | #define FIRST_USER_ADDRESS 0 | 53 | #define FIRST_USER_ADDRESS 0 |
@@ -100,17 +99,18 @@ extern unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)]; | |||
100 | #define _PAGE_HW_SHARED 0x002 /* SH-bit : shared among processes */ | 99 | #define _PAGE_HW_SHARED 0x002 /* SH-bit : shared among processes */ |
101 | #define _PAGE_DIRTY 0x004 /* D-bit : page changed */ | 100 | #define _PAGE_DIRTY 0x004 /* D-bit : page changed */ |
102 | #define _PAGE_CACHABLE 0x008 /* C-bit : cachable */ | 101 | #define _PAGE_CACHABLE 0x008 /* C-bit : cachable */ |
103 | #ifndef CONFIG_X2TLB | 102 | #define _PAGE_SZ0 0x010 /* SZ0-bit : Size of page */ |
104 | # define _PAGE_SZ0 0x010 /* SZ0-bit : Size of page */ | 103 | #define _PAGE_RW 0x020 /* PR0-bit : write access allowed */ |
105 | # define _PAGE_RW 0x020 /* PR0-bit : write access allowed */ | 104 | #define _PAGE_USER 0x040 /* PR1-bit : user space access allowed*/ |
106 | # define _PAGE_USER 0x040 /* PR1-bit : user space access allowed*/ | 105 | #define _PAGE_SZ1 0x080 /* SZ1-bit : Size of page (on SH-4) */ |
107 | # define _PAGE_SZ1 0x080 /* SZ1-bit : Size of page (on SH-4) */ | ||
108 | #endif | ||
109 | #define _PAGE_PRESENT 0x100 /* V-bit : page is valid */ | 106 | #define _PAGE_PRESENT 0x100 /* V-bit : page is valid */ |
110 | #define _PAGE_PROTNONE 0x200 /* software: if not present */ | 107 | #define _PAGE_PROTNONE 0x200 /* software: if not present */ |
111 | #define _PAGE_ACCESSED 0x400 /* software: page referenced */ | 108 | #define _PAGE_ACCESSED 0x400 /* software: page referenced */ |
112 | #define _PAGE_FILE _PAGE_WT /* software: pagecache or swap? */ | 109 | #define _PAGE_FILE _PAGE_WT /* software: pagecache or swap? */ |
113 | 110 | ||
111 | #define _PAGE_SZ_MASK (_PAGE_SZ0 | _PAGE_SZ1) | ||
112 | #define _PAGE_PR_MASK (_PAGE_RW | _PAGE_USER) | ||
113 | |||
114 | /* Extended mode bits */ | 114 | /* Extended mode bits */ |
115 | #define _PAGE_EXT_ESZ0 0x0010 /* ESZ0-bit: Size of page */ | 115 | #define _PAGE_EXT_ESZ0 0x0010 /* ESZ0-bit: Size of page */ |
116 | #define _PAGE_EXT_ESZ1 0x0020 /* ESZ1-bit: Size of page */ | 116 | #define _PAGE_EXT_ESZ1 0x0020 /* ESZ1-bit: Size of page */ |
@@ -126,11 +126,7 @@ extern unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)]; | |||
126 | #define _PAGE_EXT_KERN_READ 0x2000 /* EPR5-bit: Kernel space readable */ | 126 | #define _PAGE_EXT_KERN_READ 0x2000 /* EPR5-bit: Kernel space readable */ |
127 | 127 | ||
128 | /* Wrapper for extended mode pgprot twiddling */ | 128 | /* Wrapper for extended mode pgprot twiddling */ |
129 | #ifdef CONFIG_X2TLB | 129 | #define _PAGE_EXT(x) ((unsigned long long)(x) << 32) |
130 | # define _PAGE_EXT(x) ((unsigned long long)(x) << 32) | ||
131 | #else | ||
132 | # define _PAGE_EXT(x) (0) | ||
133 | #endif | ||
134 | 130 | ||
135 | /* software: moves to PTEA.TC (Timing Control) */ | 131 | /* software: moves to PTEA.TC (Timing Control) */ |
136 | #define _PAGE_PCC_AREA5 0x00000000 /* use BSC registers for area5 */ | 132 | #define _PAGE_PCC_AREA5 0x00000000 /* use BSC registers for area5 */ |
@@ -146,10 +142,14 @@ extern unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)]; | |||
146 | #define _PAGE_PCC_ATR16 0x60000001 /* Attribute Memory space, 6 bit bus */ | 142 | #define _PAGE_PCC_ATR16 0x60000001 /* Attribute Memory space, 6 bit bus */ |
147 | 143 | ||
148 | /* Mask which drops unused bits from the PTEL value */ | 144 | /* Mask which drops unused bits from the PTEL value */ |
149 | #ifdef CONFIG_CPU_SH3 | 145 | #if defined(CONFIG_CPU_SH3) |
150 | #define _PAGE_CLEAR_FLAGS (_PAGE_PROTNONE | _PAGE_ACCESSED| \ | 146 | #define _PAGE_CLEAR_FLAGS (_PAGE_PROTNONE | _PAGE_ACCESSED| \ |
151 | _PAGE_FILE | _PAGE_SZ1 | \ | 147 | _PAGE_FILE | _PAGE_SZ1 | \ |
152 | _PAGE_HW_SHARED) | 148 | _PAGE_HW_SHARED) |
149 | #elif defined(CONFIG_X2TLB) | ||
150 | /* Get rid of the legacy PR/SZ bits when using extended mode */ | ||
151 | #define _PAGE_CLEAR_FLAGS (_PAGE_PROTNONE | _PAGE_ACCESSED | \ | ||
152 | _PAGE_FILE | _PAGE_PR_MASK | _PAGE_SZ_MASK) | ||
153 | #else | 153 | #else |
154 | #define _PAGE_CLEAR_FLAGS (_PAGE_PROTNONE | _PAGE_ACCESSED | _PAGE_FILE) | 154 | #define _PAGE_CLEAR_FLAGS (_PAGE_PROTNONE | _PAGE_ACCESSED | _PAGE_FILE) |
155 | #endif | 155 | #endif |
@@ -212,27 +212,36 @@ extern unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)]; | |||
212 | 212 | ||
213 | #define PAGE_SHARED __pgprot(_PAGE_PRESENT | _PAGE_ACCESSED | \ | 213 | #define PAGE_SHARED __pgprot(_PAGE_PRESENT | _PAGE_ACCESSED | \ |
214 | _PAGE_CACHABLE | _PAGE_FLAGS_HARD | \ | 214 | _PAGE_CACHABLE | _PAGE_FLAGS_HARD | \ |
215 | _PAGE_EXT(_PAGE_EXT_USER_READ | \ | 215 | _PAGE_EXT(_PAGE_EXT_KERN_READ | \ |
216 | _PAGE_EXT_KERN_WRITE | \ | ||
217 | _PAGE_EXT_USER_READ | \ | ||
216 | _PAGE_EXT_USER_WRITE)) | 218 | _PAGE_EXT_USER_WRITE)) |
217 | 219 | ||
218 | #define PAGE_EXECREAD __pgprot(_PAGE_PRESENT | _PAGE_ACCESSED | \ | 220 | #define PAGE_EXECREAD __pgprot(_PAGE_PRESENT | _PAGE_ACCESSED | \ |
219 | _PAGE_CACHABLE | _PAGE_FLAGS_HARD | \ | 221 | _PAGE_CACHABLE | _PAGE_FLAGS_HARD | \ |
220 | _PAGE_EXT(_PAGE_EXT_USER_EXEC | \ | 222 | _PAGE_EXT(_PAGE_EXT_KERN_EXEC | \ |
223 | _PAGE_EXT_KERN_READ | \ | ||
224 | _PAGE_EXT_USER_EXEC | \ | ||
221 | _PAGE_EXT_USER_READ)) | 225 | _PAGE_EXT_USER_READ)) |
222 | 226 | ||
223 | #define PAGE_COPY PAGE_EXECREAD | 227 | #define PAGE_COPY PAGE_EXECREAD |
224 | 228 | ||
225 | #define PAGE_READONLY __pgprot(_PAGE_PRESENT | _PAGE_ACCESSED | \ | 229 | #define PAGE_READONLY __pgprot(_PAGE_PRESENT | _PAGE_ACCESSED | \ |
226 | _PAGE_CACHABLE | _PAGE_FLAGS_HARD | \ | 230 | _PAGE_CACHABLE | _PAGE_FLAGS_HARD | \ |
227 | _PAGE_EXT(_PAGE_EXT_USER_READ)) | 231 | _PAGE_EXT(_PAGE_EXT_KERN_READ | \ |
232 | _PAGE_EXT_USER_READ)) | ||
228 | 233 | ||
229 | #define PAGE_WRITEONLY __pgprot(_PAGE_PRESENT | _PAGE_ACCESSED | \ | 234 | #define PAGE_WRITEONLY __pgprot(_PAGE_PRESENT | _PAGE_ACCESSED | \ |
230 | _PAGE_CACHABLE | _PAGE_FLAGS_HARD | \ | 235 | _PAGE_CACHABLE | _PAGE_FLAGS_HARD | \ |
231 | _PAGE_EXT(_PAGE_EXT_USER_WRITE)) | 236 | _PAGE_EXT(_PAGE_EXT_KERN_WRITE | \ |
237 | _PAGE_EXT_USER_WRITE)) | ||
232 | 238 | ||
233 | #define PAGE_RWX __pgprot(_PAGE_PRESENT | _PAGE_ACCESSED | \ | 239 | #define PAGE_RWX __pgprot(_PAGE_PRESENT | _PAGE_ACCESSED | \ |
234 | _PAGE_CACHABLE | _PAGE_FLAGS_HARD | \ | 240 | _PAGE_CACHABLE | _PAGE_FLAGS_HARD | \ |
235 | _PAGE_EXT(_PAGE_EXT_USER_WRITE | \ | 241 | _PAGE_EXT(_PAGE_EXT_KERN_WRITE | \ |
242 | _PAGE_EXT_KERN_READ | \ | ||
243 | _PAGE_EXT_KERN_EXEC | \ | ||
244 | _PAGE_EXT_USER_WRITE | \ | ||
236 | _PAGE_EXT_USER_READ | \ | 245 | _PAGE_EXT_USER_READ | \ |
237 | _PAGE_EXT_USER_EXEC)) | 246 | _PAGE_EXT_USER_EXEC)) |
238 | 247 | ||
@@ -373,11 +382,15 @@ static inline void set_pte(pte_t *ptep, pte_t pte) | |||
373 | #define set_pmd(pmdptr, pmdval) (*(pmdptr) = pmdval) | 382 | #define set_pmd(pmdptr, pmdval) (*(pmdptr) = pmdval) |
374 | 383 | ||
375 | #define pte_pfn(x) ((unsigned long)(((x).pte_low >> PAGE_SHIFT))) | 384 | #define pte_pfn(x) ((unsigned long)(((x).pte_low >> PAGE_SHIFT))) |
376 | #define pfn_pte(pfn, prot) __pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot)) | ||
377 | #define pfn_pmd(pfn, prot) __pmd(((pfn) << PAGE_SHIFT) | pgprot_val(prot)) | ||
378 | 385 | ||
379 | #define pte_none(x) (!pte_val(x)) | 386 | #define pfn_pte(pfn, prot) \ |
380 | #define pte_present(x) (pte_val(x) & (_PAGE_PRESENT | _PAGE_PROTNONE)) | 387 | __pte(((unsigned long long)(pfn) << PAGE_SHIFT) | pgprot_val(prot)) |
388 | #define pfn_pmd(pfn, prot) \ | ||
389 | __pmd(((unsigned long long)(pfn) << PAGE_SHIFT) | pgprot_val(prot)) | ||
390 | |||
391 | #define pte_none(x) (!pte_val(x)) | ||
392 | #define pte_present(x) ((x).pte_low & (_PAGE_PRESENT | _PAGE_PROTNONE)) | ||
393 | |||
381 | #define pte_clear(mm,addr,xp) do { set_pte_at(mm, addr, xp, __pte(0)); } while (0) | 394 | #define pte_clear(mm,addr,xp) do { set_pte_at(mm, addr, xp, __pte(0)); } while (0) |
382 | 395 | ||
383 | #define pmd_none(x) (!pmd_val(x)) | 396 | #define pmd_none(x) (!pmd_val(x)) |
@@ -392,15 +405,15 @@ static inline void set_pte(pte_t *ptep, pte_t pte) | |||
392 | * The following only work if pte_present() is true. | 405 | * The following only work if pte_present() is true. |
393 | * Undefined behaviour if not.. | 406 | * Undefined behaviour if not.. |
394 | */ | 407 | */ |
395 | #define pte_not_present(pte) (!(pte_val(pte) & _PAGE_PRESENT)) | 408 | #define pte_not_present(pte) (!((pte).pte_low & _PAGE_PRESENT)) |
396 | #define pte_dirty(pte) (pte_val(pte) & _PAGE_DIRTY) | 409 | #define pte_dirty(pte) ((pte).pte_low & _PAGE_DIRTY) |
397 | #define pte_young(pte) (pte_val(pte) & _PAGE_ACCESSED) | 410 | #define pte_young(pte) ((pte).pte_low & _PAGE_ACCESSED) |
398 | #define pte_file(pte) (pte_val(pte) & _PAGE_FILE) | 411 | #define pte_file(pte) ((pte).pte_low & _PAGE_FILE) |
399 | 412 | ||
400 | #ifdef CONFIG_X2TLB | 413 | #ifdef CONFIG_X2TLB |
401 | #define pte_write(pte) ((pte).pte_high & _PAGE_EXT_USER_WRITE) | 414 | #define pte_write(pte) ((pte).pte_high & _PAGE_EXT_USER_WRITE) |
402 | #else | 415 | #else |
403 | #define pte_write(pte) (pte_val(pte) & _PAGE_RW) | 416 | #define pte_write(pte) ((pte).pte_low & _PAGE_RW) |
404 | #endif | 417 | #endif |
405 | 418 | ||
406 | #define PTE_BIT_FUNC(h,fn,op) \ | 419 | #define PTE_BIT_FUNC(h,fn,op) \ |
@@ -429,17 +442,10 @@ PTE_BIT_FUNC(low, mkyoung, |= _PAGE_ACCESSED); | |||
429 | /* | 442 | /* |
430 | * Macro and implementation to make a page protection as uncachable. | 443 | * Macro and implementation to make a page protection as uncachable. |
431 | */ | 444 | */ |
432 | #define pgprot_noncached pgprot_noncached | 445 | #define pgprot_writecombine(prot) \ |
446 | __pgprot(pgprot_val(prot) & ~_PAGE_CACHABLE) | ||
433 | 447 | ||
434 | static inline pgprot_t pgprot_noncached(pgprot_t _prot) | 448 | #define pgprot_noncached pgprot_writecombine |
435 | { | ||
436 | unsigned long prot = pgprot_val(_prot); | ||
437 | |||
438 | prot &= ~_PAGE_CACHABLE; | ||
439 | return __pgprot(prot); | ||
440 | } | ||
441 | |||
442 | #define pgprot_writecombine(prot) __pgprot(pgprot_val(prot) & ~_PAGE_CACHABLE) | ||
443 | 449 | ||
444 | /* | 450 | /* |
445 | * Conversion functions: convert a page and protection to a page entry, | 451 | * Conversion functions: convert a page and protection to a page entry, |
@@ -451,28 +457,33 @@ static inline pgprot_t pgprot_noncached(pgprot_t _prot) | |||
451 | 457 | ||
452 | static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) | 458 | static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) |
453 | { | 459 | { |
454 | set_pte(&pte, __pte((pte_val(pte) & _PAGE_CHG_MASK) | | 460 | pte.pte_low &= _PAGE_CHG_MASK; |
455 | pgprot_val(newprot))); | 461 | pte.pte_low |= pgprot_val(newprot); |
462 | |||
463 | #ifdef CONFIG_X2TLB | ||
464 | pte.pte_high |= pgprot_val(newprot) >> 32; | ||
465 | #endif | ||
466 | |||
456 | return pte; | 467 | return pte; |
457 | } | 468 | } |
458 | 469 | ||
459 | #define pmd_page_vaddr(pmd) pmd_val(pmd) | 470 | #define pmd_page_vaddr(pmd) ((unsigned long)pmd_val(pmd)) |
460 | #define pmd_page(pmd) (virt_to_page(pmd_val(pmd))) | 471 | #define pmd_page(pmd) (virt_to_page(pmd_val(pmd))) |
461 | 472 | ||
462 | /* to find an entry in a page-table-directory. */ | 473 | /* to find an entry in a page-table-directory. */ |
463 | #define pgd_index(address) (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD-1)) | 474 | #define pgd_index(address) (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD-1)) |
464 | #define pgd_offset(mm, address) ((mm)->pgd+pgd_index(address)) | 475 | #define pgd_offset(mm, address) ((mm)->pgd+pgd_index(address)) |
465 | 476 | ||
466 | /* to find an entry in a kernel page-table-directory */ | 477 | /* to find an entry in a kernel page-table-directory */ |
467 | #define pgd_offset_k(address) pgd_offset(&init_mm, address) | 478 | #define pgd_offset_k(address) pgd_offset(&init_mm, address) |
468 | 479 | ||
469 | /* Find an entry in the third-level page table.. */ | 480 | /* Find an entry in the third-level page table.. */ |
470 | #define pte_index(address) \ | 481 | #define pte_index(address) ((address >> PAGE_SHIFT) & (PTRS_PER_PTE - 1)) |
471 | ((address >> PAGE_SHIFT) & (PTRS_PER_PTE - 1)) | ||
472 | #define pte_offset_kernel(dir, address) \ | 482 | #define pte_offset_kernel(dir, address) \ |
473 | ((pte_t *) pmd_page_vaddr(*(dir)) + pte_index(address)) | 483 | ((pte_t *) pmd_page_vaddr(*(dir)) + pte_index(address)) |
474 | #define pte_offset_map(dir, address) pte_offset_kernel(dir, address) | 484 | #define pte_offset_map(dir, address) pte_offset_kernel(dir, address) |
475 | #define pte_offset_map_nested(dir, address) pte_offset_kernel(dir, address) | 485 | #define pte_offset_map_nested(dir, address) pte_offset_kernel(dir, address) |
486 | |||
476 | #define pte_unmap(pte) do { } while (0) | 487 | #define pte_unmap(pte) do { } while (0) |
477 | #define pte_unmap_nested(pte) do { } while (0) | 488 | #define pte_unmap_nested(pte) do { } while (0) |
478 | 489 | ||
@@ -480,13 +491,14 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) | |||
480 | #define pte_ERROR(e) \ | 491 | #define pte_ERROR(e) \ |
481 | printk("%s:%d: bad pte %p(%08lx%08lx).\n", __FILE__, __LINE__, \ | 492 | printk("%s:%d: bad pte %p(%08lx%08lx).\n", __FILE__, __LINE__, \ |
482 | &(e), (e).pte_high, (e).pte_low) | 493 | &(e), (e).pte_high, (e).pte_low) |
494 | #define pgd_ERROR(e) \ | ||
495 | printk("%s:%d: bad pgd %016llx.\n", __FILE__, __LINE__, pgd_val(e)) | ||
483 | #else | 496 | #else |
484 | #define pte_ERROR(e) \ | 497 | #define pte_ERROR(e) \ |
485 | printk("%s:%d: bad pte %08lx.\n", __FILE__, __LINE__, pte_val(e)) | 498 | printk("%s:%d: bad pte %08lx.\n", __FILE__, __LINE__, pte_val(e)) |
486 | #endif | ||
487 | |||
488 | #define pgd_ERROR(e) \ | 499 | #define pgd_ERROR(e) \ |
489 | printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, pgd_val(e)) | 500 | printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, pgd_val(e)) |
501 | #endif | ||
490 | 502 | ||
491 | struct vm_area_struct; | 503 | struct vm_area_struct; |
492 | extern void update_mmu_cache(struct vm_area_struct * vma, | 504 | extern void update_mmu_cache(struct vm_area_struct * vma, |
@@ -563,7 +575,8 @@ struct mm_struct; | |||
563 | extern unsigned int kobjsize(const void *objp); | 575 | extern unsigned int kobjsize(const void *objp); |
564 | #endif /* !CONFIG_MMU */ | 576 | #endif /* !CONFIG_MMU */ |
565 | 577 | ||
566 | #if defined(CONFIG_CPU_SH4) || defined(CONFIG_SH7705_CACHE_32KB) | 578 | #if !defined(CONFIG_CACHE_OFF) && (defined(CONFIG_CPU_SH4) || \ |
579 | defined(CONFIG_SH7705_CACHE_32KB)) | ||
567 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR | 580 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR |
568 | extern pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep); | 581 | extern pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep); |
569 | #endif | 582 | #endif |
diff --git a/include/asm-sh/processor.h b/include/asm-sh/processor.h index 26d52174f4b4..4f2922a1979c 100644 --- a/include/asm-sh/processor.h +++ b/include/asm-sh/processor.h | |||
@@ -45,7 +45,7 @@ enum cpu_type { | |||
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, CPU_SH7712, | 47 | CPU_SH7709, CPU_SH7709A, CPU_SH7710, CPU_SH7712, |
48 | CPU_SH7729, | 48 | CPU_SH7720, CPU_SH7729, |
49 | 49 | ||
50 | /* SH-4 types */ | 50 | /* SH-4 types */ |
51 | CPU_SH7750, CPU_SH7750S, CPU_SH7750R, CPU_SH7751, CPU_SH7751R, | 51 | CPU_SH7750, CPU_SH7750S, CPU_SH7750R, CPU_SH7751, CPU_SH7751R, |
@@ -73,15 +73,10 @@ struct sh_cpuinfo { | |||
73 | unsigned long flags; | 73 | unsigned long flags; |
74 | } __attribute__ ((aligned(SMP_CACHE_BYTES))); | 74 | } __attribute__ ((aligned(SMP_CACHE_BYTES))); |
75 | 75 | ||
76 | extern struct sh_cpuinfo boot_cpu_data; | ||
77 | |||
78 | #ifdef CONFIG_SMP | ||
79 | extern struct sh_cpuinfo cpu_data[]; | 76 | extern struct sh_cpuinfo cpu_data[]; |
77 | #define boot_cpu_data cpu_data[0] | ||
80 | #define current_cpu_data cpu_data[smp_processor_id()] | 78 | #define current_cpu_data cpu_data[smp_processor_id()] |
81 | #else | 79 | #define raw_current_cpu_data cpu_data[raw_smp_processor_id()] |
82 | #define cpu_data (&boot_cpu_data) | ||
83 | #define current_cpu_data boot_cpu_data | ||
84 | #endif | ||
85 | 80 | ||
86 | /* | 81 | /* |
87 | * User space process size: 2GB. | 82 | * User space process size: 2GB. |
diff --git a/include/asm-sh/r7780rp.h b/include/asm-sh/r7780rp.h index 4083b5949928..de37f933aa42 100644 --- a/include/asm-sh/r7780rp.h +++ b/include/asm-sh/r7780rp.h | |||
@@ -65,24 +65,6 @@ | |||
65 | #define PA_PMR (PA_BCR+0x0900) /* */ | 65 | #define PA_PMR (PA_BCR+0x0900) /* */ |
66 | 66 | ||
67 | #define IRLCNTR1 (PA_BCR + 0) /* Interrupt Control Register1 */ | 67 | #define IRLCNTR1 (PA_BCR + 0) /* Interrupt Control Register1 */ |
68 | |||
69 | #define IRQ_PCISLOT1 65 /* PCI Slot #1 IRQ */ | ||
70 | #define IRQ_PCISLOT2 66 /* PCI Slot #2 IRQ */ | ||
71 | #define IRQ_PCISLOT3 67 /* PCI Slot #3 IRQ */ | ||
72 | #define IRQ_PCISLOT4 68 /* PCI Slot #4 IRQ */ | ||
73 | #define IRQ_TP 2 /* Touch Panel IRQ */ | ||
74 | #define IRQ_SCI1 3 /* SCI1 IRQ */ | ||
75 | #define IRQ_SCI0 4 /* SCI0 IRQ */ | ||
76 | #define IRQ_2SERIAL 5 /* Serial IRQ */ | ||
77 | #define IRQ_RTC 6 /* RTC A / B IRQ */ | ||
78 | #define IRQ_EXTENTION6 7 /* EXT6n IRQ */ | ||
79 | #define IRQ_EXTENTION5 8 /* EXT5n IRQ */ | ||
80 | #define IRQ_EXTENTION4 9 /* EXT4n IRQ */ | ||
81 | #define IRQ_EXTENTION2 10 /* EXT2n IRQ */ | ||
82 | #define IRQ_EXTENTION1 11 /* EXT1n IRQ */ | ||
83 | #define IRQ_ONETH 13 /* On board Ethernet IRQ */ | ||
84 | #define IRQ_PSW 14 /* Push Switch IRQ */ | ||
85 | |||
86 | #define IVDR_CK_ON 8 /* iVDR Clock ON */ | 68 | #define IVDR_CK_ON 8 /* iVDR Clock ON */ |
87 | 69 | ||
88 | #elif defined(CONFIG_SH_R7780RP) | 70 | #elif defined(CONFIG_SH_R7780RP) |
@@ -203,11 +185,24 @@ | |||
203 | #define PA_MMSR (PA_BCR+0x0400) | 185 | #define PA_MMSR (PA_BCR+0x0400) |
204 | 186 | ||
205 | #define IVDR_CK_ON 4 /* iVDR Clock ON */ | 187 | #define IVDR_CK_ON 4 /* iVDR Clock ON */ |
188 | #endif | ||
206 | 189 | ||
190 | #define HL_FPGA_IRQ_BASE 200 | ||
191 | #define HL_NR_IRL 15 | ||
192 | |||
193 | #define IRQ_AX88796 (HL_FPGA_IRQ_BASE + 0) | ||
194 | #define IRQ_CF (HL_FPGA_IRQ_BASE + 1) | ||
195 | #ifndef IRQ_PSW | ||
196 | #define IRQ_PSW (HL_FPGA_IRQ_BASE + 2) | ||
207 | #endif | 197 | #endif |
198 | #define IRQ_EXT1 (HL_FPGA_IRQ_BASE + 3) | ||
199 | #define IRQ_EXT4 (HL_FPGA_IRQ_BASE + 4) | ||
208 | 200 | ||
209 | void make_r7780rp_irq(unsigned int irq); | 201 | void make_r7780rp_irq(unsigned int irq); |
210 | void highlander_init_irq(void); | 202 | |
203 | unsigned char *highlander_init_irq_r7780mp(void); | ||
204 | unsigned char *highlander_init_irq_r7780rp(void); | ||
205 | unsigned char *highlander_init_irq_r7785rp(void); | ||
211 | 206 | ||
212 | #define __IO_PREFIX r7780rp | 207 | #define __IO_PREFIX r7780rp |
213 | #include <asm/io_generic.h> | 208 | #include <asm/io_generic.h> |
diff --git a/include/asm-sh/rtc.h b/include/asm-sh/rtc.h index 91aacc96151b..858da99d37e0 100644 --- a/include/asm-sh/rtc.h +++ b/include/asm-sh/rtc.h | |||
@@ -5,4 +5,10 @@ extern void (*board_time_init)(void); | |||
5 | extern void (*rtc_sh_get_time)(struct timespec *); | 5 | extern void (*rtc_sh_get_time)(struct timespec *); |
6 | extern int (*rtc_sh_set_time)(const time_t); | 6 | extern int (*rtc_sh_set_time)(const time_t); |
7 | 7 | ||
8 | #define RTC_CAP_4_DIGIT_YEAR (1 << 0) | ||
9 | |||
10 | struct sh_rtc_platform_info { | ||
11 | unsigned long capabilities; | ||
12 | }; | ||
13 | |||
8 | #endif /* _ASM_RTC_H */ | 14 | #endif /* _ASM_RTC_H */ |
diff --git a/include/asm-sh/rts7751r2d.h b/include/asm-sh/rts7751r2d.h index 5d7800aa31b5..83b9c111f171 100644 --- a/include/asm-sh/rts7751r2d.h +++ b/include/asm-sh/rts7751r2d.h | |||
@@ -9,7 +9,7 @@ | |||
9 | * Renesas Technology Sales RTS7751R2D support | 9 | * Renesas Technology Sales RTS7751R2D support |
10 | */ | 10 | */ |
11 | 11 | ||
12 | /* Box specific addresses. */ | 12 | /* Board specific addresses. */ |
13 | 13 | ||
14 | #define PA_BCR 0xa4000000 /* FPGA */ | 14 | #define PA_BCR 0xa4000000 /* FPGA */ |
15 | #define PA_IRLMON 0xa4000002 /* Interrupt Status control */ | 15 | #define PA_IRLMON 0xa4000002 /* Interrupt Status control */ |
@@ -20,19 +20,19 @@ | |||
20 | #define PA_RTCCE 0xa400000c /* RTC(9701) Enable control */ | 20 | #define PA_RTCCE 0xa400000c /* RTC(9701) Enable control */ |
21 | #define PA_PCICD 0xa400000e /* PCI Extention detect control */ | 21 | #define PA_PCICD 0xa400000e /* PCI Extention detect control */ |
22 | #define PA_VOYAGERRTS 0xa4000020 /* VOYAGER Reset control */ | 22 | #define PA_VOYAGERRTS 0xa4000020 /* VOYAGER Reset control */ |
23 | #if defined(CONFIG_RTS7751R2D_REV11) | 23 | |
24 | #define PA_AXRST 0xa4000022 /* AX_LAN Reset control */ | 24 | #define PA_R2D1_AXRST 0xa4000022 /* AX_LAN Reset control */ |
25 | #define PA_CFRST 0xa4000024 /* CF Reset control */ | 25 | #define PA_R2D1_CFRST 0xa4000024 /* CF Reset control */ |
26 | #define PA_ADMRTS 0xa4000026 /* SD Reset control */ | 26 | #define PA_R2D1_ADMRTS 0xa4000026 /* SD Reset control */ |
27 | #define PA_EXTRST 0xa4000028 /* Extention Reset control */ | 27 | #define PA_R2D1_EXTRST 0xa4000028 /* Extention Reset control */ |
28 | #define PA_CFCDINTCLR 0xa400002a /* CF Insert Interrupt clear */ | 28 | #define PA_R2D1_CFCDINTCLR 0xa400002a /* CF Insert Interrupt clear */ |
29 | #else | 29 | |
30 | #define PA_CFRST 0xa4000022 /* CF Reset control */ | 30 | #define PA_R2DPLUS_CFRST 0xa4000022 /* CF Reset control */ |
31 | #define PA_ADMRTS 0xa4000024 /* SD Reset control */ | 31 | #define PA_R2DPLUS_ADMRTS 0xa4000024 /* SD Reset control */ |
32 | #define PA_EXTRST 0xa4000026 /* Extention Reset control */ | 32 | #define PA_R2DPLUS_EXTRST 0xa4000026 /* Extention Reset control */ |
33 | #define PA_CFCDINTCLR 0xa4000028 /* CF Insert Interrupt clear */ | 33 | #define PA_R2DPLUS_CFCDINTCLR 0xa4000028 /* CF Insert Interrupt clear */ |
34 | #define PA_KEYCTLCLR 0xa400002a /* Key Interrupt clear */ | 34 | #define PA_R2DPLUS_KEYCTLCLR 0xa400002a /* Key Interrupt clear */ |
35 | #endif | 35 | |
36 | #define PA_POWOFF 0xa4000030 /* Board Power OFF control */ | 36 | #define PA_POWOFF 0xa4000030 /* Board Power OFF control */ |
37 | #define PA_VERREG 0xa4000032 /* FPGA Version Register */ | 37 | #define PA_VERREG 0xa4000032 /* FPGA Version Register */ |
38 | #define PA_INPORT 0xa4000034 /* KEY Input Port control */ | 38 | #define PA_INPORT 0xa4000034 /* KEY Input Port control */ |
@@ -46,27 +46,22 @@ | |||
46 | 46 | ||
47 | #define IRLCNTR1 (PA_BCR + 0) /* Interrupt Control Register1 */ | 47 | #define IRLCNTR1 (PA_BCR + 0) /* Interrupt Control Register1 */ |
48 | 48 | ||
49 | #if defined(CONFIG_RTS7751R2D_REV11) | 49 | #define R2D_FPGA_IRQ_BASE 100 |
50 | #define IRQ_PCIETH 0 /* PCI Ethernet IRQ */ | 50 | |
51 | #define IRQ_CFCARD 1 /* CF Card IRQ */ | 51 | #define IRQ_VOYAGER (R2D_FPGA_IRQ_BASE + 0) |
52 | #define IRQ_CFINST 2 /* CF Card Insert IRQ */ | 52 | #define IRQ_EXT (R2D_FPGA_IRQ_BASE + 1) |
53 | #define IRQ_PCMCIA 3 /* PCMCIA IRQ */ | 53 | #define IRQ_TP (R2D_FPGA_IRQ_BASE + 2) |
54 | #define IRQ_VOYAGER 4 /* VOYAGER IRQ */ | 54 | #define IRQ_RTC_T (R2D_FPGA_IRQ_BASE + 3) |
55 | #define IRQ_ONETH 5 /* On board Ethernet IRQ */ | 55 | #define IRQ_RTC_A (R2D_FPGA_IRQ_BASE + 4) |
56 | #else | 56 | #define IRQ_SDCARD (R2D_FPGA_IRQ_BASE + 5) |
57 | #define IRQ_KEYIN 0 /* Key Input IRQ */ | 57 | #define IRQ_CF_CD (R2D_FPGA_IRQ_BASE + 6) |
58 | #define IRQ_PCIETH 1 /* PCI Ethernet IRQ */ | 58 | #define IRQ_CF_IDE (R2D_FPGA_IRQ_BASE + 7) |
59 | #define IRQ_CFCARD 2 /* CF Card IRQ */ | 59 | #define IRQ_AX88796 (R2D_FPGA_IRQ_BASE + 8) |
60 | #define IRQ_CFINST 3 /* CF Card Insert IRQ */ | 60 | #define IRQ_KEY (R2D_FPGA_IRQ_BASE + 9) |
61 | #define IRQ_PCMCIA 4 /* PCMCIA IRQ */ | 61 | #define IRQ_PCI_INTA (R2D_FPGA_IRQ_BASE + 10) |
62 | #define IRQ_VOYAGER 5 /* VOYAGER IRQ */ | 62 | #define IRQ_PCI_INTB (R2D_FPGA_IRQ_BASE + 11) |
63 | #endif | 63 | #define IRQ_PCI_INTC (R2D_FPGA_IRQ_BASE + 12) |
64 | #define IRQ_RTCALM 6 /* RTC Alarm IRQ */ | 64 | #define IRQ_PCI_INTD (R2D_FPGA_IRQ_BASE + 13) |
65 | #define IRQ_RTCTIME 7 /* RTC Timer IRQ */ | ||
66 | #define IRQ_SDCARD 8 /* SD Card IRQ */ | ||
67 | #define IRQ_PCISLOT1 9 /* PCI Slot #1 IRQ */ | ||
68 | #define IRQ_PCISLOT2 10 /* PCI Slot #2 IRQ */ | ||
69 | #define IRQ_EXTENTION 11 /* EXTn IRQ */ | ||
70 | 65 | ||
71 | /* arch/sh/boards/renesas/rts7751r2d/irq.c */ | 66 | /* arch/sh/boards/renesas/rts7751r2d/irq.c */ |
72 | void init_rts7751r2d_IRQ(void); | 67 | void init_rts7751r2d_IRQ(void); |
diff --git a/include/asm-sh/sections.h b/include/asm-sh/sections.h index 2a696b8ee4f5..bd9cbc967c2a 100644 --- a/include/asm-sh/sections.h +++ b/include/asm-sh/sections.h | |||
@@ -4,6 +4,7 @@ | |||
4 | #include <asm-generic/sections.h> | 4 | #include <asm-generic/sections.h> |
5 | 5 | ||
6 | extern long __machvec_start, __machvec_end; | 6 | extern long __machvec_start, __machvec_end; |
7 | extern char _ebss[]; | ||
7 | 8 | ||
8 | #endif /* __ASM_SH_SECTIONS_H */ | 9 | #endif /* __ASM_SH_SECTIONS_H */ |
9 | 10 | ||
diff --git a/include/asm-sh/sh03/io.h b/include/asm-sh/sh03/io.h index 4ff1eb900301..c39c785bba94 100644 --- a/include/asm-sh/sh03/io.h +++ b/include/asm-sh/sh03/io.h | |||
@@ -11,22 +11,13 @@ | |||
11 | 11 | ||
12 | #include <linux/time.h> | 12 | #include <linux/time.h> |
13 | 13 | ||
14 | #define INTC_IPRD 0xffd00010UL | ||
15 | |||
16 | #define IRL0_IRQ 2 | 14 | #define IRL0_IRQ 2 |
17 | #define IRL0_IPR_POS 3 | ||
18 | #define IRL0_PRIORITY 13 | 15 | #define IRL0_PRIORITY 13 |
19 | |||
20 | #define IRL1_IRQ 5 | 16 | #define IRL1_IRQ 5 |
21 | #define IRL1_IPR_POS 2 | ||
22 | #define IRL1_PRIORITY 10 | 17 | #define IRL1_PRIORITY 10 |
23 | |||
24 | #define IRL2_IRQ 8 | 18 | #define IRL2_IRQ 8 |
25 | #define IRL2_IPR_POS 1 | ||
26 | #define IRL2_PRIORITY 7 | 19 | #define IRL2_PRIORITY 7 |
27 | |||
28 | #define IRL3_IRQ 11 | 20 | #define IRL3_IRQ 11 |
29 | #define IRL3_IPR_POS 0 | ||
30 | #define IRL3_PRIORITY 4 | 21 | #define IRL3_PRIORITY 4 |
31 | 22 | ||
32 | void heartbeat_sh03(void); | 23 | void heartbeat_sh03(void); |
diff --git a/include/asm-sh/smp.h b/include/asm-sh/smp.h index b99ca786c0c1..9c8d34b07ebf 100644 --- a/include/asm-sh/smp.h +++ b/include/asm-sh/smp.h | |||
@@ -1,12 +1,3 @@ | |||
1 | /* | ||
2 | * include/asm-sh/smp.h | ||
3 | * | ||
4 | * Copyright (C) 2002, 2003 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 for | ||
8 | * more details. | ||
9 | */ | ||
10 | #ifndef __ASM_SH_SMP_H | 1 | #ifndef __ASM_SH_SMP_H |
11 | #define __ASM_SH_SMP_H | 2 | #define __ASM_SH_SMP_H |
12 | 3 | ||
@@ -20,6 +11,15 @@ | |||
20 | #include <asm/current.h> | 11 | #include <asm/current.h> |
21 | 12 | ||
22 | #define raw_smp_processor_id() (current_thread_info()->cpu) | 13 | #define raw_smp_processor_id() (current_thread_info()->cpu) |
14 | #define hard_smp_processor_id() plat_smp_processor_id() | ||
15 | |||
16 | /* Map from cpu id to sequential logical cpu number. */ | ||
17 | extern int __cpu_number_map[NR_CPUS]; | ||
18 | #define cpu_number_map(cpu) __cpu_number_map[cpu] | ||
19 | |||
20 | /* The reverse map from sequential logical cpu number to cpu id. */ | ||
21 | extern int __cpu_logical_map[NR_CPUS]; | ||
22 | #define cpu_logical_map(cpu) __cpu_logical_map[cpu] | ||
23 | 23 | ||
24 | /* I've no idea what the real meaning of this is */ | 24 | /* I've no idea what the real meaning of this is */ |
25 | #define PROC_CHANGE_PENALTY 20 | 25 | #define PROC_CHANGE_PENALTY 20 |
@@ -35,10 +35,22 @@ struct smp_fn_call_struct { | |||
35 | 35 | ||
36 | extern struct smp_fn_call_struct smp_fn_call; | 36 | extern struct smp_fn_call_struct smp_fn_call; |
37 | 37 | ||
38 | #define SMP_MSG_RESCHEDULE 0x0001 | 38 | #define SMP_MSG_FUNCTION 0 |
39 | #define SMP_MSG_RESCHEDULE 1 | ||
40 | #define SMP_MSG_NR 2 | ||
39 | 41 | ||
40 | #endif /* CONFIG_SMP */ | 42 | void plat_smp_setup(void); |
43 | void plat_prepare_cpus(unsigned int max_cpus); | ||
44 | int plat_smp_processor_id(void); | ||
45 | void plat_start_cpu(unsigned int cpu, unsigned long entry_point); | ||
46 | void plat_send_ipi(unsigned int cpu, unsigned int message); | ||
47 | int plat_register_ipi_handler(unsigned int message, | ||
48 | void (*handler)(void *), void *arg); | ||
49 | |||
50 | #else | ||
41 | 51 | ||
42 | #define hard_smp_processor_id() (0) | 52 | #define hard_smp_processor_id() (0) |
43 | 53 | ||
54 | #endif /* CONFIG_SMP */ | ||
55 | |||
44 | #endif /* __ASM_SH_SMP_H */ | 56 | #endif /* __ASM_SH_SMP_H */ |
diff --git a/include/asm-sh/snapgear.h b/include/asm-sh/snapgear.h index 3554e3a74e99..042d95f51c4d 100644 --- a/include/asm-sh/snapgear.h +++ b/include/asm-sh/snapgear.h | |||
@@ -19,20 +19,16 @@ | |||
19 | * is the interrupt :-) | 19 | * is the interrupt :-) |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #define IRL0_IRQ 2 | 22 | #define IRL0_IRQ 2 |
23 | #define IRL0_IPR_POS 3 | ||
24 | #define IRL0_PRIORITY 13 | 23 | #define IRL0_PRIORITY 13 |
25 | 24 | ||
26 | #define IRL1_IRQ 5 | 25 | #define IRL1_IRQ 5 |
27 | #define IRL1_IPR_POS 2 | ||
28 | #define IRL1_PRIORITY 10 | 26 | #define IRL1_PRIORITY 10 |
29 | 27 | ||
30 | #define IRL2_IRQ 8 | 28 | #define IRL2_IRQ 8 |
31 | #define IRL2_IPR_POS 1 | ||
32 | #define IRL2_PRIORITY 7 | 29 | #define IRL2_PRIORITY 7 |
33 | 30 | ||
34 | #define IRL3_IRQ 11 | 31 | #define IRL3_IRQ 11 |
35 | #define IRL3_IPR_POS 0 | ||
36 | #define IRL3_PRIORITY 4 | 32 | #define IRL3_PRIORITY 4 |
37 | #endif | 33 | #endif |
38 | 34 | ||
diff --git a/include/asm-sh/spinlock.h b/include/asm-sh/spinlock.h index 92f6e2008b2e..e793181d64da 100644 --- a/include/asm-sh/spinlock.h +++ b/include/asm-sh/spinlock.h | |||
@@ -2,6 +2,7 @@ | |||
2 | * include/asm-sh/spinlock.h | 2 | * include/asm-sh/spinlock.h |
3 | * | 3 | * |
4 | * Copyright (C) 2002, 2003 Paul Mundt | 4 | * Copyright (C) 2002, 2003 Paul Mundt |
5 | * Copyright (C) 2006, 2007 Akio Idehara | ||
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 |
@@ -10,17 +11,22 @@ | |||
10 | #ifndef __ASM_SH_SPINLOCK_H | 11 | #ifndef __ASM_SH_SPINLOCK_H |
11 | #define __ASM_SH_SPINLOCK_H | 12 | #define __ASM_SH_SPINLOCK_H |
12 | 13 | ||
13 | #include <asm/atomic.h> | 14 | /* |
14 | #include <asm/spinlock_types.h> | 15 | * The only locking implemented here uses SH-4A opcodes. For others, |
16 | * split this out as per atomic-*.h. | ||
17 | */ | ||
18 | #ifndef CONFIG_CPU_SH4A | ||
19 | #error "Need movli.l/movco.l for spinlocks" | ||
20 | #endif | ||
15 | 21 | ||
16 | /* | 22 | /* |
17 | * Your basic SMP spinlocks, allowing only a single CPU anywhere | 23 | * Your basic SMP spinlocks, allowing only a single CPU anywhere |
18 | */ | 24 | */ |
19 | 25 | ||
20 | #define __raw_spin_is_locked(x) ((x)->lock != 0) | 26 | #define __raw_spin_is_locked(x) ((x)->lock <= 0) |
21 | #define __raw_spin_lock_flags(lock, flags) __raw_spin_lock(lock) | 27 | #define __raw_spin_lock_flags(lock, flags) __raw_spin_lock(lock) |
22 | #define __raw_spin_unlock_wait(x) \ | 28 | #define __raw_spin_unlock_wait(x) \ |
23 | do { cpu_relax(); } while (__raw_spin_is_locked(x)) | 29 | do { cpu_relax(); } while ((x)->lock) |
24 | 30 | ||
25 | /* | 31 | /* |
26 | * Simple spin lock operations. There are two variants, one clears IRQ's | 32 | * Simple spin lock operations. There are two variants, one clears IRQ's |
@@ -30,12 +36,19 @@ | |||
30 | */ | 36 | */ |
31 | static inline void __raw_spin_lock(raw_spinlock_t *lock) | 37 | static inline void __raw_spin_lock(raw_spinlock_t *lock) |
32 | { | 38 | { |
39 | unsigned long tmp; | ||
40 | unsigned long oldval; | ||
41 | |||
33 | __asm__ __volatile__ ( | 42 | __asm__ __volatile__ ( |
34 | "1:\n\t" | 43 | "1: \n\t" |
35 | "tas.b @%0\n\t" | 44 | "movli.l @%2, %0 ! __raw_spin_lock \n\t" |
36 | "bf/s 1b\n\t" | 45 | "mov %0, %1 \n\t" |
37 | "nop\n\t" | 46 | "mov #0, %0 \n\t" |
38 | : "=r" (lock->lock) | 47 | "movco.l %0, @%2 \n\t" |
48 | "bf 1b \n\t" | ||
49 | "cmp/pl %1 \n\t" | ||
50 | "bf 1b \n\t" | ||
51 | : "=&z" (tmp), "=&r" (oldval) | ||
39 | : "r" (&lock->lock) | 52 | : "r" (&lock->lock) |
40 | : "t", "memory" | 53 | : "t", "memory" |
41 | ); | 54 | ); |
@@ -43,12 +56,36 @@ static inline void __raw_spin_lock(raw_spinlock_t *lock) | |||
43 | 56 | ||
44 | static inline void __raw_spin_unlock(raw_spinlock_t *lock) | 57 | static inline void __raw_spin_unlock(raw_spinlock_t *lock) |
45 | { | 58 | { |
46 | //assert_spin_locked(lock); | 59 | unsigned long tmp; |
47 | 60 | ||
48 | lock->lock = 0; | 61 | __asm__ __volatile__ ( |
62 | "mov #1, %0 ! __raw_spin_unlock \n\t" | ||
63 | "mov.l %0, @%1 \n\t" | ||
64 | : "=&z" (tmp) | ||
65 | : "r" (&lock->lock) | ||
66 | : "t", "memory" | ||
67 | ); | ||
49 | } | 68 | } |
50 | 69 | ||
51 | #define __raw_spin_trylock(x) (!test_and_set_bit(0, &(x)->lock)) | 70 | static inline int __raw_spin_trylock(raw_spinlock_t *lock) |
71 | { | ||
72 | unsigned long tmp, oldval; | ||
73 | |||
74 | __asm__ __volatile__ ( | ||
75 | "1: \n\t" | ||
76 | "movli.l @%2, %0 ! __raw_spin_trylock \n\t" | ||
77 | "mov %0, %1 \n\t" | ||
78 | "mov #0, %0 \n\t" | ||
79 | "movco.l %0, @%2 \n\t" | ||
80 | "bf 1b \n\t" | ||
81 | "synco \n\t" | ||
82 | : "=&z" (tmp), "=&r" (oldval) | ||
83 | : "r" (&lock->lock) | ||
84 | : "t", "memory" | ||
85 | ); | ||
86 | |||
87 | return oldval; | ||
88 | } | ||
52 | 89 | ||
53 | /* | 90 | /* |
54 | * Read-write spinlocks, allowing multiple readers but only one writer. | 91 | * Read-write spinlocks, allowing multiple readers but only one writer. |
@@ -59,58 +96,124 @@ static inline void __raw_spin_unlock(raw_spinlock_t *lock) | |||
59 | * read-locks. | 96 | * read-locks. |
60 | */ | 97 | */ |
61 | 98 | ||
99 | /** | ||
100 | * read_can_lock - would read_trylock() succeed? | ||
101 | * @lock: the rwlock in question. | ||
102 | */ | ||
103 | #define __raw_read_can_lock(x) ((x)->lock > 0) | ||
104 | |||
105 | /** | ||
106 | * write_can_lock - would write_trylock() succeed? | ||
107 | * @lock: the rwlock in question. | ||
108 | */ | ||
109 | #define __raw_write_can_lock(x) ((x)->lock == RW_LOCK_BIAS) | ||
110 | |||
62 | static inline void __raw_read_lock(raw_rwlock_t *rw) | 111 | static inline void __raw_read_lock(raw_rwlock_t *rw) |
63 | { | 112 | { |
64 | __raw_spin_lock(&rw->lock); | 113 | unsigned long tmp; |
65 | |||
66 | atomic_inc(&rw->counter); | ||
67 | 114 | ||
68 | __raw_spin_unlock(&rw->lock); | 115 | __asm__ __volatile__ ( |
116 | "1: \n\t" | ||
117 | "movli.l @%1, %0 ! __raw_read_lock \n\t" | ||
118 | "cmp/pl %0 \n\t" | ||
119 | "bf 1b \n\t" | ||
120 | "add #-1, %0 \n\t" | ||
121 | "movco.l %0, @%1 \n\t" | ||
122 | "bf 1b \n\t" | ||
123 | : "=&z" (tmp) | ||
124 | : "r" (&rw->lock) | ||
125 | : "t", "memory" | ||
126 | ); | ||
69 | } | 127 | } |
70 | 128 | ||
71 | static inline void __raw_read_unlock(raw_rwlock_t *rw) | 129 | static inline void __raw_read_unlock(raw_rwlock_t *rw) |
72 | { | 130 | { |
73 | __raw_spin_lock(&rw->lock); | 131 | unsigned long tmp; |
74 | |||
75 | atomic_dec(&rw->counter); | ||
76 | 132 | ||
77 | __raw_spin_unlock(&rw->lock); | 133 | __asm__ __volatile__ ( |
134 | "1: \n\t" | ||
135 | "movli.l @%1, %0 ! __raw_read_unlock \n\t" | ||
136 | "add #1, %0 \n\t" | ||
137 | "movco.l %0, @%1 \n\t" | ||
138 | "bf 1b \n\t" | ||
139 | : "=&z" (tmp) | ||
140 | : "r" (&rw->lock) | ||
141 | : "t", "memory" | ||
142 | ); | ||
78 | } | 143 | } |
79 | 144 | ||
80 | static inline void __raw_write_lock(raw_rwlock_t *rw) | 145 | static inline void __raw_write_lock(raw_rwlock_t *rw) |
81 | { | 146 | { |
82 | __raw_spin_lock(&rw->lock); | 147 | unsigned long tmp; |
83 | atomic_set(&rw->counter, -1); | 148 | |
149 | __asm__ __volatile__ ( | ||
150 | "1: \n\t" | ||
151 | "movli.l @%1, %0 ! __raw_write_lock \n\t" | ||
152 | "cmp/hs %2, %0 \n\t" | ||
153 | "bf 1b \n\t" | ||
154 | "sub %2, %0 \n\t" | ||
155 | "movco.l %0, @%1 \n\t" | ||
156 | "bf 1b \n\t" | ||
157 | : "=&z" (tmp) | ||
158 | : "r" (&rw->lock), "r" (RW_LOCK_BIAS) | ||
159 | : "t", "memory" | ||
160 | ); | ||
84 | } | 161 | } |
85 | 162 | ||
86 | static inline void __raw_write_unlock(raw_rwlock_t *rw) | 163 | static inline void __raw_write_unlock(raw_rwlock_t *rw) |
87 | { | 164 | { |
88 | atomic_set(&rw->counter, 0); | 165 | __asm__ __volatile__ ( |
89 | __raw_spin_unlock(&rw->lock); | 166 | "mov.l %1, @%0 ! __raw_write_unlock \n\t" |
167 | : | ||
168 | : "r" (&rw->lock), "r" (RW_LOCK_BIAS) | ||
169 | : "t", "memory" | ||
170 | ); | ||
90 | } | 171 | } |
91 | 172 | ||
92 | static inline int __raw_write_can_lock(raw_rwlock_t *rw) | 173 | static inline int __raw_read_trylock(raw_rwlock_t *rw) |
93 | { | 174 | { |
94 | return (atomic_read(&rw->counter) == RW_LOCK_BIAS); | 175 | unsigned long tmp, oldval; |
95 | } | ||
96 | 176 | ||
97 | static inline int __raw_read_trylock(raw_rwlock_t *lock) | 177 | __asm__ __volatile__ ( |
98 | { | 178 | "1: \n\t" |
99 | atomic_t *count = (atomic_t*)lock; | 179 | "movli.l @%2, %0 ! __raw_read_trylock \n\t" |
100 | if (atomic_dec_return(count) >= 0) | 180 | "mov %0, %1 \n\t" |
101 | return 1; | 181 | "cmp/pl %0 \n\t" |
102 | atomic_inc(count); | 182 | "bf 2f \n\t" |
103 | return 0; | 183 | "add #-1, %0 \n\t" |
184 | "movco.l %0, @%2 \n\t" | ||
185 | "bf 1b \n\t" | ||
186 | "2: \n\t" | ||
187 | "synco \n\t" | ||
188 | : "=&z" (tmp), "=&r" (oldval) | ||
189 | : "r" (&rw->lock) | ||
190 | : "t", "memory" | ||
191 | ); | ||
192 | |||
193 | return (oldval > 0); | ||
104 | } | 194 | } |
105 | 195 | ||
106 | static inline int __raw_write_trylock(raw_rwlock_t *rw) | 196 | static inline int __raw_write_trylock(raw_rwlock_t *rw) |
107 | { | 197 | { |
108 | if (atomic_sub_and_test(RW_LOCK_BIAS, &rw->counter)) | 198 | unsigned long tmp, oldval; |
109 | return 1; | 199 | |
110 | 200 | __asm__ __volatile__ ( | |
111 | atomic_add(RW_LOCK_BIAS, &rw->counter); | 201 | "1: \n\t" |
202 | "movli.l @%2, %0 ! __raw_write_trylock \n\t" | ||
203 | "mov %0, %1 \n\t" | ||
204 | "cmp/hs %3, %0 \n\t" | ||
205 | "bf 2f \n\t" | ||
206 | "sub %3, %0 \n\t" | ||
207 | "2: \n\t" | ||
208 | "movco.l %0, @%2 \n\t" | ||
209 | "bf 1b \n\t" | ||
210 | "synco \n\t" | ||
211 | : "=&z" (tmp), "=&r" (oldval) | ||
212 | : "r" (&rw->lock), "r" (RW_LOCK_BIAS) | ||
213 | : "t", "memory" | ||
214 | ); | ||
112 | 215 | ||
113 | return 0; | 216 | return (oldval > (RW_LOCK_BIAS - 1)); |
114 | } | 217 | } |
115 | 218 | ||
116 | #define _raw_spin_relax(lock) cpu_relax() | 219 | #define _raw_spin_relax(lock) cpu_relax() |
diff --git a/include/asm-sh/spinlock_types.h b/include/asm-sh/spinlock_types.h index 5c58134f2c4e..b4d244e7b60c 100644 --- a/include/asm-sh/spinlock_types.h +++ b/include/asm-sh/spinlock_types.h | |||
@@ -6,19 +6,16 @@ | |||
6 | #endif | 6 | #endif |
7 | 7 | ||
8 | typedef struct { | 8 | typedef struct { |
9 | volatile unsigned long lock; | 9 | volatile unsigned int lock; |
10 | } raw_spinlock_t; | 10 | } raw_spinlock_t; |
11 | 11 | ||
12 | #define __RAW_SPIN_LOCK_UNLOCKED { 1 } | 12 | #define __RAW_SPIN_LOCK_UNLOCKED { 1 } |
13 | |||
14 | #include <asm/atomic.h> | ||
15 | 13 | ||
16 | typedef struct { | 14 | typedef struct { |
17 | raw_spinlock_t lock; | 15 | volatile unsigned int lock; |
18 | atomic_t counter; | ||
19 | } raw_rwlock_t; | 16 | } raw_rwlock_t; |
20 | 17 | ||
21 | #define RW_LOCK_BIAS 0x01000000 | 18 | #define RW_LOCK_BIAS 0x01000000 |
22 | #define __RAW_RW_LOCK_UNLOCKED { { 0 }, { RW_LOCK_BIAS } } | 19 | #define __RAW_RW_LOCK_UNLOCKED { RW_LOCK_BIAS } |
23 | 20 | ||
24 | #endif | 21 | #endif |
diff --git a/include/asm-sh/system.h b/include/asm-sh/system.h index 245042537205..9d849e6df268 100644 --- a/include/asm-sh/system.h +++ b/include/asm-sh/system.h | |||
@@ -266,6 +266,7 @@ void disable_hlt(void); | |||
266 | void enable_hlt(void); | 266 | void enable_hlt(void); |
267 | 267 | ||
268 | void default_idle(void); | 268 | void default_idle(void); |
269 | void per_cpu_trap_init(void); | ||
269 | 270 | ||
270 | asmlinkage void break_point_trap(void); | 271 | asmlinkage void break_point_trap(void); |
271 | asmlinkage void debug_trap_handler(unsigned long r4, unsigned long r5, | 272 | asmlinkage void debug_trap_handler(unsigned long r4, unsigned long r5, |
diff --git a/include/asm-sh/voyagergx.h b/include/asm-sh/voyagergx.h index 64c936b22715..d825596562df 100644 --- a/include/asm-sh/voyagergx.h +++ b/include/asm-sh/voyagergx.h | |||
@@ -27,13 +27,35 @@ | |||
27 | #define VOYAGER_UART_BASE (0x30000 + VOYAGER_BASE) | 27 | #define VOYAGER_UART_BASE (0x30000 + VOYAGER_BASE) |
28 | #define VOYAGER_AC97_BASE (0xa0000 + VOYAGER_BASE) | 28 | #define VOYAGER_AC97_BASE (0xa0000 + VOYAGER_BASE) |
29 | 29 | ||
30 | #define VOYAGER_IRQ_NUM 32 | 30 | #define VOYAGER_IRQ_NUM 26 |
31 | #define VOYAGER_IRQ_BASE 50 | 31 | #define VOYAGER_IRQ_BASE 200 |
32 | #define VOYAGER_USBH_IRQ VOYAGER_IRQ_BASE + 6 | 32 | |
33 | #define VOYAGER_8051_IRQ VOYAGER_IRQ_BASE + 10 | 33 | #define IRQ_SM501_UP (VOYAGER_IRQ_BASE + 0) |
34 | #define VOYAGER_UART0_IRQ VOYAGER_IRQ_BASE + 12 | 34 | #define IRQ_SM501_G54 (VOYAGER_IRQ_BASE + 1) |
35 | #define VOYAGER_UART1_IRQ VOYAGER_IRQ_BASE + 13 | 35 | #define IRQ_SM501_G53 (VOYAGER_IRQ_BASE + 2) |
36 | #define VOYAGER_AC97_IRQ VOYAGER_IRQ_BASE + 17 | 36 | #define IRQ_SM501_G52 (VOYAGER_IRQ_BASE + 3) |
37 | #define IRQ_SM501_G51 (VOYAGER_IRQ_BASE + 4) | ||
38 | #define IRQ_SM501_G50 (VOYAGER_IRQ_BASE + 5) | ||
39 | #define IRQ_SM501_G49 (VOYAGER_IRQ_BASE + 6) | ||
40 | #define IRQ_SM501_G48 (VOYAGER_IRQ_BASE + 7) | ||
41 | #define IRQ_SM501_I2C (VOYAGER_IRQ_BASE + 8) | ||
42 | #define IRQ_SM501_PW (VOYAGER_IRQ_BASE + 9) | ||
43 | #define IRQ_SM501_DMA (VOYAGER_IRQ_BASE + 10) | ||
44 | #define IRQ_SM501_PCI (VOYAGER_IRQ_BASE + 11) | ||
45 | #define IRQ_SM501_I2S (VOYAGER_IRQ_BASE + 12) | ||
46 | #define IRQ_SM501_AC (VOYAGER_IRQ_BASE + 13) | ||
47 | #define IRQ_SM501_US (VOYAGER_IRQ_BASE + 14) | ||
48 | #define IRQ_SM501_U1 (VOYAGER_IRQ_BASE + 15) | ||
49 | #define IRQ_SM501_U0 (VOYAGER_IRQ_BASE + 16) | ||
50 | #define IRQ_SM501_CV (VOYAGER_IRQ_BASE + 17) | ||
51 | #define IRQ_SM501_MC (VOYAGER_IRQ_BASE + 18) | ||
52 | #define IRQ_SM501_S1 (VOYAGER_IRQ_BASE + 19) | ||
53 | #define IRQ_SM501_S0 (VOYAGER_IRQ_BASE + 20) | ||
54 | #define IRQ_SM501_UH (VOYAGER_IRQ_BASE + 21) | ||
55 | #define IRQ_SM501_2D (VOYAGER_IRQ_BASE + 22) | ||
56 | #define IRQ_SM501_ZD (VOYAGER_IRQ_BASE + 23) | ||
57 | #define IRQ_SM501_PV (VOYAGER_IRQ_BASE + 24) | ||
58 | #define IRQ_SM501_CI (VOYAGER_IRQ_BASE + 25) | ||
37 | 59 | ||
38 | /* ----- MISC controle register ------------------------------ */ | 60 | /* ----- MISC controle register ------------------------------ */ |
39 | #define MISC_CTRL (0x000004 + VOYAGER_BASE) | 61 | #define MISC_CTRL (0x000004 + VOYAGER_BASE) |
@@ -313,4 +335,7 @@ | |||
313 | void *voyagergx_consistent_alloc(struct device *, size_t, dma_addr_t *, gfp_t); | 335 | void *voyagergx_consistent_alloc(struct device *, size_t, dma_addr_t *, gfp_t); |
314 | int voyagergx_consistent_free(struct device *, size_t, void *, dma_addr_t); | 336 | int voyagergx_consistent_free(struct device *, size_t, void *, dma_addr_t); |
315 | 337 | ||
338 | /* arch/sh/cchips/voyagergx/irq.c */ | ||
339 | void setup_voyagergx_irq(void); | ||
340 | |||
316 | #endif /* _VOYAGER_GX_REG_H */ | 341 | #endif /* _VOYAGER_GX_REG_H */ |
diff --git a/include/asm-sh64/gpio.h b/include/asm-sh64/gpio.h new file mode 100644 index 000000000000..6bc5a13d8415 --- /dev/null +++ b/include/asm-sh64/gpio.h | |||
@@ -0,0 +1,8 @@ | |||
1 | #ifndef __ASM_SH64_GPIO_H | ||
2 | #define __ASM_SH64_GPIO_H | ||
3 | |||
4 | /* | ||
5 | * This is just a stub, so that every arch using sh-sci has a gpio.h | ||
6 | */ | ||
7 | |||
8 | #endif /* __ASM_SH64_GPIO_H */ | ||
diff --git a/include/linux/maple.h b/include/linux/maple.h new file mode 100644 index 000000000000..bad9a7b319de --- /dev/null +++ b/include/linux/maple.h | |||
@@ -0,0 +1,80 @@ | |||
1 | #ifndef __LINUX_MAPLE_H | ||
2 | #define __LINUX_MAPLE_H | ||
3 | |||
4 | #include <linux/device.h> | ||
5 | |||
6 | extern struct bus_type maple_bus_type; | ||
7 | |||
8 | /* Maple Bus command and response codes */ | ||
9 | enum maple_code { | ||
10 | MAPLE_RESPONSE_FILEERR = -5, | ||
11 | MAPLE_RESPONSE_AGAIN = -4, /* request should be retransmitted */ | ||
12 | MAPLE_RESPONSE_BADCMD = -3, | ||
13 | MAPLE_RESPONSE_BADFUNC = -2, | ||
14 | MAPLE_RESPONSE_NONE = -1, /* unit didn't respond at all */ | ||
15 | MAPLE_COMMAND_DEVINFO = 1, | ||
16 | MAPLE_COMMAND_ALLINFO = 2, | ||
17 | MAPLE_COMMAND_RESET = 3, | ||
18 | MAPLE_COMMAND_KILL = 4, | ||
19 | MAPLE_RESPONSE_DEVINFO = 5, | ||
20 | MAPLE_RESPONSE_ALLINFO = 6, | ||
21 | MAPLE_RESPONSE_OK = 7, | ||
22 | MAPLE_RESPONSE_DATATRF = 8, | ||
23 | MAPLE_COMMAND_GETCOND = 9, | ||
24 | MAPLE_COMMAND_GETMINFO = 10, | ||
25 | MAPLE_COMMAND_BREAD = 11, | ||
26 | MAPLE_COMMAND_BWRITE = 12, | ||
27 | MAPLE_COMMAND_SETCOND = 14 | ||
28 | }; | ||
29 | |||
30 | struct mapleq { | ||
31 | struct list_head list; | ||
32 | struct maple_device *dev; | ||
33 | void *sendbuf, *recvbuf, *recvbufdcsp; | ||
34 | unsigned char length; | ||
35 | enum maple_code command; | ||
36 | }; | ||
37 | |||
38 | struct maple_devinfo { | ||
39 | unsigned long function; | ||
40 | unsigned long function_data[3]; | ||
41 | unsigned char area_code; | ||
42 | unsigned char connector_directon; | ||
43 | char product_name[31]; | ||
44 | char product_licence[61]; | ||
45 | unsigned short standby_power; | ||
46 | unsigned short max_power; | ||
47 | }; | ||
48 | |||
49 | struct maple_device { | ||
50 | struct maple_driver *driver; | ||
51 | struct mapleq *mq; | ||
52 | void *private_data; | ||
53 | void (*callback) (struct mapleq * mq); | ||
54 | unsigned long when, interval, function; | ||
55 | struct maple_devinfo devinfo; | ||
56 | unsigned char port, unit; | ||
57 | char product_name[32]; | ||
58 | char product_licence[64]; | ||
59 | int registered; | ||
60 | struct device dev; | ||
61 | }; | ||
62 | |||
63 | struct maple_driver { | ||
64 | unsigned long function; | ||
65 | int (*connect) (struct maple_device * dev); | ||
66 | void (*disconnect) (struct maple_device * dev); | ||
67 | struct device_driver drv; | ||
68 | }; | ||
69 | |||
70 | void maple_getcond_callback(struct maple_device *dev, | ||
71 | void (*callback) (struct mapleq * mq), | ||
72 | unsigned long interval, | ||
73 | unsigned long function); | ||
74 | int maple_driver_register(struct device_driver *drv); | ||
75 | void maple_add_packet(struct mapleq *mq); | ||
76 | |||
77 | #define to_maple_dev(n) container_of(n, struct maple_device, dev) | ||
78 | #define to_maple_driver(n) container_of(n, struct maple_driver, drv) | ||
79 | |||
80 | #endif /* __LINUX_MAPLE_H */ | ||