diff options
Diffstat (limited to 'arch/m32r/kernel')
| -rw-r--r-- | arch/m32r/kernel/process.c | 6 | ||||
| -rw-r--r-- | arch/m32r/kernel/setup_m32700ut.c | 59 | ||||
| -rw-r--r-- | arch/m32r/kernel/setup_mappi.c | 51 | ||||
| -rw-r--r-- | arch/m32r/kernel/setup_mappi2.c | 4 | ||||
| -rw-r--r-- | arch/m32r/kernel/setup_mappi3.c | 52 | ||||
| -rw-r--r-- | arch/m32r/kernel/setup_oaks32r.c | 5 | ||||
| -rw-r--r-- | arch/m32r/kernel/setup_opsput.c | 57 | ||||
| -rw-r--r-- | arch/m32r/kernel/signal.c | 15 | ||||
| -rw-r--r-- | arch/m32r/kernel/smpboot.c | 1 | ||||
| -rw-r--r-- | arch/m32r/kernel/time.c | 13 |
10 files changed, 221 insertions, 42 deletions
diff --git a/arch/m32r/kernel/process.c b/arch/m32r/kernel/process.c index b556c3cf6495..ea13a8f4d8b0 100644 --- a/arch/m32r/kernel/process.c +++ b/arch/m32r/kernel/process.c | |||
| @@ -115,8 +115,6 @@ void machine_restart(char *__unused) | |||
| 115 | cpu_relax(); | 115 | cpu_relax(); |
| 116 | } | 116 | } |
| 117 | 117 | ||
| 118 | EXPORT_SYMBOL(machine_restart); | ||
| 119 | |||
| 120 | void machine_halt(void) | 118 | void machine_halt(void) |
| 121 | { | 119 | { |
| 122 | printk("Please push reset button!\n"); | 120 | printk("Please push reset button!\n"); |
| @@ -124,15 +122,11 @@ void machine_halt(void) | |||
| 124 | cpu_relax(); | 122 | cpu_relax(); |
| 125 | } | 123 | } |
| 126 | 124 | ||
| 127 | EXPORT_SYMBOL(machine_halt); | ||
| 128 | |||
| 129 | void machine_power_off(void) | 125 | void machine_power_off(void) |
| 130 | { | 126 | { |
| 131 | /* M32R_FIXME */ | 127 | /* M32R_FIXME */ |
| 132 | } | 128 | } |
| 133 | 129 | ||
| 134 | EXPORT_SYMBOL(machine_power_off); | ||
| 135 | |||
| 136 | static int __init idle_setup (char *str) | 130 | static int __init idle_setup (char *str) |
| 137 | { | 131 | { |
| 138 | if (!strncmp(str, "poll", 4)) { | 132 | if (!strncmp(str, "poll", 4)) { |
diff --git a/arch/m32r/kernel/setup_m32700ut.c b/arch/m32r/kernel/setup_m32700ut.c index b014e2c1e524..708634b685e4 100644 --- a/arch/m32r/kernel/setup_m32700ut.c +++ b/arch/m32r/kernel/setup_m32700ut.c | |||
| @@ -3,8 +3,8 @@ | |||
| 3 | * | 3 | * |
| 4 | * Setup routines for Renesas M32700UT Board | 4 | * Setup routines for Renesas M32700UT Board |
| 5 | * | 5 | * |
| 6 | * Copyright (c) 2002 Hiroyuki Kondo, Hirokazu Takata, | 6 | * Copyright (c) 2002-2005 Hiroyuki Kondo, Hirokazu Takata, |
| 7 | * Hitoshi Yamamoto, Takeo Takahashi | 7 | * Hitoshi Yamamoto, Takeo Takahashi |
| 8 | * | 8 | * |
| 9 | * This file is subject to the terms and conditions of the GNU General | 9 | * This file is subject to the terms and conditions of the GNU General |
| 10 | * Public License. See the file "COPYING" in the main directory of this | 10 | * Public License. See the file "COPYING" in the main directory of this |
| @@ -30,9 +30,11 @@ | |||
| 30 | typedef struct { | 30 | typedef struct { |
| 31 | unsigned long icucr; /* ICU Control Register */ | 31 | unsigned long icucr; /* ICU Control Register */ |
| 32 | } icu_data_t; | 32 | } icu_data_t; |
| 33 | static icu_data_t icu_data[M32700UT_NUM_CPU_IRQ]; | ||
| 34 | #else | ||
| 35 | icu_data_t icu_data[M32700UT_NUM_CPU_IRQ]; | ||
| 33 | #endif /* CONFIG_SMP */ | 36 | #endif /* CONFIG_SMP */ |
| 34 | 37 | ||
| 35 | static icu_data_t icu_data[M32700UT_NUM_CPU_IRQ]; | ||
| 36 | 38 | ||
| 37 | static void disable_m32700ut_irq(unsigned int irq) | 39 | static void disable_m32700ut_irq(unsigned int irq) |
| 38 | { | 40 | { |
| @@ -435,7 +437,7 @@ void __init init_IRQ(void) | |||
| 435 | icu_data[M32R_IRQ_INT2].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD01; | 437 | icu_data[M32R_IRQ_INT2].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD01; |
| 436 | enable_m32700ut_irq(M32R_IRQ_INT2); | 438 | enable_m32700ut_irq(M32R_IRQ_INT2); |
| 437 | 439 | ||
| 438 | //#if defined(CONFIG_VIDEO_M32R_AR) | 440 | #if defined(CONFIG_VIDEO_M32R_AR) |
| 439 | /* | 441 | /* |
| 440 | * INT3# is used for AR | 442 | * INT3# is used for AR |
| 441 | */ | 443 | */ |
| @@ -445,9 +447,11 @@ void __init init_IRQ(void) | |||
| 445 | irq_desc[M32R_IRQ_INT3].depth = 1; | 447 | irq_desc[M32R_IRQ_INT3].depth = 1; |
| 446 | icu_data[M32R_IRQ_INT3].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD10; | 448 | icu_data[M32R_IRQ_INT3].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD10; |
| 447 | disable_m32700ut_irq(M32R_IRQ_INT3); | 449 | disable_m32700ut_irq(M32R_IRQ_INT3); |
| 448 | //#endif /* CONFIG_VIDEO_M32R_AR */ | 450 | #endif /* CONFIG_VIDEO_M32R_AR */ |
| 449 | } | 451 | } |
| 450 | 452 | ||
| 453 | #if defined(CONFIG_SMC91X) | ||
| 454 | |||
| 451 | #define LAN_IOSTART 0x300 | 455 | #define LAN_IOSTART 0x300 |
| 452 | #define LAN_IOEND 0x320 | 456 | #define LAN_IOEND 0x320 |
| 453 | static struct resource smc91x_resources[] = { | 457 | static struct resource smc91x_resources[] = { |
| @@ -469,10 +473,55 @@ static struct platform_device smc91x_device = { | |||
| 469 | .num_resources = ARRAY_SIZE(smc91x_resources), | 473 | .num_resources = ARRAY_SIZE(smc91x_resources), |
| 470 | .resource = smc91x_resources, | 474 | .resource = smc91x_resources, |
| 471 | }; | 475 | }; |
| 476 | #endif | ||
| 477 | |||
| 478 | #if defined(CONFIG_FB_S1D13XXX) | ||
| 479 | |||
| 480 | #include <video/s1d13xxxfb.h> | ||
| 481 | #include <asm/s1d13806.h> | ||
| 482 | |||
| 483 | static struct s1d13xxxfb_pdata s1d13xxxfb_data = { | ||
| 484 | .initregs = s1d13xxxfb_initregs, | ||
| 485 | .initregssize = ARRAY_SIZE(s1d13xxxfb_initregs), | ||
| 486 | .platform_init_video = NULL, | ||
| 487 | #ifdef CONFIG_PM | ||
| 488 | .platform_suspend_video = NULL, | ||
| 489 | .platform_resume_video = NULL, | ||
| 490 | #endif | ||
| 491 | }; | ||
| 492 | |||
| 493 | static struct resource s1d13xxxfb_resources[] = { | ||
| 494 | [0] = { | ||
| 495 | .start = 0x10600000UL, | ||
| 496 | .end = 0x1073FFFFUL, | ||
| 497 | .flags = IORESOURCE_MEM, | ||
| 498 | }, | ||
| 499 | [1] = { | ||
| 500 | .start = 0x10400000UL, | ||
| 501 | .end = 0x104001FFUL, | ||
| 502 | .flags = IORESOURCE_MEM, | ||
| 503 | } | ||
| 504 | }; | ||
| 505 | |||
| 506 | static struct platform_device s1d13xxxfb_device = { | ||
| 507 | .name = S1D_DEVICENAME, | ||
| 508 | .id = 0, | ||
| 509 | .dev = { | ||
| 510 | .platform_data = &s1d13xxxfb_data, | ||
| 511 | }, | ||
| 512 | .num_resources = ARRAY_SIZE(s1d13xxxfb_resources), | ||
| 513 | .resource = s1d13xxxfb_resources, | ||
| 514 | }; | ||
| 515 | #endif | ||
| 472 | 516 | ||
| 473 | static int __init platform_init(void) | 517 | static int __init platform_init(void) |
| 474 | { | 518 | { |
| 519 | #if defined(CONFIG_SMC91X) | ||
| 475 | platform_device_register(&smc91x_device); | 520 | platform_device_register(&smc91x_device); |
| 521 | #endif | ||
| 522 | #if defined(CONFIG_FB_S1D13XXX) | ||
| 523 | platform_device_register(&s1d13xxxfb_device); | ||
| 524 | #endif | ||
| 476 | return 0; | 525 | return 0; |
| 477 | } | 526 | } |
| 478 | arch_initcall(platform_init); | 527 | arch_initcall(platform_init); |
diff --git a/arch/m32r/kernel/setup_mappi.c b/arch/m32r/kernel/setup_mappi.c index aaf8e569b930..4e709809efc5 100644 --- a/arch/m32r/kernel/setup_mappi.c +++ b/arch/m32r/kernel/setup_mappi.c | |||
| @@ -3,14 +3,15 @@ | |||
| 3 | * | 3 | * |
| 4 | * Setup routines for Renesas MAPPI Board | 4 | * Setup routines for Renesas MAPPI Board |
| 5 | * | 5 | * |
| 6 | * Copyright (c) 2001, 2002 Hiroyuki Kondo, Hirokazu Takata, | 6 | * Copyright (c) 2001-2005 Hiroyuki Kondo, Hirokazu Takata, |
| 7 | * Hitoshi Yamamoto | 7 | * Hitoshi Yamamoto |
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | #include <linux/config.h> | 10 | #include <linux/config.h> |
| 11 | #include <linux/irq.h> | 11 | #include <linux/irq.h> |
| 12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
| 13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
| 14 | #include <linux/device.h> | ||
| 14 | 15 | ||
| 15 | #include <asm/system.h> | 16 | #include <asm/system.h> |
| 16 | #include <asm/m32r.h> | 17 | #include <asm/m32r.h> |
| @@ -158,3 +159,49 @@ void __init init_IRQ(void) | |||
| 158 | disable_mappi_irq(M32R_IRQ_INT2); | 159 | disable_mappi_irq(M32R_IRQ_INT2); |
| 159 | #endif /* CONFIG_M32RPCC */ | 160 | #endif /* CONFIG_M32RPCC */ |
| 160 | } | 161 | } |
| 162 | |||
| 163 | #if defined(CONFIG_FB_S1D13XXX) | ||
| 164 | |||
| 165 | #include <video/s1d13xxxfb.h> | ||
| 166 | #include <asm/s1d13806.h> | ||
| 167 | |||
| 168 | static struct s1d13xxxfb_pdata s1d13xxxfb_data = { | ||
| 169 | .initregs = s1d13xxxfb_initregs, | ||
| 170 | .initregssize = ARRAY_SIZE(s1d13xxxfb_initregs), | ||
| 171 | .platform_init_video = NULL, | ||
| 172 | #ifdef CONFIG_PM | ||
| 173 | .platform_suspend_video = NULL, | ||
| 174 | .platform_resume_video = NULL, | ||
| 175 | #endif | ||
| 176 | }; | ||
| 177 | |||
| 178 | static struct resource s1d13xxxfb_resources[] = { | ||
| 179 | [0] = { | ||
| 180 | .start = 0x10200000UL, | ||
| 181 | .end = 0x1033FFFFUL, | ||
| 182 | .flags = IORESOURCE_MEM, | ||
| 183 | }, | ||
| 184 | [1] = { | ||
| 185 | .start = 0x10000000UL, | ||
| 186 | .end = 0x100001FFUL, | ||
| 187 | .flags = IORESOURCE_MEM, | ||
| 188 | } | ||
| 189 | }; | ||
| 190 | |||
| 191 | static struct platform_device s1d13xxxfb_device = { | ||
| 192 | .name = S1D_DEVICENAME, | ||
| 193 | .id = 0, | ||
| 194 | .dev = { | ||
| 195 | .platform_data = &s1d13xxxfb_data, | ||
| 196 | }, | ||
| 197 | .num_resources = ARRAY_SIZE(s1d13xxxfb_resources), | ||
| 198 | .resource = s1d13xxxfb_resources, | ||
| 199 | }; | ||
| 200 | |||
| 201 | static int __init platform_init(void) | ||
| 202 | { | ||
| 203 | platform_device_register(&s1d13xxxfb_device); | ||
| 204 | return 0; | ||
| 205 | } | ||
| 206 | arch_initcall(platform_init); | ||
| 207 | #endif | ||
diff --git a/arch/m32r/kernel/setup_mappi2.c b/arch/m32r/kernel/setup_mappi2.c index 38d5e9a41427..a1d801598aa4 100644 --- a/arch/m32r/kernel/setup_mappi2.c +++ b/arch/m32r/kernel/setup_mappi2.c | |||
| @@ -3,8 +3,8 @@ | |||
| 3 | * | 3 | * |
| 4 | * Setup routines for Renesas MAPPI-II(M3A-ZA36) Board | 4 | * Setup routines for Renesas MAPPI-II(M3A-ZA36) Board |
| 5 | * | 5 | * |
| 6 | * Copyright (c) 2001, 2002 Hiroyuki Kondo, Hirokazu Takata, | 6 | * Copyright (c) 2001-2005 Hiroyuki Kondo, Hirokazu Takata, |
| 7 | * Hitoshi Yamamoto, Mamoru Sakugawa | 7 | * Hitoshi Yamamoto, Mamoru Sakugawa |
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | #include <linux/config.h> | 10 | #include <linux/config.h> |
diff --git a/arch/m32r/kernel/setup_mappi3.c b/arch/m32r/kernel/setup_mappi3.c index 3d60a85aaec5..a76412e883e8 100644 --- a/arch/m32r/kernel/setup_mappi3.c +++ b/arch/m32r/kernel/setup_mappi3.c | |||
| @@ -3,8 +3,8 @@ | |||
| 3 | * | 3 | * |
| 4 | * Setup routines for Renesas MAPPI-III(M3A-2170) Board | 4 | * Setup routines for Renesas MAPPI-III(M3A-2170) Board |
| 5 | * | 5 | * |
| 6 | * Copyright (c) 2001-2005 Hiroyuki Kondo, Hirokazu Takata, | 6 | * Copyright (c) 2001-2005 Hiroyuki Kondo, Hirokazu Takata, |
| 7 | * Hitoshi Yamamoto, Mamoru Sakugawa | 7 | * Hitoshi Yamamoto, Mamoru Sakugawa |
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | #include <linux/config.h> | 10 | #include <linux/config.h> |
| @@ -178,6 +178,8 @@ void __init init_IRQ(void) | |||
| 178 | #endif /* CONFIG_M32R_CFC */ | 178 | #endif /* CONFIG_M32R_CFC */ |
| 179 | } | 179 | } |
| 180 | 180 | ||
| 181 | #if defined(CONFIG_SMC91X) | ||
| 182 | |||
| 181 | #define LAN_IOSTART 0x300 | 183 | #define LAN_IOSTART 0x300 |
| 182 | #define LAN_IOEND 0x320 | 184 | #define LAN_IOEND 0x320 |
| 183 | static struct resource smc91x_resources[] = { | 185 | static struct resource smc91x_resources[] = { |
| @@ -200,9 +202,55 @@ static struct platform_device smc91x_device = { | |||
| 200 | .resource = smc91x_resources, | 202 | .resource = smc91x_resources, |
| 201 | }; | 203 | }; |
| 202 | 204 | ||
| 205 | #endif | ||
| 206 | |||
| 207 | #if defined(CONFIG_FB_S1D13XXX) | ||
| 208 | |||
| 209 | #include <video/s1d13xxxfb.h> | ||
| 210 | #include <asm/s1d13806.h> | ||
| 211 | |||
| 212 | static struct s1d13xxxfb_pdata s1d13xxxfb_data = { | ||
| 213 | .initregs = s1d13xxxfb_initregs, | ||
| 214 | .initregssize = ARRAY_SIZE(s1d13xxxfb_initregs), | ||
| 215 | .platform_init_video = NULL, | ||
| 216 | #ifdef CONFIG_PM | ||
| 217 | .platform_suspend_video = NULL, | ||
| 218 | .platform_resume_video = NULL, | ||
| 219 | #endif | ||
| 220 | }; | ||
| 221 | |||
| 222 | static struct resource s1d13xxxfb_resources[] = { | ||
| 223 | [0] = { | ||
| 224 | .start = 0x1d600000UL, | ||
| 225 | .end = 0x1d73FFFFUL, | ||
| 226 | .flags = IORESOURCE_MEM, | ||
| 227 | }, | ||
| 228 | [1] = { | ||
| 229 | .start = 0x1d400000UL, | ||
| 230 | .end = 0x1d4001FFUL, | ||
| 231 | .flags = IORESOURCE_MEM, | ||
| 232 | } | ||
| 233 | }; | ||
| 234 | |||
| 235 | static struct platform_device s1d13xxxfb_device = { | ||
| 236 | .name = S1D_DEVICENAME, | ||
| 237 | .id = 0, | ||
| 238 | .dev = { | ||
| 239 | .platform_data = &s1d13xxxfb_data, | ||
| 240 | }, | ||
| 241 | .num_resources = ARRAY_SIZE(s1d13xxxfb_resources), | ||
| 242 | .resource = s1d13xxxfb_resources, | ||
| 243 | }; | ||
| 244 | #endif | ||
| 245 | |||
| 203 | static int __init platform_init(void) | 246 | static int __init platform_init(void) |
| 204 | { | 247 | { |
| 248 | #if defined(CONFIG_SMC91X) | ||
| 205 | platform_device_register(&smc91x_device); | 249 | platform_device_register(&smc91x_device); |
| 250 | #endif | ||
| 251 | #if defined(CONFIG_FB_S1D13XXX) | ||
| 252 | platform_device_register(&s1d13xxxfb_device); | ||
| 253 | #endif | ||
| 206 | return 0; | 254 | return 0; |
| 207 | } | 255 | } |
| 208 | arch_initcall(platform_init); | 256 | arch_initcall(platform_init); |
diff --git a/arch/m32r/kernel/setup_oaks32r.c b/arch/m32r/kernel/setup_oaks32r.c index d656640badc9..45add5b76f19 100644 --- a/arch/m32r/kernel/setup_oaks32r.c +++ b/arch/m32r/kernel/setup_oaks32r.c | |||
| @@ -3,8 +3,8 @@ | |||
| 3 | * | 3 | * |
| 4 | * Setup routines for OAKS32R Board | 4 | * Setup routines for OAKS32R Board |
| 5 | * | 5 | * |
| 6 | * Copyright (c) 2002-2004 Hiroyuki Kondo, Hirokazu Takata, | 6 | * Copyright (c) 2002-2005 Hiroyuki Kondo, Hirokazu Takata, |
| 7 | * Hitoshi Yamamoto, Mamoru Sakugawa | 7 | * Hitoshi Yamamoto, Mamoru Sakugawa |
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | #include <linux/config.h> | 10 | #include <linux/config.h> |
| @@ -139,5 +139,4 @@ void __init init_IRQ(void) | |||
| 139 | icu_data[M32R_IRQ_SIO1_S].icucr = 0; | 139 | icu_data[M32R_IRQ_SIO1_S].icucr = 0; |
| 140 | disable_oaks32r_irq(M32R_IRQ_SIO1_S); | 140 | disable_oaks32r_irq(M32R_IRQ_SIO1_S); |
| 141 | #endif /* CONFIG_SERIAL_M32R_SIO */ | 141 | #endif /* CONFIG_SERIAL_M32R_SIO */ |
| 142 | |||
| 143 | } | 142 | } |
diff --git a/arch/m32r/kernel/setup_opsput.c b/arch/m32r/kernel/setup_opsput.c index 86f4cf2a86c3..d7b7ec6d30f8 100644 --- a/arch/m32r/kernel/setup_opsput.c +++ b/arch/m32r/kernel/setup_opsput.c | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | * | 3 | * |
| 4 | * Setup routines for Renesas OPSPUT Board | 4 | * Setup routines for Renesas OPSPUT Board |
| 5 | * | 5 | * |
| 6 | * Copyright (c) 2002-2004 | 6 | * Copyright (c) 2002-2005 |
| 7 | * Hiroyuki Kondo, Hirokazu Takata, | 7 | * Hiroyuki Kondo, Hirokazu Takata, |
| 8 | * Hitoshi Yamamoto, Takeo Takahashi, Mamoru Sakugawa | 8 | * Hitoshi Yamamoto, Takeo Takahashi, Mamoru Sakugawa |
| 9 | * | 9 | * |
| @@ -31,9 +31,11 @@ | |||
| 31 | typedef struct { | 31 | typedef struct { |
| 32 | unsigned long icucr; /* ICU Control Register */ | 32 | unsigned long icucr; /* ICU Control Register */ |
| 33 | } icu_data_t; | 33 | } icu_data_t; |
| 34 | static icu_data_t icu_data[OPSPUT_NUM_CPU_IRQ]; | ||
| 35 | #else | ||
| 36 | icu_data_t icu_data[OPSPUT_NUM_CPU_IRQ]; | ||
| 34 | #endif /* CONFIG_SMP */ | 37 | #endif /* CONFIG_SMP */ |
| 35 | 38 | ||
| 36 | static icu_data_t icu_data[OPSPUT_NUM_CPU_IRQ]; | ||
| 37 | 39 | ||
| 38 | static void disable_opsput_irq(unsigned int irq) | 40 | static void disable_opsput_irq(unsigned int irq) |
| 39 | { | 41 | { |
| @@ -439,7 +441,7 @@ void __init init_IRQ(void) | |||
| 439 | icu_data[M32R_IRQ_INT2].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD01; | 441 | icu_data[M32R_IRQ_INT2].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD01; |
| 440 | enable_opsput_irq(M32R_IRQ_INT2); | 442 | enable_opsput_irq(M32R_IRQ_INT2); |
| 441 | 443 | ||
| 442 | //#if defined(CONFIG_VIDEO_M32R_AR) | 444 | #if defined(CONFIG_VIDEO_M32R_AR) |
| 443 | /* | 445 | /* |
| 444 | * INT3# is used for AR | 446 | * INT3# is used for AR |
| 445 | */ | 447 | */ |
| @@ -449,9 +451,11 @@ void __init init_IRQ(void) | |||
| 449 | irq_desc[M32R_IRQ_INT3].depth = 1; | 451 | irq_desc[M32R_IRQ_INT3].depth = 1; |
| 450 | icu_data[M32R_IRQ_INT3].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD10; | 452 | icu_data[M32R_IRQ_INT3].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD10; |
| 451 | disable_opsput_irq(M32R_IRQ_INT3); | 453 | disable_opsput_irq(M32R_IRQ_INT3); |
| 452 | //#endif /* CONFIG_VIDEO_M32R_AR */ | 454 | #endif /* CONFIG_VIDEO_M32R_AR */ |
| 453 | } | 455 | } |
| 454 | 456 | ||
| 457 | #if defined(CONFIG_SMC91X) | ||
| 458 | |||
| 455 | #define LAN_IOSTART 0x300 | 459 | #define LAN_IOSTART 0x300 |
| 456 | #define LAN_IOEND 0x320 | 460 | #define LAN_IOEND 0x320 |
| 457 | static struct resource smc91x_resources[] = { | 461 | static struct resource smc91x_resources[] = { |
| @@ -473,10 +477,55 @@ static struct platform_device smc91x_device = { | |||
| 473 | .num_resources = ARRAY_SIZE(smc91x_resources), | 477 | .num_resources = ARRAY_SIZE(smc91x_resources), |
| 474 | .resource = smc91x_resources, | 478 | .resource = smc91x_resources, |
| 475 | }; | 479 | }; |
| 480 | #endif | ||
| 481 | |||
| 482 | #if defined(CONFIG_FB_S1D13XXX) | ||
| 483 | |||
| 484 | #include <video/s1d13xxxfb.h> | ||
| 485 | #include <asm/s1d13806.h> | ||
| 486 | |||
| 487 | static struct s1d13xxxfb_pdata s1d13xxxfb_data = { | ||
| 488 | .initregs = s1d13xxxfb_initregs, | ||
| 489 | .initregssize = ARRAY_SIZE(s1d13xxxfb_initregs), | ||
| 490 | .platform_init_video = NULL, | ||
| 491 | #ifdef CONFIG_PM | ||
| 492 | .platform_suspend_video = NULL, | ||
| 493 | .platform_resume_video = NULL, | ||
| 494 | #endif | ||
| 495 | }; | ||
| 496 | |||
| 497 | static struct resource s1d13xxxfb_resources[] = { | ||
| 498 | [0] = { | ||
| 499 | .start = 0x10600000UL, | ||
| 500 | .end = 0x1073FFFFUL, | ||
| 501 | .flags = IORESOURCE_MEM, | ||
| 502 | }, | ||
| 503 | [1] = { | ||
| 504 | .start = 0x10400000UL, | ||
| 505 | .end = 0x104001FFUL, | ||
| 506 | .flags = IORESOURCE_MEM, | ||
| 507 | } | ||
| 508 | }; | ||
| 509 | |||
| 510 | static struct platform_device s1d13xxxfb_device = { | ||
| 511 | .name = S1D_DEVICENAME, | ||
| 512 | .id = 0, | ||
| 513 | .dev = { | ||
| 514 | .platform_data = &s1d13xxxfb_data, | ||
| 515 | }, | ||
| 516 | .num_resources = ARRAY_SIZE(s1d13xxxfb_resources), | ||
| 517 | .resource = s1d13xxxfb_resources, | ||
| 518 | }; | ||
| 519 | #endif | ||
| 476 | 520 | ||
| 477 | static int __init platform_init(void) | 521 | static int __init platform_init(void) |
| 478 | { | 522 | { |
| 523 | #if defined(CONFIG_SMC91X) | ||
| 479 | platform_device_register(&smc91x_device); | 524 | platform_device_register(&smc91x_device); |
| 525 | #endif | ||
| 526 | #if defined(CONFIG_FB_S1D13XXX) | ||
| 527 | platform_device_register(&s1d13xxxfb_device); | ||
| 528 | #endif | ||
| 480 | return 0; | 529 | return 0; |
| 481 | } | 530 | } |
| 482 | arch_initcall(platform_init); | 531 | arch_initcall(platform_init); |
diff --git a/arch/m32r/kernel/signal.c b/arch/m32r/kernel/signal.c index 50311eb07a24..71763f7a1d19 100644 --- a/arch/m32r/kernel/signal.c +++ b/arch/m32r/kernel/signal.c | |||
| @@ -341,13 +341,12 @@ handle_signal(unsigned long sig, struct k_sigaction *ka, siginfo_t *info, | |||
| 341 | /* Set up the stack frame */ | 341 | /* Set up the stack frame */ |
| 342 | setup_rt_frame(sig, ka, info, oldset, regs); | 342 | setup_rt_frame(sig, ka, info, oldset, regs); |
| 343 | 343 | ||
| 344 | if (!(ka->sa.sa_flags & SA_NODEFER)) { | 344 | spin_lock_irq(¤t->sighand->siglock); |
| 345 | spin_lock_irq(¤t->sighand->siglock); | 345 | sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask); |
| 346 | sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask); | 346 | if (!(ka->sa.sa_flags & SA_NODEFER)) |
| 347 | sigaddset(¤t->blocked,sig); | 347 | sigaddset(¤t->blocked,sig); |
| 348 | recalc_sigpending(); | 348 | recalc_sigpending(); |
| 349 | spin_unlock_irq(¤t->sighand->siglock); | 349 | spin_unlock_irq(¤t->sighand->siglock); |
| 350 | } | ||
| 351 | } | 350 | } |
| 352 | 351 | ||
| 353 | /* | 352 | /* |
| @@ -371,10 +370,8 @@ int do_signal(struct pt_regs *regs, sigset_t *oldset) | |||
| 371 | if (!user_mode(regs)) | 370 | if (!user_mode(regs)) |
| 372 | return 1; | 371 | return 1; |
| 373 | 372 | ||
| 374 | if (current->flags & PF_FREEZE) { | 373 | if (try_to_freeze()) |
| 375 | refrigerator(0); | ||
| 376 | goto no_signal; | 374 | goto no_signal; |
| 377 | } | ||
| 378 | 375 | ||
| 379 | if (!oldset) | 376 | if (!oldset) |
| 380 | oldset = ¤t->blocked; | 377 | oldset = ¤t->blocked; |
diff --git a/arch/m32r/kernel/smpboot.c b/arch/m32r/kernel/smpboot.c index f9a0e723478d..640d592ea072 100644 --- a/arch/m32r/kernel/smpboot.c +++ b/arch/m32r/kernel/smpboot.c | |||
| @@ -91,6 +91,7 @@ extern struct { | |||
| 91 | 91 | ||
| 92 | /* which physical physical ID maps to which logical CPU number */ | 92 | /* which physical physical ID maps to which logical CPU number */ |
| 93 | static volatile int physid_2_cpu[NR_CPUS]; | 93 | static volatile int physid_2_cpu[NR_CPUS]; |
| 94 | #define physid_to_cpu(physid) physid_2_cpu[physid] | ||
| 94 | 95 | ||
| 95 | /* which logical CPU number maps to which physical ID */ | 96 | /* which logical CPU number maps to which physical ID */ |
| 96 | volatile int cpu_2_physid[NR_CPUS]; | 97 | volatile int cpu_2_physid[NR_CPUS]; |
diff --git a/arch/m32r/kernel/time.c b/arch/m32r/kernel/time.c index 3c4707280a52..8a2b77bc5749 100644 --- a/arch/m32r/kernel/time.c +++ b/arch/m32r/kernel/time.c | |||
| @@ -205,8 +205,7 @@ static long last_rtc_update = 0; | |||
| 205 | * timer_interrupt() needs to keep up the real-time clock, | 205 | * timer_interrupt() needs to keep up the real-time clock, |
| 206 | * as well as call the "do_timer()" routine every clocktick | 206 | * as well as call the "do_timer()" routine every clocktick |
| 207 | */ | 207 | */ |
| 208 | static inline void | 208 | irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) |
| 209 | do_timer_interrupt(int irq, void *dev_id, struct pt_regs * regs) | ||
| 210 | { | 209 | { |
| 211 | #ifndef CONFIG_SMP | 210 | #ifndef CONFIG_SMP |
| 212 | profile_tick(CPU_PROFILING, regs); | 211 | profile_tick(CPU_PROFILING, regs); |
| @@ -221,6 +220,7 @@ do_timer_interrupt(int irq, void *dev_id, struct pt_regs * regs) | |||
| 221 | * CMOS clock accordingly every ~11 minutes. Set_rtc_mmss() has to be | 220 | * CMOS clock accordingly every ~11 minutes. Set_rtc_mmss() has to be |
| 222 | * called as close as possible to 500 ms before the new second starts. | 221 | * called as close as possible to 500 ms before the new second starts. |
| 223 | */ | 222 | */ |
| 223 | write_seqlock(&xtime_lock); | ||
| 224 | if ((time_status & STA_UNSYNC) == 0 | 224 | if ((time_status & STA_UNSYNC) == 0 |
| 225 | && xtime.tv_sec > last_rtc_update + 660 | 225 | && xtime.tv_sec > last_rtc_update + 660 |
| 226 | && (xtime.tv_nsec / 1000) >= 500000 - ((unsigned)TICK_SIZE) / 2 | 226 | && (xtime.tv_nsec / 1000) >= 500000 - ((unsigned)TICK_SIZE) / 2 |
| @@ -231,6 +231,7 @@ do_timer_interrupt(int irq, void *dev_id, struct pt_regs * regs) | |||
| 231 | else /* do it again in 60 s */ | 231 | else /* do it again in 60 s */ |
| 232 | last_rtc_update = xtime.tv_sec - 600; | 232 | last_rtc_update = xtime.tv_sec - 600; |
| 233 | } | 233 | } |
| 234 | write_sequnlock(&xtime_lock); | ||
| 234 | /* As we return to user mode fire off the other CPU schedulers.. | 235 | /* As we return to user mode fire off the other CPU schedulers.. |
| 235 | this is basically because we don't yet share IRQ's around. | 236 | this is basically because we don't yet share IRQ's around. |
| 236 | This message is rigged to be safe on the 386 - basically it's | 237 | This message is rigged to be safe on the 386 - basically it's |
| @@ -238,14 +239,8 @@ do_timer_interrupt(int irq, void *dev_id, struct pt_regs * regs) | |||
| 238 | 239 | ||
| 239 | #ifdef CONFIG_SMP | 240 | #ifdef CONFIG_SMP |
| 240 | smp_local_timer_interrupt(regs); | 241 | smp_local_timer_interrupt(regs); |
| 242 | smp_send_timer(); | ||
| 241 | #endif | 243 | #endif |
| 242 | } | ||
| 243 | |||
| 244 | irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | ||
| 245 | { | ||
| 246 | write_seqlock(&xtime_lock); | ||
| 247 | do_timer_interrupt(irq, NULL, regs); | ||
| 248 | write_sequnlock(&xtime_lock); | ||
| 249 | 244 | ||
| 250 | return IRQ_HANDLED; | 245 | return IRQ_HANDLED; |
| 251 | } | 246 | } |
