diff options
Diffstat (limited to 'arch/sh/kernel')
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-sh7366.c | 28 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-sh7722.c | 34 | ||||
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-sh7723.c | 6 | ||||
-rw-r--r-- | arch/sh/kernel/early_printk.c | 3 | ||||
-rw-r--r-- | arch/sh/kernel/entry-common.S | 4 | ||||
-rw-r--r-- | arch/sh/kernel/sh_ksyms_32.c | 13 | ||||
-rw-r--r-- | arch/sh/kernel/timers/timer-tmu.c | 2 |
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 | ||
39 | static 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 | |||
54 | static 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 | |||
39 | static struct uio_info vpu_platform_data = { | 65 | static 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 = { | |||
142 | static struct platform_device *sh7366_devices[] __initdata = { | 168 | static 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 | ||
19 | static 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 | |||
42 | static 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 | |||
19 | static struct resource usbf_resources[] = { | 49 | static 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 | ||
152 | static struct platform_device *sh7722_devices[] __initdata = { | 182 | static 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 | ||
77 | static struct uart_port scif_port = { | 77 | static 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: | |||
372 | 7: .long do_syscall_trace_enter | 372 | 7: .long do_syscall_trace_enter |
373 | 8: .long do_syscall_trace_leave | 373 | 8: .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: | |||
414 | ftrace_stub: | 414 | ftrace_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); | |||
50 | EXPORT_SYMBOL(__ndelay); | 50 | EXPORT_SYMBOL(__ndelay); |
51 | EXPORT_SYMBOL(__const_udelay); | 51 | EXPORT_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 */ |
56 | DECLARE_EXPORT(__udivsi3); | 59 | DECLARE_EXPORT(__udivsi3); |
@@ -109,10 +112,8 @@ DECLARE_EXPORT(__movmemSI12_i4); | |||
109 | * compiler which include backported patches. | 112 | * compiler which include backported patches. |
110 | */ | 113 | */ |
111 | DECLARE_EXPORT(__udiv_qrnnd_16); | 114 | DECLARE_EXPORT(__udiv_qrnnd_16); |
112 | #if !defined(CONFIG_CPU_SH2) | 115 | MAYBE_DECLARE_EXPORT(__sdivsi3_i4i); |
113 | DECLARE_EXPORT(__sdivsi3_i4i); | 116 | MAYBE_DECLARE_EXPORT(__udivsi3_i4i); |
114 | DECLARE_EXPORT(__udivsi3_i4i); | ||
115 | #endif | ||
116 | #endif | 117 | #endif |
117 | #else /* GCC 3.x */ | 118 | #else /* GCC 3.x */ |
118 | DECLARE_EXPORT(__movstr_i4_even); | 119 | DECLARE_EXPORT(__movstr_i4_even); |
@@ -133,7 +134,7 @@ EXPORT_SYMBOL(flush_dcache_page); | |||
133 | EXPORT_SYMBOL(clear_user_page); | 134 | EXPORT_SYMBOL(clear_user_page); |
134 | #endif | 135 | #endif |
135 | 136 | ||
136 | #ifdef CONFIG_FTRACE | 137 | #ifdef CONFIG_FUNCTION_TRACER |
137 | EXPORT_SYMBOL(mcount); | 138 | EXPORT_SYMBOL(mcount); |
138 | #endif | 139 | #endif |
139 | EXPORT_SYMBOL(csum_partial); | 140 | EXPORT_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); |