diff options
Diffstat (limited to 'arch/sh')
-rw-r--r-- | arch/sh/Kconfig | 2 | ||||
-rw-r--r-- | arch/sh/boards/board-ap325rxa.c | 58 | ||||
-rw-r--r-- | arch/sh/include/asm/perf_counter.h | 9 | ||||
-rw-r--r-- | arch/sh/include/asm/perf_event.h | 9 | ||||
-rw-r--r-- | arch/sh/include/asm/unistd_32.h | 2 | ||||
-rw-r--r-- | arch/sh/include/asm/unistd_64.h | 2 | ||||
-rw-r--r-- | arch/sh/kernel/syscalls_32.S | 2 | ||||
-rw-r--r-- | arch/sh/kernel/syscalls_64.S | 2 | ||||
-rw-r--r-- | arch/sh/mm/fault_32.c | 8 | ||||
-rw-r--r-- | arch/sh/mm/init.c | 8 | ||||
-rw-r--r-- | arch/sh/mm/tlbflush_64.c | 8 |
11 files changed, 69 insertions, 41 deletions
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 4df3570fe511..b940424f8ccc 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig | |||
@@ -16,7 +16,7 @@ config SUPERH | |||
16 | select HAVE_IOREMAP_PROT if MMU | 16 | select HAVE_IOREMAP_PROT if MMU |
17 | select HAVE_ARCH_TRACEHOOK | 17 | select HAVE_ARCH_TRACEHOOK |
18 | select HAVE_DMA_API_DEBUG | 18 | select HAVE_DMA_API_DEBUG |
19 | select HAVE_PERF_COUNTERS | 19 | select HAVE_PERF_EVENTS |
20 | select HAVE_KERNEL_GZIP | 20 | select HAVE_KERNEL_GZIP |
21 | select HAVE_KERNEL_BZIP2 | 21 | select HAVE_KERNEL_BZIP2 |
22 | select HAVE_KERNEL_LZMA | 22 | select HAVE_KERNEL_LZMA |
diff --git a/arch/sh/boards/board-ap325rxa.c b/arch/sh/boards/board-ap325rxa.c index 327d47c25a57..2d080732a964 100644 --- a/arch/sh/boards/board-ap325rxa.c +++ b/arch/sh/boards/board-ap325rxa.c | |||
@@ -310,8 +310,10 @@ static int camera_set_capture(struct soc_camera_platform_info *info, | |||
310 | return ret; | 310 | return ret; |
311 | } | 311 | } |
312 | 312 | ||
313 | static int ap325rxa_camera_add(struct soc_camera_link *icl, struct device *dev); | ||
314 | static void ap325rxa_camera_del(struct soc_camera_link *icl); | ||
315 | |||
313 | static struct soc_camera_platform_info camera_info = { | 316 | static struct soc_camera_platform_info camera_info = { |
314 | .iface = 0, | ||
315 | .format_name = "UYVY", | 317 | .format_name = "UYVY", |
316 | .format_depth = 16, | 318 | .format_depth = 16, |
317 | .format = { | 319 | .format = { |
@@ -323,24 +325,46 @@ static struct soc_camera_platform_info camera_info = { | |||
323 | .bus_param = SOCAM_PCLK_SAMPLE_RISING | SOCAM_HSYNC_ACTIVE_HIGH | | 325 | .bus_param = SOCAM_PCLK_SAMPLE_RISING | SOCAM_HSYNC_ACTIVE_HIGH | |
324 | SOCAM_VSYNC_ACTIVE_HIGH | SOCAM_MASTER | SOCAM_DATAWIDTH_8, | 326 | SOCAM_VSYNC_ACTIVE_HIGH | SOCAM_MASTER | SOCAM_DATAWIDTH_8, |
325 | .set_capture = camera_set_capture, | 327 | .set_capture = camera_set_capture, |
328 | .link = { | ||
329 | .bus_id = 0, | ||
330 | .add_device = ap325rxa_camera_add, | ||
331 | .del_device = ap325rxa_camera_del, | ||
332 | .module_name = "soc_camera_platform", | ||
333 | }, | ||
326 | }; | 334 | }; |
327 | 335 | ||
336 | static void dummy_release(struct device *dev) | ||
337 | { | ||
338 | } | ||
339 | |||
328 | static struct platform_device camera_device = { | 340 | static struct platform_device camera_device = { |
329 | .name = "soc_camera_platform", | 341 | .name = "soc_camera_platform", |
330 | .dev = { | 342 | .dev = { |
331 | .platform_data = &camera_info, | 343 | .platform_data = &camera_info, |
344 | .release = dummy_release, | ||
332 | }, | 345 | }, |
333 | }; | 346 | }; |
334 | 347 | ||
335 | static int __init camera_setup(void) | 348 | static int ap325rxa_camera_add(struct soc_camera_link *icl, |
349 | struct device *dev) | ||
336 | { | 350 | { |
337 | if (camera_probe() > 0) | 351 | if (icl != &camera_info.link || camera_probe() <= 0) |
338 | platform_device_register(&camera_device); | 352 | return -ENODEV; |
339 | 353 | ||
340 | return 0; | 354 | camera_info.dev = dev; |
355 | |||
356 | return platform_device_register(&camera_device); | ||
341 | } | 357 | } |
342 | late_initcall(camera_setup); | ||
343 | 358 | ||
359 | static void ap325rxa_camera_del(struct soc_camera_link *icl) | ||
360 | { | ||
361 | if (icl != &camera_info.link) | ||
362 | return; | ||
363 | |||
364 | platform_device_unregister(&camera_device); | ||
365 | memset(&camera_device.dev.kobj, 0, | ||
366 | sizeof(camera_device.dev.kobj)); | ||
367 | } | ||
344 | #endif /* CONFIG_I2C */ | 368 | #endif /* CONFIG_I2C */ |
345 | 369 | ||
346 | static int ov7725_power(struct device *dev, int mode) | 370 | static int ov7725_power(struct device *dev, int mode) |
@@ -416,6 +440,7 @@ static struct ov772x_camera_info ov7725_info = { | |||
416 | .flags = OV772X_FLAG_VFLIP | OV772X_FLAG_HFLIP, | 440 | .flags = OV772X_FLAG_VFLIP | OV772X_FLAG_HFLIP, |
417 | .edgectrl = OV772X_AUTO_EDGECTRL(0xf, 0), | 441 | .edgectrl = OV772X_AUTO_EDGECTRL(0xf, 0), |
418 | .link = { | 442 | .link = { |
443 | .bus_id = 0, | ||
419 | .power = ov7725_power, | 444 | .power = ov7725_power, |
420 | .board_info = &ap325rxa_i2c_camera[0], | 445 | .board_info = &ap325rxa_i2c_camera[0], |
421 | .i2c_adapter_id = 0, | 446 | .i2c_adapter_id = 0, |
@@ -423,11 +448,19 @@ static struct ov772x_camera_info ov7725_info = { | |||
423 | }, | 448 | }, |
424 | }; | 449 | }; |
425 | 450 | ||
426 | static struct platform_device ap325rxa_camera = { | 451 | static struct platform_device ap325rxa_camera[] = { |
427 | .name = "soc-camera-pdrv", | 452 | { |
428 | .id = 0, | 453 | .name = "soc-camera-pdrv", |
429 | .dev = { | 454 | .id = 0, |
430 | .platform_data = &ov7725_info.link, | 455 | .dev = { |
456 | .platform_data = &ov7725_info.link, | ||
457 | }, | ||
458 | }, { | ||
459 | .name = "soc-camera-pdrv", | ||
460 | .id = 1, | ||
461 | .dev = { | ||
462 | .platform_data = &camera_info.link, | ||
463 | }, | ||
431 | }, | 464 | }, |
432 | }; | 465 | }; |
433 | 466 | ||
@@ -438,7 +471,8 @@ static struct platform_device *ap325rxa_devices[] __initdata = { | |||
438 | &ceu_device, | 471 | &ceu_device, |
439 | &nand_flash_device, | 472 | &nand_flash_device, |
440 | &sdcard_cn3_device, | 473 | &sdcard_cn3_device, |
441 | &ap325rxa_camera, | 474 | &ap325rxa_camera[0], |
475 | &ap325rxa_camera[1], | ||
442 | }; | 476 | }; |
443 | 477 | ||
444 | static struct spi_board_info ap325rxa_spi_devices[] = { | 478 | static struct spi_board_info ap325rxa_spi_devices[] = { |
diff --git a/arch/sh/include/asm/perf_counter.h b/arch/sh/include/asm/perf_counter.h deleted file mode 100644 index d8e6bb9c0ccc..000000000000 --- a/arch/sh/include/asm/perf_counter.h +++ /dev/null | |||
@@ -1,9 +0,0 @@ | |||
1 | #ifndef __ASM_SH_PERF_COUNTER_H | ||
2 | #define __ASM_SH_PERF_COUNTER_H | ||
3 | |||
4 | /* SH only supports software counters through this interface. */ | ||
5 | static inline void set_perf_counter_pending(void) {} | ||
6 | |||
7 | #define PERF_COUNTER_INDEX_OFFSET 0 | ||
8 | |||
9 | #endif /* __ASM_SH_PERF_COUNTER_H */ | ||
diff --git a/arch/sh/include/asm/perf_event.h b/arch/sh/include/asm/perf_event.h new file mode 100644 index 000000000000..11a302297ab7 --- /dev/null +++ b/arch/sh/include/asm/perf_event.h | |||
@@ -0,0 +1,9 @@ | |||
1 | #ifndef __ASM_SH_PERF_EVENT_H | ||
2 | #define __ASM_SH_PERF_EVENT_H | ||
3 | |||
4 | /* SH only supports software events through this interface. */ | ||
5 | static inline void set_perf_event_pending(void) {} | ||
6 | |||
7 | #define PERF_EVENT_INDEX_OFFSET 0 | ||
8 | |||
9 | #endif /* __ASM_SH_PERF_EVENT_H */ | ||
diff --git a/arch/sh/include/asm/unistd_32.h b/arch/sh/include/asm/unistd_32.h index 925dd40d9d55..f3fd1b9eb6b1 100644 --- a/arch/sh/include/asm/unistd_32.h +++ b/arch/sh/include/asm/unistd_32.h | |||
@@ -344,7 +344,7 @@ | |||
344 | #define __NR_preadv 333 | 344 | #define __NR_preadv 333 |
345 | #define __NR_pwritev 334 | 345 | #define __NR_pwritev 334 |
346 | #define __NR_rt_tgsigqueueinfo 335 | 346 | #define __NR_rt_tgsigqueueinfo 335 |
347 | #define __NR_perf_counter_open 336 | 347 | #define __NR_perf_event_open 336 |
348 | 348 | ||
349 | #define NR_syscalls 337 | 349 | #define NR_syscalls 337 |
350 | 350 | ||
diff --git a/arch/sh/include/asm/unistd_64.h b/arch/sh/include/asm/unistd_64.h index 2b84bc916bc5..343ce8f073ea 100644 --- a/arch/sh/include/asm/unistd_64.h +++ b/arch/sh/include/asm/unistd_64.h | |||
@@ -384,7 +384,7 @@ | |||
384 | #define __NR_preadv 361 | 384 | #define __NR_preadv 361 |
385 | #define __NR_pwritev 362 | 385 | #define __NR_pwritev 362 |
386 | #define __NR_rt_tgsigqueueinfo 363 | 386 | #define __NR_rt_tgsigqueueinfo 363 |
387 | #define __NR_perf_counter_open 364 | 387 | #define __NR_perf_event_open 364 |
388 | 388 | ||
389 | #ifdef __KERNEL__ | 389 | #ifdef __KERNEL__ |
390 | 390 | ||
diff --git a/arch/sh/kernel/syscalls_32.S b/arch/sh/kernel/syscalls_32.S index 16ba225ede89..19fd11dd9871 100644 --- a/arch/sh/kernel/syscalls_32.S +++ b/arch/sh/kernel/syscalls_32.S | |||
@@ -352,4 +352,4 @@ ENTRY(sys_call_table) | |||
352 | .long sys_preadv | 352 | .long sys_preadv |
353 | .long sys_pwritev | 353 | .long sys_pwritev |
354 | .long sys_rt_tgsigqueueinfo /* 335 */ | 354 | .long sys_rt_tgsigqueueinfo /* 335 */ |
355 | .long sys_perf_counter_open | 355 | .long sys_perf_event_open |
diff --git a/arch/sh/kernel/syscalls_64.S b/arch/sh/kernel/syscalls_64.S index af6fb7410c21..5bfde6c77498 100644 --- a/arch/sh/kernel/syscalls_64.S +++ b/arch/sh/kernel/syscalls_64.S | |||
@@ -390,4 +390,4 @@ sys_call_table: | |||
390 | .long sys_preadv | 390 | .long sys_preadv |
391 | .long sys_pwritev | 391 | .long sys_pwritev |
392 | .long sys_rt_tgsigqueueinfo | 392 | .long sys_rt_tgsigqueueinfo |
393 | .long sys_perf_counter_open | 393 | .long sys_perf_event_open |
diff --git a/arch/sh/mm/fault_32.c b/arch/sh/mm/fault_32.c index 781b413ff82d..47530104e0ad 100644 --- a/arch/sh/mm/fault_32.c +++ b/arch/sh/mm/fault_32.c | |||
@@ -15,7 +15,7 @@ | |||
15 | #include <linux/mm.h> | 15 | #include <linux/mm.h> |
16 | #include <linux/hardirq.h> | 16 | #include <linux/hardirq.h> |
17 | #include <linux/kprobes.h> | 17 | #include <linux/kprobes.h> |
18 | #include <linux/perf_counter.h> | 18 | #include <linux/perf_event.h> |
19 | #include <asm/io_trapped.h> | 19 | #include <asm/io_trapped.h> |
20 | #include <asm/system.h> | 20 | #include <asm/system.h> |
21 | #include <asm/mmu_context.h> | 21 | #include <asm/mmu_context.h> |
@@ -157,7 +157,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, | |||
157 | if ((regs->sr & SR_IMASK) != SR_IMASK) | 157 | if ((regs->sr & SR_IMASK) != SR_IMASK) |
158 | local_irq_enable(); | 158 | local_irq_enable(); |
159 | 159 | ||
160 | perf_swcounter_event(PERF_COUNT_SW_PAGE_FAULTS, 1, 0, regs, address); | 160 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, 0, regs, address); |
161 | 161 | ||
162 | /* | 162 | /* |
163 | * If we're in an interrupt, have no user context or are running | 163 | * If we're in an interrupt, have no user context or are running |
@@ -208,11 +208,11 @@ survive: | |||
208 | } | 208 | } |
209 | if (fault & VM_FAULT_MAJOR) { | 209 | if (fault & VM_FAULT_MAJOR) { |
210 | tsk->maj_flt++; | 210 | tsk->maj_flt++; |
211 | perf_swcounter_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, 0, | 211 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, 0, |
212 | regs, address); | 212 | regs, address); |
213 | } else { | 213 | } else { |
214 | tsk->min_flt++; | 214 | tsk->min_flt++; |
215 | perf_swcounter_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, 0, | 215 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, 0, |
216 | regs, address); | 216 | regs, address); |
217 | } | 217 | } |
218 | 218 | ||
diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c index edc842ff61ed..8173e38afd38 100644 --- a/arch/sh/mm/init.c +++ b/arch/sh/mm/init.c | |||
@@ -186,8 +186,6 @@ void __init paging_init(void) | |||
186 | set_fixmap_nocache(FIX_UNCACHED, __pa(&__uncached_start)); | 186 | set_fixmap_nocache(FIX_UNCACHED, __pa(&__uncached_start)); |
187 | } | 187 | } |
188 | 188 | ||
189 | static struct kcore_list kcore_mem, kcore_vmalloc; | ||
190 | |||
191 | void __init mem_init(void) | 189 | void __init mem_init(void) |
192 | { | 190 | { |
193 | int codesize, datasize, initsize; | 191 | int codesize, datasize, initsize; |
@@ -226,13 +224,9 @@ void __init mem_init(void) | |||
226 | datasize = (unsigned long) &_edata - (unsigned long) &_etext; | 224 | datasize = (unsigned long) &_edata - (unsigned long) &_etext; |
227 | initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; | 225 | initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; |
228 | 226 | ||
229 | kclist_add(&kcore_mem, __va(0), max_low_pfn << PAGE_SHIFT); | ||
230 | kclist_add(&kcore_vmalloc, (void *)VMALLOC_START, | ||
231 | VMALLOC_END - VMALLOC_START); | ||
232 | |||
233 | printk(KERN_INFO "Memory: %luk/%luk available (%dk kernel code, " | 227 | printk(KERN_INFO "Memory: %luk/%luk available (%dk kernel code, " |
234 | "%dk data, %dk init)\n", | 228 | "%dk data, %dk init)\n", |
235 | (unsigned long) nr_free_pages() << (PAGE_SHIFT-10), | 229 | nr_free_pages() << (PAGE_SHIFT-10), |
236 | num_physpages << (PAGE_SHIFT-10), | 230 | num_physpages << (PAGE_SHIFT-10), |
237 | codesize >> 10, | 231 | codesize >> 10, |
238 | datasize >> 10, | 232 | datasize >> 10, |
diff --git a/arch/sh/mm/tlbflush_64.c b/arch/sh/mm/tlbflush_64.c index 2dcc48528f7a..de0b0e881823 100644 --- a/arch/sh/mm/tlbflush_64.c +++ b/arch/sh/mm/tlbflush_64.c | |||
@@ -20,7 +20,7 @@ | |||
20 | #include <linux/mman.h> | 20 | #include <linux/mman.h> |
21 | #include <linux/mm.h> | 21 | #include <linux/mm.h> |
22 | #include <linux/smp.h> | 22 | #include <linux/smp.h> |
23 | #include <linux/perf_counter.h> | 23 | #include <linux/perf_event.h> |
24 | #include <linux/interrupt.h> | 24 | #include <linux/interrupt.h> |
25 | #include <asm/system.h> | 25 | #include <asm/system.h> |
26 | #include <asm/io.h> | 26 | #include <asm/io.h> |
@@ -116,7 +116,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long writeaccess, | |||
116 | /* Not an IO address, so reenable interrupts */ | 116 | /* Not an IO address, so reenable interrupts */ |
117 | local_irq_enable(); | 117 | local_irq_enable(); |
118 | 118 | ||
119 | perf_swcounter_event(PERF_COUNT_SW_PAGE_FAULTS, 1, 0, regs, address); | 119 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, 0, regs, address); |
120 | 120 | ||
121 | /* | 121 | /* |
122 | * If we're in an interrupt or have no user | 122 | * If we're in an interrupt or have no user |
@@ -201,11 +201,11 @@ survive: | |||
201 | 201 | ||
202 | if (fault & VM_FAULT_MAJOR) { | 202 | if (fault & VM_FAULT_MAJOR) { |
203 | tsk->maj_flt++; | 203 | tsk->maj_flt++; |
204 | perf_swcounter_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, 0, | 204 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, 0, |
205 | regs, address); | 205 | regs, address); |
206 | } else { | 206 | } else { |
207 | tsk->min_flt++; | 207 | tsk->min_flt++; |
208 | perf_swcounter_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, 0, | 208 | perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, 0, |
209 | regs, address); | 209 | regs, address); |
210 | } | 210 | } |
211 | 211 | ||