diff options
author | Paul Mundt <lethal@linux-sh.org> | 2012-05-18 05:13:27 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2012-05-18 05:13:27 -0400 |
commit | c1dbccc3c7cc70e8211a7ad6ba55ecbc18e77a5a (patch) | |
tree | 570fbd1ab42d12257a820460fae0e6e7bc891900 /arch | |
parent | 00d6025e58c6e3b229e28cab721c568af5b1ae05 (diff) | |
parent | 58796ce67a80e8725220af83c5a550bf6a4dab12 (diff) |
Merge branch 'sh/evt2irq-migration' into sh-latest
Conflicts:
arch/sh/kernel/cpu/sh3/setup-sh770x.c
arch/sh/kernel/cpu/sh3/setup-sh7710.c
arch/sh/kernel/cpu/sh3/setup-sh7720.c
arch/sh/kernel/cpu/sh4/setup-sh7750.c
arch/sh/kernel/cpu/sh4a/setup-sh7343.c
arch/sh/kernel/cpu/sh4a/setup-sh7366.c
arch/sh/kernel/cpu/sh4a/setup-sh7722.c
arch/sh/kernel/cpu/sh4a/setup-sh7723.c
arch/sh/kernel/cpu/sh4a/setup-sh7724.c
arch/sh/kernel/cpu/sh4a/setup-sh7757.c
arch/sh/kernel/cpu/sh4a/setup-sh7763.c
arch/sh/kernel/cpu/sh4a/setup-sh7770.c
arch/sh/kernel/cpu/sh4a/setup-sh7785.c
arch/sh/kernel/cpu/sh4a/setup-sh7786.c
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch')
106 files changed, 953 insertions, 714 deletions
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig index e81c35f936b5..b8df521fb68e 100644 --- a/arch/arm/mach-exynos/Kconfig +++ b/arch/arm/mach-exynos/Kconfig | |||
@@ -232,6 +232,9 @@ config MACH_ARMLEX4210 | |||
232 | config MACH_UNIVERSAL_C210 | 232 | config MACH_UNIVERSAL_C210 |
233 | bool "Mobile UNIVERSAL_C210 Board" | 233 | bool "Mobile UNIVERSAL_C210 Board" |
234 | select CPU_EXYNOS4210 | 234 | select CPU_EXYNOS4210 |
235 | select S5P_HRT | ||
236 | select CLKSRC_MMIO | ||
237 | select HAVE_SCHED_CLOCK | ||
235 | select S5P_GPIO_INT | 238 | select S5P_GPIO_INT |
236 | select S5P_DEV_FIMC0 | 239 | select S5P_DEV_FIMC0 |
237 | select S5P_DEV_FIMC1 | 240 | select S5P_DEV_FIMC1 |
diff --git a/arch/arm/mach-exynos/clock-exynos5.c b/arch/arm/mach-exynos/clock-exynos5.c index 5cd7a8b8868c..7ac6ff4c46bd 100644 --- a/arch/arm/mach-exynos/clock-exynos5.c +++ b/arch/arm/mach-exynos/clock-exynos5.c | |||
@@ -678,7 +678,7 @@ static struct clk exynos5_clk_pdma1 = { | |||
678 | .name = "dma", | 678 | .name = "dma", |
679 | .devname = "dma-pl330.1", | 679 | .devname = "dma-pl330.1", |
680 | .enable = exynos5_clk_ip_fsys_ctrl, | 680 | .enable = exynos5_clk_ip_fsys_ctrl, |
681 | .ctrlbit = (1 << 1), | 681 | .ctrlbit = (1 << 2), |
682 | }; | 682 | }; |
683 | 683 | ||
684 | static struct clk exynos5_clk_mdma1 = { | 684 | static struct clk exynos5_clk_mdma1 = { |
diff --git a/arch/arm/mach-exynos/mach-universal_c210.c b/arch/arm/mach-exynos/mach-universal_c210.c index cb2b027f09a6..a34036eb8ba2 100644 --- a/arch/arm/mach-exynos/mach-universal_c210.c +++ b/arch/arm/mach-exynos/mach-universal_c210.c | |||
@@ -40,6 +40,7 @@ | |||
40 | #include <plat/pd.h> | 40 | #include <plat/pd.h> |
41 | #include <plat/regs-fb-v4.h> | 41 | #include <plat/regs-fb-v4.h> |
42 | #include <plat/fimc-core.h> | 42 | #include <plat/fimc-core.h> |
43 | #include <plat/s5p-time.h> | ||
43 | #include <plat/camport.h> | 44 | #include <plat/camport.h> |
44 | #include <plat/mipi_csis.h> | 45 | #include <plat/mipi_csis.h> |
45 | 46 | ||
@@ -1063,6 +1064,7 @@ static void __init universal_map_io(void) | |||
1063 | exynos_init_io(NULL, 0); | 1064 | exynos_init_io(NULL, 0); |
1064 | s3c24xx_init_clocks(24000000); | 1065 | s3c24xx_init_clocks(24000000); |
1065 | s3c24xx_init_uarts(universal_uartcfgs, ARRAY_SIZE(universal_uartcfgs)); | 1066 | s3c24xx_init_uarts(universal_uartcfgs, ARRAY_SIZE(universal_uartcfgs)); |
1067 | s5p_set_timer_source(S5P_PWM2, S5P_PWM4); | ||
1066 | } | 1068 | } |
1067 | 1069 | ||
1068 | static void s5p_tv_setup(void) | 1070 | static void s5p_tv_setup(void) |
@@ -1113,7 +1115,7 @@ MACHINE_START(UNIVERSAL_C210, "UNIVERSAL_C210") | |||
1113 | .map_io = universal_map_io, | 1115 | .map_io = universal_map_io, |
1114 | .handle_irq = gic_handle_irq, | 1116 | .handle_irq = gic_handle_irq, |
1115 | .init_machine = universal_machine_init, | 1117 | .init_machine = universal_machine_init, |
1116 | .timer = &exynos4_timer, | 1118 | .timer = &s5p_timer, |
1117 | .reserve = &universal_reserve, | 1119 | .reserve = &universal_reserve, |
1118 | .restart = exynos4_restart, | 1120 | .restart = exynos4_restart, |
1119 | MACHINE_END | 1121 | MACHINE_END |
diff --git a/arch/arm/mach-prima2/irq.c b/arch/arm/mach-prima2/irq.c index 37c2de9b6f26..a7b9415d30f8 100644 --- a/arch/arm/mach-prima2/irq.c +++ b/arch/arm/mach-prima2/irq.c | |||
@@ -42,7 +42,8 @@ sirfsoc_alloc_gc(void __iomem *base, unsigned int irq_start, unsigned int num) | |||
42 | static __init void sirfsoc_irq_init(void) | 42 | static __init void sirfsoc_irq_init(void) |
43 | { | 43 | { |
44 | sirfsoc_alloc_gc(sirfsoc_intc_base, 0, 32); | 44 | sirfsoc_alloc_gc(sirfsoc_intc_base, 0, 32); |
45 | sirfsoc_alloc_gc(sirfsoc_intc_base + 4, 32, SIRFSOC_INTENAL_IRQ_END - 32); | 45 | sirfsoc_alloc_gc(sirfsoc_intc_base + 4, 32, |
46 | SIRFSOC_INTENAL_IRQ_END + 1 - 32); | ||
46 | 47 | ||
47 | writel_relaxed(0, sirfsoc_intc_base + SIRFSOC_INT_RISC_LEVEL0); | 48 | writel_relaxed(0, sirfsoc_intc_base + SIRFSOC_INT_RISC_LEVEL0); |
48 | writel_relaxed(0, sirfsoc_intc_base + SIRFSOC_INT_RISC_LEVEL1); | 49 | writel_relaxed(0, sirfsoc_intc_base + SIRFSOC_INT_RISC_LEVEL1); |
@@ -68,7 +69,8 @@ void __init sirfsoc_of_irq_init(void) | |||
68 | if (!sirfsoc_intc_base) | 69 | if (!sirfsoc_intc_base) |
69 | panic("unable to map intc cpu registers\n"); | 70 | panic("unable to map intc cpu registers\n"); |
70 | 71 | ||
71 | irq_domain_add_legacy(np, 32, 0, 0, &irq_domain_simple_ops, NULL); | 72 | irq_domain_add_legacy(np, SIRFSOC_INTENAL_IRQ_END + 1, 0, 0, |
73 | &irq_domain_simple_ops, NULL); | ||
72 | 74 | ||
73 | of_node_put(np); | 75 | of_node_put(np); |
74 | 76 | ||
diff --git a/arch/arm/mach-shmobile/board-ag5evm.c b/arch/arm/mach-shmobile/board-ag5evm.c index cb224a344af0..0891ec6e27f5 100644 --- a/arch/arm/mach-shmobile/board-ag5evm.c +++ b/arch/arm/mach-shmobile/board-ag5evm.c | |||
@@ -365,23 +365,13 @@ static struct platform_device mipidsi0_device = { | |||
365 | }; | 365 | }; |
366 | 366 | ||
367 | /* SDHI0 */ | 367 | /* SDHI0 */ |
368 | static irqreturn_t ag5evm_sdhi0_gpio_cd(int irq, void *arg) | ||
369 | { | ||
370 | struct device *dev = arg; | ||
371 | struct sh_mobile_sdhi_info *info = dev->platform_data; | ||
372 | struct tmio_mmc_data *pdata = info->pdata; | ||
373 | |||
374 | tmio_mmc_cd_wakeup(pdata); | ||
375 | |||
376 | return IRQ_HANDLED; | ||
377 | } | ||
378 | |||
379 | static struct sh_mobile_sdhi_info sdhi0_info = { | 368 | static struct sh_mobile_sdhi_info sdhi0_info = { |
380 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, | 369 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, |
381 | .dma_slave_rx = SHDMA_SLAVE_SDHI0_RX, | 370 | .dma_slave_rx = SHDMA_SLAVE_SDHI0_RX, |
382 | .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT, | 371 | .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT | TMIO_MMC_USE_GPIO_CD, |
383 | .tmio_caps = MMC_CAP_SD_HIGHSPEED, | 372 | .tmio_caps = MMC_CAP_SD_HIGHSPEED, |
384 | .tmio_ocr_mask = MMC_VDD_27_28 | MMC_VDD_28_29, | 373 | .tmio_ocr_mask = MMC_VDD_27_28 | MMC_VDD_28_29, |
374 | .cd_gpio = GPIO_PORT251, | ||
385 | }; | 375 | }; |
386 | 376 | ||
387 | static struct resource sdhi0_resources[] = { | 377 | static struct resource sdhi0_resources[] = { |
@@ -557,7 +547,6 @@ static void __init ag5evm_init(void) | |||
557 | lcd_backlight_reset(); | 547 | lcd_backlight_reset(); |
558 | 548 | ||
559 | /* enable SDHI0 on CN15 [SD I/F] */ | 549 | /* enable SDHI0 on CN15 [SD I/F] */ |
560 | gpio_request(GPIO_FN_SDHICD0, NULL); | ||
561 | gpio_request(GPIO_FN_SDHIWP0, NULL); | 550 | gpio_request(GPIO_FN_SDHIWP0, NULL); |
562 | gpio_request(GPIO_FN_SDHICMD0, NULL); | 551 | gpio_request(GPIO_FN_SDHICMD0, NULL); |
563 | gpio_request(GPIO_FN_SDHICLK0, NULL); | 552 | gpio_request(GPIO_FN_SDHICLK0, NULL); |
@@ -566,13 +555,6 @@ static void __init ag5evm_init(void) | |||
566 | gpio_request(GPIO_FN_SDHID0_1, NULL); | 555 | gpio_request(GPIO_FN_SDHID0_1, NULL); |
567 | gpio_request(GPIO_FN_SDHID0_0, NULL); | 556 | gpio_request(GPIO_FN_SDHID0_0, NULL); |
568 | 557 | ||
569 | if (!request_irq(intcs_evt2irq(0x3c0), ag5evm_sdhi0_gpio_cd, | ||
570 | IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING, | ||
571 | "sdhi0 cd", &sdhi0_device.dev)) | ||
572 | sdhi0_info.tmio_flags |= TMIO_MMC_HAS_COLD_CD; | ||
573 | else | ||
574 | pr_warn("Unable to setup SDHI0 GPIO IRQ\n"); | ||
575 | |||
576 | /* enable SDHI1 on CN4 [WLAN I/F] */ | 558 | /* enable SDHI1 on CN4 [WLAN I/F] */ |
577 | gpio_request(GPIO_FN_SDHICLK1, NULL); | 559 | gpio_request(GPIO_FN_SDHICLK1, NULL); |
578 | gpio_request(GPIO_FN_SDHICMD1_PU, NULL); | 560 | gpio_request(GPIO_FN_SDHICMD1_PU, NULL); |
diff --git a/arch/arm/mach-shmobile/board-mackerel.c b/arch/arm/mach-shmobile/board-mackerel.c index f49e28abe0ab..8c6202bb6aeb 100644 --- a/arch/arm/mach-shmobile/board-mackerel.c +++ b/arch/arm/mach-shmobile/board-mackerel.c | |||
@@ -1011,21 +1011,12 @@ static int slot_cn7_get_cd(struct platform_device *pdev) | |||
1011 | } | 1011 | } |
1012 | 1012 | ||
1013 | /* SDHI0 */ | 1013 | /* SDHI0 */ |
1014 | static irqreturn_t mackerel_sdhi0_gpio_cd(int irq, void *arg) | ||
1015 | { | ||
1016 | struct device *dev = arg; | ||
1017 | struct sh_mobile_sdhi_info *info = dev->platform_data; | ||
1018 | struct tmio_mmc_data *pdata = info->pdata; | ||
1019 | |||
1020 | tmio_mmc_cd_wakeup(pdata); | ||
1021 | |||
1022 | return IRQ_HANDLED; | ||
1023 | } | ||
1024 | |||
1025 | static struct sh_mobile_sdhi_info sdhi0_info = { | 1014 | static struct sh_mobile_sdhi_info sdhi0_info = { |
1026 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, | 1015 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, |
1027 | .dma_slave_rx = SHDMA_SLAVE_SDHI0_RX, | 1016 | .dma_slave_rx = SHDMA_SLAVE_SDHI0_RX, |
1017 | .tmio_flags = TMIO_MMC_USE_GPIO_CD, | ||
1028 | .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ, | 1018 | .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ, |
1019 | .cd_gpio = GPIO_PORT172, | ||
1029 | }; | 1020 | }; |
1030 | 1021 | ||
1031 | static struct resource sdhi0_resources[] = { | 1022 | static struct resource sdhi0_resources[] = { |
@@ -1384,7 +1375,6 @@ static void __init mackerel_init(void) | |||
1384 | { | 1375 | { |
1385 | u32 srcr4; | 1376 | u32 srcr4; |
1386 | struct clk *clk; | 1377 | struct clk *clk; |
1387 | int ret; | ||
1388 | 1378 | ||
1389 | /* External clock source */ | 1379 | /* External clock source */ |
1390 | clk_set_rate(&sh7372_dv_clki_clk, 27000000); | 1380 | clk_set_rate(&sh7372_dv_clki_clk, 27000000); |
@@ -1481,7 +1471,6 @@ static void __init mackerel_init(void) | |||
1481 | irq_set_irq_type(IRQ21, IRQ_TYPE_LEVEL_HIGH); | 1471 | irq_set_irq_type(IRQ21, IRQ_TYPE_LEVEL_HIGH); |
1482 | 1472 | ||
1483 | /* enable SDHI0 */ | 1473 | /* enable SDHI0 */ |
1484 | gpio_request(GPIO_FN_SDHICD0, NULL); | ||
1485 | gpio_request(GPIO_FN_SDHIWP0, NULL); | 1474 | gpio_request(GPIO_FN_SDHIWP0, NULL); |
1486 | gpio_request(GPIO_FN_SDHICMD0, NULL); | 1475 | gpio_request(GPIO_FN_SDHICMD0, NULL); |
1487 | gpio_request(GPIO_FN_SDHICLK0, NULL); | 1476 | gpio_request(GPIO_FN_SDHICLK0, NULL); |
@@ -1490,13 +1479,6 @@ static void __init mackerel_init(void) | |||
1490 | gpio_request(GPIO_FN_SDHID0_1, NULL); | 1479 | gpio_request(GPIO_FN_SDHID0_1, NULL); |
1491 | gpio_request(GPIO_FN_SDHID0_0, NULL); | 1480 | gpio_request(GPIO_FN_SDHID0_0, NULL); |
1492 | 1481 | ||
1493 | ret = request_irq(evt2irq(0x3340), mackerel_sdhi0_gpio_cd, | ||
1494 | IRQF_TRIGGER_FALLING, "sdhi0 cd", &sdhi0_device.dev); | ||
1495 | if (!ret) | ||
1496 | sdhi0_info.tmio_flags |= TMIO_MMC_HAS_COLD_CD; | ||
1497 | else | ||
1498 | pr_err("Cannot get IRQ #%d: %d\n", evt2irq(0x3340), ret); | ||
1499 | |||
1500 | #if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE) | 1482 | #if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE) |
1501 | /* enable SDHI1 */ | 1483 | /* enable SDHI1 */ |
1502 | gpio_request(GPIO_FN_SDHICMD1, NULL); | 1484 | gpio_request(GPIO_FN_SDHICMD1, NULL); |
diff --git a/arch/arm/mach-shmobile/headsmp.S b/arch/arm/mach-shmobile/headsmp.S index 6ac015c89206..b202c1272526 100644 --- a/arch/arm/mach-shmobile/headsmp.S +++ b/arch/arm/mach-shmobile/headsmp.S | |||
@@ -16,6 +16,59 @@ | |||
16 | 16 | ||
17 | __CPUINIT | 17 | __CPUINIT |
18 | 18 | ||
19 | /* Cache invalidation nicked from arch/arm/mach-imx/head-v7.S, thanks! | ||
20 | * | ||
21 | * The secondary kernel init calls v7_flush_dcache_all before it enables | ||
22 | * the L1; however, the L1 comes out of reset in an undefined state, so | ||
23 | * the clean + invalidate performed by v7_flush_dcache_all causes a bunch | ||
24 | * of cache lines with uninitialized data and uninitialized tags to get | ||
25 | * written out to memory, which does really unpleasant things to the main | ||
26 | * processor. We fix this by performing an invalidate, rather than a | ||
27 | * clean + invalidate, before jumping into the kernel. | ||
28 | * | ||
29 | * This funciton is cloned from arch/arm/mach-tegra/headsmp.S, and needs | ||
30 | * to be called for both secondary cores startup and primary core resume | ||
31 | * procedures. Ideally, it should be moved into arch/arm/mm/cache-v7.S. | ||
32 | */ | ||
33 | ENTRY(v7_invalidate_l1) | ||
34 | mov r0, #0 | ||
35 | mcr p15, 0, r0, c7, c5, 0 @ invalidate I cache | ||
36 | mcr p15, 2, r0, c0, c0, 0 | ||
37 | mrc p15, 1, r0, c0, c0, 0 | ||
38 | |||
39 | ldr r1, =0x7fff | ||
40 | and r2, r1, r0, lsr #13 | ||
41 | |||
42 | ldr r1, =0x3ff | ||
43 | |||
44 | and r3, r1, r0, lsr #3 @ NumWays - 1 | ||
45 | add r2, r2, #1 @ NumSets | ||
46 | |||
47 | and r0, r0, #0x7 | ||
48 | add r0, r0, #4 @ SetShift | ||
49 | |||
50 | clz r1, r3 @ WayShift | ||
51 | add r4, r3, #1 @ NumWays | ||
52 | 1: sub r2, r2, #1 @ NumSets-- | ||
53 | mov r3, r4 @ Temp = NumWays | ||
54 | 2: subs r3, r3, #1 @ Temp-- | ||
55 | mov r5, r3, lsl r1 | ||
56 | mov r6, r2, lsl r0 | ||
57 | orr r5, r5, r6 @ Reg = (Temp<<WayShift)|(NumSets<<SetShift) | ||
58 | mcr p15, 0, r5, c7, c6, 2 | ||
59 | bgt 2b | ||
60 | cmp r2, #0 | ||
61 | bgt 1b | ||
62 | dsb | ||
63 | isb | ||
64 | mov pc, lr | ||
65 | ENDPROC(v7_invalidate_l1) | ||
66 | |||
67 | ENTRY(shmobile_invalidate_start) | ||
68 | bl v7_invalidate_l1 | ||
69 | b secondary_startup | ||
70 | ENDPROC(shmobile_invalidate_start) | ||
71 | |||
19 | /* | 72 | /* |
20 | * Reset vector for secondary CPUs. | 73 | * Reset vector for secondary CPUs. |
21 | * This will be mapped at address 0 by SBAR register. | 74 | * This will be mapped at address 0 by SBAR register. |
@@ -24,4 +77,5 @@ | |||
24 | .align 12 | 77 | .align 12 |
25 | ENTRY(shmobile_secondary_vector) | 78 | ENTRY(shmobile_secondary_vector) |
26 | ldr pc, 1f | 79 | ldr pc, 1f |
27 | 1: .long secondary_startup - PAGE_OFFSET + PLAT_PHYS_OFFSET | 80 | 1: .long shmobile_invalidate_start - PAGE_OFFSET + PLAT_PHYS_OFFSET |
81 | ENDPROC(shmobile_secondary_vector) | ||
diff --git a/arch/arm/mach-shmobile/include/mach/common.h b/arch/arm/mach-shmobile/include/mach/common.h index 83ad3fe0a75f..c85e6ecda606 100644 --- a/arch/arm/mach-shmobile/include/mach/common.h +++ b/arch/arm/mach-shmobile/include/mach/common.h | |||
@@ -4,7 +4,6 @@ | |||
4 | extern void shmobile_earlytimer_init(void); | 4 | extern void shmobile_earlytimer_init(void); |
5 | extern struct sys_timer shmobile_timer; | 5 | extern struct sys_timer shmobile_timer; |
6 | struct twd_local_timer; | 6 | struct twd_local_timer; |
7 | void shmobile_twd_init(struct twd_local_timer *twd_local_timer); | ||
8 | extern void shmobile_setup_console(void); | 7 | extern void shmobile_setup_console(void); |
9 | extern void shmobile_secondary_vector(void); | 8 | extern void shmobile_secondary_vector(void); |
10 | extern int shmobile_platform_cpu_kill(unsigned int cpu); | 9 | extern int shmobile_platform_cpu_kill(unsigned int cpu); |
@@ -82,5 +81,6 @@ extern int r8a7779_platform_cpu_kill(unsigned int cpu); | |||
82 | extern void r8a7779_secondary_init(unsigned int cpu); | 81 | extern void r8a7779_secondary_init(unsigned int cpu); |
83 | extern int r8a7779_boot_secondary(unsigned int cpu); | 82 | extern int r8a7779_boot_secondary(unsigned int cpu); |
84 | extern void r8a7779_smp_prepare_cpus(void); | 83 | extern void r8a7779_smp_prepare_cpus(void); |
84 | extern void r8a7779_register_twd(void); | ||
85 | 85 | ||
86 | #endif /* __ARCH_MACH_COMMON_H */ | 86 | #endif /* __ARCH_MACH_COMMON_H */ |
diff --git a/arch/arm/mach-shmobile/setup-r8a7779.c b/arch/arm/mach-shmobile/setup-r8a7779.c index 12c6f529ab89..e98e46f6cf55 100644 --- a/arch/arm/mach-shmobile/setup-r8a7779.c +++ b/arch/arm/mach-shmobile/setup-r8a7779.c | |||
@@ -262,10 +262,14 @@ void __init r8a7779_add_standard_devices(void) | |||
262 | ARRAY_SIZE(r8a7779_late_devices)); | 262 | ARRAY_SIZE(r8a7779_late_devices)); |
263 | } | 263 | } |
264 | 264 | ||
265 | /* do nothing for !CONFIG_SMP or !CONFIG_HAVE_TWD */ | ||
266 | void __init __weak r8a7779_register_twd(void) { } | ||
267 | |||
265 | static void __init r8a7779_earlytimer_init(void) | 268 | static void __init r8a7779_earlytimer_init(void) |
266 | { | 269 | { |
267 | r8a7779_clock_init(); | 270 | r8a7779_clock_init(); |
268 | shmobile_earlytimer_init(); | 271 | shmobile_earlytimer_init(); |
272 | r8a7779_register_twd(); | ||
269 | } | 273 | } |
270 | 274 | ||
271 | void __init r8a7779_add_early_devices(void) | 275 | void __init r8a7779_add_early_devices(void) |
diff --git a/arch/arm/mach-shmobile/setup-sh73a0.c b/arch/arm/mach-shmobile/setup-sh73a0.c index 5bebffc10455..04a0dfe75493 100644 --- a/arch/arm/mach-shmobile/setup-sh73a0.c +++ b/arch/arm/mach-shmobile/setup-sh73a0.c | |||
@@ -688,10 +688,14 @@ void __init sh73a0_add_standard_devices(void) | |||
688 | ARRAY_SIZE(sh73a0_late_devices)); | 688 | ARRAY_SIZE(sh73a0_late_devices)); |
689 | } | 689 | } |
690 | 690 | ||
691 | /* do nothing for !CONFIG_SMP or !CONFIG_HAVE_TWD */ | ||
692 | void __init __weak sh73a0_register_twd(void) { } | ||
693 | |||
691 | static void __init sh73a0_earlytimer_init(void) | 694 | static void __init sh73a0_earlytimer_init(void) |
692 | { | 695 | { |
693 | sh73a0_clock_init(); | 696 | sh73a0_clock_init(); |
694 | shmobile_earlytimer_init(); | 697 | shmobile_earlytimer_init(); |
698 | sh73a0_register_twd(); | ||
695 | } | 699 | } |
696 | 700 | ||
697 | void __init sh73a0_add_early_devices(void) | 701 | void __init sh73a0_add_early_devices(void) |
diff --git a/arch/arm/mach-shmobile/smp-r8a7779.c b/arch/arm/mach-shmobile/smp-r8a7779.c index b62e19d4c9af..6d1d0238cbf7 100644 --- a/arch/arm/mach-shmobile/smp-r8a7779.c +++ b/arch/arm/mach-shmobile/smp-r8a7779.c | |||
@@ -64,8 +64,15 @@ static void __iomem *scu_base_addr(void) | |||
64 | static DEFINE_SPINLOCK(scu_lock); | 64 | static DEFINE_SPINLOCK(scu_lock); |
65 | static unsigned long tmp; | 65 | static unsigned long tmp; |
66 | 66 | ||
67 | #ifdef CONFIG_HAVE_ARM_TWD | ||
67 | static DEFINE_TWD_LOCAL_TIMER(twd_local_timer, 0xf0000600, 29); | 68 | static DEFINE_TWD_LOCAL_TIMER(twd_local_timer, 0xf0000600, 29); |
68 | 69 | ||
70 | void __init r8a7779_register_twd(void) | ||
71 | { | ||
72 | twd_local_timer_register(&twd_local_timer); | ||
73 | } | ||
74 | #endif | ||
75 | |||
69 | static void modify_scu_cpu_psr(unsigned long set, unsigned long clr) | 76 | static void modify_scu_cpu_psr(unsigned long set, unsigned long clr) |
70 | { | 77 | { |
71 | void __iomem *scu_base = scu_base_addr(); | 78 | void __iomem *scu_base = scu_base_addr(); |
@@ -84,7 +91,6 @@ unsigned int __init r8a7779_get_core_count(void) | |||
84 | { | 91 | { |
85 | void __iomem *scu_base = scu_base_addr(); | 92 | void __iomem *scu_base = scu_base_addr(); |
86 | 93 | ||
87 | shmobile_twd_init(&twd_local_timer); | ||
88 | return scu_get_core_count(scu_base); | 94 | return scu_get_core_count(scu_base); |
89 | } | 95 | } |
90 | 96 | ||
diff --git a/arch/arm/mach-shmobile/smp-sh73a0.c b/arch/arm/mach-shmobile/smp-sh73a0.c index 14ad8b052f1a..e36c41c4ab40 100644 --- a/arch/arm/mach-shmobile/smp-sh73a0.c +++ b/arch/arm/mach-shmobile/smp-sh73a0.c | |||
@@ -42,7 +42,13 @@ static void __iomem *scu_base_addr(void) | |||
42 | static DEFINE_SPINLOCK(scu_lock); | 42 | static DEFINE_SPINLOCK(scu_lock); |
43 | static unsigned long tmp; | 43 | static unsigned long tmp; |
44 | 44 | ||
45 | #ifdef CONFIG_HAVE_ARM_TWD | ||
45 | static DEFINE_TWD_LOCAL_TIMER(twd_local_timer, 0xf0000600, 29); | 46 | static DEFINE_TWD_LOCAL_TIMER(twd_local_timer, 0xf0000600, 29); |
47 | void __init sh73a0_register_twd(void) | ||
48 | { | ||
49 | twd_local_timer_register(&twd_local_timer); | ||
50 | } | ||
51 | #endif | ||
46 | 52 | ||
47 | static void modify_scu_cpu_psr(unsigned long set, unsigned long clr) | 53 | static void modify_scu_cpu_psr(unsigned long set, unsigned long clr) |
48 | { | 54 | { |
@@ -62,7 +68,6 @@ unsigned int __init sh73a0_get_core_count(void) | |||
62 | { | 68 | { |
63 | void __iomem *scu_base = scu_base_addr(); | 69 | void __iomem *scu_base = scu_base_addr(); |
64 | 70 | ||
65 | shmobile_twd_init(&twd_local_timer); | ||
66 | return scu_get_core_count(scu_base); | 71 | return scu_get_core_count(scu_base); |
67 | } | 72 | } |
68 | 73 | ||
diff --git a/arch/arm/mach-shmobile/timer.c b/arch/arm/mach-shmobile/timer.c index 2fba5f3d1c8a..8b79e7917a23 100644 --- a/arch/arm/mach-shmobile/timer.c +++ b/arch/arm/mach-shmobile/timer.c | |||
@@ -46,15 +46,6 @@ static void __init shmobile_timer_init(void) | |||
46 | { | 46 | { |
47 | } | 47 | } |
48 | 48 | ||
49 | void __init shmobile_twd_init(struct twd_local_timer *twd_local_timer) | ||
50 | { | ||
51 | #ifdef CONFIG_HAVE_ARM_TWD | ||
52 | int err = twd_local_timer_register(twd_local_timer); | ||
53 | if (err) | ||
54 | pr_err("twd_local_timer_register failed %d\n", err); | ||
55 | #endif | ||
56 | } | ||
57 | |||
58 | struct sys_timer shmobile_timer = { | 49 | struct sys_timer shmobile_timer = { |
59 | .init = shmobile_timer_init, | 50 | .init = shmobile_timer_init, |
60 | }; | 51 | }; |
diff --git a/arch/arm/mach-tegra/flowctrl.c b/arch/arm/mach-tegra/flowctrl.c index fef66a7486ed..f07488e0bd32 100644 --- a/arch/arm/mach-tegra/flowctrl.c +++ b/arch/arm/mach-tegra/flowctrl.c | |||
@@ -53,10 +53,10 @@ static void flowctrl_update(u8 offset, u32 value) | |||
53 | 53 | ||
54 | void flowctrl_write_cpu_csr(unsigned int cpuid, u32 value) | 54 | void flowctrl_write_cpu_csr(unsigned int cpuid, u32 value) |
55 | { | 55 | { |
56 | return flowctrl_update(flowctrl_offset_halt_cpu[cpuid], value); | 56 | return flowctrl_update(flowctrl_offset_cpu_csr[cpuid], value); |
57 | } | 57 | } |
58 | 58 | ||
59 | void flowctrl_write_cpu_halt(unsigned int cpuid, u32 value) | 59 | void flowctrl_write_cpu_halt(unsigned int cpuid, u32 value) |
60 | { | 60 | { |
61 | return flowctrl_update(flowctrl_offset_cpu_csr[cpuid], value); | 61 | return flowctrl_update(flowctrl_offset_halt_cpu[cpuid], value); |
62 | } | 62 | } |
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c index f07467533365..5bb48356d217 100644 --- a/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c | |||
@@ -247,7 +247,9 @@ good_area: | |||
247 | return handle_mm_fault(mm, vma, addr & PAGE_MASK, flags); | 247 | return handle_mm_fault(mm, vma, addr & PAGE_MASK, flags); |
248 | 248 | ||
249 | check_stack: | 249 | check_stack: |
250 | if (vma->vm_flags & VM_GROWSDOWN && !expand_stack(vma, addr)) | 250 | /* Don't allow expansion below FIRST_USER_ADDRESS */ |
251 | if (vma->vm_flags & VM_GROWSDOWN && | ||
252 | addr >= FIRST_USER_ADDRESS && !expand_stack(vma, addr)) | ||
251 | goto good_area; | 253 | goto good_area; |
252 | out: | 254 | out: |
253 | return fault; | 255 | return fault; |
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index 2c7cf2f9c837..aa78de8bfdd3 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c | |||
@@ -489,7 +489,8 @@ static void __init build_mem_type_table(void) | |||
489 | */ | 489 | */ |
490 | for (i = 0; i < ARRAY_SIZE(mem_types); i++) { | 490 | for (i = 0; i < ARRAY_SIZE(mem_types); i++) { |
491 | mem_types[i].prot_pte |= PTE_EXT_AF; | 491 | mem_types[i].prot_pte |= PTE_EXT_AF; |
492 | mem_types[i].prot_sect |= PMD_SECT_AF; | 492 | if (mem_types[i].prot_sect) |
493 | mem_types[i].prot_sect |= PMD_SECT_AF; | ||
493 | } | 494 | } |
494 | kern_pgprot |= PTE_EXT_AF; | 495 | kern_pgprot |= PTE_EXT_AF; |
495 | vecs_pgprot |= PTE_EXT_AF; | 496 | vecs_pgprot |= PTE_EXT_AF; |
diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c index bc683b8219b5..b0197b2c857d 100644 --- a/arch/arm/vfp/vfpmodule.c +++ b/arch/arm/vfp/vfpmodule.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/types.h> | 11 | #include <linux/types.h> |
12 | #include <linux/cpu.h> | 12 | #include <linux/cpu.h> |
13 | #include <linux/cpu_pm.h> | 13 | #include <linux/cpu_pm.h> |
14 | #include <linux/hardirq.h> | ||
14 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
15 | #include <linux/notifier.h> | 16 | #include <linux/notifier.h> |
16 | #include <linux/signal.h> | 17 | #include <linux/signal.h> |
@@ -432,7 +433,10 @@ void VFP_bounce(u32 trigger, u32 fpexc, struct pt_regs *regs) | |||
432 | 433 | ||
433 | static void vfp_enable(void *unused) | 434 | static void vfp_enable(void *unused) |
434 | { | 435 | { |
435 | u32 access = get_copro_access(); | 436 | u32 access; |
437 | |||
438 | BUG_ON(preemptible()); | ||
439 | access = get_copro_access(); | ||
436 | 440 | ||
437 | /* | 441 | /* |
438 | * Enable full access to VFP (cp10 and cp11) | 442 | * Enable full access to VFP (cp10 and cp11) |
@@ -573,12 +577,6 @@ int vfp_preserve_user_clear_hwstate(struct user_vfp __user *ufp, | |||
573 | * entry. | 577 | * entry. |
574 | */ | 578 | */ |
575 | hwstate->fpscr &= ~(FPSCR_LENGTH_MASK | FPSCR_STRIDE_MASK); | 579 | hwstate->fpscr &= ~(FPSCR_LENGTH_MASK | FPSCR_STRIDE_MASK); |
576 | |||
577 | /* | ||
578 | * Disable VFP in the hwstate so that we can detect if it gets | ||
579 | * used. | ||
580 | */ | ||
581 | hwstate->fpexc &= ~FPEXC_EN; | ||
582 | return 0; | 580 | return 0; |
583 | } | 581 | } |
584 | 582 | ||
@@ -591,12 +589,8 @@ int vfp_restore_user_hwstate(struct user_vfp __user *ufp, | |||
591 | unsigned long fpexc; | 589 | unsigned long fpexc; |
592 | int err = 0; | 590 | int err = 0; |
593 | 591 | ||
594 | /* | 592 | /* Disable VFP to avoid corrupting the new thread state. */ |
595 | * If VFP has been used, then disable it to avoid corrupting | 593 | vfp_flush_hwstate(thread); |
596 | * the new thread state. | ||
597 | */ | ||
598 | if (hwstate->fpexc & FPEXC_EN) | ||
599 | vfp_flush_hwstate(thread); | ||
600 | 594 | ||
601 | /* | 595 | /* |
602 | * Copy the floating point registers. There can be unused | 596 | * Copy the floating point registers. There can be unused |
@@ -657,7 +651,7 @@ static int __init vfp_init(void) | |||
657 | unsigned int cpu_arch = cpu_architecture(); | 651 | unsigned int cpu_arch = cpu_architecture(); |
658 | 652 | ||
659 | if (cpu_arch >= CPU_ARCH_ARMv6) | 653 | if (cpu_arch >= CPU_ARCH_ARMv6) |
660 | vfp_enable(NULL); | 654 | on_each_cpu(vfp_enable, NULL, 1); |
661 | 655 | ||
662 | /* | 656 | /* |
663 | * First check that there is a VFP that we can use. | 657 | * First check that there is a VFP that we can use. |
@@ -678,8 +672,6 @@ static int __init vfp_init(void) | |||
678 | } else { | 672 | } else { |
679 | hotcpu_notifier(vfp_hotplug, 0); | 673 | hotcpu_notifier(vfp_hotplug, 0); |
680 | 674 | ||
681 | smp_call_function(vfp_enable, NULL, 1); | ||
682 | |||
683 | VFP_arch = (vfpsid & FPSID_ARCH_MASK) >> FPSID_ARCH_BIT; /* Extract the architecture version */ | 675 | VFP_arch = (vfpsid & FPSID_ARCH_MASK) >> FPSID_ARCH_BIT; /* Extract the architecture version */ |
684 | printk("implementor %02x architecture %d part %02x variant %x rev %x\n", | 676 | printk("implementor %02x architecture %d part %02x variant %x rev %x\n", |
685 | (vfpsid & FPSID_IMPLEMENTER_MASK) >> FPSID_IMPLEMENTER_BIT, | 677 | (vfpsid & FPSID_IMPLEMENTER_MASK) >> FPSID_IMPLEMENTER_BIT, |
diff --git a/arch/m68k/platform/520x/config.c b/arch/m68k/platform/520x/config.c index 235947844f27..09df4b89e8be 100644 --- a/arch/m68k/platform/520x/config.c +++ b/arch/m68k/platform/520x/config.c | |||
@@ -22,7 +22,7 @@ | |||
22 | 22 | ||
23 | /***************************************************************************/ | 23 | /***************************************************************************/ |
24 | 24 | ||
25 | #ifdef CONFIG_SPI_COLDFIRE_QSPI | 25 | #if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) |
26 | 26 | ||
27 | static void __init m520x_qspi_init(void) | 27 | static void __init m520x_qspi_init(void) |
28 | { | 28 | { |
@@ -35,7 +35,7 @@ static void __init m520x_qspi_init(void) | |||
35 | writew(par, MCF_GPIO_PAR_UART); | 35 | writew(par, MCF_GPIO_PAR_UART); |
36 | } | 36 | } |
37 | 37 | ||
38 | #endif /* CONFIG_SPI_COLDFIRE_QSPI */ | 38 | #endif /* IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) */ |
39 | 39 | ||
40 | /***************************************************************************/ | 40 | /***************************************************************************/ |
41 | 41 | ||
@@ -79,7 +79,7 @@ void __init config_BSP(char *commandp, int size) | |||
79 | mach_sched_init = hw_timer_init; | 79 | mach_sched_init = hw_timer_init; |
80 | m520x_uarts_init(); | 80 | m520x_uarts_init(); |
81 | m520x_fec_init(); | 81 | m520x_fec_init(); |
82 | #ifdef CONFIG_SPI_COLDFIRE_QSPI | 82 | #if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) |
83 | m520x_qspi_init(); | 83 | m520x_qspi_init(); |
84 | #endif | 84 | #endif |
85 | } | 85 | } |
diff --git a/arch/m68k/platform/523x/config.c b/arch/m68k/platform/523x/config.c index c8b405d5a961..d47dfd8f50a2 100644 --- a/arch/m68k/platform/523x/config.c +++ b/arch/m68k/platform/523x/config.c | |||
@@ -22,7 +22,7 @@ | |||
22 | 22 | ||
23 | /***************************************************************************/ | 23 | /***************************************************************************/ |
24 | 24 | ||
25 | #ifdef CONFIG_SPI_COLDFIRE_QSPI | 25 | #if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) |
26 | 26 | ||
27 | static void __init m523x_qspi_init(void) | 27 | static void __init m523x_qspi_init(void) |
28 | { | 28 | { |
@@ -36,7 +36,7 @@ static void __init m523x_qspi_init(void) | |||
36 | writew(par, MCFGPIO_PAR_TIMER); | 36 | writew(par, MCFGPIO_PAR_TIMER); |
37 | } | 37 | } |
38 | 38 | ||
39 | #endif /* CONFIG_SPI_COLDFIRE_QSPI */ | 39 | #endif /* IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) */ |
40 | 40 | ||
41 | /***************************************************************************/ | 41 | /***************************************************************************/ |
42 | 42 | ||
@@ -58,7 +58,7 @@ void __init config_BSP(char *commandp, int size) | |||
58 | { | 58 | { |
59 | mach_sched_init = hw_timer_init; | 59 | mach_sched_init = hw_timer_init; |
60 | m523x_fec_init(); | 60 | m523x_fec_init(); |
61 | #ifdef CONFIG_SPI_COLDFIRE_QSPI | 61 | #if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) |
62 | m523x_qspi_init(); | 62 | m523x_qspi_init(); |
63 | #endif | 63 | #endif |
64 | } | 64 | } |
diff --git a/arch/m68k/platform/5249/config.c b/arch/m68k/platform/5249/config.c index bbf05135bb98..300e729a58d0 100644 --- a/arch/m68k/platform/5249/config.c +++ b/arch/m68k/platform/5249/config.c | |||
@@ -51,7 +51,7 @@ static struct platform_device *m5249_devices[] __initdata = { | |||
51 | 51 | ||
52 | /***************************************************************************/ | 52 | /***************************************************************************/ |
53 | 53 | ||
54 | #ifdef CONFIG_SPI_COLDFIRE_QSPI | 54 | #if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) |
55 | 55 | ||
56 | static void __init m5249_qspi_init(void) | 56 | static void __init m5249_qspi_init(void) |
57 | { | 57 | { |
@@ -61,7 +61,7 @@ static void __init m5249_qspi_init(void) | |||
61 | mcf_mapirq2imr(MCF_IRQ_QSPI, MCFINTC_QSPI); | 61 | mcf_mapirq2imr(MCF_IRQ_QSPI, MCFINTC_QSPI); |
62 | } | 62 | } |
63 | 63 | ||
64 | #endif /* CONFIG_SPI_COLDFIRE_QSPI */ | 64 | #endif /* IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) */ |
65 | 65 | ||
66 | /***************************************************************************/ | 66 | /***************************************************************************/ |
67 | 67 | ||
@@ -90,7 +90,7 @@ void __init config_BSP(char *commandp, int size) | |||
90 | #ifdef CONFIG_M5249C3 | 90 | #ifdef CONFIG_M5249C3 |
91 | m5249_smc91x_init(); | 91 | m5249_smc91x_init(); |
92 | #endif | 92 | #endif |
93 | #ifdef CONFIG_SPI_COLDFIRE_QSPI | 93 | #if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) |
94 | m5249_qspi_init(); | 94 | m5249_qspi_init(); |
95 | #endif | 95 | #endif |
96 | } | 96 | } |
diff --git a/arch/m68k/platform/527x/config.c b/arch/m68k/platform/527x/config.c index f91a53294c35..b3cb378c5e94 100644 --- a/arch/m68k/platform/527x/config.c +++ b/arch/m68k/platform/527x/config.c | |||
@@ -23,7 +23,7 @@ | |||
23 | 23 | ||
24 | /***************************************************************************/ | 24 | /***************************************************************************/ |
25 | 25 | ||
26 | #ifdef CONFIG_SPI_COLDFIRE_QSPI | 26 | #if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) |
27 | 27 | ||
28 | static void __init m527x_qspi_init(void) | 28 | static void __init m527x_qspi_init(void) |
29 | { | 29 | { |
@@ -42,7 +42,7 @@ static void __init m527x_qspi_init(void) | |||
42 | #endif | 42 | #endif |
43 | } | 43 | } |
44 | 44 | ||
45 | #endif /* CONFIG_SPI_COLDFIRE_QSPI */ | 45 | #endif /* IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) */ |
46 | 46 | ||
47 | /***************************************************************************/ | 47 | /***************************************************************************/ |
48 | 48 | ||
@@ -90,7 +90,7 @@ void __init config_BSP(char *commandp, int size) | |||
90 | mach_sched_init = hw_timer_init; | 90 | mach_sched_init = hw_timer_init; |
91 | m527x_uarts_init(); | 91 | m527x_uarts_init(); |
92 | m527x_fec_init(); | 92 | m527x_fec_init(); |
93 | #ifdef CONFIG_SPI_COLDFIRE_QSPI | 93 | #if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) |
94 | m527x_qspi_init(); | 94 | m527x_qspi_init(); |
95 | #endif | 95 | #endif |
96 | } | 96 | } |
diff --git a/arch/m68k/platform/528x/config.c b/arch/m68k/platform/528x/config.c index d4492926614c..c5f11ba49be5 100644 --- a/arch/m68k/platform/528x/config.c +++ b/arch/m68k/platform/528x/config.c | |||
@@ -24,7 +24,7 @@ | |||
24 | 24 | ||
25 | /***************************************************************************/ | 25 | /***************************************************************************/ |
26 | 26 | ||
27 | #ifdef CONFIG_SPI_COLDFIRE_QSPI | 27 | #if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) |
28 | 28 | ||
29 | static void __init m528x_qspi_init(void) | 29 | static void __init m528x_qspi_init(void) |
30 | { | 30 | { |
@@ -32,7 +32,7 @@ static void __init m528x_qspi_init(void) | |||
32 | __raw_writeb(0x07, MCFGPIO_PQSPAR); | 32 | __raw_writeb(0x07, MCFGPIO_PQSPAR); |
33 | } | 33 | } |
34 | 34 | ||
35 | #endif /* CONFIG_SPI_COLDFIRE_QSPI */ | 35 | #endif /* IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) */ |
36 | 36 | ||
37 | /***************************************************************************/ | 37 | /***************************************************************************/ |
38 | 38 | ||
@@ -98,7 +98,7 @@ void __init config_BSP(char *commandp, int size) | |||
98 | mach_sched_init = hw_timer_init; | 98 | mach_sched_init = hw_timer_init; |
99 | m528x_uarts_init(); | 99 | m528x_uarts_init(); |
100 | m528x_fec_init(); | 100 | m528x_fec_init(); |
101 | #ifdef CONFIG_SPI_COLDFIRE_QSPI | 101 | #if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) |
102 | m528x_qspi_init(); | 102 | m528x_qspi_init(); |
103 | #endif | 103 | #endif |
104 | } | 104 | } |
diff --git a/arch/m68k/platform/532x/config.c b/arch/m68k/platform/532x/config.c index 2bec3477b739..37082d02f2bd 100644 --- a/arch/m68k/platform/532x/config.c +++ b/arch/m68k/platform/532x/config.c | |||
@@ -30,7 +30,7 @@ | |||
30 | 30 | ||
31 | /***************************************************************************/ | 31 | /***************************************************************************/ |
32 | 32 | ||
33 | #ifdef CONFIG_SPI_COLDFIRE_QSPI | 33 | #if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) |
34 | 34 | ||
35 | static void __init m532x_qspi_init(void) | 35 | static void __init m532x_qspi_init(void) |
36 | { | 36 | { |
@@ -38,7 +38,7 @@ static void __init m532x_qspi_init(void) | |||
38 | writew(0x01f0, MCF_GPIO_PAR_QSPI); | 38 | writew(0x01f0, MCF_GPIO_PAR_QSPI); |
39 | } | 39 | } |
40 | 40 | ||
41 | #endif /* CONFIG_SPI_COLDFIRE_QSPI */ | 41 | #endif /* IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) */ |
42 | 42 | ||
43 | /***************************************************************************/ | 43 | /***************************************************************************/ |
44 | 44 | ||
@@ -77,7 +77,7 @@ void __init config_BSP(char *commandp, int size) | |||
77 | mach_sched_init = hw_timer_init; | 77 | mach_sched_init = hw_timer_init; |
78 | m532x_uarts_init(); | 78 | m532x_uarts_init(); |
79 | m532x_fec_init(); | 79 | m532x_fec_init(); |
80 | #ifdef CONFIG_SPI_COLDFIRE_QSPI | 80 | #if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) |
81 | m532x_qspi_init(); | 81 | m532x_qspi_init(); |
82 | #endif | 82 | #endif |
83 | 83 | ||
diff --git a/arch/m68k/platform/coldfire/device.c b/arch/m68k/platform/coldfire/device.c index 7af97362b95c..3aa77ddea89d 100644 --- a/arch/m68k/platform/coldfire/device.c +++ b/arch/m68k/platform/coldfire/device.c | |||
@@ -121,7 +121,7 @@ static struct platform_device mcf_fec1 = { | |||
121 | #endif /* MCFFEC_BASE1 */ | 121 | #endif /* MCFFEC_BASE1 */ |
122 | #endif /* CONFIG_FEC */ | 122 | #endif /* CONFIG_FEC */ |
123 | 123 | ||
124 | #ifdef CONFIG_SPI_COLDFIRE_QSPI | 124 | #if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) |
125 | /* | 125 | /* |
126 | * The ColdFire QSPI module is an SPI protocol hardware block used | 126 | * The ColdFire QSPI module is an SPI protocol hardware block used |
127 | * on a number of different ColdFire CPUs. | 127 | * on a number of different ColdFire CPUs. |
@@ -274,7 +274,7 @@ static struct platform_device mcf_qspi = { | |||
274 | .resource = mcf_qspi_resources, | 274 | .resource = mcf_qspi_resources, |
275 | .dev.platform_data = &mcf_qspi_data, | 275 | .dev.platform_data = &mcf_qspi_data, |
276 | }; | 276 | }; |
277 | #endif /* CONFIG_SPI_COLDFIRE_QSPI */ | 277 | #endif /* IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) */ |
278 | 278 | ||
279 | static struct platform_device *mcf_devices[] __initdata = { | 279 | static struct platform_device *mcf_devices[] __initdata = { |
280 | &mcf_uart, | 280 | &mcf_uart, |
@@ -284,7 +284,7 @@ static struct platform_device *mcf_devices[] __initdata = { | |||
284 | &mcf_fec1, | 284 | &mcf_fec1, |
285 | #endif | 285 | #endif |
286 | #endif | 286 | #endif |
287 | #ifdef CONFIG_SPI_COLDFIRE_QSPI | 287 | #if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) |
288 | &mcf_qspi, | 288 | &mcf_qspi, |
289 | #endif | 289 | #endif |
290 | }; | 290 | }; |
diff --git a/arch/mn10300/kernel/smp.c b/arch/mn10300/kernel/smp.c index 910dddf65e44..9cd69ad6aa02 100644 --- a/arch/mn10300/kernel/smp.c +++ b/arch/mn10300/kernel/smp.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/sched.h> | 24 | #include <linux/sched.h> |
25 | #include <linux/profile.h> | 25 | #include <linux/profile.h> |
26 | #include <linux/smp.h> | 26 | #include <linux/smp.h> |
27 | #include <linux/cpu.h> | ||
27 | #include <asm/tlbflush.h> | 28 | #include <asm/tlbflush.h> |
28 | #include <asm/bitops.h> | 29 | #include <asm/bitops.h> |
29 | #include <asm/processor.h> | 30 | #include <asm/processor.h> |
@@ -38,7 +39,6 @@ | |||
38 | #include "internal.h" | 39 | #include "internal.h" |
39 | 40 | ||
40 | #ifdef CONFIG_HOTPLUG_CPU | 41 | #ifdef CONFIG_HOTPLUG_CPU |
41 | #include <linux/cpu.h> | ||
42 | #include <asm/cacheflush.h> | 42 | #include <asm/cacheflush.h> |
43 | 43 | ||
44 | static unsigned long sleep_mode[NR_CPUS]; | 44 | static unsigned long sleep_mode[NR_CPUS]; |
@@ -874,10 +874,13 @@ static void __init smp_online(void) | |||
874 | 874 | ||
875 | cpu = smp_processor_id(); | 875 | cpu = smp_processor_id(); |
876 | 876 | ||
877 | local_irq_enable(); | 877 | notify_cpu_starting(cpu); |
878 | 878 | ||
879 | ipi_call_lock(); | ||
879 | set_cpu_online(cpu, true); | 880 | set_cpu_online(cpu, true); |
880 | smp_wmb(); | 881 | ipi_call_unlock(); |
882 | |||
883 | local_irq_enable(); | ||
881 | } | 884 | } |
882 | 885 | ||
883 | /** | 886 | /** |
diff --git a/arch/parisc/include/asm/hardware.h b/arch/parisc/include/asm/hardware.h index 4e9626836bab..d1d864b81bae 100644 --- a/arch/parisc/include/asm/hardware.h +++ b/arch/parisc/include/asm/hardware.h | |||
@@ -2,7 +2,6 @@ | |||
2 | #define _PARISC_HARDWARE_H | 2 | #define _PARISC_HARDWARE_H |
3 | 3 | ||
4 | #include <linux/mod_devicetable.h> | 4 | #include <linux/mod_devicetable.h> |
5 | #include <asm/pdc.h> | ||
6 | 5 | ||
7 | #define HWTYPE_ANY_ID PA_HWTYPE_ANY_ID | 6 | #define HWTYPE_ANY_ID PA_HWTYPE_ANY_ID |
8 | #define HVERSION_ANY_ID PA_HVERSION_ANY_ID | 7 | #define HVERSION_ANY_ID PA_HVERSION_ANY_ID |
@@ -95,12 +94,14 @@ struct bc_module { | |||
95 | #define HPHW_MC 15 | 94 | #define HPHW_MC 15 |
96 | #define HPHW_FAULTY 31 | 95 | #define HPHW_FAULTY 31 |
97 | 96 | ||
97 | struct parisc_device_id; | ||
98 | 98 | ||
99 | /* hardware.c: */ | 99 | /* hardware.c: */ |
100 | extern const char *parisc_hardware_description(struct parisc_device_id *id); | 100 | extern const char *parisc_hardware_description(struct parisc_device_id *id); |
101 | extern enum cpu_type parisc_get_cpu_type(unsigned long hversion); | 101 | extern enum cpu_type parisc_get_cpu_type(unsigned long hversion); |
102 | 102 | ||
103 | struct pci_dev; | 103 | struct pci_dev; |
104 | struct hardware_path; | ||
104 | 105 | ||
105 | /* drivers.c: */ | 106 | /* drivers.c: */ |
106 | extern struct parisc_device *alloc_pa_dev(unsigned long hpa, | 107 | extern struct parisc_device *alloc_pa_dev(unsigned long hpa, |
diff --git a/arch/parisc/include/asm/page.h b/arch/parisc/include/asm/page.h index a84cc1f925f6..4e0e7dbf0f3f 100644 --- a/arch/parisc/include/asm/page.h +++ b/arch/parisc/include/asm/page.h | |||
@@ -160,5 +160,11 @@ extern int npmem_ranges; | |||
160 | 160 | ||
161 | #include <asm-generic/memory_model.h> | 161 | #include <asm-generic/memory_model.h> |
162 | #include <asm-generic/getorder.h> | 162 | #include <asm-generic/getorder.h> |
163 | #include <asm/pdc.h> | ||
164 | |||
165 | #define PAGE0 ((struct zeropage *)__PAGE_OFFSET) | ||
166 | |||
167 | /* DEFINITION OF THE ZERO-PAGE (PAG0) */ | ||
168 | /* based on work by Jason Eckhardt (jason@equator.com) */ | ||
163 | 169 | ||
164 | #endif /* _PARISC_PAGE_H */ | 170 | #endif /* _PARISC_PAGE_H */ |
diff --git a/arch/parisc/include/asm/pdc.h b/arch/parisc/include/asm/pdc.h index 4ca510b3c6f8..7f0f2d23059d 100644 --- a/arch/parisc/include/asm/pdc.h +++ b/arch/parisc/include/asm/pdc.h | |||
@@ -343,8 +343,6 @@ | |||
343 | 343 | ||
344 | #ifdef __KERNEL__ | 344 | #ifdef __KERNEL__ |
345 | 345 | ||
346 | #include <asm/page.h> /* for __PAGE_OFFSET */ | ||
347 | |||
348 | extern int pdc_type; | 346 | extern int pdc_type; |
349 | 347 | ||
350 | /* Values for pdc_type */ | 348 | /* Values for pdc_type */ |
@@ -677,11 +675,6 @@ static inline char * os_id_to_string(u16 os_id) { | |||
677 | 675 | ||
678 | #endif /* __KERNEL__ */ | 676 | #endif /* __KERNEL__ */ |
679 | 677 | ||
680 | #define PAGE0 ((struct zeropage *)__PAGE_OFFSET) | ||
681 | |||
682 | /* DEFINITION OF THE ZERO-PAGE (PAG0) */ | ||
683 | /* based on work by Jason Eckhardt (jason@equator.com) */ | ||
684 | |||
685 | /* flags of the device_path */ | 678 | /* flags of the device_path */ |
686 | #define PF_AUTOBOOT 0x80 | 679 | #define PF_AUTOBOOT 0x80 |
687 | #define PF_AUTOSEARCH 0x40 | 680 | #define PF_AUTOSEARCH 0x40 |
diff --git a/arch/parisc/include/asm/pgtable.h b/arch/parisc/include/asm/pgtable.h index 22dadeb58695..ee99f2339356 100644 --- a/arch/parisc/include/asm/pgtable.h +++ b/arch/parisc/include/asm/pgtable.h | |||
@@ -44,6 +44,8 @@ struct vm_area_struct; | |||
44 | 44 | ||
45 | #endif /* !__ASSEMBLY__ */ | 45 | #endif /* !__ASSEMBLY__ */ |
46 | 46 | ||
47 | #include <asm/page.h> | ||
48 | |||
47 | #define pte_ERROR(e) \ | 49 | #define pte_ERROR(e) \ |
48 | printk("%s:%d: bad pte %08lx.\n", __FILE__, __LINE__, pte_val(e)) | 50 | printk("%s:%d: bad pte %08lx.\n", __FILE__, __LINE__, pte_val(e)) |
49 | #define pmd_ERROR(e) \ | 51 | #define pmd_ERROR(e) \ |
diff --git a/arch/parisc/include/asm/spinlock.h b/arch/parisc/include/asm/spinlock.h index 804aa28ab1d6..3516e0b27044 100644 --- a/arch/parisc/include/asm/spinlock.h +++ b/arch/parisc/include/asm/spinlock.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef __ASM_SPINLOCK_H | 1 | #ifndef __ASM_SPINLOCK_H |
2 | #define __ASM_SPINLOCK_H | 2 | #define __ASM_SPINLOCK_H |
3 | 3 | ||
4 | #include <asm/barrier.h> | ||
5 | #include <asm/ldcw.h> | ||
4 | #include <asm/processor.h> | 6 | #include <asm/processor.h> |
5 | #include <asm/spinlock_types.h> | 7 | #include <asm/spinlock_types.h> |
6 | 8 | ||
diff --git a/arch/parisc/kernel/pdc_cons.c b/arch/parisc/kernel/pdc_cons.c index 0b3393381a81..47341aa208f2 100644 --- a/arch/parisc/kernel/pdc_cons.c +++ b/arch/parisc/kernel/pdc_cons.c | |||
@@ -50,6 +50,7 @@ | |||
50 | #include <linux/init.h> | 50 | #include <linux/init.h> |
51 | #include <linux/major.h> | 51 | #include <linux/major.h> |
52 | #include <linux/tty.h> | 52 | #include <linux/tty.h> |
53 | #include <asm/page.h> /* for PAGE0 */ | ||
53 | #include <asm/pdc.h> /* for iodc_call() proto and friends */ | 54 | #include <asm/pdc.h> /* for iodc_call() proto and friends */ |
54 | 55 | ||
55 | static DEFINE_SPINLOCK(pdc_console_lock); | 56 | static DEFINE_SPINLOCK(pdc_console_lock); |
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c index 0bb1d63907f8..4dc7b7942b4c 100644 --- a/arch/parisc/kernel/smp.c +++ b/arch/parisc/kernel/smp.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/delay.h> | 31 | #include <linux/delay.h> |
32 | #include <linux/bitops.h> | 32 | #include <linux/bitops.h> |
33 | #include <linux/ftrace.h> | 33 | #include <linux/ftrace.h> |
34 | #include <linux/cpu.h> | ||
34 | 35 | ||
35 | #include <linux/atomic.h> | 36 | #include <linux/atomic.h> |
36 | #include <asm/current.h> | 37 | #include <asm/current.h> |
@@ -295,8 +296,13 @@ smp_cpu_init(int cpunum) | |||
295 | 296 | ||
296 | printk(KERN_CRIT "CPU#%d already initialized!\n", cpunum); | 297 | printk(KERN_CRIT "CPU#%d already initialized!\n", cpunum); |
297 | machine_halt(); | 298 | machine_halt(); |
298 | } | 299 | } |
300 | |||
301 | notify_cpu_starting(cpunum); | ||
302 | |||
303 | ipi_call_lock(); | ||
299 | set_cpu_online(cpunum, true); | 304 | set_cpu_online(cpunum, true); |
305 | ipi_call_unlock(); | ||
300 | 306 | ||
301 | /* Initialise the idle task for this CPU */ | 307 | /* Initialise the idle task for this CPU */ |
302 | atomic_inc(&init_mm.mm_count); | 308 | atomic_inc(&init_mm.mm_count); |
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c index 7c0774397b89..70e105d62423 100644 --- a/arch/parisc/kernel/time.c +++ b/arch/parisc/kernel/time.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <asm/uaccess.h> | 29 | #include <asm/uaccess.h> |
30 | #include <asm/io.h> | 30 | #include <asm/io.h> |
31 | #include <asm/irq.h> | 31 | #include <asm/irq.h> |
32 | #include <asm/page.h> | ||
32 | #include <asm/param.h> | 33 | #include <asm/param.h> |
33 | #include <asm/pdc.h> | 34 | #include <asm/pdc.h> |
34 | #include <asm/led.h> | 35 | #include <asm/led.h> |
diff --git a/arch/powerpc/include/asm/kvm_book3s.h b/arch/powerpc/include/asm/kvm_book3s.h index aa795ccef294..fd07f43d6622 100644 --- a/arch/powerpc/include/asm/kvm_book3s.h +++ b/arch/powerpc/include/asm/kvm_book3s.h | |||
@@ -81,12 +81,13 @@ struct kvmppc_vcpu_book3s { | |||
81 | u64 sdr1; | 81 | u64 sdr1; |
82 | u64 hior; | 82 | u64 hior; |
83 | u64 msr_mask; | 83 | u64 msr_mask; |
84 | u64 vsid_next; | ||
85 | #ifdef CONFIG_PPC_BOOK3S_32 | 84 | #ifdef CONFIG_PPC_BOOK3S_32 |
86 | u32 vsid_pool[VSID_POOL_SIZE]; | 85 | u32 vsid_pool[VSID_POOL_SIZE]; |
86 | u32 vsid_next; | ||
87 | #else | 87 | #else |
88 | u64 vsid_first; | 88 | u64 proto_vsid_first; |
89 | u64 vsid_max; | 89 | u64 proto_vsid_max; |
90 | u64 proto_vsid_next; | ||
90 | #endif | 91 | #endif |
91 | int context_id[SID_CONTEXTS]; | 92 | int context_id[SID_CONTEXTS]; |
92 | 93 | ||
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index fc6015027a86..ef2074c3e906 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S | |||
@@ -588,23 +588,19 @@ _GLOBAL(ret_from_except_lite) | |||
588 | fast_exc_return_irq: | 588 | fast_exc_return_irq: |
589 | restore: | 589 | restore: |
590 | /* | 590 | /* |
591 | * This is the main kernel exit path, we first check if we | 591 | * This is the main kernel exit path. First we check if we |
592 | * have to change our interrupt state. | 592 | * are about to re-enable interrupts |
593 | */ | 593 | */ |
594 | ld r5,SOFTE(r1) | 594 | ld r5,SOFTE(r1) |
595 | lbz r6,PACASOFTIRQEN(r13) | 595 | lbz r6,PACASOFTIRQEN(r13) |
596 | cmpwi cr1,r5,0 | 596 | cmpwi cr0,r5,0 |
597 | cmpw cr0,r5,r6 | 597 | beq restore_irq_off |
598 | beq cr0,4f | ||
599 | 598 | ||
600 | /* We do, handle disable first, which is easy */ | 599 | /* We are enabling, were we already enabled ? Yes, just return */ |
601 | bne cr1,3f; | 600 | cmpwi cr0,r6,1 |
602 | li r0,0 | 601 | beq cr0,do_restore |
603 | stb r0,PACASOFTIRQEN(r13); | ||
604 | TRACE_DISABLE_INTS | ||
605 | b 4f | ||
606 | 602 | ||
607 | 3: /* | 603 | /* |
608 | * We are about to soft-enable interrupts (we are hard disabled | 604 | * We are about to soft-enable interrupts (we are hard disabled |
609 | * at this point). We check if there's anything that needs to | 605 | * at this point). We check if there's anything that needs to |
610 | * be replayed first. | 606 | * be replayed first. |
@@ -626,7 +622,7 @@ restore_no_replay: | |||
626 | /* | 622 | /* |
627 | * Final return path. BookE is handled in a different file | 623 | * Final return path. BookE is handled in a different file |
628 | */ | 624 | */ |
629 | 4: | 625 | do_restore: |
630 | #ifdef CONFIG_PPC_BOOK3E | 626 | #ifdef CONFIG_PPC_BOOK3E |
631 | b .exception_return_book3e | 627 | b .exception_return_book3e |
632 | #else | 628 | #else |
@@ -700,6 +696,25 @@ fast_exception_return: | |||
700 | #endif /* CONFIG_PPC_BOOK3E */ | 696 | #endif /* CONFIG_PPC_BOOK3E */ |
701 | 697 | ||
702 | /* | 698 | /* |
699 | * We are returning to a context with interrupts soft disabled. | ||
700 | * | ||
701 | * However, we may also about to hard enable, so we need to | ||
702 | * make sure that in this case, we also clear PACA_IRQ_HARD_DIS | ||
703 | * or that bit can get out of sync and bad things will happen | ||
704 | */ | ||
705 | restore_irq_off: | ||
706 | ld r3,_MSR(r1) | ||
707 | lbz r7,PACAIRQHAPPENED(r13) | ||
708 | andi. r0,r3,MSR_EE | ||
709 | beq 1f | ||
710 | rlwinm r7,r7,0,~PACA_IRQ_HARD_DIS | ||
711 | stb r7,PACAIRQHAPPENED(r13) | ||
712 | 1: li r0,0 | ||
713 | stb r0,PACASOFTIRQEN(r13); | ||
714 | TRACE_DISABLE_INTS | ||
715 | b do_restore | ||
716 | |||
717 | /* | ||
703 | * Something did happen, check if a re-emit is needed | 718 | * Something did happen, check if a re-emit is needed |
704 | * (this also clears paca->irq_happened) | 719 | * (this also clears paca->irq_happened) |
705 | */ | 720 | */ |
@@ -748,6 +763,9 @@ restore_check_irq_replay: | |||
748 | #endif /* CONFIG_PPC_BOOK3E */ | 763 | #endif /* CONFIG_PPC_BOOK3E */ |
749 | 1: b .ret_from_except /* What else to do here ? */ | 764 | 1: b .ret_from_except /* What else to do here ? */ |
750 | 765 | ||
766 | |||
767 | |||
768 | 3: | ||
751 | do_work: | 769 | do_work: |
752 | #ifdef CONFIG_PREEMPT | 770 | #ifdef CONFIG_PREEMPT |
753 | andi. r0,r3,MSR_PR /* Returning to user mode? */ | 771 | andi. r0,r3,MSR_PR /* Returning to user mode? */ |
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c index c6c6f3b7f8cd..641da9e868ce 100644 --- a/arch/powerpc/kernel/irq.c +++ b/arch/powerpc/kernel/irq.c | |||
@@ -229,6 +229,19 @@ notrace void arch_local_irq_restore(unsigned long en) | |||
229 | */ | 229 | */ |
230 | if (unlikely(irq_happened != PACA_IRQ_HARD_DIS)) | 230 | if (unlikely(irq_happened != PACA_IRQ_HARD_DIS)) |
231 | __hard_irq_disable(); | 231 | __hard_irq_disable(); |
232 | #ifdef CONFIG_TRACE_IRQFLAG | ||
233 | else { | ||
234 | /* | ||
235 | * We should already be hard disabled here. We had bugs | ||
236 | * where that wasn't the case so let's dbl check it and | ||
237 | * warn if we are wrong. Only do that when IRQ tracing | ||
238 | * is enabled as mfmsr() can be costly. | ||
239 | */ | ||
240 | if (WARN_ON(mfmsr() & MSR_EE)) | ||
241 | __hard_irq_disable(); | ||
242 | } | ||
243 | #endif /* CONFIG_TRACE_IRQFLAG */ | ||
244 | |||
232 | set_soft_enabled(0); | 245 | set_soft_enabled(0); |
233 | 246 | ||
234 | /* | 247 | /* |
diff --git a/arch/powerpc/kvm/book3s_64_mmu_host.c b/arch/powerpc/kvm/book3s_64_mmu_host.c index 6f87f39a1ac2..10fc8ec9d2a8 100644 --- a/arch/powerpc/kvm/book3s_64_mmu_host.c +++ b/arch/powerpc/kvm/book3s_64_mmu_host.c | |||
@@ -194,14 +194,14 @@ static struct kvmppc_sid_map *create_sid_map(struct kvm_vcpu *vcpu, u64 gvsid) | |||
194 | backwards_map = !backwards_map; | 194 | backwards_map = !backwards_map; |
195 | 195 | ||
196 | /* Uh-oh ... out of mappings. Let's flush! */ | 196 | /* Uh-oh ... out of mappings. Let's flush! */ |
197 | if (vcpu_book3s->vsid_next == vcpu_book3s->vsid_max) { | 197 | if (vcpu_book3s->proto_vsid_next == vcpu_book3s->proto_vsid_max) { |
198 | vcpu_book3s->vsid_next = vcpu_book3s->vsid_first; | 198 | vcpu_book3s->proto_vsid_next = vcpu_book3s->proto_vsid_first; |
199 | memset(vcpu_book3s->sid_map, 0, | 199 | memset(vcpu_book3s->sid_map, 0, |
200 | sizeof(struct kvmppc_sid_map) * SID_MAP_NUM); | 200 | sizeof(struct kvmppc_sid_map) * SID_MAP_NUM); |
201 | kvmppc_mmu_pte_flush(vcpu, 0, 0); | 201 | kvmppc_mmu_pte_flush(vcpu, 0, 0); |
202 | kvmppc_mmu_flush_segments(vcpu); | 202 | kvmppc_mmu_flush_segments(vcpu); |
203 | } | 203 | } |
204 | map->host_vsid = vcpu_book3s->vsid_next++; | 204 | map->host_vsid = vsid_scramble(vcpu_book3s->proto_vsid_next++, 256M); |
205 | 205 | ||
206 | map->guest_vsid = gvsid; | 206 | map->guest_vsid = gvsid; |
207 | map->valid = true; | 207 | map->valid = true; |
@@ -319,9 +319,10 @@ int kvmppc_mmu_init(struct kvm_vcpu *vcpu) | |||
319 | return -1; | 319 | return -1; |
320 | vcpu3s->context_id[0] = err; | 320 | vcpu3s->context_id[0] = err; |
321 | 321 | ||
322 | vcpu3s->vsid_max = ((vcpu3s->context_id[0] + 1) << USER_ESID_BITS) - 1; | 322 | vcpu3s->proto_vsid_max = ((vcpu3s->context_id[0] + 1) |
323 | vcpu3s->vsid_first = vcpu3s->context_id[0] << USER_ESID_BITS; | 323 | << USER_ESID_BITS) - 1; |
324 | vcpu3s->vsid_next = vcpu3s->vsid_first; | 324 | vcpu3s->proto_vsid_first = vcpu3s->context_id[0] << USER_ESID_BITS; |
325 | vcpu3s->proto_vsid_next = vcpu3s->proto_vsid_first; | ||
325 | 326 | ||
326 | kvmppc_mmu_hpte_init(vcpu); | 327 | kvmppc_mmu_hpte_init(vcpu); |
327 | 328 | ||
diff --git a/arch/powerpc/kvm/book3s_hv_rm_mmu.c b/arch/powerpc/kvm/book3s_hv_rm_mmu.c index def880aea63a..cec4daddbf31 100644 --- a/arch/powerpc/kvm/book3s_hv_rm_mmu.c +++ b/arch/powerpc/kvm/book3s_hv_rm_mmu.c | |||
@@ -463,6 +463,7 @@ long kvmppc_h_bulk_remove(struct kvm_vcpu *vcpu) | |||
463 | /* insert R and C bits from PTE */ | 463 | /* insert R and C bits from PTE */ |
464 | rcbits = rev->guest_rpte & (HPTE_R_R|HPTE_R_C); | 464 | rcbits = rev->guest_rpte & (HPTE_R_R|HPTE_R_C); |
465 | args[j] |= rcbits << (56 - 5); | 465 | args[j] |= rcbits << (56 - 5); |
466 | hp[0] = 0; | ||
466 | continue; | 467 | continue; |
467 | } | 468 | } |
468 | 469 | ||
diff --git a/arch/powerpc/kvm/book3s_segment.S b/arch/powerpc/kvm/book3s_segment.S index 0676ae249b9f..6e6e9cef34a8 100644 --- a/arch/powerpc/kvm/book3s_segment.S +++ b/arch/powerpc/kvm/book3s_segment.S | |||
@@ -197,7 +197,8 @@ kvmppc_interrupt: | |||
197 | /* Save guest PC and MSR */ | 197 | /* Save guest PC and MSR */ |
198 | #ifdef CONFIG_PPC64 | 198 | #ifdef CONFIG_PPC64 |
199 | BEGIN_FTR_SECTION | 199 | BEGIN_FTR_SECTION |
200 | andi. r0,r12,0x2 | 200 | andi. r0, r12, 0x2 |
201 | cmpwi cr1, r0, 0 | ||
201 | beq 1f | 202 | beq 1f |
202 | mfspr r3,SPRN_HSRR0 | 203 | mfspr r3,SPRN_HSRR0 |
203 | mfspr r4,SPRN_HSRR1 | 204 | mfspr r4,SPRN_HSRR1 |
@@ -250,6 +251,12 @@ END_FTR_SECTION_IFSET(CPU_FTR_HVMODE) | |||
250 | beq ld_last_prev_inst | 251 | beq ld_last_prev_inst |
251 | cmpwi r12, BOOK3S_INTERRUPT_ALIGNMENT | 252 | cmpwi r12, BOOK3S_INTERRUPT_ALIGNMENT |
252 | beq- ld_last_inst | 253 | beq- ld_last_inst |
254 | #ifdef CONFIG_PPC64 | ||
255 | BEGIN_FTR_SECTION | ||
256 | cmpwi r12, BOOK3S_INTERRUPT_H_EMUL_ASSIST | ||
257 | beq- ld_last_inst | ||
258 | END_FTR_SECTION_IFSET(CPU_FTR_HVMODE) | ||
259 | #endif | ||
253 | 260 | ||
254 | b no_ld_last_inst | 261 | b no_ld_last_inst |
255 | 262 | ||
@@ -316,23 +323,17 @@ no_dcbz32_off: | |||
316 | * Having set up SRR0/1 with the address where we want | 323 | * Having set up SRR0/1 with the address where we want |
317 | * to continue with relocation on (potentially in module | 324 | * to continue with relocation on (potentially in module |
318 | * space), we either just go straight there with rfi[d], | 325 | * space), we either just go straight there with rfi[d], |
319 | * or we jump to an interrupt handler with bctr if there | 326 | * or we jump to an interrupt handler if there is an |
320 | * is an interrupt to be handled first. In the latter | 327 | * interrupt to be handled first. In the latter case, |
321 | * case, the rfi[d] at the end of the interrupt handler | 328 | * the rfi[d] at the end of the interrupt handler will |
322 | * will get us back to where we want to continue. | 329 | * get us back to where we want to continue. |
323 | */ | 330 | */ |
324 | 331 | ||
325 | cmpwi r12, BOOK3S_INTERRUPT_EXTERNAL | ||
326 | beq 1f | ||
327 | cmpwi r12, BOOK3S_INTERRUPT_DECREMENTER | ||
328 | beq 1f | ||
329 | cmpwi r12, BOOK3S_INTERRUPT_PERFMON | ||
330 | 1: mtctr r12 | ||
331 | |||
332 | /* Register usage at this point: | 332 | /* Register usage at this point: |
333 | * | 333 | * |
334 | * R1 = host R1 | 334 | * R1 = host R1 |
335 | * R2 = host R2 | 335 | * R2 = host R2 |
336 | * R10 = raw exit handler id | ||
336 | * R12 = exit handler id | 337 | * R12 = exit handler id |
337 | * R13 = shadow vcpu (32-bit) or PACA (64-bit) | 338 | * R13 = shadow vcpu (32-bit) or PACA (64-bit) |
338 | * SVCPU.* = guest * | 339 | * SVCPU.* = guest * |
@@ -342,12 +343,25 @@ no_dcbz32_off: | |||
342 | PPC_LL r6, HSTATE_HOST_MSR(r13) | 343 | PPC_LL r6, HSTATE_HOST_MSR(r13) |
343 | PPC_LL r8, HSTATE_VMHANDLER(r13) | 344 | PPC_LL r8, HSTATE_VMHANDLER(r13) |
344 | 345 | ||
345 | /* Restore host msr -> SRR1 */ | 346 | #ifdef CONFIG_PPC64 |
347 | BEGIN_FTR_SECTION | ||
348 | beq cr1, 1f | ||
349 | mtspr SPRN_HSRR1, r6 | ||
350 | mtspr SPRN_HSRR0, r8 | ||
351 | END_FTR_SECTION_IFSET(CPU_FTR_HVMODE) | ||
352 | #endif | ||
353 | 1: /* Restore host msr -> SRR1 */ | ||
346 | mtsrr1 r6 | 354 | mtsrr1 r6 |
347 | /* Load highmem handler address */ | 355 | /* Load highmem handler address */ |
348 | mtsrr0 r8 | 356 | mtsrr0 r8 |
349 | 357 | ||
350 | /* RFI into the highmem handler, or jump to interrupt handler */ | 358 | /* RFI into the highmem handler, or jump to interrupt handler */ |
351 | beqctr | 359 | cmpwi r12, BOOK3S_INTERRUPT_EXTERNAL |
360 | beqa BOOK3S_INTERRUPT_EXTERNAL | ||
361 | cmpwi r12, BOOK3S_INTERRUPT_DECREMENTER | ||
362 | beqa BOOK3S_INTERRUPT_DECREMENTER | ||
363 | cmpwi r12, BOOK3S_INTERRUPT_PERFMON | ||
364 | beqa BOOK3S_INTERRUPT_PERFMON | ||
365 | |||
352 | RFI | 366 | RFI |
353 | kvmppc_handler_trampoline_exit_end: | 367 | kvmppc_handler_trampoline_exit_end: |
diff --git a/arch/sh/boards/board-edosk7705.c b/arch/sh/boards/board-edosk7705.c index 541d8a281035..0a531a1f6e23 100644 --- a/arch/sh/boards/board-edosk7705.c +++ b/arch/sh/boards/board-edosk7705.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
14 | #include <linux/interrupt.h> | 14 | #include <linux/interrupt.h> |
15 | #include <linux/smc91x.h> | 15 | #include <linux/smc91x.h> |
16 | #include <linux/sh_intc.h> | ||
16 | #include <asm/machvec.h> | 17 | #include <asm/machvec.h> |
17 | #include <asm/sizes.h> | 18 | #include <asm/sizes.h> |
18 | 19 | ||
@@ -20,7 +21,7 @@ | |||
20 | #define SMC_IO_OFFSET 0x300 | 21 | #define SMC_IO_OFFSET 0x300 |
21 | #define SMC_IOADDR (SMC_IOBASE + SMC_IO_OFFSET) | 22 | #define SMC_IOADDR (SMC_IOBASE + SMC_IO_OFFSET) |
22 | 23 | ||
23 | #define ETHERNET_IRQ 0x09 | 24 | #define ETHERNET_IRQ evt2irq(0x320) |
24 | 25 | ||
25 | static void __init sh_edosk7705_init_irq(void) | 26 | static void __init sh_edosk7705_init_irq(void) |
26 | { | 27 | { |
diff --git a/arch/sh/boards/board-edosk7760.c b/arch/sh/boards/board-edosk7760.c index e9656a2cc4cc..d4871d274fb9 100644 --- a/arch/sh/boards/board-edosk7760.c +++ b/arch/sh/boards/board-edosk7760.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <linux/platform_device.h> | 23 | #include <linux/platform_device.h> |
24 | #include <linux/smc91x.h> | 24 | #include <linux/smc91x.h> |
25 | #include <linux/interrupt.h> | 25 | #include <linux/interrupt.h> |
26 | #include <linux/sh_intc.h> | ||
26 | #include <linux/i2c.h> | 27 | #include <linux/i2c.h> |
27 | #include <linux/mtd/physmap.h> | 28 | #include <linux/mtd/physmap.h> |
28 | #include <asm/machvec.h> | 29 | #include <asm/machvec.h> |
@@ -40,8 +41,6 @@ | |||
40 | #define SMC_IO_OFFSET 0x300 | 41 | #define SMC_IO_OFFSET 0x300 |
41 | #define SMC_IOADDR (SMC_IOBASE + SMC_IO_OFFSET) | 42 | #define SMC_IOADDR (SMC_IOBASE + SMC_IO_OFFSET) |
42 | 43 | ||
43 | #define ETHERNET_IRQ 5 | ||
44 | |||
45 | /* NOR flash */ | 44 | /* NOR flash */ |
46 | static struct mtd_partition edosk7760_nor_flash_partitions[] = { | 45 | static struct mtd_partition edosk7760_nor_flash_partitions[] = { |
47 | { | 46 | { |
@@ -99,8 +98,8 @@ static struct resource sh7760_i2c1_res[] = { | |||
99 | .end = SH7760_I2C1_MMIOEND, | 98 | .end = SH7760_I2C1_MMIOEND, |
100 | .flags = IORESOURCE_MEM, | 99 | .flags = IORESOURCE_MEM, |
101 | },{ | 100 | },{ |
102 | .start = SH7760_I2C1_IRQ, | 101 | .start = evt2irq(0x9e0), |
103 | .end = SH7760_I2C1_IRQ, | 102 | .end = evt2irq(0x9e0), |
104 | .flags = IORESOURCE_IRQ, | 103 | .flags = IORESOURCE_IRQ, |
105 | }, | 104 | }, |
106 | }; | 105 | }; |
@@ -122,8 +121,8 @@ static struct resource sh7760_i2c0_res[] = { | |||
122 | .end = SH7760_I2C0_MMIOEND, | 121 | .end = SH7760_I2C0_MMIOEND, |
123 | .flags = IORESOURCE_MEM, | 122 | .flags = IORESOURCE_MEM, |
124 | }, { | 123 | }, { |
125 | .start = SH7760_I2C0_IRQ, | 124 | .start = evt2irq(0x9c0), |
126 | .end = SH7760_I2C0_IRQ, | 125 | .end = evt2irq(0x9c0), |
127 | .flags = IORESOURCE_IRQ, | 126 | .flags = IORESOURCE_IRQ, |
128 | }, | 127 | }, |
129 | }; | 128 | }; |
@@ -150,8 +149,8 @@ static struct resource smc91x_res[] = { | |||
150 | .flags = IORESOURCE_MEM, | 149 | .flags = IORESOURCE_MEM, |
151 | }, | 150 | }, |
152 | [1] = { | 151 | [1] = { |
153 | .start = ETHERNET_IRQ, | 152 | .start = evt2irq(0x2a0), |
154 | .end = ETHERNET_IRQ, | 153 | .end = evt2irq(0x2a0), |
155 | .flags = IORESOURCE_IRQ , | 154 | .flags = IORESOURCE_IRQ , |
156 | } | 155 | } |
157 | }; | 156 | }; |
diff --git a/arch/sh/boards/board-espt.c b/arch/sh/boards/board-espt.c index b3ae9d38cbc0..6cba0a7068bc 100644 --- a/arch/sh/boards/board-espt.c +++ b/arch/sh/boards/board-espt.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/mtd/physmap.h> | 14 | #include <linux/mtd/physmap.h> |
15 | #include <linux/io.h> | 15 | #include <linux/io.h> |
16 | #include <linux/sh_eth.h> | 16 | #include <linux/sh_eth.h> |
17 | #include <linux/sh_intc.h> | ||
17 | #include <asm/machvec.h> | 18 | #include <asm/machvec.h> |
18 | #include <asm/sizes.h> | 19 | #include <asm/sizes.h> |
19 | 20 | ||
@@ -71,7 +72,7 @@ static struct resource sh_eth_resources[] = { | |||
71 | .flags = IORESOURCE_MEM, | 72 | .flags = IORESOURCE_MEM, |
72 | }, { | 73 | }, { |
73 | 74 | ||
74 | .start = 57, /* irq number */ | 75 | .start = evt2irq(0x920), /* irq number */ |
75 | .flags = IORESOURCE_IRQ, | 76 | .flags = IORESOURCE_IRQ, |
76 | }, | 77 | }, |
77 | }; | 78 | }; |
diff --git a/arch/sh/boards/board-magicpanelr2.c b/arch/sh/boards/board-magicpanelr2.c index b2ca1d9948fb..90568f9de3a4 100644 --- a/arch/sh/boards/board-magicpanelr2.c +++ b/arch/sh/boards/board-magicpanelr2.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/mtd/partitions.h> | 19 | #include <linux/mtd/partitions.h> |
20 | #include <linux/mtd/physmap.h> | 20 | #include <linux/mtd/physmap.h> |
21 | #include <linux/mtd/map.h> | 21 | #include <linux/mtd/map.h> |
22 | #include <linux/sh_intc.h> | ||
22 | #include <mach/magicpanelr2.h> | 23 | #include <mach/magicpanelr2.h> |
23 | #include <asm/heartbeat.h> | 24 | #include <asm/heartbeat.h> |
24 | #include <cpu/sh7720.h> | 25 | #include <cpu/sh7720.h> |
@@ -245,8 +246,8 @@ static struct resource smsc911x_resources[] = { | |||
245 | .flags = IORESOURCE_MEM, | 246 | .flags = IORESOURCE_MEM, |
246 | }, | 247 | }, |
247 | [1] = { | 248 | [1] = { |
248 | .start = 35, | 249 | .start = evt2irq(0x660), |
249 | .end = 35, | 250 | .end = evt2irq(0x660), |
250 | .flags = IORESOURCE_IRQ, | 251 | .flags = IORESOURCE_IRQ, |
251 | }, | 252 | }, |
252 | }; | 253 | }; |
@@ -358,17 +359,17 @@ static void __init init_mpr2_IRQ(void) | |||
358 | { | 359 | { |
359 | plat_irq_setup_pins(IRQ_MODE_IRQ); /* install handlers for IRQ0-5 */ | 360 | plat_irq_setup_pins(IRQ_MODE_IRQ); /* install handlers for IRQ0-5 */ |
360 | 361 | ||
361 | irq_set_irq_type(32, IRQ_TYPE_LEVEL_LOW); /* IRQ0 CAN1 */ | 362 | irq_set_irq_type(evt2irq(0x600), IRQ_TYPE_LEVEL_LOW); /* IRQ0 CAN1 */ |
362 | irq_set_irq_type(33, IRQ_TYPE_LEVEL_LOW); /* IRQ1 CAN2 */ | 363 | irq_set_irq_type(evt2irq(0x620), IRQ_TYPE_LEVEL_LOW); /* IRQ1 CAN2 */ |
363 | irq_set_irq_type(34, IRQ_TYPE_LEVEL_LOW); /* IRQ2 CAN3 */ | 364 | irq_set_irq_type(evt2irq(0x640), IRQ_TYPE_LEVEL_LOW); /* IRQ2 CAN3 */ |
364 | irq_set_irq_type(35, IRQ_TYPE_LEVEL_LOW); /* IRQ3 SMSC9115 */ | 365 | irq_set_irq_type(evt2irq(0x660), IRQ_TYPE_LEVEL_LOW); /* IRQ3 SMSC9115 */ |
365 | irq_set_irq_type(36, IRQ_TYPE_EDGE_RISING); /* IRQ4 touchscreen */ | 366 | irq_set_irq_type(evt2irq(0x680), IRQ_TYPE_EDGE_RISING); /* IRQ4 touchscreen */ |
366 | irq_set_irq_type(37, IRQ_TYPE_EDGE_FALLING); /* IRQ5 touchscreen */ | 367 | irq_set_irq_type(evt2irq(0x6a0), IRQ_TYPE_EDGE_FALLING); /* IRQ5 touchscreen */ |
367 | 368 | ||
368 | intc_set_priority(32, 13); /* IRQ0 CAN1 */ | 369 | intc_set_priority(evt2irq(0x600), 13); /* IRQ0 CAN1 */ |
369 | intc_set_priority(33, 13); /* IRQ0 CAN2 */ | 370 | intc_set_priority(evt2irq(0x620), 13); /* IRQ0 CAN2 */ |
370 | intc_set_priority(34, 13); /* IRQ0 CAN3 */ | 371 | intc_set_priority(evt2irq(0x640), 13); /* IRQ0 CAN3 */ |
371 | intc_set_priority(35, 6); /* IRQ3 SMSC9115 */ | 372 | intc_set_priority(evt2irq(0x660), 6); /* IRQ3 SMSC9115 */ |
372 | } | 373 | } |
373 | 374 | ||
374 | /* | 375 | /* |
diff --git a/arch/sh/boards/board-sh7757lcr.c b/arch/sh/boards/board-sh7757lcr.c index 24b1ee410daa..5087f8bb4cff 100644 --- a/arch/sh/boards/board-sh7757lcr.c +++ b/arch/sh/boards/board-sh7757lcr.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/mmc/sh_mmcif.h> | 19 | #include <linux/mmc/sh_mmcif.h> |
20 | #include <linux/mmc/sh_mobile_sdhi.h> | 20 | #include <linux/mmc/sh_mobile_sdhi.h> |
21 | #include <linux/sh_eth.h> | 21 | #include <linux/sh_eth.h> |
22 | #include <linux/sh_intc.h> | ||
22 | #include <linux/usb/renesas_usbhs.h> | 23 | #include <linux/usb/renesas_usbhs.h> |
23 | #include <cpu/sh7757.h> | 24 | #include <cpu/sh7757.h> |
24 | #include <asm/heartbeat.h> | 25 | #include <asm/heartbeat.h> |
@@ -65,8 +66,8 @@ static struct resource sh_eth0_resources[] = { | |||
65 | .end = 0xfef001ff, | 66 | .end = 0xfef001ff, |
66 | .flags = IORESOURCE_MEM, | 67 | .flags = IORESOURCE_MEM, |
67 | }, { | 68 | }, { |
68 | .start = 84, | 69 | .start = evt2irq(0xc80), |
69 | .end = 84, | 70 | .end = evt2irq(0xc80), |
70 | .flags = IORESOURCE_IRQ, | 71 | .flags = IORESOURCE_IRQ, |
71 | }, | 72 | }, |
72 | }; | 73 | }; |
@@ -94,8 +95,8 @@ static struct resource sh_eth1_resources[] = { | |||
94 | .end = 0xfef009ff, | 95 | .end = 0xfef009ff, |
95 | .flags = IORESOURCE_MEM, | 96 | .flags = IORESOURCE_MEM, |
96 | }, { | 97 | }, { |
97 | .start = 84, | 98 | .start = evt2irq(0xc80), |
98 | .end = 84, | 99 | .end = evt2irq(0xc80), |
99 | .flags = IORESOURCE_IRQ, | 100 | .flags = IORESOURCE_IRQ, |
100 | }, | 101 | }, |
101 | }; | 102 | }; |
@@ -139,8 +140,8 @@ static struct resource sh_eth_giga0_resources[] = { | |||
139 | .end = 0xfee01fff, | 140 | .end = 0xfee01fff, |
140 | .flags = IORESOURCE_MEM, | 141 | .flags = IORESOURCE_MEM, |
141 | }, { | 142 | }, { |
142 | .start = 315, | 143 | .start = evt2irq(0x2960), |
143 | .end = 315, | 144 | .end = evt2irq(0x2960), |
144 | .flags = IORESOURCE_IRQ, | 145 | .flags = IORESOURCE_IRQ, |
145 | }, | 146 | }, |
146 | }; | 147 | }; |
@@ -174,8 +175,8 @@ static struct resource sh_eth_giga1_resources[] = { | |||
174 | .end = 0xfee01fff, | 175 | .end = 0xfee01fff, |
175 | .flags = IORESOURCE_MEM, | 176 | .flags = IORESOURCE_MEM, |
176 | }, { | 177 | }, { |
177 | .start = 316, | 178 | .start = evt2irq(0x2980), |
178 | .end = 316, | 179 | .end = evt2irq(0x2980), |
179 | .flags = IORESOURCE_IRQ, | 180 | .flags = IORESOURCE_IRQ, |
180 | }, | 181 | }, |
181 | }; | 182 | }; |
@@ -206,11 +207,11 @@ static struct resource sh_mmcif_resources[] = { | |||
206 | .flags = IORESOURCE_MEM, | 207 | .flags = IORESOURCE_MEM, |
207 | }, | 208 | }, |
208 | [1] = { | 209 | [1] = { |
209 | .start = 211, | 210 | .start = evt2irq(0x1c60), |
210 | .flags = IORESOURCE_IRQ, | 211 | .flags = IORESOURCE_IRQ, |
211 | }, | 212 | }, |
212 | [2] = { | 213 | [2] = { |
213 | .start = 212, | 214 | .start = evt2irq(0x1c80), |
214 | .flags = IORESOURCE_IRQ, | 215 | .flags = IORESOURCE_IRQ, |
215 | }, | 216 | }, |
216 | }; | 217 | }; |
@@ -248,7 +249,7 @@ static struct resource sdhi_resources[] = { | |||
248 | .flags = IORESOURCE_MEM, | 249 | .flags = IORESOURCE_MEM, |
249 | }, | 250 | }, |
250 | [1] = { | 251 | [1] = { |
251 | .start = 20, | 252 | .start = evt2irq(0x480), |
252 | .flags = IORESOURCE_IRQ, | 253 | .flags = IORESOURCE_IRQ, |
253 | }, | 254 | }, |
254 | }; | 255 | }; |
@@ -284,8 +285,8 @@ static struct resource usb0_resources[] = { | |||
284 | .flags = IORESOURCE_MEM, | 285 | .flags = IORESOURCE_MEM, |
285 | }, | 286 | }, |
286 | [1] = { | 287 | [1] = { |
287 | .start = 50, | 288 | .start = evt2irq(0x840), |
288 | .end = 50, | 289 | .end = evt2irq(0x840), |
289 | .flags = IORESOURCE_IRQ, | 290 | .flags = IORESOURCE_IRQ, |
290 | }, | 291 | }, |
291 | }; | 292 | }; |
diff --git a/arch/sh/boards/board-sh7785lcr.c b/arch/sh/boards/board-sh7785lcr.c index d0d6221d7c2e..2c4771ee84cd 100644 --- a/arch/sh/boards/board-sh7785lcr.c +++ b/arch/sh/boards/board-sh7785lcr.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/i2c-pca-platform.h> | 20 | #include <linux/i2c-pca-platform.h> |
21 | #include <linux/i2c-algo-pca.h> | 21 | #include <linux/i2c-algo-pca.h> |
22 | #include <linux/usb/r8a66597.h> | 22 | #include <linux/usb/r8a66597.h> |
23 | #include <linux/sh_intc.h> | ||
23 | #include <linux/irq.h> | 24 | #include <linux/irq.h> |
24 | #include <linux/io.h> | 25 | #include <linux/io.h> |
25 | #include <linux/clk.h> | 26 | #include <linux/clk.h> |
@@ -105,8 +106,8 @@ static struct resource r8a66597_usb_host_resources[] = { | |||
105 | .flags = IORESOURCE_MEM, | 106 | .flags = IORESOURCE_MEM, |
106 | }, | 107 | }, |
107 | [1] = { | 108 | [1] = { |
108 | .start = 2, | 109 | .start = evt2irq(0x240), |
109 | .end = 2, | 110 | .end = evt2irq(0x240), |
110 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW, | 111 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW, |
111 | }, | 112 | }, |
112 | }; | 113 | }; |
@@ -135,7 +136,7 @@ static struct resource sm501_resources[] = { | |||
135 | .flags = IORESOURCE_MEM, | 136 | .flags = IORESOURCE_MEM, |
136 | }, | 137 | }, |
137 | [2] = { | 138 | [2] = { |
138 | .start = 10, | 139 | .start = evt2irq(0x340), |
139 | .flags = IORESOURCE_IRQ, | 140 | .flags = IORESOURCE_IRQ, |
140 | }, | 141 | }, |
141 | }; | 142 | }; |
@@ -223,8 +224,8 @@ static struct resource i2c_proto_resources[] = { | |||
223 | .flags = IORESOURCE_MEM | IORESOURCE_MEM_8BIT, | 224 | .flags = IORESOURCE_MEM | IORESOURCE_MEM_8BIT, |
224 | }, | 225 | }, |
225 | [1] = { | 226 | [1] = { |
226 | .start = 12, | 227 | .start = evt2irq(0x380), |
227 | .end = 12, | 228 | .end = evt2irq(0x380), |
228 | .flags = IORESOURCE_IRQ, | 229 | .flags = IORESOURCE_IRQ, |
229 | }, | 230 | }, |
230 | }; | 231 | }; |
@@ -236,8 +237,8 @@ static struct resource i2c_resources[] = { | |||
236 | .flags = IORESOURCE_MEM | IORESOURCE_MEM_8BIT, | 237 | .flags = IORESOURCE_MEM | IORESOURCE_MEM_8BIT, |
237 | }, | 238 | }, |
238 | [1] = { | 239 | [1] = { |
239 | .start = 12, | 240 | .start = evt2irq(0x380), |
240 | .end = 12, | 241 | .end = evt2irq(0x380), |
241 | .flags = IORESOURCE_IRQ, | 242 | .flags = IORESOURCE_IRQ, |
242 | }, | 243 | }, |
243 | }; | 244 | }; |
diff --git a/arch/sh/boards/board-urquell.c b/arch/sh/boards/board-urquell.c index 24e3316c5c17..b52abcc5259a 100644 --- a/arch/sh/boards/board-urquell.c +++ b/arch/sh/boards/board-urquell.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/gpio.h> | 20 | #include <linux/gpio.h> |
21 | #include <linux/irq.h> | 21 | #include <linux/irq.h> |
22 | #include <linux/clk.h> | 22 | #include <linux/clk.h> |
23 | #include <linux/sh_intc.h> | ||
23 | #include <mach/urquell.h> | 24 | #include <mach/urquell.h> |
24 | #include <cpu/sh7786.h> | 25 | #include <cpu/sh7786.h> |
25 | #include <asm/heartbeat.h> | 26 | #include <asm/heartbeat.h> |
@@ -78,7 +79,7 @@ static struct resource smc91x_eth_resources[] = { | |||
78 | .flags = IORESOURCE_MEM, | 79 | .flags = IORESOURCE_MEM, |
79 | }, | 80 | }, |
80 | [1] = { | 81 | [1] = { |
81 | .start = 11, | 82 | .start = evt2irq(0x360), |
82 | .flags = IORESOURCE_IRQ, | 83 | .flags = IORESOURCE_IRQ, |
83 | }, | 84 | }, |
84 | }; | 85 | }; |
diff --git a/arch/sh/boards/mach-ap325rxa/setup.c b/arch/sh/boards/mach-ap325rxa/setup.c index 8cf02e343333..f33ebf447073 100644 --- a/arch/sh/boards/mach-ap325rxa/setup.c +++ b/arch/sh/boards/mach-ap325rxa/setup.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <linux/smsc911x.h> | 23 | #include <linux/smsc911x.h> |
24 | #include <linux/gpio.h> | 24 | #include <linux/gpio.h> |
25 | #include <linux/videodev2.h> | 25 | #include <linux/videodev2.h> |
26 | #include <linux/sh_intc.h> | ||
26 | #include <media/ov772x.h> | 27 | #include <media/ov772x.h> |
27 | #include <media/soc_camera.h> | 28 | #include <media/soc_camera.h> |
28 | #include <media/soc_camera_platform.h> | 29 | #include <media/soc_camera_platform.h> |
@@ -47,8 +48,8 @@ static struct resource smsc9118_resources[] = { | |||
47 | .flags = IORESOURCE_MEM, | 48 | .flags = IORESOURCE_MEM, |
48 | }, | 49 | }, |
49 | [1] = { | 50 | [1] = { |
50 | .start = 35, | 51 | .start = evt2irq(0x660), |
51 | .end = 35, | 52 | .end = evt2irq(0x660), |
52 | .flags = IORESOURCE_IRQ, | 53 | .flags = IORESOURCE_IRQ, |
53 | } | 54 | } |
54 | }; | 55 | }; |
@@ -166,7 +167,7 @@ static int ap320_wvga_set_brightness(int brightness) | |||
166 | __raw_writew(0, FPGA_BKLREG); | 167 | __raw_writew(0, FPGA_BKLREG); |
167 | gpio_set_value(GPIO_PTS3, 1); | 168 | gpio_set_value(GPIO_PTS3, 1); |
168 | } | 169 | } |
169 | 170 | ||
170 | return 0; | 171 | return 0; |
171 | } | 172 | } |
172 | 173 | ||
@@ -236,7 +237,7 @@ static struct resource lcdc_resources[] = { | |||
236 | .flags = IORESOURCE_MEM, | 237 | .flags = IORESOURCE_MEM, |
237 | }, | 238 | }, |
238 | [1] = { | 239 | [1] = { |
239 | .start = 28, | 240 | .start = evt2irq(0x580), |
240 | .flags = IORESOURCE_IRQ, | 241 | .flags = IORESOURCE_IRQ, |
241 | }, | 242 | }, |
242 | }; | 243 | }; |
@@ -404,7 +405,7 @@ static struct resource ceu_resources[] = { | |||
404 | .flags = IORESOURCE_MEM, | 405 | .flags = IORESOURCE_MEM, |
405 | }, | 406 | }, |
406 | [1] = { | 407 | [1] = { |
407 | .start = 52, | 408 | .start = evt2irq(0x880), |
408 | .flags = IORESOURCE_IRQ, | 409 | .flags = IORESOURCE_IRQ, |
409 | }, | 410 | }, |
410 | [2] = { | 411 | [2] = { |
@@ -430,7 +431,7 @@ static struct resource sdhi0_cn3_resources[] = { | |||
430 | .flags = IORESOURCE_MEM, | 431 | .flags = IORESOURCE_MEM, |
431 | }, | 432 | }, |
432 | [1] = { | 433 | [1] = { |
433 | .start = 100, | 434 | .start = evt2irq(0xe80), |
434 | .flags = IORESOURCE_IRQ, | 435 | .flags = IORESOURCE_IRQ, |
435 | }, | 436 | }, |
436 | }; | 437 | }; |
@@ -457,7 +458,7 @@ static struct resource sdhi1_cn7_resources[] = { | |||
457 | .flags = IORESOURCE_MEM, | 458 | .flags = IORESOURCE_MEM, |
458 | }, | 459 | }, |
459 | [1] = { | 460 | [1] = { |
460 | .start = 23, | 461 | .start = evt2irq(0x4e0), |
461 | .flags = IORESOURCE_IRQ, | 462 | .flags = IORESOURCE_IRQ, |
462 | }, | 463 | }, |
463 | }; | 464 | }; |
diff --git a/arch/sh/boards/mach-ecovec24/setup.c b/arch/sh/boards/mach-ecovec24/setup.c index d12fe9ddf3da..63002c8a0ec8 100644 --- a/arch/sh/boards/mach-ecovec24/setup.c +++ b/arch/sh/boards/mach-ecovec24/setup.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <linux/input.h> | 29 | #include <linux/input.h> |
30 | #include <linux/input/sh_keysc.h> | 30 | #include <linux/input/sh_keysc.h> |
31 | #include <linux/sh_eth.h> | 31 | #include <linux/sh_eth.h> |
32 | #include <linux/sh_intc.h> | ||
32 | #include <linux/videodev2.h> | 33 | #include <linux/videodev2.h> |
33 | #include <video/sh_mobile_lcdc.h> | 34 | #include <video/sh_mobile_lcdc.h> |
34 | #include <sound/sh_fsi.h> | 35 | #include <sound/sh_fsi.h> |
@@ -137,7 +138,7 @@ static struct resource sh_eth_resources[] = { | |||
137 | .flags = IORESOURCE_MEM, | 138 | .flags = IORESOURCE_MEM, |
138 | }, | 139 | }, |
139 | [1] = { | 140 | [1] = { |
140 | .start = 91, | 141 | .start = evt2irq(0xd60), |
141 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | 142 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, |
142 | }, | 143 | }, |
143 | }; | 144 | }; |
@@ -178,8 +179,8 @@ static struct resource usb0_host_resources[] = { | |||
178 | .flags = IORESOURCE_MEM, | 179 | .flags = IORESOURCE_MEM, |
179 | }, | 180 | }, |
180 | [1] = { | 181 | [1] = { |
181 | .start = 65, | 182 | .start = evt2irq(0xa20), |
182 | .end = 65, | 183 | .end = evt2irq(0xa20), |
183 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW, | 184 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW, |
184 | }, | 185 | }, |
185 | }; | 186 | }; |
@@ -214,8 +215,8 @@ static struct resource usb1_common_resources[] = { | |||
214 | .flags = IORESOURCE_MEM, | 215 | .flags = IORESOURCE_MEM, |
215 | }, | 216 | }, |
216 | [1] = { | 217 | [1] = { |
217 | .start = 66, | 218 | .start = evt2irq(0xa40), |
218 | .end = 66, | 219 | .end = evt2irq(0xa40), |
219 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW, | 220 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW, |
220 | }, | 221 | }, |
221 | }; | 222 | }; |
@@ -261,8 +262,8 @@ static struct resource usbhs_resources[] = { | |||
261 | .flags = IORESOURCE_MEM, | 262 | .flags = IORESOURCE_MEM, |
262 | }, | 263 | }, |
263 | [1] = { | 264 | [1] = { |
264 | .start = 66, | 265 | .start = evt2irq(0xa40), |
265 | .end = 66, | 266 | .end = evt2irq(0xa40), |
266 | .flags = IORESOURCE_IRQ, | 267 | .flags = IORESOURCE_IRQ, |
267 | }, | 268 | }, |
268 | }; | 269 | }; |
@@ -348,7 +349,7 @@ static struct resource lcdc_resources[] = { | |||
348 | .flags = IORESOURCE_MEM, | 349 | .flags = IORESOURCE_MEM, |
349 | }, | 350 | }, |
350 | [1] = { | 351 | [1] = { |
351 | .start = 106, | 352 | .start = evt2irq(0xf40), |
352 | .flags = IORESOURCE_IRQ, | 353 | .flags = IORESOURCE_IRQ, |
353 | }, | 354 | }, |
354 | }; | 355 | }; |
@@ -375,7 +376,7 @@ static struct resource ceu0_resources[] = { | |||
375 | .flags = IORESOURCE_MEM, | 376 | .flags = IORESOURCE_MEM, |
376 | }, | 377 | }, |
377 | [1] = { | 378 | [1] = { |
378 | .start = 52, | 379 | .start = evt2irq(0x880), |
379 | .flags = IORESOURCE_IRQ, | 380 | .flags = IORESOURCE_IRQ, |
380 | }, | 381 | }, |
381 | [2] = { | 382 | [2] = { |
@@ -406,7 +407,7 @@ static struct resource ceu1_resources[] = { | |||
406 | .flags = IORESOURCE_MEM, | 407 | .flags = IORESOURCE_MEM, |
407 | }, | 408 | }, |
408 | [1] = { | 409 | [1] = { |
409 | .start = 63, | 410 | .start = evt2irq(0x9e0), |
410 | .flags = IORESOURCE_IRQ, | 411 | .flags = IORESOURCE_IRQ, |
411 | }, | 412 | }, |
412 | [2] = { | 413 | [2] = { |
@@ -437,7 +438,7 @@ static struct i2c_board_info i2c1_devices[] = { | |||
437 | }, | 438 | }, |
438 | { | 439 | { |
439 | I2C_BOARD_INFO("lis3lv02d", 0x1c), | 440 | I2C_BOARD_INFO("lis3lv02d", 0x1c), |
440 | .irq = 33, | 441 | .irq = evt2irq(0x620), |
441 | } | 442 | } |
442 | }; | 443 | }; |
443 | 444 | ||
@@ -463,7 +464,7 @@ static struct resource keysc_resources[] = { | |||
463 | .flags = IORESOURCE_MEM, | 464 | .flags = IORESOURCE_MEM, |
464 | }, | 465 | }, |
465 | [1] = { | 466 | [1] = { |
466 | .start = 79, | 467 | .start = evt2irq(0xbe0), |
467 | .flags = IORESOURCE_IRQ, | 468 | .flags = IORESOURCE_IRQ, |
468 | }, | 469 | }, |
469 | }; | 470 | }; |
@@ -479,7 +480,8 @@ static struct platform_device keysc_device = { | |||
479 | }; | 480 | }; |
480 | 481 | ||
481 | /* TouchScreen */ | 482 | /* TouchScreen */ |
482 | #define IRQ0 32 | 483 | #define IRQ0 evt2irq(0x600) |
484 | |||
483 | static int ts_get_pendown_state(void) | 485 | static int ts_get_pendown_state(void) |
484 | { | 486 | { |
485 | int val = 0; | 487 | int val = 0; |
@@ -544,7 +546,7 @@ static struct resource sdhi0_resources[] = { | |||
544 | .flags = IORESOURCE_MEM, | 546 | .flags = IORESOURCE_MEM, |
545 | }, | 547 | }, |
546 | [1] = { | 548 | [1] = { |
547 | .start = 100, | 549 | .start = evt2irq(0xe80), |
548 | .flags = IORESOURCE_IRQ, | 550 | .flags = IORESOURCE_IRQ, |
549 | }, | 551 | }, |
550 | }; | 552 | }; |
@@ -588,7 +590,7 @@ static struct resource sdhi1_resources[] = { | |||
588 | .flags = IORESOURCE_MEM, | 590 | .flags = IORESOURCE_MEM, |
589 | }, | 591 | }, |
590 | [1] = { | 592 | [1] = { |
591 | .start = 23, | 593 | .start = evt2irq(0x4e0), |
592 | .flags = IORESOURCE_IRQ, | 594 | .flags = IORESOURCE_IRQ, |
593 | }, | 595 | }, |
594 | }; | 596 | }; |
@@ -653,7 +655,7 @@ static struct resource msiof0_resources[] = { | |||
653 | .flags = IORESOURCE_MEM, | 655 | .flags = IORESOURCE_MEM, |
654 | }, | 656 | }, |
655 | [1] = { | 657 | [1] = { |
656 | .start = 84, | 658 | .start = evt2irq(0xc80), |
657 | .flags = IORESOURCE_IRQ, | 659 | .flags = IORESOURCE_IRQ, |
658 | }, | 660 | }, |
659 | }; | 661 | }; |
@@ -794,7 +796,7 @@ static struct resource fsi_resources[] = { | |||
794 | .flags = IORESOURCE_MEM, | 796 | .flags = IORESOURCE_MEM, |
795 | }, | 797 | }, |
796 | [1] = { | 798 | [1] = { |
797 | .start = 108, | 799 | .start = evt2irq(0xf80), |
798 | .flags = IORESOURCE_IRQ, | 800 | .flags = IORESOURCE_IRQ, |
799 | }, | 801 | }, |
800 | }; | 802 | }; |
@@ -818,7 +820,7 @@ static struct resource irda_resources[] = { | |||
818 | .flags = IORESOURCE_MEM, | 820 | .flags = IORESOURCE_MEM, |
819 | }, | 821 | }, |
820 | [1] = { | 822 | [1] = { |
821 | .start = 20, | 823 | .start = evt2irq(0x480), |
822 | .flags = IORESOURCE_IRQ, | 824 | .flags = IORESOURCE_IRQ, |
823 | }, | 825 | }, |
824 | }; | 826 | }; |
@@ -855,7 +857,7 @@ static struct resource sh_vou_resources[] = { | |||
855 | .flags = IORESOURCE_MEM, | 857 | .flags = IORESOURCE_MEM, |
856 | }, | 858 | }, |
857 | [1] = { | 859 | [1] = { |
858 | .start = 55, | 860 | .start = evt2irq(0x8e0), |
859 | .flags = IORESOURCE_IRQ, | 861 | .flags = IORESOURCE_IRQ, |
860 | }, | 862 | }, |
861 | }; | 863 | }; |
@@ -891,12 +893,12 @@ static struct resource sh_mmcif_resources[] = { | |||
891 | }, | 893 | }, |
892 | [1] = { | 894 | [1] = { |
893 | /* MMC2I */ | 895 | /* MMC2I */ |
894 | .start = 29, | 896 | .start = evt2irq(0x5a0), |
895 | .flags = IORESOURCE_IRQ, | 897 | .flags = IORESOURCE_IRQ, |
896 | }, | 898 | }, |
897 | [2] = { | 899 | [2] = { |
898 | /* MMC3I */ | 900 | /* MMC3I */ |
899 | .start = 30, | 901 | .start = evt2irq(0x5c0), |
900 | .flags = IORESOURCE_IRQ, | 902 | .flags = IORESOURCE_IRQ, |
901 | }, | 903 | }, |
902 | }; | 904 | }; |
diff --git a/arch/sh/boards/mach-hp6xx/setup.c b/arch/sh/boards/mach-hp6xx/setup.c index 8c9add5f4cfa..db34cad1b76c 100644 --- a/arch/sh/boards/mach-hp6xx/setup.c +++ b/arch/sh/boards/mach-hp6xx/setup.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
15 | #include <linux/irq.h> | 15 | #include <linux/irq.h> |
16 | #include <linux/sh_intc.h> | ||
16 | #include <sound/sh_dac_audio.h> | 17 | #include <sound/sh_dac_audio.h> |
17 | #include <asm/hd64461.h> | 18 | #include <asm/hd64461.h> |
18 | #include <asm/io.h> | 19 | #include <asm/io.h> |
@@ -35,7 +36,7 @@ static struct resource cf_ide_resources[] = { | |||
35 | .flags = IORESOURCE_MEM, | 36 | .flags = IORESOURCE_MEM, |
36 | }, | 37 | }, |
37 | [2] = { | 38 | [2] = { |
38 | .start = 77, | 39 | .start = evt2irq(0xba0), |
39 | .flags = IORESOURCE_IRQ, | 40 | .flags = IORESOURCE_IRQ, |
40 | }, | 41 | }, |
41 | }; | 42 | }; |
diff --git a/arch/sh/boards/mach-kfr2r09/setup.c b/arch/sh/boards/mach-kfr2r09/setup.c index d04a55d3b877..158c9176e42a 100644 --- a/arch/sh/boards/mach-kfr2r09/setup.c +++ b/arch/sh/boards/mach-kfr2r09/setup.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <linux/i2c.h> | 23 | #include <linux/i2c.h> |
24 | #include <linux/usb/r8a66597.h> | 24 | #include <linux/usb/r8a66597.h> |
25 | #include <linux/videodev2.h> | 25 | #include <linux/videodev2.h> |
26 | #include <linux/sh_intc.h> | ||
26 | #include <media/rj54n1cb0c.h> | 27 | #include <media/rj54n1cb0c.h> |
27 | #include <media/soc_camera.h> | 28 | #include <media/soc_camera.h> |
28 | #include <media/sh_mobile_ceu.h> | 29 | #include <media/sh_mobile_ceu.h> |
@@ -110,7 +111,7 @@ static struct resource kfr2r09_sh_keysc_resources[] = { | |||
110 | .flags = IORESOURCE_MEM, | 111 | .flags = IORESOURCE_MEM, |
111 | }, | 112 | }, |
112 | [1] = { | 113 | [1] = { |
113 | .start = 79, | 114 | .start = evt2irq(0xbe0), |
114 | .flags = IORESOURCE_IRQ, | 115 | .flags = IORESOURCE_IRQ, |
115 | }, | 116 | }, |
116 | }; | 117 | }; |
@@ -175,7 +176,7 @@ static struct resource kfr2r09_sh_lcdc_resources[] = { | |||
175 | .flags = IORESOURCE_MEM, | 176 | .flags = IORESOURCE_MEM, |
176 | }, | 177 | }, |
177 | [1] = { | 178 | [1] = { |
178 | .start = 106, | 179 | .start = evt2irq(0xf40), |
179 | .flags = IORESOURCE_IRQ, | 180 | .flags = IORESOURCE_IRQ, |
180 | }, | 181 | }, |
181 | }; | 182 | }; |
@@ -200,8 +201,8 @@ static struct resource kfr2r09_usb0_gadget_resources[] = { | |||
200 | .flags = IORESOURCE_MEM, | 201 | .flags = IORESOURCE_MEM, |
201 | }, | 202 | }, |
202 | [1] = { | 203 | [1] = { |
203 | .start = 65, | 204 | .start = evtirq(0xa20), |
204 | .end = 65, | 205 | .end = evtirq(0xa20), |
205 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW, | 206 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW, |
206 | }, | 207 | }, |
207 | }; | 208 | }; |
@@ -230,8 +231,8 @@ static struct resource kfr2r09_ceu_resources[] = { | |||
230 | .flags = IORESOURCE_MEM, | 231 | .flags = IORESOURCE_MEM, |
231 | }, | 232 | }, |
232 | [1] = { | 233 | [1] = { |
233 | .start = 52, | 234 | .start = evt2irq(0x880), |
234 | .end = 52, | 235 | .end = evt2irq(0x880), |
235 | .flags = IORESOURCE_IRQ, | 236 | .flags = IORESOURCE_IRQ, |
236 | }, | 237 | }, |
237 | [2] = { | 238 | [2] = { |
@@ -348,7 +349,7 @@ static struct resource kfr2r09_sh_sdhi0_resources[] = { | |||
348 | .flags = IORESOURCE_MEM, | 349 | .flags = IORESOURCE_MEM, |
349 | }, | 350 | }, |
350 | [1] = { | 351 | [1] = { |
351 | .start = 100, | 352 | .start = evt2irq(0xe80), |
352 | .flags = IORESOURCE_IRQ, | 353 | .flags = IORESOURCE_IRQ, |
353 | }, | 354 | }, |
354 | }; | 355 | }; |
diff --git a/arch/sh/boards/mach-migor/setup.c b/arch/sh/boards/mach-migor/setup.c index ff6f69c6906e..34cd0c5ff2e1 100644 --- a/arch/sh/boards/mach-migor/setup.c +++ b/arch/sh/boards/mach-migor/setup.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/clk.h> | 22 | #include <linux/clk.h> |
23 | #include <linux/gpio.h> | 23 | #include <linux/gpio.h> |
24 | #include <linux/videodev2.h> | 24 | #include <linux/videodev2.h> |
25 | #include <linux/sh_intc.h> | ||
25 | #include <video/sh_mobile_lcdc.h> | 26 | #include <video/sh_mobile_lcdc.h> |
26 | #include <media/sh_mobile_ceu.h> | 27 | #include <media/sh_mobile_ceu.h> |
27 | #include <media/ov772x.h> | 28 | #include <media/ov772x.h> |
@@ -54,7 +55,7 @@ static struct resource smc91x_eth_resources[] = { | |||
54 | .flags = IORESOURCE_MEM, | 55 | .flags = IORESOURCE_MEM, |
55 | }, | 56 | }, |
56 | [1] = { | 57 | [1] = { |
57 | .start = 32, /* IRQ0 */ | 58 | .start = evt2irq(0x600), /* IRQ0 */ |
58 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | 59 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, |
59 | }, | 60 | }, |
60 | }; | 61 | }; |
@@ -88,7 +89,7 @@ static struct resource sh_keysc_resources[] = { | |||
88 | .flags = IORESOURCE_MEM, | 89 | .flags = IORESOURCE_MEM, |
89 | }, | 90 | }, |
90 | [1] = { | 91 | [1] = { |
91 | .start = 79, | 92 | .start = evt2irq(0xbe0), |
92 | .flags = IORESOURCE_IRQ, | 93 | .flags = IORESOURCE_IRQ, |
93 | }, | 94 | }, |
94 | }; | 95 | }; |
@@ -285,7 +286,7 @@ static struct resource migor_lcdc_resources[] = { | |||
285 | .flags = IORESOURCE_MEM, | 286 | .flags = IORESOURCE_MEM, |
286 | }, | 287 | }, |
287 | [1] = { | 288 | [1] = { |
288 | .start = 28, | 289 | .start = evt2irq(0x580), |
289 | .flags = IORESOURCE_IRQ, | 290 | .flags = IORESOURCE_IRQ, |
290 | }, | 291 | }, |
291 | }; | 292 | }; |
@@ -368,7 +369,7 @@ static struct resource migor_ceu_resources[] = { | |||
368 | .flags = IORESOURCE_MEM, | 369 | .flags = IORESOURCE_MEM, |
369 | }, | 370 | }, |
370 | [1] = { | 371 | [1] = { |
371 | .start = 52, | 372 | .start = evt2irq(0x880), |
372 | .flags = IORESOURCE_IRQ, | 373 | .flags = IORESOURCE_IRQ, |
373 | }, | 374 | }, |
374 | [2] = { | 375 | [2] = { |
@@ -394,7 +395,7 @@ static struct resource sdhi_cn9_resources[] = { | |||
394 | .flags = IORESOURCE_MEM, | 395 | .flags = IORESOURCE_MEM, |
395 | }, | 396 | }, |
396 | [1] = { | 397 | [1] = { |
397 | .start = 100, | 398 | .start = evt2irq(0xe80), |
398 | .flags = IORESOURCE_IRQ, | 399 | .flags = IORESOURCE_IRQ, |
399 | }, | 400 | }, |
400 | }; | 401 | }; |
@@ -420,7 +421,7 @@ static struct i2c_board_info migor_i2c_devices[] = { | |||
420 | }, | 421 | }, |
421 | { | 422 | { |
422 | I2C_BOARD_INFO("migor_ts", 0x51), | 423 | I2C_BOARD_INFO("migor_ts", 0x51), |
423 | .irq = 38, /* IRQ6 */ | 424 | .irq = evt2irq(0x6c0), /* IRQ6 */ |
424 | }, | 425 | }, |
425 | { | 426 | { |
426 | I2C_BOARD_INFO("wm8978", 0x1a), | 427 | I2C_BOARD_INFO("wm8978", 0x1a), |
diff --git a/arch/sh/boards/mach-se/7722/setup.c b/arch/sh/boards/mach-se/7722/setup.c index e1963fecd761..8f7f0550cfde 100644 --- a/arch/sh/boards/mach-se/7722/setup.c +++ b/arch/sh/boards/mach-se/7722/setup.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/input.h> | 16 | #include <linux/input.h> |
17 | #include <linux/input/sh_keysc.h> | 17 | #include <linux/input/sh_keysc.h> |
18 | #include <linux/smc91x.h> | 18 | #include <linux/smc91x.h> |
19 | #include <linux/sh_intc.h> | ||
19 | #include <mach-se/mach/se7722.h> | 20 | #include <mach-se/mach/se7722.h> |
20 | #include <mach-se/mach/mrshpc.h> | 21 | #include <mach-se/mach/mrshpc.h> |
21 | #include <asm/machvec.h> | 22 | #include <asm/machvec.h> |
@@ -114,7 +115,7 @@ static struct resource sh_keysc_resources[] = { | |||
114 | .flags = IORESOURCE_MEM, | 115 | .flags = IORESOURCE_MEM, |
115 | }, | 116 | }, |
116 | [1] = { | 117 | [1] = { |
117 | .start = 79, | 118 | .start = evt2irq(0xbe0), |
118 | .flags = IORESOURCE_IRQ, | 119 | .flags = IORESOURCE_IRQ, |
119 | }, | 120 | }, |
120 | }; | 121 | }; |
diff --git a/arch/sh/boards/mach-se/7724/setup.c b/arch/sh/boards/mach-se/7724/setup.c index c540b16547c3..479cdf876fda 100644 --- a/arch/sh/boards/mach-se/7724/setup.c +++ b/arch/sh/boards/mach-se/7724/setup.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/input/sh_keysc.h> | 24 | #include <linux/input/sh_keysc.h> |
25 | #include <linux/usb/r8a66597.h> | 25 | #include <linux/usb/r8a66597.h> |
26 | #include <linux/sh_eth.h> | 26 | #include <linux/sh_eth.h> |
27 | #include <linux/sh_intc.h> | ||
27 | #include <linux/videodev2.h> | 28 | #include <linux/videodev2.h> |
28 | #include <video/sh_mobile_lcdc.h> | 29 | #include <video/sh_mobile_lcdc.h> |
29 | #include <media/sh_mobile_ceu.h> | 30 | #include <media/sh_mobile_ceu.h> |
@@ -197,7 +198,7 @@ static struct resource lcdc_resources[] = { | |||
197 | .flags = IORESOURCE_MEM, | 198 | .flags = IORESOURCE_MEM, |
198 | }, | 199 | }, |
199 | [1] = { | 200 | [1] = { |
200 | .start = 106, | 201 | .start = evt2irq(0xf40), |
201 | .flags = IORESOURCE_IRQ, | 202 | .flags = IORESOURCE_IRQ, |
202 | }, | 203 | }, |
203 | }; | 204 | }; |
@@ -224,7 +225,7 @@ static struct resource ceu0_resources[] = { | |||
224 | .flags = IORESOURCE_MEM, | 225 | .flags = IORESOURCE_MEM, |
225 | }, | 226 | }, |
226 | [1] = { | 227 | [1] = { |
227 | .start = 52, | 228 | .start = evt2irq(0x880), |
228 | .flags = IORESOURCE_IRQ, | 229 | .flags = IORESOURCE_IRQ, |
229 | }, | 230 | }, |
230 | [2] = { | 231 | [2] = { |
@@ -255,7 +256,7 @@ static struct resource ceu1_resources[] = { | |||
255 | .flags = IORESOURCE_MEM, | 256 | .flags = IORESOURCE_MEM, |
256 | }, | 257 | }, |
257 | [1] = { | 258 | [1] = { |
258 | .start = 63, | 259 | .start = evt2irq(0x9e0), |
259 | .flags = IORESOURCE_IRQ, | 260 | .flags = IORESOURCE_IRQ, |
260 | }, | 261 | }, |
261 | [2] = { | 262 | [2] = { |
@@ -289,7 +290,7 @@ static struct resource fsi_resources[] = { | |||
289 | .flags = IORESOURCE_MEM, | 290 | .flags = IORESOURCE_MEM, |
290 | }, | 291 | }, |
291 | [1] = { | 292 | [1] = { |
292 | .start = 108, | 293 | .start = evt2irq(0xf80), |
293 | .flags = IORESOURCE_IRQ, | 294 | .flags = IORESOURCE_IRQ, |
294 | }, | 295 | }, |
295 | }; | 296 | }; |
@@ -343,7 +344,7 @@ static struct resource keysc_resources[] = { | |||
343 | .flags = IORESOURCE_MEM, | 344 | .flags = IORESOURCE_MEM, |
344 | }, | 345 | }, |
345 | [1] = { | 346 | [1] = { |
346 | .start = 79, | 347 | .start = evt2irq(0xbe0), |
347 | .flags = IORESOURCE_IRQ, | 348 | .flags = IORESOURCE_IRQ, |
348 | }, | 349 | }, |
349 | }; | 350 | }; |
@@ -366,7 +367,7 @@ static struct resource sh_eth_resources[] = { | |||
366 | .flags = IORESOURCE_MEM, | 367 | .flags = IORESOURCE_MEM, |
367 | }, | 368 | }, |
368 | [1] = { | 369 | [1] = { |
369 | .start = 91, | 370 | .start = evt2irq(0xd60), |
370 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | 371 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, |
371 | }, | 372 | }, |
372 | }; | 373 | }; |
@@ -397,8 +398,8 @@ static struct resource sh7724_usb0_host_resources[] = { | |||
397 | .flags = IORESOURCE_MEM, | 398 | .flags = IORESOURCE_MEM, |
398 | }, | 399 | }, |
399 | [1] = { | 400 | [1] = { |
400 | .start = 65, | 401 | .start = evt2irq(0xa20), |
401 | .end = 65, | 402 | .end = evt2irq(0xa20), |
402 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW, | 403 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW, |
403 | }, | 404 | }, |
404 | }; | 405 | }; |
@@ -426,8 +427,8 @@ static struct resource sh7724_usb1_gadget_resources[] = { | |||
426 | .flags = IORESOURCE_MEM, | 427 | .flags = IORESOURCE_MEM, |
427 | }, | 428 | }, |
428 | [1] = { | 429 | [1] = { |
429 | .start = 66, | 430 | .start = evt2irq(0xa40), |
430 | .end = 66, | 431 | .end = evt2irq(0xa40), |
431 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW, | 432 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW, |
432 | }, | 433 | }, |
433 | }; | 434 | }; |
@@ -452,7 +453,7 @@ static struct resource sdhi0_cn7_resources[] = { | |||
452 | .flags = IORESOURCE_MEM, | 453 | .flags = IORESOURCE_MEM, |
453 | }, | 454 | }, |
454 | [1] = { | 455 | [1] = { |
455 | .start = 100, | 456 | .start = evt2irq(0xe80), |
456 | .flags = IORESOURCE_IRQ, | 457 | .flags = IORESOURCE_IRQ, |
457 | }, | 458 | }, |
458 | }; | 459 | }; |
@@ -481,7 +482,7 @@ static struct resource sdhi1_cn8_resources[] = { | |||
481 | .flags = IORESOURCE_MEM, | 482 | .flags = IORESOURCE_MEM, |
482 | }, | 483 | }, |
483 | [1] = { | 484 | [1] = { |
484 | .start = 23, | 485 | .start = evt2irq(0x4e0), |
485 | .flags = IORESOURCE_IRQ, | 486 | .flags = IORESOURCE_IRQ, |
486 | }, | 487 | }, |
487 | }; | 488 | }; |
@@ -511,7 +512,7 @@ static struct resource irda_resources[] = { | |||
511 | .flags = IORESOURCE_MEM, | 512 | .flags = IORESOURCE_MEM, |
512 | }, | 513 | }, |
513 | [1] = { | 514 | [1] = { |
514 | .start = 20, | 515 | .start = evt2irq(0x480), |
515 | .flags = IORESOURCE_IRQ, | 516 | .flags = IORESOURCE_IRQ, |
516 | }, | 517 | }, |
517 | }; | 518 | }; |
@@ -549,7 +550,7 @@ static struct resource sh_vou_resources[] = { | |||
549 | .flags = IORESOURCE_MEM, | 550 | .flags = IORESOURCE_MEM, |
550 | }, | 551 | }, |
551 | [1] = { | 552 | [1] = { |
552 | .start = 55, | 553 | .start = evt2irq(0x8e0), |
553 | .flags = IORESOURCE_IRQ, | 554 | .flags = IORESOURCE_IRQ, |
554 | }, | 555 | }, |
555 | }; | 556 | }; |
@@ -595,6 +596,7 @@ static struct i2c_board_info i2c0_devices[] = { | |||
595 | #define EEPROM_DATA 0xBA20600C | 596 | #define EEPROM_DATA 0xBA20600C |
596 | #define EEPROM_STAT 0xBA206010 | 597 | #define EEPROM_STAT 0xBA206010 |
597 | #define EEPROM_STRT 0xBA206014 | 598 | #define EEPROM_STRT 0xBA206014 |
599 | |||
598 | static int __init sh_eth_is_eeprom_ready(void) | 600 | static int __init sh_eth_is_eeprom_ready(void) |
599 | { | 601 | { |
600 | int t = 10000; | 602 | int t = 10000; |
@@ -651,7 +653,6 @@ extern char ms7724se_sdram_enter_end; | |||
651 | extern char ms7724se_sdram_leave_start; | 653 | extern char ms7724se_sdram_leave_start; |
652 | extern char ms7724se_sdram_leave_end; | 654 | extern char ms7724se_sdram_leave_end; |
653 | 655 | ||
654 | |||
655 | static int __init arch_setup(void) | 656 | static int __init arch_setup(void) |
656 | { | 657 | { |
657 | /* enable I2C device */ | 658 | /* enable I2C device */ |
diff --git a/arch/sh/boards/mach-sh7763rdp/setup.c b/arch/sh/boards/mach-sh7763rdp/setup.c index dd036f1661db..36e8b88cd04e 100644 --- a/arch/sh/boards/mach-sh7763rdp/setup.c +++ b/arch/sh/boards/mach-sh7763rdp/setup.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/fb.h> | 18 | #include <linux/fb.h> |
19 | #include <linux/io.h> | 19 | #include <linux/io.h> |
20 | #include <linux/sh_eth.h> | 20 | #include <linux/sh_eth.h> |
21 | #include <linux/sh_intc.h> | ||
21 | #include <mach/sh7763rdp.h> | 22 | #include <mach/sh7763rdp.h> |
22 | #include <asm/sh7760fb.h> | 23 | #include <asm/sh7760fb.h> |
23 | 24 | ||
@@ -67,7 +68,7 @@ static struct platform_device sh7763rdp_nor_flash_device = { | |||
67 | * SH-Ether | 68 | * SH-Ether |
68 | * | 69 | * |
69 | * SH Ether of SH7763 has multi IRQ handling. | 70 | * SH Ether of SH7763 has multi IRQ handling. |
70 | * (57,58,59 -> 57) | 71 | * (0x920,0x940,0x960 -> 0x920) |
71 | */ | 72 | */ |
72 | static struct resource sh_eth_resources[] = { | 73 | static struct resource sh_eth_resources[] = { |
73 | { | 74 | { |
@@ -79,7 +80,7 @@ static struct resource sh_eth_resources[] = { | |||
79 | .end = 0xFEE01FFF, | 80 | .end = 0xFEE01FFF, |
80 | .flags = IORESOURCE_MEM, | 81 | .flags = IORESOURCE_MEM, |
81 | }, { | 82 | }, { |
82 | .start = 57, /* irq number */ | 83 | .start = evt2irq(0x920), /* irq number */ |
83 | .flags = IORESOURCE_IRQ, | 84 | .flags = IORESOURCE_IRQ, |
84 | }, | 85 | }, |
85 | }; | 86 | }; |
diff --git a/arch/sh/drivers/pci/fixups-landisk.c b/arch/sh/drivers/pci/fixups-landisk.c index ecb1d1060638..db5b40a98e62 100644 --- a/arch/sh/drivers/pci/fixups-landisk.c +++ b/arch/sh/drivers/pci/fixups-landisk.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/delay.h> | 15 | #include <linux/delay.h> |
16 | #include <linux/pci.h> | 16 | #include <linux/pci.h> |
17 | #include <linux/sh_intc.h> | ||
17 | #include "pci-sh4.h" | 18 | #include "pci-sh4.h" |
18 | 19 | ||
19 | #define PCIMCR_MRSET_OFF 0xBFFFFFFF | 20 | #define PCIMCR_MRSET_OFF 0xBFFFFFFF |
@@ -27,7 +28,7 @@ int pcibios_map_platform_irq(const struct pci_dev *pdev, u8 slot, u8 pin) | |||
27 | * slot2: pin1-4 = irq7,8,5,6 | 28 | * slot2: pin1-4 = irq7,8,5,6 |
28 | * slot3: pin1-4 = irq8,5,6,7 | 29 | * slot3: pin1-4 = irq8,5,6,7 |
29 | */ | 30 | */ |
30 | int irq = ((slot + pin - 1) & 0x3) + 5; | 31 | int irq = ((slot + pin - 1) & 0x3) + evt2irq(0x2a0); |
31 | 32 | ||
32 | if ((slot | (pin - 1)) > 0x3) { | 33 | if ((slot | (pin - 1)) > 0x3) { |
33 | printk(KERN_WARNING "PCI: Bad IRQ mapping request for slot %d pin %c\n", | 34 | printk(KERN_WARNING "PCI: Bad IRQ mapping request for slot %d pin %c\n", |
diff --git a/arch/sh/drivers/pci/fixups-r7780rp.c b/arch/sh/drivers/pci/fixups-r7780rp.c index f9370dce0b70..57ed3f09d0c2 100644 --- a/arch/sh/drivers/pci/fixups-r7780rp.c +++ b/arch/sh/drivers/pci/fixups-r7780rp.c | |||
@@ -12,13 +12,10 @@ | |||
12 | */ | 12 | */ |
13 | #include <linux/pci.h> | 13 | #include <linux/pci.h> |
14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
15 | #include <linux/sh_intc.h> | ||
15 | #include "pci-sh4.h" | 16 | #include "pci-sh4.h" |
16 | 17 | ||
17 | static char irq_tab[] __initdata = { | ||
18 | 65, 66, 67, 68, | ||
19 | }; | ||
20 | |||
21 | int __init pcibios_map_platform_irq(const struct pci_dev *pdev, u8 slot, u8 pin) | 18 | int __init pcibios_map_platform_irq(const struct pci_dev *pdev, u8 slot, u8 pin) |
22 | { | 19 | { |
23 | return irq_tab[slot]; | 20 | return evt2irq(0xa20) + slot; |
24 | } | 21 | } |
diff --git a/arch/sh/drivers/pci/fixups-sdk7780.c b/arch/sh/drivers/pci/fixups-sdk7780.c index 0b8472501b88..c0a015ae6ecf 100644 --- a/arch/sh/drivers/pci/fixups-sdk7780.c +++ b/arch/sh/drivers/pci/fixups-sdk7780.c | |||
@@ -13,18 +13,28 @@ | |||
13 | */ | 13 | */ |
14 | #include <linux/pci.h> | 14 | #include <linux/pci.h> |
15 | #include <linux/io.h> | 15 | #include <linux/io.h> |
16 | #include <linux/sh_intc.h> | ||
16 | #include "pci-sh4.h" | 17 | #include "pci-sh4.h" |
17 | 18 | ||
19 | #define IRQ_INTA evt2irq(0xa20) | ||
20 | #define IRQ_INTB evt2irq(0xa40) | ||
21 | #define IRQ_INTC evt2irq(0xa60) | ||
22 | #define IRQ_INTD evt2irq(0xa80) | ||
23 | |||
18 | /* IDSEL [16][17][18][19][20][21][22][23][24][25][26][27][28][29][30][31] */ | 24 | /* IDSEL [16][17][18][19][20][21][22][23][24][25][26][27][28][29][30][31] */ |
19 | static char sdk7780_irq_tab[4][16] __initdata = { | 25 | static char sdk7780_irq_tab[4][16] __initdata = { |
20 | /* INTA */ | 26 | /* INTA */ |
21 | { 65, 68, 67, 68, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, | 27 | { IRQ_INTA, IRQ_INTD, IRQ_INTC, IRQ_INTD, -1, -1, -1, -1, -1, -1, |
28 | -1, -1, -1, -1, -1, -1 }, | ||
22 | /* INTB */ | 29 | /* INTB */ |
23 | { 66, 65, -1, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, | 30 | { IRQ_INTB, IRQ_INTA, -1, IRQ_INTA, -1, -1, -1, -1, -1, -1, -1, -1, |
31 | -1, -1, -1, -1 }, | ||
24 | /* INTC */ | 32 | /* INTC */ |
25 | { 67, 66, -1, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, | 33 | { IRQ_INTC, IRQ_INTB, -1, IRQ_INTB, -1, -1, -1, -1, -1, -1, -1, -1, |
34 | -1, -1, -1, -1 }, | ||
26 | /* INTD */ | 35 | /* INTD */ |
27 | { 68, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, | 36 | { IRQ_INTD, IRQ_INTC, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
37 | -1, -1, -1 }, | ||
28 | }; | 38 | }; |
29 | 39 | ||
30 | int __init pcibios_map_platform_irq(const struct pci_dev *pdev, u8 slot, u8 pin) | 40 | int __init pcibios_map_platform_irq(const struct pci_dev *pdev, u8 slot, u8 pin) |
diff --git a/arch/sh/drivers/pci/fixups-se7751.c b/arch/sh/drivers/pci/fixups-se7751.c index 2ec146c3fa44..84a88ca92008 100644 --- a/arch/sh/drivers/pci/fixups-se7751.c +++ b/arch/sh/drivers/pci/fixups-se7751.c | |||
@@ -4,13 +4,14 @@ | |||
4 | #include <linux/delay.h> | 4 | #include <linux/delay.h> |
5 | #include <linux/pci.h> | 5 | #include <linux/pci.h> |
6 | #include <linux/io.h> | 6 | #include <linux/io.h> |
7 | #include <linux/sh_intc.h> | ||
7 | #include "pci-sh4.h" | 8 | #include "pci-sh4.h" |
8 | 9 | ||
9 | int __init pcibios_map_platform_irq(const struct pci_dev *, u8 slot, u8 pin) | 10 | int __init pcibios_map_platform_irq(const struct pci_dev *, u8 slot, u8 pin) |
10 | { | 11 | { |
11 | switch (slot) { | 12 | switch (slot) { |
12 | case 0: return 13; | 13 | case 0: return evt2irq(0x3a0); |
13 | case 1: return 13; /* AMD Ethernet controller */ | 14 | case 1: return evt2irq(0x3a0); /* AMD Ethernet controller */ |
14 | case 2: return -1; | 15 | case 2: return -1; |
15 | case 3: return -1; | 16 | case 3: return -1; |
16 | case 4: return -1; | 17 | case 4: return -1; |
diff --git a/arch/sh/drivers/pci/fixups-sh03.c b/arch/sh/drivers/pci/fixups-sh03.c index 1615e5906168..16207bef9f52 100644 --- a/arch/sh/drivers/pci/fixups-sh03.c +++ b/arch/sh/drivers/pci/fixups-sh03.c | |||
@@ -2,6 +2,7 @@ | |||
2 | #include <linux/init.h> | 2 | #include <linux/init.h> |
3 | #include <linux/types.h> | 3 | #include <linux/types.h> |
4 | #include <linux/pci.h> | 4 | #include <linux/pci.h> |
5 | #include <linux/sh_intc.h> | ||
5 | 6 | ||
6 | int __init pcibios_map_platform_irq(const struct pci_dev *dev, u8 slot, u8 pin) | 7 | int __init pcibios_map_platform_irq(const struct pci_dev *dev, u8 slot, u8 pin) |
7 | { | 8 | { |
@@ -9,21 +10,21 @@ int __init pcibios_map_platform_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
9 | 10 | ||
10 | if (dev->bus->number == 0) { | 11 | if (dev->bus->number == 0) { |
11 | switch (slot) { | 12 | switch (slot) { |
12 | case 4: return 5; /* eth0 */ | 13 | case 4: return evt2irq(0x2a0); /* eth0 */ |
13 | case 8: return 5; /* eth1 */ | 14 | case 8: return evt2irq(0x2a0); /* eth1 */ |
14 | case 6: return 2; /* PCI bridge */ | 15 | case 6: return evt2irq(0x240); /* PCI bridge */ |
15 | default: | 16 | default: |
16 | printk(KERN_ERR "PCI: Bad IRQ mapping request " | 17 | printk(KERN_ERR "PCI: Bad IRQ mapping request " |
17 | "for slot %d\n", slot); | 18 | "for slot %d\n", slot); |
18 | return 2; | 19 | return evt2irq(0x240); |
19 | } | 20 | } |
20 | } else { | 21 | } else { |
21 | switch (pin) { | 22 | switch (pin) { |
22 | case 0: irq = 2; break; | 23 | case 0: irq = evt2irq(0x240); break; |
23 | case 1: irq = 2; break; | 24 | case 1: irq = evt2irq(0x240); break; |
24 | case 2: irq = 2; break; | 25 | case 2: irq = evt2irq(0x240); break; |
25 | case 3: irq = 2; break; | 26 | case 3: irq = evt2irq(0x240); break; |
26 | case 4: irq = 2; break; | 27 | case 4: irq = evt2irq(0x240); break; |
27 | default: irq = -1; break; | 28 | default: irq = -1; break; |
28 | } | 29 | } |
29 | } | 30 | } |
diff --git a/arch/sh/drivers/pci/fixups-snapgear.c b/arch/sh/drivers/pci/fixups-snapgear.c index 4a093c648d12..6e33ba4cd076 100644 --- a/arch/sh/drivers/pci/fixups-snapgear.c +++ b/arch/sh/drivers/pci/fixups-snapgear.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/types.h> | 16 | #include <linux/types.h> |
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <linux/pci.h> | 18 | #include <linux/pci.h> |
19 | #include <linux/sh_intc.h> | ||
19 | #include "pci-sh4.h" | 20 | #include "pci-sh4.h" |
20 | 21 | ||
21 | int __init pcibios_map_platform_irq(const struct pci_dev *pdev, u8 slot, u8 pin) | 22 | int __init pcibios_map_platform_irq(const struct pci_dev *pdev, u8 slot, u8 pin) |
@@ -24,11 +25,11 @@ int __init pcibios_map_platform_irq(const struct pci_dev *pdev, u8 slot, u8 pin) | |||
24 | 25 | ||
25 | switch (slot) { | 26 | switch (slot) { |
26 | case 8: /* the PCI bridge */ break; | 27 | case 8: /* the PCI bridge */ break; |
27 | case 11: irq = 8; break; /* USB */ | 28 | case 11: irq = evt2irq(0x300); break; /* USB */ |
28 | case 12: irq = 11; break; /* PCMCIA */ | 29 | case 12: irq = evt2irq(0x360); break; /* PCMCIA */ |
29 | case 13: irq = 5; break; /* eth0 */ | 30 | case 13: irq = evt2irq(0x2a0); break; /* eth0 */ |
30 | case 14: irq = 8; break; /* eth1 */ | 31 | case 14: irq = evt2irq(0x300); break; /* eth1 */ |
31 | case 15: irq = 11; break; /* safenet (unused) */ | 32 | case 15: irq = evt2irq(0x360); break; /* safenet (unused) */ |
32 | } | 33 | } |
33 | 34 | ||
34 | printk("PCI: Mapping SnapGear IRQ for slot %d, pin %c to irq %d\n", | 35 | printk("PCI: Mapping SnapGear IRQ for slot %d, pin %c to irq %d\n", |
diff --git a/arch/sh/drivers/pci/pcie-sh7786.c b/arch/sh/drivers/pci/pcie-sh7786.c index 4df27c4fbf99..c045142f7338 100644 --- a/arch/sh/drivers/pci/pcie-sh7786.c +++ b/arch/sh/drivers/pci/pcie-sh7786.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/slab.h> | 18 | #include <linux/slab.h> |
19 | #include <linux/clk.h> | 19 | #include <linux/clk.h> |
20 | #include <linux/sh_clk.h> | 20 | #include <linux/sh_clk.h> |
21 | #include <linux/sh_intc.h> | ||
21 | #include "pcie-sh7786.h" | 22 | #include "pcie-sh7786.h" |
22 | #include <asm/sizes.h> | 23 | #include <asm/sizes.h> |
23 | 24 | ||
@@ -468,7 +469,7 @@ static int __init pcie_init(struct sh7786_pcie_port *port) | |||
468 | 469 | ||
469 | int __init pcibios_map_platform_irq(const struct pci_dev *pdev, u8 slot, u8 pin) | 470 | int __init pcibios_map_platform_irq(const struct pci_dev *pdev, u8 slot, u8 pin) |
470 | { | 471 | { |
471 | return 71; | 472 | return evt2irq(0xae0); |
472 | } | 473 | } |
473 | 474 | ||
474 | static int __init sh7786_pcie_core_init(void) | 475 | static int __init sh7786_pcie_core_init(void) |
diff --git a/arch/sh/include/asm/i2c-sh7760.h b/arch/sh/include/asm/i2c-sh7760.h index 24182116711f..69fee1239b03 100644 --- a/arch/sh/include/asm/i2c-sh7760.h +++ b/arch/sh/include/asm/i2c-sh7760.h | |||
@@ -9,11 +9,9 @@ | |||
9 | 9 | ||
10 | #define SH7760_I2C0_MMIO 0xFE140000 | 10 | #define SH7760_I2C0_MMIO 0xFE140000 |
11 | #define SH7760_I2C0_MMIOEND 0xFE14003B | 11 | #define SH7760_I2C0_MMIOEND 0xFE14003B |
12 | #define SH7760_I2C0_IRQ 62 | ||
13 | 12 | ||
14 | #define SH7760_I2C1_MMIO 0xFE150000 | 13 | #define SH7760_I2C1_MMIO 0xFE150000 |
15 | #define SH7760_I2C1_MMIOEND 0xFE15003B | 14 | #define SH7760_I2C1_MMIOEND 0xFE15003B |
16 | #define SH7760_I2C1_IRQ 63 | ||
17 | 15 | ||
18 | struct sh7760_i2c_platdata { | 16 | struct sh7760_i2c_platdata { |
19 | unsigned int speed_khz; | 17 | unsigned int speed_khz; |
diff --git a/arch/sh/include/cpu-sh3/cpu/dma.h b/arch/sh/include/cpu-sh3/cpu/dma.h index 24e28b91c9d5..27a90ad0bcec 100644 --- a/arch/sh/include/cpu-sh3/cpu/dma.h +++ b/arch/sh/include/cpu-sh3/cpu/dma.h | |||
@@ -1,6 +1,8 @@ | |||
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 | #include <linux/sh_intc.h> | ||
5 | |||
4 | #if defined(CONFIG_CPU_SUBTYPE_SH7720) || \ | 6 | #if defined(CONFIG_CPU_SUBTYPE_SH7720) || \ |
5 | defined(CONFIG_CPU_SUBTYPE_SH7721) || \ | 7 | defined(CONFIG_CPU_SUBTYPE_SH7721) || \ |
6 | defined(CONFIG_CPU_SUBTYPE_SH7710) || \ | 8 | defined(CONFIG_CPU_SUBTYPE_SH7710) || \ |
@@ -10,8 +12,8 @@ | |||
10 | #define SH_DMAC_BASE0 0xa4000020 | 12 | #define SH_DMAC_BASE0 0xa4000020 |
11 | #endif | 13 | #endif |
12 | 14 | ||
13 | #define DMTE0_IRQ 48 | 15 | #define DMTE0_IRQ evt2irq(0x800) |
14 | #define DMTE4_IRQ 76 | 16 | #define DMTE4_IRQ evt2irq(0xb80) |
15 | 17 | ||
16 | /* Definitions for the SuperH DMAC */ | 18 | /* Definitions for the SuperH DMAC */ |
17 | #define TM_BURST 0x00000020 | 19 | #define TM_BURST 0x00000020 |
diff --git a/arch/sh/include/cpu-sh4/cpu/dma-sh4a.h b/arch/sh/include/cpu-sh4/cpu/dma-sh4a.h index 9647e681fd27..f280410c93ae 100644 --- a/arch/sh/include/cpu-sh4/cpu/dma-sh4a.h +++ b/arch/sh/include/cpu-sh4/cpu/dma-sh4a.h | |||
@@ -1,75 +1,77 @@ | |||
1 | #ifndef __ASM_SH_CPU_SH4_DMA_SH7780_H | 1 | #ifndef __ASM_SH_CPU_SH4_DMA_SH7780_H |
2 | #define __ASM_SH_CPU_SH4_DMA_SH7780_H | 2 | #define __ASM_SH_CPU_SH4_DMA_SH7780_H |
3 | 3 | ||
4 | #include <linux/sh_intc.h> | ||
5 | |||
4 | #if defined(CONFIG_CPU_SUBTYPE_SH7343) || \ | 6 | #if defined(CONFIG_CPU_SUBTYPE_SH7343) || \ |
5 | defined(CONFIG_CPU_SUBTYPE_SH7730) | 7 | defined(CONFIG_CPU_SUBTYPE_SH7730) |
6 | #define DMTE0_IRQ 48 | 8 | #define DMTE0_IRQ evt2irq(0x800) |
7 | #define DMTE4_IRQ 76 | 9 | #define DMTE4_IRQ evt2irq(0xb80) |
8 | #define DMAE0_IRQ 78 /* DMA Error IRQ*/ | 10 | #define DMAE0_IRQ evt2irq(0xbc0) /* DMA Error IRQ*/ |
9 | #define SH_DMAC_BASE0 0xFE008020 | 11 | #define SH_DMAC_BASE0 0xFE008020 |
10 | #define SH_DMARS_BASE0 0xFE009000 | 12 | #define SH_DMARS_BASE0 0xFE009000 |
11 | #elif defined(CONFIG_CPU_SUBTYPE_SH7722) | 13 | #elif defined(CONFIG_CPU_SUBTYPE_SH7722) |
12 | #define DMTE0_IRQ 48 | 14 | #define DMTE0_IRQ evt2irq(0x800) |
13 | #define DMTE4_IRQ 76 | 15 | #define DMTE4_IRQ evt2irq(0xb80) |
14 | #define DMAE0_IRQ 78 /* DMA Error IRQ*/ | 16 | #define DMAE0_IRQ evt2irq(0xbc0) /* DMA Error IRQ*/ |
15 | #define SH_DMAC_BASE0 0xFE008020 | 17 | #define SH_DMAC_BASE0 0xFE008020 |
16 | #define SH_DMARS_BASE0 0xFE009000 | 18 | #define SH_DMARS_BASE0 0xFE009000 |
17 | #elif defined(CONFIG_CPU_SUBTYPE_SH7763) || \ | 19 | #elif defined(CONFIG_CPU_SUBTYPE_SH7763) || \ |
18 | defined(CONFIG_CPU_SUBTYPE_SH7764) | 20 | defined(CONFIG_CPU_SUBTYPE_SH7764) |
19 | #define DMTE0_IRQ 34 | 21 | #define DMTE0_IRQ evt2irq(0x640) |
20 | #define DMTE4_IRQ 44 | 22 | #define DMTE4_IRQ evt2irq(0x780) |
21 | #define DMAE0_IRQ 38 | 23 | #define DMAE0_IRQ evt2irq(0x6c0) |
22 | #define SH_DMAC_BASE0 0xFF608020 | 24 | #define SH_DMAC_BASE0 0xFF608020 |
23 | #define SH_DMARS_BASE0 0xFF609000 | 25 | #define SH_DMARS_BASE0 0xFF609000 |
24 | #elif defined(CONFIG_CPU_SUBTYPE_SH7723) | 26 | #elif defined(CONFIG_CPU_SUBTYPE_SH7723) |
25 | #define DMTE0_IRQ 48 /* DMAC0A*/ | 27 | #define DMTE0_IRQ evt2irq(0x800) /* DMAC0A*/ |
26 | #define DMTE4_IRQ 76 /* DMAC0B */ | 28 | #define DMTE4_IRQ evt2irq(0xb80) /* DMAC0B */ |
27 | #define DMTE6_IRQ 40 | 29 | #define DMTE6_IRQ evt2irq(0x700) |
28 | #define DMTE8_IRQ 42 /* DMAC1A */ | 30 | #define DMTE8_IRQ evt2irq(0x740) /* DMAC1A */ |
29 | #define DMTE9_IRQ 43 | 31 | #define DMTE9_IRQ evt2irq(0x760) |
30 | #define DMTE10_IRQ 72 /* DMAC1B */ | 32 | #define DMTE10_IRQ evt2irq(0xb00) /* DMAC1B */ |
31 | #define DMTE11_IRQ 73 | 33 | #define DMTE11_IRQ evt2irq(0xb20) |
32 | #define DMAE0_IRQ 78 /* DMA Error IRQ*/ | 34 | #define DMAE0_IRQ evt2irq(0xbc0) /* DMA Error IRQ*/ |
33 | #define DMAE1_IRQ 74 /* DMA Error IRQ*/ | 35 | #define DMAE1_IRQ evt2irq(0xb40) /* DMA Error IRQ*/ |
34 | #define SH_DMAC_BASE0 0xFE008020 | 36 | #define SH_DMAC_BASE0 0xFE008020 |
35 | #define SH_DMAC_BASE1 0xFDC08020 | 37 | #define SH_DMAC_BASE1 0xFDC08020 |
36 | #define SH_DMARS_BASE0 0xFDC09000 | 38 | #define SH_DMARS_BASE0 0xFDC09000 |
37 | #elif defined(CONFIG_CPU_SUBTYPE_SH7724) | 39 | #elif defined(CONFIG_CPU_SUBTYPE_SH7724) |
38 | #define DMTE0_IRQ 48 /* DMAC0A*/ | 40 | #define DMTE0_IRQ evt2irq(0x800) /* DMAC0A*/ |
39 | #define DMTE4_IRQ 76 /* DMAC0B */ | 41 | #define DMTE4_IRQ evt2irq(0xb80) /* DMAC0B */ |
40 | #define DMTE6_IRQ 40 | 42 | #define DMTE6_IRQ evt2irq(0x700) |
41 | #define DMTE8_IRQ 42 /* DMAC1A */ | 43 | #define DMTE8_IRQ evt2irq(0x740) /* DMAC1A */ |
42 | #define DMTE9_IRQ 43 | 44 | #define DMTE9_IRQ evt2irq(0x760) |
43 | #define DMTE10_IRQ 72 /* DMAC1B */ | 45 | #define DMTE10_IRQ evt2irq(0xb00) /* DMAC1B */ |
44 | #define DMTE11_IRQ 73 | 46 | #define DMTE11_IRQ evt2irq(0xb20) |
45 | #define DMAE0_IRQ 78 /* DMA Error IRQ*/ | 47 | #define DMAE0_IRQ evt2irq(0xbc0) /* DMA Error IRQ*/ |
46 | #define DMAE1_IRQ 74 /* DMA Error IRQ*/ | 48 | #define DMAE1_IRQ evt2irq(0xb40) /* DMA Error IRQ*/ |
47 | #define SH_DMAC_BASE0 0xFE008020 | 49 | #define SH_DMAC_BASE0 0xFE008020 |
48 | #define SH_DMAC_BASE1 0xFDC08020 | 50 | #define SH_DMAC_BASE1 0xFDC08020 |
49 | #define SH_DMARS_BASE0 0xFE009000 | 51 | #define SH_DMARS_BASE0 0xFE009000 |
50 | #define SH_DMARS_BASE1 0xFDC09000 | 52 | #define SH_DMARS_BASE1 0xFDC09000 |
51 | #elif defined(CONFIG_CPU_SUBTYPE_SH7780) | 53 | #elif defined(CONFIG_CPU_SUBTYPE_SH7780) |
52 | #define DMTE0_IRQ 34 | 54 | #define DMTE0_IRQ evt2irq(0x640) |
53 | #define DMTE4_IRQ 44 | 55 | #define DMTE4_IRQ evt2irq(0x780) |
54 | #define DMTE6_IRQ 46 | 56 | #define DMTE6_IRQ evt2irq(0x7c0) |
55 | #define DMTE8_IRQ 92 | 57 | #define DMTE8_IRQ evt2irq(0xd80) |
56 | #define DMTE9_IRQ 93 | 58 | #define DMTE9_IRQ evt2irq(0xda0) |
57 | #define DMTE10_IRQ 94 | 59 | #define DMTE10_IRQ evt2irq(0xdc0) |
58 | #define DMTE11_IRQ 95 | 60 | #define DMTE11_IRQ evt2irq(0xde0) |
59 | #define DMAE0_IRQ 38 /* DMA Error IRQ */ | 61 | #define DMAE0_IRQ evt2irq(0x6c0) /* DMA Error IRQ */ |
60 | #define SH_DMAC_BASE0 0xFC808020 | 62 | #define SH_DMAC_BASE0 0xFC808020 |
61 | #define SH_DMAC_BASE1 0xFC818020 | 63 | #define SH_DMAC_BASE1 0xFC818020 |
62 | #define SH_DMARS_BASE0 0xFC809000 | 64 | #define SH_DMARS_BASE0 0xFC809000 |
63 | #else /* SH7785 */ | 65 | #else /* SH7785 */ |
64 | #define DMTE0_IRQ 33 | 66 | #define DMTE0_IRQ evt2irq(0x620) |
65 | #define DMTE4_IRQ 37 | 67 | #define DMTE4_IRQ evt2irq(0x6a0) |
66 | #define DMTE6_IRQ 52 | 68 | #define DMTE6_IRQ evt2irq(0x880) |
67 | #define DMTE8_IRQ 54 | 69 | #define DMTE8_IRQ evt2irq(0x8c0) |
68 | #define DMTE9_IRQ 55 | 70 | #define DMTE9_IRQ evt2irq(0x8e0) |
69 | #define DMTE10_IRQ 56 | 71 | #define DMTE10_IRQ evt2irq(0x900) |
70 | #define DMTE11_IRQ 57 | 72 | #define DMTE11_IRQ evt2irq(0x920) |
71 | #define DMAE0_IRQ 39 /* DMA Error IRQ0 */ | 73 | #define DMAE0_IRQ evt2irq(0x6e0) /* DMA Error IRQ0 */ |
72 | #define DMAE1_IRQ 58 /* DMA Error IRQ1 */ | 74 | #define DMAE1_IRQ evt2irq(0x940) /* DMA Error IRQ1 */ |
73 | #define SH_DMAC_BASE0 0xFC808020 | 75 | #define SH_DMAC_BASE0 0xFC808020 |
74 | #define SH_DMAC_BASE1 0xFCC08020 | 76 | #define SH_DMAC_BASE1 0xFCC08020 |
75 | #define SH_DMARS_BASE0 0xFC809000 | 77 | #define SH_DMARS_BASE0 0xFC809000 |
diff --git a/arch/sh/include/cpu-sh4/cpu/dma.h b/arch/sh/include/cpu-sh4/cpu/dma.h index ca747e93c2ed..9d32e2dd2554 100644 --- a/arch/sh/include/cpu-sh4/cpu/dma.h +++ b/arch/sh/include/cpu-sh4/cpu/dma.h | |||
@@ -8,13 +8,16 @@ | |||
8 | #include <cpu/dma-sh4a.h> | 8 | #include <cpu/dma-sh4a.h> |
9 | 9 | ||
10 | #else /* CONFIG_CPU_SH4A */ | 10 | #else /* CONFIG_CPU_SH4A */ |
11 | |||
12 | #include <linux/sh_intc.h> | ||
13 | |||
11 | /* | 14 | /* |
12 | * SH7750/SH7751/SH7760 | 15 | * SH7750/SH7751/SH7760 |
13 | */ | 16 | */ |
14 | #define DMTE0_IRQ 34 | 17 | #define DMTE0_IRQ evt2irq(0x640) |
15 | #define DMTE4_IRQ 44 | 18 | #define DMTE4_IRQ evt2irq(0x780) |
16 | #define DMTE6_IRQ 46 | 19 | #define DMTE6_IRQ evt2irq(0x7c0) |
17 | #define DMAE0_IRQ 38 | 20 | #define DMAE0_IRQ evt2irq(0x6c0) |
18 | 21 | ||
19 | #define SH_DMAC_BASE0 0xffa00000 | 22 | #define SH_DMAC_BASE0 0xffa00000 |
20 | #define SH_DMAC_BASE1 0xffa00070 | 23 | #define SH_DMAC_BASE1 0xffa00070 |
diff --git a/arch/sh/include/mach-common/mach/hp6xx.h b/arch/sh/include/mach-common/mach/hp6xx.h index bcc301ac12f4..6aaaf8596e6a 100644 --- a/arch/sh/include/mach-common/mach/hp6xx.h +++ b/arch/sh/include/mach-common/mach/hp6xx.h | |||
@@ -9,10 +9,11 @@ | |||
9 | * for more details. | 9 | * for more details. |
10 | * | 10 | * |
11 | */ | 11 | */ |
12 | #include <linux/sh_intc.h> | ||
12 | 13 | ||
13 | #define HP680_BTN_IRQ 32 /* IRQ0_IRQ */ | 14 | #define HP680_BTN_IRQ evt2irq(0x600) /* IRQ0_IRQ */ |
14 | #define HP680_TS_IRQ 35 /* IRQ3_IRQ */ | 15 | #define HP680_TS_IRQ evt2irq(0x660) /* IRQ3_IRQ */ |
15 | #define HP680_HD64461_IRQ 36 /* IRQ4_IRQ */ | 16 | #define HP680_HD64461_IRQ evt2irq(0x680) /* IRQ4_IRQ */ |
16 | 17 | ||
17 | #define DAC_LCD_BRIGHTNESS 0 | 18 | #define DAC_LCD_BRIGHTNESS 0 |
18 | #define DAC_SPEAKER_VOLUME 1 | 19 | #define DAC_SPEAKER_VOLUME 1 |
diff --git a/arch/sh/include/mach-common/mach/lboxre2.h b/arch/sh/include/mach-common/mach/lboxre2.h index e6d160504923..3a4dcc5c74ee 100644 --- a/arch/sh/include/mach-common/mach/lboxre2.h +++ b/arch/sh/include/mach-common/mach/lboxre2.h | |||
@@ -11,13 +11,14 @@ | |||
11 | * for more details. | 11 | * for more details. |
12 | * | 12 | * |
13 | */ | 13 | */ |
14 | #include <linux/sh_intc.h> | ||
14 | 15 | ||
15 | #define IRQ_CF1 9 /* CF1 */ | 16 | #define IRQ_CF1 evt2irq(0x320) /* CF1 */ |
16 | #define IRQ_CF0 10 /* CF0 */ | 17 | #define IRQ_CF0 evt2irq(0x340) /* CF0 */ |
17 | #define IRQ_INTD 11 /* INTD */ | 18 | #define IRQ_INTD evt2irq(0x360) /* INTD */ |
18 | #define IRQ_ETH1 12 /* Ether1 */ | 19 | #define IRQ_ETH1 evt2irq(0x380) /* Ether1 */ |
19 | #define IRQ_ETH0 13 /* Ether0 */ | 20 | #define IRQ_ETH0 evt2irq(0x3a0) /* Ether0 */ |
20 | #define IRQ_INTA 14 /* INTA */ | 21 | #define IRQ_INTA evt2irq(0x3c0) /* INTA */ |
21 | 22 | ||
22 | void init_lboxre2_IRQ(void); | 23 | void init_lboxre2_IRQ(void); |
23 | 24 | ||
diff --git a/arch/sh/include/mach-common/mach/sdk7780.h b/arch/sh/include/mach-common/mach/sdk7780.h index 697dc865f21b..ce64e02e9b50 100644 --- a/arch/sh/include/mach-common/mach/sdk7780.h +++ b/arch/sh/include/mach-common/mach/sdk7780.h | |||
@@ -11,6 +11,7 @@ | |||
11 | * License. See the file "COPYING" in the main directory of this archive | 11 | * License. See the file "COPYING" in the main directory of this archive |
12 | * for more details. | 12 | * for more details. |
13 | */ | 13 | */ |
14 | #include <linux/sh_intc.h> | ||
14 | #include <asm/addrspace.h> | 15 | #include <asm/addrspace.h> |
15 | 16 | ||
16 | /* Box specific addresses. */ | 17 | /* Box specific addresses. */ |
@@ -67,9 +68,9 @@ | |||
67 | 68 | ||
68 | #define SDK7780_NR_IRL 15 | 69 | #define SDK7780_NR_IRL 15 |
69 | /* IDE/ATA interrupt */ | 70 | /* IDE/ATA interrupt */ |
70 | #define IRQ_CFCARD 14 | 71 | #define IRQ_CFCARD evt2irq(0x3c0) |
71 | /* SMC interrupt */ | 72 | /* SMC interrupt */ |
72 | #define IRQ_ETHERNET 6 | 73 | #define IRQ_ETHERNET evt2irq(0x2c0) |
73 | 74 | ||
74 | 75 | ||
75 | /* arch/sh/boards/renesas/sdk7780/irq.c */ | 76 | /* arch/sh/boards/renesas/sdk7780/irq.c */ |
diff --git a/arch/sh/include/mach-common/mach/titan.h b/arch/sh/include/mach-common/mach/titan.h index 4a674d27cbb8..fa3cd801cf2e 100644 --- a/arch/sh/include/mach-common/mach/titan.h +++ b/arch/sh/include/mach-common/mach/titan.h | |||
@@ -4,14 +4,16 @@ | |||
4 | #ifndef _ASM_SH_TITAN_H | 4 | #ifndef _ASM_SH_TITAN_H |
5 | #define _ASM_SH_TITAN_H | 5 | #define _ASM_SH_TITAN_H |
6 | 6 | ||
7 | #include <linux/sh_intc.h> | ||
8 | |||
7 | #define __IO_PREFIX titan | 9 | #define __IO_PREFIX titan |
8 | #include <asm/io_generic.h> | 10 | #include <asm/io_generic.h> |
9 | 11 | ||
10 | /* IRQ assignments */ | 12 | /* IRQ assignments */ |
11 | #define TITAN_IRQ_WAN 2 /* eth0 (WAN) */ | 13 | #define TITAN_IRQ_WAN evt2irq(0x240) /* eth0 (WAN) */ |
12 | #define TITAN_IRQ_LAN 5 /* eth1 (LAN) */ | 14 | #define TITAN_IRQ_LAN evt2irq(0x2a0) /* eth1 (LAN) */ |
13 | #define TITAN_IRQ_MPCIA 8 /* mPCI A */ | 15 | #define TITAN_IRQ_MPCIA evt2irq(0x300) /* mPCI A */ |
14 | #define TITAN_IRQ_MPCIB 11 /* mPCI B */ | 16 | #define TITAN_IRQ_MPCIB evt2irq(0x360) /* mPCI B */ |
15 | #define TITAN_IRQ_USB 11 /* USB */ | 17 | #define TITAN_IRQ_USB evt2irq(0x360) /* USB */ |
16 | 18 | ||
17 | #endif /* __ASM_SH_TITAN_H */ | 19 | #endif /* __ASM_SH_TITAN_H */ |
diff --git a/arch/sh/include/mach-landisk/mach/iodata_landisk.h b/arch/sh/include/mach-landisk/mach/iodata_landisk.h index f432773a9571..ceeea48cc7af 100644 --- a/arch/sh/include/mach-landisk/mach/iodata_landisk.h +++ b/arch/sh/include/mach-landisk/mach/iodata_landisk.h | |||
@@ -8,6 +8,7 @@ | |||
8 | * | 8 | * |
9 | * IO-DATA LANDISK support | 9 | * IO-DATA LANDISK support |
10 | */ | 10 | */ |
11 | #include <linux/sh_intc.h> | ||
11 | 12 | ||
12 | /* Box specific addresses. */ | 13 | /* Box specific addresses. */ |
13 | 14 | ||
@@ -25,15 +26,15 @@ | |||
25 | #define PA_PIDE_OFFSET 0x40 /* CF IDE Offset */ | 26 | #define PA_PIDE_OFFSET 0x40 /* CF IDE Offset */ |
26 | #define PA_SIDE_OFFSET 0x40 /* HDD IDE Offset */ | 27 | #define PA_SIDE_OFFSET 0x40 /* HDD IDE Offset */ |
27 | 28 | ||
28 | #define IRQ_PCIINTA 5 /* PCI INTA IRQ */ | 29 | #define IRQ_PCIINTA evt2irq(0x2a0) /* PCI INTA IRQ */ |
29 | #define IRQ_PCIINTB 6 /* PCI INTB IRQ */ | 30 | #define IRQ_PCIINTB evt2irq(0x2c0) /* PCI INTB IRQ */ |
30 | #define IRQ_PCIINTC 7 /* PCI INTC IRQ */ | 31 | #define IRQ_PCIINTC evt2irq(0x2e0) /* PCI INTC IRQ */ |
31 | #define IRQ_PCIINTD 8 /* PCI INTD IRQ */ | 32 | #define IRQ_PCIINTD evt2irq(0x300) /* PCI INTD IRQ */ |
32 | #define IRQ_ATA 9 /* ATA IRQ */ | 33 | #define IRQ_ATA evt2irq(0x320) /* ATA IRQ */ |
33 | #define IRQ_FATA 10 /* FATA IRQ */ | 34 | #define IRQ_FATA evt2irq(0x340) /* FATA IRQ */ |
34 | #define IRQ_POWER 11 /* Power Switch IRQ */ | 35 | #define IRQ_POWER evt2irq(0x360) /* Power Switch IRQ */ |
35 | #define IRQ_BUTTON 12 /* USL-5P Button IRQ */ | 36 | #define IRQ_BUTTON evt2irq(0x380) /* USL-5P Button IRQ */ |
36 | #define IRQ_FAULT 13 /* USL-5P Fault IRQ */ | 37 | #define IRQ_FAULT evt2irq(0x3a0) /* USL-5P Fault IRQ */ |
37 | 38 | ||
38 | void init_landisk_IRQ(void); | 39 | void init_landisk_IRQ(void); |
39 | 40 | ||
diff --git a/arch/sh/include/mach-se/mach/se.h b/arch/sh/include/mach-se/mach/se.h index 14be91c5a2f0..8a6d44b4987b 100644 --- a/arch/sh/include/mach-se/mach/se.h +++ b/arch/sh/include/mach-se/mach/se.h | |||
@@ -8,6 +8,7 @@ | |||
8 | * | 8 | * |
9 | * Hitachi SolutionEngine support | 9 | * Hitachi SolutionEngine support |
10 | */ | 10 | */ |
11 | #include <linux/sh_intc.h> | ||
11 | 12 | ||
12 | /* Box specific addresses. */ | 13 | /* Box specific addresses. */ |
13 | 14 | ||
@@ -82,16 +83,16 @@ | |||
82 | #define INTC_IPRD 0xa4000018UL | 83 | #define INTC_IPRD 0xa4000018UL |
83 | #define INTC_IPRE 0xa400001aUL | 84 | #define INTC_IPRE 0xa400001aUL |
84 | 85 | ||
85 | #define IRQ0_IRQ 32 | 86 | #define IRQ0_IRQ evt2irq(0x600) |
86 | #define IRQ1_IRQ 33 | 87 | #define IRQ1_IRQ evt2irq(0x620) |
87 | #endif | 88 | #endif |
88 | 89 | ||
89 | #if defined(CONFIG_CPU_SUBTYPE_SH7705) | 90 | #if defined(CONFIG_CPU_SUBTYPE_SH7705) |
90 | #define IRQ_STNIC 12 | 91 | #define IRQ_STNIC evt2irq(0x380) |
91 | #define IRQ_CFCARD 14 | 92 | #define IRQ_CFCARD evt2irq(0x3c0) |
92 | #else | 93 | #else |
93 | #define IRQ_STNIC 10 | 94 | #define IRQ_STNIC evt2irq(0x340) |
94 | #define IRQ_CFCARD 7 | 95 | #define IRQ_CFCARD evt2irq(0x2e0) |
95 | #endif | 96 | #endif |
96 | 97 | ||
97 | /* SH Ether support (SH7710/SH7712) */ | 98 | /* SH Ether support (SH7710/SH7712) */ |
@@ -105,9 +106,9 @@ | |||
105 | # define PHY_ID 0x01 | 106 | # define PHY_ID 0x01 |
106 | #endif | 107 | #endif |
107 | /* Ether IRQ */ | 108 | /* Ether IRQ */ |
108 | #define SH_ETH0_IRQ 80 | 109 | #define SH_ETH0_IRQ evt2irq(0xc00) |
109 | #define SH_ETH1_IRQ 81 | 110 | #define SH_ETH1_IRQ evt2irq(0xc20) |
110 | #define SH_TSU_IRQ 82 | 111 | #define SH_TSU_IRQ evt2irq(0xc40) |
111 | 112 | ||
112 | void init_se_IRQ(void); | 113 | void init_se_IRQ(void); |
113 | 114 | ||
diff --git a/arch/sh/include/mach-se/mach/se7343.h b/arch/sh/include/mach-se/mach/se7343.h index 8d8170d6cc43..50b5d575dff0 100644 --- a/arch/sh/include/mach-se/mach/se7343.h +++ b/arch/sh/include/mach-se/mach/se7343.h | |||
@@ -8,6 +8,7 @@ | |||
8 | * | 8 | * |
9 | * SH-Mobile SolutionEngine 7343 support | 9 | * SH-Mobile SolutionEngine 7343 support |
10 | */ | 10 | */ |
11 | #include <linux/sh_intc.h> | ||
11 | 12 | ||
12 | /* Box specific addresses. */ | 13 | /* Box specific addresses. */ |
13 | 14 | ||
@@ -118,10 +119,10 @@ | |||
118 | #define FPGA_IN 0xb1400000 | 119 | #define FPGA_IN 0xb1400000 |
119 | #define FPGA_OUT 0xb1400002 | 120 | #define FPGA_OUT 0xb1400002 |
120 | 121 | ||
121 | #define IRQ0_IRQ 32 | 122 | #define IRQ0_IRQ evt2irq(0x600) |
122 | #define IRQ1_IRQ 33 | 123 | #define IRQ1_IRQ evt2irq(0x620) |
123 | #define IRQ4_IRQ 36 | 124 | #define IRQ4_IRQ evt2irq(0x680) |
124 | #define IRQ5_IRQ 37 | 125 | #define IRQ5_IRQ evt2irq(0x6a0) |
125 | 126 | ||
126 | #define SE7343_FPGA_IRQ_MRSHPC0 0 | 127 | #define SE7343_FPGA_IRQ_MRSHPC0 0 |
127 | #define SE7343_FPGA_IRQ_MRSHPC1 1 | 128 | #define SE7343_FPGA_IRQ_MRSHPC1 1 |
diff --git a/arch/sh/include/mach-se/mach/se7721.h b/arch/sh/include/mach-se/mach/se7721.h index b957f6041193..eabd0538de44 100644 --- a/arch/sh/include/mach-se/mach/se7721.h +++ b/arch/sh/include/mach-se/mach/se7721.h | |||
@@ -11,6 +11,8 @@ | |||
11 | 11 | ||
12 | #ifndef __ASM_SH_SE7721_H | 12 | #ifndef __ASM_SH_SE7721_H |
13 | #define __ASM_SH_SE7721_H | 13 | #define __ASM_SH_SE7721_H |
14 | |||
15 | #include <linux/sh_intc.h> | ||
14 | #include <asm/addrspace.h> | 16 | #include <asm/addrspace.h> |
15 | 17 | ||
16 | /* Box specific addresses. */ | 18 | /* Box specific addresses. */ |
@@ -49,9 +51,9 @@ | |||
49 | #define MRSHPC_PCIC_INFO (PA_MRSHPC + 30) | 51 | #define MRSHPC_PCIC_INFO (PA_MRSHPC + 30) |
50 | 52 | ||
51 | #define PA_LED 0xB6800000 /* 8bit LED */ | 53 | #define PA_LED 0xB6800000 /* 8bit LED */ |
52 | #define PA_FPGA 0xB7000000 /* FPGA base address */ | 54 | #define PA_FPGA 0xB7000000 /* FPGA base address */ |
53 | 55 | ||
54 | #define MRSHPC_IRQ0 10 | 56 | #define MRSHPC_IRQ0 evt2irq(0x340) |
55 | 57 | ||
56 | #define FPGA_ILSR1 (PA_FPGA + 0x02) | 58 | #define FPGA_ILSR1 (PA_FPGA + 0x02) |
57 | #define FPGA_ILSR2 (PA_FPGA + 0x03) | 59 | #define FPGA_ILSR2 (PA_FPGA + 0x03) |
diff --git a/arch/sh/include/mach-se/mach/se7722.h b/arch/sh/include/mach-se/mach/se7722.h index 16505bfb8a9e..201081ebdbce 100644 --- a/arch/sh/include/mach-se/mach/se7722.h +++ b/arch/sh/include/mach-se/mach/se7722.h | |||
@@ -13,6 +13,7 @@ | |||
13 | * for more details. | 13 | * for more details. |
14 | * | 14 | * |
15 | */ | 15 | */ |
16 | #include <linux/sh_intc.h> | ||
16 | #include <asm/addrspace.h> | 17 | #include <asm/addrspace.h> |
17 | 18 | ||
18 | /* Box specific addresses. */ | 19 | /* Box specific addresses. */ |
@@ -31,7 +32,7 @@ | |||
31 | 32 | ||
32 | #define PA_PERIPHERAL 0xB0000000 | 33 | #define PA_PERIPHERAL 0xB0000000 |
33 | 34 | ||
34 | #define PA_PCIC PA_PERIPHERAL /* MR-SHPC-01 PCMCIA */ | 35 | #define PA_PCIC PA_PERIPHERAL /* MR-SHPC-01 PCMCIA */ |
35 | #define PA_MRSHPC (PA_PERIPHERAL + 0x003fffe0) /* MR-SHPC-01 PCMCIA controller */ | 36 | #define PA_MRSHPC (PA_PERIPHERAL + 0x003fffe0) /* MR-SHPC-01 PCMCIA controller */ |
36 | #define PA_MRSHPC_MW1 (PA_PERIPHERAL + 0x00400000) /* MR-SHPC-01 memory window base */ | 37 | #define PA_MRSHPC_MW1 (PA_PERIPHERAL + 0x00400000) /* MR-SHPC-01 memory window base */ |
37 | #define PA_MRSHPC_MW2 (PA_PERIPHERAL + 0x00500000) /* MR-SHPC-01 attribute window base */ | 38 | #define PA_MRSHPC_MW2 (PA_PERIPHERAL + 0x00500000) /* MR-SHPC-01 attribute window base */ |
@@ -51,7 +52,7 @@ | |||
51 | #define MRSHPC_PCIC_INFO (PA_MRSHPC + 30) | 52 | #define MRSHPC_PCIC_INFO (PA_MRSHPC + 30) |
52 | 53 | ||
53 | #define PA_LED (PA_PERIPHERAL + 0x00800000) /* 8bit LED */ | 54 | #define PA_LED (PA_PERIPHERAL + 0x00800000) /* 8bit LED */ |
54 | #define PA_FPGA (PA_PERIPHERAL + 0x01800000) /* FPGA base address */ | 55 | #define PA_FPGA (PA_PERIPHERAL + 0x01800000) /* FPGA base address */ |
55 | 56 | ||
56 | #define PA_LAN (PA_AREA6_IO + 0) /* SMC LAN91C111 */ | 57 | #define PA_LAN (PA_AREA6_IO + 0) /* SMC LAN91C111 */ |
57 | /* GPIO */ | 58 | /* GPIO */ |
@@ -77,8 +78,8 @@ | |||
77 | #define PORT_HIZCRC 0xA405015CUL | 78 | #define PORT_HIZCRC 0xA405015CUL |
78 | 79 | ||
79 | /* IRQ */ | 80 | /* IRQ */ |
80 | #define IRQ0_IRQ 32 | 81 | #define IRQ0_IRQ evt2irq(0x600) |
81 | #define IRQ1_IRQ 33 | 82 | #define IRQ1_IRQ evt2irq(0x620) |
82 | 83 | ||
83 | #define IRQ01_MODE 0xb1800000 | 84 | #define IRQ01_MODE 0xb1800000 |
84 | #define IRQ01_STS 0xb1800004 | 85 | #define IRQ01_STS 0xb1800004 |
diff --git a/arch/sh/include/mach-se/mach/se7724.h b/arch/sh/include/mach-se/mach/se7724.h index 29514a39d0f5..be842dd1ca02 100644 --- a/arch/sh/include/mach-se/mach/se7724.h +++ b/arch/sh/include/mach-se/mach/se7724.h | |||
@@ -18,6 +18,7 @@ | |||
18 | * for more details. | 18 | * for more details. |
19 | * | 19 | * |
20 | */ | 20 | */ |
21 | #include <linux/sh_intc.h> | ||
21 | #include <asm/addrspace.h> | 22 | #include <asm/addrspace.h> |
22 | 23 | ||
23 | /* SH Eth */ | 24 | /* SH Eth */ |
@@ -35,9 +36,9 @@ | |||
35 | #define IRQ2_MR (0xba200028) | 36 | #define IRQ2_MR (0xba200028) |
36 | 37 | ||
37 | /* IRQ */ | 38 | /* IRQ */ |
38 | #define IRQ0_IRQ 32 | 39 | #define IRQ0_IRQ evt2irq(0x600) |
39 | #define IRQ1_IRQ 33 | 40 | #define IRQ1_IRQ evt2irq(0x620) |
40 | #define IRQ2_IRQ 34 | 41 | #define IRQ2_IRQ evt2irq(0x640) |
41 | 42 | ||
42 | /* Bits in IRQ012 registers */ | 43 | /* Bits in IRQ012 registers */ |
43 | #define SE7724_FPGA_IRQ_BASE 220 | 44 | #define SE7724_FPGA_IRQ_BASE 220 |
diff --git a/arch/sh/include/mach-se/mach/se7751.h b/arch/sh/include/mach-se/mach/se7751.h index b36792ac5d66..271871793d59 100644 --- a/arch/sh/include/mach-se/mach/se7751.h +++ b/arch/sh/include/mach-se/mach/se7751.h | |||
@@ -11,6 +11,7 @@ | |||
11 | * Modified for 7751 Solution Engine by | 11 | * Modified for 7751 Solution Engine by |
12 | * Ian da Silva and Jeremy Siegel, 2001. | 12 | * Ian da Silva and Jeremy Siegel, 2001. |
13 | */ | 13 | */ |
14 | #include <linux/sh_intc.h> | ||
14 | 15 | ||
15 | /* Box specific addresses. */ | 16 | /* Box specific addresses. */ |
16 | 17 | ||
@@ -63,7 +64,7 @@ | |||
63 | #define BCR_ILCRF (PA_BCR + 10) | 64 | #define BCR_ILCRF (PA_BCR + 10) |
64 | #define BCR_ILCRG (PA_BCR + 12) | 65 | #define BCR_ILCRG (PA_BCR + 12) |
65 | 66 | ||
66 | #define IRQ_79C973 13 | 67 | #define IRQ_79C973 evt2irq(0x3a0) |
67 | 68 | ||
68 | void init_7751se_IRQ(void); | 69 | void init_7751se_IRQ(void); |
69 | 70 | ||
diff --git a/arch/sh/include/mach-se/mach/se7780.h b/arch/sh/include/mach-se/mach/se7780.h index 40e9b41458cd..bde357cf81bd 100644 --- a/arch/sh/include/mach-se/mach/se7780.h +++ b/arch/sh/include/mach-se/mach/se7780.h | |||
@@ -12,6 +12,7 @@ | |||
12 | * License. See the file "COPYING" in the main directory of this archive | 12 | * License. See the file "COPYING" in the main directory of this archive |
13 | * for more details. | 13 | * for more details. |
14 | */ | 14 | */ |
15 | #include <linux/sh_intc.h> | ||
15 | #include <asm/addrspace.h> | 16 | #include <asm/addrspace.h> |
16 | 17 | ||
17 | /* Box specific addresses. */ | 18 | /* Box specific addresses. */ |
@@ -80,13 +81,13 @@ | |||
80 | #define IRQPOS_PCCPW (0 * 4) | 81 | #define IRQPOS_PCCPW (0 * 4) |
81 | 82 | ||
82 | /* IDE interrupt */ | 83 | /* IDE interrupt */ |
83 | #define IRQ_IDE0 67 /* iVDR */ | 84 | #define IRQ_IDE0 evt2irq(0xa60) /* iVDR */ |
84 | 85 | ||
85 | /* SMC interrupt */ | 86 | /* SMC interrupt */ |
86 | #define SMC_IRQ 8 | 87 | #define SMC_IRQ evt2irq(0x300) |
87 | 88 | ||
88 | /* SM501 interrupt */ | 89 | /* SM501 interrupt */ |
89 | #define SM501_IRQ 0 | 90 | #define SM501_IRQ evt2irq(0x200) |
90 | 91 | ||
91 | /* interrupt pin */ | 92 | /* interrupt pin */ |
92 | #define IRQPIN_EXTINT1 0 /* IRQ0 pin */ | 93 | #define IRQPIN_EXTINT1 0 /* IRQ0 pin */ |
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7705.c b/arch/sh/kernel/cpu/sh3/setup-sh7705.c index 97416a597dd8..03e4c96f2b11 100644 --- a/arch/sh/kernel/cpu/sh3/setup-sh7705.c +++ b/arch/sh/kernel/cpu/sh3/setup-sh7705.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/serial.h> | 14 | #include <linux/serial.h> |
15 | #include <linux/serial_sci.h> | 15 | #include <linux/serial_sci.h> |
16 | #include <linux/sh_timer.h> | 16 | #include <linux/sh_timer.h> |
17 | #include <linux/sh_intc.h> | ||
17 | #include <asm/rtc.h> | 18 | #include <asm/rtc.h> |
18 | #include <cpu/serial.h> | 19 | #include <cpu/serial.h> |
19 | 20 | ||
@@ -114,7 +115,7 @@ static struct resource rtc_resources[] = { | |||
114 | .flags = IORESOURCE_IO, | 115 | .flags = IORESOURCE_IO, |
115 | }, | 116 | }, |
116 | [1] = { | 117 | [1] = { |
117 | .start = 20, | 118 | .start = evt2irq(0x480), |
118 | .flags = IORESOURCE_IRQ, | 119 | .flags = IORESOURCE_IRQ, |
119 | }, | 120 | }, |
120 | }; | 121 | }; |
@@ -146,7 +147,7 @@ static struct resource tmu0_resources[] = { | |||
146 | .flags = IORESOURCE_MEM, | 147 | .flags = IORESOURCE_MEM, |
147 | }, | 148 | }, |
148 | [1] = { | 149 | [1] = { |
149 | .start = 16, | 150 | .start = evt2irq(0x400), |
150 | .flags = IORESOURCE_IRQ, | 151 | .flags = IORESOURCE_IRQ, |
151 | }, | 152 | }, |
152 | }; | 153 | }; |
@@ -174,7 +175,7 @@ static struct resource tmu1_resources[] = { | |||
174 | .flags = IORESOURCE_MEM, | 175 | .flags = IORESOURCE_MEM, |
175 | }, | 176 | }, |
176 | [1] = { | 177 | [1] = { |
177 | .start = 17, | 178 | .start = evt2irq(0x420), |
178 | .flags = IORESOURCE_IRQ, | 179 | .flags = IORESOURCE_IRQ, |
179 | }, | 180 | }, |
180 | }; | 181 | }; |
@@ -201,7 +202,7 @@ static struct resource tmu2_resources[] = { | |||
201 | .flags = IORESOURCE_MEM, | 202 | .flags = IORESOURCE_MEM, |
202 | }, | 203 | }, |
203 | [1] = { | 204 | [1] = { |
204 | .start = 18, | 205 | .start = evt2irq(0x440), |
205 | .flags = IORESOURCE_IRQ, | 206 | .flags = IORESOURCE_IRQ, |
206 | }, | 207 | }, |
207 | }; | 208 | }; |
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh770x.c b/arch/sh/kernel/cpu/sh3/setup-sh770x.c index 50f95a32a8c5..ba26cd9ce69b 100644 --- a/arch/sh/kernel/cpu/sh3/setup-sh770x.c +++ b/arch/sh/kernel/cpu/sh3/setup-sh770x.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/serial.h> | 19 | #include <linux/serial.h> |
20 | #include <linux/serial_sci.h> | 20 | #include <linux/serial_sci.h> |
21 | #include <linux/sh_timer.h> | 21 | #include <linux/sh_timer.h> |
22 | #include <linux/sh_intc.h> | ||
22 | #include <cpu/serial.h> | 23 | #include <cpu/serial.h> |
23 | 24 | ||
24 | enum { | 25 | enum { |
@@ -95,7 +96,7 @@ static struct resource rtc_resources[] = { | |||
95 | .flags = IORESOURCE_IO, | 96 | .flags = IORESOURCE_IO, |
96 | }, | 97 | }, |
97 | [1] = { | 98 | [1] = { |
98 | .start = 20, | 99 | .start = evt2irq(0x480), |
99 | .flags = IORESOURCE_IRQ, | 100 | .flags = IORESOURCE_IRQ, |
100 | }, | 101 | }, |
101 | }; | 102 | }; |
@@ -114,7 +115,7 @@ static struct plat_sci_port scif0_platform_data = { | |||
114 | .scscr = SCSCR_TE | SCSCR_RE, | 115 | .scscr = SCSCR_TE | SCSCR_RE, |
115 | .scbrr_algo_id = SCBRR_ALGO_2, | 116 | .scbrr_algo_id = SCBRR_ALGO_2, |
116 | .type = PORT_SCI, | 117 | .type = PORT_SCI, |
117 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x4E0)), | 118 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x4e0)), |
118 | .ops = &sh770x_sci_port_ops, | 119 | .ops = &sh770x_sci_port_ops, |
119 | .regshift = 1, | 120 | .regshift = 1, |
120 | }; | 121 | }; |
@@ -184,7 +185,7 @@ static struct resource tmu0_resources[] = { | |||
184 | .flags = IORESOURCE_MEM, | 185 | .flags = IORESOURCE_MEM, |
185 | }, | 186 | }, |
186 | [1] = { | 187 | [1] = { |
187 | .start = 16, | 188 | .start = evt2irq(0x400), |
188 | .flags = IORESOURCE_IRQ, | 189 | .flags = IORESOURCE_IRQ, |
189 | }, | 190 | }, |
190 | }; | 191 | }; |
@@ -212,7 +213,7 @@ static struct resource tmu1_resources[] = { | |||
212 | .flags = IORESOURCE_MEM, | 213 | .flags = IORESOURCE_MEM, |
213 | }, | 214 | }, |
214 | [1] = { | 215 | [1] = { |
215 | .start = 17, | 216 | .start = evt2irq(0x420), |
216 | .flags = IORESOURCE_IRQ, | 217 | .flags = IORESOURCE_IRQ, |
217 | }, | 218 | }, |
218 | }; | 219 | }; |
@@ -239,7 +240,7 @@ static struct resource tmu2_resources[] = { | |||
239 | .flags = IORESOURCE_MEM, | 240 | .flags = IORESOURCE_MEM, |
240 | }, | 241 | }, |
241 | [1] = { | 242 | [1] = { |
242 | .start = 18, | 243 | .start = evt2irq(0x440), |
243 | .flags = IORESOURCE_IRQ, | 244 | .flags = IORESOURCE_IRQ, |
244 | }, | 245 | }, |
245 | }; | 246 | }; |
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7710.c b/arch/sh/kernel/cpu/sh3/setup-sh7710.c index 7ef248731820..93c9c5e24a7a 100644 --- a/arch/sh/kernel/cpu/sh3/setup-sh7710.c +++ b/arch/sh/kernel/cpu/sh3/setup-sh7710.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/serial.h> | 14 | #include <linux/serial.h> |
15 | #include <linux/serial_sci.h> | 15 | #include <linux/serial_sci.h> |
16 | #include <linux/sh_timer.h> | 16 | #include <linux/sh_timer.h> |
17 | #include <linux/sh_intc.h> | ||
17 | #include <asm/rtc.h> | 18 | #include <asm/rtc.h> |
18 | 19 | ||
19 | enum { | 20 | enum { |
@@ -77,7 +78,7 @@ static struct resource rtc_resources[] = { | |||
77 | .flags = IORESOURCE_IO, | 78 | .flags = IORESOURCE_IO, |
78 | }, | 79 | }, |
79 | [1] = { | 80 | [1] = { |
80 | .start = 20, | 81 | .start = evt2irq(0x480), |
81 | .flags = IORESOURCE_IRQ, | 82 | .flags = IORESOURCE_IRQ, |
82 | }, | 83 | }, |
83 | }; | 84 | }; |
@@ -121,7 +122,7 @@ static struct plat_sci_port scif1_platform_data = { | |||
121 | SCSCR_CKE1 | SCSCR_CKE0, | 122 | SCSCR_CKE1 | SCSCR_CKE0, |
122 | .scbrr_algo_id = SCBRR_ALGO_2, | 123 | .scbrr_algo_id = SCBRR_ALGO_2, |
123 | .type = PORT_SCIF, | 124 | .type = PORT_SCIF, |
124 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x900)), | 125 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x900)), |
125 | }; | 126 | }; |
126 | 127 | ||
127 | static struct platform_device scif1_device = { | 128 | static struct platform_device scif1_device = { |
@@ -145,7 +146,7 @@ static struct resource tmu0_resources[] = { | |||
145 | .flags = IORESOURCE_MEM, | 146 | .flags = IORESOURCE_MEM, |
146 | }, | 147 | }, |
147 | [1] = { | 148 | [1] = { |
148 | .start = 16, | 149 | .start = evt2irq(0x400), |
149 | .flags = IORESOURCE_IRQ, | 150 | .flags = IORESOURCE_IRQ, |
150 | }, | 151 | }, |
151 | }; | 152 | }; |
@@ -173,7 +174,7 @@ static struct resource tmu1_resources[] = { | |||
173 | .flags = IORESOURCE_MEM, | 174 | .flags = IORESOURCE_MEM, |
174 | }, | 175 | }, |
175 | [1] = { | 176 | [1] = { |
176 | .start = 17, | 177 | .start = evt2irq(0x420), |
177 | .flags = IORESOURCE_IRQ, | 178 | .flags = IORESOURCE_IRQ, |
178 | }, | 179 | }, |
179 | }; | 180 | }; |
@@ -200,7 +201,7 @@ static struct resource tmu2_resources[] = { | |||
200 | .flags = IORESOURCE_MEM, | 201 | .flags = IORESOURCE_MEM, |
201 | }, | 202 | }, |
202 | [1] = { | 203 | [1] = { |
203 | .start = 18, | 204 | .start = evt2irq(0x440), |
204 | .flags = IORESOURCE_IRQ, | 205 | .flags = IORESOURCE_IRQ, |
205 | }, | 206 | }, |
206 | }; | 207 | }; |
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7720.c b/arch/sh/kernel/cpu/sh3/setup-sh7720.c index b2557485d0ce..0c2f1b2c2e19 100644 --- a/arch/sh/kernel/cpu/sh3/setup-sh7720.c +++ b/arch/sh/kernel/cpu/sh3/setup-sh7720.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/io.h> | 19 | #include <linux/io.h> |
20 | #include <linux/serial_sci.h> | 20 | #include <linux/serial_sci.h> |
21 | #include <linux/sh_timer.h> | 21 | #include <linux/sh_timer.h> |
22 | #include <linux/sh_intc.h> | ||
22 | #include <asm/rtc.h> | 23 | #include <asm/rtc.h> |
23 | #include <cpu/serial.h> | 24 | #include <cpu/serial.h> |
24 | 25 | ||
@@ -30,7 +31,7 @@ static struct resource rtc_resources[] = { | |||
30 | }, | 31 | }, |
31 | [1] = { | 32 | [1] = { |
32 | /* Shared Period/Carry/Alarm IRQ */ | 33 | /* Shared Period/Carry/Alarm IRQ */ |
33 | .start = 20, | 34 | .start = evt2irq(0x480), |
34 | .flags = IORESOURCE_IRQ, | 35 | .flags = IORESOURCE_IRQ, |
35 | }, | 36 | }, |
36 | }; | 37 | }; |
@@ -55,7 +56,7 @@ static struct plat_sci_port scif0_platform_data = { | |||
55 | .scscr = SCSCR_RE | SCSCR_TE, | 56 | .scscr = SCSCR_RE | SCSCR_TE, |
56 | .scbrr_algo_id = SCBRR_ALGO_4, | 57 | .scbrr_algo_id = SCBRR_ALGO_4, |
57 | .type = PORT_SCIF, | 58 | .type = PORT_SCIF, |
58 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xC00)), | 59 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xc00)), |
59 | .ops = &sh7720_sci_port_ops, | 60 | .ops = &sh7720_sci_port_ops, |
60 | .regtype = SCIx_SH7705_SCIF_REGTYPE, | 61 | .regtype = SCIx_SH7705_SCIF_REGTYPE, |
61 | }; | 62 | }; |
@@ -74,7 +75,7 @@ static struct plat_sci_port scif1_platform_data = { | |||
74 | .scscr = SCSCR_RE | SCSCR_TE, | 75 | .scscr = SCSCR_RE | SCSCR_TE, |
75 | .scbrr_algo_id = SCBRR_ALGO_4, | 76 | .scbrr_algo_id = SCBRR_ALGO_4, |
76 | .type = PORT_SCIF, | 77 | .type = PORT_SCIF, |
77 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xC20)), | 78 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xc20)), |
78 | .ops = &sh7720_sci_port_ops, | 79 | .ops = &sh7720_sci_port_ops, |
79 | .regtype = SCIx_SH7705_SCIF_REGTYPE, | 80 | .regtype = SCIx_SH7705_SCIF_REGTYPE, |
80 | }; | 81 | }; |
@@ -94,13 +95,14 @@ static struct resource usb_ohci_resources[] = { | |||
94 | .flags = IORESOURCE_MEM, | 95 | .flags = IORESOURCE_MEM, |
95 | }, | 96 | }, |
96 | [1] = { | 97 | [1] = { |
97 | .start = 67, | 98 | .start = evt2irq(0xa60), |
98 | .end = 67, | 99 | .end = evt2irq(0xa60), |
99 | .flags = IORESOURCE_IRQ, | 100 | .flags = IORESOURCE_IRQ, |
100 | }, | 101 | }, |
101 | }; | 102 | }; |
102 | 103 | ||
103 | static u64 usb_ohci_dma_mask = 0xffffffffUL; | 104 | static u64 usb_ohci_dma_mask = 0xffffffffUL; |
105 | |||
104 | static struct platform_device usb_ohci_device = { | 106 | static struct platform_device usb_ohci_device = { |
105 | .name = "sh_ohci", | 107 | .name = "sh_ohci", |
106 | .id = -1, | 108 | .id = -1, |
@@ -121,8 +123,8 @@ static struct resource usbf_resources[] = { | |||
121 | }, | 123 | }, |
122 | [1] = { | 124 | [1] = { |
123 | .name = "sh_udc", | 125 | .name = "sh_udc", |
124 | .start = 65, | 126 | .start = evt2irq(0xa20), |
125 | .end = 65, | 127 | .end = evt2irq(0xa20), |
126 | .flags = IORESOURCE_IRQ, | 128 | .flags = IORESOURCE_IRQ, |
127 | }, | 129 | }, |
128 | }; | 130 | }; |
@@ -152,7 +154,7 @@ static struct resource cmt0_resources[] = { | |||
152 | .flags = IORESOURCE_MEM, | 154 | .flags = IORESOURCE_MEM, |
153 | }, | 155 | }, |
154 | [1] = { | 156 | [1] = { |
155 | .start = 104, | 157 | .start = evt2irq(0xf00), |
156 | .flags = IORESOURCE_IRQ, | 158 | .flags = IORESOURCE_IRQ, |
157 | }, | 159 | }, |
158 | }; | 160 | }; |
@@ -179,7 +181,7 @@ static struct resource cmt1_resources[] = { | |||
179 | .flags = IORESOURCE_MEM, | 181 | .flags = IORESOURCE_MEM, |
180 | }, | 182 | }, |
181 | [1] = { | 183 | [1] = { |
182 | .start = 104, | 184 | .start = evt2irq(0xf00), |
183 | .flags = IORESOURCE_IRQ, | 185 | .flags = IORESOURCE_IRQ, |
184 | }, | 186 | }, |
185 | }; | 187 | }; |
@@ -206,7 +208,7 @@ static struct resource cmt2_resources[] = { | |||
206 | .flags = IORESOURCE_MEM, | 208 | .flags = IORESOURCE_MEM, |
207 | }, | 209 | }, |
208 | [1] = { | 210 | [1] = { |
209 | .start = 104, | 211 | .start = evt2irq(0xf00), |
210 | .flags = IORESOURCE_IRQ, | 212 | .flags = IORESOURCE_IRQ, |
211 | }, | 213 | }, |
212 | }; | 214 | }; |
@@ -233,7 +235,7 @@ static struct resource cmt3_resources[] = { | |||
233 | .flags = IORESOURCE_MEM, | 235 | .flags = IORESOURCE_MEM, |
234 | }, | 236 | }, |
235 | [1] = { | 237 | [1] = { |
236 | .start = 104, | 238 | .start = evt2irq(0xf00), |
237 | .flags = IORESOURCE_IRQ, | 239 | .flags = IORESOURCE_IRQ, |
238 | }, | 240 | }, |
239 | }; | 241 | }; |
@@ -260,7 +262,7 @@ static struct resource cmt4_resources[] = { | |||
260 | .flags = IORESOURCE_MEM, | 262 | .flags = IORESOURCE_MEM, |
261 | }, | 263 | }, |
262 | [1] = { | 264 | [1] = { |
263 | .start = 104, | 265 | .start = evt2irq(0xf00), |
264 | .flags = IORESOURCE_IRQ, | 266 | .flags = IORESOURCE_IRQ, |
265 | }, | 267 | }, |
266 | }; | 268 | }; |
@@ -288,7 +290,7 @@ static struct resource tmu0_resources[] = { | |||
288 | .flags = IORESOURCE_MEM, | 290 | .flags = IORESOURCE_MEM, |
289 | }, | 291 | }, |
290 | [1] = { | 292 | [1] = { |
291 | .start = 16, | 293 | .start = evt2irq(0x400), |
292 | .flags = IORESOURCE_IRQ, | 294 | .flags = IORESOURCE_IRQ, |
293 | }, | 295 | }, |
294 | }; | 296 | }; |
@@ -316,7 +318,7 @@ static struct resource tmu1_resources[] = { | |||
316 | .flags = IORESOURCE_MEM, | 318 | .flags = IORESOURCE_MEM, |
317 | }, | 319 | }, |
318 | [1] = { | 320 | [1] = { |
319 | .start = 17, | 321 | .start = evt2irq(0x420), |
320 | .flags = IORESOURCE_IRQ, | 322 | .flags = IORESOURCE_IRQ, |
321 | }, | 323 | }, |
322 | }; | 324 | }; |
@@ -343,7 +345,7 @@ static struct resource tmu2_resources[] = { | |||
343 | .flags = IORESOURCE_MEM, | 345 | .flags = IORESOURCE_MEM, |
344 | }, | 346 | }, |
345 | [1] = { | 347 | [1] = { |
346 | .start = 18, | 348 | .start = evt2irq(0x440), |
347 | .flags = IORESOURCE_IRQ, | 349 | .flags = IORESOURCE_IRQ, |
348 | }, | 350 | }, |
349 | }; | 351 | }; |
diff --git a/arch/sh/kernel/cpu/sh4/setup-sh4-202.c b/arch/sh/kernel/cpu/sh4/setup-sh4-202.c index 5b2833159b7d..2a5320aa73bb 100644 --- a/arch/sh/kernel/cpu/sh4/setup-sh4-202.c +++ b/arch/sh/kernel/cpu/sh4/setup-sh4-202.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/serial.h> | 13 | #include <linux/serial.h> |
14 | #include <linux/serial_sci.h> | 14 | #include <linux/serial_sci.h> |
15 | #include <linux/sh_timer.h> | 15 | #include <linux/sh_timer.h> |
16 | #include <linux/sh_intc.h> | ||
16 | #include <linux/io.h> | 17 | #include <linux/io.h> |
17 | 18 | ||
18 | static struct plat_sci_port scif0_platform_data = { | 19 | static struct plat_sci_port scif0_platform_data = { |
@@ -21,7 +22,10 @@ static struct plat_sci_port scif0_platform_data = { | |||
21 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 22 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
22 | .scbrr_algo_id = SCBRR_ALGO_2, | 23 | .scbrr_algo_id = SCBRR_ALGO_2, |
23 | .type = PORT_SCIF, | 24 | .type = PORT_SCIF, |
24 | .irqs = { 40, 41, 43, 42 }, | 25 | .irqs = { evt2irq(0x700), |
26 | evt2irq(0x720), | ||
27 | evt2irq(0x760), | ||
28 | evt2irq(0x740) }, | ||
25 | }; | 29 | }; |
26 | 30 | ||
27 | static struct platform_device scif0_device = { | 31 | static struct platform_device scif0_device = { |
@@ -45,7 +49,7 @@ static struct resource tmu0_resources[] = { | |||
45 | .flags = IORESOURCE_MEM, | 49 | .flags = IORESOURCE_MEM, |
46 | }, | 50 | }, |
47 | [1] = { | 51 | [1] = { |
48 | .start = 16, | 52 | .start = evt2irq(0x400), |
49 | .flags = IORESOURCE_IRQ, | 53 | .flags = IORESOURCE_IRQ, |
50 | }, | 54 | }, |
51 | }; | 55 | }; |
@@ -73,7 +77,7 @@ static struct resource tmu1_resources[] = { | |||
73 | .flags = IORESOURCE_MEM, | 77 | .flags = IORESOURCE_MEM, |
74 | }, | 78 | }, |
75 | [1] = { | 79 | [1] = { |
76 | .start = 17, | 80 | .start = evt2irq(0x420), |
77 | .flags = IORESOURCE_IRQ, | 81 | .flags = IORESOURCE_IRQ, |
78 | }, | 82 | }, |
79 | }; | 83 | }; |
@@ -100,7 +104,7 @@ static struct resource tmu2_resources[] = { | |||
100 | .flags = IORESOURCE_MEM, | 104 | .flags = IORESOURCE_MEM, |
101 | }, | 105 | }, |
102 | [1] = { | 106 | [1] = { |
103 | .start = 18, | 107 | .start = evt2irq(0x440), |
104 | .flags = IORESOURCE_IRQ, | 108 | .flags = IORESOURCE_IRQ, |
105 | }, | 109 | }, |
106 | }; | 110 | }; |
diff --git a/arch/sh/kernel/cpu/sh4/setup-sh7750.c b/arch/sh/kernel/cpu/sh4/setup-sh7750.c index 56b3bdc0b285..04a45512596f 100644 --- a/arch/sh/kernel/cpu/sh4/setup-sh7750.c +++ b/arch/sh/kernel/cpu/sh4/setup-sh7750.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/serial.h> | 13 | #include <linux/serial.h> |
14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
15 | #include <linux/sh_timer.h> | 15 | #include <linux/sh_timer.h> |
16 | #include <linux/sh_intc.h> | ||
16 | #include <linux/serial_sci.h> | 17 | #include <linux/serial_sci.h> |
17 | #include <generated/machtypes.h> | 18 | #include <generated/machtypes.h> |
18 | 19 | ||
@@ -24,7 +25,7 @@ static struct resource rtc_resources[] = { | |||
24 | }, | 25 | }, |
25 | [1] = { | 26 | [1] = { |
26 | /* Shared Period/Carry/Alarm IRQ */ | 27 | /* Shared Period/Carry/Alarm IRQ */ |
27 | .start = 20, | 28 | .start = evt2irq(0x480), |
28 | .flags = IORESOURCE_IRQ, | 29 | .flags = IORESOURCE_IRQ, |
29 | }, | 30 | }, |
30 | }; | 31 | }; |
@@ -43,7 +44,7 @@ static struct plat_sci_port sci_platform_data = { | |||
43 | .scscr = SCSCR_TE | SCSCR_RE, | 44 | .scscr = SCSCR_TE | SCSCR_RE, |
44 | .scbrr_algo_id = SCBRR_ALGO_2, | 45 | .scbrr_algo_id = SCBRR_ALGO_2, |
45 | .type = PORT_SCI, | 46 | .type = PORT_SCI, |
46 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xE40)), | 47 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x4e0)), |
47 | .regshift = 2, | 48 | .regshift = 2, |
48 | }; | 49 | }; |
49 | 50 | ||
@@ -85,7 +86,7 @@ static struct resource tmu0_resources[] = { | |||
85 | .flags = IORESOURCE_MEM, | 86 | .flags = IORESOURCE_MEM, |
86 | }, | 87 | }, |
87 | [1] = { | 88 | [1] = { |
88 | .start = 16, | 89 | .start = evt2irq(0x400), |
89 | .flags = IORESOURCE_IRQ, | 90 | .flags = IORESOURCE_IRQ, |
90 | }, | 91 | }, |
91 | }; | 92 | }; |
@@ -113,7 +114,7 @@ static struct resource tmu1_resources[] = { | |||
113 | .flags = IORESOURCE_MEM, | 114 | .flags = IORESOURCE_MEM, |
114 | }, | 115 | }, |
115 | [1] = { | 116 | [1] = { |
116 | .start = 17, | 117 | .start = evt2irq(0x420), |
117 | .flags = IORESOURCE_IRQ, | 118 | .flags = IORESOURCE_IRQ, |
118 | }, | 119 | }, |
119 | }; | 120 | }; |
@@ -140,7 +141,7 @@ static struct resource tmu2_resources[] = { | |||
140 | .flags = IORESOURCE_MEM, | 141 | .flags = IORESOURCE_MEM, |
141 | }, | 142 | }, |
142 | [1] = { | 143 | [1] = { |
143 | .start = 18, | 144 | .start = evt2irq(0x440), |
144 | .flags = IORESOURCE_IRQ, | 145 | .flags = IORESOURCE_IRQ, |
145 | }, | 146 | }, |
146 | }; | 147 | }; |
@@ -172,7 +173,7 @@ static struct resource tmu3_resources[] = { | |||
172 | .flags = IORESOURCE_MEM, | 173 | .flags = IORESOURCE_MEM, |
173 | }, | 174 | }, |
174 | [1] = { | 175 | [1] = { |
175 | .start = 72, | 176 | .start = evt2irq(0xb00), |
176 | .flags = IORESOURCE_IRQ, | 177 | .flags = IORESOURCE_IRQ, |
177 | }, | 178 | }, |
178 | }; | 179 | }; |
@@ -199,7 +200,7 @@ static struct resource tmu4_resources[] = { | |||
199 | .flags = IORESOURCE_MEM, | 200 | .flags = IORESOURCE_MEM, |
200 | }, | 201 | }, |
201 | [1] = { | 202 | [1] = { |
202 | .start = 76, | 203 | .start = evt2irq(0xb80), |
203 | .flags = IORESOURCE_IRQ, | 204 | .flags = IORESOURCE_IRQ, |
204 | }, | 205 | }, |
205 | }; | 206 | }; |
diff --git a/arch/sh/kernel/cpu/sh4/setup-sh7760.c b/arch/sh/kernel/cpu/sh4/setup-sh7760.c index c0b4c774700e..98e075ada44e 100644 --- a/arch/sh/kernel/cpu/sh4/setup-sh7760.c +++ b/arch/sh/kernel/cpu/sh4/setup-sh7760.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/sh_timer.h> | 13 | #include <linux/sh_timer.h> |
14 | #include <linux/sh_intc.h> | ||
14 | #include <linux/serial_sci.h> | 15 | #include <linux/serial_sci.h> |
15 | #include <linux/io.h> | 16 | #include <linux/io.h> |
16 | 17 | ||
@@ -132,7 +133,10 @@ static struct plat_sci_port scif0_platform_data = { | |||
132 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 133 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
133 | .scbrr_algo_id = SCBRR_ALGO_2, | 134 | .scbrr_algo_id = SCBRR_ALGO_2, |
134 | .type = PORT_SCIF, | 135 | .type = PORT_SCIF, |
135 | .irqs = { 52, 53, 55, 54 }, | 136 | .irqs = { evt2irq(0x880), |
137 | evt2irq(0x8a0), | ||
138 | evt2irq(0x8e0), | ||
139 | evt2irq(0x8c0) }, | ||
136 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | 140 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
137 | }; | 141 | }; |
138 | 142 | ||
@@ -150,7 +154,10 @@ static struct plat_sci_port scif1_platform_data = { | |||
150 | .type = PORT_SCIF, | 154 | .type = PORT_SCIF, |
151 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 155 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
152 | .scbrr_algo_id = SCBRR_ALGO_2, | 156 | .scbrr_algo_id = SCBRR_ALGO_2, |
153 | .irqs = { 72, 73, 75, 74 }, | 157 | .irqs = { evt2irq(0xb00), |
158 | evt2irq(0xb20), | ||
159 | evt2irq(0xb60), | ||
160 | evt2irq(0xb40) }, | ||
154 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | 161 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
155 | }; | 162 | }; |
156 | 163 | ||
@@ -168,7 +175,10 @@ static struct plat_sci_port scif2_platform_data = { | |||
168 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 175 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
169 | .scbrr_algo_id = SCBRR_ALGO_2, | 176 | .scbrr_algo_id = SCBRR_ALGO_2, |
170 | .type = PORT_SCIF, | 177 | .type = PORT_SCIF, |
171 | .irqs = { 76, 77, 79, 78 }, | 178 | .irqs = { evt2irq(0xb80), |
179 | evt2irq(0xba0), | ||
180 | evt2irq(0xbe0), | ||
181 | evt2irq(0xbc0) }, | ||
172 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | 182 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
173 | }; | 183 | }; |
174 | 184 | ||
@@ -186,7 +196,9 @@ static struct plat_sci_port scif3_platform_data = { | |||
186 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 196 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
187 | .scbrr_algo_id = SCBRR_ALGO_2, | 197 | .scbrr_algo_id = SCBRR_ALGO_2, |
188 | .type = PORT_SCI, | 198 | .type = PORT_SCI, |
189 | .irqs = { 80, 81, 82, 0 }, | 199 | .irqs = { evt2irq(0xc00), |
200 | evt2irq(0xc20), | ||
201 | evt2irq(0xc40), }, | ||
190 | .regshift = 2, | 202 | .regshift = 2, |
191 | }; | 203 | }; |
192 | 204 | ||
@@ -211,7 +223,7 @@ static struct resource tmu0_resources[] = { | |||
211 | .flags = IORESOURCE_MEM, | 223 | .flags = IORESOURCE_MEM, |
212 | }, | 224 | }, |
213 | [1] = { | 225 | [1] = { |
214 | .start = 16, | 226 | .start = evt2irq(0x400), |
215 | .flags = IORESOURCE_IRQ, | 227 | .flags = IORESOURCE_IRQ, |
216 | }, | 228 | }, |
217 | }; | 229 | }; |
@@ -239,7 +251,7 @@ static struct resource tmu1_resources[] = { | |||
239 | .flags = IORESOURCE_MEM, | 251 | .flags = IORESOURCE_MEM, |
240 | }, | 252 | }, |
241 | [1] = { | 253 | [1] = { |
242 | .start = 17, | 254 | .start = evt2irq(0x420), |
243 | .flags = IORESOURCE_IRQ, | 255 | .flags = IORESOURCE_IRQ, |
244 | }, | 256 | }, |
245 | }; | 257 | }; |
@@ -266,7 +278,7 @@ static struct resource tmu2_resources[] = { | |||
266 | .flags = IORESOURCE_MEM, | 278 | .flags = IORESOURCE_MEM, |
267 | }, | 279 | }, |
268 | [1] = { | 280 | [1] = { |
269 | .start = 18, | 281 | .start = evt2irq(0x440), |
270 | .flags = IORESOURCE_IRQ, | 282 | .flags = IORESOURCE_IRQ, |
271 | }, | 283 | }, |
272 | }; | 284 | }; |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7343.c b/arch/sh/kernel/cpu/sh4a/setup-sh7343.c index 5773643b8a53..b91ea8300a3e 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7343.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7343.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/serial_sci.h> | 13 | #include <linux/serial_sci.h> |
14 | #include <linux/uio_driver.h> | 14 | #include <linux/uio_driver.h> |
15 | #include <linux/sh_timer.h> | 15 | #include <linux/sh_timer.h> |
16 | #include <linux/sh_intc.h> | ||
16 | #include <asm/clock.h> | 17 | #include <asm/clock.h> |
17 | 18 | ||
18 | /* Serial */ | 19 | /* Serial */ |
@@ -22,7 +23,7 @@ static struct plat_sci_port scif0_platform_data = { | |||
22 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1, | 23 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1, |
23 | .scbrr_algo_id = SCBRR_ALGO_2, | 24 | .scbrr_algo_id = SCBRR_ALGO_2, |
24 | .type = PORT_SCIF, | 25 | .type = PORT_SCIF, |
25 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xC00)), | 26 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xc00)), |
26 | }; | 27 | }; |
27 | 28 | ||
28 | static struct platform_device scif0_device = { | 29 | static struct platform_device scif0_device = { |
@@ -39,7 +40,7 @@ static struct plat_sci_port scif1_platform_data = { | |||
39 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1, | 40 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1, |
40 | .scbrr_algo_id = SCBRR_ALGO_2, | 41 | .scbrr_algo_id = SCBRR_ALGO_2, |
41 | .type = PORT_SCIF, | 42 | .type = PORT_SCIF, |
42 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xC20)), | 43 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xc20)), |
43 | }; | 44 | }; |
44 | 45 | ||
45 | static struct platform_device scif1_device = { | 46 | static struct platform_device scif1_device = { |
@@ -56,7 +57,7 @@ static struct plat_sci_port scif2_platform_data = { | |||
56 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1, | 57 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1, |
57 | .scbrr_algo_id = SCBRR_ALGO_2, | 58 | .scbrr_algo_id = SCBRR_ALGO_2, |
58 | .type = PORT_SCIF, | 59 | .type = PORT_SCIF, |
59 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xC40)), | 60 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xc40)), |
60 | }; | 61 | }; |
61 | 62 | ||
62 | static struct platform_device scif2_device = { | 63 | static struct platform_device scif2_device = { |
@@ -73,7 +74,7 @@ static struct plat_sci_port scif3_platform_data = { | |||
73 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1, | 74 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1, |
74 | .scbrr_algo_id = SCBRR_ALGO_2, | 75 | .scbrr_algo_id = SCBRR_ALGO_2, |
75 | .type = PORT_SCIF, | 76 | .type = PORT_SCIF, |
76 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xC60)), | 77 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xc60)), |
77 | }; | 78 | }; |
78 | 79 | ||
79 | static struct platform_device scif3_device = { | 80 | static struct platform_device scif3_device = { |
@@ -92,8 +93,8 @@ static struct resource iic0_resources[] = { | |||
92 | .flags = IORESOURCE_MEM, | 93 | .flags = IORESOURCE_MEM, |
93 | }, | 94 | }, |
94 | [1] = { | 95 | [1] = { |
95 | .start = 96, | 96 | .start = evt2irq(0xe00), |
96 | .end = 99, | 97 | .end = evt2irq(0xe60), |
97 | .flags = IORESOURCE_IRQ, | 98 | .flags = IORESOURCE_IRQ, |
98 | }, | 99 | }, |
99 | }; | 100 | }; |
@@ -113,8 +114,8 @@ static struct resource iic1_resources[] = { | |||
113 | .flags = IORESOURCE_MEM, | 114 | .flags = IORESOURCE_MEM, |
114 | }, | 115 | }, |
115 | [1] = { | 116 | [1] = { |
116 | .start = 44, | 117 | .start = evt2irq(0x780), |
117 | .end = 47, | 118 | .end = evt2irq(0x7e0), |
118 | .flags = IORESOURCE_IRQ, | 119 | .flags = IORESOURCE_IRQ, |
119 | }, | 120 | }, |
120 | }; | 121 | }; |
@@ -129,7 +130,7 @@ static struct platform_device iic1_device = { | |||
129 | static struct uio_info vpu_platform_data = { | 130 | static struct uio_info vpu_platform_data = { |
130 | .name = "VPU4", | 131 | .name = "VPU4", |
131 | .version = "0", | 132 | .version = "0", |
132 | .irq = 60, | 133 | .irq = evt2irq(0x980), |
133 | }; | 134 | }; |
134 | 135 | ||
135 | static struct resource vpu_resources[] = { | 136 | static struct resource vpu_resources[] = { |
@@ -157,7 +158,7 @@ static struct platform_device vpu_device = { | |||
157 | static struct uio_info veu_platform_data = { | 158 | static struct uio_info veu_platform_data = { |
158 | .name = "VEU", | 159 | .name = "VEU", |
159 | .version = "0", | 160 | .version = "0", |
160 | .irq = 54, | 161 | .irq = evt2irq(0x8c0), |
161 | }; | 162 | }; |
162 | 163 | ||
163 | static struct resource veu_resources[] = { | 164 | static struct resource veu_resources[] = { |
@@ -185,7 +186,7 @@ static struct platform_device veu_device = { | |||
185 | static struct uio_info jpu_platform_data = { | 186 | static struct uio_info jpu_platform_data = { |
186 | .name = "JPU", | 187 | .name = "JPU", |
187 | .version = "0", | 188 | .version = "0", |
188 | .irq = 27, | 189 | .irq = evt2irq(0x560), |
189 | }; | 190 | }; |
190 | 191 | ||
191 | static struct resource jpu_resources[] = { | 192 | static struct resource jpu_resources[] = { |
@@ -224,7 +225,7 @@ static struct resource cmt_resources[] = { | |||
224 | .flags = IORESOURCE_MEM, | 225 | .flags = IORESOURCE_MEM, |
225 | }, | 226 | }, |
226 | [1] = { | 227 | [1] = { |
227 | .start = 104, | 228 | .start = evt2irq(0xf00), |
228 | .flags = IORESOURCE_IRQ, | 229 | .flags = IORESOURCE_IRQ, |
229 | }, | 230 | }, |
230 | }; | 231 | }; |
@@ -252,7 +253,7 @@ static struct resource tmu0_resources[] = { | |||
252 | .flags = IORESOURCE_MEM, | 253 | .flags = IORESOURCE_MEM, |
253 | }, | 254 | }, |
254 | [1] = { | 255 | [1] = { |
255 | .start = 16, | 256 | .start = evt2irq(0x400), |
256 | .flags = IORESOURCE_IRQ, | 257 | .flags = IORESOURCE_IRQ, |
257 | }, | 258 | }, |
258 | }; | 259 | }; |
@@ -280,7 +281,7 @@ static struct resource tmu1_resources[] = { | |||
280 | .flags = IORESOURCE_MEM, | 281 | .flags = IORESOURCE_MEM, |
281 | }, | 282 | }, |
282 | [1] = { | 283 | [1] = { |
283 | .start = 17, | 284 | .start = evt2irq(0x420), |
284 | .flags = IORESOURCE_IRQ, | 285 | .flags = IORESOURCE_IRQ, |
285 | }, | 286 | }, |
286 | }; | 287 | }; |
@@ -307,7 +308,7 @@ static struct resource tmu2_resources[] = { | |||
307 | .flags = IORESOURCE_MEM, | 308 | .flags = IORESOURCE_MEM, |
308 | }, | 309 | }, |
309 | [1] = { | 310 | [1] = { |
310 | .start = 18, | 311 | .start = evt2irq(0x440), |
311 | .flags = IORESOURCE_IRQ, | 312 | .flags = IORESOURCE_IRQ, |
312 | }, | 313 | }, |
313 | }; | 314 | }; |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7366.c b/arch/sh/kernel/cpu/sh4a/setup-sh7366.c index 20f9e366a814..0bd09d51419f 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7366.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7366.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/serial_sci.h> | 15 | #include <linux/serial_sci.h> |
16 | #include <linux/uio_driver.h> | 16 | #include <linux/uio_driver.h> |
17 | #include <linux/sh_timer.h> | 17 | #include <linux/sh_timer.h> |
18 | #include <linux/sh_intc.h> | ||
18 | #include <linux/usb/r8a66597.h> | 19 | #include <linux/usb/r8a66597.h> |
19 | #include <asm/clock.h> | 20 | #include <asm/clock.h> |
20 | 21 | ||
@@ -25,7 +26,7 @@ static struct plat_sci_port scif0_platform_data = { | |||
25 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 26 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
26 | .scbrr_algo_id = SCBRR_ALGO_2, | 27 | .scbrr_algo_id = SCBRR_ALGO_2, |
27 | .type = PORT_SCIF, | 28 | .type = PORT_SCIF, |
28 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xC00)), | 29 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xc00)), |
29 | }; | 30 | }; |
30 | 31 | ||
31 | static struct platform_device scif0_device = { | 32 | static struct platform_device scif0_device = { |
@@ -44,8 +45,8 @@ static struct resource iic_resources[] = { | |||
44 | .flags = IORESOURCE_MEM, | 45 | .flags = IORESOURCE_MEM, |
45 | }, | 46 | }, |
46 | [1] = { | 47 | [1] = { |
47 | .start = 96, | 48 | .start = evt2irq(0xe00), |
48 | .end = 99, | 49 | .end = evt2irq(0xe60), |
49 | .flags = IORESOURCE_IRQ, | 50 | .flags = IORESOURCE_IRQ, |
50 | }, | 51 | }, |
51 | }; | 52 | }; |
@@ -68,8 +69,8 @@ static struct resource usb_host_resources[] = { | |||
68 | .flags = IORESOURCE_MEM, | 69 | .flags = IORESOURCE_MEM, |
69 | }, | 70 | }, |
70 | [1] = { | 71 | [1] = { |
71 | .start = 65, | 72 | .start = evt2irq(0xa20), |
72 | .end = 65, | 73 | .end = evt2irq(0xa20), |
73 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW, | 74 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW, |
74 | }, | 75 | }, |
75 | }; | 76 | }; |
@@ -89,7 +90,7 @@ static struct platform_device usb_host_device = { | |||
89 | static struct uio_info vpu_platform_data = { | 90 | static struct uio_info vpu_platform_data = { |
90 | .name = "VPU5", | 91 | .name = "VPU5", |
91 | .version = "0", | 92 | .version = "0", |
92 | .irq = 60, | 93 | .irq = evt2irq(0x980), |
93 | }; | 94 | }; |
94 | 95 | ||
95 | static struct resource vpu_resources[] = { | 96 | static struct resource vpu_resources[] = { |
@@ -117,7 +118,7 @@ static struct platform_device vpu_device = { | |||
117 | static struct uio_info veu0_platform_data = { | 118 | static struct uio_info veu0_platform_data = { |
118 | .name = "VEU", | 119 | .name = "VEU", |
119 | .version = "0", | 120 | .version = "0", |
120 | .irq = 54, | 121 | .irq = evt2irq(0x8c0), |
121 | }; | 122 | }; |
122 | 123 | ||
123 | static struct resource veu0_resources[] = { | 124 | static struct resource veu0_resources[] = { |
@@ -145,7 +146,7 @@ static struct platform_device veu0_device = { | |||
145 | static struct uio_info veu1_platform_data = { | 146 | static struct uio_info veu1_platform_data = { |
146 | .name = "VEU", | 147 | .name = "VEU", |
147 | .version = "0", | 148 | .version = "0", |
148 | .irq = 27, | 149 | .irq = evt2irq(0x560), |
149 | }; | 150 | }; |
150 | 151 | ||
151 | static struct resource veu1_resources[] = { | 152 | static struct resource veu1_resources[] = { |
@@ -184,7 +185,7 @@ static struct resource cmt_resources[] = { | |||
184 | .flags = IORESOURCE_MEM, | 185 | .flags = IORESOURCE_MEM, |
185 | }, | 186 | }, |
186 | [1] = { | 187 | [1] = { |
187 | .start = 104, | 188 | .start = evt2irq(0xf00), |
188 | .flags = IORESOURCE_IRQ, | 189 | .flags = IORESOURCE_IRQ, |
189 | }, | 190 | }, |
190 | }; | 191 | }; |
@@ -240,7 +241,7 @@ static struct resource tmu1_resources[] = { | |||
240 | .flags = IORESOURCE_MEM, | 241 | .flags = IORESOURCE_MEM, |
241 | }, | 242 | }, |
242 | [1] = { | 243 | [1] = { |
243 | .start = 17, | 244 | .start = evt2irq(0x420), |
244 | .flags = IORESOURCE_IRQ, | 245 | .flags = IORESOURCE_IRQ, |
245 | }, | 246 | }, |
246 | }; | 247 | }; |
@@ -267,7 +268,7 @@ static struct resource tmu2_resources[] = { | |||
267 | .flags = IORESOURCE_MEM, | 268 | .flags = IORESOURCE_MEM, |
268 | }, | 269 | }, |
269 | [1] = { | 270 | [1] = { |
270 | .start = 18, | 271 | .start = evt2irq(0x440), |
271 | .flags = IORESOURCE_IRQ, | 272 | .flags = IORESOURCE_IRQ, |
272 | }, | 273 | }, |
273 | }; | 274 | }; |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c index 34b2ee5805d3..0f5a21907da6 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/serial.h> | 13 | #include <linux/serial.h> |
14 | #include <linux/serial_sci.h> | 14 | #include <linux/serial_sci.h> |
15 | #include <linux/sh_timer.h> | 15 | #include <linux/sh_timer.h> |
16 | #include <linux/sh_intc.h> | ||
16 | #include <linux/uio_driver.h> | 17 | #include <linux/uio_driver.h> |
17 | #include <linux/usb/m66592.h> | 18 | #include <linux/usb/m66592.h> |
18 | 19 | ||
@@ -147,20 +148,20 @@ static struct resource sh7722_dmae_resources[] = { | |||
147 | }, | 148 | }, |
148 | { | 149 | { |
149 | .name = "error_irq", | 150 | .name = "error_irq", |
150 | .start = 78, | 151 | .start = evt2irq(0xbc0), |
151 | .end = 78, | 152 | .end = evt2irq(0xbc0), |
152 | .flags = IORESOURCE_IRQ, | 153 | .flags = IORESOURCE_IRQ, |
153 | }, | 154 | }, |
154 | { | 155 | { |
155 | /* IRQ for channels 0-3 */ | 156 | /* IRQ for channels 0-3 */ |
156 | .start = 48, | 157 | .start = evt2irq(0x800), |
157 | .end = 51, | 158 | .end = evt2irq(0x860), |
158 | .flags = IORESOURCE_IRQ, | 159 | .flags = IORESOURCE_IRQ, |
159 | }, | 160 | }, |
160 | { | 161 | { |
161 | /* IRQ for channels 4-5 */ | 162 | /* IRQ for channels 4-5 */ |
162 | .start = 76, | 163 | .start = evt2irq(0xb80), |
163 | .end = 77, | 164 | .end = evt2irq(0xba0), |
164 | .flags = IORESOURCE_IRQ, | 165 | .flags = IORESOURCE_IRQ, |
165 | }, | 166 | }, |
166 | }; | 167 | }; |
@@ -182,7 +183,7 @@ static struct plat_sci_port scif0_platform_data = { | |||
182 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 183 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
183 | .scbrr_algo_id = SCBRR_ALGO_2, | 184 | .scbrr_algo_id = SCBRR_ALGO_2, |
184 | .type = PORT_SCIF, | 185 | .type = PORT_SCIF, |
185 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xC00)), | 186 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xc00)), |
186 | .ops = &sh7722_sci_port_ops, | 187 | .ops = &sh7722_sci_port_ops, |
187 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | 188 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
188 | }; | 189 | }; |
@@ -201,7 +202,7 @@ static struct plat_sci_port scif1_platform_data = { | |||
201 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 202 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
202 | .scbrr_algo_id = SCBRR_ALGO_2, | 203 | .scbrr_algo_id = SCBRR_ALGO_2, |
203 | .type = PORT_SCIF, | 204 | .type = PORT_SCIF, |
204 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xC20)), | 205 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xc20)), |
205 | .ops = &sh7722_sci_port_ops, | 206 | .ops = &sh7722_sci_port_ops, |
206 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | 207 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
207 | }; | 208 | }; |
@@ -220,7 +221,7 @@ static struct plat_sci_port scif2_platform_data = { | |||
220 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 221 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
221 | .scbrr_algo_id = SCBRR_ALGO_2, | 222 | .scbrr_algo_id = SCBRR_ALGO_2, |
222 | .type = PORT_SCIF, | 223 | .type = PORT_SCIF, |
223 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xC40)), | 224 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xc40)), |
224 | .ops = &sh7722_sci_port_ops, | 225 | .ops = &sh7722_sci_port_ops, |
225 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | 226 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
226 | }; | 227 | }; |
@@ -241,17 +242,17 @@ static struct resource rtc_resources[] = { | |||
241 | }, | 242 | }, |
242 | [1] = { | 243 | [1] = { |
243 | /* Period IRQ */ | 244 | /* Period IRQ */ |
244 | .start = 45, | 245 | .start = evt2irq(0x7a0), |
245 | .flags = IORESOURCE_IRQ, | 246 | .flags = IORESOURCE_IRQ, |
246 | }, | 247 | }, |
247 | [2] = { | 248 | [2] = { |
248 | /* Carry IRQ */ | 249 | /* Carry IRQ */ |
249 | .start = 46, | 250 | .start = evt2irq(0x7c0), |
250 | .flags = IORESOURCE_IRQ, | 251 | .flags = IORESOURCE_IRQ, |
251 | }, | 252 | }, |
252 | [3] = { | 253 | [3] = { |
253 | /* Alarm IRQ */ | 254 | /* Alarm IRQ */ |
254 | .start = 44, | 255 | .start = evt2irq(0x780), |
255 | .flags = IORESOURCE_IRQ, | 256 | .flags = IORESOURCE_IRQ, |
256 | }, | 257 | }, |
257 | }; | 258 | }; |
@@ -275,8 +276,8 @@ static struct resource usbf_resources[] = { | |||
275 | .flags = IORESOURCE_MEM, | 276 | .flags = IORESOURCE_MEM, |
276 | }, | 277 | }, |
277 | [1] = { | 278 | [1] = { |
278 | .start = 65, | 279 | .start = evt2irq(0xa20), |
279 | .end = 65, | 280 | .end = evt2irq(0xa20), |
280 | .flags = IORESOURCE_IRQ, | 281 | .flags = IORESOURCE_IRQ, |
281 | }, | 282 | }, |
282 | }; | 283 | }; |
@@ -301,8 +302,8 @@ static struct resource iic_resources[] = { | |||
301 | .flags = IORESOURCE_MEM, | 302 | .flags = IORESOURCE_MEM, |
302 | }, | 303 | }, |
303 | [1] = { | 304 | [1] = { |
304 | .start = 96, | 305 | .start = evt2irq(0xe00), |
305 | .end = 99, | 306 | .end = evt2irq(0xe60), |
306 | .flags = IORESOURCE_IRQ, | 307 | .flags = IORESOURCE_IRQ, |
307 | }, | 308 | }, |
308 | }; | 309 | }; |
@@ -317,7 +318,7 @@ static struct platform_device iic_device = { | |||
317 | static struct uio_info vpu_platform_data = { | 318 | static struct uio_info vpu_platform_data = { |
318 | .name = "VPU4", | 319 | .name = "VPU4", |
319 | .version = "0", | 320 | .version = "0", |
320 | .irq = 60, | 321 | .irq = evt2irq(0x980), |
321 | }; | 322 | }; |
322 | 323 | ||
323 | static struct resource vpu_resources[] = { | 324 | static struct resource vpu_resources[] = { |
@@ -345,7 +346,7 @@ static struct platform_device vpu_device = { | |||
345 | static struct uio_info veu_platform_data = { | 346 | static struct uio_info veu_platform_data = { |
346 | .name = "VEU", | 347 | .name = "VEU", |
347 | .version = "0", | 348 | .version = "0", |
348 | .irq = 54, | 349 | .irq = evt2irq(0x8c0), |
349 | }; | 350 | }; |
350 | 351 | ||
351 | static struct resource veu_resources[] = { | 352 | static struct resource veu_resources[] = { |
@@ -373,7 +374,7 @@ static struct platform_device veu_device = { | |||
373 | static struct uio_info jpu_platform_data = { | 374 | static struct uio_info jpu_platform_data = { |
374 | .name = "JPU", | 375 | .name = "JPU", |
375 | .version = "0", | 376 | .version = "0", |
376 | .irq = 27, | 377 | .irq = evt2irq(0x560), |
377 | }; | 378 | }; |
378 | 379 | ||
379 | static struct resource jpu_resources[] = { | 380 | static struct resource jpu_resources[] = { |
@@ -412,7 +413,7 @@ static struct resource cmt_resources[] = { | |||
412 | .flags = IORESOURCE_MEM, | 413 | .flags = IORESOURCE_MEM, |
413 | }, | 414 | }, |
414 | [1] = { | 415 | [1] = { |
415 | .start = 104, | 416 | .start = evt2irq(0xf00), |
416 | .flags = IORESOURCE_IRQ, | 417 | .flags = IORESOURCE_IRQ, |
417 | }, | 418 | }, |
418 | }; | 419 | }; |
@@ -440,7 +441,7 @@ static struct resource tmu0_resources[] = { | |||
440 | .flags = IORESOURCE_MEM, | 441 | .flags = IORESOURCE_MEM, |
441 | }, | 442 | }, |
442 | [1] = { | 443 | [1] = { |
443 | .start = 16, | 444 | .start = evt2irq(0x400), |
444 | .flags = IORESOURCE_IRQ, | 445 | .flags = IORESOURCE_IRQ, |
445 | }, | 446 | }, |
446 | }; | 447 | }; |
@@ -468,7 +469,7 @@ static struct resource tmu1_resources[] = { | |||
468 | .flags = IORESOURCE_MEM, | 469 | .flags = IORESOURCE_MEM, |
469 | }, | 470 | }, |
470 | [1] = { | 471 | [1] = { |
471 | .start = 17, | 472 | .start = evt2irq(0x420), |
472 | .flags = IORESOURCE_IRQ, | 473 | .flags = IORESOURCE_IRQ, |
473 | }, | 474 | }, |
474 | }; | 475 | }; |
@@ -525,7 +526,7 @@ static struct resource siu_resources[] = { | |||
525 | .flags = IORESOURCE_MEM, | 526 | .flags = IORESOURCE_MEM, |
526 | }, | 527 | }, |
527 | [1] = { | 528 | [1] = { |
528 | .start = 108, | 529 | .start = evt2irq(0xf80), |
529 | .flags = IORESOURCE_IRQ, | 530 | .flags = IORESOURCE_IRQ, |
530 | }, | 531 | }, |
531 | }; | 532 | }; |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c index 3c1da7e3067d..28d6fd835fe0 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/uio_driver.h> | 15 | #include <linux/uio_driver.h> |
16 | #include <linux/usb/r8a66597.h> | 16 | #include <linux/usb/r8a66597.h> |
17 | #include <linux/sh_timer.h> | 17 | #include <linux/sh_timer.h> |
18 | #include <linux/sh_intc.h> | ||
18 | #include <linux/io.h> | 19 | #include <linux/io.h> |
19 | #include <asm/clock.h> | 20 | #include <asm/clock.h> |
20 | #include <asm/mmzone.h> | 21 | #include <asm/mmzone.h> |
@@ -28,7 +29,7 @@ static struct plat_sci_port scif0_platform_data = { | |||
28 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 29 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
29 | .scbrr_algo_id = SCBRR_ALGO_2, | 30 | .scbrr_algo_id = SCBRR_ALGO_2, |
30 | .type = PORT_SCIF, | 31 | .type = PORT_SCIF, |
31 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xC00)), | 32 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xc00)), |
32 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | 33 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
33 | }; | 34 | }; |
34 | 35 | ||
@@ -47,7 +48,7 @@ static struct plat_sci_port scif1_platform_data = { | |||
47 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 48 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
48 | .scbrr_algo_id = SCBRR_ALGO_2, | 49 | .scbrr_algo_id = SCBRR_ALGO_2, |
49 | .type = PORT_SCIF, | 50 | .type = PORT_SCIF, |
50 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xC20)), | 51 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xc20)), |
51 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | 52 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
52 | }; | 53 | }; |
53 | 54 | ||
@@ -66,7 +67,7 @@ static struct plat_sci_port scif2_platform_data = { | |||
66 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 67 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
67 | .scbrr_algo_id = SCBRR_ALGO_2, | 68 | .scbrr_algo_id = SCBRR_ALGO_2, |
68 | .type = PORT_SCIF, | 69 | .type = PORT_SCIF, |
69 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xC40)), | 70 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xc40)), |
70 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | 71 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
71 | }; | 72 | }; |
72 | 73 | ||
@@ -85,7 +86,7 @@ static struct plat_sci_port scif3_platform_data = { | |||
85 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 86 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
86 | .scbrr_algo_id = SCBRR_ALGO_3, | 87 | .scbrr_algo_id = SCBRR_ALGO_3, |
87 | .type = PORT_SCIFA, | 88 | .type = PORT_SCIFA, |
88 | .irqs = { 56, 56, 56, 56 }, | 89 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x900)), |
89 | }; | 90 | }; |
90 | 91 | ||
91 | static struct platform_device scif3_device = { | 92 | static struct platform_device scif3_device = { |
@@ -103,7 +104,7 @@ static struct plat_sci_port scif4_platform_data = { | |||
103 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 104 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
104 | .scbrr_algo_id = SCBRR_ALGO_3, | 105 | .scbrr_algo_id = SCBRR_ALGO_3, |
105 | .type = PORT_SCIFA, | 106 | .type = PORT_SCIFA, |
106 | .irqs = { 88, 88, 88, 88 }, | 107 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xd00)), |
107 | }; | 108 | }; |
108 | 109 | ||
109 | static struct platform_device scif4_device = { | 110 | static struct platform_device scif4_device = { |
@@ -121,7 +122,7 @@ static struct plat_sci_port scif5_platform_data = { | |||
121 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 122 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
122 | .scbrr_algo_id = SCBRR_ALGO_3, | 123 | .scbrr_algo_id = SCBRR_ALGO_3, |
123 | .type = PORT_SCIFA, | 124 | .type = PORT_SCIFA, |
124 | .irqs = { 109, 109, 109, 109 }, | 125 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xfa0)), |
125 | }; | 126 | }; |
126 | 127 | ||
127 | static struct platform_device scif5_device = { | 128 | static struct platform_device scif5_device = { |
@@ -135,7 +136,7 @@ static struct platform_device scif5_device = { | |||
135 | static struct uio_info vpu_platform_data = { | 136 | static struct uio_info vpu_platform_data = { |
136 | .name = "VPU5", | 137 | .name = "VPU5", |
137 | .version = "0", | 138 | .version = "0", |
138 | .irq = 60, | 139 | .irq = evt2irq(0x980), |
139 | }; | 140 | }; |
140 | 141 | ||
141 | static struct resource vpu_resources[] = { | 142 | static struct resource vpu_resources[] = { |
@@ -163,7 +164,7 @@ static struct platform_device vpu_device = { | |||
163 | static struct uio_info veu0_platform_data = { | 164 | static struct uio_info veu0_platform_data = { |
164 | .name = "VEU2H", | 165 | .name = "VEU2H", |
165 | .version = "0", | 166 | .version = "0", |
166 | .irq = 54, | 167 | .irq = evt2irq(0x8c0), |
167 | }; | 168 | }; |
168 | 169 | ||
169 | static struct resource veu0_resources[] = { | 170 | static struct resource veu0_resources[] = { |
@@ -191,7 +192,7 @@ static struct platform_device veu0_device = { | |||
191 | static struct uio_info veu1_platform_data = { | 192 | static struct uio_info veu1_platform_data = { |
192 | .name = "VEU2H", | 193 | .name = "VEU2H", |
193 | .version = "0", | 194 | .version = "0", |
194 | .irq = 27, | 195 | .irq = evt2irq(0x560), |
195 | }; | 196 | }; |
196 | 197 | ||
197 | static struct resource veu1_resources[] = { | 198 | static struct resource veu1_resources[] = { |
@@ -230,7 +231,7 @@ static struct resource cmt_resources[] = { | |||
230 | .flags = IORESOURCE_MEM, | 231 | .flags = IORESOURCE_MEM, |
231 | }, | 232 | }, |
232 | [1] = { | 233 | [1] = { |
233 | .start = 104, | 234 | .start = evt2irq(0xf00), |
234 | .flags = IORESOURCE_IRQ, | 235 | .flags = IORESOURCE_IRQ, |
235 | }, | 236 | }, |
236 | }; | 237 | }; |
@@ -258,7 +259,7 @@ static struct resource tmu0_resources[] = { | |||
258 | .flags = IORESOURCE_MEM, | 259 | .flags = IORESOURCE_MEM, |
259 | }, | 260 | }, |
260 | [1] = { | 261 | [1] = { |
261 | .start = 16, | 262 | .start = evt2irq(0x400), |
262 | .flags = IORESOURCE_IRQ, | 263 | .flags = IORESOURCE_IRQ, |
263 | }, | 264 | }, |
264 | }; | 265 | }; |
@@ -286,7 +287,7 @@ static struct resource tmu1_resources[] = { | |||
286 | .flags = IORESOURCE_MEM, | 287 | .flags = IORESOURCE_MEM, |
287 | }, | 288 | }, |
288 | [1] = { | 289 | [1] = { |
289 | .start = 17, | 290 | .start = evt2irq(0x420), |
290 | .flags = IORESOURCE_IRQ, | 291 | .flags = IORESOURCE_IRQ, |
291 | }, | 292 | }, |
292 | }; | 293 | }; |
@@ -313,7 +314,7 @@ static struct resource tmu2_resources[] = { | |||
313 | .flags = IORESOURCE_MEM, | 314 | .flags = IORESOURCE_MEM, |
314 | }, | 315 | }, |
315 | [1] = { | 316 | [1] = { |
316 | .start = 18, | 317 | .start = evt2irq(0x440), |
317 | .flags = IORESOURCE_IRQ, | 318 | .flags = IORESOURCE_IRQ, |
318 | }, | 319 | }, |
319 | }; | 320 | }; |
@@ -340,7 +341,7 @@ static struct resource tmu3_resources[] = { | |||
340 | .flags = IORESOURCE_MEM, | 341 | .flags = IORESOURCE_MEM, |
341 | }, | 342 | }, |
342 | [1] = { | 343 | [1] = { |
343 | .start = 57, | 344 | .start = evt2irq(0x920), |
344 | .flags = IORESOURCE_IRQ, | 345 | .flags = IORESOURCE_IRQ, |
345 | }, | 346 | }, |
346 | }; | 347 | }; |
@@ -367,7 +368,7 @@ static struct resource tmu4_resources[] = { | |||
367 | .flags = IORESOURCE_MEM, | 368 | .flags = IORESOURCE_MEM, |
368 | }, | 369 | }, |
369 | [1] = { | 370 | [1] = { |
370 | .start = 58, | 371 | .start = evt2irq(0x940), |
371 | .flags = IORESOURCE_IRQ, | 372 | .flags = IORESOURCE_IRQ, |
372 | }, | 373 | }, |
373 | }; | 374 | }; |
@@ -394,7 +395,7 @@ static struct resource tmu5_resources[] = { | |||
394 | .flags = IORESOURCE_MEM, | 395 | .flags = IORESOURCE_MEM, |
395 | }, | 396 | }, |
396 | [1] = { | 397 | [1] = { |
397 | .start = 57, | 398 | .start = evt2irq(0x920), |
398 | .flags = IORESOURCE_IRQ, | 399 | .flags = IORESOURCE_IRQ, |
399 | }, | 400 | }, |
400 | }; | 401 | }; |
@@ -417,17 +418,17 @@ static struct resource rtc_resources[] = { | |||
417 | }, | 418 | }, |
418 | [1] = { | 419 | [1] = { |
419 | /* Period IRQ */ | 420 | /* Period IRQ */ |
420 | .start = 69, | 421 | .start = evt2irq(0xaa0), |
421 | .flags = IORESOURCE_IRQ, | 422 | .flags = IORESOURCE_IRQ, |
422 | }, | 423 | }, |
423 | [2] = { | 424 | [2] = { |
424 | /* Carry IRQ */ | 425 | /* Carry IRQ */ |
425 | .start = 70, | 426 | .start = evt2irq(0xac0), |
426 | .flags = IORESOURCE_IRQ, | 427 | .flags = IORESOURCE_IRQ, |
427 | }, | 428 | }, |
428 | [3] = { | 429 | [3] = { |
429 | /* Alarm IRQ */ | 430 | /* Alarm IRQ */ |
430 | .start = 68, | 431 | .start = evt2irq(0xa80), |
431 | .flags = IORESOURCE_IRQ, | 432 | .flags = IORESOURCE_IRQ, |
432 | }, | 433 | }, |
433 | }; | 434 | }; |
@@ -450,8 +451,8 @@ static struct resource sh7723_usb_host_resources[] = { | |||
450 | .flags = IORESOURCE_MEM, | 451 | .flags = IORESOURCE_MEM, |
451 | }, | 452 | }, |
452 | [1] = { | 453 | [1] = { |
453 | .start = 65, | 454 | .start = evt2irq(0xa20), |
454 | .end = 65, | 455 | .end = evt2irq(0xa20), |
455 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW, | 456 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_LOW, |
456 | }, | 457 | }, |
457 | }; | 458 | }; |
@@ -476,8 +477,8 @@ static struct resource iic_resources[] = { | |||
476 | .flags = IORESOURCE_MEM, | 477 | .flags = IORESOURCE_MEM, |
477 | }, | 478 | }, |
478 | [1] = { | 479 | [1] = { |
479 | .start = 96, | 480 | .start = evt2irq(0xe00), |
480 | .end = 99, | 481 | .end = evt2irq(0xe60), |
481 | .flags = IORESOURCE_IRQ, | 482 | .flags = IORESOURCE_IRQ, |
482 | }, | 483 | }, |
483 | }; | 484 | }; |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7724.c b/arch/sh/kernel/cpu/sh4a/setup-sh7724.c index 20623baeb1c6..26b74c2f9496 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7724.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7724.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/uio_driver.h> | 20 | #include <linux/uio_driver.h> |
21 | #include <linux/sh_dma.h> | 21 | #include <linux/sh_dma.h> |
22 | #include <linux/sh_timer.h> | 22 | #include <linux/sh_timer.h> |
23 | #include <linux/sh_intc.h> | ||
23 | #include <linux/io.h> | 24 | #include <linux/io.h> |
24 | #include <linux/notifier.h> | 25 | #include <linux/notifier.h> |
25 | 26 | ||
@@ -215,20 +216,20 @@ static struct resource sh7724_dmae0_resources[] = { | |||
215 | }, | 216 | }, |
216 | { | 217 | { |
217 | .name = "error_irq", | 218 | .name = "error_irq", |
218 | .start = 78, | 219 | .start = evt2irq(0xbc0), |
219 | .end = 78, | 220 | .end = evt2irq(0xbc0), |
220 | .flags = IORESOURCE_IRQ, | 221 | .flags = IORESOURCE_IRQ, |
221 | }, | 222 | }, |
222 | { | 223 | { |
223 | /* IRQ for channels 0-3 */ | 224 | /* IRQ for channels 0-3 */ |
224 | .start = 48, | 225 | .start = evt2irq(0x800), |
225 | .end = 51, | 226 | .end = evt2irq(0x860), |
226 | .flags = IORESOURCE_IRQ, | 227 | .flags = IORESOURCE_IRQ, |
227 | }, | 228 | }, |
228 | { | 229 | { |
229 | /* IRQ for channels 4-5 */ | 230 | /* IRQ for channels 4-5 */ |
230 | .start = 76, | 231 | .start = evt2irq(0xb80), |
231 | .end = 77, | 232 | .end = evt2irq(0xba0), |
232 | .flags = IORESOURCE_IRQ, | 233 | .flags = IORESOURCE_IRQ, |
233 | }, | 234 | }, |
234 | }; | 235 | }; |
@@ -249,20 +250,20 @@ static struct resource sh7724_dmae1_resources[] = { | |||
249 | }, | 250 | }, |
250 | { | 251 | { |
251 | .name = "error_irq", | 252 | .name = "error_irq", |
252 | .start = 74, | 253 | .start = evt2irq(0xb40), |
253 | .end = 74, | 254 | .end = evt2irq(0xb40), |
254 | .flags = IORESOURCE_IRQ, | 255 | .flags = IORESOURCE_IRQ, |
255 | }, | 256 | }, |
256 | { | 257 | { |
257 | /* IRQ for channels 0-3 */ | 258 | /* IRQ for channels 0-3 */ |
258 | .start = 40, | 259 | .start = evt2irq(0x700), |
259 | .end = 43, | 260 | .end = evt2irq(0x760), |
260 | .flags = IORESOURCE_IRQ, | 261 | .flags = IORESOURCE_IRQ, |
261 | }, | 262 | }, |
262 | { | 263 | { |
263 | /* IRQ for channels 4-5 */ | 264 | /* IRQ for channels 4-5 */ |
264 | .start = 72, | 265 | .start = evt2irq(0xb00), |
265 | .end = 73, | 266 | .end = evt2irq(0xb20), |
266 | .flags = IORESOURCE_IRQ, | 267 | .flags = IORESOURCE_IRQ, |
267 | }, | 268 | }, |
268 | }; | 269 | }; |
@@ -295,7 +296,7 @@ static struct plat_sci_port scif0_platform_data = { | |||
295 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 296 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
296 | .scbrr_algo_id = SCBRR_ALGO_2, | 297 | .scbrr_algo_id = SCBRR_ALGO_2, |
297 | .type = PORT_SCIF, | 298 | .type = PORT_SCIF, |
298 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xC00)), | 299 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xc00)), |
299 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | 300 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
300 | }; | 301 | }; |
301 | 302 | ||
@@ -314,7 +315,7 @@ static struct plat_sci_port scif1_platform_data = { | |||
314 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 315 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
315 | .scbrr_algo_id = SCBRR_ALGO_2, | 316 | .scbrr_algo_id = SCBRR_ALGO_2, |
316 | .type = PORT_SCIF, | 317 | .type = PORT_SCIF, |
317 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xC20)), | 318 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xc20)), |
318 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | 319 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
319 | }; | 320 | }; |
320 | 321 | ||
@@ -333,7 +334,7 @@ static struct plat_sci_port scif2_platform_data = { | |||
333 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 334 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
334 | .scbrr_algo_id = SCBRR_ALGO_2, | 335 | .scbrr_algo_id = SCBRR_ALGO_2, |
335 | .type = PORT_SCIF, | 336 | .type = PORT_SCIF, |
336 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xC40)), | 337 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xc40)), |
337 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, | 338 | .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
338 | }; | 339 | }; |
339 | 340 | ||
@@ -352,7 +353,7 @@ static struct plat_sci_port scif3_platform_data = { | |||
352 | .scscr = SCSCR_RE | SCSCR_TE, | 353 | .scscr = SCSCR_RE | SCSCR_TE, |
353 | .scbrr_algo_id = SCBRR_ALGO_3, | 354 | .scbrr_algo_id = SCBRR_ALGO_3, |
354 | .type = PORT_SCIFA, | 355 | .type = PORT_SCIFA, |
355 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x900)), | 356 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x900)), |
356 | }; | 357 | }; |
357 | 358 | ||
358 | static struct platform_device scif3_device = { | 359 | static struct platform_device scif3_device = { |
@@ -370,7 +371,7 @@ static struct plat_sci_port scif4_platform_data = { | |||
370 | .scscr = SCSCR_RE | SCSCR_TE, | 371 | .scscr = SCSCR_RE | SCSCR_TE, |
371 | .scbrr_algo_id = SCBRR_ALGO_3, | 372 | .scbrr_algo_id = SCBRR_ALGO_3, |
372 | .type = PORT_SCIFA, | 373 | .type = PORT_SCIFA, |
373 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xD00)), | 374 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xd00)), |
374 | }; | 375 | }; |
375 | 376 | ||
376 | static struct platform_device scif4_device = { | 377 | static struct platform_device scif4_device = { |
@@ -388,7 +389,7 @@ static struct plat_sci_port scif5_platform_data = { | |||
388 | .scscr = SCSCR_RE | SCSCR_TE, | 389 | .scscr = SCSCR_RE | SCSCR_TE, |
389 | .scbrr_algo_id = SCBRR_ALGO_3, | 390 | .scbrr_algo_id = SCBRR_ALGO_3, |
390 | .type = PORT_SCIFA, | 391 | .type = PORT_SCIFA, |
391 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xFA0)), | 392 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xfa0)), |
392 | }; | 393 | }; |
393 | 394 | ||
394 | static struct platform_device scif5_device = { | 395 | static struct platform_device scif5_device = { |
@@ -408,17 +409,17 @@ static struct resource rtc_resources[] = { | |||
408 | }, | 409 | }, |
409 | [1] = { | 410 | [1] = { |
410 | /* Period IRQ */ | 411 | /* Period IRQ */ |
411 | .start = 69, | 412 | .start = evt2irq(0xaa0), |
412 | .flags = IORESOURCE_IRQ, | 413 | .flags = IORESOURCE_IRQ, |
413 | }, | 414 | }, |
414 | [2] = { | 415 | [2] = { |
415 | /* Carry IRQ */ | 416 | /* Carry IRQ */ |
416 | .start = 70, | 417 | .start = evt2irq(0xac0), |
417 | .flags = IORESOURCE_IRQ, | 418 | .flags = IORESOURCE_IRQ, |
418 | }, | 419 | }, |
419 | [3] = { | 420 | [3] = { |
420 | /* Alarm IRQ */ | 421 | /* Alarm IRQ */ |
421 | .start = 68, | 422 | .start = evt2irq(0xa80), |
422 | .flags = IORESOURCE_IRQ, | 423 | .flags = IORESOURCE_IRQ, |
423 | }, | 424 | }, |
424 | }; | 425 | }; |
@@ -439,8 +440,8 @@ static struct resource iic0_resources[] = { | |||
439 | .flags = IORESOURCE_MEM, | 440 | .flags = IORESOURCE_MEM, |
440 | }, | 441 | }, |
441 | [1] = { | 442 | [1] = { |
442 | .start = 96, | 443 | .start = evt2irq(0xe00), |
443 | .end = 99, | 444 | .end = evt2irq(0xe60), |
444 | .flags = IORESOURCE_IRQ, | 445 | .flags = IORESOURCE_IRQ, |
445 | }, | 446 | }, |
446 | }; | 447 | }; |
@@ -461,8 +462,8 @@ static struct resource iic1_resources[] = { | |||
461 | .flags = IORESOURCE_MEM, | 462 | .flags = IORESOURCE_MEM, |
462 | }, | 463 | }, |
463 | [1] = { | 464 | [1] = { |
464 | .start = 92, | 465 | .start = evt2irq(0xd80), |
465 | .end = 95, | 466 | .end = evt2irq(0xde0), |
466 | .flags = IORESOURCE_IRQ, | 467 | .flags = IORESOURCE_IRQ, |
467 | }, | 468 | }, |
468 | }; | 469 | }; |
@@ -478,7 +479,7 @@ static struct platform_device iic1_device = { | |||
478 | static struct uio_info vpu_platform_data = { | 479 | static struct uio_info vpu_platform_data = { |
479 | .name = "VPU5F", | 480 | .name = "VPU5F", |
480 | .version = "0", | 481 | .version = "0", |
481 | .irq = 60, | 482 | .irq = evt2irq(0x980), |
482 | }; | 483 | }; |
483 | 484 | ||
484 | static struct resource vpu_resources[] = { | 485 | static struct resource vpu_resources[] = { |
@@ -507,7 +508,7 @@ static struct platform_device vpu_device = { | |||
507 | static struct uio_info veu0_platform_data = { | 508 | static struct uio_info veu0_platform_data = { |
508 | .name = "VEU3F0", | 509 | .name = "VEU3F0", |
509 | .version = "0", | 510 | .version = "0", |
510 | .irq = 83, | 511 | .irq = evt2irq(0xc60), |
511 | }; | 512 | }; |
512 | 513 | ||
513 | static struct resource veu0_resources[] = { | 514 | static struct resource veu0_resources[] = { |
@@ -536,7 +537,7 @@ static struct platform_device veu0_device = { | |||
536 | static struct uio_info veu1_platform_data = { | 537 | static struct uio_info veu1_platform_data = { |
537 | .name = "VEU3F1", | 538 | .name = "VEU3F1", |
538 | .version = "0", | 539 | .version = "0", |
539 | .irq = 54, | 540 | .irq = evt2irq(0x8c0), |
540 | }; | 541 | }; |
541 | 542 | ||
542 | static struct resource veu1_resources[] = { | 543 | static struct resource veu1_resources[] = { |
@@ -633,7 +634,7 @@ static struct resource cmt_resources[] = { | |||
633 | .flags = IORESOURCE_MEM, | 634 | .flags = IORESOURCE_MEM, |
634 | }, | 635 | }, |
635 | [1] = { | 636 | [1] = { |
636 | .start = 104, | 637 | .start = evt2irq(0xf00), |
637 | .flags = IORESOURCE_IRQ, | 638 | .flags = IORESOURCE_IRQ, |
638 | }, | 639 | }, |
639 | }; | 640 | }; |
@@ -661,7 +662,7 @@ static struct resource tmu0_resources[] = { | |||
661 | .flags = IORESOURCE_MEM, | 662 | .flags = IORESOURCE_MEM, |
662 | }, | 663 | }, |
663 | [1] = { | 664 | [1] = { |
664 | .start = 16, | 665 | .start = evt2irq(0x400), |
665 | .flags = IORESOURCE_IRQ, | 666 | .flags = IORESOURCE_IRQ, |
666 | }, | 667 | }, |
667 | }; | 668 | }; |
@@ -689,7 +690,7 @@ static struct resource tmu1_resources[] = { | |||
689 | .flags = IORESOURCE_MEM, | 690 | .flags = IORESOURCE_MEM, |
690 | }, | 691 | }, |
691 | [1] = { | 692 | [1] = { |
692 | .start = 17, | 693 | .start = evt2irq(0x420), |
693 | .flags = IORESOURCE_IRQ, | 694 | .flags = IORESOURCE_IRQ, |
694 | }, | 695 | }, |
695 | }; | 696 | }; |
@@ -716,7 +717,7 @@ static struct resource tmu2_resources[] = { | |||
716 | .flags = IORESOURCE_MEM, | 717 | .flags = IORESOURCE_MEM, |
717 | }, | 718 | }, |
718 | [1] = { | 719 | [1] = { |
719 | .start = 18, | 720 | .start = evt2irq(0x440), |
720 | .flags = IORESOURCE_IRQ, | 721 | .flags = IORESOURCE_IRQ, |
721 | }, | 722 | }, |
722 | }; | 723 | }; |
@@ -744,7 +745,7 @@ static struct resource tmu3_resources[] = { | |||
744 | .flags = IORESOURCE_MEM, | 745 | .flags = IORESOURCE_MEM, |
745 | }, | 746 | }, |
746 | [1] = { | 747 | [1] = { |
747 | .start = 57, | 748 | .start = evt2irq(0x920), |
748 | .flags = IORESOURCE_IRQ, | 749 | .flags = IORESOURCE_IRQ, |
749 | }, | 750 | }, |
750 | }; | 751 | }; |
@@ -771,7 +772,7 @@ static struct resource tmu4_resources[] = { | |||
771 | .flags = IORESOURCE_MEM, | 772 | .flags = IORESOURCE_MEM, |
772 | }, | 773 | }, |
773 | [1] = { | 774 | [1] = { |
774 | .start = 58, | 775 | .start = evt2irq(0x940), |
775 | .flags = IORESOURCE_IRQ, | 776 | .flags = IORESOURCE_IRQ, |
776 | }, | 777 | }, |
777 | }; | 778 | }; |
@@ -798,7 +799,7 @@ static struct resource tmu5_resources[] = { | |||
798 | .flags = IORESOURCE_MEM, | 799 | .flags = IORESOURCE_MEM, |
799 | }, | 800 | }, |
800 | [1] = { | 801 | [1] = { |
801 | .start = 57, | 802 | .start = evt2irq(0x920), |
802 | .flags = IORESOURCE_IRQ, | 803 | .flags = IORESOURCE_IRQ, |
803 | }, | 804 | }, |
804 | }; | 805 | }; |
@@ -817,7 +818,7 @@ static struct platform_device tmu5_device = { | |||
817 | static struct uio_info jpu_platform_data = { | 818 | static struct uio_info jpu_platform_data = { |
818 | .name = "JPU", | 819 | .name = "JPU", |
819 | .version = "0", | 820 | .version = "0", |
820 | .irq = 27, | 821 | .irq = evt2irq(0x560), |
821 | }; | 822 | }; |
822 | 823 | ||
823 | static struct resource jpu_resources[] = { | 824 | static struct resource jpu_resources[] = { |
@@ -846,7 +847,7 @@ static struct platform_device jpu_device = { | |||
846 | static struct uio_info spu0_platform_data = { | 847 | static struct uio_info spu0_platform_data = { |
847 | .name = "SPU2DSP0", | 848 | .name = "SPU2DSP0", |
848 | .version = "0", | 849 | .version = "0", |
849 | .irq = 86, | 850 | .irq = evt2irq(0xcc0), |
850 | }; | 851 | }; |
851 | 852 | ||
852 | static struct resource spu0_resources[] = { | 853 | static struct resource spu0_resources[] = { |
@@ -875,7 +876,7 @@ static struct platform_device spu0_device = { | |||
875 | static struct uio_info spu1_platform_data = { | 876 | static struct uio_info spu1_platform_data = { |
876 | .name = "SPU2DSP1", | 877 | .name = "SPU2DSP1", |
877 | .version = "0", | 878 | .version = "0", |
878 | .irq = 87, | 879 | .irq = evt2irq(0xce0), |
879 | }; | 880 | }; |
880 | 881 | ||
881 | static struct resource spu1_resources[] = { | 882 | static struct resource spu1_resources[] = { |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7757.c b/arch/sh/kernel/cpu/sh4a/setup-sh7757.c index fe45e4cb183d..a7708425afa9 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7757.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7757.c | |||
@@ -18,7 +18,7 @@ | |||
18 | #include <linux/dma-mapping.h> | 18 | #include <linux/dma-mapping.h> |
19 | #include <linux/sh_timer.h> | 19 | #include <linux/sh_timer.h> |
20 | #include <linux/sh_dma.h> | 20 | #include <linux/sh_dma.h> |
21 | 21 | #include <linux/sh_intc.h> | |
22 | #include <cpu/dma-register.h> | 22 | #include <cpu/dma-register.h> |
23 | #include <cpu/sh7757.h> | 23 | #include <cpu/sh7757.h> |
24 | 24 | ||
@@ -45,7 +45,7 @@ static struct plat_sci_port scif3_platform_data = { | |||
45 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 45 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
46 | .scbrr_algo_id = SCBRR_ALGO_2, | 46 | .scbrr_algo_id = SCBRR_ALGO_2, |
47 | .type = PORT_SCIF, | 47 | .type = PORT_SCIF, |
48 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xB80)), | 48 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xb80)), |
49 | }; | 49 | }; |
50 | 50 | ||
51 | static struct platform_device scif3_device = { | 51 | static struct platform_device scif3_device = { |
@@ -86,7 +86,7 @@ static struct resource tmu0_resources[] = { | |||
86 | .flags = IORESOURCE_MEM, | 86 | .flags = IORESOURCE_MEM, |
87 | }, | 87 | }, |
88 | [1] = { | 88 | [1] = { |
89 | .start = 28, | 89 | .start = evt2irq(0x580), |
90 | .flags = IORESOURCE_IRQ, | 90 | .flags = IORESOURCE_IRQ, |
91 | }, | 91 | }, |
92 | }; | 92 | }; |
@@ -114,7 +114,7 @@ static struct resource tmu1_resources[] = { | |||
114 | .flags = IORESOURCE_MEM, | 114 | .flags = IORESOURCE_MEM, |
115 | }, | 115 | }, |
116 | [1] = { | 116 | [1] = { |
117 | .start = 29, | 117 | .start = evt2irq(0x5a0), |
118 | .flags = IORESOURCE_IRQ, | 118 | .flags = IORESOURCE_IRQ, |
119 | }, | 119 | }, |
120 | }; | 120 | }; |
@@ -136,7 +136,7 @@ static struct resource spi0_resources[] = { | |||
136 | .flags = IORESOURCE_MEM | IORESOURCE_MEM_32BIT, | 136 | .flags = IORESOURCE_MEM | IORESOURCE_MEM_32BIT, |
137 | }, | 137 | }, |
138 | [1] = { | 138 | [1] = { |
139 | .start = 86, | 139 | .start = evt2irq(0xcc0), |
140 | .flags = IORESOURCE_IRQ, | 140 | .flags = IORESOURCE_IRQ, |
141 | }, | 141 | }, |
142 | }; | 142 | }; |
@@ -466,8 +466,8 @@ static struct resource sh7757_dmae0_resources[] = { | |||
466 | }, | 466 | }, |
467 | { | 467 | { |
468 | .name = "error_irq", | 468 | .name = "error_irq", |
469 | .start = 34, | 469 | .start = evt2irq(0x640), |
470 | .end = 34, | 470 | .end = evt2irq(0x640), |
471 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, | 471 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, |
472 | }, | 472 | }, |
473 | }; | 473 | }; |
@@ -488,56 +488,56 @@ static struct resource sh7757_dmae1_resources[] = { | |||
488 | }, | 488 | }, |
489 | { | 489 | { |
490 | .name = "error_irq", | 490 | .name = "error_irq", |
491 | .start = 34, | 491 | .start = evt2irq(0x640), |
492 | .end = 34, | 492 | .end = evt2irq(0x640), |
493 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, | 493 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, |
494 | }, | 494 | }, |
495 | { | 495 | { |
496 | /* IRQ for channels 4 */ | 496 | /* IRQ for channels 4 */ |
497 | .start = 46, | 497 | .start = evt2irq(0x7c0), |
498 | .end = 46, | 498 | .end = evt2irq(0x7c0), |
499 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, | 499 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, |
500 | }, | 500 | }, |
501 | { | 501 | { |
502 | /* IRQ for channels 5 */ | 502 | /* IRQ for channels 5 */ |
503 | .start = 46, | 503 | .start = evt2irq(0x7c0), |
504 | .end = 46, | 504 | .end = evt2irq(0x7c0), |
505 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, | 505 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, |
506 | }, | 506 | }, |
507 | { | 507 | { |
508 | /* IRQ for channels 6 */ | 508 | /* IRQ for channels 6 */ |
509 | .start = 88, | 509 | .start = evt2irq(0xd00), |
510 | .end = 88, | 510 | .end = evt2irq(0xd00), |
511 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, | 511 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, |
512 | }, | 512 | }, |
513 | { | 513 | { |
514 | /* IRQ for channels 7 */ | 514 | /* IRQ for channels 7 */ |
515 | .start = 88, | 515 | .start = evt2irq(0xd00), |
516 | .end = 88, | 516 | .end = evt2irq(0xd00), |
517 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, | 517 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, |
518 | }, | 518 | }, |
519 | { | 519 | { |
520 | /* IRQ for channels 8 */ | 520 | /* IRQ for channels 8 */ |
521 | .start = 88, | 521 | .start = evt2irq(0xd00), |
522 | .end = 88, | 522 | .end = evt2irq(0xd00), |
523 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, | 523 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, |
524 | }, | 524 | }, |
525 | { | 525 | { |
526 | /* IRQ for channels 9 */ | 526 | /* IRQ for channels 9 */ |
527 | .start = 88, | 527 | .start = evt2irq(0xd00), |
528 | .end = 88, | 528 | .end = evt2irq(0xd00), |
529 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, | 529 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, |
530 | }, | 530 | }, |
531 | { | 531 | { |
532 | /* IRQ for channels 10 */ | 532 | /* IRQ for channels 10 */ |
533 | .start = 88, | 533 | .start = evt2irq(0xd00), |
534 | .end = 88, | 534 | .end = evt2irq(0xd00), |
535 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, | 535 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, |
536 | }, | 536 | }, |
537 | { | 537 | { |
538 | /* IRQ for channels 11 */ | 538 | /* IRQ for channels 11 */ |
539 | .start = 88, | 539 | .start = evt2irq(0xd00), |
540 | .end = 88, | 540 | .end = evt2irq(0xd00), |
541 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, | 541 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, |
542 | }, | 542 | }, |
543 | }; | 543 | }; |
@@ -558,20 +558,20 @@ static struct resource sh7757_dmae2_resources[] = { | |||
558 | }, | 558 | }, |
559 | { | 559 | { |
560 | .name = "error_irq", | 560 | .name = "error_irq", |
561 | .start = 323, | 561 | .start = evt2irq(0x2a60), |
562 | .end = 323, | 562 | .end = evt2irq(0x2a60), |
563 | .flags = IORESOURCE_IRQ, | 563 | .flags = IORESOURCE_IRQ, |
564 | }, | 564 | }, |
565 | { | 565 | { |
566 | /* IRQ for channels 12 to 16 */ | 566 | /* IRQ for channels 12 to 16 */ |
567 | .start = 272, | 567 | .start = evt2irq(0x2400), |
568 | .end = 276, | 568 | .end = evt2irq(0x2480), |
569 | .flags = IORESOURCE_IRQ, | 569 | .flags = IORESOURCE_IRQ, |
570 | }, | 570 | }, |
571 | { | 571 | { |
572 | /* IRQ for channel 17 */ | 572 | /* IRQ for channel 17 */ |
573 | .start = 279, | 573 | .start = evt2irq(0x24e0), |
574 | .end = 279, | 574 | .end = evt2irq(0x24e0), |
575 | .flags = IORESOURCE_IRQ, | 575 | .flags = IORESOURCE_IRQ, |
576 | }, | 576 | }, |
577 | }; | 577 | }; |
@@ -592,20 +592,20 @@ static struct resource sh7757_dmae3_resources[] = { | |||
592 | }, | 592 | }, |
593 | { | 593 | { |
594 | .name = "error_irq", | 594 | .name = "error_irq", |
595 | .start = 324, | 595 | .start = evt2irq(0x2a80), |
596 | .end = 324, | 596 | .end = evt2irq(0x2a80), |
597 | .flags = IORESOURCE_IRQ, | 597 | .flags = IORESOURCE_IRQ, |
598 | }, | 598 | }, |
599 | { | 599 | { |
600 | /* IRQ for channels 18 to 22 */ | 600 | /* IRQ for channels 18 to 22 */ |
601 | .start = 280, | 601 | .start = evt2irq(0x2500), |
602 | .end = 284, | 602 | .end = evt2irq(0x2580), |
603 | .flags = IORESOURCE_IRQ, | 603 | .flags = IORESOURCE_IRQ, |
604 | }, | 604 | }, |
605 | { | 605 | { |
606 | /* IRQ for channel 23 */ | 606 | /* IRQ for channel 23 */ |
607 | .start = 288, | 607 | .start = evt2irq(0x2600), |
608 | .end = 288, | 608 | .end = evt2irq(0x2600), |
609 | .flags = IORESOURCE_IRQ, | 609 | .flags = IORESOURCE_IRQ, |
610 | }, | 610 | }, |
611 | }; | 611 | }; |
@@ -668,7 +668,7 @@ static struct resource spi1_resources[] = { | |||
668 | .flags = IORESOURCE_MEM | IORESOURCE_MEM_8BIT, | 668 | .flags = IORESOURCE_MEM | IORESOURCE_MEM_8BIT, |
669 | }, | 669 | }, |
670 | { | 670 | { |
671 | .start = 54, | 671 | .start = evt2irq(0x8c0), |
672 | .flags = IORESOURCE_IRQ, | 672 | .flags = IORESOURCE_IRQ, |
673 | }, | 673 | }, |
674 | }; | 674 | }; |
@@ -687,7 +687,7 @@ static struct resource rspi_resources[] = { | |||
687 | .flags = IORESOURCE_MEM, | 687 | .flags = IORESOURCE_MEM, |
688 | }, | 688 | }, |
689 | { | 689 | { |
690 | .start = 220, | 690 | .start = evt2irq(0x1d80), |
691 | .flags = IORESOURCE_IRQ, | 691 | .flags = IORESOURCE_IRQ, |
692 | }, | 692 | }, |
693 | }; | 693 | }; |
@@ -706,8 +706,8 @@ static struct resource usb_ehci_resources[] = { | |||
706 | .flags = IORESOURCE_MEM, | 706 | .flags = IORESOURCE_MEM, |
707 | }, | 707 | }, |
708 | [1] = { | 708 | [1] = { |
709 | .start = 57, | 709 | .start = evt2irq(0x920), |
710 | .end = 57, | 710 | .end = evt2irq(0x920), |
711 | .flags = IORESOURCE_IRQ, | 711 | .flags = IORESOURCE_IRQ, |
712 | }, | 712 | }, |
713 | }; | 713 | }; |
@@ -730,8 +730,8 @@ static struct resource usb_ohci_resources[] = { | |||
730 | .flags = IORESOURCE_MEM, | 730 | .flags = IORESOURCE_MEM, |
731 | }, | 731 | }, |
732 | [1] = { | 732 | [1] = { |
733 | .start = 57, | 733 | .start = evt2irq(0x920), |
734 | .end = 57, | 734 | .end = evt2irq(0x920), |
735 | .flags = IORESOURCE_IRQ, | 735 | .flags = IORESOURCE_IRQ, |
736 | }, | 736 | }, |
737 | }; | 737 | }; |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7763.c b/arch/sh/kernel/cpu/sh4a/setup-sh7763.c index 197e4c9a4a01..bd0a8fbe610f 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7763.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7763.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/serial.h> | 14 | #include <linux/serial.h> |
15 | #include <linux/sh_timer.h> | 15 | #include <linux/sh_timer.h> |
16 | #include <linux/sh_intc.h> | ||
16 | #include <linux/io.h> | 17 | #include <linux/io.h> |
17 | #include <linux/serial_sci.h> | 18 | #include <linux/serial_sci.h> |
18 | 19 | ||
@@ -40,7 +41,7 @@ static struct plat_sci_port scif1_platform_data = { | |||
40 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 41 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
41 | .scbrr_algo_id = SCBRR_ALGO_2, | 42 | .scbrr_algo_id = SCBRR_ALGO_2, |
42 | .type = PORT_SCIF, | 43 | .type = PORT_SCIF, |
43 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xB80)), | 44 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xb80)), |
44 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | 45 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
45 | }; | 46 | }; |
46 | 47 | ||
@@ -58,7 +59,7 @@ static struct plat_sci_port scif2_platform_data = { | |||
58 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 59 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
59 | .scbrr_algo_id = SCBRR_ALGO_2, | 60 | .scbrr_algo_id = SCBRR_ALGO_2, |
60 | .type = PORT_SCIF, | 61 | .type = PORT_SCIF, |
61 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xF00)), | 62 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xf00)), |
62 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | 63 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
63 | }; | 64 | }; |
64 | 65 | ||
@@ -78,7 +79,7 @@ static struct resource rtc_resources[] = { | |||
78 | }, | 79 | }, |
79 | [1] = { | 80 | [1] = { |
80 | /* Shared Period/Carry/Alarm IRQ */ | 81 | /* Shared Period/Carry/Alarm IRQ */ |
81 | .start = 20, | 82 | .start = evt2irq(0x480), |
82 | .flags = IORESOURCE_IRQ, | 83 | .flags = IORESOURCE_IRQ, |
83 | }, | 84 | }, |
84 | }; | 85 | }; |
@@ -97,13 +98,14 @@ static struct resource usb_ohci_resources[] = { | |||
97 | .flags = IORESOURCE_MEM, | 98 | .flags = IORESOURCE_MEM, |
98 | }, | 99 | }, |
99 | [1] = { | 100 | [1] = { |
100 | .start = 83, | 101 | .start = evt2irq(0xc60), |
101 | .end = 83, | 102 | .end = evt2irq(0xc60), |
102 | .flags = IORESOURCE_IRQ, | 103 | .flags = IORESOURCE_IRQ, |
103 | }, | 104 | }, |
104 | }; | 105 | }; |
105 | 106 | ||
106 | static u64 usb_ohci_dma_mask = 0xffffffffUL; | 107 | static u64 usb_ohci_dma_mask = 0xffffffffUL; |
108 | |||
107 | static struct platform_device usb_ohci_device = { | 109 | static struct platform_device usb_ohci_device = { |
108 | .name = "sh_ohci", | 110 | .name = "sh_ohci", |
109 | .id = -1, | 111 | .id = -1, |
@@ -122,8 +124,8 @@ static struct resource usbf_resources[] = { | |||
122 | .flags = IORESOURCE_MEM, | 124 | .flags = IORESOURCE_MEM, |
123 | }, | 125 | }, |
124 | [1] = { | 126 | [1] = { |
125 | .start = 84, | 127 | .start = evt2irq(0xc80), |
126 | .end = 84, | 128 | .end = evt2irq(0xc80), |
127 | .flags = IORESOURCE_IRQ, | 129 | .flags = IORESOURCE_IRQ, |
128 | }, | 130 | }, |
129 | }; | 131 | }; |
@@ -152,7 +154,7 @@ static struct resource tmu0_resources[] = { | |||
152 | .flags = IORESOURCE_MEM, | 154 | .flags = IORESOURCE_MEM, |
153 | }, | 155 | }, |
154 | [1] = { | 156 | [1] = { |
155 | .start = 28, | 157 | .start = evt2irq(0x580), |
156 | .flags = IORESOURCE_IRQ, | 158 | .flags = IORESOURCE_IRQ, |
157 | }, | 159 | }, |
158 | }; | 160 | }; |
@@ -180,7 +182,7 @@ static struct resource tmu1_resources[] = { | |||
180 | .flags = IORESOURCE_MEM, | 182 | .flags = IORESOURCE_MEM, |
181 | }, | 183 | }, |
182 | [1] = { | 184 | [1] = { |
183 | .start = 29, | 185 | .start = evt2irq(0x5a0), |
184 | .flags = IORESOURCE_IRQ, | 186 | .flags = IORESOURCE_IRQ, |
185 | }, | 187 | }, |
186 | }; | 188 | }; |
@@ -207,7 +209,7 @@ static struct resource tmu2_resources[] = { | |||
207 | .flags = IORESOURCE_MEM, | 209 | .flags = IORESOURCE_MEM, |
208 | }, | 210 | }, |
209 | [1] = { | 211 | [1] = { |
210 | .start = 30, | 212 | .start = evt2irq(0x5c0), |
211 | .flags = IORESOURCE_IRQ, | 213 | .flags = IORESOURCE_IRQ, |
212 | }, | 214 | }, |
213 | }; | 215 | }; |
@@ -234,7 +236,7 @@ static struct resource tmu3_resources[] = { | |||
234 | .flags = IORESOURCE_MEM, | 236 | .flags = IORESOURCE_MEM, |
235 | }, | 237 | }, |
236 | [1] = { | 238 | [1] = { |
237 | .start = 96, | 239 | .start = evt2irq(0xe00), |
238 | .flags = IORESOURCE_IRQ, | 240 | .flags = IORESOURCE_IRQ, |
239 | }, | 241 | }, |
240 | }; | 242 | }; |
@@ -261,7 +263,7 @@ static struct resource tmu4_resources[] = { | |||
261 | .flags = IORESOURCE_MEM, | 263 | .flags = IORESOURCE_MEM, |
262 | }, | 264 | }, |
263 | [1] = { | 265 | [1] = { |
264 | .start = 97, | 266 | .start = evt2irq(0xe20), |
265 | .flags = IORESOURCE_IRQ, | 267 | .flags = IORESOURCE_IRQ, |
266 | }, | 268 | }, |
267 | }; | 269 | }; |
@@ -288,7 +290,7 @@ static struct resource tmu5_resources[] = { | |||
288 | .flags = IORESOURCE_MEM, | 290 | .flags = IORESOURCE_MEM, |
289 | }, | 291 | }, |
290 | [1] = { | 292 | [1] = { |
291 | .start = 98, | 293 | .start = evt2irq(0xe40), |
292 | .flags = IORESOURCE_IRQ, | 294 | .flags = IORESOURCE_IRQ, |
293 | }, | 295 | }, |
294 | }; | 296 | }; |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7770.c b/arch/sh/kernel/cpu/sh4a/setup-sh7770.c index 46ea8703d18a..256ea7a45164 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7770.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7770.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/serial.h> | 12 | #include <linux/serial.h> |
13 | #include <linux/serial_sci.h> | 13 | #include <linux/serial_sci.h> |
14 | #include <linux/sh_timer.h> | 14 | #include <linux/sh_timer.h> |
15 | #include <linux/sh_intc.h> | ||
15 | #include <linux/io.h> | 16 | #include <linux/io.h> |
16 | 17 | ||
17 | static struct plat_sci_port scif0_platform_data = { | 18 | static struct plat_sci_port scif0_platform_data = { |
@@ -20,7 +21,7 @@ static struct plat_sci_port scif0_platform_data = { | |||
20 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, | 21 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, |
21 | .scbrr_algo_id = SCBRR_ALGO_2, | 22 | .scbrr_algo_id = SCBRR_ALGO_2, |
22 | .type = PORT_SCIF, | 23 | .type = PORT_SCIF, |
23 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x9A0)), | 24 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x9a0)), |
24 | }; | 25 | }; |
25 | 26 | ||
26 | static struct platform_device scif0_device = { | 27 | static struct platform_device scif0_device = { |
@@ -37,7 +38,7 @@ static struct plat_sci_port scif1_platform_data = { | |||
37 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, | 38 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, |
38 | .scbrr_algo_id = SCBRR_ALGO_2, | 39 | .scbrr_algo_id = SCBRR_ALGO_2, |
39 | .type = PORT_SCIF, | 40 | .type = PORT_SCIF, |
40 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x9C0)), | 41 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x9c0)), |
41 | }; | 42 | }; |
42 | 43 | ||
43 | static struct platform_device scif1_device = { | 44 | static struct platform_device scif1_device = { |
@@ -54,7 +55,7 @@ static struct plat_sci_port scif2_platform_data = { | |||
54 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, | 55 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, |
55 | .scbrr_algo_id = SCBRR_ALGO_2, | 56 | .scbrr_algo_id = SCBRR_ALGO_2, |
56 | .type = PORT_SCIF, | 57 | .type = PORT_SCIF, |
57 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x9E0)), | 58 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x9e0)), |
58 | }; | 59 | }; |
59 | 60 | ||
60 | static struct platform_device scif2_device = { | 61 | static struct platform_device scif2_device = { |
@@ -71,7 +72,7 @@ static struct plat_sci_port scif3_platform_data = { | |||
71 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, | 72 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, |
72 | .scbrr_algo_id = SCBRR_ALGO_2, | 73 | .scbrr_algo_id = SCBRR_ALGO_2, |
73 | .type = PORT_SCIF, | 74 | .type = PORT_SCIF, |
74 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xA00)), | 75 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xa00)), |
75 | }; | 76 | }; |
76 | 77 | ||
77 | static struct platform_device scif3_device = { | 78 | static struct platform_device scif3_device = { |
@@ -88,7 +89,7 @@ static struct plat_sci_port scif4_platform_data = { | |||
88 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, | 89 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, |
89 | .scbrr_algo_id = SCBRR_ALGO_2, | 90 | .scbrr_algo_id = SCBRR_ALGO_2, |
90 | .type = PORT_SCIF, | 91 | .type = PORT_SCIF, |
91 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xA20)), | 92 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xa20)), |
92 | }; | 93 | }; |
93 | 94 | ||
94 | static struct platform_device scif4_device = { | 95 | static struct platform_device scif4_device = { |
@@ -105,7 +106,7 @@ static struct plat_sci_port scif5_platform_data = { | |||
105 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, | 106 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, |
106 | .scbrr_algo_id = SCBRR_ALGO_2, | 107 | .scbrr_algo_id = SCBRR_ALGO_2, |
107 | .type = PORT_SCIF, | 108 | .type = PORT_SCIF, |
108 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xA40)), | 109 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xa40)), |
109 | }; | 110 | }; |
110 | 111 | ||
111 | static struct platform_device scif5_device = { | 112 | static struct platform_device scif5_device = { |
@@ -122,7 +123,7 @@ static struct plat_sci_port scif6_platform_data = { | |||
122 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, | 123 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, |
123 | .scbrr_algo_id = SCBRR_ALGO_2, | 124 | .scbrr_algo_id = SCBRR_ALGO_2, |
124 | .type = PORT_SCIF, | 125 | .type = PORT_SCIF, |
125 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xA60)), | 126 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xa60)), |
126 | }; | 127 | }; |
127 | 128 | ||
128 | static struct platform_device scif6_device = { | 129 | static struct platform_device scif6_device = { |
@@ -139,7 +140,7 @@ static struct plat_sci_port scif7_platform_data = { | |||
139 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, | 140 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, |
140 | .scbrr_algo_id = SCBRR_ALGO_2, | 141 | .scbrr_algo_id = SCBRR_ALGO_2, |
141 | .type = PORT_SCIF, | 142 | .type = PORT_SCIF, |
142 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xA80)), | 143 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xa80)), |
143 | }; | 144 | }; |
144 | 145 | ||
145 | static struct platform_device scif7_device = { | 146 | static struct platform_device scif7_device = { |
@@ -156,7 +157,7 @@ static struct plat_sci_port scif8_platform_data = { | |||
156 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, | 157 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, |
157 | .scbrr_algo_id = SCBRR_ALGO_2, | 158 | .scbrr_algo_id = SCBRR_ALGO_2, |
158 | .type = PORT_SCIF, | 159 | .type = PORT_SCIF, |
159 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xAA0)), | 160 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xaa0)), |
160 | }; | 161 | }; |
161 | 162 | ||
162 | static struct platform_device scif8_device = { | 163 | static struct platform_device scif8_device = { |
@@ -173,7 +174,7 @@ static struct plat_sci_port scif9_platform_data = { | |||
173 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, | 174 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, |
174 | .scbrr_algo_id = SCBRR_ALGO_2, | 175 | .scbrr_algo_id = SCBRR_ALGO_2, |
175 | .type = PORT_SCIF, | 176 | .type = PORT_SCIF, |
176 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xAC0)), | 177 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xac0)), |
177 | }; | 178 | }; |
178 | 179 | ||
179 | static struct platform_device scif9_device = { | 180 | static struct platform_device scif9_device = { |
@@ -197,7 +198,7 @@ static struct resource tmu0_resources[] = { | |||
197 | .flags = IORESOURCE_MEM, | 198 | .flags = IORESOURCE_MEM, |
198 | }, | 199 | }, |
199 | [1] = { | 200 | [1] = { |
200 | .start = 16, | 201 | .start = evt2irq(0x400), |
201 | .flags = IORESOURCE_IRQ, | 202 | .flags = IORESOURCE_IRQ, |
202 | }, | 203 | }, |
203 | }; | 204 | }; |
@@ -225,7 +226,7 @@ static struct resource tmu1_resources[] = { | |||
225 | .flags = IORESOURCE_MEM, | 226 | .flags = IORESOURCE_MEM, |
226 | }, | 227 | }, |
227 | [1] = { | 228 | [1] = { |
228 | .start = 17, | 229 | .start = evt2irq(0x420), |
229 | .flags = IORESOURCE_IRQ, | 230 | .flags = IORESOURCE_IRQ, |
230 | }, | 231 | }, |
231 | }; | 232 | }; |
@@ -252,7 +253,7 @@ static struct resource tmu2_resources[] = { | |||
252 | .flags = IORESOURCE_MEM, | 253 | .flags = IORESOURCE_MEM, |
253 | }, | 254 | }, |
254 | [1] = { | 255 | [1] = { |
255 | .start = 18, | 256 | .start = evt2irq(0x440), |
256 | .flags = IORESOURCE_IRQ, | 257 | .flags = IORESOURCE_IRQ, |
257 | }, | 258 | }, |
258 | }; | 259 | }; |
@@ -279,7 +280,7 @@ static struct resource tmu3_resources[] = { | |||
279 | .flags = IORESOURCE_MEM, | 280 | .flags = IORESOURCE_MEM, |
280 | }, | 281 | }, |
281 | [1] = { | 282 | [1] = { |
282 | .start = 19, | 283 | .start = evt2irq(0x460), |
283 | .flags = IORESOURCE_IRQ, | 284 | .flags = IORESOURCE_IRQ, |
284 | }, | 285 | }, |
285 | }; | 286 | }; |
@@ -306,7 +307,7 @@ static struct resource tmu4_resources[] = { | |||
306 | .flags = IORESOURCE_MEM, | 307 | .flags = IORESOURCE_MEM, |
307 | }, | 308 | }, |
308 | [1] = { | 309 | [1] = { |
309 | .start = 20, | 310 | .start = evt2irq(0x480), |
310 | .flags = IORESOURCE_IRQ, | 311 | .flags = IORESOURCE_IRQ, |
311 | }, | 312 | }, |
312 | }; | 313 | }; |
@@ -333,7 +334,7 @@ static struct resource tmu5_resources[] = { | |||
333 | .flags = IORESOURCE_MEM, | 334 | .flags = IORESOURCE_MEM, |
334 | }, | 335 | }, |
335 | [1] = { | 336 | [1] = { |
336 | .start = 21, | 337 | .start = evt2irq(0x4a0), |
337 | .flags = IORESOURCE_IRQ, | 338 | .flags = IORESOURCE_IRQ, |
338 | }, | 339 | }, |
339 | }; | 340 | }; |
@@ -360,7 +361,7 @@ static struct resource tmu6_resources[] = { | |||
360 | .flags = IORESOURCE_MEM, | 361 | .flags = IORESOURCE_MEM, |
361 | }, | 362 | }, |
362 | [1] = { | 363 | [1] = { |
363 | .start = 22, | 364 | .start = evt2irq(0x4c0), |
364 | .flags = IORESOURCE_IRQ, | 365 | .flags = IORESOURCE_IRQ, |
365 | }, | 366 | }, |
366 | }; | 367 | }; |
@@ -387,7 +388,7 @@ static struct resource tmu7_resources[] = { | |||
387 | .flags = IORESOURCE_MEM, | 388 | .flags = IORESOURCE_MEM, |
388 | }, | 389 | }, |
389 | [1] = { | 390 | [1] = { |
390 | .start = 23, | 391 | .start = evt2irq(0x4e0), |
391 | .flags = IORESOURCE_IRQ, | 392 | .flags = IORESOURCE_IRQ, |
392 | }, | 393 | }, |
393 | }; | 394 | }; |
@@ -414,7 +415,7 @@ static struct resource tmu8_resources[] = { | |||
414 | .flags = IORESOURCE_MEM, | 415 | .flags = IORESOURCE_MEM, |
415 | }, | 416 | }, |
416 | [1] = { | 417 | [1] = { |
417 | .start = 24, | 418 | .start = evt2irq(0x500), |
418 | .flags = IORESOURCE_IRQ, | 419 | .flags = IORESOURCE_IRQ, |
419 | }, | 420 | }, |
420 | }; | 421 | }; |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7780.c b/arch/sh/kernel/cpu/sh4a/setup-sh7780.c index d431b0052d0c..de45b704687a 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7780.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7780.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/serial_sci.h> | 14 | #include <linux/serial_sci.h> |
15 | #include <linux/sh_dma.h> | 15 | #include <linux/sh_dma.h> |
16 | #include <linux/sh_timer.h> | 16 | #include <linux/sh_timer.h> |
17 | #include <linux/sh_intc.h> | ||
17 | #include <cpu/dma-register.h> | 18 | #include <cpu/dma-register.h> |
18 | 19 | ||
19 | static struct plat_sci_port scif0_platform_data = { | 20 | static struct plat_sci_port scif0_platform_data = { |
@@ -22,7 +23,7 @@ static struct plat_sci_port scif0_platform_data = { | |||
22 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, | 23 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, |
23 | .scbrr_algo_id = SCBRR_ALGO_1, | 24 | .scbrr_algo_id = SCBRR_ALGO_1, |
24 | .type = PORT_SCIF, | 25 | .type = PORT_SCIF, |
25 | .irqs = { 40, 40, 40, 40 }, | 26 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x700)), |
26 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | 27 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
27 | }; | 28 | }; |
28 | 29 | ||
@@ -40,7 +41,7 @@ static struct plat_sci_port scif1_platform_data = { | |||
40 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, | 41 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, |
41 | .scbrr_algo_id = SCBRR_ALGO_1, | 42 | .scbrr_algo_id = SCBRR_ALGO_1, |
42 | .type = PORT_SCIF, | 43 | .type = PORT_SCIF, |
43 | .irqs = { 76, 76, 76, 76 }, | 44 | .irqs = SCIx_IRQ_MUXED(evt2irq(0xb80)), |
44 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | 45 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
45 | }; | 46 | }; |
46 | 47 | ||
@@ -65,7 +66,7 @@ static struct resource tmu0_resources[] = { | |||
65 | .flags = IORESOURCE_MEM, | 66 | .flags = IORESOURCE_MEM, |
66 | }, | 67 | }, |
67 | [1] = { | 68 | [1] = { |
68 | .start = 28, | 69 | .start = evt2irq(0x580), |
69 | .flags = IORESOURCE_IRQ, | 70 | .flags = IORESOURCE_IRQ, |
70 | }, | 71 | }, |
71 | }; | 72 | }; |
@@ -93,7 +94,7 @@ static struct resource tmu1_resources[] = { | |||
93 | .flags = IORESOURCE_MEM, | 94 | .flags = IORESOURCE_MEM, |
94 | }, | 95 | }, |
95 | [1] = { | 96 | [1] = { |
96 | .start = 29, | 97 | .start = evt2irq(0x5a0), |
97 | .flags = IORESOURCE_IRQ, | 98 | .flags = IORESOURCE_IRQ, |
98 | }, | 99 | }, |
99 | }; | 100 | }; |
@@ -120,7 +121,7 @@ static struct resource tmu2_resources[] = { | |||
120 | .flags = IORESOURCE_MEM, | 121 | .flags = IORESOURCE_MEM, |
121 | }, | 122 | }, |
122 | [1] = { | 123 | [1] = { |
123 | .start = 30, | 124 | .start = evt2irq(0x5c0), |
124 | .flags = IORESOURCE_IRQ, | 125 | .flags = IORESOURCE_IRQ, |
125 | }, | 126 | }, |
126 | }; | 127 | }; |
@@ -147,7 +148,7 @@ static struct resource tmu3_resources[] = { | |||
147 | .flags = IORESOURCE_MEM, | 148 | .flags = IORESOURCE_MEM, |
148 | }, | 149 | }, |
149 | [1] = { | 150 | [1] = { |
150 | .start = 96, | 151 | .start = evt2irq(0xe00), |
151 | .flags = IORESOURCE_IRQ, | 152 | .flags = IORESOURCE_IRQ, |
152 | }, | 153 | }, |
153 | }; | 154 | }; |
@@ -174,7 +175,7 @@ static struct resource tmu4_resources[] = { | |||
174 | .flags = IORESOURCE_MEM, | 175 | .flags = IORESOURCE_MEM, |
175 | }, | 176 | }, |
176 | [1] = { | 177 | [1] = { |
177 | .start = 97, | 178 | .start = evt2irq(0xe20), |
178 | .flags = IORESOURCE_IRQ, | 179 | .flags = IORESOURCE_IRQ, |
179 | }, | 180 | }, |
180 | }; | 181 | }; |
@@ -201,7 +202,7 @@ static struct resource tmu5_resources[] = { | |||
201 | .flags = IORESOURCE_MEM, | 202 | .flags = IORESOURCE_MEM, |
202 | }, | 203 | }, |
203 | [1] = { | 204 | [1] = { |
204 | .start = 98, | 205 | .start = evt2irq(0xe40), |
205 | .flags = IORESOURCE_IRQ, | 206 | .flags = IORESOURCE_IRQ, |
206 | }, | 207 | }, |
207 | }; | 208 | }; |
@@ -224,7 +225,7 @@ static struct resource rtc_resources[] = { | |||
224 | }, | 225 | }, |
225 | [1] = { | 226 | [1] = { |
226 | /* Shared Period/Carry/Alarm IRQ */ | 227 | /* Shared Period/Carry/Alarm IRQ */ |
227 | .start = 20, | 228 | .start = evt2irq(0x480), |
228 | .flags = IORESOURCE_IRQ, | 229 | .flags = IORESOURCE_IRQ, |
229 | }, | 230 | }, |
230 | }; | 231 | }; |
@@ -321,10 +322,13 @@ static struct resource sh7780_dmae0_resources[] = { | |||
321 | .flags = IORESOURCE_MEM, | 322 | .flags = IORESOURCE_MEM, |
322 | }, | 323 | }, |
323 | { | 324 | { |
324 | /* Real DMA error IRQ is 38, and channel IRQs are 34-37, 44-45 */ | 325 | /* |
326 | * Real DMA error vector is 0x6c0, and channel | ||
327 | * vectors are 0x640-0x6a0, 0x780-0x7a0 | ||
328 | */ | ||
325 | .name = "error_irq", | 329 | .name = "error_irq", |
326 | .start = 34, | 330 | .start = evt2irq(0x640), |
327 | .end = 34, | 331 | .end = evt2irq(0x640), |
328 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, | 332 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, |
329 | }, | 333 | }, |
330 | }; | 334 | }; |
@@ -338,10 +342,13 @@ static struct resource sh7780_dmae1_resources[] = { | |||
338 | }, | 342 | }, |
339 | /* DMAC1 has no DMARS */ | 343 | /* DMAC1 has no DMARS */ |
340 | { | 344 | { |
341 | /* Real DMA error IRQ is 38, and channel IRQs are 46-47, 92-95 */ | 345 | /* |
346 | * Real DMA error vector is 0x6c0, and channel | ||
347 | * vectors are 0x7c0-0x7e0, 0xd80-0xde0 | ||
348 | */ | ||
342 | .name = "error_irq", | 349 | .name = "error_irq", |
343 | .start = 46, | 350 | .start = evt2irq(0x7c0), |
344 | .end = 46, | 351 | .end = evt2irq(0x7c0), |
345 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, | 352 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, |
346 | }, | 353 | }, |
347 | }; | 354 | }; |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7785.c b/arch/sh/kernel/cpu/sh4a/setup-sh7785.c index 304339fe7a24..0968ecb962e6 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7785.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7785.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/mm.h> | 15 | #include <linux/mm.h> |
16 | #include <linux/sh_dma.h> | 16 | #include <linux/sh_dma.h> |
17 | #include <linux/sh_timer.h> | 17 | #include <linux/sh_timer.h> |
18 | #include <linux/sh_intc.h> | ||
18 | #include <asm/mmzone.h> | 19 | #include <asm/mmzone.h> |
19 | #include <cpu/dma-register.h> | 20 | #include <cpu/dma-register.h> |
20 | 21 | ||
@@ -78,7 +79,7 @@ static struct plat_sci_port scif3_platform_data = { | |||
78 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, | 79 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, |
79 | .scbrr_algo_id = SCBRR_ALGO_1, | 80 | .scbrr_algo_id = SCBRR_ALGO_1, |
80 | .type = PORT_SCIF, | 81 | .type = PORT_SCIF, |
81 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x9A0)), | 82 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x9a0)), |
82 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | 83 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
83 | }; | 84 | }; |
84 | 85 | ||
@@ -96,7 +97,7 @@ static struct plat_sci_port scif4_platform_data = { | |||
96 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, | 97 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, |
97 | .scbrr_algo_id = SCBRR_ALGO_1, | 98 | .scbrr_algo_id = SCBRR_ALGO_1, |
98 | .type = PORT_SCIF, | 99 | .type = PORT_SCIF, |
99 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x9C0)), | 100 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x9c0)), |
100 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | 101 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
101 | }; | 102 | }; |
102 | 103 | ||
@@ -114,7 +115,7 @@ static struct plat_sci_port scif5_platform_data = { | |||
114 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, | 115 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, |
115 | .scbrr_algo_id = SCBRR_ALGO_1, | 116 | .scbrr_algo_id = SCBRR_ALGO_1, |
116 | .type = PORT_SCIF, | 117 | .type = PORT_SCIF, |
117 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x9E0)), | 118 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x9e0)), |
118 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | 119 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
119 | }; | 120 | }; |
120 | 121 | ||
@@ -139,7 +140,7 @@ static struct resource tmu0_resources[] = { | |||
139 | .flags = IORESOURCE_MEM, | 140 | .flags = IORESOURCE_MEM, |
140 | }, | 141 | }, |
141 | [1] = { | 142 | [1] = { |
142 | .start = 28, | 143 | .start = evt2irq(0x580), |
143 | .flags = IORESOURCE_IRQ, | 144 | .flags = IORESOURCE_IRQ, |
144 | }, | 145 | }, |
145 | }; | 146 | }; |
@@ -167,7 +168,7 @@ static struct resource tmu1_resources[] = { | |||
167 | .flags = IORESOURCE_MEM, | 168 | .flags = IORESOURCE_MEM, |
168 | }, | 169 | }, |
169 | [1] = { | 170 | [1] = { |
170 | .start = 29, | 171 | .start = evt2irq(0x5a0), |
171 | .flags = IORESOURCE_IRQ, | 172 | .flags = IORESOURCE_IRQ, |
172 | }, | 173 | }, |
173 | }; | 174 | }; |
@@ -194,7 +195,7 @@ static struct resource tmu2_resources[] = { | |||
194 | .flags = IORESOURCE_MEM, | 195 | .flags = IORESOURCE_MEM, |
195 | }, | 196 | }, |
196 | [1] = { | 197 | [1] = { |
197 | .start = 30, | 198 | .start = evt2irq(0x5c0), |
198 | .flags = IORESOURCE_IRQ, | 199 | .flags = IORESOURCE_IRQ, |
199 | }, | 200 | }, |
200 | }; | 201 | }; |
@@ -221,7 +222,7 @@ static struct resource tmu3_resources[] = { | |||
221 | .flags = IORESOURCE_MEM, | 222 | .flags = IORESOURCE_MEM, |
222 | }, | 223 | }, |
223 | [1] = { | 224 | [1] = { |
224 | .start = 96, | 225 | .start = evt2irq(0xe00), |
225 | .flags = IORESOURCE_IRQ, | 226 | .flags = IORESOURCE_IRQ, |
226 | }, | 227 | }, |
227 | }; | 228 | }; |
@@ -248,7 +249,7 @@ static struct resource tmu4_resources[] = { | |||
248 | .flags = IORESOURCE_MEM, | 249 | .flags = IORESOURCE_MEM, |
249 | }, | 250 | }, |
250 | [1] = { | 251 | [1] = { |
251 | .start = 97, | 252 | .start = evt2irq(0xe20), |
252 | .flags = IORESOURCE_IRQ, | 253 | .flags = IORESOURCE_IRQ, |
253 | }, | 254 | }, |
254 | }; | 255 | }; |
@@ -275,7 +276,7 @@ static struct resource tmu5_resources[] = { | |||
275 | .flags = IORESOURCE_MEM, | 276 | .flags = IORESOURCE_MEM, |
276 | }, | 277 | }, |
277 | [1] = { | 278 | [1] = { |
278 | .start = 98, | 279 | .start = evt2irq(0xe40), |
279 | .flags = IORESOURCE_IRQ, | 280 | .flags = IORESOURCE_IRQ, |
280 | }, | 281 | }, |
281 | }; | 282 | }; |
@@ -375,10 +376,13 @@ static struct resource sh7785_dmae0_resources[] = { | |||
375 | .flags = IORESOURCE_MEM, | 376 | .flags = IORESOURCE_MEM, |
376 | }, | 377 | }, |
377 | { | 378 | { |
378 | /* Real DMA error IRQ is 39, and channel IRQs are 33-38 */ | 379 | /* |
380 | * Real DMA error vector is 0x6e0, and channel | ||
381 | * vectors are 0x620-0x6c0 | ||
382 | */ | ||
379 | .name = "error_irq", | 383 | .name = "error_irq", |
380 | .start = 33, | 384 | .start = evt2irq(0x620), |
381 | .end = 33, | 385 | .end = evt2irq(0x620), |
382 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, | 386 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, |
383 | }, | 387 | }, |
384 | }; | 388 | }; |
@@ -392,10 +396,13 @@ static struct resource sh7785_dmae1_resources[] = { | |||
392 | }, | 396 | }, |
393 | /* DMAC1 has no DMARS */ | 397 | /* DMAC1 has no DMARS */ |
394 | { | 398 | { |
395 | /* Real DMA error IRQ is 58, and channel IRQs are 52-57 */ | 399 | /* |
400 | * Real DMA error vector is 0x940, and channel | ||
401 | * vectors are 0x880-0x920 | ||
402 | */ | ||
396 | .name = "error_irq", | 403 | .name = "error_irq", |
397 | .start = 52, | 404 | .start = evt2irq(0x880), |
398 | .end = 52, | 405 | .end = evt2irq(0x880), |
399 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, | 406 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE, |
400 | }, | 407 | }, |
401 | }; | 408 | }; |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7786.c b/arch/sh/kernel/cpu/sh4a/setup-sh7786.c index 9befe2dcf45e..2e6952f87848 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7786.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7786.c | |||
@@ -32,7 +32,10 @@ static struct plat_sci_port scif0_platform_data = { | |||
32 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, | 32 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, |
33 | .scbrr_algo_id = SCBRR_ALGO_1, | 33 | .scbrr_algo_id = SCBRR_ALGO_1, |
34 | .type = PORT_SCIF, | 34 | .type = PORT_SCIF, |
35 | .irqs = { 40, 41, 43, 42 }, | 35 | .irqs = { evt2irq(0x700), |
36 | evt2irq(0x720), | ||
37 | evt2irq(0x760), | ||
38 | evt2irq(0x740) }, | ||
36 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | 39 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
37 | }; | 40 | }; |
38 | 41 | ||
@@ -125,7 +128,7 @@ static struct plat_sci_port scif5_platform_data = { | |||
125 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, | 128 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, |
126 | .scbrr_algo_id = SCBRR_ALGO_1, | 129 | .scbrr_algo_id = SCBRR_ALGO_1, |
127 | .type = PORT_SCIF, | 130 | .type = PORT_SCIF, |
128 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x8A0)), | 131 | .irqs = SCIx_IRQ_MUXED(evt2irq(0x8a0)), |
129 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, | 132 | .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
130 | }; | 133 | }; |
131 | 134 | ||
@@ -150,7 +153,7 @@ static struct resource tmu0_resources[] = { | |||
150 | .flags = IORESOURCE_MEM, | 153 | .flags = IORESOURCE_MEM, |
151 | }, | 154 | }, |
152 | [1] = { | 155 | [1] = { |
153 | .start = 16, | 156 | .start = evt2irq(0x400), |
154 | .flags = IORESOURCE_IRQ, | 157 | .flags = IORESOURCE_IRQ, |
155 | }, | 158 | }, |
156 | }; | 159 | }; |
@@ -178,7 +181,7 @@ static struct resource tmu1_resources[] = { | |||
178 | .flags = IORESOURCE_MEM, | 181 | .flags = IORESOURCE_MEM, |
179 | }, | 182 | }, |
180 | [1] = { | 183 | [1] = { |
181 | .start = 17, | 184 | .start = evt2irq(0x420), |
182 | .flags = IORESOURCE_IRQ, | 185 | .flags = IORESOURCE_IRQ, |
183 | }, | 186 | }, |
184 | }; | 187 | }; |
@@ -205,7 +208,7 @@ static struct resource tmu2_resources[] = { | |||
205 | .flags = IORESOURCE_MEM, | 208 | .flags = IORESOURCE_MEM, |
206 | }, | 209 | }, |
207 | [1] = { | 210 | [1] = { |
208 | .start = 18, | 211 | .start = evt2irq(0x440), |
209 | .flags = IORESOURCE_IRQ, | 212 | .flags = IORESOURCE_IRQ, |
210 | }, | 213 | }, |
211 | }; | 214 | }; |
@@ -232,7 +235,7 @@ static struct resource tmu3_resources[] = { | |||
232 | .flags = IORESOURCE_MEM, | 235 | .flags = IORESOURCE_MEM, |
233 | }, | 236 | }, |
234 | [1] = { | 237 | [1] = { |
235 | .start = 20, | 238 | .start = evt2irq(0x480), |
236 | .flags = IORESOURCE_IRQ, | 239 | .flags = IORESOURCE_IRQ, |
237 | }, | 240 | }, |
238 | }; | 241 | }; |
@@ -259,7 +262,7 @@ static struct resource tmu4_resources[] = { | |||
259 | .flags = IORESOURCE_MEM, | 262 | .flags = IORESOURCE_MEM, |
260 | }, | 263 | }, |
261 | [1] = { | 264 | [1] = { |
262 | .start = 21, | 265 | .start = evt2irq(0x4a0), |
263 | .flags = IORESOURCE_IRQ, | 266 | .flags = IORESOURCE_IRQ, |
264 | }, | 267 | }, |
265 | }; | 268 | }; |
@@ -286,7 +289,7 @@ static struct resource tmu5_resources[] = { | |||
286 | .flags = IORESOURCE_MEM, | 289 | .flags = IORESOURCE_MEM, |
287 | }, | 290 | }, |
288 | [1] = { | 291 | [1] = { |
289 | .start = 22, | 292 | .start = evt2irq(0x4c0), |
290 | .flags = IORESOURCE_IRQ, | 293 | .flags = IORESOURCE_IRQ, |
291 | }, | 294 | }, |
292 | }; | 295 | }; |
@@ -313,7 +316,7 @@ static struct resource tmu6_resources[] = { | |||
313 | .flags = IORESOURCE_MEM, | 316 | .flags = IORESOURCE_MEM, |
314 | }, | 317 | }, |
315 | [1] = { | 318 | [1] = { |
316 | .start = 45, | 319 | .start = evt2irq(0x7a0), |
317 | .flags = IORESOURCE_IRQ, | 320 | .flags = IORESOURCE_IRQ, |
318 | }, | 321 | }, |
319 | }; | 322 | }; |
@@ -340,7 +343,7 @@ static struct resource tmu7_resources[] = { | |||
340 | .flags = IORESOURCE_MEM, | 343 | .flags = IORESOURCE_MEM, |
341 | }, | 344 | }, |
342 | [1] = { | 345 | [1] = { |
343 | .start = 45, | 346 | .start = evt2irq(0x7a0), |
344 | .flags = IORESOURCE_IRQ, | 347 | .flags = IORESOURCE_IRQ, |
345 | }, | 348 | }, |
346 | }; | 349 | }; |
@@ -367,7 +370,7 @@ static struct resource tmu8_resources[] = { | |||
367 | .flags = IORESOURCE_MEM, | 370 | .flags = IORESOURCE_MEM, |
368 | }, | 371 | }, |
369 | [1] = { | 372 | [1] = { |
370 | .start = 45, | 373 | .start = evt2irq(0x7a0), |
371 | .flags = IORESOURCE_IRQ, | 374 | .flags = IORESOURCE_IRQ, |
372 | }, | 375 | }, |
373 | }; | 376 | }; |
@@ -394,7 +397,7 @@ static struct resource tmu9_resources[] = { | |||
394 | .flags = IORESOURCE_MEM, | 397 | .flags = IORESOURCE_MEM, |
395 | }, | 398 | }, |
396 | [1] = { | 399 | [1] = { |
397 | .start = 46, | 400 | .start = evt2irq(0x7c0), |
398 | .flags = IORESOURCE_IRQ, | 401 | .flags = IORESOURCE_IRQ, |
399 | }, | 402 | }, |
400 | }; | 403 | }; |
@@ -421,7 +424,7 @@ static struct resource tmu10_resources[] = { | |||
421 | .flags = IORESOURCE_MEM, | 424 | .flags = IORESOURCE_MEM, |
422 | }, | 425 | }, |
423 | [1] = { | 426 | [1] = { |
424 | .start = 46, | 427 | .start = evt2irq(0x7c0), |
425 | .flags = IORESOURCE_IRQ, | 428 | .flags = IORESOURCE_IRQ, |
426 | }, | 429 | }, |
427 | }; | 430 | }; |
@@ -448,7 +451,7 @@ static struct resource tmu11_resources[] = { | |||
448 | .flags = IORESOURCE_MEM, | 451 | .flags = IORESOURCE_MEM, |
449 | }, | 452 | }, |
450 | [1] = { | 453 | [1] = { |
451 | .start = 46, | 454 | .start = evt2irq(0x7c0), |
452 | .flags = IORESOURCE_IRQ, | 455 | .flags = IORESOURCE_IRQ, |
453 | }, | 456 | }, |
454 | }; | 457 | }; |
@@ -550,8 +553,8 @@ static struct resource usb_ehci_resources[] = { | |||
550 | .flags = IORESOURCE_MEM, | 553 | .flags = IORESOURCE_MEM, |
551 | }, | 554 | }, |
552 | [1] = { | 555 | [1] = { |
553 | .start = 77, | 556 | .start = evt2irq(0xba0), |
554 | .end = 77, | 557 | .end = evt2irq(0xba0), |
555 | .flags = IORESOURCE_IRQ, | 558 | .flags = IORESOURCE_IRQ, |
556 | }, | 559 | }, |
557 | }; | 560 | }; |
@@ -574,8 +577,8 @@ static struct resource usb_ohci_resources[] = { | |||
574 | .flags = IORESOURCE_MEM, | 577 | .flags = IORESOURCE_MEM, |
575 | }, | 578 | }, |
576 | [1] = { | 579 | [1] = { |
577 | .start = 77, | 580 | .start = evt2irq(0xba0), |
578 | .end = 77, | 581 | .end = evt2irq(0xba0), |
579 | .flags = IORESOURCE_IRQ, | 582 | .flags = IORESOURCE_IRQ, |
580 | }, | 583 | }, |
581 | }; | 584 | }; |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-shx3.c b/arch/sh/kernel/cpu/sh4a/setup-shx3.c index bb208806dc1a..7ca7dd20fb08 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-shx3.c +++ b/arch/sh/kernel/cpu/sh4a/setup-shx3.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
15 | #include <linux/gpio.h> | 15 | #include <linux/gpio.h> |
16 | #include <linux/sh_timer.h> | 16 | #include <linux/sh_timer.h> |
17 | #include <linux/sh_intc.h> | ||
17 | #include <cpu/shx3.h> | 18 | #include <cpu/shx3.h> |
18 | #include <asm/mmzone.h> | 19 | #include <asm/mmzone.h> |
19 | 20 | ||
@@ -32,7 +33,10 @@ static struct plat_sci_port scif0_platform_data = { | |||
32 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 33 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
33 | .scbrr_algo_id = SCBRR_ALGO_2, | 34 | .scbrr_algo_id = SCBRR_ALGO_2, |
34 | .type = PORT_SCIF, | 35 | .type = PORT_SCIF, |
35 | .irqs = { 40, 41, 43, 42 }, | 36 | .irqs = { evt2irq(0x700), |
37 | evt2irq(0x720), | ||
38 | evt2irq(0x760), | ||
39 | evt2irq(0x740) }, | ||
36 | }; | 40 | }; |
37 | 41 | ||
38 | static struct platform_device scif0_device = { | 42 | static struct platform_device scif0_device = { |
@@ -49,7 +53,10 @@ static struct plat_sci_port scif1_platform_data = { | |||
49 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 53 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
50 | .scbrr_algo_id = SCBRR_ALGO_2, | 54 | .scbrr_algo_id = SCBRR_ALGO_2, |
51 | .type = PORT_SCIF, | 55 | .type = PORT_SCIF, |
52 | .irqs = { 44, 45, 47, 46 }, | 56 | .irqs = { evt2irq(0x780), |
57 | evt2irq(0x7a0), | ||
58 | evt2irq(0x7e0), | ||
59 | evt2irq(0x7c0) }, | ||
53 | }; | 60 | }; |
54 | 61 | ||
55 | static struct platform_device scif1_device = { | 62 | static struct platform_device scif1_device = { |
@@ -66,7 +73,10 @@ static struct plat_sci_port scif2_platform_data = { | |||
66 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, | 73 | .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
67 | .scbrr_algo_id = SCBRR_ALGO_2, | 74 | .scbrr_algo_id = SCBRR_ALGO_2, |
68 | .type = PORT_SCIF, | 75 | .type = PORT_SCIF, |
69 | .irqs = { 52, 53, 55, 54 }, | 76 | .irqs = { evt2irq(0x880), |
77 | evt2irq(0x8a0), | ||
78 | evt2irq(0x8e0), | ||
79 | evt2irq(0x8c0) }, | ||
70 | }; | 80 | }; |
71 | 81 | ||
72 | static struct platform_device scif2_device = { | 82 | static struct platform_device scif2_device = { |
@@ -90,7 +100,7 @@ static struct resource tmu0_resources[] = { | |||
90 | .flags = IORESOURCE_MEM, | 100 | .flags = IORESOURCE_MEM, |
91 | }, | 101 | }, |
92 | [1] = { | 102 | [1] = { |
93 | .start = 16, | 103 | .start = evt2irq(0x400), |
94 | .flags = IORESOURCE_IRQ, | 104 | .flags = IORESOURCE_IRQ, |
95 | }, | 105 | }, |
96 | }; | 106 | }; |
@@ -118,7 +128,7 @@ static struct resource tmu1_resources[] = { | |||
118 | .flags = IORESOURCE_MEM, | 128 | .flags = IORESOURCE_MEM, |
119 | }, | 129 | }, |
120 | [1] = { | 130 | [1] = { |
121 | .start = 17, | 131 | .start = evt2irq(0x420), |
122 | .flags = IORESOURCE_IRQ, | 132 | .flags = IORESOURCE_IRQ, |
123 | }, | 133 | }, |
124 | }; | 134 | }; |
@@ -145,7 +155,7 @@ static struct resource tmu2_resources[] = { | |||
145 | .flags = IORESOURCE_MEM, | 155 | .flags = IORESOURCE_MEM, |
146 | }, | 156 | }, |
147 | [1] = { | 157 | [1] = { |
148 | .start = 18, | 158 | .start = evt2irq(0x440), |
149 | .flags = IORESOURCE_IRQ, | 159 | .flags = IORESOURCE_IRQ, |
150 | }, | 160 | }, |
151 | }; | 161 | }; |
@@ -172,7 +182,7 @@ static struct resource tmu3_resources[] = { | |||
172 | .flags = IORESOURCE_MEM, | 182 | .flags = IORESOURCE_MEM, |
173 | }, | 183 | }, |
174 | [1] = { | 184 | [1] = { |
175 | .start = 19, | 185 | .start = evt2irq(0x460), |
176 | .flags = IORESOURCE_IRQ, | 186 | .flags = IORESOURCE_IRQ, |
177 | }, | 187 | }, |
178 | }; | 188 | }; |
@@ -199,7 +209,7 @@ static struct resource tmu4_resources[] = { | |||
199 | .flags = IORESOURCE_MEM, | 209 | .flags = IORESOURCE_MEM, |
200 | }, | 210 | }, |
201 | [1] = { | 211 | [1] = { |
202 | .start = 20, | 212 | .start = evt2irq(0x480), |
203 | .flags = IORESOURCE_IRQ, | 213 | .flags = IORESOURCE_IRQ, |
204 | }, | 214 | }, |
205 | }; | 215 | }; |
@@ -226,7 +236,7 @@ static struct resource tmu5_resources[] = { | |||
226 | .flags = IORESOURCE_MEM, | 236 | .flags = IORESOURCE_MEM, |
227 | }, | 237 | }, |
228 | [1] = { | 238 | [1] = { |
229 | .start = 21, | 239 | .start = evt2irq(0x4a0), |
230 | .flags = IORESOURCE_IRQ, | 240 | .flags = IORESOURCE_IRQ, |
231 | }, | 241 | }, |
232 | }; | 242 | }; |
diff --git a/arch/sparc/kernel/central.c b/arch/sparc/kernel/central.c index 38d48a59879c..9708851a8b9f 100644 --- a/arch/sparc/kernel/central.c +++ b/arch/sparc/kernel/central.c | |||
@@ -269,4 +269,4 @@ static int __init sunfire_init(void) | |||
269 | return 0; | 269 | return 0; |
270 | } | 270 | } |
271 | 271 | ||
272 | subsys_initcall(sunfire_init); | 272 | fs_initcall(sunfire_init); |
diff --git a/arch/sparc/mm/ultra.S b/arch/sparc/mm/ultra.S index b57a5942ba64..874162a11ceb 100644 --- a/arch/sparc/mm/ultra.S +++ b/arch/sparc/mm/ultra.S | |||
@@ -495,11 +495,11 @@ xcall_fetch_glob_regs: | |||
495 | stx %o7, [%g1 + GR_SNAP_O7] | 495 | stx %o7, [%g1 + GR_SNAP_O7] |
496 | stx %i7, [%g1 + GR_SNAP_I7] | 496 | stx %i7, [%g1 + GR_SNAP_I7] |
497 | /* Don't try this at home kids... */ | 497 | /* Don't try this at home kids... */ |
498 | rdpr %cwp, %g2 | 498 | rdpr %cwp, %g3 |
499 | sub %g2, 1, %g7 | 499 | sub %g3, 1, %g7 |
500 | wrpr %g7, %cwp | 500 | wrpr %g7, %cwp |
501 | mov %i7, %g7 | 501 | mov %i7, %g7 |
502 | wrpr %g2, %cwp | 502 | wrpr %g3, %cwp |
503 | stx %g7, [%g1 + GR_SNAP_RPC] | 503 | stx %g7, [%g1 + GR_SNAP_RPC] |
504 | sethi %hi(trap_block), %g7 | 504 | sethi %hi(trap_block), %g7 |
505 | or %g7, %lo(trap_block), %g7 | 505 | or %g7, %lo(trap_block), %g7 |
diff --git a/arch/tile/include/asm/thread_info.h b/arch/tile/include/asm/thread_info.h index bc4f562bd459..7594764d8a69 100644 --- a/arch/tile/include/asm/thread_info.h +++ b/arch/tile/include/asm/thread_info.h | |||
@@ -100,9 +100,14 @@ extern void cpu_idle_on_new_stack(struct thread_info *old_ti, | |||
100 | 100 | ||
101 | #else /* __ASSEMBLY__ */ | 101 | #else /* __ASSEMBLY__ */ |
102 | 102 | ||
103 | /* how to get the thread information struct from ASM */ | 103 | /* |
104 | * How to get the thread information struct from assembly. | ||
105 | * Note that we use different macros since different architectures | ||
106 | * have different semantics in their "mm" instruction and we would | ||
107 | * like to guarantee that the macro expands to exactly one instruction. | ||
108 | */ | ||
104 | #ifdef __tilegx__ | 109 | #ifdef __tilegx__ |
105 | #define GET_THREAD_INFO(reg) move reg, sp; mm reg, zero, LOG2_THREAD_SIZE, 63 | 110 | #define EXTRACT_THREAD_INFO(reg) mm reg, zero, LOG2_THREAD_SIZE, 63 |
106 | #else | 111 | #else |
107 | #define GET_THREAD_INFO(reg) mm reg, sp, zero, LOG2_THREAD_SIZE, 31 | 112 | #define GET_THREAD_INFO(reg) mm reg, sp, zero, LOG2_THREAD_SIZE, 31 |
108 | #endif | 113 | #endif |
diff --git a/arch/tile/kernel/compat_signal.c b/arch/tile/kernel/compat_signal.c index 77763ccd5a7d..cdef6e5ec022 100644 --- a/arch/tile/kernel/compat_signal.c +++ b/arch/tile/kernel/compat_signal.c | |||
@@ -403,19 +403,17 @@ int compat_setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, | |||
403 | * Set up registers for signal handler. | 403 | * Set up registers for signal handler. |
404 | * Registers that we don't modify keep the value they had from | 404 | * Registers that we don't modify keep the value they had from |
405 | * user-space at the time we took the signal. | 405 | * user-space at the time we took the signal. |
406 | * We always pass siginfo and mcontext, regardless of SA_SIGINFO, | ||
407 | * since some things rely on this (e.g. glibc's debug/segfault.c). | ||
406 | */ | 408 | */ |
407 | regs->pc = ptr_to_compat_reg(ka->sa.sa_handler); | 409 | regs->pc = ptr_to_compat_reg(ka->sa.sa_handler); |
408 | regs->ex1 = PL_ICS_EX1(USER_PL, 1); /* set crit sec in handler */ | 410 | regs->ex1 = PL_ICS_EX1(USER_PL, 1); /* set crit sec in handler */ |
409 | regs->sp = ptr_to_compat_reg(frame); | 411 | regs->sp = ptr_to_compat_reg(frame); |
410 | regs->lr = restorer; | 412 | regs->lr = restorer; |
411 | regs->regs[0] = (unsigned long) usig; | 413 | regs->regs[0] = (unsigned long) usig; |
412 | 414 | regs->regs[1] = ptr_to_compat_reg(&frame->info); | |
413 | if (ka->sa.sa_flags & SA_SIGINFO) { | 415 | regs->regs[2] = ptr_to_compat_reg(&frame->uc); |
414 | /* Need extra arguments, so mark to restore caller-saves. */ | 416 | regs->flags |= PT_FLAGS_CALLER_SAVES; |
415 | regs->regs[1] = ptr_to_compat_reg(&frame->info); | ||
416 | regs->regs[2] = ptr_to_compat_reg(&frame->uc); | ||
417 | regs->flags |= PT_FLAGS_CALLER_SAVES; | ||
418 | } | ||
419 | 417 | ||
420 | /* | 418 | /* |
421 | * Notify any tracer that was single-stepping it. | 419 | * Notify any tracer that was single-stepping it. |
diff --git a/arch/tile/kernel/intvec_32.S b/arch/tile/kernel/intvec_32.S index 5d56a1ef5ba5..6943515100f8 100644 --- a/arch/tile/kernel/intvec_32.S +++ b/arch/tile/kernel/intvec_32.S | |||
@@ -839,6 +839,18 @@ STD_ENTRY(interrupt_return) | |||
839 | FEEDBACK_REENTER(interrupt_return) | 839 | FEEDBACK_REENTER(interrupt_return) |
840 | 840 | ||
841 | /* | 841 | /* |
842 | * Use r33 to hold whether we have already loaded the callee-saves | ||
843 | * into ptregs. We don't want to do it twice in this loop, since | ||
844 | * then we'd clobber whatever changes are made by ptrace, etc. | ||
845 | * Get base of stack in r32. | ||
846 | */ | ||
847 | { | ||
848 | GET_THREAD_INFO(r32) | ||
849 | movei r33, 0 | ||
850 | } | ||
851 | |||
852 | .Lretry_work_pending: | ||
853 | /* | ||
842 | * Disable interrupts so as to make sure we don't | 854 | * Disable interrupts so as to make sure we don't |
843 | * miss an interrupt that sets any of the thread flags (like | 855 | * miss an interrupt that sets any of the thread flags (like |
844 | * need_resched or sigpending) between sampling and the iret. | 856 | * need_resched or sigpending) between sampling and the iret. |
@@ -848,9 +860,6 @@ STD_ENTRY(interrupt_return) | |||
848 | IRQ_DISABLE(r20, r21) | 860 | IRQ_DISABLE(r20, r21) |
849 | TRACE_IRQS_OFF /* Note: clobbers registers r0-r29 */ | 861 | TRACE_IRQS_OFF /* Note: clobbers registers r0-r29 */ |
850 | 862 | ||
851 | /* Get base of stack in r32; note r30/31 are used as arguments here. */ | ||
852 | GET_THREAD_INFO(r32) | ||
853 | |||
854 | 863 | ||
855 | /* Check to see if there is any work to do before returning to user. */ | 864 | /* Check to see if there is any work to do before returning to user. */ |
856 | { | 865 | { |
@@ -866,16 +875,18 @@ STD_ENTRY(interrupt_return) | |||
866 | 875 | ||
867 | /* | 876 | /* |
868 | * Make sure we have all the registers saved for signal | 877 | * Make sure we have all the registers saved for signal |
869 | * handling or single-step. Call out to C code to figure out | 878 | * handling, notify-resume, or single-step. Call out to C |
870 | * exactly what we need to do for each flag bit, then if | 879 | * code to figure out exactly what we need to do for each flag bit, |
871 | * necessary, reload the flags and recheck. | 880 | * then if necessary, reload the flags and recheck. |
872 | */ | 881 | */ |
873 | push_extra_callee_saves r0 | ||
874 | { | 882 | { |
875 | PTREGS_PTR(r0, PTREGS_OFFSET_BASE) | 883 | PTREGS_PTR(r0, PTREGS_OFFSET_BASE) |
876 | jal do_work_pending | 884 | bnz r33, 1f |
877 | } | 885 | } |
878 | bnz r0, .Lresume_userspace | 886 | push_extra_callee_saves r0 |
887 | movei r33, 1 | ||
888 | 1: jal do_work_pending | ||
889 | bnz r0, .Lretry_work_pending | ||
879 | 890 | ||
880 | /* | 891 | /* |
881 | * In the NMI case we | 892 | * In the NMI case we |
@@ -1180,10 +1191,12 @@ handle_syscall: | |||
1180 | add r20, r20, tp | 1191 | add r20, r20, tp |
1181 | lw r21, r20 | 1192 | lw r21, r20 |
1182 | addi r21, r21, 1 | 1193 | addi r21, r21, 1 |
1183 | sw r20, r21 | 1194 | { |
1195 | sw r20, r21 | ||
1196 | GET_THREAD_INFO(r31) | ||
1197 | } | ||
1184 | 1198 | ||
1185 | /* Trace syscalls, if requested. */ | 1199 | /* Trace syscalls, if requested. */ |
1186 | GET_THREAD_INFO(r31) | ||
1187 | addi r31, r31, THREAD_INFO_FLAGS_OFFSET | 1200 | addi r31, r31, THREAD_INFO_FLAGS_OFFSET |
1188 | lw r30, r31 | 1201 | lw r30, r31 |
1189 | andi r30, r30, _TIF_SYSCALL_TRACE | 1202 | andi r30, r30, _TIF_SYSCALL_TRACE |
@@ -1362,7 +1375,10 @@ handle_ill: | |||
1362 | 3: | 1375 | 3: |
1363 | /* set PC and continue */ | 1376 | /* set PC and continue */ |
1364 | lw r26, r24 | 1377 | lw r26, r24 |
1365 | sw r28, r26 | 1378 | { |
1379 | sw r28, r26 | ||
1380 | GET_THREAD_INFO(r0) | ||
1381 | } | ||
1366 | 1382 | ||
1367 | /* | 1383 | /* |
1368 | * Clear TIF_SINGLESTEP to prevent recursion if we execute an ill. | 1384 | * Clear TIF_SINGLESTEP to prevent recursion if we execute an ill. |
@@ -1370,7 +1386,6 @@ handle_ill: | |||
1370 | * need to clear it here and can't really impose on all other arches. | 1386 | * need to clear it here and can't really impose on all other arches. |
1371 | * So what's another write between friends? | 1387 | * So what's another write between friends? |
1372 | */ | 1388 | */ |
1373 | GET_THREAD_INFO(r0) | ||
1374 | 1389 | ||
1375 | addi r1, r0, THREAD_INFO_FLAGS_OFFSET | 1390 | addi r1, r0, THREAD_INFO_FLAGS_OFFSET |
1376 | { | 1391 | { |
diff --git a/arch/tile/kernel/intvec_64.S b/arch/tile/kernel/intvec_64.S index 49d9d6621682..30ae76e50c44 100644 --- a/arch/tile/kernel/intvec_64.S +++ b/arch/tile/kernel/intvec_64.S | |||
@@ -647,6 +647,20 @@ STD_ENTRY(interrupt_return) | |||
647 | FEEDBACK_REENTER(interrupt_return) | 647 | FEEDBACK_REENTER(interrupt_return) |
648 | 648 | ||
649 | /* | 649 | /* |
650 | * Use r33 to hold whether we have already loaded the callee-saves | ||
651 | * into ptregs. We don't want to do it twice in this loop, since | ||
652 | * then we'd clobber whatever changes are made by ptrace, etc. | ||
653 | */ | ||
654 | { | ||
655 | movei r33, 0 | ||
656 | move r32, sp | ||
657 | } | ||
658 | |||
659 | /* Get base of stack in r32. */ | ||
660 | EXTRACT_THREAD_INFO(r32) | ||
661 | |||
662 | .Lretry_work_pending: | ||
663 | /* | ||
650 | * Disable interrupts so as to make sure we don't | 664 | * Disable interrupts so as to make sure we don't |
651 | * miss an interrupt that sets any of the thread flags (like | 665 | * miss an interrupt that sets any of the thread flags (like |
652 | * need_resched or sigpending) between sampling and the iret. | 666 | * need_resched or sigpending) between sampling and the iret. |
@@ -656,9 +670,6 @@ STD_ENTRY(interrupt_return) | |||
656 | IRQ_DISABLE(r20, r21) | 670 | IRQ_DISABLE(r20, r21) |
657 | TRACE_IRQS_OFF /* Note: clobbers registers r0-r29 */ | 671 | TRACE_IRQS_OFF /* Note: clobbers registers r0-r29 */ |
658 | 672 | ||
659 | /* Get base of stack in r32; note r30/31 are used as arguments here. */ | ||
660 | GET_THREAD_INFO(r32) | ||
661 | |||
662 | 673 | ||
663 | /* Check to see if there is any work to do before returning to user. */ | 674 | /* Check to see if there is any work to do before returning to user. */ |
664 | { | 675 | { |
@@ -674,16 +685,18 @@ STD_ENTRY(interrupt_return) | |||
674 | 685 | ||
675 | /* | 686 | /* |
676 | * Make sure we have all the registers saved for signal | 687 | * Make sure we have all the registers saved for signal |
677 | * handling or single-step. Call out to C code to figure out | 688 | * handling or notify-resume. Call out to C code to figure out |
678 | * exactly what we need to do for each flag bit, then if | 689 | * exactly what we need to do for each flag bit, then if |
679 | * necessary, reload the flags and recheck. | 690 | * necessary, reload the flags and recheck. |
680 | */ | 691 | */ |
681 | push_extra_callee_saves r0 | ||
682 | { | 692 | { |
683 | PTREGS_PTR(r0, PTREGS_OFFSET_BASE) | 693 | PTREGS_PTR(r0, PTREGS_OFFSET_BASE) |
684 | jal do_work_pending | 694 | bnez r33, 1f |
685 | } | 695 | } |
686 | bnez r0, .Lresume_userspace | 696 | push_extra_callee_saves r0 |
697 | movei r33, 1 | ||
698 | 1: jal do_work_pending | ||
699 | bnez r0, .Lretry_work_pending | ||
687 | 700 | ||
688 | /* | 701 | /* |
689 | * In the NMI case we | 702 | * In the NMI case we |
@@ -968,11 +981,16 @@ handle_syscall: | |||
968 | shl16insli r20, r20, hw0(irq_stat + IRQ_CPUSTAT_SYSCALL_COUNT_OFFSET) | 981 | shl16insli r20, r20, hw0(irq_stat + IRQ_CPUSTAT_SYSCALL_COUNT_OFFSET) |
969 | add r20, r20, tp | 982 | add r20, r20, tp |
970 | ld4s r21, r20 | 983 | ld4s r21, r20 |
971 | addi r21, r21, 1 | 984 | { |
972 | st4 r20, r21 | 985 | addi r21, r21, 1 |
986 | move r31, sp | ||
987 | } | ||
988 | { | ||
989 | st4 r20, r21 | ||
990 | EXTRACT_THREAD_INFO(r31) | ||
991 | } | ||
973 | 992 | ||
974 | /* Trace syscalls, if requested. */ | 993 | /* Trace syscalls, if requested. */ |
975 | GET_THREAD_INFO(r31) | ||
976 | addi r31, r31, THREAD_INFO_FLAGS_OFFSET | 994 | addi r31, r31, THREAD_INFO_FLAGS_OFFSET |
977 | ld r30, r31 | 995 | ld r30, r31 |
978 | andi r30, r30, _TIF_SYSCALL_TRACE | 996 | andi r30, r30, _TIF_SYSCALL_TRACE |
diff --git a/arch/tile/kernel/process.c b/arch/tile/kernel/process.c index 2d5ef617bb39..54e6c64b85cc 100644 --- a/arch/tile/kernel/process.c +++ b/arch/tile/kernel/process.c | |||
@@ -567,6 +567,10 @@ struct task_struct *__sched _switch_to(struct task_struct *prev, | |||
567 | */ | 567 | */ |
568 | int do_work_pending(struct pt_regs *regs, u32 thread_info_flags) | 568 | int do_work_pending(struct pt_regs *regs, u32 thread_info_flags) |
569 | { | 569 | { |
570 | /* If we enter in kernel mode, do nothing and exit the caller loop. */ | ||
571 | if (!user_mode(regs)) | ||
572 | return 0; | ||
573 | |||
570 | if (thread_info_flags & _TIF_NEED_RESCHED) { | 574 | if (thread_info_flags & _TIF_NEED_RESCHED) { |
571 | schedule(); | 575 | schedule(); |
572 | return 1; | 576 | return 1; |
@@ -589,8 +593,7 @@ int do_work_pending(struct pt_regs *regs, u32 thread_info_flags) | |||
589 | return 1; | 593 | return 1; |
590 | } | 594 | } |
591 | if (thread_info_flags & _TIF_SINGLESTEP) { | 595 | if (thread_info_flags & _TIF_SINGLESTEP) { |
592 | if ((regs->ex1 & SPR_EX_CONTEXT_1_1__PL_MASK) == 0) | 596 | single_step_once(regs); |
593 | single_step_once(regs); | ||
594 | return 0; | 597 | return 0; |
595 | } | 598 | } |
596 | panic("work_pending: bad flags %#x\n", thread_info_flags); | 599 | panic("work_pending: bad flags %#x\n", thread_info_flags); |
diff --git a/arch/x86/include/asm/kvm_para.h b/arch/x86/include/asm/kvm_para.h index 734c3767cfac..183922e13de1 100644 --- a/arch/x86/include/asm/kvm_para.h +++ b/arch/x86/include/asm/kvm_para.h | |||
@@ -170,6 +170,9 @@ static inline int kvm_para_available(void) | |||
170 | unsigned int eax, ebx, ecx, edx; | 170 | unsigned int eax, ebx, ecx, edx; |
171 | char signature[13]; | 171 | char signature[13]; |
172 | 172 | ||
173 | if (boot_cpu_data.cpuid_level < 0) | ||
174 | return 0; /* So we don't blow up on old processors */ | ||
175 | |||
173 | cpuid(KVM_CPUID_SIGNATURE, &eax, &ebx, &ecx, &edx); | 176 | cpuid(KVM_CPUID_SIGNATURE, &eax, &ebx, &ecx, &edx); |
174 | memcpy(signature + 0, &ebx, 4); | 177 | memcpy(signature + 0, &ebx, 4); |
175 | memcpy(signature + 4, &ecx, 4); | 178 | memcpy(signature + 4, &ecx, 4); |
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index a415b1f44365..7c439fe4941b 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
@@ -593,7 +593,7 @@ void __init acpi_set_irq_model_ioapic(void) | |||
593 | #ifdef CONFIG_ACPI_HOTPLUG_CPU | 593 | #ifdef CONFIG_ACPI_HOTPLUG_CPU |
594 | #include <acpi/processor.h> | 594 | #include <acpi/processor.h> |
595 | 595 | ||
596 | static void __cpuinitdata acpi_map_cpu2node(acpi_handle handle, int cpu, int physid) | 596 | static void __cpuinit acpi_map_cpu2node(acpi_handle handle, int cpu, int physid) |
597 | { | 597 | { |
598 | #ifdef CONFIG_ACPI_NUMA | 598 | #ifdef CONFIG_ACPI_NUMA |
599 | int nid; | 599 | int nid; |
diff --git a/arch/x86/kernel/microcode_intel.c b/arch/x86/kernel/microcode_intel.c index 3ca42d0e43a2..0327e2b3c408 100644 --- a/arch/x86/kernel/microcode_intel.c +++ b/arch/x86/kernel/microcode_intel.c | |||
@@ -147,12 +147,6 @@ static int collect_cpu_info(int cpu_num, struct cpu_signature *csig) | |||
147 | 147 | ||
148 | memset(csig, 0, sizeof(*csig)); | 148 | memset(csig, 0, sizeof(*csig)); |
149 | 149 | ||
150 | if (c->x86_vendor != X86_VENDOR_INTEL || c->x86 < 6 || | ||
151 | cpu_has(c, X86_FEATURE_IA64)) { | ||
152 | pr_err("CPU%d not a capable Intel processor\n", cpu_num); | ||
153 | return -1; | ||
154 | } | ||
155 | |||
156 | csig->sig = cpuid_eax(0x00000001); | 150 | csig->sig = cpuid_eax(0x00000001); |
157 | 151 | ||
158 | if ((c->x86_model >= 5) || (c->x86 > 6)) { | 152 | if ((c->x86_model >= 5) || (c->x86 > 6)) { |
@@ -463,6 +457,14 @@ static struct microcode_ops microcode_intel_ops = { | |||
463 | 457 | ||
464 | struct microcode_ops * __init init_intel_microcode(void) | 458 | struct microcode_ops * __init init_intel_microcode(void) |
465 | { | 459 | { |
460 | struct cpuinfo_x86 *c = &cpu_data(0); | ||
461 | |||
462 | if (c->x86_vendor != X86_VENDOR_INTEL || c->x86 < 6 || | ||
463 | cpu_has(c, X86_FEATURE_IA64)) { | ||
464 | pr_err("Intel CPU family 0x%x not supported\n", c->x86); | ||
465 | return NULL; | ||
466 | } | ||
467 | |||
466 | return µcode_intel_ops; | 468 | return µcode_intel_ops; |
467 | } | 469 | } |
468 | 470 | ||