aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sh/kernel')
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7366.c28
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7722.c34
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7723.c6
-rw-r--r--arch/sh/kernel/early_printk.c3
-rw-r--r--arch/sh/kernel/entry-common.S4
-rw-r--r--arch/sh/kernel/sh_ksyms_32.c13
-rw-r--r--arch/sh/kernel/timers/timer-tmu.c2
7 files changed, 75 insertions, 15 deletions
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7366.c b/arch/sh/kernel/cpu/sh4a/setup-sh7366.c
index 6851dba02f31..e17db39b97aa 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7366.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7366.c
@@ -36,6 +36,32 @@ static struct platform_device iic_device = {
36 .resource = iic_resources, 36 .resource = iic_resources,
37}; 37};
38 38
39static struct resource usb_host_resources[] = {
40 [0] = {
41 .name = "r8a66597_hcd",
42 .start = 0xa4d80000,
43 .end = 0xa4d800ff,
44 .flags = IORESOURCE_MEM,
45 },
46 [1] = {
47 .name = "r8a66597_hcd",
48 .start = 65,
49 .end = 65,
50 .flags = IORESOURCE_IRQ,
51 },
52};
53
54static struct platform_device usb_host_device = {
55 .name = "r8a66597_hcd",
56 .id = -1,
57 .dev = {
58 .dma_mask = NULL,
59 .coherent_dma_mask = 0xffffffff,
60 },
61 .num_resources = ARRAY_SIZE(usb_host_resources),
62 .resource = usb_host_resources,
63};
64
39static struct uio_info vpu_platform_data = { 65static struct uio_info vpu_platform_data = {
40 .name = "VPU5", 66 .name = "VPU5",
41 .version = "0", 67 .version = "0",
@@ -142,6 +168,7 @@ static struct platform_device sci_device = {
142static struct platform_device *sh7366_devices[] __initdata = { 168static struct platform_device *sh7366_devices[] __initdata = {
143 &iic_device, 169 &iic_device,
144 &sci_device, 170 &sci_device,
171 &usb_host_device,
145 &vpu_device, 172 &vpu_device,
146 &veu0_device, 173 &veu0_device,
147 &veu1_device, 174 &veu1_device,
@@ -158,6 +185,7 @@ static int __init sh7366_devices_setup(void)
158 clk_always_enable("mstp022"); /* INTC */ 185 clk_always_enable("mstp022"); /* INTC */
159 clk_always_enable("mstp020"); /* SuperHyway */ 186 clk_always_enable("mstp020"); /* SuperHyway */
160 clk_always_enable("mstp109"); /* I2C */ 187 clk_always_enable("mstp109"); /* I2C */
188 clk_always_enable("mstp211"); /* USB */
161 clk_always_enable("mstp207"); /* VEU-2 */ 189 clk_always_enable("mstp207"); /* VEU-2 */
162 clk_always_enable("mstp202"); /* VEU-1 */ 190 clk_always_enable("mstp202"); /* VEU-1 */
163 clk_always_enable("mstp201"); /* VPU */ 191 clk_always_enable("mstp201"); /* VPU */
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
index de1ede92176e..ef77ee1d9f53 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * SH7722 Setup 2 * SH7722 Setup
3 * 3 *
4 * Copyright (C) 2006 - 2007 Paul Mundt 4 * Copyright (C) 2006 - 2008 Paul Mundt
5 * 5 *
6 * This file is subject to the terms and conditions of the GNU General Public 6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive 7 * License. See the file "COPYING" in the main directory of this archive
@@ -16,6 +16,36 @@
16#include <asm/clock.h> 16#include <asm/clock.h>
17#include <asm/mmzone.h> 17#include <asm/mmzone.h>
18 18
19static struct resource rtc_resources[] = {
20 [0] = {
21 .start = 0xa465fec0,
22 .end = 0xa465fec0 + 0x58 - 1,
23 .flags = IORESOURCE_IO,
24 },
25 [1] = {
26 /* Period IRQ */
27 .start = 45,
28 .flags = IORESOURCE_IRQ,
29 },
30 [2] = {
31 /* Carry IRQ */
32 .start = 46,
33 .flags = IORESOURCE_IRQ,
34 },
35 [3] = {
36 /* Alarm IRQ */
37 .start = 44,
38 .flags = IORESOURCE_IRQ,
39 },
40};
41
42static struct platform_device rtc_device = {
43 .name = "sh-rtc",
44 .id = -1,
45 .num_resources = ARRAY_SIZE(rtc_resources),
46 .resource = rtc_resources,
47};
48
19static struct resource usbf_resources[] = { 49static struct resource usbf_resources[] = {
20 [0] = { 50 [0] = {
21 .name = "m66592_udc", 51 .name = "m66592_udc",
@@ -150,6 +180,7 @@ static struct platform_device sci_device = {
150}; 180};
151 181
152static struct platform_device *sh7722_devices[] __initdata = { 182static struct platform_device *sh7722_devices[] __initdata = {
183 &rtc_device,
153 &usbf_device, 184 &usbf_device,
154 &iic_device, 185 &iic_device,
155 &sci_device, 186 &sci_device,
@@ -202,7 +233,6 @@ enum {
202 IRDA, JPU, LCDC, 233 IRDA, JPU, LCDC,
203 234
204 /* interrupt groups */ 235 /* interrupt groups */
205
206 SIM, RTC, DMAC0123, VIOVOU, USB, DMAC45, FLCTL, I2C, SDHI, 236 SIM, RTC, DMAC0123, VIOVOU, USB, DMAC45, FLCTL, I2C, SDHI,
207}; 237};
208 238
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c
index a7412cede534..6d9e6972cfc9 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c
@@ -119,17 +119,17 @@ static struct plat_sci_port sci_platform_data[] = {
119 },{ 119 },{
120 .mapbase = 0xa4e30000, 120 .mapbase = 0xa4e30000,
121 .flags = UPF_BOOT_AUTOCONF, 121 .flags = UPF_BOOT_AUTOCONF,
122 .type = PORT_SCI, 122 .type = PORT_SCIFA,
123 .irqs = { 56, 56, 56, 56 }, 123 .irqs = { 56, 56, 56, 56 },
124 },{ 124 },{
125 .mapbase = 0xa4e40000, 125 .mapbase = 0xa4e40000,
126 .flags = UPF_BOOT_AUTOCONF, 126 .flags = UPF_BOOT_AUTOCONF,
127 .type = PORT_SCI, 127 .type = PORT_SCIFA,
128 .irqs = { 88, 88, 88, 88 }, 128 .irqs = { 88, 88, 88, 88 },
129 },{ 129 },{
130 .mapbase = 0xa4e50000, 130 .mapbase = 0xa4e50000,
131 .flags = UPF_BOOT_AUTOCONF, 131 .flags = UPF_BOOT_AUTOCONF,
132 .type = PORT_SCI, 132 .type = PORT_SCIFA,
133 .irqs = { 109, 109, 109, 109 }, 133 .irqs = { 109, 109, 109, 109 },
134 }, { 134 }, {
135 .flags = 0, 135 .flags = 0,
diff --git a/arch/sh/kernel/early_printk.c b/arch/sh/kernel/early_printk.c
index 6b7d166694e2..a952dcf9999d 100644
--- a/arch/sh/kernel/early_printk.c
+++ b/arch/sh/kernel/early_printk.c
@@ -75,6 +75,7 @@ static struct console bios_console = {
75#endif 75#endif
76 76
77static struct uart_port scif_port = { 77static struct uart_port scif_port = {
78 .type = PORT_SCIF,
78 .mapbase = CONFIG_EARLY_SCIF_CONSOLE_PORT, 79 .mapbase = CONFIG_EARLY_SCIF_CONSOLE_PORT,
79 .membase = (char __iomem *)CONFIG_EARLY_SCIF_CONSOLE_PORT, 80 .membase = (char __iomem *)CONFIG_EARLY_SCIF_CONSOLE_PORT,
80}; 81};
@@ -84,9 +85,9 @@ static void scif_sercon_putc(int c)
84 while (((sci_in(&scif_port, SCFDR) & EPK_FIFO_BITS) >= EPK_FIFO_SIZE)) 85 while (((sci_in(&scif_port, SCFDR) & EPK_FIFO_BITS) >= EPK_FIFO_SIZE))
85 ; 86 ;
86 87
87 sci_out(&scif_port, SCxTDR, c);
88 sci_in(&scif_port, SCxSR); 88 sci_in(&scif_port, SCxSR);
89 sci_out(&scif_port, SCxSR, 0xf3 & ~(0x20 | 0x40)); 89 sci_out(&scif_port, SCxSR, 0xf3 & ~(0x20 | 0x40));
90 sci_out(&scif_port, SCxTDR, c);
90 91
91 while ((sci_in(&scif_port, SCxSR) & 0x40) == 0) 92 while ((sci_in(&scif_port, SCxSR) & 0x40) == 0)
92 ; 93 ;
diff --git a/arch/sh/kernel/entry-common.S b/arch/sh/kernel/entry-common.S
index 1a5cf9dd82de..5b7efc4016fa 100644
--- a/arch/sh/kernel/entry-common.S
+++ b/arch/sh/kernel/entry-common.S
@@ -372,7 +372,7 @@ syscall_exit:
3727: .long do_syscall_trace_enter 3727: .long do_syscall_trace_enter
3738: .long do_syscall_trace_leave 3738: .long do_syscall_trace_leave
374 374
375#ifdef CONFIG_FTRACE 375#ifdef CONFIG_FUNCTION_TRACER
376 .align 2 376 .align 2
377 .globl _mcount 377 .globl _mcount
378 .type _mcount,@function 378 .type _mcount,@function
@@ -414,4 +414,4 @@ skip_trace:
414ftrace_stub: 414ftrace_stub:
415 rts 415 rts
416 nop 416 nop
417#endif /* CONFIG_FTRACE */ 417#endif /* CONFIG_FUNCTION_TRACER */
diff --git a/arch/sh/kernel/sh_ksyms_32.c b/arch/sh/kernel/sh_ksyms_32.c
index d366a7443720..92ae5e6c099e 100644
--- a/arch/sh/kernel/sh_ksyms_32.c
+++ b/arch/sh/kernel/sh_ksyms_32.c
@@ -50,7 +50,10 @@ EXPORT_SYMBOL(__udelay);
50EXPORT_SYMBOL(__ndelay); 50EXPORT_SYMBOL(__ndelay);
51EXPORT_SYMBOL(__const_udelay); 51EXPORT_SYMBOL(__const_udelay);
52 52
53#define DECLARE_EXPORT(name) extern void name(void);EXPORT_SYMBOL(name) 53#define DECLARE_EXPORT(name) \
54 extern void name(void);EXPORT_SYMBOL(name)
55#define MAYBE_DECLARE_EXPORT(name) \
56 extern void name(void) __weak;EXPORT_SYMBOL(name)
54 57
55/* These symbols are generated by the compiler itself */ 58/* These symbols are generated by the compiler itself */
56DECLARE_EXPORT(__udivsi3); 59DECLARE_EXPORT(__udivsi3);
@@ -109,10 +112,8 @@ DECLARE_EXPORT(__movmemSI12_i4);
109 * compiler which include backported patches. 112 * compiler which include backported patches.
110 */ 113 */
111DECLARE_EXPORT(__udiv_qrnnd_16); 114DECLARE_EXPORT(__udiv_qrnnd_16);
112#if !defined(CONFIG_CPU_SH2) 115MAYBE_DECLARE_EXPORT(__sdivsi3_i4i);
113DECLARE_EXPORT(__sdivsi3_i4i); 116MAYBE_DECLARE_EXPORT(__udivsi3_i4i);
114DECLARE_EXPORT(__udivsi3_i4i);
115#endif
116#endif 117#endif
117#else /* GCC 3.x */ 118#else /* GCC 3.x */
118DECLARE_EXPORT(__movstr_i4_even); 119DECLARE_EXPORT(__movstr_i4_even);
@@ -133,7 +134,7 @@ EXPORT_SYMBOL(flush_dcache_page);
133EXPORT_SYMBOL(clear_user_page); 134EXPORT_SYMBOL(clear_user_page);
134#endif 135#endif
135 136
136#ifdef CONFIG_FTRACE 137#ifdef CONFIG_FUNCTION_TRACER
137EXPORT_SYMBOL(mcount); 138EXPORT_SYMBOL(mcount);
138#endif 139#endif
139EXPORT_SYMBOL(csum_partial); 140EXPORT_SYMBOL(csum_partial);
diff --git a/arch/sh/kernel/timers/timer-tmu.c b/arch/sh/kernel/timers/timer-tmu.c
index aaaf90d06b85..3c61ddd4d43e 100644
--- a/arch/sh/kernel/timers/timer-tmu.c
+++ b/arch/sh/kernel/timers/timer-tmu.c
@@ -120,7 +120,7 @@ static void tmu_set_mode(enum clock_event_mode mode,
120{ 120{
121 switch (mode) { 121 switch (mode) {
122 case CLOCK_EVT_MODE_PERIODIC: 122 case CLOCK_EVT_MODE_PERIODIC:
123 ctrl_outl(ctrl_inl(TMU0_TCNT), TMU0_TCOR); 123 ctrl_outl(tmu_latest_interval[TMU0], TMU0_TCOR);
124 break; 124 break;
125 case CLOCK_EVT_MODE_ONESHOT: 125 case CLOCK_EVT_MODE_ONESHOT:
126 ctrl_outl(0, TMU0_TCOR); 126 ctrl_outl(0, TMU0_TCOR);