diff options
author | Jeff Garzik <jeff@garzik.org> | 2007-12-01 16:18:56 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-12-01 16:18:56 -0500 |
commit | c99da91e7a12724127475a85cc7a38214b3504e2 (patch) | |
tree | de0eb3fe32ce58804457963fd133a53bb8fba5b8 /arch | |
parent | a31e23e15cbb9734c5883a4a7f58d8712d303e0b (diff) | |
parent | 92d499d991ec4f5cbd00d6f33967eab9d3ee8d6c (diff) |
Merge branch 'master' into upstream-fixes
Diffstat (limited to 'arch')
204 files changed, 4144 insertions, 2450 deletions
diff --git a/arch/alpha/kernel/pci-noop.c b/arch/alpha/kernel/pci-noop.c index 174b729c504b..468b76ce66a1 100644 --- a/arch/alpha/kernel/pci-noop.c +++ b/arch/alpha/kernel/pci-noop.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/errno.h> | 12 | #include <linux/errno.h> |
13 | #include <linux/sched.h> | 13 | #include <linux/sched.h> |
14 | #include <linux/dma-mapping.h> | 14 | #include <linux/dma-mapping.h> |
15 | #include <linux/scatterlist.h> | ||
15 | 16 | ||
16 | #include "proto.h" | 17 | #include "proto.h" |
17 | 18 | ||
@@ -172,18 +173,19 @@ dma_alloc_coherent(struct device *dev, size_t size, | |||
172 | EXPORT_SYMBOL(dma_alloc_coherent); | 173 | EXPORT_SYMBOL(dma_alloc_coherent); |
173 | 174 | ||
174 | int | 175 | int |
175 | dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, | 176 | dma_map_sg(struct device *dev, struct scatterlist *sgl, int nents, |
176 | enum dma_data_direction direction) | 177 | enum dma_data_direction direction) |
177 | { | 178 | { |
178 | int i; | 179 | int i; |
180 | struct scatterlist *sg; | ||
179 | 181 | ||
180 | for (i = 0; i < nents; i++ ) { | 182 | for_each_sg(sgl, sg, nents, i) { |
181 | void *va; | 183 | void *va; |
182 | 184 | ||
183 | BUG_ON(!sg[i].page); | 185 | BUG_ON(!sg_page(sg)); |
184 | va = page_address(sg[i].page) + sg[i].offset; | 186 | va = sg_virt(sg); |
185 | sg_dma_address(sg + i) = (dma_addr_t)virt_to_bus(va); | 187 | sg_dma_address(sg) = (dma_addr_t)virt_to_bus(va); |
186 | sg_dma_len(sg + i) = sg[i].length; | 188 | sg_dma_len(sg) = sg->length; |
187 | } | 189 | } |
188 | 190 | ||
189 | return nents; | 191 | return nents; |
diff --git a/arch/arm/common/uengine.c b/arch/arm/common/uengine.c index 95c8508c29b7..117cab30bd36 100644 --- a/arch/arm/common/uengine.c +++ b/arch/arm/common/uengine.c | |||
@@ -374,8 +374,8 @@ static int set_initial_registers(int uengine, struct ixp2000_uengine_code *c) | |||
374 | u8 *ucode; | 374 | u8 *ucode; |
375 | int i; | 375 | int i; |
376 | 376 | ||
377 | gpr_a = kmalloc(128 * sizeof(u32), GFP_KERNEL); | 377 | gpr_a = kzalloc(128 * sizeof(u32), GFP_KERNEL); |
378 | gpr_b = kmalloc(128 * sizeof(u32), GFP_KERNEL); | 378 | gpr_b = kzalloc(128 * sizeof(u32), GFP_KERNEL); |
379 | ucode = kmalloc(513 * 5, GFP_KERNEL); | 379 | ucode = kmalloc(513 * 5, GFP_KERNEL); |
380 | if (gpr_a == NULL || gpr_b == NULL || ucode == NULL) { | 380 | if (gpr_a == NULL || gpr_b == NULL || ucode == NULL) { |
381 | kfree(ucode); | 381 | kfree(ucode); |
@@ -388,8 +388,6 @@ static int set_initial_registers(int uengine, struct ixp2000_uengine_code *c) | |||
388 | if (c->uengine_parameters & IXP2000_UENGINE_4_CONTEXTS) | 388 | if (c->uengine_parameters & IXP2000_UENGINE_4_CONTEXTS) |
389 | per_ctx_regs = 32; | 389 | per_ctx_regs = 32; |
390 | 390 | ||
391 | memset(gpr_a, 0, sizeof(gpr_a)); | ||
392 | memset(gpr_b, 0, sizeof(gpr_b)); | ||
393 | for (i = 0; i < 256; i++) { | 391 | for (i = 0; i < 256; i++) { |
394 | struct ixp2000_reg_value *r = c->initial_reg_values + i; | 392 | struct ixp2000_reg_value *r = c->initial_reg_values + i; |
395 | u32 *bank; | 393 | u32 *bank; |
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index d645897652c2..29dec080a604 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S | |||
@@ -339,16 +339,6 @@ __pabt_svc: | |||
339 | str r1, [sp] @ save the "real" r0 copied | 339 | str r1, [sp] @ save the "real" r0 copied |
340 | @ from the exception stack | 340 | @ from the exception stack |
341 | 341 | ||
342 | #if __LINUX_ARM_ARCH__ < 6 && !defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG) | ||
343 | #ifndef CONFIG_MMU | ||
344 | #warning "NPTL on non MMU needs fixing" | ||
345 | #else | ||
346 | @ make sure our user space atomic helper is aborted | ||
347 | cmp r2, #TASK_SIZE | ||
348 | bichs r3, r3, #PSR_Z_BIT | ||
349 | #endif | ||
350 | #endif | ||
351 | |||
352 | @ | 342 | @ |
353 | @ We are now ready to fill in the remaining blanks on the stack: | 343 | @ We are now ready to fill in the remaining blanks on the stack: |
354 | @ | 344 | @ |
@@ -372,9 +362,25 @@ __pabt_svc: | |||
372 | zero_fp | 362 | zero_fp |
373 | .endm | 363 | .endm |
374 | 364 | ||
365 | .macro kuser_cmpxchg_check | ||
366 | #if __LINUX_ARM_ARCH__ < 6 && !defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG) | ||
367 | #ifndef CONFIG_MMU | ||
368 | #warning "NPTL on non MMU needs fixing" | ||
369 | #else | ||
370 | @ Make sure our user space atomic helper is restarted | ||
371 | @ if it was interrupted in a critical region. Here we | ||
372 | @ perform a quick test inline since it should be false | ||
373 | @ 99.9999% of the time. The rest is done out of line. | ||
374 | cmp r2, #TASK_SIZE | ||
375 | blhs kuser_cmpxchg_fixup | ||
376 | #endif | ||
377 | #endif | ||
378 | .endm | ||
379 | |||
375 | .align 5 | 380 | .align 5 |
376 | __dabt_usr: | 381 | __dabt_usr: |
377 | usr_entry | 382 | usr_entry |
383 | kuser_cmpxchg_check | ||
378 | 384 | ||
379 | @ | 385 | @ |
380 | @ Call the processor-specific abort handler: | 386 | @ Call the processor-specific abort handler: |
@@ -404,6 +410,7 @@ __dabt_usr: | |||
404 | .align 5 | 410 | .align 5 |
405 | __irq_usr: | 411 | __irq_usr: |
406 | usr_entry | 412 | usr_entry |
413 | kuser_cmpxchg_check | ||
407 | 414 | ||
408 | #ifdef CONFIG_TRACE_IRQFLAGS | 415 | #ifdef CONFIG_TRACE_IRQFLAGS |
409 | bl trace_hardirqs_off | 416 | bl trace_hardirqs_off |
@@ -446,9 +453,9 @@ __und_usr: | |||
446 | @ | 453 | @ |
447 | @ r0 - instruction | 454 | @ r0 - instruction |
448 | @ | 455 | @ |
449 | 1: ldrt r0, [r4] | ||
450 | adr r9, ret_from_exception | 456 | adr r9, ret_from_exception |
451 | adr lr, __und_usr_unknown | 457 | adr lr, __und_usr_unknown |
458 | 1: ldrt r0, [r4] | ||
452 | @ | 459 | @ |
453 | @ fallthrough to call_fpe | 460 | @ fallthrough to call_fpe |
454 | @ | 461 | @ |
@@ -669,7 +676,7 @@ __kuser_helper_start: | |||
669 | * | 676 | * |
670 | * Clobbered: | 677 | * Clobbered: |
671 | * | 678 | * |
672 | * the Z flag might be lost | 679 | * none |
673 | * | 680 | * |
674 | * Definition and user space usage example: | 681 | * Definition and user space usage example: |
675 | * | 682 | * |
@@ -730,9 +737,6 @@ __kuser_memory_barrier: @ 0xffff0fa0 | |||
730 | * | 737 | * |
731 | * - This routine already includes memory barriers as needed. | 738 | * - This routine already includes memory barriers as needed. |
732 | * | 739 | * |
733 | * - A failure might be transient, i.e. it is possible, although unlikely, | ||
734 | * that "failure" be returned even if *ptr == oldval. | ||
735 | * | ||
736 | * For example, a user space atomic_add implementation could look like this: | 740 | * For example, a user space atomic_add implementation could look like this: |
737 | * | 741 | * |
738 | * #define atomic_add(ptr, val) \ | 742 | * #define atomic_add(ptr, val) \ |
@@ -769,46 +773,62 @@ __kuser_cmpxchg: @ 0xffff0fc0 | |||
769 | 773 | ||
770 | #elif __LINUX_ARM_ARCH__ < 6 | 774 | #elif __LINUX_ARM_ARCH__ < 6 |
771 | 775 | ||
776 | #ifdef CONFIG_MMU | ||
777 | |||
772 | /* | 778 | /* |
773 | * Theory of operation: | 779 | * The only thing that can break atomicity in this cmpxchg |
774 | * | 780 | * implementation is either an IRQ or a data abort exception |
775 | * We set the Z flag before loading oldval. If ever an exception | 781 | * causing another process/thread to be scheduled in the middle |
776 | * occurs we can not be sure the loaded value will still be the same | 782 | * of the critical sequence. To prevent this, code is added to |
777 | * when the exception returns, therefore the user exception handler | 783 | * the IRQ and data abort exception handlers to set the pc back |
778 | * will clear the Z flag whenever the interrupted user code was | 784 | * to the beginning of the critical section if it is found to be |
779 | * actually from the kernel address space (see the usr_entry macro). | 785 | * within that critical section (see kuser_cmpxchg_fixup). |
780 | * | ||
781 | * The post-increment on the str is used to prevent a race with an | ||
782 | * exception happening just after the str instruction which would | ||
783 | * clear the Z flag although the exchange was done. | ||
784 | */ | 786 | */ |
785 | #ifdef CONFIG_MMU | 787 | 1: ldr r3, [r2] @ load current val |
786 | teq ip, ip @ set Z flag | 788 | subs r3, r3, r0 @ compare with oldval |
787 | ldr ip, [r2] @ load current val | 789 | 2: streq r1, [r2] @ store newval if eq |
788 | add r3, r2, #1 @ prepare store ptr | 790 | rsbs r0, r3, #0 @ set return val and C flag |
789 | teqeq ip, r0 @ compare with oldval if still allowed | 791 | usr_ret lr |
790 | streq r1, [r3, #-1]! @ store newval if still allowed | 792 | |
791 | subs r0, r2, r3 @ if r2 == r3 the str occured | 793 | .text |
794 | kuser_cmpxchg_fixup: | ||
795 | @ Called from kuser_cmpxchg_check macro. | ||
796 | @ r2 = address of interrupted insn (must be preserved). | ||
797 | @ sp = saved regs. r7 and r8 are clobbered. | ||
798 | @ 1b = first critical insn, 2b = last critical insn. | ||
799 | @ If r2 >= 1b and r2 <= 2b then saved pc_usr is set to 1b. | ||
800 | mov r7, #0xffff0fff | ||
801 | sub r7, r7, #(0xffff0fff - (0xffff0fc0 + (1b - __kuser_cmpxchg))) | ||
802 | subs r8, r2, r7 | ||
803 | rsbcss r8, r8, #(2b - 1b) | ||
804 | strcs r7, [sp, #S_PC] | ||
805 | mov pc, lr | ||
806 | .previous | ||
807 | |||
792 | #else | 808 | #else |
793 | #warning "NPTL on non MMU needs fixing" | 809 | #warning "NPTL on non MMU needs fixing" |
794 | mov r0, #-1 | 810 | mov r0, #-1 |
795 | adds r0, r0, #0 | 811 | adds r0, r0, #0 |
796 | #endif | ||
797 | usr_ret lr | 812 | usr_ret lr |
813 | #endif | ||
798 | 814 | ||
799 | #else | 815 | #else |
800 | 816 | ||
801 | #ifdef CONFIG_SMP | 817 | #ifdef CONFIG_SMP |
802 | mcr p15, 0, r0, c7, c10, 5 @ dmb | 818 | mcr p15, 0, r0, c7, c10, 5 @ dmb |
803 | #endif | 819 | #endif |
804 | ldrex r3, [r2] | 820 | 1: ldrex r3, [r2] |
805 | subs r3, r3, r0 | 821 | subs r3, r3, r0 |
806 | strexeq r3, r1, [r2] | 822 | strexeq r3, r1, [r2] |
823 | teqeq r3, #1 | ||
824 | beq 1b | ||
807 | rsbs r0, r3, #0 | 825 | rsbs r0, r3, #0 |
826 | /* beware -- each __kuser slot must be 8 instructions max */ | ||
808 | #ifdef CONFIG_SMP | 827 | #ifdef CONFIG_SMP |
809 | mcr p15, 0, r0, c7, c10, 5 @ dmb | 828 | b __kuser_memory_barrier |
810 | #endif | 829 | #else |
811 | usr_ret lr | 830 | usr_ret lr |
831 | #endif | ||
812 | 832 | ||
813 | #endif | 833 | #endif |
814 | 834 | ||
@@ -829,7 +849,7 @@ __kuser_cmpxchg: @ 0xffff0fc0 | |||
829 | * | 849 | * |
830 | * Clobbered: | 850 | * Clobbered: |
831 | * | 851 | * |
832 | * the Z flag might be lost | 852 | * none |
833 | * | 853 | * |
834 | * Definition and user space usage example: | 854 | * Definition and user space usage example: |
835 | * | 855 | * |
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 4764bd9ccee8..c34db4e868fa 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c | |||
@@ -327,7 +327,7 @@ asmlinkage void __exception do_undefinstr(struct pt_regs *regs) | |||
327 | if ((instr & hook->instr_mask) == hook->instr_val && | 327 | if ((instr & hook->instr_mask) == hook->instr_val && |
328 | (regs->ARM_cpsr & hook->cpsr_mask) == hook->cpsr_val) { | 328 | (regs->ARM_cpsr & hook->cpsr_mask) == hook->cpsr_val) { |
329 | if (hook->fn(regs, instr) == 0) { | 329 | if (hook->fn(regs, instr) == 0) { |
330 | spin_unlock_irq(&undef_lock); | 330 | spin_unlock_irqrestore(&undef_lock, flags); |
331 | return; | 331 | return; |
332 | } | 332 | } |
333 | } | 333 | } |
@@ -509,7 +509,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs) | |||
509 | * existence. Don't ever use this from user code. | 509 | * existence. Don't ever use this from user code. |
510 | */ | 510 | */ |
511 | case 0xfff0: | 511 | case 0xfff0: |
512 | { | 512 | for (;;) { |
513 | extern void do_DataAbort(unsigned long addr, unsigned int fsr, | 513 | extern void do_DataAbort(unsigned long addr, unsigned int fsr, |
514 | struct pt_regs *regs); | 514 | struct pt_regs *regs); |
515 | unsigned long val; | 515 | unsigned long val; |
@@ -545,7 +545,6 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs) | |||
545 | up_read(&mm->mmap_sem); | 545 | up_read(&mm->mmap_sem); |
546 | /* simulate a write access fault */ | 546 | /* simulate a write access fault */ |
547 | do_DataAbort(addr, 15 + (1 << 11), regs); | 547 | do_DataAbort(addr, 15 + (1 << 11), regs); |
548 | return -1; | ||
549 | } | 548 | } |
550 | #endif | 549 | #endif |
551 | 550 | ||
diff --git a/arch/arm/mach-at91/at91rm9200_devices.c b/arch/arm/mach-at91/at91rm9200_devices.c index 0417c165d50d..9296833f91cc 100644 --- a/arch/arm/mach-at91/at91rm9200_devices.c +++ b/arch/arm/mach-at91/at91rm9200_devices.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <asm/mach/map.h> | 14 | #include <asm/mach/map.h> |
15 | 15 | ||
16 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
17 | #include <linux/i2c-gpio.h> | ||
17 | 18 | ||
18 | #include <asm/arch/board.h> | 19 | #include <asm/arch/board.h> |
19 | #include <asm/arch/gpio.h> | 20 | #include <asm/arch/gpio.h> |
@@ -435,7 +436,40 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {} | |||
435 | * TWI (i2c) | 436 | * TWI (i2c) |
436 | * -------------------------------------------------------------------- */ | 437 | * -------------------------------------------------------------------- */ |
437 | 438 | ||
438 | #if defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE) | 439 | /* |
440 | * Prefer the GPIO code since the TWI controller isn't robust | ||
441 | * (gets overruns and underruns under load) and can only issue | ||
442 | * repeated STARTs in one scenario (the driver doesn't yet handle them). | ||
443 | */ | ||
444 | #if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) | ||
445 | |||
446 | static struct i2c_gpio_platform_data pdata = { | ||
447 | .sda_pin = AT91_PIN_PA25, | ||
448 | .sda_is_open_drain = 1, | ||
449 | .scl_pin = AT91_PIN_PA26, | ||
450 | .scl_is_open_drain = 1, | ||
451 | .udelay = 2, /* ~100 kHz */ | ||
452 | }; | ||
453 | |||
454 | static struct platform_device at91rm9200_twi_device = { | ||
455 | .name = "i2c-gpio", | ||
456 | .id = -1, | ||
457 | .dev.platform_data = &pdata, | ||
458 | }; | ||
459 | |||
460 | void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) | ||
461 | { | ||
462 | at91_set_GPIO_periph(AT91_PIN_PA25, 1); /* TWD (SDA) */ | ||
463 | at91_set_multi_drive(AT91_PIN_PA25, 1); | ||
464 | |||
465 | at91_set_GPIO_periph(AT91_PIN_PA26, 1); /* TWCK (SCL) */ | ||
466 | at91_set_multi_drive(AT91_PIN_PA26, 1); | ||
467 | |||
468 | i2c_register_board_info(0, devices, nr_devices); | ||
469 | platform_device_register(&at91rm9200_twi_device); | ||
470 | } | ||
471 | |||
472 | #elif defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE) | ||
439 | 473 | ||
440 | static struct resource twi_resources[] = { | 474 | static struct resource twi_resources[] = { |
441 | [0] = { | 475 | [0] = { |
@@ -457,7 +491,7 @@ static struct platform_device at91rm9200_twi_device = { | |||
457 | .num_resources = ARRAY_SIZE(twi_resources), | 491 | .num_resources = ARRAY_SIZE(twi_resources), |
458 | }; | 492 | }; |
459 | 493 | ||
460 | void __init at91_add_device_i2c(void) | 494 | void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) |
461 | { | 495 | { |
462 | /* pins used for TWI interface */ | 496 | /* pins used for TWI interface */ |
463 | at91_set_A_periph(AT91_PIN_PA25, 0); /* TWD */ | 497 | at91_set_A_periph(AT91_PIN_PA25, 0); /* TWD */ |
@@ -466,10 +500,11 @@ void __init at91_add_device_i2c(void) | |||
466 | at91_set_A_periph(AT91_PIN_PA26, 0); /* TWCK */ | 500 | at91_set_A_periph(AT91_PIN_PA26, 0); /* TWCK */ |
467 | at91_set_multi_drive(AT91_PIN_PA26, 1); | 501 | at91_set_multi_drive(AT91_PIN_PA26, 1); |
468 | 502 | ||
503 | i2c_register_board_info(0, devices, nr_devices); | ||
469 | platform_device_register(&at91rm9200_twi_device); | 504 | platform_device_register(&at91rm9200_twi_device); |
470 | } | 505 | } |
471 | #else | 506 | #else |
472 | void __init at91_add_device_i2c(void) {} | 507 | void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {} |
473 | #endif | 508 | #endif |
474 | 509 | ||
475 | 510 | ||
diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c index ffd3154c1e54..3091bf47d8c9 100644 --- a/arch/arm/mach-at91/at91sam9260_devices.c +++ b/arch/arm/mach-at91/at91sam9260_devices.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <asm/mach/map.h> | 13 | #include <asm/mach/map.h> |
14 | 14 | ||
15 | #include <linux/platform_device.h> | 15 | #include <linux/platform_device.h> |
16 | #include <linux/i2c-gpio.h> | ||
16 | 17 | ||
17 | #include <asm/arch/board.h> | 18 | #include <asm/arch/board.h> |
18 | #include <asm/arch/gpio.h> | 19 | #include <asm/arch/gpio.h> |
@@ -352,7 +353,41 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {} | |||
352 | * TWI (i2c) | 353 | * TWI (i2c) |
353 | * -------------------------------------------------------------------- */ | 354 | * -------------------------------------------------------------------- */ |
354 | 355 | ||
355 | #if defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE) | 356 | /* |
357 | * Prefer the GPIO code since the TWI controller isn't robust | ||
358 | * (gets overruns and underruns under load) and can only issue | ||
359 | * repeated STARTs in one scenario (the driver doesn't yet handle them). | ||
360 | */ | ||
361 | |||
362 | #if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) | ||
363 | |||
364 | static struct i2c_gpio_platform_data pdata = { | ||
365 | .sda_pin = AT91_PIN_PA23, | ||
366 | .sda_is_open_drain = 1, | ||
367 | .scl_pin = AT91_PIN_PA24, | ||
368 | .scl_is_open_drain = 1, | ||
369 | .udelay = 2, /* ~100 kHz */ | ||
370 | }; | ||
371 | |||
372 | static struct platform_device at91sam9260_twi_device = { | ||
373 | .name = "i2c-gpio", | ||
374 | .id = -1, | ||
375 | .dev.platform_data = &pdata, | ||
376 | }; | ||
377 | |||
378 | void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) | ||
379 | { | ||
380 | at91_set_GPIO_periph(AT91_PIN_PA23, 1); /* TWD (SDA) */ | ||
381 | at91_set_multi_drive(AT91_PIN_PA23, 1); | ||
382 | |||
383 | at91_set_GPIO_periph(AT91_PIN_PA24, 1); /* TWCK (SCL) */ | ||
384 | at91_set_multi_drive(AT91_PIN_PA24, 1); | ||
385 | |||
386 | i2c_register_board_info(0, devices, nr_devices); | ||
387 | platform_device_register(&at91sam9260_twi_device); | ||
388 | } | ||
389 | |||
390 | #elif defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE) | ||
356 | 391 | ||
357 | static struct resource twi_resources[] = { | 392 | static struct resource twi_resources[] = { |
358 | [0] = { | 393 | [0] = { |
@@ -374,7 +409,7 @@ static struct platform_device at91sam9260_twi_device = { | |||
374 | .num_resources = ARRAY_SIZE(twi_resources), | 409 | .num_resources = ARRAY_SIZE(twi_resources), |
375 | }; | 410 | }; |
376 | 411 | ||
377 | void __init at91_add_device_i2c(void) | 412 | void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) |
378 | { | 413 | { |
379 | /* pins used for TWI interface */ | 414 | /* pins used for TWI interface */ |
380 | at91_set_A_periph(AT91_PIN_PA23, 0); /* TWD */ | 415 | at91_set_A_periph(AT91_PIN_PA23, 0); /* TWD */ |
@@ -383,10 +418,11 @@ void __init at91_add_device_i2c(void) | |||
383 | at91_set_A_periph(AT91_PIN_PA24, 0); /* TWCK */ | 418 | at91_set_A_periph(AT91_PIN_PA24, 0); /* TWCK */ |
384 | at91_set_multi_drive(AT91_PIN_PA24, 1); | 419 | at91_set_multi_drive(AT91_PIN_PA24, 1); |
385 | 420 | ||
421 | i2c_register_board_info(0, devices, nr_devices); | ||
386 | platform_device_register(&at91sam9260_twi_device); | 422 | platform_device_register(&at91sam9260_twi_device); |
387 | } | 423 | } |
388 | #else | 424 | #else |
389 | void __init at91_add_device_i2c(void) {} | 425 | void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {} |
390 | #endif | 426 | #endif |
391 | 427 | ||
392 | 428 | ||
diff --git a/arch/arm/mach-at91/at91sam9261_devices.c b/arch/arm/mach-at91/at91sam9261_devices.c index 3576595b4941..64979a9023c2 100644 --- a/arch/arm/mach-at91/at91sam9261_devices.c +++ b/arch/arm/mach-at91/at91sam9261_devices.c | |||
@@ -14,7 +14,9 @@ | |||
14 | #include <asm/mach/map.h> | 14 | #include <asm/mach/map.h> |
15 | 15 | ||
16 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
17 | #include <linux/i2c-gpio.h> | ||
17 | 18 | ||
19 | #include <linux/fb.h> | ||
18 | #include <video/atmel_lcdc.h> | 20 | #include <video/atmel_lcdc.h> |
19 | 21 | ||
20 | #include <asm/arch/board.h> | 22 | #include <asm/arch/board.h> |
@@ -275,7 +277,40 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {} | |||
275 | * TWI (i2c) | 277 | * TWI (i2c) |
276 | * -------------------------------------------------------------------- */ | 278 | * -------------------------------------------------------------------- */ |
277 | 279 | ||
278 | #if defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE) | 280 | /* |
281 | * Prefer the GPIO code since the TWI controller isn't robust | ||
282 | * (gets overruns and underruns under load) and can only issue | ||
283 | * repeated STARTs in one scenario (the driver doesn't yet handle them). | ||
284 | */ | ||
285 | #if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) | ||
286 | |||
287 | static struct i2c_gpio_platform_data pdata = { | ||
288 | .sda_pin = AT91_PIN_PA7, | ||
289 | .sda_is_open_drain = 1, | ||
290 | .scl_pin = AT91_PIN_PA8, | ||
291 | .scl_is_open_drain = 1, | ||
292 | .udelay = 2, /* ~100 kHz */ | ||
293 | }; | ||
294 | |||
295 | static struct platform_device at91sam9261_twi_device = { | ||
296 | .name = "i2c-gpio", | ||
297 | .id = -1, | ||
298 | .dev.platform_data = &pdata, | ||
299 | }; | ||
300 | |||
301 | void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) | ||
302 | { | ||
303 | at91_set_GPIO_periph(AT91_PIN_PA7, 1); /* TWD (SDA) */ | ||
304 | at91_set_multi_drive(AT91_PIN_PA7, 1); | ||
305 | |||
306 | at91_set_GPIO_periph(AT91_PIN_PA8, 1); /* TWCK (SCL) */ | ||
307 | at91_set_multi_drive(AT91_PIN_PA8, 1); | ||
308 | |||
309 | i2c_register_board_info(0, devices, nr_devices); | ||
310 | platform_device_register(&at91sam9261_twi_device); | ||
311 | } | ||
312 | |||
313 | #elif defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE) | ||
279 | 314 | ||
280 | static struct resource twi_resources[] = { | 315 | static struct resource twi_resources[] = { |
281 | [0] = { | 316 | [0] = { |
@@ -297,7 +332,7 @@ static struct platform_device at91sam9261_twi_device = { | |||
297 | .num_resources = ARRAY_SIZE(twi_resources), | 332 | .num_resources = ARRAY_SIZE(twi_resources), |
298 | }; | 333 | }; |
299 | 334 | ||
300 | void __init at91_add_device_i2c(void) | 335 | void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) |
301 | { | 336 | { |
302 | /* pins used for TWI interface */ | 337 | /* pins used for TWI interface */ |
303 | at91_set_A_periph(AT91_PIN_PA7, 0); /* TWD */ | 338 | at91_set_A_periph(AT91_PIN_PA7, 0); /* TWD */ |
@@ -306,10 +341,11 @@ void __init at91_add_device_i2c(void) | |||
306 | at91_set_A_periph(AT91_PIN_PA8, 0); /* TWCK */ | 341 | at91_set_A_periph(AT91_PIN_PA8, 0); /* TWCK */ |
307 | at91_set_multi_drive(AT91_PIN_PA8, 1); | 342 | at91_set_multi_drive(AT91_PIN_PA8, 1); |
308 | 343 | ||
344 | i2c_register_board_info(0, devices, nr_devices); | ||
309 | platform_device_register(&at91sam9261_twi_device); | 345 | platform_device_register(&at91sam9261_twi_device); |
310 | } | 346 | } |
311 | #else | 347 | #else |
312 | void __init at91_add_device_i2c(void) {} | 348 | void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {} |
313 | #endif | 349 | #endif |
314 | 350 | ||
315 | 351 | ||
diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c index f924bd5017de..ac329a98e959 100644 --- a/arch/arm/mach-at91/at91sam9263_devices.c +++ b/arch/arm/mach-at91/at91sam9263_devices.c | |||
@@ -13,7 +13,9 @@ | |||
13 | #include <asm/mach/map.h> | 13 | #include <asm/mach/map.h> |
14 | 14 | ||
15 | #include <linux/platform_device.h> | 15 | #include <linux/platform_device.h> |
16 | #include <linux/i2c-gpio.h> | ||
16 | 17 | ||
18 | #include <linux/fb.h> | ||
17 | #include <video/atmel_lcdc.h> | 19 | #include <video/atmel_lcdc.h> |
18 | 20 | ||
19 | #include <asm/arch/board.h> | 21 | #include <asm/arch/board.h> |
@@ -421,7 +423,40 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {} | |||
421 | * TWI (i2c) | 423 | * TWI (i2c) |
422 | * -------------------------------------------------------------------- */ | 424 | * -------------------------------------------------------------------- */ |
423 | 425 | ||
424 | #if defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE) | 426 | /* |
427 | * Prefer the GPIO code since the TWI controller isn't robust | ||
428 | * (gets overruns and underruns under load) and can only issue | ||
429 | * repeated STARTs in one scenario (the driver doesn't yet handle them). | ||
430 | */ | ||
431 | #if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) | ||
432 | |||
433 | static struct i2c_gpio_platform_data pdata = { | ||
434 | .sda_pin = AT91_PIN_PB4, | ||
435 | .sda_is_open_drain = 1, | ||
436 | .scl_pin = AT91_PIN_PB5, | ||
437 | .scl_is_open_drain = 1, | ||
438 | .udelay = 2, /* ~100 kHz */ | ||
439 | }; | ||
440 | |||
441 | static struct platform_device at91sam9263_twi_device = { | ||
442 | .name = "i2c-gpio", | ||
443 | .id = -1, | ||
444 | .dev.platform_data = &pdata, | ||
445 | }; | ||
446 | |||
447 | void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) | ||
448 | { | ||
449 | at91_set_GPIO_periph(AT91_PIN_PB4, 1); /* TWD (SDA) */ | ||
450 | at91_set_multi_drive(AT91_PIN_PB4, 1); | ||
451 | |||
452 | at91_set_GPIO_periph(AT91_PIN_PB5, 1); /* TWCK (SCL) */ | ||
453 | at91_set_multi_drive(AT91_PIN_PB5, 1); | ||
454 | |||
455 | i2c_register_board_info(0, devices, nr_devices); | ||
456 | platform_device_register(&at91sam9263_twi_device); | ||
457 | } | ||
458 | |||
459 | #elif defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE) | ||
425 | 460 | ||
426 | static struct resource twi_resources[] = { | 461 | static struct resource twi_resources[] = { |
427 | [0] = { | 462 | [0] = { |
@@ -443,7 +478,7 @@ static struct platform_device at91sam9263_twi_device = { | |||
443 | .num_resources = ARRAY_SIZE(twi_resources), | 478 | .num_resources = ARRAY_SIZE(twi_resources), |
444 | }; | 479 | }; |
445 | 480 | ||
446 | void __init at91_add_device_i2c(void) | 481 | void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) |
447 | { | 482 | { |
448 | /* pins used for TWI interface */ | 483 | /* pins used for TWI interface */ |
449 | at91_set_A_periph(AT91_PIN_PB4, 0); /* TWD */ | 484 | at91_set_A_periph(AT91_PIN_PB4, 0); /* TWD */ |
@@ -452,10 +487,11 @@ void __init at91_add_device_i2c(void) | |||
452 | at91_set_A_periph(AT91_PIN_PB5, 0); /* TWCK */ | 487 | at91_set_A_periph(AT91_PIN_PB5, 0); /* TWCK */ |
453 | at91_set_multi_drive(AT91_PIN_PB5, 1); | 488 | at91_set_multi_drive(AT91_PIN_PB5, 1); |
454 | 489 | ||
490 | i2c_register_board_info(0, devices, nr_devices); | ||
455 | platform_device_register(&at91sam9263_twi_device); | 491 | platform_device_register(&at91sam9263_twi_device); |
456 | } | 492 | } |
457 | #else | 493 | #else |
458 | void __init at91_add_device_i2c(void) {} | 494 | void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {} |
459 | #endif | 495 | #endif |
460 | 496 | ||
461 | 497 | ||
diff --git a/arch/arm/mach-at91/at91sam9rl_devices.c b/arch/arm/mach-at91/at91sam9rl_devices.c index cd7532bcd4e5..2bd60a3dc623 100644 --- a/arch/arm/mach-at91/at91sam9rl_devices.c +++ b/arch/arm/mach-at91/at91sam9rl_devices.c | |||
@@ -10,8 +10,9 @@ | |||
10 | #include <asm/mach/map.h> | 10 | #include <asm/mach/map.h> |
11 | 11 | ||
12 | #include <linux/platform_device.h> | 12 | #include <linux/platform_device.h> |
13 | #include <linux/fb.h> | 13 | #include <linux/i2c-gpio.h> |
14 | 14 | ||
15 | #include <linux/fb.h> | ||
15 | #include <video/atmel_lcdc.h> | 16 | #include <video/atmel_lcdc.h> |
16 | 17 | ||
17 | #include <asm/arch/board.h> | 18 | #include <asm/arch/board.h> |
@@ -169,7 +170,40 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {} | |||
169 | * TWI (i2c) | 170 | * TWI (i2c) |
170 | * -------------------------------------------------------------------- */ | 171 | * -------------------------------------------------------------------- */ |
171 | 172 | ||
172 | #if defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE) | 173 | /* |
174 | * Prefer the GPIO code since the TWI controller isn't robust | ||
175 | * (gets overruns and underruns under load) and can only issue | ||
176 | * repeated STARTs in one scenario (the driver doesn't yet handle them). | ||
177 | */ | ||
178 | #if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) | ||
179 | |||
180 | static struct i2c_gpio_platform_data pdata = { | ||
181 | .sda_pin = AT91_PIN_PA23, | ||
182 | .sda_is_open_drain = 1, | ||
183 | .scl_pin = AT91_PIN_PA24, | ||
184 | .scl_is_open_drain = 1, | ||
185 | .udelay = 2, /* ~100 kHz */ | ||
186 | }; | ||
187 | |||
188 | static struct platform_device at91sam9rl_twi_device = { | ||
189 | .name = "i2c-gpio", | ||
190 | .id = -1, | ||
191 | .dev.platform_data = &pdata, | ||
192 | }; | ||
193 | |||
194 | void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) | ||
195 | { | ||
196 | at91_set_GPIO_periph(AT91_PIN_PA23, 1); /* TWD (SDA) */ | ||
197 | at91_set_multi_drive(AT91_PIN_PA23, 1); | ||
198 | |||
199 | at91_set_GPIO_periph(AT91_PIN_PA24, 1); /* TWCK (SCL) */ | ||
200 | at91_set_multi_drive(AT91_PIN_PA24, 1); | ||
201 | |||
202 | i2c_register_board_info(0, devices, nr_devices); | ||
203 | platform_device_register(&at91sam9rl_twi_device); | ||
204 | } | ||
205 | |||
206 | #elif defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE) | ||
173 | 207 | ||
174 | static struct resource twi_resources[] = { | 208 | static struct resource twi_resources[] = { |
175 | [0] = { | 209 | [0] = { |
@@ -191,7 +225,7 @@ static struct platform_device at91sam9rl_twi_device = { | |||
191 | .num_resources = ARRAY_SIZE(twi_resources), | 225 | .num_resources = ARRAY_SIZE(twi_resources), |
192 | }; | 226 | }; |
193 | 227 | ||
194 | void __init at91_add_device_i2c(void) | 228 | void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) |
195 | { | 229 | { |
196 | /* pins used for TWI interface */ | 230 | /* pins used for TWI interface */ |
197 | at91_set_A_periph(AT91_PIN_PA23, 0); /* TWD */ | 231 | at91_set_A_periph(AT91_PIN_PA23, 0); /* TWD */ |
@@ -200,10 +234,11 @@ void __init at91_add_device_i2c(void) | |||
200 | at91_set_A_periph(AT91_PIN_PA24, 0); /* TWCK */ | 234 | at91_set_A_periph(AT91_PIN_PA24, 0); /* TWCK */ |
201 | at91_set_multi_drive(AT91_PIN_PA24, 1); | 235 | at91_set_multi_drive(AT91_PIN_PA24, 1); |
202 | 236 | ||
237 | i2c_register_board_info(0, devices, nr_devices); | ||
203 | platform_device_register(&at91sam9rl_twi_device); | 238 | platform_device_register(&at91sam9rl_twi_device); |
204 | } | 239 | } |
205 | #else | 240 | #else |
206 | void __init at91_add_device_i2c(void) {} | 241 | void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {} |
207 | #endif | 242 | #endif |
208 | 243 | ||
209 | 244 | ||
diff --git a/arch/arm/mach-at91/board-carmeva.c b/arch/arm/mach-at91/board-carmeva.c index 76ec856cd4f9..0f0878294a67 100644 --- a/arch/arm/mach-at91/board-carmeva.c +++ b/arch/arm/mach-at91/board-carmeva.c | |||
@@ -128,7 +128,7 @@ static void __init carmeva_board_init(void) | |||
128 | /* USB Device */ | 128 | /* USB Device */ |
129 | at91_add_device_udc(&carmeva_udc_data); | 129 | at91_add_device_udc(&carmeva_udc_data); |
130 | /* I2C */ | 130 | /* I2C */ |
131 | at91_add_device_i2c(); | 131 | at91_add_device_i2c(NULL, 0); |
132 | /* SPI */ | 132 | /* SPI */ |
133 | at91_add_device_spi(carmeva_spi_devices, ARRAY_SIZE(carmeva_spi_devices)); | 133 | at91_add_device_spi(carmeva_spi_devices, ARRAY_SIZE(carmeva_spi_devices)); |
134 | /* Compact Flash */ | 134 | /* Compact Flash */ |
diff --git a/arch/arm/mach-at91/board-csb337.c b/arch/arm/mach-at91/board-csb337.c index dde089922e3b..d0aa20c9383e 100644 --- a/arch/arm/mach-at91/board-csb337.c +++ b/arch/arm/mach-at91/board-csb337.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <linux/mm.h> | 23 | #include <linux/mm.h> |
24 | #include <linux/module.h> | 24 | #include <linux/module.h> |
25 | #include <linux/platform_device.h> | 25 | #include <linux/platform_device.h> |
26 | #include <linux/i2c.h> | ||
27 | #include <linux/spi/spi.h> | 26 | #include <linux/spi/spi.h> |
28 | #include <linux/mtd/physmap.h> | 27 | #include <linux/mtd/physmap.h> |
29 | 28 | ||
@@ -85,12 +84,12 @@ static struct at91_udc_data __initdata csb337_udc_data = { | |||
85 | }; | 84 | }; |
86 | 85 | ||
87 | static struct i2c_board_info __initdata csb337_i2c_devices[] = { | 86 | static struct i2c_board_info __initdata csb337_i2c_devices[] = { |
88 | { I2C_BOARD_INFO("rtc-ds1307", 0x68), | 87 | { |
89 | .type = "ds1307", | 88 | I2C_BOARD_INFO("rtc-ds1307", 0x68), |
89 | .type = "ds1307", | ||
90 | }, | 90 | }, |
91 | }; | 91 | }; |
92 | 92 | ||
93 | |||
94 | static struct at91_cf_data __initdata csb337_cf_data = { | 93 | static struct at91_cf_data __initdata csb337_cf_data = { |
95 | /* | 94 | /* |
96 | * connector P4 on the CSB 337 mates to | 95 | * connector P4 on the CSB 337 mates to |
@@ -168,9 +167,7 @@ static void __init csb337_board_init(void) | |||
168 | /* USB Device */ | 167 | /* USB Device */ |
169 | at91_add_device_udc(&csb337_udc_data); | 168 | at91_add_device_udc(&csb337_udc_data); |
170 | /* I2C */ | 169 | /* I2C */ |
171 | at91_add_device_i2c(); | 170 | at91_add_device_i2c(csb337_i2c_devices, ARRAY_SIZE(csb337_i2c_devices)); |
172 | i2c_register_board_info(0, csb337_i2c_devices, | ||
173 | ARRAY_SIZE(csb337_i2c_devices)); | ||
174 | /* Compact Flash */ | 171 | /* Compact Flash */ |
175 | at91_set_gpio_input(AT91_PIN_PB22, 1); /* IOIS16 */ | 172 | at91_set_gpio_input(AT91_PIN_PB22, 1); /* IOIS16 */ |
176 | at91_add_device_cf(&csb337_cf_data); | 173 | at91_add_device_cf(&csb337_cf_data); |
diff --git a/arch/arm/mach-at91/board-csb637.c b/arch/arm/mach-at91/board-csb637.c index 77f04b935b3a..c5c721d27f42 100644 --- a/arch/arm/mach-at91/board-csb637.c +++ b/arch/arm/mach-at91/board-csb637.c | |||
@@ -129,7 +129,7 @@ static void __init csb637_board_init(void) | |||
129 | /* USB Device */ | 129 | /* USB Device */ |
130 | at91_add_device_udc(&csb637_udc_data); | 130 | at91_add_device_udc(&csb637_udc_data); |
131 | /* I2C */ | 131 | /* I2C */ |
132 | at91_add_device_i2c(); | 132 | at91_add_device_i2c(NULL, 0); |
133 | /* SPI */ | 133 | /* SPI */ |
134 | at91_add_device_spi(NULL, 0); | 134 | at91_add_device_spi(NULL, 0); |
135 | /* NOR flash */ | 135 | /* NOR flash */ |
diff --git a/arch/arm/mach-at91/board-dk.c b/arch/arm/mach-at91/board-dk.c index af497896a96c..40c9e4331706 100644 --- a/arch/arm/mach-at91/board-dk.c +++ b/arch/arm/mach-at91/board-dk.c | |||
@@ -124,6 +124,19 @@ static struct spi_board_info dk_spi_devices[] = { | |||
124 | #endif | 124 | #endif |
125 | }; | 125 | }; |
126 | 126 | ||
127 | static struct i2c_board_info __initdata dk_i2c_devices[] = { | ||
128 | { | ||
129 | I2C_BOARD_INFO("ics1523", 0x26), | ||
130 | }, | ||
131 | { | ||
132 | I2C_BOARD_INFO("x9429", 0x28), | ||
133 | }, | ||
134 | { | ||
135 | I2C_BOARD_INFO("at24c", 0x50), | ||
136 | .type = "24c1024", | ||
137 | } | ||
138 | }; | ||
139 | |||
127 | static struct mtd_partition __initdata dk_nand_partition[] = { | 140 | static struct mtd_partition __initdata dk_nand_partition[] = { |
128 | { | 141 | { |
129 | .name = "NAND Partition 1", | 142 | .name = "NAND Partition 1", |
@@ -185,7 +198,7 @@ static void __init dk_board_init(void) | |||
185 | /* Compact Flash */ | 198 | /* Compact Flash */ |
186 | at91_add_device_cf(&dk_cf_data); | 199 | at91_add_device_cf(&dk_cf_data); |
187 | /* I2C */ | 200 | /* I2C */ |
188 | at91_add_device_i2c(); | 201 | at91_add_device_i2c(dk_i2c_devices, ARRAY_SIZE(dk_i2c_devices)); |
189 | /* SPI */ | 202 | /* SPI */ |
190 | at91_add_device_spi(dk_spi_devices, ARRAY_SIZE(dk_spi_devices)); | 203 | at91_add_device_spi(dk_spi_devices, ARRAY_SIZE(dk_spi_devices)); |
191 | #ifdef CONFIG_MTD_AT91_DATAFLASH_CARD | 204 | #ifdef CONFIG_MTD_AT91_DATAFLASH_CARD |
diff --git a/arch/arm/mach-at91/board-eb9200.c b/arch/arm/mach-at91/board-eb9200.c index 20458b5548f0..b7b79bb9d6c4 100644 --- a/arch/arm/mach-at91/board-eb9200.c +++ b/arch/arm/mach-at91/board-eb9200.c | |||
@@ -91,6 +91,14 @@ static struct at91_mmc_data __initdata eb9200_mmc_data = { | |||
91 | .wire4 = 1, | 91 | .wire4 = 1, |
92 | }; | 92 | }; |
93 | 93 | ||
94 | static struct i2c_board_info __initdata eb9200_i2c_devices[] = { | ||
95 | { | ||
96 | I2C_BOARD_INFO("at24c", 0x50), | ||
97 | .type = "24c512", | ||
98 | }, | ||
99 | }; | ||
100 | |||
101 | |||
94 | static void __init eb9200_board_init(void) | 102 | static void __init eb9200_board_init(void) |
95 | { | 103 | { |
96 | /* Serial */ | 104 | /* Serial */ |
@@ -102,7 +110,7 @@ static void __init eb9200_board_init(void) | |||
102 | /* USB Device */ | 110 | /* USB Device */ |
103 | at91_add_device_udc(&eb9200_udc_data); | 111 | at91_add_device_udc(&eb9200_udc_data); |
104 | /* I2C */ | 112 | /* I2C */ |
105 | at91_add_device_i2c(); | 113 | at91_add_device_i2c(eb9200_i2c_devices, ARRAY_SIZE(eb9200_i2c_devices)); |
106 | /* Compact Flash */ | 114 | /* Compact Flash */ |
107 | at91_add_device_cf(&eb9200_cf_data); | 115 | at91_add_device_cf(&eb9200_cf_data); |
108 | /* SPI */ | 116 | /* SPI */ |
diff --git a/arch/arm/mach-at91/board-ek.c b/arch/arm/mach-at91/board-ek.c index 322fdd75a1e4..d05b1b2be9fb 100644 --- a/arch/arm/mach-at91/board-ek.c +++ b/arch/arm/mach-at91/board-ek.c | |||
@@ -145,7 +145,7 @@ static void __init ek_board_init(void) | |||
145 | at91_add_device_udc(&ek_udc_data); | 145 | at91_add_device_udc(&ek_udc_data); |
146 | at91_set_multi_drive(ek_udc_data.pullup_pin, 1); /* pullup_pin is connected to reset */ | 146 | at91_set_multi_drive(ek_udc_data.pullup_pin, 1); /* pullup_pin is connected to reset */ |
147 | /* I2C */ | 147 | /* I2C */ |
148 | at91_add_device_i2c(); | 148 | at91_add_device_i2c(ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices)); |
149 | /* SPI */ | 149 | /* SPI */ |
150 | at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices)); | 150 | at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices)); |
151 | #ifdef CONFIG_MTD_AT91_DATAFLASH_CARD | 151 | #ifdef CONFIG_MTD_AT91_DATAFLASH_CARD |
diff --git a/arch/arm/mach-at91/board-kafa.c b/arch/arm/mach-at91/board-kafa.c index c77d84ce9cae..cf1b7b2f76fb 100644 --- a/arch/arm/mach-at91/board-kafa.c +++ b/arch/arm/mach-at91/board-kafa.c | |||
@@ -92,7 +92,7 @@ static void __init kafa_board_init(void) | |||
92 | /* USB Device */ | 92 | /* USB Device */ |
93 | at91_add_device_udc(&kafa_udc_data); | 93 | at91_add_device_udc(&kafa_udc_data); |
94 | /* I2C */ | 94 | /* I2C */ |
95 | at91_add_device_i2c(); | 95 | at91_add_device_i2c(NULL, 0); |
96 | /* SPI */ | 96 | /* SPI */ |
97 | at91_add_device_spi(NULL, 0); | 97 | at91_add_device_spi(NULL, 0); |
98 | } | 98 | } |
diff --git a/arch/arm/mach-at91/board-kb9202.c b/arch/arm/mach-at91/board-kb9202.c index 7d9b1a278fd6..4b39b9cda75b 100644 --- a/arch/arm/mach-at91/board-kb9202.c +++ b/arch/arm/mach-at91/board-kb9202.c | |||
@@ -124,7 +124,7 @@ static void __init kb9202_board_init(void) | |||
124 | /* MMC */ | 124 | /* MMC */ |
125 | at91_add_device_mmc(0, &kb9202_mmc_data); | 125 | at91_add_device_mmc(0, &kb9202_mmc_data); |
126 | /* I2C */ | 126 | /* I2C */ |
127 | at91_add_device_i2c(); | 127 | at91_add_device_i2c(NULL, 0); |
128 | /* SPI */ | 128 | /* SPI */ |
129 | at91_add_device_spi(NULL, 0); | 129 | at91_add_device_spi(NULL, 0); |
130 | /* NAND */ | 130 | /* NAND */ |
diff --git a/arch/arm/mach-at91/board-picotux200.c b/arch/arm/mach-at91/board-picotux200.c index 49cfe7ab4a85..6acb55c09ae5 100644 --- a/arch/arm/mach-at91/board-picotux200.c +++ b/arch/arm/mach-at91/board-picotux200.c | |||
@@ -139,7 +139,7 @@ static void __init picotux200_board_init(void) | |||
139 | // at91_add_device_udc(&picotux200_udc_data); | 139 | // at91_add_device_udc(&picotux200_udc_data); |
140 | // at91_set_multi_drive(picotux200_udc_data.pullup_pin, 1); /* pullup_pin is connected to reset */ | 140 | // at91_set_multi_drive(picotux200_udc_data.pullup_pin, 1); /* pullup_pin is connected to reset */ |
141 | /* I2C */ | 141 | /* I2C */ |
142 | at91_add_device_i2c(); | 142 | at91_add_device_i2c(NULL, 0); |
143 | /* SPI */ | 143 | /* SPI */ |
144 | // at91_add_device_spi(picotux200_spi_devices, ARRAY_SIZE(picotux200_spi_devices)); | 144 | // at91_add_device_spi(picotux200_spi_devices, ARRAY_SIZE(picotux200_spi_devices)); |
145 | #ifdef CONFIG_MTD_AT91_DATAFLASH_CARD | 145 | #ifdef CONFIG_MTD_AT91_DATAFLASH_CARD |
diff --git a/arch/arm/mach-at91/board-sam9260ek.c b/arch/arm/mach-at91/board-sam9260ek.c index 65fa532bb4ac..b343a6c28120 100644 --- a/arch/arm/mach-at91/board-sam9260ek.c +++ b/arch/arm/mach-at91/board-sam9260ek.c | |||
@@ -189,7 +189,7 @@ static void __init ek_board_init(void) | |||
189 | /* MMC */ | 189 | /* MMC */ |
190 | at91_add_device_mmc(0, &ek_mmc_data); | 190 | at91_add_device_mmc(0, &ek_mmc_data); |
191 | /* I2C */ | 191 | /* I2C */ |
192 | at91_add_device_i2c(); | 192 | at91_add_device_i2c(NULL, 0); |
193 | } | 193 | } |
194 | 194 | ||
195 | MACHINE_START(AT91SAM9260EK, "Atmel AT91SAM9260-EK") | 195 | MACHINE_START(AT91SAM9260EK, "Atmel AT91SAM9260-EK") |
diff --git a/arch/arm/mach-at91/board-sam9261ek.c b/arch/arm/mach-at91/board-sam9261ek.c index 42e172cb0f49..550ae59a3aca 100644 --- a/arch/arm/mach-at91/board-sam9261ek.c +++ b/arch/arm/mach-at91/board-sam9261ek.c | |||
@@ -382,14 +382,14 @@ static struct platform_device ek_button_device = { | |||
382 | 382 | ||
383 | static void __init ek_add_device_buttons(void) | 383 | static void __init ek_add_device_buttons(void) |
384 | { | 384 | { |
385 | at91_set_gpio_input(AT91_PIN_PB27, 0); /* btn0 */ | 385 | at91_set_gpio_input(AT91_PIN_PA27, 0); /* btn0 */ |
386 | at91_set_deglitch(AT91_PIN_PB27, 1); | 386 | at91_set_deglitch(AT91_PIN_PA27, 1); |
387 | at91_set_gpio_input(AT91_PIN_PB26, 0); /* btn1 */ | 387 | at91_set_gpio_input(AT91_PIN_PA26, 0); /* btn1 */ |
388 | at91_set_deglitch(AT91_PIN_PB26, 1); | 388 | at91_set_deglitch(AT91_PIN_PA26, 1); |
389 | at91_set_gpio_input(AT91_PIN_PB25, 0); /* btn2 */ | 389 | at91_set_gpio_input(AT91_PIN_PA25, 0); /* btn2 */ |
390 | at91_set_deglitch(AT91_PIN_PB25, 1); | 390 | at91_set_deglitch(AT91_PIN_PA25, 1); |
391 | at91_set_gpio_input(AT91_PIN_PB24, 0); /* btn3 */ | 391 | at91_set_gpio_input(AT91_PIN_PA24, 0); /* btn3 */ |
392 | at91_set_deglitch(AT91_PIN_PB24, 1); | 392 | at91_set_deglitch(AT91_PIN_PA24, 1); |
393 | 393 | ||
394 | platform_device_register(&ek_button_device); | 394 | platform_device_register(&ek_button_device); |
395 | } | 395 | } |
@@ -406,7 +406,7 @@ static void __init ek_board_init(void) | |||
406 | /* USB Device */ | 406 | /* USB Device */ |
407 | at91_add_device_udc(&ek_udc_data); | 407 | at91_add_device_udc(&ek_udc_data); |
408 | /* I2C */ | 408 | /* I2C */ |
409 | at91_add_device_i2c(); | 409 | at91_add_device_i2c(NULL, 0); |
410 | /* NAND */ | 410 | /* NAND */ |
411 | at91_add_device_nand(&ek_nand_data); | 411 | at91_add_device_nand(&ek_nand_data); |
412 | /* DM9000 ethernet */ | 412 | /* DM9000 ethernet */ |
diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c index 2a1cc73390b7..ab9dcc075454 100644 --- a/arch/arm/mach-at91/board-sam9263ek.c +++ b/arch/arm/mach-at91/board-sam9263ek.c | |||
@@ -291,7 +291,7 @@ static void __init ek_board_init(void) | |||
291 | /* NAND */ | 291 | /* NAND */ |
292 | at91_add_device_nand(&ek_nand_data); | 292 | at91_add_device_nand(&ek_nand_data); |
293 | /* I2C */ | 293 | /* I2C */ |
294 | at91_add_device_i2c(); | 294 | at91_add_device_i2c(NULL, 0); |
295 | /* LCD Controller */ | 295 | /* LCD Controller */ |
296 | at91_add_device_lcdc(&ek_lcdc_data); | 296 | at91_add_device_lcdc(&ek_lcdc_data); |
297 | /* AC97 */ | 297 | /* AC97 */ |
diff --git a/arch/arm/mach-at91/board-sam9rlek.c b/arch/arm/mach-at91/board-sam9rlek.c index 9b61320f295a..bc0546d7245f 100644 --- a/arch/arm/mach-at91/board-sam9rlek.c +++ b/arch/arm/mach-at91/board-sam9rlek.c | |||
@@ -181,7 +181,7 @@ static void __init ek_board_init(void) | |||
181 | /* Serial */ | 181 | /* Serial */ |
182 | at91_add_device_serial(); | 182 | at91_add_device_serial(); |
183 | /* I2C */ | 183 | /* I2C */ |
184 | at91_add_device_i2c(); | 184 | at91_add_device_i2c(NULL, 0); |
185 | /* NAND */ | 185 | /* NAND */ |
186 | at91_add_device_nand(&ek_nand_data); | 186 | at91_add_device_nand(&ek_nand_data); |
187 | /* SPI */ | 187 | /* SPI */ |
diff --git a/arch/arm/mach-at91/clock.c b/arch/arm/mach-at91/clock.c index 848efb2a4ebf..57c3b647ce83 100644 --- a/arch/arm/mach-at91/clock.c +++ b/arch/arm/mach-at91/clock.c | |||
@@ -351,7 +351,7 @@ static void init_programmable_clock(struct clk *clk) | |||
351 | pckr = at91_sys_read(AT91_PMC_PCKR(clk->id)); | 351 | pckr = at91_sys_read(AT91_PMC_PCKR(clk->id)); |
352 | parent = at91_css_to_clk(pckr & AT91_PMC_CSS); | 352 | parent = at91_css_to_clk(pckr & AT91_PMC_CSS); |
353 | clk->parent = parent; | 353 | clk->parent = parent; |
354 | clk->rate_hz = parent->rate_hz / (1 << ((pckr >> 2) & 3)); | 354 | clk->rate_hz = parent->rate_hz / (1 << ((pckr & AT91_PMC_PRES) >> 2)); |
355 | } | 355 | } |
356 | 356 | ||
357 | #endif /* CONFIG_AT91_PROGRAMMABLE_CLOCKS */ | 357 | #endif /* CONFIG_AT91_PROGRAMMABLE_CLOCKS */ |
@@ -587,8 +587,11 @@ int __init at91_clock_init(unsigned long main_clock) | |||
587 | mckr = at91_sys_read(AT91_PMC_MCKR); | 587 | mckr = at91_sys_read(AT91_PMC_MCKR); |
588 | mck.parent = at91_css_to_clk(mckr & AT91_PMC_CSS); | 588 | mck.parent = at91_css_to_clk(mckr & AT91_PMC_CSS); |
589 | freq = mck.parent->rate_hz; | 589 | freq = mck.parent->rate_hz; |
590 | freq /= (1 << ((mckr >> 2) & 3)); /* prescale */ | 590 | freq /= (1 << ((mckr & AT91_PMC_PRES) >> 2)); /* prescale */ |
591 | mck.rate_hz = freq / (1 + ((mckr >> 8) & 3)); /* mdiv */ | 591 | if (cpu_is_at91rm9200()) |
592 | mck.rate_hz = freq / (1 + ((mckr & AT91_PMC_MDIV) >> 8)); /* mdiv */ | ||
593 | else | ||
594 | mck.rate_hz = freq / (1 << ((mckr & AT91_PMC_MDIV) >> 8)); /* mdiv */ | ||
592 | 595 | ||
593 | /* Register the PMC's standard clocks */ | 596 | /* Register the PMC's standard clocks */ |
594 | for (i = 0; i < ARRAY_SIZE(standard_pmc_clocks); i++) | 597 | for (i = 0; i < ARRAY_SIZE(standard_pmc_clocks); i++) |
diff --git a/arch/arm/mach-imx/irq.c b/arch/arm/mach-imx/irq.c index 0791b56caecc..a7465db84893 100644 --- a/arch/arm/mach-imx/irq.c +++ b/arch/arm/mach-imx/irq.c | |||
@@ -43,12 +43,46 @@ | |||
43 | * | 43 | * |
44 | */ | 44 | */ |
45 | 45 | ||
46 | #define INTENNUM_OFF 0x8 | 46 | #define INTCNTL_OFF 0x00 |
47 | #define INTDISNUM_OFF 0xC | 47 | #define NIMASK_OFF 0x04 |
48 | #define INTENNUM_OFF 0x08 | ||
49 | #define INTDISNUM_OFF 0x0C | ||
50 | #define INTENABLEH_OFF 0x10 | ||
51 | #define INTENABLEL_OFF 0x14 | ||
52 | #define INTTYPEH_OFF 0x18 | ||
53 | #define INTTYPEL_OFF 0x1C | ||
54 | #define NIPRIORITY_OFF(x) (0x20+4*(7-(x))) | ||
55 | #define NIVECSR_OFF 0x40 | ||
56 | #define FIVECSR_OFF 0x44 | ||
57 | #define INTSRCH_OFF 0x48 | ||
58 | #define INTSRCL_OFF 0x4C | ||
59 | #define INTFRCH_OFF 0x50 | ||
60 | #define INTFRCL_OFF 0x54 | ||
61 | #define NIPNDH_OFF 0x58 | ||
62 | #define NIPNDL_OFF 0x5C | ||
63 | #define FIPNDH_OFF 0x60 | ||
64 | #define FIPNDL_OFF 0x64 | ||
48 | 65 | ||
49 | #define VA_AITC_BASE IO_ADDRESS(IMX_AITC_BASE) | 66 | #define VA_AITC_BASE IO_ADDRESS(IMX_AITC_BASE) |
50 | #define IMX_AITC_INTDISNUM (VA_AITC_BASE + INTDISNUM_OFF) | 67 | #define IMX_AITC_INTCNTL (VA_AITC_BASE + INTCNTL_OFF) |
68 | #define IMX_AITC_NIMASK (VA_AITC_BASE + NIMASK_OFF) | ||
51 | #define IMX_AITC_INTENNUM (VA_AITC_BASE + INTENNUM_OFF) | 69 | #define IMX_AITC_INTENNUM (VA_AITC_BASE + INTENNUM_OFF) |
70 | #define IMX_AITC_INTDISNUM (VA_AITC_BASE + INTDISNUM_OFF) | ||
71 | #define IMX_AITC_INTENABLEH (VA_AITC_BASE + INTENABLEH_OFF) | ||
72 | #define IMX_AITC_INTENABLEL (VA_AITC_BASE + INTENABLEL_OFF) | ||
73 | #define IMX_AITC_INTTYPEH (VA_AITC_BASE + INTTYPEH_OFF) | ||
74 | #define IMX_AITC_INTTYPEL (VA_AITC_BASE + INTTYPEL_OFF) | ||
75 | #define IMX_AITC_NIPRIORITY(x) (VA_AITC_BASE + NIPRIORITY_OFF(x)) | ||
76 | #define IMX_AITC_NIVECSR (VA_AITC_BASE + NIVECSR_OFF) | ||
77 | #define IMX_AITC_FIVECSR (VA_AITC_BASE + FIVECSR_OFF) | ||
78 | #define IMX_AITC_INTSRCH (VA_AITC_BASE + INTSRCH_OFF) | ||
79 | #define IMX_AITC_INTSRCL (VA_AITC_BASE + INTSRCL_OFF) | ||
80 | #define IMX_AITC_INTFRCH (VA_AITC_BASE + INTFRCH_OFF) | ||
81 | #define IMX_AITC_INTFRCL (VA_AITC_BASE + INTFRCL_OFF) | ||
82 | #define IMX_AITC_NIPNDH (VA_AITC_BASE + NIPNDH_OFF) | ||
83 | #define IMX_AITC_NIPNDL (VA_AITC_BASE + NIPNDL_OFF) | ||
84 | #define IMX_AITC_FIPNDH (VA_AITC_BASE + FIPNDH_OFF) | ||
85 | #define IMX_AITC_FIPNDL (VA_AITC_BASE + FIPNDL_OFF) | ||
52 | 86 | ||
53 | #if 0 | 87 | #if 0 |
54 | #define DEBUG_IRQ(fmt...) printk(fmt) | 88 | #define DEBUG_IRQ(fmt...) printk(fmt) |
@@ -222,7 +256,12 @@ imx_init_irq(void) | |||
222 | 256 | ||
223 | DEBUG_IRQ("Initializing imx interrupts\n"); | 257 | DEBUG_IRQ("Initializing imx interrupts\n"); |
224 | 258 | ||
225 | /* Mask all interrupts initially */ | 259 | /* Disable all interrupts initially. */ |
260 | /* Do not rely on the bootloader. */ | ||
261 | __raw_writel(0, IMX_AITC_INTENABLEH); | ||
262 | __raw_writel(0, IMX_AITC_INTENABLEL); | ||
263 | |||
264 | /* Mask all GPIO interrupts as well */ | ||
226 | IMR(0) = 0; | 265 | IMR(0) = 0; |
227 | IMR(1) = 0; | 266 | IMR(1) = 0; |
228 | IMR(2) = 0; | 267 | IMR(2) = 0; |
@@ -245,6 +284,6 @@ imx_init_irq(void) | |||
245 | set_irq_chained_handler(GPIO_INT_PORTC, imx_gpioc_demux_handler); | 284 | set_irq_chained_handler(GPIO_INT_PORTC, imx_gpioc_demux_handler); |
246 | set_irq_chained_handler(GPIO_INT_PORTD, imx_gpiod_demux_handler); | 285 | set_irq_chained_handler(GPIO_INT_PORTD, imx_gpiod_demux_handler); |
247 | 286 | ||
248 | /* Disable all interrupts initially. */ | 287 | /* Release masking of interrupts according to priority */ |
249 | /* In IMX this is done in the bootloader. */ | 288 | __raw_writel(-1, IMX_AITC_NIMASK); |
250 | } | 289 | } |
diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c index d0f2b597db12..8e126e6b74c3 100644 --- a/arch/arm/mach-pxa/pxa27x.c +++ b/arch/arm/mach-pxa/pxa27x.c | |||
@@ -146,7 +146,7 @@ static struct clk pxa27x_clks[] = { | |||
146 | INIT_CKEN("MMCCLK", MMC, 19500000, 0, &pxa_device_mci.dev), | 146 | INIT_CKEN("MMCCLK", MMC, 19500000, 0, &pxa_device_mci.dev), |
147 | INIT_CKEN("FICPCLK", FICP, 48000000, 0, &pxa_device_ficp.dev), | 147 | INIT_CKEN("FICPCLK", FICP, 48000000, 0, &pxa_device_ficp.dev), |
148 | 148 | ||
149 | INIT_CKEN("USBCLK", USB, 48000000, 0, &pxa27x_device_ohci.dev), | 149 | INIT_CKEN("USBCLK", USBHOST, 48000000, 0, &pxa27x_device_ohci.dev), |
150 | INIT_CKEN("I2CCLK", PWRI2C, 13000000, 0, &pxa27x_device_i2c_power.dev), | 150 | INIT_CKEN("I2CCLK", PWRI2C, 13000000, 0, &pxa27x_device_i2c_power.dev), |
151 | INIT_CKEN("KBDCLK", KEYPAD, 32768, 0, NULL), | 151 | INIT_CKEN("KBDCLK", KEYPAD, 32768, 0, NULL), |
152 | 152 | ||
diff --git a/arch/arm/mach-pxa/pxa320.c b/arch/arm/mach-pxa/pxa320.c index 1010f77d977a..74128eb8f8d0 100644 --- a/arch/arm/mach-pxa/pxa320.c +++ b/arch/arm/mach-pxa/pxa320.c | |||
@@ -23,8 +23,11 @@ | |||
23 | static struct pxa3xx_mfp_addr_map pxa320_mfp_addr_map[] __initdata = { | 23 | static struct pxa3xx_mfp_addr_map pxa320_mfp_addr_map[] __initdata = { |
24 | 24 | ||
25 | MFP_ADDR_X(GPIO0, GPIO4, 0x0124), | 25 | MFP_ADDR_X(GPIO0, GPIO4, 0x0124), |
26 | MFP_ADDR_X(GPIO5, GPIO26, 0x028C), | 26 | MFP_ADDR_X(GPIO5, GPIO9, 0x028C), |
27 | MFP_ADDR_X(GPIO27, GPIO62, 0x0400), | 27 | MFP_ADDR(GPIO10, 0x0458), |
28 | MFP_ADDR_X(GPIO11, GPIO26, 0x02A0), | ||
29 | MFP_ADDR_X(GPIO27, GPIO48, 0x0400), | ||
30 | MFP_ADDR_X(GPIO49, GPIO62, 0x045C), | ||
28 | MFP_ADDR_X(GPIO63, GPIO73, 0x04B4), | 31 | MFP_ADDR_X(GPIO63, GPIO73, 0x04B4), |
29 | MFP_ADDR_X(GPIO74, GPIO98, 0x04F0), | 32 | MFP_ADDR_X(GPIO74, GPIO98, 0x04F0), |
30 | MFP_ADDR_X(GPIO99, GPIO127, 0x0600), | 33 | MFP_ADDR_X(GPIO99, GPIO127, 0x0600), |
diff --git a/arch/arm/mach-pxa/ssp.c b/arch/arm/mach-pxa/ssp.c index 71766ac0328b..422afee88169 100644 --- a/arch/arm/mach-pxa/ssp.c +++ b/arch/arm/mach-pxa/ssp.c | |||
@@ -309,6 +309,7 @@ void ssp_exit(struct ssp_dev *dev) | |||
309 | 309 | ||
310 | if (dev->port > PXA_SSP_PORTS || dev->port == 0) { | 310 | if (dev->port > PXA_SSP_PORTS || dev->port == 0) { |
311 | printk(KERN_WARNING "SSP: tried to close invalid port\n"); | 311 | printk(KERN_WARNING "SSP: tried to close invalid port\n"); |
312 | mutex_unlock(&mutex); | ||
312 | return; | 313 | return; |
313 | } | 314 | } |
314 | 315 | ||
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig index 9f9de3e95826..2a3a7ea5958c 100644 --- a/arch/blackfin/Kconfig +++ b/arch/blackfin/Kconfig | |||
@@ -3,7 +3,7 @@ | |||
3 | # see Documentation/kbuild/kconfig-language.txt. | 3 | # see Documentation/kbuild/kconfig-language.txt. |
4 | # | 4 | # |
5 | 5 | ||
6 | mainmenu "uClinux/Blackfin (w/o MMU) Kernel Configuration" | 6 | mainmenu "Blackfin Kernel Configuration" |
7 | 7 | ||
8 | config MMU | 8 | config MMU |
9 | bool | 9 | bool |
@@ -29,10 +29,6 @@ config ZONE_DMA | |||
29 | bool | 29 | bool |
30 | default y | 30 | default y |
31 | 31 | ||
32 | config BFIN | ||
33 | bool | ||
34 | default y | ||
35 | |||
36 | config SEMAPHORE_SLEEPERS | 32 | config SEMAPHORE_SLEEPERS |
37 | bool | 33 | bool |
38 | default y | 34 | default y |
@@ -50,7 +46,7 @@ config GENERIC_HARDIRQS | |||
50 | default y | 46 | default y |
51 | 47 | ||
52 | config GENERIC_IRQ_PROBE | 48 | config GENERIC_IRQ_PROBE |
53 | bool | 49 | bool |
54 | default y | 50 | default y |
55 | 51 | ||
56 | config GENERIC_TIME | 52 | config GENERIC_TIME |
@@ -69,11 +65,6 @@ config GENERIC_CALIBRATE_DELAY | |||
69 | bool | 65 | bool |
70 | default y | 66 | default y |
71 | 67 | ||
72 | config IRQCHIP_DEMUX_GPIO | ||
73 | bool | ||
74 | depends on (BF52x || BF53x || BF561 || BF54x) | ||
75 | default y | ||
76 | |||
77 | source "init/Kconfig" | 68 | source "init/Kconfig" |
78 | source "kernel/Kconfig.preempt" | 69 | source "kernel/Kconfig.preempt" |
79 | 70 | ||
@@ -140,6 +131,11 @@ config BF544 | |||
140 | help | 131 | help |
141 | BF544 Processor Support. | 132 | BF544 Processor Support. |
142 | 133 | ||
134 | config BF547 | ||
135 | bool "BF547" | ||
136 | help | ||
137 | BF547 Processor Support. | ||
138 | |||
143 | config BF548 | 139 | config BF548 |
144 | bool "BF548" | 140 | bool "BF548" |
145 | help | 141 | help |
@@ -166,11 +162,11 @@ choice | |||
166 | 162 | ||
167 | config BF_REV_0_0 | 163 | config BF_REV_0_0 |
168 | bool "0.0" | 164 | bool "0.0" |
169 | depends on (BF549 || BF527) | 165 | depends on (BF52x || BF54x) |
170 | 166 | ||
171 | config BF_REV_0_1 | 167 | config BF_REV_0_1 |
172 | bool "0.2" | 168 | bool "0.1" |
173 | depends on (BF549 || BF527) | 169 | depends on (BF52x || BF54x) |
174 | 170 | ||
175 | config BF_REV_0_2 | 171 | config BF_REV_0_2 |
176 | bool "0.2" | 172 | bool "0.2" |
@@ -208,7 +204,7 @@ config BF53x | |||
208 | 204 | ||
209 | config BF54x | 205 | config BF54x |
210 | bool | 206 | bool |
211 | depends on (BF542 || BF544 || BF548 || BF549) | 207 | depends on (BF542 || BF544 || BF547 || BF548 || BF549) |
212 | default y | 208 | default y |
213 | 209 | ||
214 | config BFIN_DUAL_CORE | 210 | config BFIN_DUAL_CORE |
@@ -221,95 +217,6 @@ config BFIN_SINGLE_CORE | |||
221 | depends on !BFIN_DUAL_CORE | 217 | depends on !BFIN_DUAL_CORE |
222 | default y | 218 | default y |
223 | 219 | ||
224 | choice | ||
225 | prompt "System type" | ||
226 | default BFIN533_STAMP | ||
227 | help | ||
228 | Do NOT change the board here. Please use the top level | ||
229 | configuration to ensure that all the other settings are | ||
230 | correct. | ||
231 | |||
232 | config BFIN527_EZKIT | ||
233 | bool "BF527-EZKIT" | ||
234 | depends on (BF522 || BF525 || BF527) | ||
235 | help | ||
236 | BF533-EZKIT-LITE board Support. | ||
237 | |||
238 | config BFIN533_EZKIT | ||
239 | bool "BF533-EZKIT" | ||
240 | depends on (BF533 || BF532 || BF531) | ||
241 | help | ||
242 | BF533-EZKIT-LITE board Support. | ||
243 | |||
244 | config BFIN533_STAMP | ||
245 | bool "BF533-STAMP" | ||
246 | depends on (BF533 || BF532 || BF531) | ||
247 | help | ||
248 | BF533-STAMP board Support. | ||
249 | |||
250 | config BFIN537_STAMP | ||
251 | bool "BF537-STAMP" | ||
252 | depends on (BF537 || BF536 || BF534) | ||
253 | help | ||
254 | BF537-STAMP board Support. | ||
255 | |||
256 | config BFIN533_BLUETECHNIX_CM | ||
257 | bool "Bluetechnix CM-BF533" | ||
258 | depends on (BF533) | ||
259 | help | ||
260 | CM-BF533 support for EVAL- and DEV-Board. | ||
261 | |||
262 | config BFIN537_BLUETECHNIX_CM | ||
263 | bool "Bluetechnix CM-BF537" | ||
264 | depends on (BF537) | ||
265 | help | ||
266 | CM-BF537 support for EVAL- and DEV-Board. | ||
267 | |||
268 | config BFIN548_EZKIT | ||
269 | bool "BF548-EZKIT" | ||
270 | depends on (BF548 || BF549) | ||
271 | help | ||
272 | BFIN548-EZKIT board Support. | ||
273 | |||
274 | config BFIN561_BLUETECHNIX_CM | ||
275 | bool "Bluetechnix CM-BF561" | ||
276 | depends on (BF561) | ||
277 | help | ||
278 | CM-BF561 support for EVAL- and DEV-Board. | ||
279 | |||
280 | config BFIN561_EZKIT | ||
281 | bool "BF561-EZKIT" | ||
282 | depends on (BF561) | ||
283 | help | ||
284 | BF561-EZKIT-LITE board Support. | ||
285 | |||
286 | config BFIN561_TEPLA | ||
287 | bool "BF561-TEPLA" | ||
288 | depends on (BF561) | ||
289 | help | ||
290 | BF561-TEPLA board Support. | ||
291 | |||
292 | config PNAV10 | ||
293 | bool "PNAV 1.0 board" | ||
294 | depends on (BF537) | ||
295 | help | ||
296 | PNAV 1.0 board Support. | ||
297 | |||
298 | config H8606_HVSISTEMAS | ||
299 | bool "HV Sistemas H8606" | ||
300 | depends on (BF532) | ||
301 | help | ||
302 | HV Sistemas H8606 board support. | ||
303 | |||
304 | config GENERIC_BOARD | ||
305 | bool "Custom" | ||
306 | depends on (BF537 || BF536 \ | ||
307 | || BF534 || BF561 || BF535 || BF533 || BF532 || BF531) | ||
308 | help | ||
309 | GENERIC or Custom board Support. | ||
310 | |||
311 | endchoice | ||
312 | |||
313 | config MEM_GENERIC_BOARD | 220 | config MEM_GENERIC_BOARD |
314 | bool | 221 | bool |
315 | depends on GENERIC_BOARD | 222 | depends on GENERIC_BOARD |
@@ -389,9 +296,9 @@ config BFIN_KERNEL_CLOCK | |||
389 | configuration. | 296 | configuration. |
390 | 297 | ||
391 | config PLL_BYPASS | 298 | config PLL_BYPASS |
392 | bool "Bypass PLL" | 299 | bool "Bypass PLL" |
393 | depends on BFIN_KERNEL_CLOCK | 300 | depends on BFIN_KERNEL_CLOCK |
394 | default n | 301 | default n |
395 | 302 | ||
396 | config CLKIN_HALF | 303 | config CLKIN_HALF |
397 | bool "Half Clock In" | 304 | bool "Half Clock In" |
@@ -468,11 +375,11 @@ config MAX_VCO_HZ | |||
468 | default 500000000 if BF534 | 375 | default 500000000 if BF534 |
469 | default 400000000 if BF536 | 376 | default 400000000 if BF536 |
470 | default 600000000 if BF537 | 377 | default 600000000 if BF537 |
471 | default 533000000 if BF538 | 378 | default 533333333 if BF538 |
472 | default 533000000 if BF539 | 379 | default 533333333 if BF539 |
473 | default 600000000 if BF542 | 380 | default 600000000 if BF542 |
474 | default 533000000 if BF544 | 381 | default 533333333 if BF544 |
475 | default 533000000 if BF549 | 382 | default 533333333 if BF549 |
476 | default 600000000 if BF561 | 383 | default 600000000 if BF561 |
477 | 384 | ||
478 | config MIN_VCO_HZ | 385 | config MIN_VCO_HZ |
@@ -481,7 +388,7 @@ config MIN_VCO_HZ | |||
481 | 388 | ||
482 | config MAX_SCLK_HZ | 389 | config MAX_SCLK_HZ |
483 | int | 390 | int |
484 | default 133000000 | 391 | default 133333333 |
485 | 392 | ||
486 | config MIN_SCLK_HZ | 393 | config MIN_SCLK_HZ |
487 | int | 394 | int |
@@ -959,6 +866,20 @@ config BANK_3 | |||
959 | default 0x99B3 | 866 | default 0x99B3 |
960 | endmenu | 867 | endmenu |
961 | 868 | ||
869 | config EBIU_MBSCTLVAL | ||
870 | hex "EBIU Bank Select Control Register" | ||
871 | depends on BF54x | ||
872 | default 0 | ||
873 | |||
874 | config EBIU_MODEVAL | ||
875 | hex "Flash Memory Mode Control Register" | ||
876 | depends on BF54x | ||
877 | default 1 | ||
878 | |||
879 | config EBIU_FCTLVAL | ||
880 | hex "Flash Memory Bank Control Register" | ||
881 | depends on BF54x | ||
882 | default 6 | ||
962 | endmenu | 883 | endmenu |
963 | 884 | ||
964 | ############################################################################# | 885 | ############################################################################# |
@@ -1075,174 +996,7 @@ source "fs/Kconfig" | |||
1075 | 996 | ||
1076 | source "kernel/Kconfig.instrumentation" | 997 | source "kernel/Kconfig.instrumentation" |
1077 | 998 | ||
1078 | menu "Kernel hacking" | 999 | source "arch/blackfin/Kconfig.debug" |
1079 | |||
1080 | source "lib/Kconfig.debug" | ||
1081 | |||
1082 | config DEBUG_HWERR | ||
1083 | bool "Hardware error interrupt debugging" | ||
1084 | depends on DEBUG_KERNEL | ||
1085 | help | ||
1086 | When enabled, the hardware error interrupt is never disabled, and | ||
1087 | will happen immediately when an error condition occurs. This comes | ||
1088 | at a slight cost in code size, but is necessary if you are getting | ||
1089 | hardware error interrupts and need to know where they are coming | ||
1090 | from. | ||
1091 | |||
1092 | config DEBUG_ICACHE_CHECK | ||
1093 | bool "Check Instruction cache coherency" | ||
1094 | depends on DEBUG_KERNEL | ||
1095 | depends on DEBUG_HWERR | ||
1096 | help | ||
1097 | Say Y here if you are getting weird unexplained errors. This will | ||
1098 | ensure that icache is what SDRAM says it should be by doing a | ||
1099 | byte wise comparison between SDRAM and instruction cache. This | ||
1100 | also relocates the irq_panic() function to L1 memory, (which is | ||
1101 | un-cached). | ||
1102 | |||
1103 | config DEBUG_HUNT_FOR_ZERO | ||
1104 | bool "Catch NULL pointer reads/writes" | ||
1105 | default y | ||
1106 | help | ||
1107 | Say Y here to catch reads/writes to anywhere in the memory range | ||
1108 | from 0x0000 - 0x0FFF (the first 4k) of memory. This is useful in | ||
1109 | catching common programming errors such as NULL pointer dereferences. | ||
1110 | |||
1111 | Misbehaving applications will be killed (generate a SEGV) while the | ||
1112 | kernel will trigger a panic. | ||
1113 | |||
1114 | Enabling this option will take up an extra entry in CPLB table. | ||
1115 | Otherwise, there is no extra overhead. | ||
1116 | |||
1117 | config DEBUG_BFIN_HWTRACE_ON | ||
1118 | bool "Turn on Blackfin's Hardware Trace" | ||
1119 | default y | ||
1120 | help | ||
1121 | All Blackfins include a Trace Unit which stores a history of the last | ||
1122 | 16 changes in program flow taken by the program sequencer. The history | ||
1123 | allows the user to recreate the program sequencer’s recent path. This | ||
1124 | can be handy when an application dies - we print out the execution | ||
1125 | path of how it got to the offending instruction. | ||
1126 | |||
1127 | By turning this off, you may save a tiny amount of power. | ||
1128 | |||
1129 | choice | ||
1130 | prompt "Omit loop Tracing" | ||
1131 | default DEBUG_BFIN_HWTRACE_COMPRESSION_OFF | ||
1132 | depends on DEBUG_BFIN_HWTRACE_ON | ||
1133 | help | ||
1134 | The trace buffer can be configured to omit recording of changes in | ||
1135 | program flow that match either the last entry or one of the last | ||
1136 | two entries. Omitting one of these entries from the record prevents | ||
1137 | the trace buffer from overflowing because of any sort of loop (for, do | ||
1138 | while, etc) in the program. | ||
1139 | |||
1140 | Because zero-overhead Hardware loops are not recorded in the trace buffer, | ||
1141 | this feature can be used to prevent trace overflow from loops that | ||
1142 | are nested four deep. | ||
1143 | |||
1144 | config DEBUG_BFIN_HWTRACE_COMPRESSION_OFF | ||
1145 | bool "Trace all Loops" | ||
1146 | help | ||
1147 | The trace buffer records all changes of flow | ||
1148 | |||
1149 | config DEBUG_BFIN_HWTRACE_COMPRESSION_ONE | ||
1150 | bool "Compress single-level loops" | ||
1151 | help | ||
1152 | The trace buffer does not record single loops - helpful if trace | ||
1153 | is spinning on a while or do loop. | ||
1154 | |||
1155 | config DEBUG_BFIN_HWTRACE_COMPRESSION_TWO | ||
1156 | bool "Compress two-level loops" | ||
1157 | help | ||
1158 | The trace buffer does not record loops two levels deep. Helpful if | ||
1159 | the trace is spinning in a nested loop | ||
1160 | |||
1161 | endchoice | ||
1162 | |||
1163 | config DEBUG_BFIN_HWTRACE_COMPRESSION | ||
1164 | int | ||
1165 | depends on DEBUG_BFIN_HWTRACE_ON | ||
1166 | default 0 if DEBUG_BFIN_HWTRACE_COMPRESSION_OFF | ||
1167 | default 1 if DEBUG_BFIN_HWTRACE_COMPRESSION_ONE | ||
1168 | default 2 if DEBUG_BFIN_HWTRACE_COMPRESSION_TWO | ||
1169 | |||
1170 | |||
1171 | config DEBUG_BFIN_HWTRACE_EXPAND | ||
1172 | bool "Expand Trace Buffer greater than 16 entries" | ||
1173 | depends on DEBUG_BFIN_HWTRACE_ON | ||
1174 | default n | ||
1175 | help | ||
1176 | By selecting this option, every time the 16 hardware entries in | ||
1177 | the Blackfin's HW Trace buffer are full, the kernel will move them | ||
1178 | into a software buffer, for dumping when there is an issue. This | ||
1179 | has a great impact on performance, (an interrupt every 16 change of | ||
1180 | flows) and should normally be turned off, except in those nasty | ||
1181 | debugging sessions | ||
1182 | |||
1183 | config DEBUG_BFIN_HWTRACE_EXPAND_LEN | ||
1184 | int "Size of Trace buffer (in power of 2k)" | ||
1185 | range 0 4 | ||
1186 | depends on DEBUG_BFIN_HWTRACE_EXPAND | ||
1187 | default 1 | ||
1188 | help | ||
1189 | This sets the size of the software buffer that the trace information | ||
1190 | is kept in. | ||
1191 | 0 for (2^0) 1k, or 256 entries, | ||
1192 | 1 for (2^1) 2k, or 512 entries, | ||
1193 | 2 for (2^2) 4k, or 1024 entries, | ||
1194 | 3 for (2^3) 8k, or 2048 entries, | ||
1195 | 4 for (2^4) 16k, or 4096 entries | ||
1196 | |||
1197 | config DEBUG_BFIN_NO_KERN_HWTRACE | ||
1198 | bool "Trace user apps (turn off hwtrace in kernel)" | ||
1199 | depends on DEBUG_BFIN_HWTRACE_ON | ||
1200 | default n | ||
1201 | help | ||
1202 | Some pieces of the kernel contain a lot of flow changes which can | ||
1203 | quickly fill up the hardware trace buffer. When debugging crashes, | ||
1204 | the hardware trace may indicate that the problem lies in kernel | ||
1205 | space when in reality an application is buggy. | ||
1206 | |||
1207 | Say Y here to disable hardware tracing in some known "jumpy" pieces | ||
1208 | of code so that the trace buffer will extend further back. | ||
1209 | |||
1210 | config EARLY_PRINTK | ||
1211 | bool "Early printk" | ||
1212 | default n | ||
1213 | help | ||
1214 | This option enables special console drivers which allow the kernel | ||
1215 | to print messages very early in the bootup process. | ||
1216 | |||
1217 | This is useful for kernel debugging when your machine crashes very | ||
1218 | early before the console code is initialized. After enabling this | ||
1219 | feature, you must add "earlyprintk=serial,uart0,57600" to the | ||
1220 | command line (bootargs). It is safe to say Y here in all cases, as | ||
1221 | all of this lives in the init section and is thrown away after the | ||
1222 | kernel boots completely. | ||
1223 | |||
1224 | config DUAL_CORE_TEST_MODULE | ||
1225 | tristate "Dual Core Test Module" | ||
1226 | depends on (BF561) | ||
1227 | default n | ||
1228 | help | ||
1229 | Say Y here to build-in dual core test module for dual core test. | ||
1230 | |||
1231 | config CPLB_INFO | ||
1232 | bool "Display the CPLB information" | ||
1233 | help | ||
1234 | Display the CPLB information. | ||
1235 | |||
1236 | config ACCESS_CHECK | ||
1237 | bool "Check the user pointer address" | ||
1238 | default y | ||
1239 | help | ||
1240 | Usually the pointer transfer from user space is checked to see if its | ||
1241 | address is in the kernel space. | ||
1242 | |||
1243 | Say N here to disable that check to improve the performance. | ||
1244 | |||
1245 | endmenu | ||
1246 | 1000 | ||
1247 | source "security/Kconfig" | 1001 | source "security/Kconfig" |
1248 | 1002 | ||
diff --git a/arch/blackfin/Kconfig.debug b/arch/blackfin/Kconfig.debug new file mode 100644 index 000000000000..59b87a483c68 --- /dev/null +++ b/arch/blackfin/Kconfig.debug | |||
@@ -0,0 +1,178 @@ | |||
1 | menu "Kernel hacking" | ||
2 | |||
3 | source "lib/Kconfig.debug" | ||
4 | |||
5 | config DEBUG_MMRS | ||
6 | bool "Generate Blackfin MMR tree" | ||
7 | select DEBUG_FS | ||
8 | help | ||
9 | Create a tree of Blackfin MMRs via the debugfs tree. If | ||
10 | you enable this, you will find all MMRs laid out in the | ||
11 | /sys/kernel/debug/blackfin/ directory where you can read/write | ||
12 | MMRs directly from userspace. This is obviously just a debug | ||
13 | feature. | ||
14 | |||
15 | config DEBUG_HWERR | ||
16 | bool "Hardware error interrupt debugging" | ||
17 | depends on DEBUG_KERNEL | ||
18 | help | ||
19 | When enabled, the hardware error interrupt is never disabled, and | ||
20 | will happen immediately when an error condition occurs. This comes | ||
21 | at a slight cost in code size, but is necessary if you are getting | ||
22 | hardware error interrupts and need to know where they are coming | ||
23 | from. | ||
24 | |||
25 | config DEBUG_ICACHE_CHECK | ||
26 | bool "Check Instruction cache coherency" | ||
27 | depends on DEBUG_KERNEL | ||
28 | depends on DEBUG_HWERR | ||
29 | help | ||
30 | Say Y here if you are getting weird unexplained errors. This will | ||
31 | ensure that icache is what SDRAM says it should be by doing a | ||
32 | byte wise comparison between SDRAM and instruction cache. This | ||
33 | also relocates the irq_panic() function to L1 memory, (which is | ||
34 | un-cached). | ||
35 | |||
36 | config DEBUG_HUNT_FOR_ZERO | ||
37 | bool "Catch NULL pointer reads/writes" | ||
38 | default y | ||
39 | help | ||
40 | Say Y here to catch reads/writes to anywhere in the memory range | ||
41 | from 0x0000 - 0x0FFF (the first 4k) of memory. This is useful in | ||
42 | catching common programming errors such as NULL pointer dereferences. | ||
43 | |||
44 | Misbehaving applications will be killed (generate a SEGV) while the | ||
45 | kernel will trigger a panic. | ||
46 | |||
47 | Enabling this option will take up an extra entry in CPLB table. | ||
48 | Otherwise, there is no extra overhead. | ||
49 | |||
50 | config DEBUG_BFIN_HWTRACE_ON | ||
51 | bool "Turn on Blackfin's Hardware Trace" | ||
52 | default y | ||
53 | help | ||
54 | All Blackfins include a Trace Unit which stores a history of the last | ||
55 | 16 changes in program flow taken by the program sequencer. The history | ||
56 | allows the user to recreate the program sequencer’s recent path. This | ||
57 | can be handy when an application dies - we print out the execution | ||
58 | path of how it got to the offending instruction. | ||
59 | |||
60 | By turning this off, you may save a tiny amount of power. | ||
61 | |||
62 | choice | ||
63 | prompt "Omit loop Tracing" | ||
64 | default DEBUG_BFIN_HWTRACE_COMPRESSION_OFF | ||
65 | depends on DEBUG_BFIN_HWTRACE_ON | ||
66 | help | ||
67 | The trace buffer can be configured to omit recording of changes in | ||
68 | program flow that match either the last entry or one of the last | ||
69 | two entries. Omitting one of these entries from the record prevents | ||
70 | the trace buffer from overflowing because of any sort of loop (for, do | ||
71 | while, etc) in the program. | ||
72 | |||
73 | Because zero-overhead Hardware loops are not recorded in the trace buffer, | ||
74 | this feature can be used to prevent trace overflow from loops that | ||
75 | are nested four deep. | ||
76 | |||
77 | config DEBUG_BFIN_HWTRACE_COMPRESSION_OFF | ||
78 | bool "Trace all Loops" | ||
79 | help | ||
80 | The trace buffer records all changes of flow | ||
81 | |||
82 | config DEBUG_BFIN_HWTRACE_COMPRESSION_ONE | ||
83 | bool "Compress single-level loops" | ||
84 | help | ||
85 | The trace buffer does not record single loops - helpful if trace | ||
86 | is spinning on a while or do loop. | ||
87 | |||
88 | config DEBUG_BFIN_HWTRACE_COMPRESSION_TWO | ||
89 | bool "Compress two-level loops" | ||
90 | help | ||
91 | The trace buffer does not record loops two levels deep. Helpful if | ||
92 | the trace is spinning in a nested loop | ||
93 | |||
94 | endchoice | ||
95 | |||
96 | config DEBUG_BFIN_HWTRACE_COMPRESSION | ||
97 | int | ||
98 | depends on DEBUG_BFIN_HWTRACE_ON | ||
99 | default 0 if DEBUG_BFIN_HWTRACE_COMPRESSION_OFF | ||
100 | default 1 if DEBUG_BFIN_HWTRACE_COMPRESSION_ONE | ||
101 | default 2 if DEBUG_BFIN_HWTRACE_COMPRESSION_TWO | ||
102 | |||
103 | |||
104 | config DEBUG_BFIN_HWTRACE_EXPAND | ||
105 | bool "Expand Trace Buffer greater than 16 entries" | ||
106 | depends on DEBUG_BFIN_HWTRACE_ON | ||
107 | default n | ||
108 | help | ||
109 | By selecting this option, every time the 16 hardware entries in | ||
110 | the Blackfin's HW Trace buffer are full, the kernel will move them | ||
111 | into a software buffer, for dumping when there is an issue. This | ||
112 | has a great impact on performance, (an interrupt every 16 change of | ||
113 | flows) and should normally be turned off, except in those nasty | ||
114 | debugging sessions | ||
115 | |||
116 | config DEBUG_BFIN_HWTRACE_EXPAND_LEN | ||
117 | int "Size of Trace buffer (in power of 2k)" | ||
118 | range 0 4 | ||
119 | depends on DEBUG_BFIN_HWTRACE_EXPAND | ||
120 | default 1 | ||
121 | help | ||
122 | This sets the size of the software buffer that the trace information | ||
123 | is kept in. | ||
124 | 0 for (2^0) 1k, or 256 entries, | ||
125 | 1 for (2^1) 2k, or 512 entries, | ||
126 | 2 for (2^2) 4k, or 1024 entries, | ||
127 | 3 for (2^3) 8k, or 2048 entries, | ||
128 | 4 for (2^4) 16k, or 4096 entries | ||
129 | |||
130 | config DEBUG_BFIN_NO_KERN_HWTRACE | ||
131 | bool "Trace user apps (turn off hwtrace in kernel)" | ||
132 | depends on DEBUG_BFIN_HWTRACE_ON | ||
133 | default n | ||
134 | help | ||
135 | Some pieces of the kernel contain a lot of flow changes which can | ||
136 | quickly fill up the hardware trace buffer. When debugging crashes, | ||
137 | the hardware trace may indicate that the problem lies in kernel | ||
138 | space when in reality an application is buggy. | ||
139 | |||
140 | Say Y here to disable hardware tracing in some known "jumpy" pieces | ||
141 | of code so that the trace buffer will extend further back. | ||
142 | |||
143 | config EARLY_PRINTK | ||
144 | bool "Early printk" | ||
145 | default n | ||
146 | help | ||
147 | This option enables special console drivers which allow the kernel | ||
148 | to print messages very early in the bootup process. | ||
149 | |||
150 | This is useful for kernel debugging when your machine crashes very | ||
151 | early before the console code is initialized. After enabling this | ||
152 | feature, you must add "earlyprintk=serial,uart0,57600" to the | ||
153 | command line (bootargs). It is safe to say Y here in all cases, as | ||
154 | all of this lives in the init section and is thrown away after the | ||
155 | kernel boots completely. | ||
156 | |||
157 | config DUAL_CORE_TEST_MODULE | ||
158 | tristate "Dual Core Test Module" | ||
159 | depends on (BF561) | ||
160 | default n | ||
161 | help | ||
162 | Say Y here to build-in dual core test module for dual core test. | ||
163 | |||
164 | config CPLB_INFO | ||
165 | bool "Display the CPLB information" | ||
166 | help | ||
167 | Display the CPLB information. | ||
168 | |||
169 | config ACCESS_CHECK | ||
170 | bool "Check the user pointer address" | ||
171 | default y | ||
172 | help | ||
173 | Usually the pointer transfer from user space is checked to see if its | ||
174 | address is in the kernel space. | ||
175 | |||
176 | Say N here to disable that check to improve the performance. | ||
177 | |||
178 | endmenu | ||
diff --git a/arch/blackfin/Makefile b/arch/blackfin/Makefile index f7cac7c51e7e..c47e000f8324 100644 --- a/arch/blackfin/Makefile +++ b/arch/blackfin/Makefile | |||
@@ -31,6 +31,7 @@ machine-$(CONFIG_BF536) := bf537 | |||
31 | machine-$(CONFIG_BF537) := bf537 | 31 | machine-$(CONFIG_BF537) := bf537 |
32 | machine-$(CONFIG_BF542) := bf548 | 32 | machine-$(CONFIG_BF542) := bf548 |
33 | machine-$(CONFIG_BF544) := bf548 | 33 | machine-$(CONFIG_BF544) := bf548 |
34 | machine-$(CONFIG_BF547) := bf548 | ||
34 | machine-$(CONFIG_BF548) := bf548 | 35 | machine-$(CONFIG_BF548) := bf548 |
35 | machine-$(CONFIG_BF549) := bf548 | 36 | machine-$(CONFIG_BF549) := bf548 |
36 | machine-$(CONFIG_BF561) := bf561 | 37 | machine-$(CONFIG_BF561) := bf561 |
@@ -48,6 +49,7 @@ cpu-$(CONFIG_BF536) := bf536 | |||
48 | cpu-$(CONFIG_BF537) := bf537 | 49 | cpu-$(CONFIG_BF537) := bf537 |
49 | cpu-$(CONFIG_BF542) := bf542 | 50 | cpu-$(CONFIG_BF542) := bf542 |
50 | cpu-$(CONFIG_BF544) := bf544 | 51 | cpu-$(CONFIG_BF544) := bf544 |
52 | cpu-$(CONFIG_BF547) := bf547 | ||
51 | cpu-$(CONFIG_BF548) := bf548 | 53 | cpu-$(CONFIG_BF548) := bf548 |
52 | cpu-$(CONFIG_BF549) := bf549 | 54 | cpu-$(CONFIG_BF549) := bf549 |
53 | cpu-$(CONFIG_BF561) := bf561 | 55 | cpu-$(CONFIG_BF561) := bf561 |
diff --git a/arch/blackfin/configs/BF527-EZKIT_defconfig b/arch/blackfin/configs/BF527-EZKIT_defconfig index 1f6a93df6b32..fa6eb4e00fae 100644 --- a/arch/blackfin/configs/BF527-EZKIT_defconfig +++ b/arch/blackfin/configs/BF527-EZKIT_defconfig | |||
@@ -1,6 +1,6 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.22.9 | 3 | # Linux kernel version: 2.6.22.12 |
4 | # | 4 | # |
5 | # CONFIG_MMU is not set | 5 | # CONFIG_MMU is not set |
6 | # CONFIG_FPU is not set | 6 | # CONFIG_FPU is not set |
@@ -8,7 +8,6 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y | |||
8 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 8 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
9 | CONFIG_BLACKFIN=y | 9 | CONFIG_BLACKFIN=y |
10 | CONFIG_ZONE_DMA=y | 10 | CONFIG_ZONE_DMA=y |
11 | CONFIG_BFIN=y | ||
12 | CONFIG_SEMAPHORE_SLEEPERS=y | 11 | CONFIG_SEMAPHORE_SLEEPERS=y |
13 | CONFIG_GENERIC_FIND_NEXT_BIT=y | 12 | CONFIG_GENERIC_FIND_NEXT_BIT=y |
14 | CONFIG_GENERIC_HWEIGHT=y | 13 | CONFIG_GENERIC_HWEIGHT=y |
@@ -18,7 +17,6 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
18 | CONFIG_GENERIC_GPIO=y | 17 | CONFIG_GENERIC_GPIO=y |
19 | CONFIG_FORCE_MAX_ZONEORDER=14 | 18 | CONFIG_FORCE_MAX_ZONEORDER=14 |
20 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
21 | CONFIG_IRQCHIP_DEMUX_GPIO=y | ||
22 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
23 | 21 | ||
24 | # | 22 | # |
@@ -127,6 +125,7 @@ CONFIG_BF527=y | |||
127 | # CONFIG_BF537 is not set | 125 | # CONFIG_BF537 is not set |
128 | # CONFIG_BF542 is not set | 126 | # CONFIG_BF542 is not set |
129 | # CONFIG_BF544 is not set | 127 | # CONFIG_BF544 is not set |
128 | # CONFIG_BF547 is not set | ||
130 | # CONFIG_BF548 is not set | 129 | # CONFIG_BF548 is not set |
131 | # CONFIG_BF549 is not set | 130 | # CONFIG_BF549 is not set |
132 | # CONFIG_BF561 is not set | 131 | # CONFIG_BF561 is not set |
@@ -140,19 +139,8 @@ CONFIG_BF_REV_0_0=y | |||
140 | # CONFIG_BF_REV_NONE is not set | 139 | # CONFIG_BF_REV_NONE is not set |
141 | CONFIG_BF52x=y | 140 | CONFIG_BF52x=y |
142 | CONFIG_BFIN_SINGLE_CORE=y | 141 | CONFIG_BFIN_SINGLE_CORE=y |
143 | CONFIG_BFIN527_EZKIT=y | ||
144 | # CONFIG_BFIN533_EZKIT is not set | ||
145 | # CONFIG_BFIN533_STAMP is not set | ||
146 | # CONFIG_BFIN537_STAMP is not set | ||
147 | # CONFIG_BFIN533_BLUETECHNIX_CM is not set | ||
148 | # CONFIG_BFIN537_BLUETECHNIX_CM is not set | ||
149 | # CONFIG_BFIN548_EZKIT is not set | ||
150 | # CONFIG_BFIN561_BLUETECHNIX_CM is not set | ||
151 | # CONFIG_BFIN561_EZKIT is not set | ||
152 | # CONFIG_BFIN561_TEPLA is not set | ||
153 | # CONFIG_PNAV10 is not set | ||
154 | # CONFIG_GENERIC_BOARD is not set | ||
155 | CONFIG_MEM_MT48LC32M16A2TG_75=y | 142 | CONFIG_MEM_MT48LC32M16A2TG_75=y |
143 | CONFIG_BFIN527_EZKIT=y | ||
156 | 144 | ||
157 | # | 145 | # |
158 | # BF527 Specific Configuration | 146 | # BF527 Specific Configuration |
@@ -244,7 +232,7 @@ CONFIG_CLKIN_HZ=25000000 | |||
244 | # CONFIG_BFIN_KERNEL_CLOCK is not set | 232 | # CONFIG_BFIN_KERNEL_CLOCK is not set |
245 | CONFIG_MAX_VCO_HZ=600000000 | 233 | CONFIG_MAX_VCO_HZ=600000000 |
246 | CONFIG_MIN_VCO_HZ=50000000 | 234 | CONFIG_MIN_VCO_HZ=50000000 |
247 | CONFIG_MAX_SCLK_HZ=133333333 | 235 | CONFIG_MAX_SCLK_HZ=133000000 |
248 | CONFIG_MIN_SCLK_HZ=27000000 | 236 | CONFIG_MIN_SCLK_HZ=27000000 |
249 | 237 | ||
250 | # | 238 | # |
@@ -301,6 +289,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 | |||
301 | # CONFIG_RESOURCES_64BIT is not set | 289 | # CONFIG_RESOURCES_64BIT is not set |
302 | CONFIG_ZONE_DMA_FLAG=1 | 290 | CONFIG_ZONE_DMA_FLAG=1 |
303 | CONFIG_LARGE_ALLOCS=y | 291 | CONFIG_LARGE_ALLOCS=y |
292 | # CONFIG_BFIN_GPTIMERS is not set | ||
304 | CONFIG_BFIN_DMA_5XX=y | 293 | CONFIG_BFIN_DMA_5XX=y |
305 | # CONFIG_DMA_UNCACHED_2M is not set | 294 | # CONFIG_DMA_UNCACHED_2M is not set |
306 | CONFIG_DMA_UNCACHED_1M=y | 295 | CONFIG_DMA_UNCACHED_1M=y |
@@ -322,7 +311,7 @@ CONFIG_L1_MAX_PIECE=16 | |||
322 | # | 311 | # |
323 | 312 | ||
324 | # | 313 | # |
325 | # EBIU_AMBCTL Global Control | 314 | # EBIU_AMGCTL Global Control |
326 | # | 315 | # |
327 | CONFIG_C_AMCKEN=y | 316 | CONFIG_C_AMCKEN=y |
328 | CONFIG_C_CDPRIO=y | 317 | CONFIG_C_CDPRIO=y |
@@ -548,6 +537,7 @@ CONFIG_BFIN_NAND_CLE=2 | |||
548 | CONFIG_BFIN_NAND_ALE=1 | 537 | CONFIG_BFIN_NAND_ALE=1 |
549 | CONFIG_BFIN_NAND_READY=3 | 538 | CONFIG_BFIN_NAND_READY=3 |
550 | CONFIG_MTD_NAND_IDS=m | 539 | CONFIG_MTD_NAND_IDS=m |
540 | # CONFIG_MTD_NAND_BF5XX is not set | ||
551 | # CONFIG_MTD_NAND_DISKONCHIP is not set | 541 | # CONFIG_MTD_NAND_DISKONCHIP is not set |
552 | # CONFIG_MTD_NAND_NANDSIM is not set | 542 | # CONFIG_MTD_NAND_NANDSIM is not set |
553 | # CONFIG_MTD_NAND_PLATFORM is not set | 543 | # CONFIG_MTD_NAND_PLATFORM is not set |
@@ -637,6 +627,7 @@ CONFIG_BFIN_MAC_RMII=y | |||
637 | # CONFIG_DM9000 is not set | 627 | # CONFIG_DM9000 is not set |
638 | CONFIG_NETDEV_1000=y | 628 | CONFIG_NETDEV_1000=y |
639 | CONFIG_NETDEV_10000=y | 629 | CONFIG_NETDEV_10000=y |
630 | # CONFIG_AX88180 is not set | ||
640 | 631 | ||
641 | # | 632 | # |
642 | # Wireless LAN | 633 | # Wireless LAN |
@@ -708,7 +699,7 @@ CONFIG_INPUT_MISC=y | |||
708 | # CONFIG_SPI_ADC_BF533 is not set | 699 | # CONFIG_SPI_ADC_BF533 is not set |
709 | # CONFIG_BF5xx_PFLAGS is not set | 700 | # CONFIG_BF5xx_PFLAGS is not set |
710 | # CONFIG_BF5xx_PPIFCD is not set | 701 | # CONFIG_BF5xx_PPIFCD is not set |
711 | # CONFIG_BF5xx_TIMERS is not set | 702 | # CONFIG_BFIN_SIMPLE_TIMER is not set |
712 | # CONFIG_BF5xx_PPI is not set | 703 | # CONFIG_BF5xx_PPI is not set |
713 | # CONFIG_BFIN_SPORT is not set | 704 | # CONFIG_BFIN_SPORT is not set |
714 | # CONFIG_BFIN_TIMER_LATENCY is not set | 705 | # CONFIG_BFIN_TIMER_LATENCY is not set |
diff --git a/arch/blackfin/configs/BF533-EZKIT_defconfig b/arch/blackfin/configs/BF533-EZKIT_defconfig index 9e9b420342d1..4fdb49362ba3 100644 --- a/arch/blackfin/configs/BF533-EZKIT_defconfig +++ b/arch/blackfin/configs/BF533-EZKIT_defconfig | |||
@@ -1,6 +1,6 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.22.6 | 3 | # Linux kernel version: 2.6.22.12 |
4 | # | 4 | # |
5 | # CONFIG_MMU is not set | 5 | # CONFIG_MMU is not set |
6 | # CONFIG_FPU is not set | 6 | # CONFIG_FPU is not set |
@@ -8,7 +8,6 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y | |||
8 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 8 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
9 | CONFIG_BLACKFIN=y | 9 | CONFIG_BLACKFIN=y |
10 | CONFIG_ZONE_DMA=y | 10 | CONFIG_ZONE_DMA=y |
11 | CONFIG_BFIN=y | ||
12 | CONFIG_SEMAPHORE_SLEEPERS=y | 11 | CONFIG_SEMAPHORE_SLEEPERS=y |
13 | CONFIG_GENERIC_FIND_NEXT_BIT=y | 12 | CONFIG_GENERIC_FIND_NEXT_BIT=y |
14 | CONFIG_GENERIC_HWEIGHT=y | 13 | CONFIG_GENERIC_HWEIGHT=y |
@@ -18,7 +17,6 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
18 | CONFIG_GENERIC_GPIO=y | 17 | CONFIG_GENERIC_GPIO=y |
19 | CONFIG_FORCE_MAX_ZONEORDER=14 | 18 | CONFIG_FORCE_MAX_ZONEORDER=14 |
20 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
21 | CONFIG_IRQCHIP_DEMUX_GPIO=y | ||
22 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
23 | 21 | ||
24 | # | 22 | # |
@@ -64,7 +62,6 @@ CONFIG_FUTEX=y | |||
64 | CONFIG_ANON_INODES=y | 62 | CONFIG_ANON_INODES=y |
65 | CONFIG_EPOLL=y | 63 | CONFIG_EPOLL=y |
66 | CONFIG_SIGNALFD=y | 64 | CONFIG_SIGNALFD=y |
67 | CONFIG_TIMERFD=y | ||
68 | CONFIG_EVENTFD=y | 65 | CONFIG_EVENTFD=y |
69 | CONFIG_VM_EVENT_COUNTERS=y | 66 | CONFIG_VM_EVENT_COUNTERS=y |
70 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 | 67 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 |
@@ -117,6 +114,9 @@ CONFIG_PREEMPT_VOLUNTARY=y | |||
117 | # | 114 | # |
118 | # Processor and Board Settings | 115 | # Processor and Board Settings |
119 | # | 116 | # |
117 | # CONFIG_BF522 is not set | ||
118 | # CONFIG_BF525 is not set | ||
119 | # CONFIG_BF527 is not set | ||
120 | # CONFIG_BF531 is not set | 120 | # CONFIG_BF531 is not set |
121 | # CONFIG_BF532 is not set | 121 | # CONFIG_BF532 is not set |
122 | CONFIG_BF533=y | 122 | CONFIG_BF533=y |
@@ -125,10 +125,12 @@ CONFIG_BF533=y | |||
125 | # CONFIG_BF537 is not set | 125 | # CONFIG_BF537 is not set |
126 | # CONFIG_BF542 is not set | 126 | # CONFIG_BF542 is not set |
127 | # CONFIG_BF544 is not set | 127 | # CONFIG_BF544 is not set |
128 | # CONFIG_BF547 is not set | ||
128 | # CONFIG_BF548 is not set | 129 | # CONFIG_BF548 is not set |
129 | # CONFIG_BF549 is not set | 130 | # CONFIG_BF549 is not set |
130 | # CONFIG_BF561 is not set | 131 | # CONFIG_BF561 is not set |
131 | # CONFIG_BF_REV_0_0 is not set | 132 | # CONFIG_BF_REV_0_0 is not set |
133 | # CONFIG_BF_REV_0_1 is not set | ||
132 | # CONFIG_BF_REV_0_2 is not set | 134 | # CONFIG_BF_REV_0_2 is not set |
133 | CONFIG_BF_REV_0_3=y | 135 | CONFIG_BF_REV_0_3=y |
134 | # CONFIG_BF_REV_0_4 is not set | 136 | # CONFIG_BF_REV_0_4 is not set |
@@ -137,18 +139,12 @@ CONFIG_BF_REV_0_3=y | |||
137 | # CONFIG_BF_REV_NONE is not set | 139 | # CONFIG_BF_REV_NONE is not set |
138 | CONFIG_BF53x=y | 140 | CONFIG_BF53x=y |
139 | CONFIG_BFIN_SINGLE_CORE=y | 141 | CONFIG_BFIN_SINGLE_CORE=y |
142 | CONFIG_MEM_MT48LC16M16A2TG_75=y | ||
140 | CONFIG_BFIN533_EZKIT=y | 143 | CONFIG_BFIN533_EZKIT=y |
141 | # CONFIG_BFIN533_STAMP is not set | 144 | # CONFIG_BFIN533_STAMP is not set |
142 | # CONFIG_BFIN537_STAMP is not set | ||
143 | # CONFIG_BFIN533_BLUETECHNIX_CM is not set | 145 | # CONFIG_BFIN533_BLUETECHNIX_CM is not set |
144 | # CONFIG_BFIN537_BLUETECHNIX_CM is not set | 146 | # CONFIG_H8606_HVSISTEMAS is not set |
145 | # CONFIG_BFIN548_EZKIT is not set | 147 | # CONFIG_GENERIC_BF533_BOARD is not set |
146 | # CONFIG_BFIN561_BLUETECHNIX_CM is not set | ||
147 | # CONFIG_BFIN561_EZKIT is not set | ||
148 | # CONFIG_BFIN561_TEPLA is not set | ||
149 | # CONFIG_PNAV10 is not set | ||
150 | # CONFIG_GENERIC_BOARD is not set | ||
151 | CONFIG_MEM_MT48LC16M16A2TG_75=y | ||
152 | 148 | ||
153 | # | 149 | # |
154 | # BF533/2/1 Specific Configuration | 150 | # BF533/2/1 Specific Configuration |
@@ -198,7 +194,7 @@ CONFIG_CLKIN_HZ=27000000 | |||
198 | # CONFIG_BFIN_KERNEL_CLOCK is not set | 194 | # CONFIG_BFIN_KERNEL_CLOCK is not set |
199 | CONFIG_MAX_VCO_HZ=750000000 | 195 | CONFIG_MAX_VCO_HZ=750000000 |
200 | CONFIG_MIN_VCO_HZ=50000000 | 196 | CONFIG_MIN_VCO_HZ=50000000 |
201 | CONFIG_MAX_SCLK_HZ=133333333 | 197 | CONFIG_MAX_SCLK_HZ=133000000 |
202 | CONFIG_MIN_SCLK_HZ=27000000 | 198 | CONFIG_MIN_SCLK_HZ=27000000 |
203 | 199 | ||
204 | # | 200 | # |
@@ -255,6 +251,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 | |||
255 | # CONFIG_RESOURCES_64BIT is not set | 251 | # CONFIG_RESOURCES_64BIT is not set |
256 | CONFIG_ZONE_DMA_FLAG=1 | 252 | CONFIG_ZONE_DMA_FLAG=1 |
257 | CONFIG_LARGE_ALLOCS=y | 253 | CONFIG_LARGE_ALLOCS=y |
254 | # CONFIG_BFIN_GPTIMERS is not set | ||
258 | CONFIG_BFIN_DMA_5XX=y | 255 | CONFIG_BFIN_DMA_5XX=y |
259 | # CONFIG_DMA_UNCACHED_2M is not set | 256 | # CONFIG_DMA_UNCACHED_2M is not set |
260 | CONFIG_DMA_UNCACHED_1M=y | 257 | CONFIG_DMA_UNCACHED_1M=y |
@@ -276,7 +273,7 @@ CONFIG_L1_MAX_PIECE=16 | |||
276 | # | 273 | # |
277 | 274 | ||
278 | # | 275 | # |
279 | # EBIU_AMBCTL Global Control | 276 | # EBIU_AMGCTL Global Control |
280 | # | 277 | # |
281 | CONFIG_C_AMCKEN=y | 278 | CONFIG_C_AMCKEN=y |
282 | CONFIG_C_CDPRIO=y | 279 | CONFIG_C_CDPRIO=y |
@@ -526,14 +523,6 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y | |||
526 | CONFIG_MTD_BF5xx=m | 523 | CONFIG_MTD_BF5xx=m |
527 | CONFIG_BFIN_FLASH_SIZE=0x400000 | 524 | CONFIG_BFIN_FLASH_SIZE=0x400000 |
528 | CONFIG_EBIU_FLASH_BASE=0x20000000 | 525 | CONFIG_EBIU_FLASH_BASE=0x20000000 |
529 | |||
530 | # | ||
531 | # FLASH_EBIU_AMBCTL Control | ||
532 | # | ||
533 | CONFIG_BFIN_FLASH_BANK_0=0x7BB0 | ||
534 | CONFIG_BFIN_FLASH_BANK_1=0x7BB0 | ||
535 | CONFIG_BFIN_FLASH_BANK_2=0x7BB0 | ||
536 | CONFIG_BFIN_FLASH_BANK_3=0x7BB0 | ||
537 | # CONFIG_MTD_UCLINUX is not set | 526 | # CONFIG_MTD_UCLINUX is not set |
538 | # CONFIG_MTD_PLATRAM is not set | 527 | # CONFIG_MTD_PLATRAM is not set |
539 | 528 | ||
@@ -622,6 +611,7 @@ CONFIG_SMC91X=y | |||
622 | # CONFIG_DM9000 is not set | 611 | # CONFIG_DM9000 is not set |
623 | CONFIG_NETDEV_1000=y | 612 | CONFIG_NETDEV_1000=y |
624 | CONFIG_NETDEV_10000=y | 613 | CONFIG_NETDEV_10000=y |
614 | # CONFIG_AX88180 is not set | ||
625 | 615 | ||
626 | # | 616 | # |
627 | # Wireless LAN | 617 | # Wireless LAN |
@@ -683,9 +673,9 @@ CONFIG_INPUT_EVDEV=m | |||
683 | # | 673 | # |
684 | # CONFIG_AD9960 is not set | 674 | # CONFIG_AD9960 is not set |
685 | # CONFIG_SPI_ADC_BF533 is not set | 675 | # CONFIG_SPI_ADC_BF533 is not set |
686 | # CONFIG_BFIN_PFLAGS is not set | 676 | # CONFIG_BF5xx_PFLAGS is not set |
687 | # CONFIG_BF5xx_PPIFCD is not set | 677 | # CONFIG_BF5xx_PPIFCD is not set |
688 | # CONFIG_BF5xx_TIMERS is not set | 678 | # CONFIG_BFIN_SIMPLE_TIMER is not set |
689 | # CONFIG_BF5xx_PPI is not set | 679 | # CONFIG_BF5xx_PPI is not set |
690 | CONFIG_BFIN_SPORT=y | 680 | CONFIG_BFIN_SPORT=y |
691 | # CONFIG_BFIN_TIMER_LATENCY is not set | 681 | # CONFIG_BFIN_TIMER_LATENCY is not set |
@@ -708,6 +698,7 @@ CONFIG_SERIAL_BFIN_DMA=y | |||
708 | # CONFIG_SERIAL_BFIN_PIO is not set | 698 | # CONFIG_SERIAL_BFIN_PIO is not set |
709 | CONFIG_SERIAL_BFIN_UART0=y | 699 | CONFIG_SERIAL_BFIN_UART0=y |
710 | # CONFIG_BFIN_UART0_CTSRTS is not set | 700 | # CONFIG_BFIN_UART0_CTSRTS is not set |
701 | # CONFIG_SERIAL_BFIN_UART1 is not set | ||
711 | CONFIG_SERIAL_CORE=y | 702 | CONFIG_SERIAL_CORE=y |
712 | CONFIG_SERIAL_CORE_CONSOLE=y | 703 | CONFIG_SERIAL_CORE_CONSOLE=y |
713 | # CONFIG_SERIAL_BFIN_SPORT is not set | 704 | # CONFIG_SERIAL_BFIN_SPORT is not set |
diff --git a/arch/blackfin/configs/BF533-STAMP_defconfig b/arch/blackfin/configs/BF533-STAMP_defconfig index f59ade980109..b04e8e533e9a 100644 --- a/arch/blackfin/configs/BF533-STAMP_defconfig +++ b/arch/blackfin/configs/BF533-STAMP_defconfig | |||
@@ -1,6 +1,6 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.22.6 | 3 | # Linux kernel version: 2.6.22.12 |
4 | # | 4 | # |
5 | # CONFIG_MMU is not set | 5 | # CONFIG_MMU is not set |
6 | # CONFIG_FPU is not set | 6 | # CONFIG_FPU is not set |
@@ -8,7 +8,6 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y | |||
8 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 8 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
9 | CONFIG_BLACKFIN=y | 9 | CONFIG_BLACKFIN=y |
10 | CONFIG_ZONE_DMA=y | 10 | CONFIG_ZONE_DMA=y |
11 | CONFIG_BFIN=y | ||
12 | CONFIG_SEMAPHORE_SLEEPERS=y | 11 | CONFIG_SEMAPHORE_SLEEPERS=y |
13 | CONFIG_GENERIC_FIND_NEXT_BIT=y | 12 | CONFIG_GENERIC_FIND_NEXT_BIT=y |
14 | CONFIG_GENERIC_HWEIGHT=y | 13 | CONFIG_GENERIC_HWEIGHT=y |
@@ -18,7 +17,6 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
18 | CONFIG_GENERIC_GPIO=y | 17 | CONFIG_GENERIC_GPIO=y |
19 | CONFIG_FORCE_MAX_ZONEORDER=14 | 18 | CONFIG_FORCE_MAX_ZONEORDER=14 |
20 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
21 | CONFIG_IRQCHIP_DEMUX_GPIO=y | ||
22 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
23 | 21 | ||
24 | # | 22 | # |
@@ -64,7 +62,6 @@ CONFIG_FUTEX=y | |||
64 | CONFIG_ANON_INODES=y | 62 | CONFIG_ANON_INODES=y |
65 | CONFIG_EPOLL=y | 63 | CONFIG_EPOLL=y |
66 | CONFIG_SIGNALFD=y | 64 | CONFIG_SIGNALFD=y |
67 | CONFIG_TIMERFD=y | ||
68 | CONFIG_EVENTFD=y | 65 | CONFIG_EVENTFD=y |
69 | CONFIG_VM_EVENT_COUNTERS=y | 66 | CONFIG_VM_EVENT_COUNTERS=y |
70 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 | 67 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 |
@@ -117,6 +114,9 @@ CONFIG_PREEMPT_VOLUNTARY=y | |||
117 | # | 114 | # |
118 | # Processor and Board Settings | 115 | # Processor and Board Settings |
119 | # | 116 | # |
117 | # CONFIG_BF522 is not set | ||
118 | # CONFIG_BF525 is not set | ||
119 | # CONFIG_BF527 is not set | ||
120 | # CONFIG_BF531 is not set | 120 | # CONFIG_BF531 is not set |
121 | # CONFIG_BF532 is not set | 121 | # CONFIG_BF532 is not set |
122 | CONFIG_BF533=y | 122 | CONFIG_BF533=y |
@@ -125,10 +125,12 @@ CONFIG_BF533=y | |||
125 | # CONFIG_BF537 is not set | 125 | # CONFIG_BF537 is not set |
126 | # CONFIG_BF542 is not set | 126 | # CONFIG_BF542 is not set |
127 | # CONFIG_BF544 is not set | 127 | # CONFIG_BF544 is not set |
128 | # CONFIG_BF547 is not set | ||
128 | # CONFIG_BF548 is not set | 129 | # CONFIG_BF548 is not set |
129 | # CONFIG_BF549 is not set | 130 | # CONFIG_BF549 is not set |
130 | # CONFIG_BF561 is not set | 131 | # CONFIG_BF561 is not set |
131 | # CONFIG_BF_REV_0_0 is not set | 132 | # CONFIG_BF_REV_0_0 is not set |
133 | # CONFIG_BF_REV_0_1 is not set | ||
132 | # CONFIG_BF_REV_0_2 is not set | 134 | # CONFIG_BF_REV_0_2 is not set |
133 | CONFIG_BF_REV_0_3=y | 135 | CONFIG_BF_REV_0_3=y |
134 | # CONFIG_BF_REV_0_4 is not set | 136 | # CONFIG_BF_REV_0_4 is not set |
@@ -137,19 +139,13 @@ CONFIG_BF_REV_0_3=y | |||
137 | # CONFIG_BF_REV_NONE is not set | 139 | # CONFIG_BF_REV_NONE is not set |
138 | CONFIG_BF53x=y | 140 | CONFIG_BF53x=y |
139 | CONFIG_BFIN_SINGLE_CORE=y | 141 | CONFIG_BFIN_SINGLE_CORE=y |
142 | CONFIG_MEM_MT48LC64M4A2FB_7E=y | ||
143 | CONFIG_BFIN_SHARED_FLASH_ENET=y | ||
140 | # CONFIG_BFIN533_EZKIT is not set | 144 | # CONFIG_BFIN533_EZKIT is not set |
141 | CONFIG_BFIN533_STAMP=y | 145 | CONFIG_BFIN533_STAMP=y |
142 | # CONFIG_BFIN537_STAMP is not set | ||
143 | # CONFIG_BFIN533_BLUETECHNIX_CM is not set | 146 | # CONFIG_BFIN533_BLUETECHNIX_CM is not set |
144 | # CONFIG_BFIN537_BLUETECHNIX_CM is not set | 147 | # CONFIG_H8606_HVSISTEMAS is not set |
145 | # CONFIG_BFIN548_EZKIT is not set | 148 | # CONFIG_GENERIC_BF533_BOARD is not set |
146 | # CONFIG_BFIN561_BLUETECHNIX_CM is not set | ||
147 | # CONFIG_BFIN561_EZKIT is not set | ||
148 | # CONFIG_BFIN561_TEPLA is not set | ||
149 | # CONFIG_PNAV10 is not set | ||
150 | # CONFIG_GENERIC_BOARD is not set | ||
151 | CONFIG_MEM_MT48LC64M4A2FB_7E=y | ||
152 | CONFIG_BFIN_SHARED_FLASH_ENET=y | ||
153 | 149 | ||
154 | # | 150 | # |
155 | # BF533/2/1 Specific Configuration | 151 | # BF533/2/1 Specific Configuration |
@@ -199,7 +195,7 @@ CONFIG_CLKIN_HZ=11059200 | |||
199 | # CONFIG_BFIN_KERNEL_CLOCK is not set | 195 | # CONFIG_BFIN_KERNEL_CLOCK is not set |
200 | CONFIG_MAX_VCO_HZ=750000000 | 196 | CONFIG_MAX_VCO_HZ=750000000 |
201 | CONFIG_MIN_VCO_HZ=50000000 | 197 | CONFIG_MIN_VCO_HZ=50000000 |
202 | CONFIG_MAX_SCLK_HZ=133333333 | 198 | CONFIG_MAX_SCLK_HZ=133000000 |
203 | CONFIG_MIN_SCLK_HZ=27000000 | 199 | CONFIG_MIN_SCLK_HZ=27000000 |
204 | 200 | ||
205 | # | 201 | # |
@@ -267,6 +263,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 | |||
267 | # CONFIG_RESOURCES_64BIT is not set | 263 | # CONFIG_RESOURCES_64BIT is not set |
268 | CONFIG_ZONE_DMA_FLAG=1 | 264 | CONFIG_ZONE_DMA_FLAG=1 |
269 | CONFIG_LARGE_ALLOCS=y | 265 | CONFIG_LARGE_ALLOCS=y |
266 | # CONFIG_BFIN_GPTIMERS is not set | ||
270 | CONFIG_BFIN_DMA_5XX=y | 267 | CONFIG_BFIN_DMA_5XX=y |
271 | # CONFIG_DMA_UNCACHED_2M is not set | 268 | # CONFIG_DMA_UNCACHED_2M is not set |
272 | CONFIG_DMA_UNCACHED_1M=y | 269 | CONFIG_DMA_UNCACHED_1M=y |
@@ -288,7 +285,7 @@ CONFIG_L1_MAX_PIECE=16 | |||
288 | # | 285 | # |
289 | 286 | ||
290 | # | 287 | # |
291 | # EBIU_AMBCTL Global Control | 288 | # EBIU_AMGCTL Global Control |
292 | # | 289 | # |
293 | CONFIG_C_AMCKEN=y | 290 | CONFIG_C_AMCKEN=y |
294 | CONFIG_C_CDPRIO=y | 291 | CONFIG_C_CDPRIO=y |
@@ -634,6 +631,7 @@ CONFIG_SMC91X=y | |||
634 | # CONFIG_DM9000 is not set | 631 | # CONFIG_DM9000 is not set |
635 | CONFIG_NETDEV_1000=y | 632 | CONFIG_NETDEV_1000=y |
636 | CONFIG_NETDEV_10000=y | 633 | CONFIG_NETDEV_10000=y |
634 | # CONFIG_AX88180 is not set | ||
637 | 635 | ||
638 | # | 636 | # |
639 | # Wireless LAN | 637 | # Wireless LAN |
@@ -704,9 +702,9 @@ CONFIG_BFIN_TWIKEYPAD_IRQ_PFX=39 | |||
704 | # | 702 | # |
705 | # CONFIG_AD9960 is not set | 703 | # CONFIG_AD9960 is not set |
706 | # CONFIG_SPI_ADC_BF533 is not set | 704 | # CONFIG_SPI_ADC_BF533 is not set |
707 | # CONFIG_BFIN_PFLAGS is not set | 705 | # CONFIG_BF5xx_PFLAGS is not set |
708 | # CONFIG_BF5xx_PPIFCD is not set | 706 | # CONFIG_BF5xx_PPIFCD is not set |
709 | # CONFIG_BF5xx_TIMERS is not set | 707 | # CONFIG_BFIN_SIMPLE_TIMER is not set |
710 | # CONFIG_BF5xx_PPI is not set | 708 | # CONFIG_BF5xx_PPI is not set |
711 | CONFIG_BFIN_SPORT=y | 709 | CONFIG_BFIN_SPORT=y |
712 | # CONFIG_BFIN_TIMER_LATENCY is not set | 710 | # CONFIG_BFIN_TIMER_LATENCY is not set |
@@ -732,6 +730,7 @@ CONFIG_SERIAL_BFIN_DMA=y | |||
732 | # CONFIG_SERIAL_BFIN_PIO is not set | 730 | # CONFIG_SERIAL_BFIN_PIO is not set |
733 | CONFIG_SERIAL_BFIN_UART0=y | 731 | CONFIG_SERIAL_BFIN_UART0=y |
734 | # CONFIG_BFIN_UART0_CTSRTS is not set | 732 | # CONFIG_BFIN_UART0_CTSRTS is not set |
733 | # CONFIG_SERIAL_BFIN_UART1 is not set | ||
735 | CONFIG_SERIAL_CORE=y | 734 | CONFIG_SERIAL_CORE=y |
736 | CONFIG_SERIAL_CORE_CONSOLE=y | 735 | CONFIG_SERIAL_CORE_CONSOLE=y |
737 | # CONFIG_SERIAL_BFIN_SPORT is not set | 736 | # CONFIG_SERIAL_BFIN_SPORT is not set |
@@ -925,6 +924,7 @@ CONFIG_NTSC=y | |||
925 | # CONFIG_PAL_YCBCR is not set | 924 | # CONFIG_PAL_YCBCR is not set |
926 | CONFIG_ADV7393_1XMEM=y | 925 | CONFIG_ADV7393_1XMEM=y |
927 | # CONFIG_ADV7393_2XMEM is not set | 926 | # CONFIG_ADV7393_2XMEM is not set |
927 | # CONFIG_FB_BFIN_T350MCQB is not set | ||
928 | # CONFIG_FB_S1D13XXX is not set | 928 | # CONFIG_FB_S1D13XXX is not set |
929 | # CONFIG_FB_VIRTUAL is not set | 929 | # CONFIG_FB_VIRTUAL is not set |
930 | # CONFIG_LOGO is not set | 930 | # CONFIG_LOGO is not set |
@@ -979,11 +979,6 @@ CONFIG_SND_BFIN_AD73311_SE=4 | |||
979 | # CONFIG_SND_SOC is not set | 979 | # CONFIG_SND_SOC is not set |
980 | 980 | ||
981 | # | 981 | # |
982 | # SoC Audio for the ADI Blackfin | ||
983 | # | ||
984 | # CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set | ||
985 | |||
986 | # | ||
987 | # Open Sound System | 982 | # Open Sound System |
988 | # | 983 | # |
989 | # CONFIG_SOUND_PRIME is not set | 984 | # CONFIG_SOUND_PRIME is not set |
diff --git a/arch/blackfin/configs/BF537-STAMP_defconfig b/arch/blackfin/configs/BF537-STAMP_defconfig index 07eb63dc25e0..f812b66318b9 100644 --- a/arch/blackfin/configs/BF537-STAMP_defconfig +++ b/arch/blackfin/configs/BF537-STAMP_defconfig | |||
@@ -1,6 +1,6 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.22.6 | 3 | # Linux kernel version: 2.6.22.12 |
4 | # | 4 | # |
5 | # CONFIG_MMU is not set | 5 | # CONFIG_MMU is not set |
6 | # CONFIG_FPU is not set | 6 | # CONFIG_FPU is not set |
@@ -8,7 +8,6 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y | |||
8 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 8 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
9 | CONFIG_BLACKFIN=y | 9 | CONFIG_BLACKFIN=y |
10 | CONFIG_ZONE_DMA=y | 10 | CONFIG_ZONE_DMA=y |
11 | CONFIG_BFIN=y | ||
12 | CONFIG_SEMAPHORE_SLEEPERS=y | 11 | CONFIG_SEMAPHORE_SLEEPERS=y |
13 | CONFIG_GENERIC_FIND_NEXT_BIT=y | 12 | CONFIG_GENERIC_FIND_NEXT_BIT=y |
14 | CONFIG_GENERIC_HWEIGHT=y | 13 | CONFIG_GENERIC_HWEIGHT=y |
@@ -18,7 +17,6 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
18 | CONFIG_GENERIC_GPIO=y | 17 | CONFIG_GENERIC_GPIO=y |
19 | CONFIG_FORCE_MAX_ZONEORDER=14 | 18 | CONFIG_FORCE_MAX_ZONEORDER=14 |
20 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
21 | CONFIG_IRQCHIP_DEMUX_GPIO=y | ||
22 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
23 | 21 | ||
24 | # | 22 | # |
@@ -64,7 +62,6 @@ CONFIG_FUTEX=y | |||
64 | CONFIG_ANON_INODES=y | 62 | CONFIG_ANON_INODES=y |
65 | CONFIG_EPOLL=y | 63 | CONFIG_EPOLL=y |
66 | CONFIG_SIGNALFD=y | 64 | CONFIG_SIGNALFD=y |
67 | CONFIG_TIMERFD=y | ||
68 | CONFIG_EVENTFD=y | 65 | CONFIG_EVENTFD=y |
69 | CONFIG_VM_EVENT_COUNTERS=y | 66 | CONFIG_VM_EVENT_COUNTERS=y |
70 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 | 67 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 |
@@ -117,6 +114,9 @@ CONFIG_PREEMPT_VOLUNTARY=y | |||
117 | # | 114 | # |
118 | # Processor and Board Settings | 115 | # Processor and Board Settings |
119 | # | 116 | # |
117 | # CONFIG_BF522 is not set | ||
118 | # CONFIG_BF525 is not set | ||
119 | # CONFIG_BF527 is not set | ||
120 | # CONFIG_BF531 is not set | 120 | # CONFIG_BF531 is not set |
121 | # CONFIG_BF532 is not set | 121 | # CONFIG_BF532 is not set |
122 | # CONFIG_BF533 is not set | 122 | # CONFIG_BF533 is not set |
@@ -125,10 +125,12 @@ CONFIG_PREEMPT_VOLUNTARY=y | |||
125 | CONFIG_BF537=y | 125 | CONFIG_BF537=y |
126 | # CONFIG_BF542 is not set | 126 | # CONFIG_BF542 is not set |
127 | # CONFIG_BF544 is not set | 127 | # CONFIG_BF544 is not set |
128 | # CONFIG_BF547 is not set | ||
128 | # CONFIG_BF548 is not set | 129 | # CONFIG_BF548 is not set |
129 | # CONFIG_BF549 is not set | 130 | # CONFIG_BF549 is not set |
130 | # CONFIG_BF561 is not set | 131 | # CONFIG_BF561 is not set |
131 | # CONFIG_BF_REV_0_0 is not set | 132 | # CONFIG_BF_REV_0_0 is not set |
133 | # CONFIG_BF_REV_0_1 is not set | ||
132 | CONFIG_BF_REV_0_2=y | 134 | CONFIG_BF_REV_0_2=y |
133 | # CONFIG_BF_REV_0_3 is not set | 135 | # CONFIG_BF_REV_0_3 is not set |
134 | # CONFIG_BF_REV_0_4 is not set | 136 | # CONFIG_BF_REV_0_4 is not set |
@@ -137,33 +139,8 @@ CONFIG_BF_REV_0_2=y | |||
137 | # CONFIG_BF_REV_NONE is not set | 139 | # CONFIG_BF_REV_NONE is not set |
138 | CONFIG_BF53x=y | 140 | CONFIG_BF53x=y |
139 | CONFIG_BFIN_SINGLE_CORE=y | 141 | CONFIG_BFIN_SINGLE_CORE=y |
140 | # CONFIG_BFIN533_EZKIT is not set | ||
141 | # CONFIG_BFIN533_STAMP is not set | ||
142 | CONFIG_BFIN537_STAMP=y | ||
143 | # CONFIG_BFIN533_BLUETECHNIX_CM is not set | ||
144 | # CONFIG_BFIN537_BLUETECHNIX_CM is not set | ||
145 | # CONFIG_BFIN548_EZKIT is not set | ||
146 | # CONFIG_BFIN561_BLUETECHNIX_CM is not set | ||
147 | # CONFIG_BFIN561_EZKIT is not set | ||
148 | # CONFIG_BFIN561_TEPLA is not set | ||
149 | # CONFIG_PNAV10 is not set | ||
150 | # CONFIG_GENERIC_BOARD is not set | ||
151 | CONFIG_MEM_MT48LC32M8A2_75=y | 142 | CONFIG_MEM_MT48LC32M8A2_75=y |
152 | CONFIG_IRQ_PLL_WAKEUP=7 | 143 | CONFIG_IRQ_PLL_WAKEUP=7 |
153 | |||
154 | # | ||
155 | # BF537 Specific Configuration | ||
156 | # | ||
157 | |||
158 | # | ||
159 | # Interrupt Priority Assignment | ||
160 | # | ||
161 | |||
162 | # | ||
163 | # Priority | ||
164 | # | ||
165 | CONFIG_IRQ_DMA_ERROR=7 | ||
166 | CONFIG_IRQ_ERROR=7 | ||
167 | CONFIG_IRQ_RTC=8 | 144 | CONFIG_IRQ_RTC=8 |
168 | CONFIG_IRQ_PPI=8 | 145 | CONFIG_IRQ_PPI=8 |
169 | CONFIG_IRQ_SPORT0_RX=9 | 146 | CONFIG_IRQ_SPORT0_RX=9 |
@@ -176,8 +153,6 @@ CONFIG_IRQ_UART0_RX=10 | |||
176 | CONFIG_IRQ_UART0_TX=10 | 153 | CONFIG_IRQ_UART0_TX=10 |
177 | CONFIG_IRQ_UART1_RX=10 | 154 | CONFIG_IRQ_UART1_RX=10 |
178 | CONFIG_IRQ_UART1_TX=10 | 155 | CONFIG_IRQ_UART1_TX=10 |
179 | CONFIG_IRQ_CAN_RX=11 | ||
180 | CONFIG_IRQ_CAN_TX=11 | ||
181 | CONFIG_IRQ_MAC_RX=11 | 156 | CONFIG_IRQ_MAC_RX=11 |
182 | CONFIG_IRQ_MAC_TX=11 | 157 | CONFIG_IRQ_MAC_TX=11 |
183 | CONFIG_IRQ_TMR0=12 | 158 | CONFIG_IRQ_TMR0=12 |
@@ -188,11 +163,31 @@ CONFIG_IRQ_TMR4=12 | |||
188 | CONFIG_IRQ_TMR5=12 | 163 | CONFIG_IRQ_TMR5=12 |
189 | CONFIG_IRQ_TMR6=12 | 164 | CONFIG_IRQ_TMR6=12 |
190 | CONFIG_IRQ_TMR7=12 | 165 | CONFIG_IRQ_TMR7=12 |
191 | CONFIG_IRQ_PROG_INTA=12 | ||
192 | CONFIG_IRQ_PORTG_INTB=12 | 166 | CONFIG_IRQ_PORTG_INTB=12 |
193 | CONFIG_IRQ_MEM_DMA0=13 | 167 | CONFIG_IRQ_MEM_DMA0=13 |
194 | CONFIG_IRQ_MEM_DMA1=13 | 168 | CONFIG_IRQ_MEM_DMA1=13 |
195 | CONFIG_IRQ_WATCH=13 | 169 | CONFIG_IRQ_WATCH=13 |
170 | CONFIG_BFIN537_STAMP=y | ||
171 | # CONFIG_BFIN537_BLUETECHNIX_CM is not set | ||
172 | # CONFIG_PNAV10 is not set | ||
173 | # CONFIG_GENERIC_BF537_BOARD is not set | ||
174 | |||
175 | # | ||
176 | # BF537 Specific Configuration | ||
177 | # | ||
178 | |||
179 | # | ||
180 | # Interrupt Priority Assignment | ||
181 | # | ||
182 | |||
183 | # | ||
184 | # Priority | ||
185 | # | ||
186 | CONFIG_IRQ_DMA_ERROR=7 | ||
187 | CONFIG_IRQ_ERROR=7 | ||
188 | CONFIG_IRQ_CAN_RX=11 | ||
189 | CONFIG_IRQ_CAN_TX=11 | ||
190 | CONFIG_IRQ_PROG_INTA=12 | ||
196 | 191 | ||
197 | # | 192 | # |
198 | # Board customizations | 193 | # Board customizations |
@@ -206,7 +201,7 @@ CONFIG_CLKIN_HZ=25000000 | |||
206 | # CONFIG_BFIN_KERNEL_CLOCK is not set | 201 | # CONFIG_BFIN_KERNEL_CLOCK is not set |
207 | CONFIG_MAX_VCO_HZ=600000000 | 202 | CONFIG_MAX_VCO_HZ=600000000 |
208 | CONFIG_MIN_VCO_HZ=50000000 | 203 | CONFIG_MIN_VCO_HZ=50000000 |
209 | CONFIG_MAX_SCLK_HZ=133333333 | 204 | CONFIG_MAX_SCLK_HZ=133000000 |
210 | CONFIG_MIN_SCLK_HZ=27000000 | 205 | CONFIG_MIN_SCLK_HZ=27000000 |
211 | 206 | ||
212 | # | 207 | # |
@@ -263,6 +258,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 | |||
263 | # CONFIG_RESOURCES_64BIT is not set | 258 | # CONFIG_RESOURCES_64BIT is not set |
264 | CONFIG_ZONE_DMA_FLAG=1 | 259 | CONFIG_ZONE_DMA_FLAG=1 |
265 | CONFIG_LARGE_ALLOCS=y | 260 | CONFIG_LARGE_ALLOCS=y |
261 | # CONFIG_BFIN_GPTIMERS is not set | ||
266 | CONFIG_BFIN_DMA_5XX=y | 262 | CONFIG_BFIN_DMA_5XX=y |
267 | # CONFIG_DMA_UNCACHED_2M is not set | 263 | # CONFIG_DMA_UNCACHED_2M is not set |
268 | CONFIG_DMA_UNCACHED_1M=y | 264 | CONFIG_DMA_UNCACHED_1M=y |
@@ -284,7 +280,7 @@ CONFIG_L1_MAX_PIECE=16 | |||
284 | # | 280 | # |
285 | 281 | ||
286 | # | 282 | # |
287 | # EBIU_AMBCTL Global Control | 283 | # EBIU_AMGCTL Global Control |
288 | # | 284 | # |
289 | CONFIG_C_AMCKEN=y | 285 | CONFIG_C_AMCKEN=y |
290 | CONFIG_C_CDPRIO=y | 286 | CONFIG_C_CDPRIO=y |
@@ -534,14 +530,6 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y | |||
534 | CONFIG_MTD_BF5xx=m | 530 | CONFIG_MTD_BF5xx=m |
535 | CONFIG_BFIN_FLASH_SIZE=0x400000 | 531 | CONFIG_BFIN_FLASH_SIZE=0x400000 |
536 | CONFIG_EBIU_FLASH_BASE=0x20000000 | 532 | CONFIG_EBIU_FLASH_BASE=0x20000000 |
537 | |||
538 | # | ||
539 | # FLASH_EBIU_AMBCTL Control | ||
540 | # | ||
541 | CONFIG_BFIN_FLASH_BANK_0=0x7BB0 | ||
542 | CONFIG_BFIN_FLASH_BANK_1=0x7BB0 | ||
543 | CONFIG_BFIN_FLASH_BANK_2=0x7BB0 | ||
544 | CONFIG_BFIN_FLASH_BANK_3=0x7BB0 | ||
545 | # CONFIG_MTD_UCLINUX is not set | 533 | # CONFIG_MTD_UCLINUX is not set |
546 | # CONFIG_MTD_PLATRAM is not set | 534 | # CONFIG_MTD_PLATRAM is not set |
547 | 535 | ||
@@ -660,6 +648,7 @@ CONFIG_BFIN_RX_DESC_NUM=20 | |||
660 | # CONFIG_DM9000 is not set | 648 | # CONFIG_DM9000 is not set |
661 | CONFIG_NETDEV_1000=y | 649 | CONFIG_NETDEV_1000=y |
662 | CONFIG_NETDEV_10000=y | 650 | CONFIG_NETDEV_10000=y |
651 | # CONFIG_AX88180 is not set | ||
663 | 652 | ||
664 | # | 653 | # |
665 | # Wireless LAN | 654 | # Wireless LAN |
@@ -730,9 +719,9 @@ CONFIG_BFIN_TWIKEYPAD_IRQ_PFX=72 | |||
730 | # | 719 | # |
731 | # CONFIG_AD9960 is not set | 720 | # CONFIG_AD9960 is not set |
732 | # CONFIG_SPI_ADC_BF533 is not set | 721 | # CONFIG_SPI_ADC_BF533 is not set |
733 | # CONFIG_BFIN_PFLAGS is not set | 722 | # CONFIG_BF5xx_PFLAGS is not set |
734 | # CONFIG_BF5xx_PPIFCD is not set | 723 | # CONFIG_BF5xx_PPIFCD is not set |
735 | # CONFIG_BF5xx_TIMERS is not set | 724 | # CONFIG_BFIN_SIMPLE_TIMER is not set |
736 | # CONFIG_BF5xx_PPI is not set | 725 | # CONFIG_BF5xx_PPI is not set |
737 | CONFIG_BFIN_SPORT=y | 726 | CONFIG_BFIN_SPORT=y |
738 | # CONFIG_BFIN_TIMER_LATENCY is not set | 727 | # CONFIG_BFIN_TIMER_LATENCY is not set |
@@ -967,6 +956,7 @@ CONFIG_FB_BF537_LQ035=m | |||
967 | CONFIG_LQ035_SLAVE_ADDR=0x58 | 956 | CONFIG_LQ035_SLAVE_ADDR=0x58 |
968 | # CONFIG_FB_BFIN_LANDSCAPE is not set | 957 | # CONFIG_FB_BFIN_LANDSCAPE is not set |
969 | # CONFIG_FB_BFIN_BGR is not set | 958 | # CONFIG_FB_BFIN_BGR is not set |
959 | # CONFIG_FB_BFIN_T350MCQB is not set | ||
970 | # CONFIG_FB_S1D13XXX is not set | 960 | # CONFIG_FB_S1D13XXX is not set |
971 | # CONFIG_FB_VIRTUAL is not set | 961 | # CONFIG_FB_VIRTUAL is not set |
972 | # CONFIG_LOGO is not set | 962 | # CONFIG_LOGO is not set |
@@ -1021,11 +1011,6 @@ CONFIG_SND_BFIN_AD73311_SE=4 | |||
1021 | # CONFIG_SND_SOC is not set | 1011 | # CONFIG_SND_SOC is not set |
1022 | 1012 | ||
1023 | # | 1013 | # |
1024 | # SoC Audio for the ADI Blackfin | ||
1025 | # | ||
1026 | # CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set | ||
1027 | |||
1028 | # | ||
1029 | # Open Sound System | 1014 | # Open Sound System |
1030 | # | 1015 | # |
1031 | # CONFIG_SOUND_PRIME is not set | 1016 | # CONFIG_SOUND_PRIME is not set |
diff --git a/arch/blackfin/configs/BF548-EZKIT_defconfig b/arch/blackfin/configs/BF548-EZKIT_defconfig index 0dd3d2253dc2..48367cc9fe35 100644 --- a/arch/blackfin/configs/BF548-EZKIT_defconfig +++ b/arch/blackfin/configs/BF548-EZKIT_defconfig | |||
@@ -1,7 +1,6 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.22.10 | 3 | # Linux kernel version: 2.6.22.12 |
4 | # Sat Oct 27 02:34:07 2007 | ||
5 | # | 4 | # |
6 | # CONFIG_MMU is not set | 5 | # CONFIG_MMU is not set |
7 | # CONFIG_FPU is not set | 6 | # CONFIG_FPU is not set |
@@ -9,7 +8,6 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y | |||
9 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 8 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
10 | CONFIG_BLACKFIN=y | 9 | CONFIG_BLACKFIN=y |
11 | CONFIG_ZONE_DMA=y | 10 | CONFIG_ZONE_DMA=y |
12 | CONFIG_BFIN=y | ||
13 | CONFIG_SEMAPHORE_SLEEPERS=y | 11 | CONFIG_SEMAPHORE_SLEEPERS=y |
14 | CONFIG_GENERIC_FIND_NEXT_BIT=y | 12 | CONFIG_GENERIC_FIND_NEXT_BIT=y |
15 | CONFIG_GENERIC_HWEIGHT=y | 13 | CONFIG_GENERIC_HWEIGHT=y |
@@ -19,7 +17,6 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
19 | CONFIG_GENERIC_GPIO=y | 17 | CONFIG_GENERIC_GPIO=y |
20 | CONFIG_FORCE_MAX_ZONEORDER=14 | 18 | CONFIG_FORCE_MAX_ZONEORDER=14 |
21 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
22 | CONFIG_IRQCHIP_DEMUX_GPIO=y | ||
23 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
24 | 21 | ||
25 | # | 22 | # |
@@ -128,6 +125,7 @@ CONFIG_PREEMPT_VOLUNTARY=y | |||
128 | # CONFIG_BF537 is not set | 125 | # CONFIG_BF537 is not set |
129 | # CONFIG_BF542 is not set | 126 | # CONFIG_BF542 is not set |
130 | # CONFIG_BF544 is not set | 127 | # CONFIG_BF544 is not set |
128 | # CONFIG_BF547 is not set | ||
131 | # CONFIG_BF548 is not set | 129 | # CONFIG_BF548 is not set |
132 | CONFIG_BF549=y | 130 | CONFIG_BF549=y |
133 | # CONFIG_BF561 is not set | 131 | # CONFIG_BF561 is not set |
@@ -141,19 +139,6 @@ CONFIG_BF_REV_0_0=y | |||
141 | # CONFIG_BF_REV_NONE is not set | 139 | # CONFIG_BF_REV_NONE is not set |
142 | CONFIG_BF54x=y | 140 | CONFIG_BF54x=y |
143 | CONFIG_BFIN_SINGLE_CORE=y | 141 | CONFIG_BFIN_SINGLE_CORE=y |
144 | # CONFIG_BFIN527_EZKIT is not set | ||
145 | # CONFIG_BFIN533_EZKIT is not set | ||
146 | # CONFIG_BFIN533_STAMP is not set | ||
147 | # CONFIG_BFIN537_STAMP is not set | ||
148 | # CONFIG_BFIN533_BLUETECHNIX_CM is not set | ||
149 | # CONFIG_BFIN537_BLUETECHNIX_CM is not set | ||
150 | CONFIG_BFIN548_EZKIT=y | ||
151 | # CONFIG_BFIN561_BLUETECHNIX_CM is not set | ||
152 | # CONFIG_BFIN561_EZKIT is not set | ||
153 | # CONFIG_BFIN561_TEPLA is not set | ||
154 | # CONFIG_PNAV10 is not set | ||
155 | # CONFIG_H8606_HVSISTEMAS is not set | ||
156 | # CONFIG_GENERIC_BOARD is not set | ||
157 | CONFIG_IRQ_PLL_WAKEUP=7 | 142 | CONFIG_IRQ_PLL_WAKEUP=7 |
158 | CONFIG_IRQ_RTC=8 | 143 | CONFIG_IRQ_RTC=8 |
159 | CONFIG_IRQ_SPORT0_RX=9 | 144 | CONFIG_IRQ_SPORT0_RX=9 |
@@ -180,6 +165,7 @@ CONFIG_IRQ_TIMER7=11 | |||
180 | CONFIG_IRQ_TIMER8=11 | 165 | CONFIG_IRQ_TIMER8=11 |
181 | CONFIG_IRQ_TIMER9=11 | 166 | CONFIG_IRQ_TIMER9=11 |
182 | CONFIG_IRQ_TIMER10=11 | 167 | CONFIG_IRQ_TIMER10=11 |
168 | CONFIG_BFIN548_EZKIT=y | ||
183 | 169 | ||
184 | # | 170 | # |
185 | # BF548 Specific Configuration | 171 | # BF548 Specific Configuration |
@@ -279,9 +265,9 @@ CONFIG_PINT3_ASSIGN=0x02020303 | |||
279 | # | 265 | # |
280 | CONFIG_CLKIN_HZ=25000000 | 266 | CONFIG_CLKIN_HZ=25000000 |
281 | # CONFIG_BFIN_KERNEL_CLOCK is not set | 267 | # CONFIG_BFIN_KERNEL_CLOCK is not set |
282 | CONFIG_MAX_VCO_HZ=533333333 | 268 | CONFIG_MAX_VCO_HZ=533000000 |
283 | CONFIG_MIN_VCO_HZ=50000000 | 269 | CONFIG_MIN_VCO_HZ=50000000 |
284 | CONFIG_MAX_SCLK_HZ=133333333 | 270 | CONFIG_MAX_SCLK_HZ=133000000 |
285 | CONFIG_MIN_SCLK_HZ=27000000 | 271 | CONFIG_MIN_SCLK_HZ=27000000 |
286 | 272 | ||
287 | # | 273 | # |
@@ -376,6 +362,9 @@ CONFIG_BANK_0=0x7BB0 | |||
376 | CONFIG_BANK_1=0x5554 | 362 | CONFIG_BANK_1=0x5554 |
377 | CONFIG_BANK_2=0x7BB0 | 363 | CONFIG_BANK_2=0x7BB0 |
378 | CONFIG_BANK_3=0x99B3 | 364 | CONFIG_BANK_3=0x99B3 |
365 | CONFIG_EBUI_MBSCTLVAL=0x0 | ||
366 | CONFIG_EBUI_MODEVAL=0x1 | ||
367 | CONFIG_EBUI_FCTLVAL=0x6 | ||
379 | 368 | ||
380 | # | 369 | # |
381 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) | 370 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) |
@@ -702,6 +691,7 @@ CONFIG_SMSC911X=y | |||
702 | # CONFIG_DM9000 is not set | 691 | # CONFIG_DM9000 is not set |
703 | CONFIG_NETDEV_1000=y | 692 | CONFIG_NETDEV_1000=y |
704 | CONFIG_NETDEV_10000=y | 693 | CONFIG_NETDEV_10000=y |
694 | # CONFIG_AX88180 is not set | ||
705 | 695 | ||
706 | # | 696 | # |
707 | # Wireless LAN | 697 | # Wireless LAN |
@@ -1058,6 +1048,8 @@ CONFIG_SND_SOC=y | |||
1058 | CONFIG_SND_BF5XX_SOC=y | 1048 | CONFIG_SND_BF5XX_SOC=y |
1059 | CONFIG_SND_BF5XX_SOC_AC97=y | 1049 | CONFIG_SND_BF5XX_SOC_AC97=y |
1060 | CONFIG_SND_BF5XX_SOC_BF548_EZKIT=y | 1050 | CONFIG_SND_BF5XX_SOC_BF548_EZKIT=y |
1051 | # CONFIG_SND_BF5XX_SOC_WM8750 is not set | ||
1052 | # CONFIG_SND_BF5XX_SOC_WM8731 is not set | ||
1061 | CONFIG_SND_BF5XX_SPORT_NUM=0 | 1053 | CONFIG_SND_BF5XX_SPORT_NUM=0 |
1062 | # CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set | 1054 | # CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set |
1063 | CONFIG_SND_SOC_AD1980=y | 1055 | CONFIG_SND_SOC_AD1980=y |
diff --git a/arch/blackfin/configs/BF561-EZKIT_defconfig b/arch/blackfin/configs/BF561-EZKIT_defconfig index 277d72dac0f9..e9f100b45eb1 100644 --- a/arch/blackfin/configs/BF561-EZKIT_defconfig +++ b/arch/blackfin/configs/BF561-EZKIT_defconfig | |||
@@ -1,6 +1,6 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.22.6 | 3 | # Linux kernel version: 2.6.22.12 |
4 | # | 4 | # |
5 | # CONFIG_MMU is not set | 5 | # CONFIG_MMU is not set |
6 | # CONFIG_FPU is not set | 6 | # CONFIG_FPU is not set |
@@ -8,7 +8,6 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y | |||
8 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 8 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
9 | CONFIG_BLACKFIN=y | 9 | CONFIG_BLACKFIN=y |
10 | CONFIG_ZONE_DMA=y | 10 | CONFIG_ZONE_DMA=y |
11 | CONFIG_BFIN=y | ||
12 | CONFIG_SEMAPHORE_SLEEPERS=y | 11 | CONFIG_SEMAPHORE_SLEEPERS=y |
13 | CONFIG_GENERIC_FIND_NEXT_BIT=y | 12 | CONFIG_GENERIC_FIND_NEXT_BIT=y |
14 | CONFIG_GENERIC_HWEIGHT=y | 13 | CONFIG_GENERIC_HWEIGHT=y |
@@ -18,7 +17,6 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
18 | CONFIG_GENERIC_GPIO=y | 17 | CONFIG_GENERIC_GPIO=y |
19 | CONFIG_FORCE_MAX_ZONEORDER=14 | 18 | CONFIG_FORCE_MAX_ZONEORDER=14 |
20 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
21 | CONFIG_IRQCHIP_DEMUX_GPIO=y | ||
22 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
23 | 21 | ||
24 | # | 22 | # |
@@ -64,7 +62,6 @@ CONFIG_FUTEX=y | |||
64 | CONFIG_ANON_INODES=y | 62 | CONFIG_ANON_INODES=y |
65 | CONFIG_EPOLL=y | 63 | CONFIG_EPOLL=y |
66 | CONFIG_SIGNALFD=y | 64 | CONFIG_SIGNALFD=y |
67 | CONFIG_TIMERFD=y | ||
68 | CONFIG_EVENTFD=y | 65 | CONFIG_EVENTFD=y |
69 | CONFIG_VM_EVENT_COUNTERS=y | 66 | CONFIG_VM_EVENT_COUNTERS=y |
70 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 | 67 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 |
@@ -117,6 +114,9 @@ CONFIG_PREEMPT_VOLUNTARY=y | |||
117 | # | 114 | # |
118 | # Processor and Board Settings | 115 | # Processor and Board Settings |
119 | # | 116 | # |
117 | # CONFIG_BF522 is not set | ||
118 | # CONFIG_BF525 is not set | ||
119 | # CONFIG_BF527 is not set | ||
120 | # CONFIG_BF531 is not set | 120 | # CONFIG_BF531 is not set |
121 | # CONFIG_BF532 is not set | 121 | # CONFIG_BF532 is not set |
122 | # CONFIG_BF533 is not set | 122 | # CONFIG_BF533 is not set |
@@ -125,10 +125,12 @@ CONFIG_PREEMPT_VOLUNTARY=y | |||
125 | # CONFIG_BF537 is not set | 125 | # CONFIG_BF537 is not set |
126 | # CONFIG_BF542 is not set | 126 | # CONFIG_BF542 is not set |
127 | # CONFIG_BF544 is not set | 127 | # CONFIG_BF544 is not set |
128 | # CONFIG_BF547 is not set | ||
128 | # CONFIG_BF548 is not set | 129 | # CONFIG_BF548 is not set |
129 | # CONFIG_BF549 is not set | 130 | # CONFIG_BF549 is not set |
130 | CONFIG_BF561=y | 131 | CONFIG_BF561=y |
131 | # CONFIG_BF_REV_0_0 is not set | 132 | # CONFIG_BF_REV_0_0 is not set |
133 | # CONFIG_BF_REV_0_1 is not set | ||
132 | # CONFIG_BF_REV_0_2 is not set | 134 | # CONFIG_BF_REV_0_2 is not set |
133 | CONFIG_BF_REV_0_3=y | 135 | CONFIG_BF_REV_0_3=y |
134 | # CONFIG_BF_REV_0_4 is not set | 136 | # CONFIG_BF_REV_0_4 is not set |
@@ -136,18 +138,15 @@ CONFIG_BF_REV_0_3=y | |||
136 | # CONFIG_BF_REV_ANY is not set | 138 | # CONFIG_BF_REV_ANY is not set |
137 | # CONFIG_BF_REV_NONE is not set | 139 | # CONFIG_BF_REV_NONE is not set |
138 | CONFIG_BFIN_DUAL_CORE=y | 140 | CONFIG_BFIN_DUAL_CORE=y |
139 | # CONFIG_BFIN533_EZKIT is not set | 141 | CONFIG_MEM_MT48LC16M16A2TG_75=y |
140 | # CONFIG_BFIN533_STAMP is not set | 142 | CONFIG_IRQ_PLL_WAKEUP=7 |
141 | # CONFIG_BFIN537_STAMP is not set | 143 | CONFIG_IRQ_SPORT0_ERROR=7 |
142 | # CONFIG_BFIN533_BLUETECHNIX_CM is not set | 144 | CONFIG_IRQ_SPORT1_ERROR=7 |
143 | # CONFIG_BFIN537_BLUETECHNIX_CM is not set | 145 | CONFIG_IRQ_SPI_ERROR=7 |
144 | # CONFIG_BFIN548_EZKIT is not set | ||
145 | # CONFIG_BFIN561_BLUETECHNIX_CM is not set | ||
146 | CONFIG_BFIN561_EZKIT=y | 146 | CONFIG_BFIN561_EZKIT=y |
147 | # CONFIG_BFIN561_TEPLA is not set | 147 | # CONFIG_BFIN561_TEPLA is not set |
148 | # CONFIG_PNAV10 is not set | 148 | # CONFIG_BFIN561_BLUETECHNIX_CM is not set |
149 | # CONFIG_GENERIC_BOARD is not set | 149 | # CONFIG_GENERIC_BF561_BOARD is not set |
150 | CONFIG_MEM_MT48LC16M16A2TG_75=y | ||
151 | 150 | ||
152 | # | 151 | # |
153 | # BF561 Specific Configuration | 152 | # BF561 Specific Configuration |
@@ -170,15 +169,11 @@ CONFIG_BF561_COREB_RESET=y | |||
170 | # | 169 | # |
171 | # Priority | 170 | # Priority |
172 | # | 171 | # |
173 | CONFIG_IRQ_PLL_WAKEUP=7 | ||
174 | CONFIG_IRQ_DMA1_ERROR=7 | 172 | CONFIG_IRQ_DMA1_ERROR=7 |
175 | CONFIG_IRQ_DMA2_ERROR=7 | 173 | CONFIG_IRQ_DMA2_ERROR=7 |
176 | CONFIG_IRQ_IMDMA_ERROR=7 | 174 | CONFIG_IRQ_IMDMA_ERROR=7 |
177 | CONFIG_IRQ_PPI0_ERROR=7 | 175 | CONFIG_IRQ_PPI0_ERROR=7 |
178 | CONFIG_IRQ_PPI1_ERROR=7 | 176 | CONFIG_IRQ_PPI1_ERROR=7 |
179 | CONFIG_IRQ_SPORT0_ERROR=7 | ||
180 | CONFIG_IRQ_SPORT1_ERROR=7 | ||
181 | CONFIG_IRQ_SPI_ERROR=7 | ||
182 | CONFIG_IRQ_UART_ERROR=7 | 177 | CONFIG_IRQ_UART_ERROR=7 |
183 | CONFIG_IRQ_RESERVED_ERROR=7 | 178 | CONFIG_IRQ_RESERVED_ERROR=7 |
184 | CONFIG_IRQ_DMA1_0=8 | 179 | CONFIG_IRQ_DMA1_0=8 |
@@ -243,7 +238,7 @@ CONFIG_CLKIN_HZ=30000000 | |||
243 | # CONFIG_BFIN_KERNEL_CLOCK is not set | 238 | # CONFIG_BFIN_KERNEL_CLOCK is not set |
244 | CONFIG_MAX_VCO_HZ=600000000 | 239 | CONFIG_MAX_VCO_HZ=600000000 |
245 | CONFIG_MIN_VCO_HZ=50000000 | 240 | CONFIG_MIN_VCO_HZ=50000000 |
246 | CONFIG_MAX_SCLK_HZ=133333333 | 241 | CONFIG_MAX_SCLK_HZ=133000000 |
247 | CONFIG_MIN_SCLK_HZ=27000000 | 242 | CONFIG_MIN_SCLK_HZ=27000000 |
248 | 243 | ||
249 | # | 244 | # |
@@ -300,6 +295,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 | |||
300 | # CONFIG_RESOURCES_64BIT is not set | 295 | # CONFIG_RESOURCES_64BIT is not set |
301 | CONFIG_ZONE_DMA_FLAG=1 | 296 | CONFIG_ZONE_DMA_FLAG=1 |
302 | CONFIG_LARGE_ALLOCS=y | 297 | CONFIG_LARGE_ALLOCS=y |
298 | # CONFIG_BFIN_GPTIMERS is not set | ||
303 | CONFIG_BFIN_DMA_5XX=y | 299 | CONFIG_BFIN_DMA_5XX=y |
304 | # CONFIG_DMA_UNCACHED_2M is not set | 300 | # CONFIG_DMA_UNCACHED_2M is not set |
305 | CONFIG_DMA_UNCACHED_1M=y | 301 | CONFIG_DMA_UNCACHED_1M=y |
@@ -321,7 +317,7 @@ CONFIG_L1_MAX_PIECE=16 | |||
321 | # | 317 | # |
322 | 318 | ||
323 | # | 319 | # |
324 | # EBIU_AMBCTL Global Control | 320 | # EBIU_AMGCTL Global Control |
325 | # | 321 | # |
326 | CONFIG_C_AMCKEN=y | 322 | CONFIG_C_AMCKEN=y |
327 | CONFIG_C_CDPRIO=y | 323 | CONFIG_C_CDPRIO=y |
@@ -564,14 +560,6 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y | |||
564 | CONFIG_MTD_BF5xx=m | 560 | CONFIG_MTD_BF5xx=m |
565 | CONFIG_BFIN_FLASH_SIZE=0x0400000 | 561 | CONFIG_BFIN_FLASH_SIZE=0x0400000 |
566 | CONFIG_EBIU_FLASH_BASE=0x20000000 | 562 | CONFIG_EBIU_FLASH_BASE=0x20000000 |
567 | |||
568 | # | ||
569 | # FLASH_EBIU_AMBCTL Control | ||
570 | # | ||
571 | CONFIG_BFIN_FLASH_BANK_0=0x7BB0 | ||
572 | CONFIG_BFIN_FLASH_BANK_1=0x7BB0 | ||
573 | CONFIG_BFIN_FLASH_BANK_2=0x7BB0 | ||
574 | CONFIG_BFIN_FLASH_BANK_3=0x7BB0 | ||
575 | # CONFIG_MTD_UCLINUX is not set | 563 | # CONFIG_MTD_UCLINUX is not set |
576 | # CONFIG_MTD_PLATRAM is not set | 564 | # CONFIG_MTD_PLATRAM is not set |
577 | 565 | ||
@@ -660,6 +648,7 @@ CONFIG_SMC91X=y | |||
660 | # CONFIG_DM9000 is not set | 648 | # CONFIG_DM9000 is not set |
661 | CONFIG_NETDEV_1000=y | 649 | CONFIG_NETDEV_1000=y |
662 | CONFIG_NETDEV_10000=y | 650 | CONFIG_NETDEV_10000=y |
651 | # CONFIG_AX88180 is not set | ||
663 | 652 | ||
664 | # | 653 | # |
665 | # Wireless LAN | 654 | # Wireless LAN |
@@ -721,9 +710,9 @@ CONFIG_INPUT_EVDEV=m | |||
721 | # | 710 | # |
722 | # CONFIG_AD9960 is not set | 711 | # CONFIG_AD9960 is not set |
723 | # CONFIG_SPI_ADC_BF533 is not set | 712 | # CONFIG_SPI_ADC_BF533 is not set |
724 | # CONFIG_BFIN_PFLAGS is not set | 713 | # CONFIG_BF5xx_PFLAGS is not set |
725 | # CONFIG_BF5xx_PPIFCD is not set | 714 | # CONFIG_BF5xx_PPIFCD is not set |
726 | # CONFIG_BF5xx_TIMERS is not set | 715 | # CONFIG_BFIN_SIMPLE_TIMER is not set |
727 | # CONFIG_BF5xx_PPI is not set | 716 | # CONFIG_BF5xx_PPI is not set |
728 | # CONFIG_BFIN_SPORT is not set | 717 | # CONFIG_BFIN_SPORT is not set |
729 | # CONFIG_BFIN_TIMER_LATENCY is not set | 718 | # CONFIG_BFIN_TIMER_LATENCY is not set |
diff --git a/arch/blackfin/configs/H8606_defconfig b/arch/blackfin/configs/H8606_defconfig new file mode 100644 index 000000000000..18cbb8c3c373 --- /dev/null +++ b/arch/blackfin/configs/H8606_defconfig | |||
@@ -0,0 +1,1160 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.22.12 | ||
4 | # | ||
5 | # CONFIG_MMU is not set | ||
6 | # CONFIG_FPU is not set | ||
7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
8 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | ||
9 | CONFIG_BLACKFIN=y | ||
10 | CONFIG_ZONE_DMA=y | ||
11 | CONFIG_SEMAPHORE_SLEEPERS=y | ||
12 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
13 | CONFIG_GENERIC_HWEIGHT=y | ||
14 | CONFIG_GENERIC_HARDIRQS=y | ||
15 | CONFIG_GENERIC_IRQ_PROBE=y | ||
16 | # CONFIG_GENERIC_TIME is not set | ||
17 | CONFIG_GENERIC_GPIO=y | ||
18 | CONFIG_FORCE_MAX_ZONEORDER=14 | ||
19 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
21 | |||
22 | # | ||
23 | # Code maturity level options | ||
24 | # | ||
25 | CONFIG_EXPERIMENTAL=y | ||
26 | CONFIG_BROKEN_ON_SMP=y | ||
27 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
28 | |||
29 | # | ||
30 | # General setup | ||
31 | # | ||
32 | CONFIG_LOCALVERSION="" | ||
33 | CONFIG_LOCALVERSION_AUTO=y | ||
34 | CONFIG_SYSVIPC=y | ||
35 | # CONFIG_IPC_NS is not set | ||
36 | CONFIG_SYSVIPC_SYSCTL=y | ||
37 | # CONFIG_POSIX_MQUEUE is not set | ||
38 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
39 | # CONFIG_TASKSTATS is not set | ||
40 | # CONFIG_UTS_NS is not set | ||
41 | # CONFIG_AUDIT is not set | ||
42 | # CONFIG_IKCONFIG is not set | ||
43 | CONFIG_LOG_BUF_SHIFT=14 | ||
44 | CONFIG_SYSFS_DEPRECATED=y | ||
45 | # CONFIG_RELAY is not set | ||
46 | # CONFIG_BLK_DEV_INITRD is not set | ||
47 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
48 | CONFIG_SYSCTL=y | ||
49 | CONFIG_EMBEDDED=y | ||
50 | CONFIG_UID16=y | ||
51 | CONFIG_SYSCTL_SYSCALL=y | ||
52 | CONFIG_KALLSYMS=y | ||
53 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
54 | CONFIG_HOTPLUG=y | ||
55 | CONFIG_PRINTK=y | ||
56 | CONFIG_BUG=y | ||
57 | CONFIG_ELF_CORE=y | ||
58 | CONFIG_BASE_FULL=y | ||
59 | CONFIG_FUTEX=y | ||
60 | CONFIG_ANON_INODES=y | ||
61 | CONFIG_EPOLL=y | ||
62 | CONFIG_SIGNALFD=y | ||
63 | CONFIG_EVENTFD=y | ||
64 | CONFIG_VM_EVENT_COUNTERS=y | ||
65 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 | ||
66 | # CONFIG_NP2 is not set | ||
67 | CONFIG_SLAB=y | ||
68 | # CONFIG_SLUB is not set | ||
69 | # CONFIG_SLOB is not set | ||
70 | CONFIG_RT_MUTEXES=y | ||
71 | CONFIG_TINY_SHMEM=y | ||
72 | CONFIG_BASE_SMALL=0 | ||
73 | |||
74 | # | ||
75 | # Loadable module support | ||
76 | # | ||
77 | CONFIG_MODULES=y | ||
78 | CONFIG_MODULE_UNLOAD=y | ||
79 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
80 | # CONFIG_MODVERSIONS is not set | ||
81 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
82 | CONFIG_KMOD=y | ||
83 | |||
84 | # | ||
85 | # Block layer | ||
86 | # | ||
87 | CONFIG_BLOCK=y | ||
88 | # CONFIG_LBD is not set | ||
89 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
90 | # CONFIG_LSF is not set | ||
91 | |||
92 | # | ||
93 | # IO Schedulers | ||
94 | # | ||
95 | CONFIG_IOSCHED_NOOP=y | ||
96 | CONFIG_IOSCHED_AS=y | ||
97 | # CONFIG_IOSCHED_DEADLINE is not set | ||
98 | CONFIG_IOSCHED_CFQ=y | ||
99 | CONFIG_DEFAULT_AS=y | ||
100 | # CONFIG_DEFAULT_DEADLINE is not set | ||
101 | # CONFIG_DEFAULT_CFQ is not set | ||
102 | # CONFIG_DEFAULT_NOOP is not set | ||
103 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
104 | CONFIG_PREEMPT_NONE=y | ||
105 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
106 | # CONFIG_PREEMPT is not set | ||
107 | |||
108 | # | ||
109 | # Blackfin Processor Options | ||
110 | # | ||
111 | |||
112 | # | ||
113 | # Processor and Board Settings | ||
114 | # | ||
115 | # CONFIG_BF522 is not set | ||
116 | # CONFIG_BF525 is not set | ||
117 | # CONFIG_BF527 is not set | ||
118 | # CONFIG_BF531 is not set | ||
119 | CONFIG_BF532=y | ||
120 | # CONFIG_BF533 is not set | ||
121 | # CONFIG_BF534 is not set | ||
122 | # CONFIG_BF536 is not set | ||
123 | # CONFIG_BF537 is not set | ||
124 | # CONFIG_BF542 is not set | ||
125 | # CONFIG_BF544 is not set | ||
126 | # CONFIG_BF547 is not set | ||
127 | # CONFIG_BF548 is not set | ||
128 | # CONFIG_BF549 is not set | ||
129 | # CONFIG_BF561 is not set | ||
130 | # CONFIG_BF_REV_0_0 is not set | ||
131 | # CONFIG_BF_REV_0_1 is not set | ||
132 | # CONFIG_BF_REV_0_2 is not set | ||
133 | # CONFIG_BF_REV_0_3 is not set | ||
134 | # CONFIG_BF_REV_0_4 is not set | ||
135 | CONFIG_BF_REV_0_5=y | ||
136 | # CONFIG_BF_REV_ANY is not set | ||
137 | # CONFIG_BF_REV_NONE is not set | ||
138 | CONFIG_BF53x=y | ||
139 | CONFIG_BFIN_SINGLE_CORE=y | ||
140 | CONFIG_MEM_MT48LC16M16A2TG_75=y | ||
141 | # CONFIG_BFIN533_EZKIT is not set | ||
142 | # CONFIG_BFIN533_STAMP is not set | ||
143 | # CONFIG_BFIN533_BLUETECHNIX_CM is not set | ||
144 | CONFIG_H8606_HVSISTEMAS=y | ||
145 | # CONFIG_GENERIC_BF533_BOARD is not set | ||
146 | |||
147 | # | ||
148 | # BF533/2/1 Specific Configuration | ||
149 | # | ||
150 | |||
151 | # | ||
152 | # Interrupt Priority Assignment | ||
153 | # | ||
154 | |||
155 | # | ||
156 | # Priority | ||
157 | # | ||
158 | CONFIG_UART_ERROR=7 | ||
159 | CONFIG_SPORT0_ERROR=7 | ||
160 | CONFIG_SPI_ERROR=7 | ||
161 | CONFIG_SPORT1_ERROR=7 | ||
162 | CONFIG_PPI_ERROR=7 | ||
163 | CONFIG_DMA_ERROR=7 | ||
164 | CONFIG_PLLWAKE_ERROR=7 | ||
165 | CONFIG_RTC_ERROR=8 | ||
166 | CONFIG_DMA0_PPI=8 | ||
167 | CONFIG_DMA1_SPORT0RX=9 | ||
168 | CONFIG_DMA2_SPORT0TX=9 | ||
169 | CONFIG_DMA3_SPORT1RX=9 | ||
170 | CONFIG_DMA4_SPORT1TX=9 | ||
171 | CONFIG_DMA5_SPI=10 | ||
172 | CONFIG_DMA6_UARTRX=10 | ||
173 | CONFIG_DMA7_UARTTX=10 | ||
174 | CONFIG_TIMER0=11 | ||
175 | CONFIG_TIMER1=11 | ||
176 | CONFIG_TIMER2=11 | ||
177 | CONFIG_PFA=12 | ||
178 | CONFIG_PFB=12 | ||
179 | CONFIG_MEMDMA0=13 | ||
180 | CONFIG_MEMDMA1=13 | ||
181 | CONFIG_WDTIMER=13 | ||
182 | |||
183 | # | ||
184 | # Board customizations | ||
185 | # | ||
186 | # CONFIG_CMDLINE_BOOL is not set | ||
187 | |||
188 | # | ||
189 | # Clock/PLL Setup | ||
190 | # | ||
191 | CONFIG_CLKIN_HZ=25000000 | ||
192 | # CONFIG_BFIN_KERNEL_CLOCK is not set | ||
193 | CONFIG_MAX_VCO_HZ=400000000 | ||
194 | CONFIG_MIN_VCO_HZ=50000000 | ||
195 | CONFIG_MAX_SCLK_HZ=133000000 | ||
196 | CONFIG_MIN_SCLK_HZ=27000000 | ||
197 | |||
198 | # | ||
199 | # Kernel Timer/Scheduler | ||
200 | # | ||
201 | # CONFIG_HZ_100 is not set | ||
202 | CONFIG_HZ_250=y | ||
203 | # CONFIG_HZ_300 is not set | ||
204 | # CONFIG_HZ_1000 is not set | ||
205 | CONFIG_HZ=250 | ||
206 | |||
207 | # | ||
208 | # Memory Setup | ||
209 | # | ||
210 | CONFIG_MEM_SIZE=32 | ||
211 | CONFIG_MEM_ADD_WIDTH=9 | ||
212 | CONFIG_BOOT_LOAD=0x1000 | ||
213 | CONFIG_BFIN_SCRATCH_REG_RETN=y | ||
214 | # CONFIG_BFIN_SCRATCH_REG_RETE is not set | ||
215 | # CONFIG_BFIN_SCRATCH_REG_CYCLES is not set | ||
216 | |||
217 | # | ||
218 | # Blackfin Kernel Optimizations | ||
219 | # | ||
220 | |||
221 | # | ||
222 | # Memory Optimizations | ||
223 | # | ||
224 | CONFIG_I_ENTRY_L1=y | ||
225 | CONFIG_EXCPT_IRQ_SYSC_L1=y | ||
226 | CONFIG_DO_IRQ_L1=y | ||
227 | CONFIG_CORE_TIMER_IRQ_L1=y | ||
228 | CONFIG_IDLE_L1=y | ||
229 | CONFIG_SCHEDULE_L1=y | ||
230 | CONFIG_ARITHMETIC_OPS_L1=y | ||
231 | CONFIG_ACCESS_OK_L1=y | ||
232 | CONFIG_MEMSET_L1=y | ||
233 | CONFIG_MEMCPY_L1=y | ||
234 | CONFIG_SYS_BFIN_SPINLOCK_L1=y | ||
235 | # CONFIG_IP_CHECKSUM_L1 is not set | ||
236 | # CONFIG_CACHELINE_ALIGNED_L1 is not set | ||
237 | # CONFIG_SYSCALL_TAB_L1 is not set | ||
238 | # CONFIG_CPLB_SWITCH_TAB_L1 is not set | ||
239 | CONFIG_RAMKERNEL=y | ||
240 | # CONFIG_ROMKERNEL is not set | ||
241 | CONFIG_SELECT_MEMORY_MODEL=y | ||
242 | CONFIG_FLATMEM_MANUAL=y | ||
243 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
244 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
245 | CONFIG_FLATMEM=y | ||
246 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
247 | # CONFIG_SPARSEMEM_STATIC is not set | ||
248 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
249 | # CONFIG_RESOURCES_64BIT is not set | ||
250 | CONFIG_ZONE_DMA_FLAG=1 | ||
251 | CONFIG_LARGE_ALLOCS=y | ||
252 | CONFIG_BFIN_GPTIMERS=y | ||
253 | CONFIG_BFIN_DMA_5XX=y | ||
254 | # CONFIG_DMA_UNCACHED_2M is not set | ||
255 | CONFIG_DMA_UNCACHED_1M=y | ||
256 | # CONFIG_DMA_UNCACHED_NONE is not set | ||
257 | |||
258 | # | ||
259 | # Cache Support | ||
260 | # | ||
261 | CONFIG_BFIN_ICACHE=y | ||
262 | CONFIG_BFIN_DCACHE=y | ||
263 | # CONFIG_BFIN_DCACHE_BANKA is not set | ||
264 | CONFIG_BFIN_ICACHE_LOCK=y | ||
265 | CONFIG_BFIN_WB=y | ||
266 | # CONFIG_BFIN_WT is not set | ||
267 | CONFIG_L1_MAX_PIECE=16 | ||
268 | |||
269 | # | ||
270 | # Asynchonous Memory Configuration | ||
271 | # | ||
272 | |||
273 | # | ||
274 | # EBIU_AMGCTL Global Control | ||
275 | # | ||
276 | CONFIG_C_AMCKEN=y | ||
277 | CONFIG_C_CDPRIO=y | ||
278 | # CONFIG_C_AMBEN is not set | ||
279 | # CONFIG_C_AMBEN_B0 is not set | ||
280 | # CONFIG_C_AMBEN_B0_B1 is not set | ||
281 | # CONFIG_C_AMBEN_B0_B1_B2 is not set | ||
282 | CONFIG_C_AMBEN_ALL=y | ||
283 | |||
284 | # | ||
285 | # EBIU_AMBCTL Control | ||
286 | # | ||
287 | CONFIG_BANK_0=0x7BB0 | ||
288 | CONFIG_BANK_1=0x7BB0 | ||
289 | CONFIG_BANK_2=0x7BB0 | ||
290 | CONFIG_BANK_3=0x99B3 | ||
291 | |||
292 | # | ||
293 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) | ||
294 | # | ||
295 | # CONFIG_PCI is not set | ||
296 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
297 | |||
298 | # | ||
299 | # PCCARD (PCMCIA/CardBus) support | ||
300 | # | ||
301 | # CONFIG_PCCARD is not set | ||
302 | |||
303 | # | ||
304 | # Executable file formats | ||
305 | # | ||
306 | CONFIG_BINFMT_ELF_FDPIC=y | ||
307 | CONFIG_BINFMT_FLAT=y | ||
308 | CONFIG_BINFMT_ZFLAT=y | ||
309 | # CONFIG_BINFMT_SHARED_FLAT is not set | ||
310 | # CONFIG_BINFMT_MISC is not set | ||
311 | |||
312 | # | ||
313 | # Power management options | ||
314 | # | ||
315 | CONFIG_PM=y | ||
316 | CONFIG_PM_LEGACY=y | ||
317 | # CONFIG_PM_DEBUG is not set | ||
318 | # CONFIG_PM_SYSFS_DEPRECATED is not set | ||
319 | CONFIG_PM_WAKEUP_GPIO_BY_SIC_IWR=y | ||
320 | # CONFIG_PM_WAKEUP_BY_GPIO is not set | ||
321 | # CONFIG_PM_WAKEUP_GPIO_API is not set | ||
322 | CONFIG_PM_WAKEUP_SIC_IWR=0x100000 | ||
323 | |||
324 | # | ||
325 | # Networking | ||
326 | # | ||
327 | CONFIG_NET=y | ||
328 | |||
329 | # | ||
330 | # Networking options | ||
331 | # | ||
332 | CONFIG_PACKET=y | ||
333 | # CONFIG_PACKET_MMAP is not set | ||
334 | CONFIG_UNIX=y | ||
335 | CONFIG_XFRM=y | ||
336 | # CONFIG_XFRM_USER is not set | ||
337 | # CONFIG_XFRM_SUB_POLICY is not set | ||
338 | # CONFIG_XFRM_MIGRATE is not set | ||
339 | # CONFIG_NET_KEY is not set | ||
340 | CONFIG_INET=y | ||
341 | # CONFIG_IP_MULTICAST is not set | ||
342 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
343 | CONFIG_IP_FIB_HASH=y | ||
344 | CONFIG_IP_PNP=y | ||
345 | # CONFIG_IP_PNP_DHCP is not set | ||
346 | # CONFIG_IP_PNP_BOOTP is not set | ||
347 | # CONFIG_IP_PNP_RARP is not set | ||
348 | # CONFIG_NET_IPIP is not set | ||
349 | # CONFIG_NET_IPGRE is not set | ||
350 | # CONFIG_ARPD is not set | ||
351 | CONFIG_SYN_COOKIES=y | ||
352 | # CONFIG_INET_AH is not set | ||
353 | # CONFIG_INET_ESP is not set | ||
354 | # CONFIG_INET_IPCOMP is not set | ||
355 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
356 | # CONFIG_INET_TUNNEL is not set | ||
357 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
358 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
359 | CONFIG_INET_XFRM_MODE_BEET=y | ||
360 | CONFIG_INET_DIAG=y | ||
361 | CONFIG_INET_TCP_DIAG=y | ||
362 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
363 | CONFIG_TCP_CONG_CUBIC=y | ||
364 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
365 | # CONFIG_TCP_MD5SIG is not set | ||
366 | # CONFIG_IPV6 is not set | ||
367 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
368 | # CONFIG_INET6_TUNNEL is not set | ||
369 | # CONFIG_NETLABEL is not set | ||
370 | # CONFIG_NETWORK_SECMARK is not set | ||
371 | # CONFIG_NETFILTER is not set | ||
372 | # CONFIG_IP_DCCP is not set | ||
373 | # CONFIG_IP_SCTP is not set | ||
374 | # CONFIG_TIPC is not set | ||
375 | # CONFIG_ATM is not set | ||
376 | # CONFIG_BRIDGE is not set | ||
377 | # CONFIG_VLAN_8021Q is not set | ||
378 | # CONFIG_DECNET is not set | ||
379 | # CONFIG_LLC2 is not set | ||
380 | # CONFIG_IPX is not set | ||
381 | # CONFIG_ATALK is not set | ||
382 | # CONFIG_X25 is not set | ||
383 | # CONFIG_LAPB is not set | ||
384 | # CONFIG_ECONET is not set | ||
385 | # CONFIG_WAN_ROUTER is not set | ||
386 | |||
387 | # | ||
388 | # QoS and/or fair queueing | ||
389 | # | ||
390 | # CONFIG_NET_SCHED is not set | ||
391 | |||
392 | # | ||
393 | # Network testing | ||
394 | # | ||
395 | # CONFIG_NET_PKTGEN is not set | ||
396 | # CONFIG_HAMRADIO is not set | ||
397 | CONFIG_IRDA=m | ||
398 | |||
399 | # | ||
400 | # IrDA protocols | ||
401 | # | ||
402 | CONFIG_IRLAN=m | ||
403 | CONFIG_IRCOMM=m | ||
404 | # CONFIG_IRDA_ULTRA is not set | ||
405 | |||
406 | # | ||
407 | # IrDA options | ||
408 | # | ||
409 | CONFIG_IRDA_CACHE_LAST_LSAP=y | ||
410 | # CONFIG_IRDA_FAST_RR is not set | ||
411 | # CONFIG_IRDA_DEBUG is not set | ||
412 | |||
413 | # | ||
414 | # Infrared-port device drivers | ||
415 | # | ||
416 | |||
417 | # | ||
418 | # SIR device drivers | ||
419 | # | ||
420 | CONFIG_IRTTY_SIR=m | ||
421 | |||
422 | # | ||
423 | # Dongle support | ||
424 | # | ||
425 | # CONFIG_DONGLE is not set | ||
426 | |||
427 | # | ||
428 | # Old SIR device drivers | ||
429 | # | ||
430 | # CONFIG_IRPORT_SIR is not set | ||
431 | |||
432 | # | ||
433 | # Old Serial dongle support | ||
434 | # | ||
435 | |||
436 | # | ||
437 | # FIR device drivers | ||
438 | # | ||
439 | # CONFIG_BT is not set | ||
440 | # CONFIG_AF_RXRPC is not set | ||
441 | |||
442 | # | ||
443 | # Wireless | ||
444 | # | ||
445 | # CONFIG_CFG80211 is not set | ||
446 | # CONFIG_WIRELESS_EXT is not set | ||
447 | # CONFIG_MAC80211 is not set | ||
448 | # CONFIG_IEEE80211 is not set | ||
449 | # CONFIG_RFKILL is not set | ||
450 | |||
451 | # | ||
452 | # Device Drivers | ||
453 | # | ||
454 | |||
455 | # | ||
456 | # Generic Driver Options | ||
457 | # | ||
458 | CONFIG_STANDALONE=y | ||
459 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
460 | # CONFIG_FW_LOADER is not set | ||
461 | # CONFIG_SYS_HYPERVISOR is not set | ||
462 | |||
463 | # | ||
464 | # Connector - unified userspace <-> kernelspace linker | ||
465 | # | ||
466 | # CONFIG_CONNECTOR is not set | ||
467 | CONFIG_MTD=y | ||
468 | # CONFIG_MTD_DEBUG is not set | ||
469 | # CONFIG_MTD_CONCAT is not set | ||
470 | CONFIG_MTD_PARTITIONS=y | ||
471 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
472 | # CONFIG_MTD_CMDLINE_PARTS is not set | ||
473 | |||
474 | # | ||
475 | # User Modules And Translation Layers | ||
476 | # | ||
477 | CONFIG_MTD_CHAR=y | ||
478 | CONFIG_MTD_BLKDEVS=y | ||
479 | CONFIG_MTD_BLOCK=y | ||
480 | # CONFIG_FTL is not set | ||
481 | # CONFIG_NFTL is not set | ||
482 | # CONFIG_INFTL is not set | ||
483 | # CONFIG_RFD_FTL is not set | ||
484 | # CONFIG_SSFDC is not set | ||
485 | |||
486 | # | ||
487 | # RAM/ROM/Flash chip drivers | ||
488 | # | ||
489 | # CONFIG_MTD_CFI is not set | ||
490 | # CONFIG_MTD_JEDECPROBE is not set | ||
491 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
492 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
493 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
494 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
495 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
496 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
497 | CONFIG_MTD_CFI_I1=y | ||
498 | CONFIG_MTD_CFI_I2=y | ||
499 | # CONFIG_MTD_CFI_I4 is not set | ||
500 | # CONFIG_MTD_CFI_I8 is not set | ||
501 | CONFIG_MTD_RAM=y | ||
502 | CONFIG_MTD_ROM=y | ||
503 | # CONFIG_MTD_ABSENT is not set | ||
504 | |||
505 | # | ||
506 | # Mapping drivers for chip access | ||
507 | # | ||
508 | CONFIG_MTD_COMPLEX_MAPPINGS=y | ||
509 | # CONFIG_MTD_PHYSMAP is not set | ||
510 | # CONFIG_MTD_BF5xx is not set | ||
511 | # CONFIG_MTD_UCLINUX is not set | ||
512 | # CONFIG_MTD_PLATRAM is not set | ||
513 | |||
514 | # | ||
515 | # Self-contained MTD device drivers | ||
516 | # | ||
517 | # CONFIG_MTD_DATAFLASH is not set | ||
518 | CONFIG_MTD_M25P80=y | ||
519 | CONFIG_M25PXX_USE_FAST_READ=y | ||
520 | # CONFIG_MTD_SLRAM is not set | ||
521 | # CONFIG_MTD_PHRAM is not set | ||
522 | # CONFIG_MTD_MTDRAM is not set | ||
523 | # CONFIG_MTD_BLOCK2MTD is not set | ||
524 | |||
525 | # | ||
526 | # Disk-On-Chip Device Drivers | ||
527 | # | ||
528 | # CONFIG_MTD_DOC2000 is not set | ||
529 | # CONFIG_MTD_DOC2001 is not set | ||
530 | # CONFIG_MTD_DOC2001PLUS is not set | ||
531 | # CONFIG_MTD_NAND is not set | ||
532 | # CONFIG_MTD_ONENAND is not set | ||
533 | |||
534 | # | ||
535 | # UBI - Unsorted block images | ||
536 | # | ||
537 | # CONFIG_MTD_UBI is not set | ||
538 | |||
539 | # | ||
540 | # Parallel port support | ||
541 | # | ||
542 | # CONFIG_PARPORT is not set | ||
543 | |||
544 | # | ||
545 | # Plug and Play support | ||
546 | # | ||
547 | # CONFIG_PNPACPI is not set | ||
548 | |||
549 | # | ||
550 | # Block devices | ||
551 | # | ||
552 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
553 | # CONFIG_BLK_DEV_LOOP is not set | ||
554 | # CONFIG_BLK_DEV_NBD is not set | ||
555 | CONFIG_BLK_DEV_RAM=y | ||
556 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
557 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
558 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
559 | # CONFIG_CDROM_PKTCDVD is not set | ||
560 | # CONFIG_ATA_OVER_ETH is not set | ||
561 | |||
562 | # | ||
563 | # Misc devices | ||
564 | # | ||
565 | # CONFIG_IDE is not set | ||
566 | |||
567 | # | ||
568 | # SCSI device support | ||
569 | # | ||
570 | # CONFIG_RAID_ATTRS is not set | ||
571 | # CONFIG_SCSI is not set | ||
572 | # CONFIG_SCSI_NETLINK is not set | ||
573 | # CONFIG_ATA is not set | ||
574 | |||
575 | # | ||
576 | # Multi-device support (RAID and LVM) | ||
577 | # | ||
578 | # CONFIG_MD is not set | ||
579 | |||
580 | # | ||
581 | # Network device support | ||
582 | # | ||
583 | CONFIG_NETDEVICES=y | ||
584 | # CONFIG_DUMMY is not set | ||
585 | # CONFIG_BONDING is not set | ||
586 | # CONFIG_EQUALIZER is not set | ||
587 | # CONFIG_TUN is not set | ||
588 | # CONFIG_PHYLIB is not set | ||
589 | |||
590 | # | ||
591 | # Ethernet (10 or 100Mbit) | ||
592 | # | ||
593 | CONFIG_NET_ETHERNET=y | ||
594 | CONFIG_MII=y | ||
595 | # CONFIG_SMC91X is not set | ||
596 | # CONFIG_SMSC911X is not set | ||
597 | CONFIG_DM9000=y | ||
598 | CONFIG_NETDEV_1000=y | ||
599 | CONFIG_NETDEV_10000=y | ||
600 | # CONFIG_AX88180 is not set | ||
601 | |||
602 | # | ||
603 | # Wireless LAN | ||
604 | # | ||
605 | # CONFIG_WLAN_PRE80211 is not set | ||
606 | # CONFIG_WLAN_80211 is not set | ||
607 | # CONFIG_WAN is not set | ||
608 | # CONFIG_PPP is not set | ||
609 | # CONFIG_SLIP is not set | ||
610 | # CONFIG_SHAPER is not set | ||
611 | # CONFIG_NETCONSOLE is not set | ||
612 | # CONFIG_NETPOLL is not set | ||
613 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
614 | |||
615 | # | ||
616 | # ISDN subsystem | ||
617 | # | ||
618 | # CONFIG_ISDN is not set | ||
619 | |||
620 | # | ||
621 | # Telephony Support | ||
622 | # | ||
623 | # CONFIG_PHONE is not set | ||
624 | |||
625 | # | ||
626 | # Input device support | ||
627 | # | ||
628 | CONFIG_INPUT=y | ||
629 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
630 | # CONFIG_INPUT_POLLDEV is not set | ||
631 | |||
632 | # | ||
633 | # Userland interfaces | ||
634 | # | ||
635 | # CONFIG_INPUT_MOUSEDEV is not set | ||
636 | # CONFIG_INPUT_JOYDEV is not set | ||
637 | # CONFIG_INPUT_TSDEV is not set | ||
638 | CONFIG_INPUT_EVDEV=m | ||
639 | # CONFIG_INPUT_EVBUG is not set | ||
640 | |||
641 | # | ||
642 | # Input Device Drivers | ||
643 | # | ||
644 | # CONFIG_INPUT_KEYBOARD is not set | ||
645 | # CONFIG_INPUT_MOUSE is not set | ||
646 | # CONFIG_INPUT_JOYSTICK is not set | ||
647 | # CONFIG_INPUT_TABLET is not set | ||
648 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
649 | CONFIG_INPUT_MISC=y | ||
650 | # CONFIG_INPUT_ATI_REMOTE is not set | ||
651 | # CONFIG_INPUT_ATI_REMOTE2 is not set | ||
652 | # CONFIG_INPUT_KEYSPAN_REMOTE is not set | ||
653 | # CONFIG_INPUT_POWERMATE is not set | ||
654 | # CONFIG_INPUT_YEALINK is not set | ||
655 | # CONFIG_INPUT_UINPUT is not set | ||
656 | # CONFIG_BF53X_PFBUTTONS is not set | ||
657 | |||
658 | # | ||
659 | # Hardware I/O ports | ||
660 | # | ||
661 | # CONFIG_SERIO is not set | ||
662 | # CONFIG_GAMEPORT is not set | ||
663 | |||
664 | # | ||
665 | # Character devices | ||
666 | # | ||
667 | # CONFIG_AD9960 is not set | ||
668 | # CONFIG_SPI_ADC_BF533 is not set | ||
669 | CONFIG_BF5xx_PFLAGS=y | ||
670 | # CONFIG_BF5xx_PFLAGS_PROC is not set | ||
671 | # CONFIG_BF5xx_PPIFCD is not set | ||
672 | CONFIG_BFIN_SIMPLE_TIMER=y | ||
673 | # CONFIG_BF5xx_PPI is not set | ||
674 | CONFIG_BFIN_SPORT=y | ||
675 | CONFIG_BFIN_TIMER_LATENCY=y | ||
676 | # CONFIG_AD5304 is not set | ||
677 | # CONFIG_BF5xx_FBDMA is not set | ||
678 | # CONFIG_VT is not set | ||
679 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
680 | |||
681 | # | ||
682 | # Serial drivers | ||
683 | # | ||
684 | # CONFIG_SERIAL_8250 is not set | ||
685 | |||
686 | # | ||
687 | # Non-8250 serial port support | ||
688 | # | ||
689 | CONFIG_SERIAL_BFIN=y | ||
690 | CONFIG_SERIAL_BFIN_CONSOLE=y | ||
691 | CONFIG_SERIAL_BFIN_DMA=y | ||
692 | # CONFIG_SERIAL_BFIN_PIO is not set | ||
693 | CONFIG_SERIAL_BFIN_UART0=y | ||
694 | # CONFIG_BFIN_UART0_CTSRTS is not set | ||
695 | # CONFIG_SERIAL_BFIN_UART1 is not set | ||
696 | CONFIG_SERIAL_CORE=y | ||
697 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
698 | # CONFIG_SERIAL_BFIN_SPORT is not set | ||
699 | CONFIG_UNIX98_PTYS=y | ||
700 | # CONFIG_LEGACY_PTYS is not set | ||
701 | |||
702 | # | ||
703 | # CAN, the car bus and industrial fieldbus | ||
704 | # | ||
705 | # CONFIG_CAN4LINUX is not set | ||
706 | |||
707 | # | ||
708 | # IPMI | ||
709 | # | ||
710 | # CONFIG_IPMI_HANDLER is not set | ||
711 | CONFIG_WATCHDOG=y | ||
712 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
713 | |||
714 | # | ||
715 | # Watchdog Device Drivers | ||
716 | # | ||
717 | # CONFIG_SOFT_WATCHDOG is not set | ||
718 | # CONFIG_BFIN_WDT is not set | ||
719 | # CONFIG_HW_RANDOM is not set | ||
720 | # CONFIG_GEN_RTC is not set | ||
721 | CONFIG_BLACKFIN_DPMC=y | ||
722 | # CONFIG_R3964 is not set | ||
723 | # CONFIG_RAW_DRIVER is not set | ||
724 | |||
725 | # | ||
726 | # TPM devices | ||
727 | # | ||
728 | # CONFIG_TCG_TPM is not set | ||
729 | # CONFIG_I2C is not set | ||
730 | |||
731 | # | ||
732 | # SPI support | ||
733 | # | ||
734 | CONFIG_SPI=y | ||
735 | CONFIG_SPI_MASTER=y | ||
736 | |||
737 | # | ||
738 | # SPI Master Controller Drivers | ||
739 | # | ||
740 | CONFIG_SPI_BFIN=y | ||
741 | # CONFIG_SPI_BITBANG is not set | ||
742 | |||
743 | # | ||
744 | # SPI Protocol Masters | ||
745 | # | ||
746 | CONFIG_SPI_AT25=y | ||
747 | CONFIG_SPI_SPIDEV=y | ||
748 | |||
749 | # | ||
750 | # Dallas's 1-wire bus | ||
751 | # | ||
752 | # CONFIG_W1 is not set | ||
753 | CONFIG_HWMON=y | ||
754 | # CONFIG_HWMON_VID is not set | ||
755 | # CONFIG_SENSORS_ABITUGURU is not set | ||
756 | # CONFIG_SENSORS_F71805F is not set | ||
757 | # CONFIG_SENSORS_LM70 is not set | ||
758 | # CONFIG_SENSORS_PC87427 is not set | ||
759 | # CONFIG_SENSORS_SMSC47M1 is not set | ||
760 | # CONFIG_SENSORS_SMSC47B397 is not set | ||
761 | # CONFIG_SENSORS_VT1211 is not set | ||
762 | # CONFIG_SENSORS_W83627HF is not set | ||
763 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
764 | |||
765 | # | ||
766 | # Multifunction device drivers | ||
767 | # | ||
768 | # CONFIG_MFD_SM501 is not set | ||
769 | |||
770 | # | ||
771 | # Multimedia devices | ||
772 | # | ||
773 | # CONFIG_VIDEO_DEV is not set | ||
774 | # CONFIG_DVB_CORE is not set | ||
775 | CONFIG_DAB=y | ||
776 | |||
777 | # | ||
778 | # Graphics support | ||
779 | # | ||
780 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
781 | |||
782 | # | ||
783 | # Display device support | ||
784 | # | ||
785 | # CONFIG_DISPLAY_SUPPORT is not set | ||
786 | # CONFIG_VGASTATE is not set | ||
787 | # CONFIG_FB is not set | ||
788 | |||
789 | # | ||
790 | # Sound | ||
791 | # | ||
792 | CONFIG_SOUND=m | ||
793 | |||
794 | # | ||
795 | # Advanced Linux Sound Architecture | ||
796 | # | ||
797 | CONFIG_SND=m | ||
798 | CONFIG_SND_TIMER=m | ||
799 | CONFIG_SND_PCM=m | ||
800 | # CONFIG_SND_SEQUENCER is not set | ||
801 | CONFIG_SND_OSSEMUL=y | ||
802 | CONFIG_SND_MIXER_OSS=m | ||
803 | CONFIG_SND_PCM_OSS=m | ||
804 | CONFIG_SND_PCM_OSS_PLUGINS=y | ||
805 | # CONFIG_SND_DYNAMIC_MINORS is not set | ||
806 | CONFIG_SND_SUPPORT_OLD_API=y | ||
807 | CONFIG_SND_VERBOSE_PROCFS=y | ||
808 | # CONFIG_SND_VERBOSE_PRINTK is not set | ||
809 | # CONFIG_SND_DEBUG is not set | ||
810 | |||
811 | # | ||
812 | # Generic devices | ||
813 | # | ||
814 | # CONFIG_SND_DUMMY is not set | ||
815 | # CONFIG_SND_MTPAV is not set | ||
816 | # CONFIG_SND_SERIAL_U16550 is not set | ||
817 | # CONFIG_SND_MPU401 is not set | ||
818 | |||
819 | # | ||
820 | # ALSA Blackfin devices | ||
821 | # | ||
822 | CONFIG_SND_BLACKFIN_AD1836=m | ||
823 | CONFIG_SND_BLACKFIN_AD1836_TDM=y | ||
824 | # CONFIG_SND_BLACKFIN_AD1836_I2S is not set | ||
825 | CONFIG_SND_BLACKFIN_AD1836_MULSUB=y | ||
826 | # CONFIG_SND_BLACKFIN_AD1836_5P1 is not set | ||
827 | CONFIG_SND_BLACKFIN_SPORT=0 | ||
828 | CONFIG_SND_BLACKFIN_SPI_PFBIT=4 | ||
829 | # CONFIG_SND_BFIN_AD73311 is not set | ||
830 | |||
831 | # | ||
832 | # System on Chip audio support | ||
833 | # | ||
834 | # CONFIG_SND_SOC is not set | ||
835 | |||
836 | # | ||
837 | # Open Sound System | ||
838 | # | ||
839 | # CONFIG_SOUND_PRIME is not set | ||
840 | |||
841 | # | ||
842 | # HID Devices | ||
843 | # | ||
844 | CONFIG_HID=y | ||
845 | # CONFIG_HID_DEBUG is not set | ||
846 | |||
847 | # | ||
848 | # USB support | ||
849 | # | ||
850 | CONFIG_USB_ARCH_HAS_HCD=y | ||
851 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
852 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
853 | # CONFIG_USB is not set | ||
854 | |||
855 | # | ||
856 | # Enable Host or Gadget support to see Inventra options | ||
857 | # | ||
858 | |||
859 | # | ||
860 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
861 | # | ||
862 | |||
863 | # | ||
864 | # USB Gadget Support | ||
865 | # | ||
866 | # CONFIG_USB_GADGET is not set | ||
867 | # CONFIG_MMC is not set | ||
868 | |||
869 | # | ||
870 | # LED devices | ||
871 | # | ||
872 | # CONFIG_NEW_LEDS is not set | ||
873 | |||
874 | # | ||
875 | # LED drivers | ||
876 | # | ||
877 | |||
878 | # | ||
879 | # LED Triggers | ||
880 | # | ||
881 | |||
882 | # | ||
883 | # InfiniBand support | ||
884 | # | ||
885 | |||
886 | # | ||
887 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
888 | # | ||
889 | |||
890 | # | ||
891 | # Real Time Clock | ||
892 | # | ||
893 | CONFIG_RTC_LIB=y | ||
894 | CONFIG_RTC_CLASS=y | ||
895 | CONFIG_RTC_HCTOSYS=y | ||
896 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
897 | # CONFIG_RTC_DEBUG is not set | ||
898 | |||
899 | # | ||
900 | # RTC interfaces | ||
901 | # | ||
902 | CONFIG_RTC_INTF_SYSFS=y | ||
903 | CONFIG_RTC_INTF_PROC=y | ||
904 | CONFIG_RTC_INTF_DEV=y | ||
905 | CONFIG_RTC_INTF_DEV_UIE_EMUL=y | ||
906 | # CONFIG_RTC_DRV_TEST is not set | ||
907 | |||
908 | # | ||
909 | # I2C RTC drivers | ||
910 | # | ||
911 | |||
912 | # | ||
913 | # SPI RTC drivers | ||
914 | # | ||
915 | # CONFIG_RTC_DRV_RS5C348 is not set | ||
916 | # CONFIG_RTC_DRV_MAX6902 is not set | ||
917 | |||
918 | # | ||
919 | # Platform RTC drivers | ||
920 | # | ||
921 | # CONFIG_RTC_DRV_DS1553 is not set | ||
922 | # CONFIG_RTC_DRV_DS1742 is not set | ||
923 | # CONFIG_RTC_DRV_M48T86 is not set | ||
924 | # CONFIG_RTC_DRV_V3020 is not set | ||
925 | |||
926 | # | ||
927 | # on-CPU RTC drivers | ||
928 | # | ||
929 | CONFIG_RTC_DRV_BFIN=y | ||
930 | |||
931 | # | ||
932 | # DMA Engine support | ||
933 | # | ||
934 | # CONFIG_DMA_ENGINE is not set | ||
935 | |||
936 | # | ||
937 | # DMA Clients | ||
938 | # | ||
939 | |||
940 | # | ||
941 | # DMA Devices | ||
942 | # | ||
943 | |||
944 | # | ||
945 | # PBX support | ||
946 | # | ||
947 | # CONFIG_PBX is not set | ||
948 | |||
949 | # | ||
950 | # File systems | ||
951 | # | ||
952 | CONFIG_EXT2_FS=y | ||
953 | CONFIG_EXT2_FS_XATTR=y | ||
954 | # CONFIG_EXT2_FS_POSIX_ACL is not set | ||
955 | # CONFIG_EXT2_FS_SECURITY is not set | ||
956 | # CONFIG_EXT3_FS is not set | ||
957 | # CONFIG_EXT4DEV_FS is not set | ||
958 | CONFIG_FS_MBCACHE=y | ||
959 | # CONFIG_REISERFS_FS is not set | ||
960 | # CONFIG_JFS_FS is not set | ||
961 | # CONFIG_FS_POSIX_ACL is not set | ||
962 | # CONFIG_XFS_FS is not set | ||
963 | # CONFIG_GFS2_FS is not set | ||
964 | # CONFIG_OCFS2_FS is not set | ||
965 | # CONFIG_MINIX_FS is not set | ||
966 | # CONFIG_ROMFS_FS is not set | ||
967 | CONFIG_INOTIFY=y | ||
968 | CONFIG_INOTIFY_USER=y | ||
969 | # CONFIG_QUOTA is not set | ||
970 | CONFIG_DNOTIFY=y | ||
971 | # CONFIG_AUTOFS_FS is not set | ||
972 | # CONFIG_AUTOFS4_FS is not set | ||
973 | # CONFIG_FUSE_FS is not set | ||
974 | |||
975 | # | ||
976 | # CD-ROM/DVD Filesystems | ||
977 | # | ||
978 | # CONFIG_ISO9660_FS is not set | ||
979 | # CONFIG_UDF_FS is not set | ||
980 | |||
981 | # | ||
982 | # DOS/FAT/NT Filesystems | ||
983 | # | ||
984 | # CONFIG_MSDOS_FS is not set | ||
985 | # CONFIG_VFAT_FS is not set | ||
986 | # CONFIG_NTFS_FS is not set | ||
987 | |||
988 | # | ||
989 | # Pseudo filesystems | ||
990 | # | ||
991 | CONFIG_PROC_FS=y | ||
992 | CONFIG_PROC_SYSCTL=y | ||
993 | CONFIG_SYSFS=y | ||
994 | # CONFIG_TMPFS is not set | ||
995 | # CONFIG_HUGETLB_PAGE is not set | ||
996 | CONFIG_RAMFS=y | ||
997 | # CONFIG_CONFIGFS_FS is not set | ||
998 | |||
999 | # | ||
1000 | # Miscellaneous filesystems | ||
1001 | # | ||
1002 | # CONFIG_ADFS_FS is not set | ||
1003 | # CONFIG_AFFS_FS is not set | ||
1004 | # CONFIG_HFS_FS is not set | ||
1005 | # CONFIG_HFSPLUS_FS is not set | ||
1006 | # CONFIG_BEFS_FS is not set | ||
1007 | # CONFIG_BFS_FS is not set | ||
1008 | # CONFIG_EFS_FS is not set | ||
1009 | # CONFIG_YAFFS_FS is not set | ||
1010 | CONFIG_JFFS2_FS=y | ||
1011 | CONFIG_JFFS2_FS_DEBUG=0 | ||
1012 | CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
1013 | # CONFIG_JFFS2_SUMMARY is not set | ||
1014 | # CONFIG_JFFS2_FS_XATTR is not set | ||
1015 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | ||
1016 | CONFIG_JFFS2_ZLIB=y | ||
1017 | CONFIG_JFFS2_RTIME=y | ||
1018 | # CONFIG_JFFS2_RUBIN is not set | ||
1019 | # CONFIG_CRAMFS is not set | ||
1020 | # CONFIG_VXFS_FS is not set | ||
1021 | # CONFIG_HPFS_FS is not set | ||
1022 | # CONFIG_QNX4FS_FS is not set | ||
1023 | # CONFIG_SYSV_FS is not set | ||
1024 | # CONFIG_UFS_FS is not set | ||
1025 | |||
1026 | # | ||
1027 | # Network File Systems | ||
1028 | # | ||
1029 | CONFIG_NFS_FS=m | ||
1030 | CONFIG_NFS_V3=y | ||
1031 | # CONFIG_NFS_V3_ACL is not set | ||
1032 | # CONFIG_NFS_V4 is not set | ||
1033 | # CONFIG_NFS_DIRECTIO is not set | ||
1034 | # CONFIG_NFSD is not set | ||
1035 | CONFIG_LOCKD=m | ||
1036 | CONFIG_LOCKD_V4=y | ||
1037 | CONFIG_NFS_COMMON=y | ||
1038 | CONFIG_SUNRPC=m | ||
1039 | # CONFIG_SUNRPC_BIND34 is not set | ||
1040 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
1041 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
1042 | # CONFIG_SMB_FS is not set | ||
1043 | # CONFIG_CIFS is not set | ||
1044 | # CONFIG_NCP_FS is not set | ||
1045 | # CONFIG_CODA_FS is not set | ||
1046 | # CONFIG_AFS_FS is not set | ||
1047 | # CONFIG_9P_FS is not set | ||
1048 | |||
1049 | # | ||
1050 | # Partition Types | ||
1051 | # | ||
1052 | # CONFIG_PARTITION_ADVANCED is not set | ||
1053 | CONFIG_MSDOS_PARTITION=y | ||
1054 | |||
1055 | # | ||
1056 | # Native Language Support | ||
1057 | # | ||
1058 | CONFIG_NLS=m | ||
1059 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
1060 | # CONFIG_NLS_CODEPAGE_437 is not set | ||
1061 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
1062 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
1063 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
1064 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
1065 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
1066 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
1067 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
1068 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
1069 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
1070 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
1071 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
1072 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
1073 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
1074 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
1075 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
1076 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
1077 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
1078 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
1079 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
1080 | # CONFIG_NLS_ISO8859_8 is not set | ||
1081 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
1082 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
1083 | # CONFIG_NLS_ASCII is not set | ||
1084 | # CONFIG_NLS_ISO8859_1 is not set | ||
1085 | # CONFIG_NLS_ISO8859_2 is not set | ||
1086 | # CONFIG_NLS_ISO8859_3 is not set | ||
1087 | # CONFIG_NLS_ISO8859_4 is not set | ||
1088 | # CONFIG_NLS_ISO8859_5 is not set | ||
1089 | # CONFIG_NLS_ISO8859_6 is not set | ||
1090 | # CONFIG_NLS_ISO8859_7 is not set | ||
1091 | # CONFIG_NLS_ISO8859_9 is not set | ||
1092 | # CONFIG_NLS_ISO8859_13 is not set | ||
1093 | # CONFIG_NLS_ISO8859_14 is not set | ||
1094 | # CONFIG_NLS_ISO8859_15 is not set | ||
1095 | # CONFIG_NLS_KOI8_R is not set | ||
1096 | # CONFIG_NLS_KOI8_U is not set | ||
1097 | # CONFIG_NLS_UTF8 is not set | ||
1098 | |||
1099 | # | ||
1100 | # Distributed Lock Manager | ||
1101 | # | ||
1102 | # CONFIG_DLM is not set | ||
1103 | |||
1104 | # | ||
1105 | # Profiling support | ||
1106 | # | ||
1107 | # CONFIG_PROFILING is not set | ||
1108 | |||
1109 | # | ||
1110 | # Kernel hacking | ||
1111 | # | ||
1112 | # CONFIG_PRINTK_TIME is not set | ||
1113 | CONFIG_ENABLE_MUST_CHECK=y | ||
1114 | # CONFIG_MAGIC_SYSRQ is not set | ||
1115 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1116 | # CONFIG_DEBUG_FS is not set | ||
1117 | # CONFIG_HEADERS_CHECK is not set | ||
1118 | # CONFIG_DEBUG_KERNEL is not set | ||
1119 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
1120 | # CONFIG_DEBUG_MMRS is not set | ||
1121 | CONFIG_DEBUG_HUNT_FOR_ZERO=y | ||
1122 | CONFIG_DEBUG_BFIN_HWTRACE_ON=y | ||
1123 | CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_OFF=y | ||
1124 | # CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_ONE is not set | ||
1125 | # CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_TWO is not set | ||
1126 | CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION=0 | ||
1127 | # CONFIG_DEBUG_BFIN_HWTRACE_EXPAND is not set | ||
1128 | # CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE is not set | ||
1129 | # CONFIG_EARLY_PRINTK is not set | ||
1130 | CONFIG_CPLB_INFO=y | ||
1131 | CONFIG_ACCESS_CHECK=y | ||
1132 | |||
1133 | # | ||
1134 | # Security options | ||
1135 | # | ||
1136 | # CONFIG_KEYS is not set | ||
1137 | CONFIG_SECURITY=y | ||
1138 | # CONFIG_SECURITY_NETWORK is not set | ||
1139 | CONFIG_SECURITY_CAPABILITIES=y | ||
1140 | |||
1141 | # | ||
1142 | # Cryptographic options | ||
1143 | # | ||
1144 | # CONFIG_CRYPTO is not set | ||
1145 | |||
1146 | # | ||
1147 | # Library routines | ||
1148 | # | ||
1149 | CONFIG_BITREVERSE=y | ||
1150 | CONFIG_CRC_CCITT=m | ||
1151 | # CONFIG_CRC16 is not set | ||
1152 | # CONFIG_CRC_ITU_T is not set | ||
1153 | CONFIG_CRC32=y | ||
1154 | # CONFIG_LIBCRC32C is not set | ||
1155 | CONFIG_ZLIB_INFLATE=y | ||
1156 | CONFIG_ZLIB_DEFLATE=y | ||
1157 | CONFIG_PLIST=y | ||
1158 | CONFIG_HAS_IOMEM=y | ||
1159 | CONFIG_HAS_IOPORT=y | ||
1160 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/blackfin/configs/PNAV-10_defconfig b/arch/blackfin/configs/PNAV-10_defconfig index 3d403e0b82c2..25709f504d8f 100644 --- a/arch/blackfin/configs/PNAV-10_defconfig +++ b/arch/blackfin/configs/PNAV-10_defconfig | |||
@@ -1,6 +1,6 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.22.6 | 3 | # Linux kernel version: 2.6.22.12 |
4 | # | 4 | # |
5 | # CONFIG_MMU is not set | 5 | # CONFIG_MMU is not set |
6 | # CONFIG_FPU is not set | 6 | # CONFIG_FPU is not set |
@@ -8,7 +8,6 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y | |||
8 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 8 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
9 | CONFIG_BLACKFIN=y | 9 | CONFIG_BLACKFIN=y |
10 | CONFIG_ZONE_DMA=y | 10 | CONFIG_ZONE_DMA=y |
11 | CONFIG_BFIN=y | ||
12 | CONFIG_SEMAPHORE_SLEEPERS=y | 11 | CONFIG_SEMAPHORE_SLEEPERS=y |
13 | CONFIG_GENERIC_FIND_NEXT_BIT=y | 12 | CONFIG_GENERIC_FIND_NEXT_BIT=y |
14 | CONFIG_GENERIC_HWEIGHT=y | 13 | CONFIG_GENERIC_HWEIGHT=y |
@@ -18,7 +17,6 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
18 | CONFIG_GENERIC_GPIO=y | 17 | CONFIG_GENERIC_GPIO=y |
19 | CONFIG_FORCE_MAX_ZONEORDER=14 | 18 | CONFIG_FORCE_MAX_ZONEORDER=14 |
20 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
21 | CONFIG_IRQCHIP_DEMUX_GPIO=y | ||
22 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
23 | 21 | ||
24 | # | 22 | # |
@@ -62,7 +60,6 @@ CONFIG_FUTEX=y | |||
62 | CONFIG_ANON_INODES=y | 60 | CONFIG_ANON_INODES=y |
63 | CONFIG_EPOLL=y | 61 | CONFIG_EPOLL=y |
64 | CONFIG_SIGNALFD=y | 62 | CONFIG_SIGNALFD=y |
65 | CONFIG_TIMERFD=y | ||
66 | CONFIG_EVENTFD=y | 63 | CONFIG_EVENTFD=y |
67 | CONFIG_VM_EVENT_COUNTERS=y | 64 | CONFIG_VM_EVENT_COUNTERS=y |
68 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=9 | 65 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=9 |
@@ -115,6 +112,9 @@ CONFIG_PREEMPT_VOLUNTARY=y | |||
115 | # | 112 | # |
116 | # Processor and Board Settings | 113 | # Processor and Board Settings |
117 | # | 114 | # |
115 | # CONFIG_BF522 is not set | ||
116 | # CONFIG_BF525 is not set | ||
117 | # CONFIG_BF527 is not set | ||
118 | # CONFIG_BF531 is not set | 118 | # CONFIG_BF531 is not set |
119 | # CONFIG_BF532 is not set | 119 | # CONFIG_BF532 is not set |
120 | # CONFIG_BF533 is not set | 120 | # CONFIG_BF533 is not set |
@@ -123,10 +123,12 @@ CONFIG_PREEMPT_VOLUNTARY=y | |||
123 | CONFIG_BF537=y | 123 | CONFIG_BF537=y |
124 | # CONFIG_BF542 is not set | 124 | # CONFIG_BF542 is not set |
125 | # CONFIG_BF544 is not set | 125 | # CONFIG_BF544 is not set |
126 | # CONFIG_BF547 is not set | ||
126 | # CONFIG_BF548 is not set | 127 | # CONFIG_BF548 is not set |
127 | # CONFIG_BF549 is not set | 128 | # CONFIG_BF549 is not set |
128 | # CONFIG_BF561 is not set | 129 | # CONFIG_BF561 is not set |
129 | # CONFIG_BF_REV_0_0 is not set | 130 | # CONFIG_BF_REV_0_0 is not set |
131 | # CONFIG_BF_REV_0_1 is not set | ||
130 | CONFIG_BF_REV_0_2=y | 132 | CONFIG_BF_REV_0_2=y |
131 | # CONFIG_BF_REV_0_3 is not set | 133 | # CONFIG_BF_REV_0_3 is not set |
132 | # CONFIG_BF_REV_0_4 is not set | 134 | # CONFIG_BF_REV_0_4 is not set |
@@ -135,33 +137,8 @@ CONFIG_BF_REV_0_2=y | |||
135 | # CONFIG_BF_REV_NONE is not set | 137 | # CONFIG_BF_REV_NONE is not set |
136 | CONFIG_BF53x=y | 138 | CONFIG_BF53x=y |
137 | CONFIG_BFIN_SINGLE_CORE=y | 139 | CONFIG_BFIN_SINGLE_CORE=y |
138 | # CONFIG_BFIN533_EZKIT is not set | ||
139 | # CONFIG_BFIN533_STAMP is not set | ||
140 | # CONFIG_BFIN537_STAMP is not set | ||
141 | # CONFIG_BFIN533_BLUETECHNIX_CM is not set | ||
142 | # CONFIG_BFIN537_BLUETECHNIX_CM is not set | ||
143 | # CONFIG_BFIN548_EZKIT is not set | ||
144 | # CONFIG_BFIN561_BLUETECHNIX_CM is not set | ||
145 | # CONFIG_BFIN561_EZKIT is not set | ||
146 | # CONFIG_BFIN561_TEPLA is not set | ||
147 | CONFIG_PNAV10=y | ||
148 | # CONFIG_GENERIC_BOARD is not set | ||
149 | CONFIG_MEM_MT48LC32M8A2_75=y | 140 | CONFIG_MEM_MT48LC32M8A2_75=y |
150 | CONFIG_IRQ_PLL_WAKEUP=7 | 141 | CONFIG_IRQ_PLL_WAKEUP=7 |
151 | |||
152 | # | ||
153 | # BF537 Specific Configuration | ||
154 | # | ||
155 | |||
156 | # | ||
157 | # Interrupt Priority Assignment | ||
158 | # | ||
159 | |||
160 | # | ||
161 | # Priority | ||
162 | # | ||
163 | CONFIG_IRQ_DMA_ERROR=7 | ||
164 | CONFIG_IRQ_ERROR=7 | ||
165 | CONFIG_IRQ_RTC=8 | 142 | CONFIG_IRQ_RTC=8 |
166 | CONFIG_IRQ_PPI=8 | 143 | CONFIG_IRQ_PPI=8 |
167 | CONFIG_IRQ_SPORT0_RX=9 | 144 | CONFIG_IRQ_SPORT0_RX=9 |
@@ -174,8 +151,6 @@ CONFIG_IRQ_UART0_RX=10 | |||
174 | CONFIG_IRQ_UART0_TX=10 | 151 | CONFIG_IRQ_UART0_TX=10 |
175 | CONFIG_IRQ_UART1_RX=10 | 152 | CONFIG_IRQ_UART1_RX=10 |
176 | CONFIG_IRQ_UART1_TX=10 | 153 | CONFIG_IRQ_UART1_TX=10 |
177 | CONFIG_IRQ_CAN_RX=11 | ||
178 | CONFIG_IRQ_CAN_TX=11 | ||
179 | CONFIG_IRQ_MAC_RX=11 | 154 | CONFIG_IRQ_MAC_RX=11 |
180 | CONFIG_IRQ_MAC_TX=11 | 155 | CONFIG_IRQ_MAC_TX=11 |
181 | CONFIG_IRQ_TMR0=12 | 156 | CONFIG_IRQ_TMR0=12 |
@@ -186,11 +161,31 @@ CONFIG_IRQ_TMR4=12 | |||
186 | CONFIG_IRQ_TMR5=12 | 161 | CONFIG_IRQ_TMR5=12 |
187 | CONFIG_IRQ_TMR6=12 | 162 | CONFIG_IRQ_TMR6=12 |
188 | CONFIG_IRQ_TMR7=12 | 163 | CONFIG_IRQ_TMR7=12 |
189 | CONFIG_IRQ_PROG_INTA=12 | ||
190 | CONFIG_IRQ_PORTG_INTB=12 | 164 | CONFIG_IRQ_PORTG_INTB=12 |
191 | CONFIG_IRQ_MEM_DMA0=13 | 165 | CONFIG_IRQ_MEM_DMA0=13 |
192 | CONFIG_IRQ_MEM_DMA1=13 | 166 | CONFIG_IRQ_MEM_DMA1=13 |
193 | CONFIG_IRQ_WATCH=13 | 167 | CONFIG_IRQ_WATCH=13 |
168 | # CONFIG_BFIN537_STAMP is not set | ||
169 | # CONFIG_BFIN537_BLUETECHNIX_CM is not set | ||
170 | CONFIG_PNAV10=y | ||
171 | # CONFIG_GENERIC_BF537_BOARD is not set | ||
172 | |||
173 | # | ||
174 | # BF537 Specific Configuration | ||
175 | # | ||
176 | |||
177 | # | ||
178 | # Interrupt Priority Assignment | ||
179 | # | ||
180 | |||
181 | # | ||
182 | # Priority | ||
183 | # | ||
184 | CONFIG_IRQ_DMA_ERROR=7 | ||
185 | CONFIG_IRQ_ERROR=7 | ||
186 | CONFIG_IRQ_CAN_RX=11 | ||
187 | CONFIG_IRQ_CAN_TX=11 | ||
188 | CONFIG_IRQ_PROG_INTA=12 | ||
194 | 189 | ||
195 | # | 190 | # |
196 | # Board customizations | 191 | # Board customizations |
@@ -204,7 +199,7 @@ CONFIG_CLKIN_HZ=24576000 | |||
204 | # CONFIG_BFIN_KERNEL_CLOCK is not set | 199 | # CONFIG_BFIN_KERNEL_CLOCK is not set |
205 | CONFIG_MAX_VCO_HZ=600000000 | 200 | CONFIG_MAX_VCO_HZ=600000000 |
206 | CONFIG_MIN_VCO_HZ=50000000 | 201 | CONFIG_MIN_VCO_HZ=50000000 |
207 | CONFIG_MAX_SCLK_HZ=133333333 | 202 | CONFIG_MAX_SCLK_HZ=133000000 |
208 | CONFIG_MIN_SCLK_HZ=27000000 | 203 | CONFIG_MIN_SCLK_HZ=27000000 |
209 | 204 | ||
210 | # | 205 | # |
@@ -261,6 +256,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 | |||
261 | # CONFIG_RESOURCES_64BIT is not set | 256 | # CONFIG_RESOURCES_64BIT is not set |
262 | CONFIG_ZONE_DMA_FLAG=1 | 257 | CONFIG_ZONE_DMA_FLAG=1 |
263 | CONFIG_LARGE_ALLOCS=y | 258 | CONFIG_LARGE_ALLOCS=y |
259 | # CONFIG_BFIN_GPTIMERS is not set | ||
264 | CONFIG_BFIN_DMA_5XX=y | 260 | CONFIG_BFIN_DMA_5XX=y |
265 | # CONFIG_DMA_UNCACHED_2M is not set | 261 | # CONFIG_DMA_UNCACHED_2M is not set |
266 | CONFIG_DMA_UNCACHED_1M=y | 262 | CONFIG_DMA_UNCACHED_1M=y |
@@ -282,7 +278,7 @@ CONFIG_L1_MAX_PIECE=16 | |||
282 | # | 278 | # |
283 | 279 | ||
284 | # | 280 | # |
285 | # EBIU_AMBCTL Global Control | 281 | # EBIU_AMGCTL Global Control |
286 | # | 282 | # |
287 | CONFIG_C_AMCKEN=y | 283 | CONFIG_C_AMCKEN=y |
288 | CONFIG_C_CDPRIO=y | 284 | CONFIG_C_CDPRIO=y |
@@ -593,6 +589,7 @@ CONFIG_BFIN_MAC_RMII=y | |||
593 | # CONFIG_DM9000 is not set | 589 | # CONFIG_DM9000 is not set |
594 | CONFIG_NETDEV_1000=y | 590 | CONFIG_NETDEV_1000=y |
595 | CONFIG_NETDEV_10000=y | 591 | CONFIG_NETDEV_10000=y |
592 | # CONFIG_AX88180 is not set | ||
596 | 593 | ||
597 | # | 594 | # |
598 | # Wireless LAN | 595 | # Wireless LAN |
@@ -675,9 +672,9 @@ CONFIG_INPUT_UINPUT=y | |||
675 | # | 672 | # |
676 | # CONFIG_AD9960 is not set | 673 | # CONFIG_AD9960 is not set |
677 | # CONFIG_SPI_ADC_BF533 is not set | 674 | # CONFIG_SPI_ADC_BF533 is not set |
678 | # CONFIG_BFIN_PFLAGS is not set | 675 | # CONFIG_BF5xx_PFLAGS is not set |
679 | # CONFIG_BF5xx_PPIFCD is not set | 676 | # CONFIG_BF5xx_PPIFCD is not set |
680 | # CONFIG_BF5xx_TIMERS is not set | 677 | # CONFIG_BFIN_SIMPLE_TIMER is not set |
681 | # CONFIG_BF5xx_PPI is not set | 678 | # CONFIG_BF5xx_PPI is not set |
682 | CONFIG_BFIN_SPORT=y | 679 | CONFIG_BFIN_SPORT=y |
683 | # CONFIG_BFIN_TIMER_LATENCY is not set | 680 | # CONFIG_BFIN_TIMER_LATENCY is not set |
@@ -897,6 +894,7 @@ CONFIG_FB_BF537_LQ035=y | |||
897 | CONFIG_LQ035_SLAVE_ADDR=0x58 | 894 | CONFIG_LQ035_SLAVE_ADDR=0x58 |
898 | CONFIG_FB_BFIN_LANDSCAPE=y | 895 | CONFIG_FB_BFIN_LANDSCAPE=y |
899 | # CONFIG_FB_BFIN_BGR is not set | 896 | # CONFIG_FB_BFIN_BGR is not set |
897 | # CONFIG_FB_BFIN_T350MCQB is not set | ||
900 | # CONFIG_FB_S1D13XXX is not set | 898 | # CONFIG_FB_S1D13XXX is not set |
901 | # CONFIG_FB_VIRTUAL is not set | 899 | # CONFIG_FB_VIRTUAL is not set |
902 | # CONFIG_LOGO is not set | 900 | # CONFIG_LOGO is not set |
@@ -939,11 +937,6 @@ CONFIG_SND=m | |||
939 | # CONFIG_SND_SOC is not set | 937 | # CONFIG_SND_SOC is not set |
940 | 938 | ||
941 | # | 939 | # |
942 | # SoC Audio for the ADI Blackfin | ||
943 | # | ||
944 | # CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set | ||
945 | |||
946 | # | ||
947 | # Open Sound System | 940 | # Open Sound System |
948 | # | 941 | # |
949 | CONFIG_SOUND_PRIME=y | 942 | CONFIG_SOUND_PRIME=y |
diff --git a/arch/blackfin/kernel/bfin_dma_5xx.c b/arch/blackfin/kernel/bfin_dma_5xx.c index 503eef4c7fec..b54446055a43 100644 --- a/arch/blackfin/kernel/bfin_dma_5xx.c +++ b/arch/blackfin/kernel/bfin_dma_5xx.c | |||
@@ -436,6 +436,7 @@ unsigned long get_dma_curr_desc_ptr(unsigned int channel) | |||
436 | 436 | ||
437 | return dma_ch[channel].regs->curr_desc_ptr; | 437 | return dma_ch[channel].regs->curr_desc_ptr; |
438 | } | 438 | } |
439 | EXPORT_SYMBOL(get_dma_curr_desc_ptr); | ||
439 | 440 | ||
440 | unsigned long get_dma_curr_addr(unsigned int channel) | 441 | unsigned long get_dma_curr_addr(unsigned int channel) |
441 | { | 442 | { |
diff --git a/arch/blackfin/kernel/bfin_ksyms.c b/arch/blackfin/kernel/bfin_ksyms.c index 2198afe40f33..0bfbb269e350 100644 --- a/arch/blackfin/kernel/bfin_ksyms.c +++ b/arch/blackfin/kernel/bfin_ksyms.c | |||
@@ -37,9 +37,6 @@ | |||
37 | /* platform dependent support */ | 37 | /* platform dependent support */ |
38 | 38 | ||
39 | EXPORT_SYMBOL(__ioremap); | 39 | EXPORT_SYMBOL(__ioremap); |
40 | EXPORT_SYMBOL(strcmp); | ||
41 | EXPORT_SYMBOL(strncmp); | ||
42 | EXPORT_SYMBOL(dump_thread); | ||
43 | 40 | ||
44 | EXPORT_SYMBOL(ip_fast_csum); | 41 | EXPORT_SYMBOL(ip_fast_csum); |
45 | 42 | ||
@@ -51,6 +48,7 @@ EXPORT_SYMBOL(__down_trylock); | |||
51 | EXPORT_SYMBOL(__down_interruptible); | 48 | EXPORT_SYMBOL(__down_interruptible); |
52 | 49 | ||
53 | EXPORT_SYMBOL(is_in_rom); | 50 | EXPORT_SYMBOL(is_in_rom); |
51 | EXPORT_SYMBOL(bfin_return_from_exception); | ||
54 | 52 | ||
55 | /* Networking helper routines. */ | 53 | /* Networking helper routines. */ |
56 | EXPORT_SYMBOL(csum_partial_copy); | 54 | EXPORT_SYMBOL(csum_partial_copy); |
@@ -60,13 +58,11 @@ EXPORT_SYMBOL(csum_partial_copy); | |||
60 | * their interface isn't gonna change any time soon now, so | 58 | * their interface isn't gonna change any time soon now, so |
61 | * it's OK to leave it out of version control. | 59 | * it's OK to leave it out of version control. |
62 | */ | 60 | */ |
63 | EXPORT_SYMBOL(strcpy); | ||
64 | EXPORT_SYMBOL(memcpy); | 61 | EXPORT_SYMBOL(memcpy); |
65 | EXPORT_SYMBOL(memset); | 62 | EXPORT_SYMBOL(memset); |
66 | EXPORT_SYMBOL(memcmp); | 63 | EXPORT_SYMBOL(memcmp); |
67 | EXPORT_SYMBOL(memmove); | 64 | EXPORT_SYMBOL(memmove); |
68 | EXPORT_SYMBOL(memchr); | 65 | EXPORT_SYMBOL(memchr); |
69 | EXPORT_SYMBOL(get_wchan); | ||
70 | 66 | ||
71 | /* | 67 | /* |
72 | * libgcc functions - functions that are used internally by the | 68 | * libgcc functions - functions that are used internally by the |
@@ -102,6 +98,7 @@ EXPORT_SYMBOL(outsw); | |||
102 | EXPORT_SYMBOL(insw); | 98 | EXPORT_SYMBOL(insw); |
103 | EXPORT_SYMBOL(outsl); | 99 | EXPORT_SYMBOL(outsl); |
104 | EXPORT_SYMBOL(insl); | 100 | EXPORT_SYMBOL(insl); |
101 | EXPORT_SYMBOL(insl_16); | ||
105 | EXPORT_SYMBOL(irq_flags); | 102 | EXPORT_SYMBOL(irq_flags); |
106 | EXPORT_SYMBOL(iounmap); | 103 | EXPORT_SYMBOL(iounmap); |
107 | EXPORT_SYMBOL(blackfin_dcache_invalidate_range); | 104 | EXPORT_SYMBOL(blackfin_dcache_invalidate_range); |
diff --git a/arch/blackfin/kernel/cplbinit.c b/arch/blackfin/kernel/cplbinit.c index f2db6a5e2b5b..6320bc45fbba 100644 --- a/arch/blackfin/kernel/cplbinit.c +++ b/arch/blackfin/kernel/cplbinit.c | |||
@@ -26,29 +26,22 @@ | |||
26 | #include <asm/cplb.h> | 26 | #include <asm/cplb.h> |
27 | #include <asm/cplbinit.h> | 27 | #include <asm/cplbinit.h> |
28 | 28 | ||
29 | u_long icplb_table[MAX_CPLBS+1]; | 29 | u_long icplb_table[MAX_CPLBS + 1]; |
30 | u_long dcplb_table[MAX_CPLBS+1]; | 30 | u_long dcplb_table[MAX_CPLBS + 1]; |
31 | 31 | ||
32 | #ifdef CONFIG_CPLB_SWITCH_TAB_L1 | 32 | #ifdef CONFIG_CPLB_SWITCH_TAB_L1 |
33 | u_long ipdt_table[MAX_SWITCH_I_CPLBS+1]__attribute__((l1_data)); | 33 | # define PDT_ATTR __attribute__((l1_data)) |
34 | u_long dpdt_table[MAX_SWITCH_D_CPLBS+1]__attribute__((l1_data)); | ||
35 | |||
36 | #ifdef CONFIG_CPLB_INFO | ||
37 | u_long ipdt_swapcount_table[MAX_SWITCH_I_CPLBS]__attribute__((l1_data)); | ||
38 | u_long dpdt_swapcount_table[MAX_SWITCH_D_CPLBS]__attribute__((l1_data)); | ||
39 | #endif /* CONFIG_CPLB_INFO */ | ||
40 | |||
41 | #else | 34 | #else |
35 | # define PDT_ATTR | ||
36 | #endif | ||
42 | 37 | ||
43 | u_long ipdt_table[MAX_SWITCH_I_CPLBS+1]; | 38 | u_long ipdt_table[MAX_SWITCH_I_CPLBS + 1] PDT_ATTR; |
44 | u_long dpdt_table[MAX_SWITCH_D_CPLBS+1]; | 39 | u_long dpdt_table[MAX_SWITCH_D_CPLBS + 1] PDT_ATTR; |
45 | 40 | ||
46 | #ifdef CONFIG_CPLB_INFO | 41 | #ifdef CONFIG_CPLB_INFO |
47 | u_long ipdt_swapcount_table[MAX_SWITCH_I_CPLBS]; | 42 | u_long ipdt_swapcount_table[MAX_SWITCH_I_CPLBS] PDT_ATTR; |
48 | u_long dpdt_swapcount_table[MAX_SWITCH_D_CPLBS]; | 43 | u_long dpdt_swapcount_table[MAX_SWITCH_D_CPLBS] PDT_ATTR; |
49 | #endif /* CONFIG_CPLB_INFO */ | 44 | #endif |
50 | |||
51 | #endif /*CONFIG_CPLB_SWITCH_TAB_L1*/ | ||
52 | 45 | ||
53 | struct s_cplb { | 46 | struct s_cplb { |
54 | struct cplb_tab init_i; | 47 | struct cplb_tab init_i; |
@@ -71,7 +64,7 @@ static struct cplb_desc cplb_data[] = { | |||
71 | #else | 64 | #else |
72 | .valid = 0, | 65 | .valid = 0, |
73 | #endif | 66 | #endif |
74 | .name = "ZERO Pointer Saveguard", | 67 | .name = "Zero Pointer Guard Page", |
75 | }, | 68 | }, |
76 | { | 69 | { |
77 | .start = L1_CODE_START, | 70 | .start = L1_CODE_START, |
@@ -102,20 +95,20 @@ static struct cplb_desc cplb_data[] = { | |||
102 | .end = 0, /* dynamic */ | 95 | .end = 0, /* dynamic */ |
103 | .psize = 0, | 96 | .psize = 0, |
104 | .attr = INITIAL_T | SWITCH_T | I_CPLB | D_CPLB, | 97 | .attr = INITIAL_T | SWITCH_T | I_CPLB | D_CPLB, |
105 | .i_conf = SDRAM_IGENERIC, | 98 | .i_conf = SDRAM_IGENERIC, |
106 | .d_conf = SDRAM_DGENERIC, | 99 | .d_conf = SDRAM_DGENERIC, |
107 | .valid = 1, | 100 | .valid = 1, |
108 | .name = "SDRAM Kernel", | 101 | .name = "Kernel Memory", |
109 | }, | 102 | }, |
110 | { | 103 | { |
111 | .start = 0, /* dynamic */ | 104 | .start = 0, /* dynamic */ |
112 | .end = 0, /* dynamic */ | 105 | .end = 0, /* dynamic */ |
113 | .psize = 0, | 106 | .psize = 0, |
114 | .attr = INITIAL_T | SWITCH_T | D_CPLB, | 107 | .attr = INITIAL_T | SWITCH_T | D_CPLB, |
115 | .i_conf = SDRAM_IGENERIC, | 108 | .i_conf = SDRAM_IGENERIC, |
116 | .d_conf = SDRAM_DNON_CHBL, | 109 | .d_conf = SDRAM_DNON_CHBL, |
117 | .valid = 1, | 110 | .valid = 1, |
118 | .name = "SDRAM RAM MTD", | 111 | .name = "uClinux MTD Memory", |
119 | }, | 112 | }, |
120 | { | 113 | { |
121 | .start = 0, /* dynamic */ | 114 | .start = 0, /* dynamic */ |
@@ -124,7 +117,7 @@ static struct cplb_desc cplb_data[] = { | |||
124 | .attr = INITIAL_T | SWITCH_T | D_CPLB, | 117 | .attr = INITIAL_T | SWITCH_T | D_CPLB, |
125 | .d_conf = SDRAM_DNON_CHBL, | 118 | .d_conf = SDRAM_DNON_CHBL, |
126 | .valid = 1, | 119 | .valid = 1, |
127 | .name = "SDRAM Uncached DMA ZONE", | 120 | .name = "Uncached DMA Zone", |
128 | }, | 121 | }, |
129 | { | 122 | { |
130 | .start = 0, /* dynamic */ | 123 | .start = 0, /* dynamic */ |
@@ -134,7 +127,7 @@ static struct cplb_desc cplb_data[] = { | |||
134 | .i_conf = 0, /* dynamic */ | 127 | .i_conf = 0, /* dynamic */ |
135 | .d_conf = 0, /* dynamic */ | 128 | .d_conf = 0, /* dynamic */ |
136 | .valid = 1, | 129 | .valid = 1, |
137 | .name = "SDRAM Reserved Memory", | 130 | .name = "Reserved Memory", |
138 | }, | 131 | }, |
139 | { | 132 | { |
140 | .start = ASYNC_BANK0_BASE, | 133 | .start = ASYNC_BANK0_BASE, |
@@ -143,14 +136,14 @@ static struct cplb_desc cplb_data[] = { | |||
143 | .attr = SWITCH_T | D_CPLB, | 136 | .attr = SWITCH_T | D_CPLB, |
144 | .d_conf = SDRAM_EBIU, | 137 | .d_conf = SDRAM_EBIU, |
145 | .valid = 1, | 138 | .valid = 1, |
146 | .name = "ASYNC Memory", | 139 | .name = "Asynchronous Memory Banks", |
147 | }, | 140 | }, |
148 | { | 141 | { |
149 | #if defined(CONFIG_BF561) | 142 | #ifdef L2_START |
150 | .start = L2_SRAM, | 143 | .start = L2_START, |
151 | .end = L2_SRAM_END, | 144 | .end = L2_START + L2_LENGTH, |
152 | .psize = SIZE_1M, | 145 | .psize = SIZE_1M, |
153 | .attr = SWITCH_T | D_CPLB, | 146 | .attr = SWITCH_T | I_CPLB | D_CPLB, |
154 | .i_conf = L2_MEMORY, | 147 | .i_conf = L2_MEMORY, |
155 | .d_conf = L2_MEMORY, | 148 | .d_conf = L2_MEMORY, |
156 | .valid = 1, | 149 | .valid = 1, |
@@ -158,13 +151,23 @@ static struct cplb_desc cplb_data[] = { | |||
158 | .valid = 0, | 151 | .valid = 0, |
159 | #endif | 152 | #endif |
160 | .name = "L2 Memory", | 153 | .name = "L2 Memory", |
161 | } | 154 | }, |
155 | { | ||
156 | .start = BOOT_ROM_START, | ||
157 | .end = BOOT_ROM_START + BOOT_ROM_LENGTH, | ||
158 | .psize = SIZE_1M, | ||
159 | .attr = SWITCH_T | I_CPLB | D_CPLB, | ||
160 | .i_conf = SDRAM_IGENERIC, | ||
161 | .d_conf = SDRAM_DGENERIC, | ||
162 | .valid = 1, | ||
163 | .name = "On-Chip BootROM", | ||
164 | }, | ||
162 | }; | 165 | }; |
163 | 166 | ||
164 | static u16 __init lock_kernel_check(u32 start, u32 end) | 167 | static u16 __init lock_kernel_check(u32 start, u32 end) |
165 | { | 168 | { |
166 | if ((start <= (u32) _stext && end >= (u32) _end) | 169 | if ((end <= (u32) _end && end >= (u32)_stext) || |
167 | || (start >= (u32) _stext && end <= (u32) _end)) | 170 | (start <= (u32) _end && start >= (u32)_stext)) |
168 | return IN_KERNEL; | 171 | return IN_KERNEL; |
169 | return 0; | 172 | return 0; |
170 | } | 173 | } |
@@ -350,7 +353,7 @@ void __init generate_cpl_tables(void) | |||
350 | else | 353 | else |
351 | cplb_data[RES_MEM].i_conf = SDRAM_INON_CHBL; | 354 | cplb_data[RES_MEM].i_conf = SDRAM_INON_CHBL; |
352 | 355 | ||
353 | for (i = ZERO_P; i <= L2_MEM; i++) { | 356 | for (i = ZERO_P; i < ARRAY_SIZE(cplb_data); ++i) { |
354 | if (!cplb_data[i].valid) | 357 | if (!cplb_data[i].valid) |
355 | continue; | 358 | continue; |
356 | 359 | ||
diff --git a/arch/blackfin/kernel/early_printk.c b/arch/blackfin/kernel/early_printk.c index 6ec518a81113..724f4a5a1d46 100644 --- a/arch/blackfin/kernel/early_printk.c +++ b/arch/blackfin/kernel/early_printk.c | |||
@@ -205,7 +205,8 @@ asmlinkage void __init early_trap_c(struct pt_regs *fp, void *retaddr) | |||
205 | if (likely(early_console == NULL)) | 205 | if (likely(early_console == NULL)) |
206 | setup_early_printk(DEFAULT_EARLY_PORT); | 206 | setup_early_printk(DEFAULT_EARLY_PORT); |
207 | 207 | ||
208 | dump_bfin_regs(fp, retaddr); | 208 | dump_bfin_mem((void *)fp->retx); |
209 | show_regs(fp); | ||
209 | dump_bfin_trace_buffer(); | 210 | dump_bfin_trace_buffer(); |
210 | 211 | ||
211 | panic("Died early"); | 212 | panic("Died early"); |
diff --git a/arch/blackfin/kernel/process.c b/arch/blackfin/kernel/process.c index 9124467651c4..5bf15125f0d6 100644 --- a/arch/blackfin/kernel/process.c +++ b/arch/blackfin/kernel/process.c | |||
@@ -134,27 +134,6 @@ void cpu_idle(void) | |||
134 | } | 134 | } |
135 | } | 135 | } |
136 | 136 | ||
137 | void show_regs(struct pt_regs *regs) | ||
138 | { | ||
139 | printk(KERN_NOTICE "\n"); | ||
140 | printk(KERN_NOTICE | ||
141 | "PC: %08lu Status: %04lu SysStatus: %04lu RETS: %08lu\n", | ||
142 | regs->pc, regs->astat, regs->seqstat, regs->rets); | ||
143 | printk(KERN_NOTICE | ||
144 | "A0.x: %08lx A0.w: %08lx A1.x: %08lx A1.w: %08lx\n", | ||
145 | regs->a0x, regs->a0w, regs->a1x, regs->a1w); | ||
146 | printk(KERN_NOTICE "P0: %08lx P1: %08lx P2: %08lx P3: %08lx\n", | ||
147 | regs->p0, regs->p1, regs->p2, regs->p3); | ||
148 | printk(KERN_NOTICE "P4: %08lx P5: %08lx\n", regs->p4, regs->p5); | ||
149 | printk(KERN_NOTICE "R0: %08lx R1: %08lx R2: %08lx R3: %08lx\n", | ||
150 | regs->r0, regs->r1, regs->r2, regs->r3); | ||
151 | printk(KERN_NOTICE "R4: %08lx R5: %08lx R6: %08lx R7: %08lx\n", | ||
152 | regs->r4, regs->r5, regs->r6, regs->r7); | ||
153 | |||
154 | if (!regs->ipend) | ||
155 | printk(KERN_NOTICE "USP: %08lx\n", rdusp()); | ||
156 | } | ||
157 | |||
158 | /* Fill in the fpu structure for a core dump. */ | 137 | /* Fill in the fpu structure for a core dump. */ |
159 | 138 | ||
160 | int dump_fpu(struct pt_regs *regs, elf_fpregset_t * fpregs) | 139 | int dump_fpu(struct pt_regs *regs, elf_fpregset_t * fpregs) |
@@ -239,51 +218,6 @@ copy_thread(int nr, unsigned long clone_flags, | |||
239 | } | 218 | } |
240 | 219 | ||
241 | /* | 220 | /* |
242 | * fill in the user structure for a core dump.. | ||
243 | */ | ||
244 | void dump_thread(struct pt_regs *regs, struct user *dump) | ||
245 | { | ||
246 | dump->magic = CMAGIC; | ||
247 | dump->start_code = 0; | ||
248 | dump->start_stack = rdusp() & ~(PAGE_SIZE - 1); | ||
249 | dump->u_tsize = ((unsigned long)current->mm->end_code) >> PAGE_SHIFT; | ||
250 | dump->u_dsize = ((unsigned long)(current->mm->brk + | ||
251 | (PAGE_SIZE - 1))) >> PAGE_SHIFT; | ||
252 | dump->u_dsize -= dump->u_tsize; | ||
253 | dump->u_ssize = 0; | ||
254 | |||
255 | if (dump->start_stack < TASK_SIZE) | ||
256 | dump->u_ssize = | ||
257 | ((unsigned long)(TASK_SIZE - | ||
258 | dump->start_stack)) >> PAGE_SHIFT; | ||
259 | |||
260 | dump->u_ar0 = (struct user_regs_struct *)((int)&dump->regs - (int)dump); | ||
261 | |||
262 | dump->regs.r0 = regs->r0; | ||
263 | dump->regs.r1 = regs->r1; | ||
264 | dump->regs.r2 = regs->r2; | ||
265 | dump->regs.r3 = regs->r3; | ||
266 | dump->regs.r4 = regs->r4; | ||
267 | dump->regs.r5 = regs->r5; | ||
268 | dump->regs.r6 = regs->r6; | ||
269 | dump->regs.r7 = regs->r7; | ||
270 | dump->regs.p0 = regs->p0; | ||
271 | dump->regs.p1 = regs->p1; | ||
272 | dump->regs.p2 = regs->p2; | ||
273 | dump->regs.p3 = regs->p3; | ||
274 | dump->regs.p4 = regs->p4; | ||
275 | dump->regs.p5 = regs->p5; | ||
276 | dump->regs.orig_p0 = regs->orig_p0; | ||
277 | dump->regs.a0w = regs->a0w; | ||
278 | dump->regs.a1w = regs->a1w; | ||
279 | dump->regs.a0x = regs->a0x; | ||
280 | dump->regs.a1x = regs->a1x; | ||
281 | dump->regs.rets = regs->rets; | ||
282 | dump->regs.astat = regs->astat; | ||
283 | dump->regs.pc = regs->pc; | ||
284 | } | ||
285 | |||
286 | /* | ||
287 | * sys_execve() executes a new program. | 221 | * sys_execve() executes a new program. |
288 | */ | 222 | */ |
289 | 223 | ||
diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c index 934234f43839..d2822010b7ce 100644 --- a/arch/blackfin/kernel/setup.c +++ b/arch/blackfin/kernel/setup.c | |||
@@ -43,6 +43,7 @@ | |||
43 | #include <asm/cacheflush.h> | 43 | #include <asm/cacheflush.h> |
44 | #include <asm/blackfin.h> | 44 | #include <asm/blackfin.h> |
45 | #include <asm/cplbinit.h> | 45 | #include <asm/cplbinit.h> |
46 | #include <asm/div64.h> | ||
46 | #include <asm/fixed_code.h> | 47 | #include <asm/fixed_code.h> |
47 | #include <asm/early_printk.h> | 48 | #include <asm/early_printk.h> |
48 | 49 | ||
@@ -504,13 +505,17 @@ EXPORT_SYMBOL(get_sclk); | |||
504 | 505 | ||
505 | unsigned long sclk_to_usecs(unsigned long sclk) | 506 | unsigned long sclk_to_usecs(unsigned long sclk) |
506 | { | 507 | { |
507 | return (USEC_PER_SEC * (u64)sclk) / get_sclk(); | 508 | u64 tmp = USEC_PER_SEC * (u64)sclk; |
509 | do_div(tmp, get_sclk()); | ||
510 | return tmp; | ||
508 | } | 511 | } |
509 | EXPORT_SYMBOL(sclk_to_usecs); | 512 | EXPORT_SYMBOL(sclk_to_usecs); |
510 | 513 | ||
511 | unsigned long usecs_to_sclk(unsigned long usecs) | 514 | unsigned long usecs_to_sclk(unsigned long usecs) |
512 | { | 515 | { |
513 | return (get_sclk() * (u64)usecs) / USEC_PER_SEC; | 516 | u64 tmp = get_sclk() * (u64)usecs; |
517 | do_div(tmp, USEC_PER_SEC); | ||
518 | return tmp; | ||
514 | } | 519 | } |
515 | EXPORT_SYMBOL(usecs_to_sclk); | 520 | EXPORT_SYMBOL(usecs_to_sclk); |
516 | 521 | ||
diff --git a/arch/blackfin/kernel/traps.c b/arch/blackfin/kernel/traps.c index cfa05436c972..21a55ef19cbd 100644 --- a/arch/blackfin/kernel/traps.c +++ b/arch/blackfin/kernel/traps.c | |||
@@ -158,7 +158,7 @@ static void decode_address(char *buf, unsigned long address) | |||
158 | } | 158 | } |
159 | 159 | ||
160 | /* we were unable to find this address anywhere */ | 160 | /* we were unable to find this address anywhere */ |
161 | sprintf(buf, "[<0x%p>]", (void *)address); | 161 | sprintf(buf, "<0x%p> /* unknown address */", (void *)address); |
162 | 162 | ||
163 | done: | 163 | done: |
164 | write_unlock_irqrestore(&tasklist_lock, flags); | 164 | write_unlock_irqrestore(&tasklist_lock, flags); |
@@ -169,7 +169,9 @@ asmlinkage void double_fault_c(struct pt_regs *fp) | |||
169 | console_verbose(); | 169 | console_verbose(); |
170 | oops_in_progress = 1; | 170 | oops_in_progress = 1; |
171 | printk(KERN_EMERG "\n" KERN_EMERG "Double Fault\n"); | 171 | printk(KERN_EMERG "\n" KERN_EMERG "Double Fault\n"); |
172 | dump_bfin_regs(fp, (void *)fp->retx); | 172 | dump_bfin_process(fp); |
173 | dump_bfin_mem((void *)fp->retx); | ||
174 | show_regs(fp); | ||
173 | panic("Double Fault - unrecoverable event\n"); | 175 | panic("Double Fault - unrecoverable event\n"); |
174 | 176 | ||
175 | } | 177 | } |
@@ -250,7 +252,7 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
250 | case VEC_EXCPT03: | 252 | case VEC_EXCPT03: |
251 | info.si_code = SEGV_STACKFLOW; | 253 | info.si_code = SEGV_STACKFLOW; |
252 | sig = SIGSEGV; | 254 | sig = SIGSEGV; |
253 | printk(KERN_NOTICE EXC_0x03); | 255 | printk(KERN_NOTICE EXC_0x03(KERN_NOTICE)); |
254 | CHK_DEBUGGER_TRAP(); | 256 | CHK_DEBUGGER_TRAP(); |
255 | break; | 257 | break; |
256 | /* 0x04 - User Defined, Caught by default */ | 258 | /* 0x04 - User Defined, Caught by default */ |
@@ -279,7 +281,7 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
279 | case VEC_OVFLOW: | 281 | case VEC_OVFLOW: |
280 | info.si_code = TRAP_TRACEFLOW; | 282 | info.si_code = TRAP_TRACEFLOW; |
281 | sig = SIGTRAP; | 283 | sig = SIGTRAP; |
282 | printk(KERN_NOTICE EXC_0x11); | 284 | printk(KERN_NOTICE EXC_0x11(KERN_NOTICE)); |
283 | CHK_DEBUGGER_TRAP(); | 285 | CHK_DEBUGGER_TRAP(); |
284 | break; | 286 | break; |
285 | /* 0x12 - Reserved, Caught by default */ | 287 | /* 0x12 - Reserved, Caught by default */ |
@@ -301,36 +303,35 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
301 | case VEC_UNDEF_I: | 303 | case VEC_UNDEF_I: |
302 | info.si_code = ILL_ILLOPC; | 304 | info.si_code = ILL_ILLOPC; |
303 | sig = SIGILL; | 305 | sig = SIGILL; |
304 | printk(KERN_NOTICE EXC_0x21); | 306 | printk(KERN_NOTICE EXC_0x21(KERN_NOTICE)); |
305 | CHK_DEBUGGER_TRAP(); | 307 | CHK_DEBUGGER_TRAP(); |
306 | break; | 308 | break; |
307 | /* 0x22 - Illegal Instruction Combination, handled here */ | 309 | /* 0x22 - Illegal Instruction Combination, handled here */ |
308 | case VEC_ILGAL_I: | 310 | case VEC_ILGAL_I: |
309 | info.si_code = ILL_ILLPARAOP; | 311 | info.si_code = ILL_ILLPARAOP; |
310 | sig = SIGILL; | 312 | sig = SIGILL; |
311 | printk(KERN_NOTICE EXC_0x22); | 313 | printk(KERN_NOTICE EXC_0x22(KERN_NOTICE)); |
312 | CHK_DEBUGGER_TRAP(); | 314 | CHK_DEBUGGER_TRAP(); |
313 | break; | 315 | break; |
314 | /* 0x23 - Data CPLB Protection Violation, | 316 | /* 0x23 - Data CPLB protection violation, handled here */ |
315 | normal case is handled in _cplb_hdr */ | ||
316 | case VEC_CPLB_VL: | 317 | case VEC_CPLB_VL: |
317 | info.si_code = ILL_CPLB_VI; | 318 | info.si_code = ILL_CPLB_VI; |
318 | sig = SIGILL; | 319 | sig = SIGBUS; |
319 | printk(KERN_NOTICE EXC_0x23); | 320 | printk(KERN_NOTICE EXC_0x23(KERN_NOTICE)); |
320 | CHK_DEBUGGER_TRAP(); | 321 | CHK_DEBUGGER_TRAP(); |
321 | break; | 322 | break; |
322 | /* 0x24 - Data access misaligned, handled here */ | 323 | /* 0x24 - Data access misaligned, handled here */ |
323 | case VEC_MISALI_D: | 324 | case VEC_MISALI_D: |
324 | info.si_code = BUS_ADRALN; | 325 | info.si_code = BUS_ADRALN; |
325 | sig = SIGBUS; | 326 | sig = SIGBUS; |
326 | printk(KERN_NOTICE EXC_0x24); | 327 | printk(KERN_NOTICE EXC_0x24(KERN_NOTICE)); |
327 | CHK_DEBUGGER_TRAP(); | 328 | CHK_DEBUGGER_TRAP(); |
328 | break; | 329 | break; |
329 | /* 0x25 - Unrecoverable Event, handled here */ | 330 | /* 0x25 - Unrecoverable Event, handled here */ |
330 | case VEC_UNCOV: | 331 | case VEC_UNCOV: |
331 | info.si_code = ILL_ILLEXCPT; | 332 | info.si_code = ILL_ILLEXCPT; |
332 | sig = SIGILL; | 333 | sig = SIGILL; |
333 | printk(KERN_NOTICE EXC_0x25); | 334 | printk(KERN_NOTICE EXC_0x25(KERN_NOTICE)); |
334 | CHK_DEBUGGER_TRAP(); | 335 | CHK_DEBUGGER_TRAP(); |
335 | break; | 336 | break; |
336 | /* 0x26 - Data CPLB Miss, normal case is handled in _cplb_hdr, | 337 | /* 0x26 - Data CPLB Miss, normal case is handled in _cplb_hdr, |
@@ -338,7 +339,7 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
338 | case VEC_CPLB_M: | 339 | case VEC_CPLB_M: |
339 | info.si_code = BUS_ADRALN; | 340 | info.si_code = BUS_ADRALN; |
340 | sig = SIGBUS; | 341 | sig = SIGBUS; |
341 | printk(KERN_NOTICE EXC_0x26); | 342 | printk(KERN_NOTICE EXC_0x26(KERN_NOTICE)); |
342 | CHK_DEBUGGER_TRAP(); | 343 | CHK_DEBUGGER_TRAP(); |
343 | break; | 344 | break; |
344 | /* 0x27 - Data CPLB Multiple Hits - Linux Trap Zero, handled here */ | 345 | /* 0x27 - Data CPLB Multiple Hits - Linux Trap Zero, handled here */ |
@@ -349,7 +350,7 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
349 | printk(KERN_NOTICE "NULL pointer access (probably)\n"); | 350 | printk(KERN_NOTICE "NULL pointer access (probably)\n"); |
350 | #else | 351 | #else |
351 | sig = SIGILL; | 352 | sig = SIGILL; |
352 | printk(KERN_NOTICE EXC_0x27); | 353 | printk(KERN_NOTICE EXC_0x27(KERN_NOTICE)); |
353 | #endif | 354 | #endif |
354 | CHK_DEBUGGER_TRAP(); | 355 | CHK_DEBUGGER_TRAP(); |
355 | break; | 356 | break; |
@@ -357,7 +358,7 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
357 | case VEC_WATCH: | 358 | case VEC_WATCH: |
358 | info.si_code = TRAP_WATCHPT; | 359 | info.si_code = TRAP_WATCHPT; |
359 | sig = SIGTRAP; | 360 | sig = SIGTRAP; |
360 | pr_debug(EXC_0x28); | 361 | pr_debug(EXC_0x28(KERN_DEBUG)); |
361 | CHK_DEBUGGER_TRAP_MAYBE(); | 362 | CHK_DEBUGGER_TRAP_MAYBE(); |
362 | /* Check if this is a watchpoint in kernel space */ | 363 | /* Check if this is a watchpoint in kernel space */ |
363 | if (fp->ipend & 0xffc0) | 364 | if (fp->ipend & 0xffc0) |
@@ -379,22 +380,21 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
379 | case VEC_MISALI_I: | 380 | case VEC_MISALI_I: |
380 | info.si_code = BUS_ADRALN; | 381 | info.si_code = BUS_ADRALN; |
381 | sig = SIGBUS; | 382 | sig = SIGBUS; |
382 | printk(KERN_NOTICE EXC_0x2A); | 383 | printk(KERN_NOTICE EXC_0x2A(KERN_NOTICE)); |
383 | CHK_DEBUGGER_TRAP(); | 384 | CHK_DEBUGGER_TRAP(); |
384 | break; | 385 | break; |
385 | /* 0x2B - Instruction CPLB protection Violation, | 386 | /* 0x2B - Instruction CPLB protection violation, handled here */ |
386 | handled in _cplb_hdr */ | ||
387 | case VEC_CPLB_I_VL: | 387 | case VEC_CPLB_I_VL: |
388 | info.si_code = ILL_CPLB_VI; | 388 | info.si_code = ILL_CPLB_VI; |
389 | sig = SIGILL; | 389 | sig = SIGBUS; |
390 | printk(KERN_NOTICE EXC_0x2B); | 390 | printk(KERN_NOTICE EXC_0x2B(KERN_NOTICE)); |
391 | CHK_DEBUGGER_TRAP(); | 391 | CHK_DEBUGGER_TRAP(); |
392 | break; | 392 | break; |
393 | /* 0x2C - Instruction CPLB miss, handled in _cplb_hdr */ | 393 | /* 0x2C - Instruction CPLB miss, handled in _cplb_hdr */ |
394 | case VEC_CPLB_I_M: | 394 | case VEC_CPLB_I_M: |
395 | info.si_code = ILL_CPLB_MISS; | 395 | info.si_code = ILL_CPLB_MISS; |
396 | sig = SIGBUS; | 396 | sig = SIGBUS; |
397 | printk(KERN_NOTICE EXC_0x2C); | 397 | printk(KERN_NOTICE EXC_0x2C(KERN_NOTICE)); |
398 | CHK_DEBUGGER_TRAP(); | 398 | CHK_DEBUGGER_TRAP(); |
399 | break; | 399 | break; |
400 | /* 0x2D - Instruction CPLB Multiple Hits, handled here */ | 400 | /* 0x2D - Instruction CPLB Multiple Hits, handled here */ |
@@ -405,7 +405,7 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
405 | printk(KERN_NOTICE "Jump to address 0 - 0x0fff\n"); | 405 | printk(KERN_NOTICE "Jump to address 0 - 0x0fff\n"); |
406 | #else | 406 | #else |
407 | sig = SIGILL; | 407 | sig = SIGILL; |
408 | printk(KERN_NOTICE EXC_0x2D); | 408 | printk(KERN_NOTICE EXC_0x2D(KERN_NOTICE)); |
409 | #endif | 409 | #endif |
410 | CHK_DEBUGGER_TRAP(); | 410 | CHK_DEBUGGER_TRAP(); |
411 | break; | 411 | break; |
@@ -413,7 +413,7 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
413 | case VEC_ILL_RES: | 413 | case VEC_ILL_RES: |
414 | info.si_code = ILL_PRVOPC; | 414 | info.si_code = ILL_PRVOPC; |
415 | sig = SIGILL; | 415 | sig = SIGILL; |
416 | printk(KERN_NOTICE EXC_0x2E); | 416 | printk(KERN_NOTICE EXC_0x2E(KERN_NOTICE)); |
417 | CHK_DEBUGGER_TRAP(); | 417 | CHK_DEBUGGER_TRAP(); |
418 | break; | 418 | break; |
419 | /* 0x2F - Reserved, Caught by default */ | 419 | /* 0x2F - Reserved, Caught by default */ |
@@ -446,7 +446,9 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
446 | 446 | ||
447 | if (sig != SIGTRAP) { | 447 | if (sig != SIGTRAP) { |
448 | unsigned long stack; | 448 | unsigned long stack; |
449 | dump_bfin_regs(fp, (void *)fp->retx); | 449 | dump_bfin_process(fp); |
450 | dump_bfin_mem((void *)fp->retx); | ||
451 | show_regs(fp); | ||
450 | 452 | ||
451 | /* Print out the trace buffer if it makes sense */ | 453 | /* Print out the trace buffer if it makes sense */ |
452 | #ifndef CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE | 454 | #ifndef CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE |
@@ -460,22 +462,25 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
460 | show_stack(current, &stack); | 462 | show_stack(current, &stack); |
461 | if (oops_in_progress) { | 463 | if (oops_in_progress) { |
462 | #ifndef CONFIG_ACCESS_CHECK | 464 | #ifndef CONFIG_ACCESS_CHECK |
463 | printk(KERN_EMERG "Hey - dork - please turn on " | 465 | printk(KERN_EMERG "Please turn on " |
464 | "CONFIG_ACCESS_CHECK\n"); | 466 | "CONFIG_ACCESS_CHECK\n"); |
465 | #endif | 467 | #endif |
466 | panic("Kernel exception"); | 468 | panic("Kernel exception"); |
467 | } | 469 | } |
468 | |||
469 | /* Ensure that bad return addresses don't end up in an infinite | ||
470 | * loop, due to speculative loads/reads | ||
471 | */ | ||
472 | fp->pc = SAFE_USER_INSTRUCTION; | ||
473 | } | 470 | } |
471 | |||
474 | info.si_signo = sig; | 472 | info.si_signo = sig; |
475 | info.si_errno = 0; | 473 | info.si_errno = 0; |
476 | info.si_addr = (void *)fp->pc; | 474 | info.si_addr = (void *)fp->pc; |
477 | force_sig_info(sig, &info, current); | 475 | force_sig_info(sig, &info, current); |
478 | 476 | ||
477 | /* Ensure that bad return addresses don't end up in an infinite | ||
478 | * loop, due to speculative loads/reads. This needs to be done after | ||
479 | * the signal has been sent. | ||
480 | */ | ||
481 | if (trapnr == VEC_CPLB_I_M && sig != SIGTRAP) | ||
482 | fp->pc = SAFE_USER_INSTRUCTION; | ||
483 | |||
479 | trace_buffer_restore(j); | 484 | trace_buffer_restore(j); |
480 | return; | 485 | return; |
481 | } | 486 | } |
@@ -600,37 +605,48 @@ void dump_stack(void) | |||
600 | show_stack(current, &stack); | 605 | show_stack(current, &stack); |
601 | trace_buffer_restore(tflags); | 606 | trace_buffer_restore(tflags); |
602 | } | 607 | } |
603 | |||
604 | EXPORT_SYMBOL(dump_stack); | 608 | EXPORT_SYMBOL(dump_stack); |
605 | 609 | ||
606 | void dump_bfin_regs(struct pt_regs *fp, void *retaddr) | 610 | void dump_bfin_process(struct pt_regs *fp) |
607 | { | 611 | { |
608 | char buf [150]; | 612 | /* We should be able to look at fp->ipend, but we don't push it on the |
613 | * stack all the time, so do this until we fix that */ | ||
614 | unsigned int context = bfin_read_IPEND(); | ||
615 | |||
616 | if (oops_in_progress) | ||
617 | printk(KERN_EMERG "Kernel OOPS in progress\n"); | ||
618 | |||
619 | if (context & 0x0020) | ||
620 | printk(KERN_NOTICE "Deferred excecption or HW Error context\n"); | ||
621 | else if (context & 0x3FC0) | ||
622 | printk(KERN_NOTICE "Interrupt context\n"); | ||
623 | else if (context & 0x4000) | ||
624 | printk(KERN_NOTICE "Deferred Interrupt context\n"); | ||
625 | else if (context & 0x8000) | ||
626 | printk(KERN_NOTICE "Kernel process context\n"); | ||
627 | |||
628 | if (current->pid && current->mm) { | ||
629 | printk(KERN_NOTICE "CURRENT PROCESS:\n"); | ||
630 | printk(KERN_NOTICE "COMM=%s PID=%d\n", | ||
631 | current->comm, current->pid); | ||
632 | |||
633 | printk(KERN_NOTICE "TEXT = 0x%p-0x%p DATA = 0x%p-0x%p\n" | ||
634 | KERN_NOTICE "BSS = 0x%p-0x%p USER-STACK = 0x%p\n" | ||
635 | KERN_NOTICE "\n", | ||
636 | (void *)current->mm->start_code, | ||
637 | (void *)current->mm->end_code, | ||
638 | (void *)current->mm->start_data, | ||
639 | (void *)current->mm->end_data, | ||
640 | (void *)current->mm->end_data, | ||
641 | (void *)current->mm->brk, | ||
642 | (void *)current->mm->start_stack); | ||
643 | } else | ||
644 | printk(KERN_NOTICE "\n" KERN_NOTICE | ||
645 | "No Valid process in current context\n"); | ||
646 | } | ||
609 | 647 | ||
610 | if (!oops_in_progress) { | 648 | void dump_bfin_mem(void *retaddr) |
611 | if (current->pid && current->mm) { | 649 | { |
612 | printk(KERN_NOTICE "\n" KERN_NOTICE "CURRENT PROCESS:\n"); | ||
613 | printk(KERN_NOTICE "COMM=%s PID=%d\n", | ||
614 | current->comm, current->pid); | ||
615 | |||
616 | printk(KERN_NOTICE "TEXT = 0x%p-0x%p DATA = 0x%p-0x%p\n" | ||
617 | KERN_NOTICE "BSS = 0x%p-0x%p USER-STACK = 0x%p\n" | ||
618 | KERN_NOTICE "\n", | ||
619 | (void *)current->mm->start_code, | ||
620 | (void *)current->mm->end_code, | ||
621 | (void *)current->mm->start_data, | ||
622 | (void *)current->mm->end_data, | ||
623 | (void *)current->mm->end_data, | ||
624 | (void *)current->mm->brk, | ||
625 | (void *)current->mm->start_stack); | ||
626 | } else { | ||
627 | printk (KERN_NOTICE "\n" KERN_NOTICE | ||
628 | "No Valid pid - Either things are really messed up," | ||
629 | " or you are in the kernel\n"); | ||
630 | } | ||
631 | } else { | ||
632 | printk(KERN_NOTICE "Kernel or interrupt exception\n"); | ||
633 | } | ||
634 | 650 | ||
635 | if (retaddr >= (void *)FIXED_CODE_START && retaddr < (void *)physical_mem_end | 651 | if (retaddr >= (void *)FIXED_CODE_START && retaddr < (void *)physical_mem_end |
636 | #if L1_CODE_LENGTH != 0 | 652 | #if L1_CODE_LENGTH != 0 |
@@ -671,8 +687,13 @@ void dump_bfin_regs(struct pt_regs *fp, void *retaddr) | |||
671 | printk("\n"); | 687 | printk("\n"); |
672 | } else | 688 | } else |
673 | printk("\n" KERN_NOTICE | 689 | printk("\n" KERN_NOTICE |
674 | "Cannot look at the [PC] for it is" | 690 | "Cannot look at the [PC] <%p> for it is" |
675 | " in unreadable memory - sorry\n"); | 691 | " in unreadable memory - sorry\n", retaddr); |
692 | } | ||
693 | |||
694 | void show_regs(struct pt_regs *fp) | ||
695 | { | ||
696 | char buf [150]; | ||
676 | 697 | ||
677 | printk(KERN_NOTICE "\n" KERN_NOTICE "SEQUENCER STATUS:\n"); | 698 | printk(KERN_NOTICE "\n" KERN_NOTICE "SEQUENCER STATUS:\n"); |
678 | printk(KERN_NOTICE " SEQSTAT: %08lx IPEND: %04lx SYSCFG: %04lx\n", | 699 | printk(KERN_NOTICE " SEQSTAT: %08lx IPEND: %04lx SYSCFG: %04lx\n", |
@@ -686,6 +707,8 @@ void dump_bfin_regs(struct pt_regs *fp, void *retaddr) | |||
686 | printk(KERN_NOTICE " RETX: %s\n", buf); | 707 | printk(KERN_NOTICE " RETX: %s\n", buf); |
687 | decode_address(buf, fp->rets); | 708 | decode_address(buf, fp->rets); |
688 | printk(KERN_NOTICE " RETS: %s\n", buf); | 709 | printk(KERN_NOTICE " RETS: %s\n", buf); |
710 | decode_address(buf, fp->pc); | ||
711 | printk(KERN_NOTICE " PC: %s\n", buf); | ||
689 | 712 | ||
690 | if ((long)fp->seqstat & SEQSTAT_EXCAUSE) { | 713 | if ((long)fp->seqstat & SEQSTAT_EXCAUSE) { |
691 | decode_address(buf, bfin_read_DCPLB_FAULT_ADDR()); | 714 | decode_address(buf, bfin_read_DCPLB_FAULT_ADDR()); |
@@ -800,7 +823,9 @@ void panic_cplb_error(int cplb_panic, struct pt_regs *fp) | |||
800 | 823 | ||
801 | printk(KERN_EMERG "DCPLB_FAULT_ADDR=%p\n", (void *)bfin_read_DCPLB_FAULT_ADDR()); | 824 | printk(KERN_EMERG "DCPLB_FAULT_ADDR=%p\n", (void *)bfin_read_DCPLB_FAULT_ADDR()); |
802 | printk(KERN_EMERG "ICPLB_FAULT_ADDR=%p\n", (void *)bfin_read_ICPLB_FAULT_ADDR()); | 825 | printk(KERN_EMERG "ICPLB_FAULT_ADDR=%p\n", (void *)bfin_read_ICPLB_FAULT_ADDR()); |
803 | dump_bfin_regs(fp, (void *)fp->retx); | 826 | dump_bfin_process(fp); |
827 | dump_bfin_mem((void *)fp->retx); | ||
828 | show_regs(fp); | ||
804 | dump_stack(); | 829 | dump_stack(); |
805 | panic("Unrecoverable event\n"); | 830 | panic("Unrecoverable event\n"); |
806 | } | 831 | } |
diff --git a/arch/blackfin/lib/Makefile b/arch/blackfin/lib/Makefile index bfdad52c570b..635288fc5f54 100644 --- a/arch/blackfin/lib/Makefile +++ b/arch/blackfin/lib/Makefile | |||
@@ -4,7 +4,7 @@ | |||
4 | 4 | ||
5 | lib-y := \ | 5 | lib-y := \ |
6 | ashldi3.o ashrdi3.o lshrdi3.o \ | 6 | ashldi3.o ashrdi3.o lshrdi3.o \ |
7 | muldi3.o divsi3.o udivsi3.o udivdi3.o modsi3.o umodsi3.o \ | 7 | muldi3.o divsi3.o udivsi3.o modsi3.o umodsi3.o \ |
8 | checksum.o memcpy.o memset.o memcmp.o memchr.o memmove.o \ | 8 | checksum.o memcpy.o memset.o memcmp.o memchr.o memmove.o \ |
9 | strcmp.o strcpy.o strncmp.o strncpy.o \ | 9 | strcmp.o strcpy.o strncmp.o strncpy.o \ |
10 | umulsi3_highpart.o smulsi3_highpart.o \ | 10 | umulsi3_highpart.o smulsi3_highpart.o \ |
diff --git a/arch/blackfin/lib/ins.S b/arch/blackfin/lib/ins.S index a17cc77ac36f..df7b8833a0c5 100644 --- a/arch/blackfin/lib/ins.S +++ b/arch/blackfin/lib/ins.S | |||
@@ -77,3 +77,22 @@ ENTRY(_insb) | |||
77 | sti R3; | 77 | sti R3; |
78 | RTS; | 78 | RTS; |
79 | ENDPROC(_insb) | 79 | ENDPROC(_insb) |
80 | |||
81 | |||
82 | |||
83 | ENTRY(_insl_16) | ||
84 | P0 = R0; /* P0 = port */ | ||
85 | cli R3; | ||
86 | P1 = R1; /* P1 = address */ | ||
87 | P2 = R2; /* P2 = count */ | ||
88 | SSYNC; | ||
89 | LSETUP( .Llong16_loop_s, .Llong16_loop_e) LC0 = P2; | ||
90 | .Llong16_loop_s: R0 = [P0]; | ||
91 | W[P1++] = R0; | ||
92 | R0 = R0 >> 16; | ||
93 | W[P1++] = R0; | ||
94 | NOP; | ||
95 | .Llong16_loop_e: NOP; | ||
96 | sti R3; | ||
97 | RTS; | ||
98 | ENDPROC(_insl_16) | ||
diff --git a/arch/blackfin/lib/strcmp.c b/arch/blackfin/lib/strcmp.c index 4eeefd86907f..fde39a1950ce 100644 --- a/arch/blackfin/lib/strcmp.c +++ b/arch/blackfin/lib/strcmp.c | |||
@@ -1,10 +1,19 @@ | |||
1 | #include <linux/types.h> | 1 | /* |
2 | * Provide symbol in case str func is not inlined. | ||
3 | * | ||
4 | * Copyright (c) 2006-2007 Analog Devices Inc. | ||
5 | * | ||
6 | * Licensed under the GPL-2 or later. | ||
7 | */ | ||
2 | 8 | ||
3 | #define strcmp __inline_strcmp | 9 | #define strcmp __inline_strcmp |
4 | #include <asm/string.h> | 10 | #include <asm/string.h> |
5 | #undef strcmp | 11 | #undef strcmp |
6 | 12 | ||
13 | #include <linux/module.h> | ||
14 | |||
7 | int strcmp(const char *dest, const char *src) | 15 | int strcmp(const char *dest, const char *src) |
8 | { | 16 | { |
9 | return __inline_strcmp(dest, src); | 17 | return __inline_strcmp(dest, src); |
10 | } | 18 | } |
19 | EXPORT_SYMBOL(strcmp); | ||
diff --git a/arch/blackfin/lib/strcpy.c b/arch/blackfin/lib/strcpy.c index 534589db7256..2a8836b1f4d3 100644 --- a/arch/blackfin/lib/strcpy.c +++ b/arch/blackfin/lib/strcpy.c | |||
@@ -1,10 +1,19 @@ | |||
1 | #include <linux/types.h> | 1 | /* |
2 | * Provide symbol in case str func is not inlined. | ||
3 | * | ||
4 | * Copyright (c) 2006-2007 Analog Devices Inc. | ||
5 | * | ||
6 | * Licensed under the GPL-2 or later. | ||
7 | */ | ||
2 | 8 | ||
3 | #define strcpy __inline_strcpy | 9 | #define strcpy __inline_strcpy |
4 | #include <asm/string.h> | 10 | #include <asm/string.h> |
5 | #undef strcpy | 11 | #undef strcpy |
6 | 12 | ||
13 | #include <linux/module.h> | ||
14 | |||
7 | char *strcpy(char *dest, const char *src) | 15 | char *strcpy(char *dest, const char *src) |
8 | { | 16 | { |
9 | return __inline_strcpy(dest, src); | 17 | return __inline_strcpy(dest, src); |
10 | } | 18 | } |
19 | EXPORT_SYMBOL(strcpy); | ||
diff --git a/arch/blackfin/lib/strncmp.c b/arch/blackfin/lib/strncmp.c index d791f120bff7..2aaae78a68e0 100644 --- a/arch/blackfin/lib/strncmp.c +++ b/arch/blackfin/lib/strncmp.c | |||
@@ -1,10 +1,19 @@ | |||
1 | #include <linux/types.h> | 1 | /* |
2 | * Provide symbol in case str func is not inlined. | ||
3 | * | ||
4 | * Copyright (c) 2006-2007 Analog Devices Inc. | ||
5 | * | ||
6 | * Licensed under the GPL-2 or later. | ||
7 | */ | ||
2 | 8 | ||
3 | #define strncmp __inline_strncmp | 9 | #define strncmp __inline_strncmp |
4 | #include <asm/string.h> | 10 | #include <asm/string.h> |
5 | #undef strncmp | 11 | #undef strncmp |
6 | 12 | ||
13 | #include <linux/module.h> | ||
14 | |||
7 | int strncmp(const char *cs, const char *ct, size_t count) | 15 | int strncmp(const char *cs, const char *ct, size_t count) |
8 | { | 16 | { |
9 | return __inline_strncmp(cs, ct, count); | 17 | return __inline_strncmp(cs, ct, count); |
10 | } | 18 | } |
19 | EXPORT_SYMBOL(strncmp); | ||
diff --git a/arch/blackfin/lib/strncpy.c b/arch/blackfin/lib/strncpy.c index 1fecb5c71ffb..ea1dc6bf2373 100644 --- a/arch/blackfin/lib/strncpy.c +++ b/arch/blackfin/lib/strncpy.c | |||
@@ -1,10 +1,19 @@ | |||
1 | #include <linux/types.h> | 1 | /* |
2 | * Provide symbol in case str func is not inlined. | ||
3 | * | ||
4 | * Copyright (c) 2006-2007 Analog Devices Inc. | ||
5 | * | ||
6 | * Licensed under the GPL-2 or later. | ||
7 | */ | ||
2 | 8 | ||
3 | #define strncpy __inline_strncpy | 9 | #define strncpy __inline_strncpy |
4 | #include <asm/string.h> | 10 | #include <asm/string.h> |
5 | #undef strncpy | 11 | #undef strncpy |
6 | 12 | ||
13 | #include <linux/module.h> | ||
14 | |||
7 | char *strncpy(char *dest, const char *src, size_t n) | 15 | char *strncpy(char *dest, const char *src, size_t n) |
8 | { | 16 | { |
9 | return __inline_strncpy(dest, src, n); | 17 | return __inline_strncpy(dest, src, n); |
10 | } | 18 | } |
19 | EXPORT_SYMBOL(strncpy); | ||
diff --git a/arch/blackfin/lib/udivdi3.S b/arch/blackfin/lib/udivdi3.S deleted file mode 100644 index ad1ebee675e1..000000000000 --- a/arch/blackfin/lib/udivdi3.S +++ /dev/null | |||
@@ -1,375 +0,0 @@ | |||
1 | /* | ||
2 | * udivdi3.S - unsigned long long division | ||
3 | * | ||
4 | * Copyright 2003-2007 Analog Devices Inc. | ||
5 | * Enter bugs at http://blackfin.uclinux.org/ | ||
6 | * | ||
7 | * Licensed under the GPLv2 or later. | ||
8 | */ | ||
9 | |||
10 | #include <linux/linkage.h> | ||
11 | |||
12 | #define CARRY AC0 | ||
13 | |||
14 | #ifdef CONFIG_ARITHMETIC_OPS_L1 | ||
15 | .section .l1.text | ||
16 | #else | ||
17 | .text | ||
18 | #endif | ||
19 | |||
20 | |||
21 | ENTRY(___udivdi3) | ||
22 | R3 = [SP + 12]; | ||
23 | [--SP] = (R7:4, P5:3); | ||
24 | |||
25 | /* Attempt to use divide primitive first; these will handle | ||
26 | ** most cases, and they're quick - avoids stalls incurred by | ||
27 | ** testing for identities. | ||
28 | */ | ||
29 | |||
30 | R4 = R2 | R3; | ||
31 | CC = R4 == 0; | ||
32 | IF CC JUMP .LDIV_BY_ZERO; | ||
33 | |||
34 | R4.H = 0x8000; | ||
35 | R4 >>>= 16; // R4 now 0xFFFF8000 | ||
36 | R5 = R0 | R2; // If either dividend or | ||
37 | R4 = R5 & R4; // divisor have bits in | ||
38 | CC = R4; // top half or low half's sign | ||
39 | IF CC JUMP .LIDENTS; // bit, skip builtins. | ||
40 | R4 = R1 | R3; // Also check top halves | ||
41 | CC = R4; | ||
42 | IF CC JUMP .LIDENTS; | ||
43 | |||
44 | /* Can use the builtins. */ | ||
45 | |||
46 | AQ = CC; // Clear AQ (CC==0) | ||
47 | DIVQ(R0, R2); | ||
48 | DIVQ(R0, R2); | ||
49 | DIVQ(R0, R2); | ||
50 | DIVQ(R0, R2); | ||
51 | DIVQ(R0, R2); | ||
52 | DIVQ(R0, R2); | ||
53 | DIVQ(R0, R2); | ||
54 | DIVQ(R0, R2); | ||
55 | DIVQ(R0, R2); | ||
56 | DIVQ(R0, R2); | ||
57 | DIVQ(R0, R2); | ||
58 | DIVQ(R0, R2); | ||
59 | DIVQ(R0, R2); | ||
60 | DIVQ(R0, R2); | ||
61 | DIVQ(R0, R2); | ||
62 | DIVQ(R0, R2); | ||
63 | DIVQ(R0, R2); | ||
64 | R0 = R0.L (Z); | ||
65 | R1 = 0; | ||
66 | (R7:4, P5:3) = [SP++]; | ||
67 | RTS; | ||
68 | |||
69 | .LIDENTS: | ||
70 | /* Test for common identities. Value to be returned is | ||
71 | ** placed in R6,R7. | ||
72 | */ | ||
73 | // Check for 0/y, return 0 | ||
74 | R4 = R0 | R1; | ||
75 | CC = R4 == 0; | ||
76 | IF CC JUMP .LRETURN_R0; | ||
77 | |||
78 | // Check for x/x, return 1 | ||
79 | R6 = R0 - R2; // If x == y, then both R6 and R7 will be zero | ||
80 | R7 = R1 - R3; | ||
81 | R4 = R6 | R7; // making R4 zero. | ||
82 | R6 += 1; // which would now make R6:R7==1. | ||
83 | CC = R4 == 0; | ||
84 | IF CC JUMP .LRETURN_IDENT; | ||
85 | |||
86 | // Check for x/1, return x | ||
87 | R6 = R0; | ||
88 | R7 = R1; | ||
89 | CC = R3 == 0; | ||
90 | IF !CC JUMP .Lnexttest; | ||
91 | CC = R2 == 1; | ||
92 | IF CC JUMP .LRETURN_IDENT; | ||
93 | |||
94 | .Lnexttest: | ||
95 | R4.L = ONES R2; // check for div by power of two which | ||
96 | R5.L = ONES R3; // can be done using a shift | ||
97 | R6 = PACK (R5.L, R4.L); | ||
98 | CC = R6 == 1; | ||
99 | IF CC JUMP .Lpower_of_two_upper_zero; | ||
100 | R6 = PACK (R4.L, R5.L); | ||
101 | CC = R6 == 1; | ||
102 | IF CC JUMP .Lpower_of_two_lower_zero; | ||
103 | |||
104 | // Check for x < y, return 0 | ||
105 | R6 = 0; | ||
106 | R7 = R6; | ||
107 | CC = R1 < R3 (IU); | ||
108 | IF CC JUMP .LRETURN_IDENT; | ||
109 | CC = R1 == R3; | ||
110 | IF !CC JUMP .Lno_idents; | ||
111 | CC = R0 < R2 (IU); | ||
112 | IF CC JUMP .LRETURN_IDENT; | ||
113 | |||
114 | .Lno_idents: // Idents don't match. Go for the full operation | ||
115 | |||
116 | |||
117 | // If X, or X and Y have high bit set, it'll affect the | ||
118 | // results, so shift right one to stop this. Note: we've already | ||
119 | // checked that X >= Y, so Y's msb won't be set unless X's | ||
120 | // is. | ||
121 | |||
122 | R4 = 0; | ||
123 | CC = R1 < 0; | ||
124 | IF !CC JUMP .Lx_msb_clear; | ||
125 | CC = !CC; // 1 -> 0; | ||
126 | R1 = ROT R1 BY -1; // Shift X >> 1 | ||
127 | R0 = ROT R0 BY -1; // lsb -> CC | ||
128 | BITSET(R4,31); // to record only x msb was set | ||
129 | CC = R3 < 0; | ||
130 | IF !CC JUMP .Ly_msb_clear; | ||
131 | CC = !CC; | ||
132 | R3 = ROT R3 BY -1; // Shift Y >> 1 | ||
133 | R2 = ROT R2 BY -1; | ||
134 | BITCLR(R4,31); // clear bit to record only x msb was set | ||
135 | |||
136 | .Ly_msb_clear: | ||
137 | .Lx_msb_clear: | ||
138 | // Bit 31 in R4 indicates X msb set, but Y msb wasn't, and no bits | ||
139 | // were lost, so we should shift result left by one. | ||
140 | |||
141 | [--SP] = R4; // save for later | ||
142 | |||
143 | // In the loop that follows, each iteration we add | ||
144 | // either Y' or -Y' to the Remainder. We compute the | ||
145 | // negated Y', and store, for convenience. Y' goes | ||
146 | // into P0:P1, while -Y' goes into P2:P3. | ||
147 | |||
148 | P0 = R2; | ||
149 | P1 = R3; | ||
150 | R2 = -R2; | ||
151 | CC = CARRY; | ||
152 | CC = !CC; | ||
153 | R4 = CC; | ||
154 | R3 = -R3; | ||
155 | R3 = R3 - R4; | ||
156 | |||
157 | R6 = 0; // remainder = 0 | ||
158 | R7 = R6; | ||
159 | |||
160 | [--SP] = R2; P2 = SP; | ||
161 | [--SP] = R3; P3 = SP; | ||
162 | [--SP] = R6; P5 = SP; // AQ = 0 | ||
163 | [--SP] = P1; | ||
164 | |||
165 | /* In the loop that follows, we use the following | ||
166 | ** register assignments: | ||
167 | ** R0,R1 X, workspace | ||
168 | ** R2,R3 Y, workspace | ||
169 | ** R4,R5 partial Div | ||
170 | ** R6,R7 partial remainder | ||
171 | ** P5 AQ | ||
172 | ** The remainder and div form a 128-bit number, with | ||
173 | ** the remainder in the high 64-bits. | ||
174 | */ | ||
175 | R4 = R0; // Div = X' | ||
176 | R5 = R1; | ||
177 | R3 = 0; | ||
178 | |||
179 | P4 = 64; // Iterate once per bit | ||
180 | LSETUP(.LULST,.LULEND) LC0 = P4; | ||
181 | .LULST: | ||
182 | /* Shift Div and remainder up by one. The bit shifted | ||
183 | ** out of the top of the quotient is shifted into the bottom | ||
184 | ** of the remainder. | ||
185 | */ | ||
186 | CC = R3; | ||
187 | R4 = ROT R4 BY 1; | ||
188 | R5 = ROT R5 BY 1 || // low q to high q | ||
189 | R2 = [P5]; // load saved AQ | ||
190 | R6 = ROT R6 BY 1 || // high q to low r | ||
191 | R0 = [P2]; // load -Y' | ||
192 | R7 = ROT R7 BY 1 || // low r to high r | ||
193 | R1 = [P3]; | ||
194 | |||
195 | // Assume add -Y' | ||
196 | CC = R2 < 0; // But if AQ is set... | ||
197 | IF CC R0 = P0; // then add Y' instead | ||
198 | IF CC R1 = P1; | ||
199 | |||
200 | R6 = R6 + R0; // Rem += (Y' or -Y') | ||
201 | CC = CARRY; | ||
202 | R0 = CC; | ||
203 | R7 = R7 + R1; | ||
204 | R7 = R7 + R0 (NS) || | ||
205 | R1 = [SP]; | ||
206 | // Set the next AQ bit | ||
207 | R1 = R7 ^ R1; // from Remainder and Y' | ||
208 | R1 = R1 >> 31 || // Negate AQ's value, and | ||
209 | [P5] = R1; // save next AQ | ||
210 | BITTGL(R1, 0); // add neg AQ to the Div | ||
211 | .LULEND: R4 = R4 + R1; | ||
212 | |||
213 | R6 = [SP + 16]; | ||
214 | |||
215 | R0 = R4; | ||
216 | R1 = R5; | ||
217 | CC = BITTST(R6,30); // Just set CC=0 | ||
218 | R4 = ROT R0 BY 1; // but if we had to shift X, | ||
219 | R5 = ROT R1 BY 1; // and didn't shift any bits out, | ||
220 | CC = BITTST(R6,31); // then the result will be half as | ||
221 | IF CC R0 = R4; // much as required, so shift left | ||
222 | IF CC R1 = R5; // one space. | ||
223 | |||
224 | SP += 20; | ||
225 | (R7:4, P5:3) = [SP++]; | ||
226 | RTS; | ||
227 | |||
228 | .Lpower_of_two: | ||
229 | /* Y has a single bit set, which means it's a power of two. | ||
230 | ** That means we can perform the division just by shifting | ||
231 | ** X to the right the appropriate number of bits | ||
232 | */ | ||
233 | |||
234 | /* signbits returns the number of sign bits, minus one. | ||
235 | ** 1=>30, 2=>29, ..., 0x40000000=>0. Which means we need | ||
236 | ** to shift right n-signbits spaces. It also means 0x80000000 | ||
237 | ** is a special case, because that *also* gives a signbits of 0 | ||
238 | */ | ||
239 | .Lpower_of_two_lower_zero: | ||
240 | R7 = 0; | ||
241 | R6 = R1 >> 31; | ||
242 | CC = R3 < 0; | ||
243 | IF CC JUMP .LRETURN_IDENT; | ||
244 | |||
245 | R2.L = SIGNBITS R3; | ||
246 | R2 = R2.L (Z); | ||
247 | R2 += -62; | ||
248 | (R7:4, P5:3) = [SP++]; | ||
249 | JUMP ___lshftli; | ||
250 | |||
251 | .Lpower_of_two_upper_zero: | ||
252 | CC = R2 < 0; | ||
253 | IF CC JUMP .Lmaxint_shift; | ||
254 | |||
255 | R2.L = SIGNBITS R2; | ||
256 | R2 = R2.L (Z); | ||
257 | R2 += -30; | ||
258 | (R7:4, P5:3) = [SP++]; | ||
259 | JUMP ___lshftli; | ||
260 | |||
261 | .Lmaxint_shift: | ||
262 | R2 = -31; | ||
263 | (R7:4, P5:3) = [SP++]; | ||
264 | JUMP ___lshftli; | ||
265 | |||
266 | .LRETURN_IDENT: | ||
267 | R0 = R6; | ||
268 | R1 = R7; | ||
269 | .LRETURN_R0: | ||
270 | (R7:4, P5:3) = [SP++]; | ||
271 | RTS; | ||
272 | .LDIV_BY_ZERO: | ||
273 | R0 = ~R2; | ||
274 | R1 = R0; | ||
275 | (R7:4, P5:3) = [SP++]; | ||
276 | RTS; | ||
277 | |||
278 | ENDPROC(___udivdi3) | ||
279 | |||
280 | |||
281 | ENTRY(___lshftli) | ||
282 | CC = R2 == 0; | ||
283 | IF CC JUMP .Lfinished; // nothing to do | ||
284 | CC = R2 < 0; | ||
285 | IF CC JUMP .Lrshift; | ||
286 | R3 = 64; | ||
287 | CC = R2 < R3; | ||
288 | IF !CC JUMP .Lretzero; | ||
289 | |||
290 | // We're shifting left, and it's less than 64 bits, so | ||
291 | // a valid result will be returned. | ||
292 | |||
293 | R3 >>= 1; // R3 now 32 | ||
294 | CC = R2 < R3; | ||
295 | |||
296 | IF !CC JUMP .Lzerohalf; | ||
297 | |||
298 | // We're shifting left, between 1 and 31 bits, which means | ||
299 | // some of the low half will be shifted into the high half. | ||
300 | // Work out how much. | ||
301 | |||
302 | R3 = R3 - R2; | ||
303 | |||
304 | // Save that much data from the bottom half. | ||
305 | |||
306 | P1 = R7; | ||
307 | R7 = R0; | ||
308 | R7 >>= R3; | ||
309 | |||
310 | // Adjust both parts of the parameter. | ||
311 | |||
312 | R0 <<= R2; | ||
313 | R1 <<= R2; | ||
314 | |||
315 | // And include the bits moved across. | ||
316 | |||
317 | R1 = R1 | R7; | ||
318 | R7 = P1; | ||
319 | RTS; | ||
320 | |||
321 | .Lzerohalf: | ||
322 | // We're shifting left, between 32 and 63 bits, so the | ||
323 | // bottom half will become zero, and the top half will | ||
324 | // lose some bits. How many? | ||
325 | |||
326 | R2 = R2 - R3; // N - 32 | ||
327 | R1 = LSHIFT R0 BY R2.L; | ||
328 | R0 = R0 - R0; | ||
329 | RTS; | ||
330 | |||
331 | .Lretzero: | ||
332 | R0 = R0 - R0; | ||
333 | R1 = R0; | ||
334 | .Lfinished: | ||
335 | RTS; | ||
336 | |||
337 | .Lrshift: | ||
338 | // We're shifting right, but by how much? | ||
339 | R2 = -R2; | ||
340 | R3 = 64; | ||
341 | CC = R2 < R3; | ||
342 | IF !CC JUMP .Lretzero; | ||
343 | |||
344 | // Shifting right less than 64 bits, so some result bits will | ||
345 | // be retained. | ||
346 | |||
347 | R3 >>= 1; // R3 now 32 | ||
348 | CC = R2 < R3; | ||
349 | IF !CC JUMP .Lsignhalf; | ||
350 | |||
351 | // Shifting right between 1 and 31 bits, so need to copy | ||
352 | // data across words. | ||
353 | |||
354 | P1 = R7; | ||
355 | R3 = R3 - R2; | ||
356 | R7 = R1; | ||
357 | R7 <<= R3; | ||
358 | R1 >>= R2; | ||
359 | R0 >>= R2; | ||
360 | R0 = R7 | R0; | ||
361 | R7 = P1; | ||
362 | RTS; | ||
363 | |||
364 | .Lsignhalf: | ||
365 | // Shifting right between 32 and 63 bits, so the top half | ||
366 | // will become all zero-bits, and the bottom half is some | ||
367 | // of the top half. But how much? | ||
368 | |||
369 | R2 = R2 - R3; | ||
370 | R0 = R1; | ||
371 | R0 >>= R2; | ||
372 | R1 = 0; | ||
373 | RTS; | ||
374 | |||
375 | ENDPROC(___lshftli) | ||
diff --git a/arch/blackfin/mach-bf527/Kconfig b/arch/blackfin/mach-bf527/Kconfig index 50321f723dee..5c736837d4bf 100644 --- a/arch/blackfin/mach-bf527/Kconfig +++ b/arch/blackfin/mach-bf527/Kconfig | |||
@@ -1,5 +1,7 @@ | |||
1 | if (BF52x) | 1 | if (BF52x) |
2 | 2 | ||
3 | source "arch/blackfin/mach-bf527/boards/Kconfig" | ||
4 | |||
3 | menu "BF527 Specific Configuration" | 5 | menu "BF527 Specific Configuration" |
4 | 6 | ||
5 | comment "Alternative Multiplexing Scheme" | 7 | comment "Alternative Multiplexing Scheme" |
diff --git a/arch/blackfin/mach-bf527/boards/Kconfig b/arch/blackfin/mach-bf527/boards/Kconfig new file mode 100644 index 000000000000..6a570ad03746 --- /dev/null +++ b/arch/blackfin/mach-bf527/boards/Kconfig | |||
@@ -0,0 +1,12 @@ | |||
1 | choice | ||
2 | prompt "System type" | ||
3 | default BFIN527_EZKIT | ||
4 | help | ||
5 | Select your board! | ||
6 | |||
7 | config BFIN527_EZKIT | ||
8 | bool "BF527-EZKIT" | ||
9 | help | ||
10 | BF527-EZKIT-LITE board support. | ||
11 | |||
12 | endchoice | ||
diff --git a/arch/blackfin/mach-bf527/boards/Makefile b/arch/blackfin/mach-bf527/boards/Makefile index 912ac8ebc889..7277d35ef111 100644 --- a/arch/blackfin/mach-bf527/boards/Makefile +++ b/arch/blackfin/mach-bf527/boards/Makefile | |||
@@ -1,7 +1,5 @@ | |||
1 | # | 1 | # |
2 | # arch/blackfin/mach-bf532/boards/Makefile | 2 | # arch/blackfin/mach-bf527/boards/Makefile |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y += eth_mac.o | 5 | obj-$(CONFIG_BFIN527_EZKIT) += ezkit.o |
6 | obj-$(CONFIG_BFIN527_EZKIT) += ezkit.o | ||
7 | |||
diff --git a/arch/blackfin/mach-bf527/boards/eth_mac.c b/arch/blackfin/mach-bf527/boards/eth_mac.c deleted file mode 100644 index a725cc8a9290..000000000000 --- a/arch/blackfin/mach-bf527/boards/eth_mac.c +++ /dev/null | |||
@@ -1,50 +0,0 @@ | |||
1 | /* | ||
2 | * arch/blackfin/mach-bf537/board/eth_mac.c | ||
3 | * | ||
4 | * Copyright (C) 2007 Analog Devices, Inc. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | ||
20 | #include <linux/module.h> | ||
21 | #include <asm/blackfin.h> | ||
22 | |||
23 | #if defined(CONFIG_GENERIC_BOARD) || defined(CONFIG_BFIN537_STAMP) | ||
24 | |||
25 | /* | ||
26 | * Currently the MAC address is saved in Flash by U-Boot | ||
27 | */ | ||
28 | #define FLASH_MAC 0x203f0000 | ||
29 | |||
30 | void get_bf537_ether_addr(char *addr) | ||
31 | { | ||
32 | unsigned int flash_mac = (unsigned int) FLASH_MAC; | ||
33 | *(u32 *)(&(addr[0])) = bfin_read32(flash_mac); | ||
34 | flash_mac += 4; | ||
35 | *(u16 *)(&(addr[4])) = bfin_read16(flash_mac); | ||
36 | } | ||
37 | |||
38 | #else | ||
39 | |||
40 | /* | ||
41 | * Provide MAC address function for other specific board setting | ||
42 | */ | ||
43 | void get_bf537_ether_addr(char *addr) | ||
44 | { | ||
45 | printk(KERN_WARNING "%s: No valid Ethernet MAC address found\n", __FILE__); | ||
46 | } | ||
47 | |||
48 | #endif | ||
49 | |||
50 | EXPORT_SYMBOL(get_bf537_ether_addr); | ||
diff --git a/arch/blackfin/mach-bf527/boards/ezkit.c b/arch/blackfin/mach-bf527/boards/ezkit.c index bf1bedcc8868..003e2ac654d8 100644 --- a/arch/blackfin/mach-bf527/boards/ezkit.c +++ b/arch/blackfin/mach-bf527/boards/ezkit.c | |||
@@ -35,17 +35,18 @@ | |||
35 | #include <linux/spi/spi.h> | 35 | #include <linux/spi/spi.h> |
36 | #include <linux/spi/flash.h> | 36 | #include <linux/spi/flash.h> |
37 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) | 37 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) |
38 | #include <linux/usb_isp1362.h> | 38 | #include <linux/usb/isp1362.h> |
39 | #endif | 39 | #endif |
40 | #include <linux/pata_platform.h> | 40 | #include <linux/pata_platform.h> |
41 | #include <linux/irq.h> | 41 | #include <linux/irq.h> |
42 | #include <linux/interrupt.h> | 42 | #include <linux/interrupt.h> |
43 | #include <linux/usb_sl811.h> | 43 | #include <linux/usb/sl811.h> |
44 | #include <asm/cplb.h> | 44 | #include <asm/cplb.h> |
45 | #include <asm/dma.h> | 45 | #include <asm/dma.h> |
46 | #include <asm/bfin5xx_spi.h> | 46 | #include <asm/bfin5xx_spi.h> |
47 | #include <asm/reboot.h> | 47 | #include <asm/reboot.h> |
48 | #include <asm/nand.h> | 48 | #include <asm/nand.h> |
49 | #include <asm/portmux.h> | ||
49 | #include <linux/spi/ad7877.h> | 50 | #include <linux/spi/ad7877.h> |
50 | 51 | ||
51 | /* | 52 | /* |
@@ -450,6 +451,13 @@ static const struct ad7877_platform_data bfin_ad7877_ts_info = { | |||
450 | }; | 451 | }; |
451 | #endif | 452 | #endif |
452 | 453 | ||
454 | #if defined(CONFIG_SND_SOC_WM8731) || defined(CONFIG_SND_SOC_WM8731_MODULE) \ | ||
455 | && defined(CONFIG_SND_SOC_WM8731_SPI) | ||
456 | static struct bfin5xx_spi_chip spi_wm8731_chip_info = { | ||
457 | .enable_dma = 0, | ||
458 | .bits_per_word = 16, | ||
459 | }; | ||
460 | #endif | ||
453 | static struct spi_board_info bfin_spi_board_info[] __initdata = { | 461 | static struct spi_board_info bfin_spi_board_info[] __initdata = { |
454 | #if defined(CONFIG_MTD_M25P80) \ | 462 | #if defined(CONFIG_MTD_M25P80) \ |
455 | || defined(CONFIG_MTD_M25P80_MODULE) | 463 | || defined(CONFIG_MTD_M25P80_MODULE) |
@@ -551,17 +559,29 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
551 | .platform_data = &bfin_ad7877_ts_info, | 559 | .platform_data = &bfin_ad7877_ts_info, |
552 | .irq = IRQ_PF6, | 560 | .irq = IRQ_PF6, |
553 | .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ | 561 | .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ |
554 | .bus_num = 1, | 562 | .bus_num = 0, |
555 | .chip_select = 1, | 563 | .chip_select = 1, |
556 | .controller_data = &spi_ad7877_chip_info, | 564 | .controller_data = &spi_ad7877_chip_info, |
557 | }, | 565 | }, |
558 | #endif | 566 | #endif |
567 | #if defined(CONFIG_SND_SOC_WM8731) || defined(CONFIG_SND_SOC_WM8731_MODULE) \ | ||
568 | && defined(CONFIG_SND_SOC_WM8731_SPI) | ||
569 | { | ||
570 | .modalias = "wm8731", | ||
571 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | ||
572 | .bus_num = 0, | ||
573 | .chip_select = 5, | ||
574 | .controller_data = &spi_wm8731_chip_info, | ||
575 | .mode = SPI_MODE_0, | ||
576 | }, | ||
577 | #endif | ||
559 | }; | 578 | }; |
560 | 579 | ||
561 | /* SPI controller data */ | 580 | /* SPI controller data */ |
562 | static struct bfin5xx_spi_master bfin_spi0_info = { | 581 | static struct bfin5xx_spi_master bfin_spi0_info = { |
563 | .num_chipselect = 8, | 582 | .num_chipselect = 8, |
564 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 583 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
584 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, | ||
565 | }; | 585 | }; |
566 | 586 | ||
567 | /* SPI (0) */ | 587 | /* SPI (0) */ |
@@ -788,3 +808,14 @@ void native_machine_restart(char *cmd) | |||
788 | if ((bfin_read_SYSCR() & 0x7) == 0x3) | 808 | if ((bfin_read_SYSCR() & 0x7) == 0x3) |
789 | bfin_gpio_reset_spi0_ssel1(); | 809 | bfin_gpio_reset_spi0_ssel1(); |
790 | } | 810 | } |
811 | |||
812 | /* | ||
813 | * Currently the MAC address is saved in Flash by U-Boot | ||
814 | */ | ||
815 | #define FLASH_MAC 0x203f0000 | ||
816 | void bfin_get_ether_addr(char *addr) | ||
817 | { | ||
818 | *(u32 *)(&(addr[0])) = bfin_read32(FLASH_MAC); | ||
819 | *(u16 *)(&(addr[4])) = bfin_read16(FLASH_MAC + 4); | ||
820 | } | ||
821 | EXPORT_SYMBOL(bfin_get_ether_addr); | ||
diff --git a/arch/blackfin/mach-bf533/Kconfig b/arch/blackfin/mach-bf533/Kconfig index 14297b3ed5c3..76beb75f12da 100644 --- a/arch/blackfin/mach-bf533/Kconfig +++ b/arch/blackfin/mach-bf533/Kconfig | |||
@@ -1,5 +1,7 @@ | |||
1 | if (BF533 || BF532 || BF531) | 1 | if (BF533 || BF532 || BF531) |
2 | 2 | ||
3 | source "arch/blackfin/mach-bf533/boards/Kconfig" | ||
4 | |||
3 | menu "BF533/2/1 Specific Configuration" | 5 | menu "BF533/2/1 Specific Configuration" |
4 | 6 | ||
5 | comment "Interrupt Priority Assignment" | 7 | comment "Interrupt Priority Assignment" |
diff --git a/arch/blackfin/mach-bf533/boards/H8606.c b/arch/blackfin/mach-bf533/boards/H8606.c index b941550f9568..6bcf4047f89c 100644 --- a/arch/blackfin/mach-bf533/boards/H8606.c +++ b/arch/blackfin/mach-bf533/boards/H8606.c | |||
@@ -36,20 +36,21 @@ | |||
36 | #include <linux/spi/spi.h> | 36 | #include <linux/spi/spi.h> |
37 | #include <linux/spi/flash.h> | 37 | #include <linux/spi/flash.h> |
38 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) | 38 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) |
39 | #include <linux/usb_isp1362.h> | 39 | #include <linux/usb/isp1362.h> |
40 | #endif | 40 | #endif |
41 | #include <linux/pata_platform.h> | 41 | #include <linux/pata_platform.h> |
42 | #include <linux/irq.h> | 42 | #include <linux/irq.h> |
43 | #include <asm/dma.h> | 43 | #include <asm/dma.h> |
44 | #include <asm/bfin5xx_spi.h> | 44 | #include <asm/bfin5xx_spi.h> |
45 | #include <asm/reboot.h> | 45 | #include <asm/reboot.h> |
46 | #include <asm/portmux.h> | ||
46 | 47 | ||
47 | /* | 48 | /* |
48 | * Name the Board for the /proc/cpuinfo | 49 | * Name the Board for the /proc/cpuinfo |
49 | */ | 50 | */ |
50 | const char bfin_board_name[] = "HV Sistemas H8606"; | 51 | const char bfin_board_name[] = "HV Sistemas H8606"; |
51 | 52 | ||
52 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_BFIN_MODULE) | 53 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) |
53 | static struct platform_device rtc_device = { | 54 | static struct platform_device rtc_device = { |
54 | .name = "rtc-bfin", | 55 | .name = "rtc-bfin", |
55 | .id = -1, | 56 | .id = -1, |
@@ -93,10 +94,6 @@ static struct resource smc91x_resources[] = { | |||
93 | .end = IRQ_PROG_INTB, | 94 | .end = IRQ_PROG_INTB, |
94 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | 95 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, |
95 | }, { | 96 | }, { |
96 | /* | ||
97 | * denotes the flag pin and is used directly if | ||
98 | * CONFIG_IRQCHIP_DEMUX_GPIO is defined. | ||
99 | */ | ||
100 | .start = IRQ_PF7, | 97 | .start = IRQ_PF7, |
101 | .end = IRQ_PF7, | 98 | .end = IRQ_PF7, |
102 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | 99 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, |
@@ -269,6 +266,7 @@ static struct resource bfin_spi0_resource[] = { | |||
269 | static struct bfin5xx_spi_master bfin_spi0_info = { | 266 | static struct bfin5xx_spi_master bfin_spi0_info = { |
270 | .num_chipselect = 8, | 267 | .num_chipselect = 8, |
271 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 268 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
269 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, | ||
272 | }; | 270 | }; |
273 | 271 | ||
274 | static struct platform_device bfin_spi0_device = { | 272 | static struct platform_device bfin_spi0_device = { |
@@ -342,4 +340,4 @@ static int __init H8606_init(void) | |||
342 | return 0; | 340 | return 0; |
343 | } | 341 | } |
344 | 342 | ||
345 | arch_initcall(H8606_init); \ No newline at end of file | 343 | arch_initcall(H8606_init); |
diff --git a/arch/blackfin/mach-bf533/boards/Kconfig b/arch/blackfin/mach-bf533/boards/Kconfig new file mode 100644 index 000000000000..751de5110afc --- /dev/null +++ b/arch/blackfin/mach-bf533/boards/Kconfig | |||
@@ -0,0 +1,34 @@ | |||
1 | choice | ||
2 | prompt "System type" | ||
3 | default BFIN533_STAMP | ||
4 | help | ||
5 | Select your board! | ||
6 | |||
7 | config BFIN533_EZKIT | ||
8 | bool "BF533-EZKIT" | ||
9 | help | ||
10 | BF533-EZKIT-LITE board support. | ||
11 | |||
12 | config BFIN533_STAMP | ||
13 | bool "BF533-STAMP" | ||
14 | help | ||
15 | BF533-STAMP board support. | ||
16 | |||
17 | config BFIN533_BLUETECHNIX_CM | ||
18 | bool "Bluetechnix CM-BF533" | ||
19 | depends on (BF533) | ||
20 | help | ||
21 | CM-BF533 support for EVAL- and DEV-Board. | ||
22 | |||
23 | config H8606_HVSISTEMAS | ||
24 | bool "HV Sistemas H8606" | ||
25 | depends on (BF532) | ||
26 | help | ||
27 | HV Sistemas H8606 board support. | ||
28 | |||
29 | config GENERIC_BF533_BOARD | ||
30 | bool "Generic" | ||
31 | help | ||
32 | Generic or Custom board support. | ||
33 | |||
34 | endchoice | ||
diff --git a/arch/blackfin/mach-bf533/boards/Makefile b/arch/blackfin/mach-bf533/boards/Makefile index 2452b456ccbd..54f57fb9791e 100644 --- a/arch/blackfin/mach-bf533/boards/Makefile +++ b/arch/blackfin/mach-bf533/boards/Makefile | |||
@@ -2,7 +2,7 @@ | |||
2 | # arch/blackfin/mach-bf533/boards/Makefile | 2 | # arch/blackfin/mach-bf533/boards/Makefile |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-$(CONFIG_GENERIC_BOARD) += generic_board.o | 5 | obj-$(CONFIG_GENERIC_BF533_BOARD) += generic_board.o |
6 | obj-$(CONFIG_BFIN533_STAMP) += stamp.o | 6 | obj-$(CONFIG_BFIN533_STAMP) += stamp.o |
7 | obj-$(CONFIG_BFIN533_EZKIT) += ezkit.o | 7 | obj-$(CONFIG_BFIN533_EZKIT) += ezkit.o |
8 | obj-$(CONFIG_BFIN533_BLUETECHNIX_CM) += cm_bf533.o | 8 | obj-$(CONFIG_BFIN533_BLUETECHNIX_CM) += cm_bf533.o |
diff --git a/arch/blackfin/mach-bf533/boards/cm_bf533.c b/arch/blackfin/mach-bf533/boards/cm_bf533.c index a863522a4467..21df2f375497 100644 --- a/arch/blackfin/mach-bf533/boards/cm_bf533.c +++ b/arch/blackfin/mach-bf533/boards/cm_bf533.c | |||
@@ -33,11 +33,12 @@ | |||
33 | #include <linux/mtd/partitions.h> | 33 | #include <linux/mtd/partitions.h> |
34 | #include <linux/spi/spi.h> | 34 | #include <linux/spi/spi.h> |
35 | #include <linux/spi/flash.h> | 35 | #include <linux/spi/flash.h> |
36 | #include <linux/usb_isp1362.h> | 36 | #include <linux/usb/isp1362.h> |
37 | #include <linux/pata_platform.h> | 37 | #include <linux/pata_platform.h> |
38 | #include <linux/irq.h> | 38 | #include <linux/irq.h> |
39 | #include <asm/dma.h> | 39 | #include <asm/dma.h> |
40 | #include <asm/bfin5xx_spi.h> | 40 | #include <asm/bfin5xx_spi.h> |
41 | #include <asm/portmux.h> | ||
41 | 42 | ||
42 | /* | 43 | /* |
43 | * Name the Board for the /proc/cpuinfo | 44 | * Name the Board for the /proc/cpuinfo |
@@ -175,6 +176,7 @@ static struct resource bfin_spi0_resource[] = { | |||
175 | static struct bfin5xx_spi_master bfin_spi0_info = { | 176 | static struct bfin5xx_spi_master bfin_spi0_info = { |
176 | .num_chipselect = 8, | 177 | .num_chipselect = 8, |
177 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 178 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
179 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, | ||
178 | }; | 180 | }; |
179 | 181 | ||
180 | static struct platform_device bfin_spi0_device = { | 182 | static struct platform_device bfin_spi0_device = { |
diff --git a/arch/blackfin/mach-bf533/boards/ezkit.c b/arch/blackfin/mach-bf533/boards/ezkit.c index 34b63920e272..be852034a68b 100644 --- a/arch/blackfin/mach-bf533/boards/ezkit.c +++ b/arch/blackfin/mach-bf533/boards/ezkit.c | |||
@@ -34,11 +34,12 @@ | |||
34 | #include <linux/mtd/partitions.h> | 34 | #include <linux/mtd/partitions.h> |
35 | #include <linux/spi/spi.h> | 35 | #include <linux/spi/spi.h> |
36 | #include <linux/spi/flash.h> | 36 | #include <linux/spi/flash.h> |
37 | #include <linux/usb_isp1362.h> | 37 | #include <linux/usb/isp1362.h> |
38 | #include <linux/pata_platform.h> | 38 | #include <linux/pata_platform.h> |
39 | #include <linux/irq.h> | 39 | #include <linux/irq.h> |
40 | #include <asm/dma.h> | 40 | #include <asm/dma.h> |
41 | #include <asm/bfin5xx_spi.h> | 41 | #include <asm/bfin5xx_spi.h> |
42 | #include <asm/portmux.h> | ||
42 | 43 | ||
43 | /* | 44 | /* |
44 | * Name the Board for the /proc/cpuinfo | 45 | * Name the Board for the /proc/cpuinfo |
@@ -187,6 +188,7 @@ static struct resource bfin_spi0_resource[] = { | |||
187 | static struct bfin5xx_spi_master bfin_spi0_info = { | 188 | static struct bfin5xx_spi_master bfin_spi0_info = { |
188 | .num_chipselect = 8, | 189 | .num_chipselect = 8, |
189 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 190 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
191 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, | ||
190 | }; | 192 | }; |
191 | 193 | ||
192 | static struct platform_device bfin_spi0_device = { | 194 | static struct platform_device bfin_spi0_device = { |
diff --git a/arch/blackfin/mach-bf533/boards/generic_board.c b/arch/blackfin/mach-bf533/boards/generic_board.c index 310b7772c458..e359a0d6467f 100644 --- a/arch/blackfin/mach-bf533/boards/generic_board.c +++ b/arch/blackfin/mach-bf533/boards/generic_board.c | |||
@@ -58,10 +58,6 @@ static struct resource smc91x_resources[] = { | |||
58 | .end = IRQ_PROG_INTB, | 58 | .end = IRQ_PROG_INTB, |
59 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | 59 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, |
60 | }, { | 60 | }, { |
61 | /* | ||
62 | * denotes the flag pin and is used directly if | ||
63 | * CONFIG_IRQCHIP_DEMUX_GPIO is defined. | ||
64 | */ | ||
65 | .start = IRQ_PF7, | 61 | .start = IRQ_PF7, |
66 | .end = IRQ_PF7, | 62 | .end = IRQ_PF7, |
67 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | 63 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, |
diff --git a/arch/blackfin/mach-bf533/boards/stamp.c b/arch/blackfin/mach-bf533/boards/stamp.c index 62ffa500420f..8fde8d832850 100644 --- a/arch/blackfin/mach-bf533/boards/stamp.c +++ b/arch/blackfin/mach-bf533/boards/stamp.c | |||
@@ -35,13 +35,14 @@ | |||
35 | #include <linux/spi/spi.h> | 35 | #include <linux/spi/spi.h> |
36 | #include <linux/spi/flash.h> | 36 | #include <linux/spi/flash.h> |
37 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) | 37 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) |
38 | #include <linux/usb_isp1362.h> | 38 | #include <linux/usb/isp1362.h> |
39 | #endif | 39 | #endif |
40 | #include <linux/pata_platform.h> | 40 | #include <linux/pata_platform.h> |
41 | #include <linux/irq.h> | 41 | #include <linux/irq.h> |
42 | #include <asm/dma.h> | 42 | #include <asm/dma.h> |
43 | #include <asm/bfin5xx_spi.h> | 43 | #include <asm/bfin5xx_spi.h> |
44 | #include <asm/reboot.h> | 44 | #include <asm/reboot.h> |
45 | #include <asm/portmux.h> | ||
45 | 46 | ||
46 | /* | 47 | /* |
47 | * Name the Board for the /proc/cpuinfo | 48 | * Name the Board for the /proc/cpuinfo |
@@ -286,6 +287,7 @@ static struct resource bfin_spi0_resource[] = { | |||
286 | static struct bfin5xx_spi_master bfin_spi0_info = { | 287 | static struct bfin5xx_spi_master bfin_spi0_info = { |
287 | .num_chipselect = 8, | 288 | .num_chipselect = 8, |
288 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 289 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
290 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, | ||
289 | }; | 291 | }; |
290 | 292 | ||
291 | static struct platform_device bfin_spi0_device = { | 293 | static struct platform_device bfin_spi0_device = { |
diff --git a/arch/blackfin/mach-bf537/Kconfig b/arch/blackfin/mach-bf537/Kconfig index e6648db09519..8255374c04aa 100644 --- a/arch/blackfin/mach-bf537/Kconfig +++ b/arch/blackfin/mach-bf537/Kconfig | |||
@@ -1,5 +1,7 @@ | |||
1 | if (BF537 || BF534 || BF536) | 1 | if (BF537 || BF534 || BF536) |
2 | 2 | ||
3 | source "arch/blackfin/mach-bf537/boards/Kconfig" | ||
4 | |||
3 | menu "BF537 Specific Configuration" | 5 | menu "BF537 Specific Configuration" |
4 | 6 | ||
5 | comment "Interrupt Priority Assignment" | 7 | comment "Interrupt Priority Assignment" |
diff --git a/arch/blackfin/mach-bf537/boards/Kconfig b/arch/blackfin/mach-bf537/boards/Kconfig new file mode 100644 index 000000000000..96a15196e416 --- /dev/null +++ b/arch/blackfin/mach-bf537/boards/Kconfig | |||
@@ -0,0 +1,29 @@ | |||
1 | choice | ||
2 | prompt "System type" | ||
3 | default BFIN537_STAMP | ||
4 | help | ||
5 | Select your board! | ||
6 | |||
7 | config BFIN537_STAMP | ||
8 | bool "BF537-STAMP" | ||
9 | help | ||
10 | BF537-STAMP board support. | ||
11 | |||
12 | config BFIN537_BLUETECHNIX_CM | ||
13 | bool "Bluetechnix CM-BF537" | ||
14 | depends on (BF537) | ||
15 | help | ||
16 | CM-BF537 support for EVAL- and DEV-Board. | ||
17 | |||
18 | config PNAV10 | ||
19 | bool "PNAV board" | ||
20 | depends on (BF537) | ||
21 | help | ||
22 | PNAV board support. | ||
23 | |||
24 | config GENERIC_BF537_BOARD | ||
25 | bool "Generic" | ||
26 | help | ||
27 | Generic or Custom board support. | ||
28 | |||
29 | endchoice | ||
diff --git a/arch/blackfin/mach-bf537/boards/Makefile b/arch/blackfin/mach-bf537/boards/Makefile index 23323cacc3aa..94a85174283a 100644 --- a/arch/blackfin/mach-bf537/boards/Makefile +++ b/arch/blackfin/mach-bf537/boards/Makefile | |||
@@ -2,8 +2,7 @@ | |||
2 | # arch/blackfin/mach-bf537/boards/Makefile | 2 | # arch/blackfin/mach-bf537/boards/Makefile |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y += eth_mac.o | 5 | obj-$(CONFIG_GENERIC_BF537_BOARD) += generic_board.o |
6 | obj-$(CONFIG_GENERIC_BOARD) += generic_board.o | 6 | obj-$(CONFIG_BFIN537_STAMP) += stamp.o led.o |
7 | obj-$(CONFIG_BFIN537_STAMP) += stamp.o led.o | 7 | obj-$(CONFIG_BFIN537_BLUETECHNIX_CM) += cm_bf537.o |
8 | obj-$(CONFIG_BFIN537_BLUETECHNIX_CM) += cm_bf537.o | 8 | obj-$(CONFIG_PNAV10) += pnav10.o |
9 | obj-$(CONFIG_PNAV10) += pnav10.o | ||
diff --git a/arch/blackfin/mach-bf537/boards/cm_bf537.c b/arch/blackfin/mach-bf537/boards/cm_bf537.c index 2915931045e3..c0fb06dbc42e 100644 --- a/arch/blackfin/mach-bf537/boards/cm_bf537.c +++ b/arch/blackfin/mach-bf537/boards/cm_bf537.c | |||
@@ -34,11 +34,12 @@ | |||
34 | #include <linux/mtd/partitions.h> | 34 | #include <linux/mtd/partitions.h> |
35 | #include <linux/spi/spi.h> | 35 | #include <linux/spi/spi.h> |
36 | #include <linux/spi/flash.h> | 36 | #include <linux/spi/flash.h> |
37 | #include <linux/usb_isp1362.h> | 37 | #include <linux/usb/isp1362.h> |
38 | #include <linux/pata_platform.h> | 38 | #include <linux/pata_platform.h> |
39 | #include <linux/irq.h> | 39 | #include <linux/irq.h> |
40 | #include <asm/dma.h> | 40 | #include <asm/dma.h> |
41 | #include <asm/bfin5xx_spi.h> | 41 | #include <asm/bfin5xx_spi.h> |
42 | #include <asm/portmux.h> | ||
42 | 43 | ||
43 | /* | 44 | /* |
44 | * Name the Board for the /proc/cpuinfo | 45 | * Name the Board for the /proc/cpuinfo |
@@ -194,6 +195,7 @@ static struct resource bfin_spi0_resource[] = { | |||
194 | static struct bfin5xx_spi_master bfin_spi0_info = { | 195 | static struct bfin5xx_spi_master bfin_spi0_info = { |
195 | .num_chipselect = 8, | 196 | .num_chipselect = 8, |
196 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 197 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
198 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, | ||
197 | }; | 199 | }; |
198 | 200 | ||
199 | static struct platform_device bfin_spi0_device = { | 201 | static struct platform_device bfin_spi0_device = { |
@@ -425,3 +427,10 @@ static int __init cm_bf537_init(void) | |||
425 | } | 427 | } |
426 | 428 | ||
427 | arch_initcall(cm_bf537_init); | 429 | arch_initcall(cm_bf537_init); |
430 | |||
431 | void bfin_get_ether_addr(char *addr) | ||
432 | { | ||
433 | random_ether_addr(addr); | ||
434 | printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__); | ||
435 | } | ||
436 | EXPORT_SYMBOL(bfin_get_ether_addr); | ||
diff --git a/arch/blackfin/mach-bf537/boards/eth_mac.c b/arch/blackfin/mach-bf537/boards/eth_mac.c deleted file mode 100644 index a725cc8a9290..000000000000 --- a/arch/blackfin/mach-bf537/boards/eth_mac.c +++ /dev/null | |||
@@ -1,50 +0,0 @@ | |||
1 | /* | ||
2 | * arch/blackfin/mach-bf537/board/eth_mac.c | ||
3 | * | ||
4 | * Copyright (C) 2007 Analog Devices, Inc. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | ||
20 | #include <linux/module.h> | ||
21 | #include <asm/blackfin.h> | ||
22 | |||
23 | #if defined(CONFIG_GENERIC_BOARD) || defined(CONFIG_BFIN537_STAMP) | ||
24 | |||
25 | /* | ||
26 | * Currently the MAC address is saved in Flash by U-Boot | ||
27 | */ | ||
28 | #define FLASH_MAC 0x203f0000 | ||
29 | |||
30 | void get_bf537_ether_addr(char *addr) | ||
31 | { | ||
32 | unsigned int flash_mac = (unsigned int) FLASH_MAC; | ||
33 | *(u32 *)(&(addr[0])) = bfin_read32(flash_mac); | ||
34 | flash_mac += 4; | ||
35 | *(u16 *)(&(addr[4])) = bfin_read16(flash_mac); | ||
36 | } | ||
37 | |||
38 | #else | ||
39 | |||
40 | /* | ||
41 | * Provide MAC address function for other specific board setting | ||
42 | */ | ||
43 | void get_bf537_ether_addr(char *addr) | ||
44 | { | ||
45 | printk(KERN_WARNING "%s: No valid Ethernet MAC address found\n", __FILE__); | ||
46 | } | ||
47 | |||
48 | #endif | ||
49 | |||
50 | EXPORT_SYMBOL(get_bf537_ether_addr); | ||
diff --git a/arch/blackfin/mach-bf537/boards/generic_board.c b/arch/blackfin/mach-bf537/boards/generic_board.c index 255da7a98481..09f4bfbd2350 100644 --- a/arch/blackfin/mach-bf537/boards/generic_board.c +++ b/arch/blackfin/mach-bf537/boards/generic_board.c | |||
@@ -35,7 +35,7 @@ | |||
35 | #include <linux/spi/spi.h> | 35 | #include <linux/spi/spi.h> |
36 | #include <linux/spi/flash.h> | 36 | #include <linux/spi/flash.h> |
37 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) | 37 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) |
38 | #include <linux/usb_isp1362.h> | 38 | #include <linux/usb/isp1362.h> |
39 | #endif | 39 | #endif |
40 | #include <linux/pata_platform.h> | 40 | #include <linux/pata_platform.h> |
41 | #include <linux/irq.h> | 41 | #include <linux/irq.h> |
@@ -44,6 +44,7 @@ | |||
44 | #include <asm/dma.h> | 44 | #include <asm/dma.h> |
45 | #include <asm/bfin5xx_spi.h> | 45 | #include <asm/bfin5xx_spi.h> |
46 | #include <asm/reboot.h> | 46 | #include <asm/reboot.h> |
47 | #include <asm/portmux.h> | ||
47 | #include <linux/spi/ad7877.h> | 48 | #include <linux/spi/ad7877.h> |
48 | 49 | ||
49 | /* | 50 | /* |
@@ -502,7 +503,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
502 | .platform_data = &bfin_ad7877_ts_info, | 503 | .platform_data = &bfin_ad7877_ts_info, |
503 | .irq = IRQ_PF6, | 504 | .irq = IRQ_PF6, |
504 | .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ | 505 | .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ |
505 | .bus_num = 1, | 506 | .bus_num = 0, |
506 | .chip_select = 1, | 507 | .chip_select = 1, |
507 | .controller_data = &spi_ad7877_chip_info, | 508 | .controller_data = &spi_ad7877_chip_info, |
508 | }, | 509 | }, |
@@ -513,6 +514,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
513 | static struct bfin5xx_spi_master bfin_spi0_info = { | 514 | static struct bfin5xx_spi_master bfin_spi0_info = { |
514 | .num_chipselect = 8, | 515 | .num_chipselect = 8, |
515 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 516 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
517 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, | ||
516 | }; | 518 | }; |
517 | 519 | ||
518 | /* SPI (0) */ | 520 | /* SPI (0) */ |
@@ -730,3 +732,10 @@ void native_machine_restart(char *cmd) | |||
730 | if ((bfin_read_SYSCR() & 0x7) == 0x3) | 732 | if ((bfin_read_SYSCR() & 0x7) == 0x3) |
731 | bfin_gpio_reset_spi0_ssel1(); | 733 | bfin_gpio_reset_spi0_ssel1(); |
732 | } | 734 | } |
735 | |||
736 | void bfin_get_ether_addr(char *addr) | ||
737 | { | ||
738 | random_ether_addr(addr); | ||
739 | printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__); | ||
740 | } | ||
741 | EXPORT_SYMBOL(bfin_get_ether_addr); | ||
diff --git a/arch/blackfin/mach-bf537/boards/pnav10.c b/arch/blackfin/mach-bf537/boards/pnav10.c index 87b808926789..fd5f4a6f08e4 100644 --- a/arch/blackfin/mach-bf537/boards/pnav10.c +++ b/arch/blackfin/mach-bf537/boards/pnav10.c | |||
@@ -35,11 +35,12 @@ | |||
35 | #include <linux/spi/spi.h> | 35 | #include <linux/spi/spi.h> |
36 | #include <linux/spi/flash.h> | 36 | #include <linux/spi/flash.h> |
37 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) | 37 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) |
38 | #include <linux/usb_isp1362.h> | 38 | #include <linux/usb/isp1362.h> |
39 | #endif | 39 | #endif |
40 | #include <linux/irq.h> | 40 | #include <linux/irq.h> |
41 | #include <asm/dma.h> | 41 | #include <asm/dma.h> |
42 | #include <asm/bfin5xx_spi.h> | 42 | #include <asm/bfin5xx_spi.h> |
43 | #include <asm/portmux.h> | ||
43 | #include <linux/usb/sl811.h> | 44 | #include <linux/usb/sl811.h> |
44 | 45 | ||
45 | #include <linux/spi/ad7877.h> | 46 | #include <linux/spi/ad7877.h> |
@@ -295,7 +296,7 @@ static struct bfin5xx_spi_chip spi_mmc_chip_info = { | |||
295 | 296 | ||
296 | #if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) | 297 | #if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) |
297 | static struct bfin5xx_spi_chip spi_ad7877_chip_info = { | 298 | static struct bfin5xx_spi_chip spi_ad7877_chip_info = { |
298 | .cs_change_per_word = 1, | 299 | .cs_change_per_word = 0, |
299 | .enable_dma = 0, | 300 | .enable_dma = 0, |
300 | .bits_per_word = 16, | 301 | .bits_per_word = 16, |
301 | }; | 302 | }; |
@@ -387,7 +388,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
387 | .platform_data = &bfin_ad7877_ts_info, | 388 | .platform_data = &bfin_ad7877_ts_info, |
388 | .irq = IRQ_PF2, | 389 | .irq = IRQ_PF2, |
389 | .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ | 390 | .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ |
390 | .bus_num = 1, | 391 | .bus_num = 0, |
391 | .chip_select = 5, | 392 | .chip_select = 5, |
392 | .controller_data = &spi_ad7877_chip_info, | 393 | .controller_data = &spi_ad7877_chip_info, |
393 | }, | 394 | }, |
@@ -413,6 +414,7 @@ static struct resource bfin_spi0_resource[] = { | |||
413 | static struct bfin5xx_spi_master bfin_spi0_info = { | 414 | static struct bfin5xx_spi_master bfin_spi0_info = { |
414 | .num_chipselect = 8, | 415 | .num_chipselect = 8, |
415 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 416 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
417 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, | ||
416 | }; | 418 | }; |
417 | 419 | ||
418 | static struct platform_device bfin_spi0_device = { | 420 | static struct platform_device bfin_spi0_device = { |
@@ -508,3 +510,10 @@ static int __init stamp_init(void) | |||
508 | } | 510 | } |
509 | 511 | ||
510 | arch_initcall(stamp_init); | 512 | arch_initcall(stamp_init); |
513 | |||
514 | void bfin_get_ether_addr(char *addr) | ||
515 | { | ||
516 | random_ether_addr(addr); | ||
517 | printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__); | ||
518 | } | ||
519 | EXPORT_SYMBOL(bfin_get_ether_addr); | ||
diff --git a/arch/blackfin/mach-bf537/boards/stamp.c b/arch/blackfin/mach-bf537/boards/stamp.c index 5f7b91fbafe8..07b0dc273d2f 100644 --- a/arch/blackfin/mach-bf537/boards/stamp.c +++ b/arch/blackfin/mach-bf537/boards/stamp.c | |||
@@ -35,7 +35,7 @@ | |||
35 | #include <linux/spi/spi.h> | 35 | #include <linux/spi/spi.h> |
36 | #include <linux/spi/flash.h> | 36 | #include <linux/spi/flash.h> |
37 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) | 37 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) |
38 | #include <linux/usb_isp1362.h> | 38 | #include <linux/usb/isp1362.h> |
39 | #endif | 39 | #endif |
40 | #include <linux/pata_platform.h> | 40 | #include <linux/pata_platform.h> |
41 | #include <linux/irq.h> | 41 | #include <linux/irq.h> |
@@ -44,6 +44,7 @@ | |||
44 | #include <asm/dma.h> | 44 | #include <asm/dma.h> |
45 | #include <asm/bfin5xx_spi.h> | 45 | #include <asm/bfin5xx_spi.h> |
46 | #include <asm/reboot.h> | 46 | #include <asm/reboot.h> |
47 | #include <asm/portmux.h> | ||
47 | #include <linux/spi/ad7877.h> | 48 | #include <linux/spi/ad7877.h> |
48 | 49 | ||
49 | /* | 50 | /* |
@@ -182,6 +183,28 @@ static struct platform_device dm9000_device = { | |||
182 | }; | 183 | }; |
183 | #endif | 184 | #endif |
184 | 185 | ||
186 | #if defined(CONFIG_AX88180) || defined(CONFIG_AX88180_MODULE) | ||
187 | static struct resource ax88180_resources[] = { | ||
188 | [0] = { | ||
189 | .start = 0x20300000, | ||
190 | .end = 0x20300000 + 0x8000, | ||
191 | .flags = IORESOURCE_MEM, | ||
192 | }, | ||
193 | [1] = { | ||
194 | .start = IRQ_PF7, | ||
195 | .end = IRQ_PF7, | ||
196 | .flags = (IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL), | ||
197 | }, | ||
198 | }; | ||
199 | |||
200 | static struct platform_device ax88180_device = { | ||
201 | .name = "ax88180", | ||
202 | .id = -1, | ||
203 | .num_resources = ARRAY_SIZE(ax88180_resources), | ||
204 | .resource = ax88180_resources, | ||
205 | }; | ||
206 | #endif | ||
207 | |||
185 | #if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE) | 208 | #if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE) |
186 | static struct resource sl811_hcd_resources[] = { | 209 | static struct resource sl811_hcd_resources[] = { |
187 | { | 210 | { |
@@ -502,7 +525,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
502 | .platform_data = &bfin_ad7877_ts_info, | 525 | .platform_data = &bfin_ad7877_ts_info, |
503 | .irq = IRQ_PF6, | 526 | .irq = IRQ_PF6, |
504 | .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ | 527 | .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ |
505 | .bus_num = 1, | 528 | .bus_num = 0, |
506 | .chip_select = 1, | 529 | .chip_select = 1, |
507 | .controller_data = &spi_ad7877_chip_info, | 530 | .controller_data = &spi_ad7877_chip_info, |
508 | }, | 531 | }, |
@@ -513,6 +536,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
513 | static struct bfin5xx_spi_master bfin_spi0_info = { | 536 | static struct bfin5xx_spi_master bfin_spi0_info = { |
514 | .num_chipselect = 8, | 537 | .num_chipselect = 8, |
515 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 538 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
539 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, | ||
516 | }; | 540 | }; |
517 | 541 | ||
518 | /* SPI (0) */ | 542 | /* SPI (0) */ |
@@ -554,15 +578,20 @@ static struct platform_device bfin_fb_adv7393_device = { | |||
554 | 578 | ||
555 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) | 579 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) |
556 | static struct resource bfin_uart_resources[] = { | 580 | static struct resource bfin_uart_resources[] = { |
581 | #ifdef CONFIG_SERIAL_BFIN_UART0 | ||
557 | { | 582 | { |
558 | .start = 0xFFC00400, | 583 | .start = 0xFFC00400, |
559 | .end = 0xFFC004FF, | 584 | .end = 0xFFC004FF, |
560 | .flags = IORESOURCE_MEM, | 585 | .flags = IORESOURCE_MEM, |
561 | }, { | 586 | }, |
587 | #endif | ||
588 | #ifdef CONFIG_SERIAL_BFIN_UART1 | ||
589 | { | ||
562 | .start = 0xFFC02000, | 590 | .start = 0xFFC02000, |
563 | .end = 0xFFC020FF, | 591 | .end = 0xFFC020FF, |
564 | .flags = IORESOURCE_MEM, | 592 | .flags = IORESOURCE_MEM, |
565 | }, | 593 | }, |
594 | #endif | ||
566 | }; | 595 | }; |
567 | 596 | ||
568 | static struct platform_device bfin_uart_device = { | 597 | static struct platform_device bfin_uart_device = { |
@@ -669,6 +698,10 @@ static struct platform_device *stamp_devices[] __initdata = { | |||
669 | &dm9000_device, | 698 | &dm9000_device, |
670 | #endif | 699 | #endif |
671 | 700 | ||
701 | #if defined(CONFIG_AX88180) || defined(CONFIG_AX88180_MODULE) | ||
702 | &ax88180_device, | ||
703 | #endif | ||
704 | |||
672 | #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) | 705 | #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) |
673 | &bfin_mac_device, | 706 | &bfin_mac_device, |
674 | #endif | 707 | #endif |
@@ -730,3 +763,14 @@ void native_machine_restart(char *cmd) | |||
730 | if ((bfin_read_SYSCR() & 0x7) == 0x3) | 763 | if ((bfin_read_SYSCR() & 0x7) == 0x3) |
731 | bfin_gpio_reset_spi0_ssel1(); | 764 | bfin_gpio_reset_spi0_ssel1(); |
732 | } | 765 | } |
766 | |||
767 | /* | ||
768 | * Currently the MAC address is saved in Flash by U-Boot | ||
769 | */ | ||
770 | #define FLASH_MAC 0x203f0000 | ||
771 | void bfin_get_ether_addr(char *addr) | ||
772 | { | ||
773 | *(u32 *)(&(addr[0])) = bfin_read32(FLASH_MAC); | ||
774 | *(u16 *)(&(addr[4])) = bfin_read16(FLASH_MAC + 4); | ||
775 | } | ||
776 | EXPORT_SYMBOL(bfin_get_ether_addr); | ||
diff --git a/arch/blackfin/mach-bf548/Kconfig b/arch/blackfin/mach-bf548/Kconfig index 08d8dc83701c..d8bd3b49f150 100644 --- a/arch/blackfin/mach-bf548/Kconfig +++ b/arch/blackfin/mach-bf548/Kconfig | |||
@@ -1,5 +1,7 @@ | |||
1 | if (BF54x) | 1 | if (BF54x) |
2 | 2 | ||
3 | source "arch/blackfin/mach-bf548/boards/Kconfig" | ||
4 | |||
3 | menu "BF548 Specific Configuration" | 5 | menu "BF548 Specific Configuration" |
4 | 6 | ||
5 | config DEB_DMA_URGENT | 7 | config DEB_DMA_URGENT |
diff --git a/arch/blackfin/mach-bf548/boards/Kconfig b/arch/blackfin/mach-bf548/boards/Kconfig new file mode 100644 index 000000000000..057129064037 --- /dev/null +++ b/arch/blackfin/mach-bf548/boards/Kconfig | |||
@@ -0,0 +1,12 @@ | |||
1 | choice | ||
2 | prompt "System type" | ||
3 | default BFIN548_EZKIT | ||
4 | help | ||
5 | Select your board! | ||
6 | |||
7 | config BFIN548_EZKIT | ||
8 | bool "BF548-EZKIT" | ||
9 | help | ||
10 | BFIN548-EZKIT board support. | ||
11 | |||
12 | endchoice | ||
diff --git a/arch/blackfin/mach-bf548/boards/Makefile b/arch/blackfin/mach-bf548/boards/Makefile index 486e07c99a51..a444cc739578 100644 --- a/arch/blackfin/mach-bf548/boards/Makefile +++ b/arch/blackfin/mach-bf548/boards/Makefile | |||
@@ -2,4 +2,4 @@ | |||
2 | # arch/blackfin/mach-bf548/boards/Makefile | 2 | # arch/blackfin/mach-bf548/boards/Makefile |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-$(CONFIG_BFIN548_EZKIT) += ezkit.o led.o | 5 | obj-$(CONFIG_BFIN548_EZKIT) += ezkit.o led.o |
diff --git a/arch/blackfin/mach-bf548/boards/ezkit.c b/arch/blackfin/mach-bf548/boards/ezkit.c index 6b6490e66b30..d37d6653c4bc 100644 --- a/arch/blackfin/mach-bf548/boards/ezkit.c +++ b/arch/blackfin/mach-bf548/boards/ezkit.c | |||
@@ -42,6 +42,7 @@ | |||
42 | #include <asm/dma.h> | 42 | #include <asm/dma.h> |
43 | #include <asm/gpio.h> | 43 | #include <asm/gpio.h> |
44 | #include <asm/nand.h> | 44 | #include <asm/nand.h> |
45 | #include <asm/portmux.h> | ||
45 | #include <asm/mach/bf54x_keys.h> | 46 | #include <asm/mach/bf54x_keys.h> |
46 | #include <linux/input.h> | 47 | #include <linux/input.h> |
47 | #include <linux/spi/ad7877.h> | 48 | #include <linux/spi/ad7877.h> |
@@ -377,7 +378,7 @@ static struct bfin5xx_spi_chip spi_flash_chip_info = { | |||
377 | 378 | ||
378 | #if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) | 379 | #if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) |
379 | static struct bfin5xx_spi_chip spi_ad7877_chip_info = { | 380 | static struct bfin5xx_spi_chip spi_ad7877_chip_info = { |
380 | .cs_change_per_word = 1, | 381 | .cs_change_per_word = 0, |
381 | .enable_dma = 0, | 382 | .enable_dma = 0, |
382 | .bits_per_word = 16, | 383 | .bits_per_word = 16, |
383 | }; | 384 | }; |
@@ -453,9 +454,10 @@ static struct resource bfin_spi1_resource[] = { | |||
453 | }; | 454 | }; |
454 | 455 | ||
455 | /* SPI controller data */ | 456 | /* SPI controller data */ |
456 | static struct bfin5xx_spi_master bf54x_spi_master_info = { | 457 | static struct bfin5xx_spi_master bf54x_spi_master_info0 = { |
457 | .num_chipselect = 8, | 458 | .num_chipselect = 8, |
458 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 459 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
460 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, | ||
459 | }; | 461 | }; |
460 | 462 | ||
461 | static struct platform_device bf54x_spi_master0 = { | 463 | static struct platform_device bf54x_spi_master0 = { |
@@ -464,17 +466,23 @@ static struct platform_device bf54x_spi_master0 = { | |||
464 | .num_resources = ARRAY_SIZE(bfin_spi0_resource), | 466 | .num_resources = ARRAY_SIZE(bfin_spi0_resource), |
465 | .resource = bfin_spi0_resource, | 467 | .resource = bfin_spi0_resource, |
466 | .dev = { | 468 | .dev = { |
467 | .platform_data = &bf54x_spi_master_info, /* Passed to driver */ | 469 | .platform_data = &bf54x_spi_master_info0, /* Passed to driver */ |
468 | }, | 470 | }, |
469 | }; | 471 | }; |
470 | 472 | ||
473 | static struct bfin5xx_spi_master bf54x_spi_master_info1 = { | ||
474 | .num_chipselect = 8, | ||
475 | .enable_dma = 1, /* master has the ability to do dma transfer */ | ||
476 | .pin_req = {P_SPI1_SCK, P_SPI1_MISO, P_SPI1_MOSI, 0}, | ||
477 | }; | ||
478 | |||
471 | static struct platform_device bf54x_spi_master1 = { | 479 | static struct platform_device bf54x_spi_master1 = { |
472 | .name = "bfin-spi", | 480 | .name = "bfin-spi", |
473 | .id = 1, /* Bus number */ | 481 | .id = 1, /* Bus number */ |
474 | .num_resources = ARRAY_SIZE(bfin_spi1_resource), | 482 | .num_resources = ARRAY_SIZE(bfin_spi1_resource), |
475 | .resource = bfin_spi1_resource, | 483 | .resource = bfin_spi1_resource, |
476 | .dev = { | 484 | .dev = { |
477 | .platform_data = &bf54x_spi_master_info, /* Passed to driver */ | 485 | .platform_data = &bf54x_spi_master_info1, /* Passed to driver */ |
478 | }, | 486 | }, |
479 | }; | 487 | }; |
480 | #endif /* spi master and devices */ | 488 | #endif /* spi master and devices */ |
@@ -500,6 +508,7 @@ static struct platform_device i2c_bfin_twi0_device = { | |||
500 | .resource = bfin_twi0_resource, | 508 | .resource = bfin_twi0_resource, |
501 | }; | 509 | }; |
502 | 510 | ||
511 | #if !defined(CONFIG_BF542) /* The BF542 only has 1 TWI */ | ||
503 | static struct resource bfin_twi1_resource[] = { | 512 | static struct resource bfin_twi1_resource[] = { |
504 | [0] = { | 513 | [0] = { |
505 | .start = TWI1_REGBASE, | 514 | .start = TWI1_REGBASE, |
@@ -520,6 +529,7 @@ static struct platform_device i2c_bfin_twi1_device = { | |||
520 | .resource = bfin_twi1_resource, | 529 | .resource = bfin_twi1_resource, |
521 | }; | 530 | }; |
522 | #endif | 531 | #endif |
532 | #endif | ||
523 | 533 | ||
524 | static struct platform_device *ezkit_devices[] __initdata = { | 534 | static struct platform_device *ezkit_devices[] __initdata = { |
525 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) | 535 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) |
@@ -569,8 +579,10 @@ static struct platform_device *ezkit_devices[] __initdata = { | |||
569 | 579 | ||
570 | #if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) | 580 | #if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) |
571 | &i2c_bfin_twi0_device, | 581 | &i2c_bfin_twi0_device, |
582 | #if !defined(CONFIG_BF542) | ||
572 | &i2c_bfin_twi1_device, | 583 | &i2c_bfin_twi1_device, |
573 | #endif | 584 | #endif |
585 | #endif | ||
574 | }; | 586 | }; |
575 | 587 | ||
576 | static int __init stamp_init(void) | 588 | static int __init stamp_init(void) |
diff --git a/arch/blackfin/mach-bf548/head.S b/arch/blackfin/mach-bf548/head.S index 3071c243d426..74b34c7f3629 100644 --- a/arch/blackfin/mach-bf548/head.S +++ b/arch/blackfin/mach-bf548/head.S | |||
@@ -158,6 +158,27 @@ ENTRY(__stext) | |||
158 | w[p2] = r0; | 158 | w[p2] = r0; |
159 | ssync; | 159 | ssync; |
160 | 160 | ||
161 | p2.h = hi(EBIU_MBSCTL); | ||
162 | p2.l = lo(EBIU_MBSCTL); | ||
163 | r0.h = hi(CONFIG_EBIU_MBSCTLVAL); | ||
164 | r0.l = lo(CONFIG_EBIU_MBSCTLVAL); | ||
165 | [p2] = r0; | ||
166 | ssync; | ||
167 | |||
168 | p2.h = hi(EBIU_MODE); | ||
169 | p2.l = lo(EBIU_MODE); | ||
170 | r0.h = hi(CONFIG_EBIU_MODEVAL); | ||
171 | r0.l = lo(CONFIG_EBIU_MODEVAL); | ||
172 | [p2] = r0; | ||
173 | ssync; | ||
174 | |||
175 | p2.h = hi(EBIU_FCTL); | ||
176 | p2.l = lo(EBIU_FCTL); | ||
177 | r0.h = hi(CONFIG_EBIU_FCTLVAL); | ||
178 | r0.l = lo(CONFIG_EBIU_FCTLVAL); | ||
179 | [p2] = r0; | ||
180 | ssync; | ||
181 | |||
161 | /* This section keeps the processor in supervisor mode | 182 | /* This section keeps the processor in supervisor mode |
162 | * during kernel boot. Switches to user mode at end of boot. | 183 | * during kernel boot. Switches to user mode at end of boot. |
163 | * See page 3-9 of Hardware Reference manual for documentation. | 184 | * See page 3-9 of Hardware Reference manual for documentation. |
diff --git a/arch/blackfin/mach-bf561/Kconfig b/arch/blackfin/mach-bf561/Kconfig index 0a17c4cf0059..3f4895450bea 100644 --- a/arch/blackfin/mach-bf561/Kconfig +++ b/arch/blackfin/mach-bf561/Kconfig | |||
@@ -1,4 +1,6 @@ | |||
1 | if BF561 | 1 | if (BF561) |
2 | |||
3 | source "arch/blackfin/mach-bf561/boards/Kconfig" | ||
2 | 4 | ||
3 | menu "BF561 Specific Configuration" | 5 | menu "BF561 Specific Configuration" |
4 | 6 | ||
diff --git a/arch/blackfin/mach-bf561/boards/Kconfig b/arch/blackfin/mach-bf561/boards/Kconfig new file mode 100644 index 000000000000..e41a67b1fb53 --- /dev/null +++ b/arch/blackfin/mach-bf561/boards/Kconfig | |||
@@ -0,0 +1,27 @@ | |||
1 | choice | ||
2 | prompt "System type" | ||
3 | default BFIN561_EZKIT | ||
4 | help | ||
5 | Select your board! | ||
6 | |||
7 | config BFIN561_EZKIT | ||
8 | bool "BF561-EZKIT" | ||
9 | help | ||
10 | BF561-EZKIT-LITE board support. | ||
11 | |||
12 | config BFIN561_TEPLA | ||
13 | bool "BF561-TEPLA" | ||
14 | help | ||
15 | BF561-TEPLA board support. | ||
16 | |||
17 | config BFIN561_BLUETECHNIX_CM | ||
18 | bool "Bluetechnix CM-BF561" | ||
19 | help | ||
20 | CM-BF561 support for EVAL- and DEV-Board. | ||
21 | |||
22 | config GENERIC_BF561_BOARD | ||
23 | bool "Generic" | ||
24 | help | ||
25 | Generic or Custom board support. | ||
26 | |||
27 | endchoice | ||
diff --git a/arch/blackfin/mach-bf561/boards/Makefile b/arch/blackfin/mach-bf561/boards/Makefile index 495a1cf9d452..04add010b568 100644 --- a/arch/blackfin/mach-bf561/boards/Makefile +++ b/arch/blackfin/mach-bf561/boards/Makefile | |||
@@ -2,7 +2,7 @@ | |||
2 | # arch/blackfin/mach-bf561/boards/Makefile | 2 | # arch/blackfin/mach-bf561/boards/Makefile |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-$(CONFIG_GENERIC_BOARD) += generic_board.o | 5 | obj-$(CONFIG_GENERIC_BF561_BOARD) += generic_board.o |
6 | obj-$(CONFIG_BFIN561_BLUETECHNIX_CM) += cm_bf561.o | 6 | obj-$(CONFIG_BFIN561_BLUETECHNIX_CM) += cm_bf561.o |
7 | obj-$(CONFIG_BFIN561_EZKIT) += ezkit.o | 7 | obj-$(CONFIG_BFIN561_EZKIT) += ezkit.o |
8 | obj-$(CONFIG_BFIN561_TEPLA) += tepla.o | 8 | obj-$(CONFIG_BFIN561_TEPLA) += tepla.o |
diff --git a/arch/blackfin/mach-bf561/boards/cm_bf561.c b/arch/blackfin/mach-bf561/boards/cm_bf561.c index 97aeb43fd8b4..c19cd29b948a 100644 --- a/arch/blackfin/mach-bf561/boards/cm_bf561.c +++ b/arch/blackfin/mach-bf561/boards/cm_bf561.c | |||
@@ -33,11 +33,12 @@ | |||
33 | #include <linux/mtd/partitions.h> | 33 | #include <linux/mtd/partitions.h> |
34 | #include <linux/spi/spi.h> | 34 | #include <linux/spi/spi.h> |
35 | #include <linux/spi/flash.h> | 35 | #include <linux/spi/flash.h> |
36 | #include <linux/usb_isp1362.h> | 36 | #include <linux/usb/isp1362.h> |
37 | #include <linux/pata_platform.h> | 37 | #include <linux/pata_platform.h> |
38 | #include <linux/irq.h> | 38 | #include <linux/irq.h> |
39 | #include <asm/dma.h> | 39 | #include <asm/dma.h> |
40 | #include <asm/bfin5xx_spi.h> | 40 | #include <asm/bfin5xx_spi.h> |
41 | #include <asm/portmux.h> | ||
41 | 42 | ||
42 | /* | 43 | /* |
43 | * Name the Board for the /proc/cpuinfo | 44 | * Name the Board for the /proc/cpuinfo |
@@ -182,6 +183,7 @@ static struct resource bfin_spi0_resource[] = { | |||
182 | static struct bfin5xx_spi_master bfin_spi0_info = { | 183 | static struct bfin5xx_spi_master bfin_spi0_info = { |
183 | .num_chipselect = 8, | 184 | .num_chipselect = 8, |
184 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 185 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
186 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, | ||
185 | }; | 187 | }; |
186 | 188 | ||
187 | static struct platform_device bfin_spi0_device = { | 189 | static struct platform_device bfin_spi0_device = { |
diff --git a/arch/blackfin/mach-bf561/boards/ezkit.c b/arch/blackfin/mach-bf561/boards/ezkit.c index 059d516cec23..4ff8f6e7a11f 100644 --- a/arch/blackfin/mach-bf561/boards/ezkit.c +++ b/arch/blackfin/mach-bf561/boards/ezkit.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <linux/pata_platform.h> | 35 | #include <linux/pata_platform.h> |
36 | #include <asm/dma.h> | 36 | #include <asm/dma.h> |
37 | #include <asm/bfin5xx_spi.h> | 37 | #include <asm/bfin5xx_spi.h> |
38 | #include <asm/portmux.h> | ||
38 | 39 | ||
39 | /* | 40 | /* |
40 | * Name the Board for the /proc/cpuinfo | 41 | * Name the Board for the /proc/cpuinfo |
@@ -115,6 +116,28 @@ static struct platform_device smc91x_device = { | |||
115 | }; | 116 | }; |
116 | #endif | 117 | #endif |
117 | 118 | ||
119 | #if defined(CONFIG_AX88180) || defined(CONFIG_AX88180_MODULE) | ||
120 | static struct resource ax88180_resources[] = { | ||
121 | [0] = { | ||
122 | .start = 0x2c000000, | ||
123 | .end = 0x2c000000 + 0x8000, | ||
124 | .flags = IORESOURCE_MEM, | ||
125 | }, | ||
126 | [1] = { | ||
127 | .start = IRQ_PF10, | ||
128 | .end = IRQ_PF10, | ||
129 | .flags = (IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL), | ||
130 | }, | ||
131 | }; | ||
132 | |||
133 | static struct platform_device ax88180_device = { | ||
134 | .name = "ax88180", | ||
135 | .id = -1, | ||
136 | .num_resources = ARRAY_SIZE(ax88180_resources), | ||
137 | .resource = ax88180_resources, | ||
138 | }; | ||
139 | #endif | ||
140 | |||
118 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) | 141 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) |
119 | static struct resource bfin_uart_resources[] = { | 142 | static struct resource bfin_uart_resources[] = { |
120 | { | 143 | { |
@@ -160,6 +183,7 @@ static struct resource bfin_spi0_resource[] = { | |||
160 | static struct bfin5xx_spi_master bfin_spi0_info = { | 183 | static struct bfin5xx_spi_master bfin_spi0_info = { |
161 | .num_chipselect = 8, | 184 | .num_chipselect = 8, |
162 | .enable_dma = 1, /* master has the ability to do dma transfer */ | 185 | .enable_dma = 1, /* master has the ability to do dma transfer */ |
186 | .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0}, | ||
163 | }; | 187 | }; |
164 | 188 | ||
165 | static struct platform_device bfin_spi0_device = { | 189 | static struct platform_device bfin_spi0_device = { |
@@ -226,6 +250,11 @@ static struct platform_device *ezkit_devices[] __initdata = { | |||
226 | #if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) | 250 | #if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) |
227 | &smc91x_device, | 251 | &smc91x_device, |
228 | #endif | 252 | #endif |
253 | |||
254 | #if defined(CONFIG_AX88180) || defined(CONFIG_AX88180_MODULE) | ||
255 | &ax88180_device, | ||
256 | #endif | ||
257 | |||
229 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 258 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
230 | &bfin_spi0_device, | 259 | &bfin_spi0_device, |
231 | #endif | 260 | #endif |
diff --git a/arch/blackfin/mach-bf561/boards/generic_board.c b/arch/blackfin/mach-bf561/boards/generic_board.c index 46816be4b2ba..fc80c5d059f8 100644 --- a/arch/blackfin/mach-bf561/boards/generic_board.c +++ b/arch/blackfin/mach-bf561/boards/generic_board.c | |||
@@ -48,10 +48,6 @@ static struct resource smc91x_resources[] = { | |||
48 | .end = IRQ_PROG_INTB, | 48 | .end = IRQ_PROG_INTB, |
49 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | 49 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, |
50 | }, { | 50 | }, { |
51 | /* | ||
52 | * denotes the flag pin and is used directly if | ||
53 | * CONFIG_IRQCHIP_DEMUX_GPIO is defined. | ||
54 | */ | ||
55 | .start = IRQ_PF9, | 51 | .start = IRQ_PF9, |
56 | .end = IRQ_PF9, | 52 | .end = IRQ_PF9, |
57 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | 53 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, |
diff --git a/arch/blackfin/mach-bf561/boards/tepla.c b/arch/blackfin/mach-bf561/boards/tepla.c index 4a17c6da2a59..ec6a2207c202 100644 --- a/arch/blackfin/mach-bf561/boards/tepla.c +++ b/arch/blackfin/mach-bf561/boards/tepla.c | |||
@@ -31,10 +31,6 @@ static struct resource smc91x_resources[] = { | |||
31 | .end = IRQ_PROG_INTB, | 31 | .end = IRQ_PROG_INTB, |
32 | .flags = IORESOURCE_IRQ|IORESOURCE_IRQ_HIGHLEVEL, | 32 | .flags = IORESOURCE_IRQ|IORESOURCE_IRQ_HIGHLEVEL, |
33 | }, { | 33 | }, { |
34 | /* | ||
35 | * denotes the flag pin and is used directly if | ||
36 | * CONFIG_IRQCHIP_DEMUX_GPIO is defined. | ||
37 | */ | ||
38 | .start = IRQ_PF7, | 34 | .start = IRQ_PF7, |
39 | .end = IRQ_PF7, | 35 | .end = IRQ_PF7, |
40 | .flags = IORESOURCE_IRQ|IORESOURCE_IRQ_HIGHLEVEL, | 36 | .flags = IORESOURCE_IRQ|IORESOURCE_IRQ_HIGHLEVEL, |
diff --git a/arch/blackfin/mach-common/cplbinfo.c b/arch/blackfin/mach-common/cplbinfo.c index 785ca9816971..a4f0b428a34d 100644 --- a/arch/blackfin/mach-common/cplbinfo.c +++ b/arch/blackfin/mach-common/cplbinfo.c | |||
@@ -91,7 +91,7 @@ static char *cplb_print_entry(char *buf, int type) | |||
91 | } else | 91 | } else |
92 | buf += sprintf(buf, "Data CPLB entry:\n"); | 92 | buf += sprintf(buf, "Data CPLB entry:\n"); |
93 | 93 | ||
94 | buf += sprintf(buf, "Address\t\tData\tSize\tValid\tLocked\tSwapin\n\tiCount\toCount\n"); | 94 | buf += sprintf(buf, "Address\t\tData\tSize\tValid\tLocked\tSwapin\tiCount\toCount\n"); |
95 | 95 | ||
96 | while (*p_addr != 0xffffffff) { | 96 | while (*p_addr != 0xffffffff) { |
97 | entry = cplb_find_entry(cplb_addr, cplb_data, *p_addr, *p_data); | 97 | entry = cplb_find_entry(cplb_addr, cplb_data, *p_addr, *p_data); |
diff --git a/arch/blackfin/mach-common/cplbmgr.S b/arch/blackfin/mach-common/cplbmgr.S index 946703ef48ff..6f909cbfac7b 100644 --- a/arch/blackfin/mach-common/cplbmgr.S +++ b/arch/blackfin/mach-common/cplbmgr.S | |||
@@ -73,7 +73,7 @@ ENTRY(_cplb_mgr) | |||
73 | /* ICPLB Miss Exception. We need to choose one of the | 73 | /* ICPLB Miss Exception. We need to choose one of the |
74 | * currently-installed CPLBs, and replace it with one | 74 | * currently-installed CPLBs, and replace it with one |
75 | * from the configuration table. | 75 | * from the configuration table. |
76 | */ | 76 | */ |
77 | 77 | ||
78 | P4.L = LO(ICPLB_FAULT_ADDR); | 78 | P4.L = LO(ICPLB_FAULT_ADDR); |
79 | P4.H = HI(ICPLB_FAULT_ADDR); | 79 | P4.H = HI(ICPLB_FAULT_ADDR); |
@@ -222,7 +222,7 @@ ENTRY(_cplb_mgr) | |||
222 | 222 | ||
223 | /* See if failed address > start address */ | 223 | /* See if failed address > start address */ |
224 | CC = R4 <= R0(IU); | 224 | CC = R4 <= R0(IU); |
225 | IF !CC JUMP .Linext; | 225 | IF !CC JUMP .Linext; |
226 | 226 | ||
227 | /* extract page size (17:16)*/ | 227 | /* extract page size (17:16)*/ |
228 | R3 = EXTRACT(R2, R1.L) (Z); | 228 | R3 = EXTRACT(R2, R1.L) (Z); |
@@ -271,16 +271,27 @@ ENTRY(_cplb_mgr) | |||
271 | 271 | ||
272 | /* FAILED CASES*/ | 272 | /* FAILED CASES*/ |
273 | .Lno_page_in_table: | 273 | .Lno_page_in_table: |
274 | ( R7:4,P5:3 ) = [SP++]; | ||
275 | R0 = CPLB_NO_ADDR_MATCH; | 274 | R0 = CPLB_NO_ADDR_MATCH; |
276 | RTS; | 275 | JUMP .Lfail_ret; |
276 | |||
277 | .Lall_locked: | 277 | .Lall_locked: |
278 | ( R7:4,P5:3 ) = [SP++]; | ||
279 | R0 = CPLB_NO_UNLOCKED; | 278 | R0 = CPLB_NO_UNLOCKED; |
280 | RTS; | 279 | JUMP .Lfail_ret; |
280 | |||
281 | .Lprot_violation: | 281 | .Lprot_violation: |
282 | ( R7:4,P5:3 ) = [SP++]; | ||
283 | R0 = CPLB_PROT_VIOL; | 282 | R0 = CPLB_PROT_VIOL; |
283 | |||
284 | .Lfail_ret: | ||
285 | /* Make sure we turn protection/cache back on, even in the failing case */ | ||
286 | BITSET(R5,ENICPLB_P); | ||
287 | CLI R2; | ||
288 | SSYNC; /* SSYNC required before writing to IMEM_CONTROL. */ | ||
289 | .align 8; | ||
290 | [P4] = R5; | ||
291 | SSYNC; | ||
292 | STI R2; | ||
293 | |||
294 | ( R7:4,P5:3 ) = [SP++]; | ||
284 | RTS; | 295 | RTS; |
285 | 296 | ||
286 | .Ldcplb_write: | 297 | .Ldcplb_write: |
diff --git a/arch/blackfin/mach-common/entry.S b/arch/blackfin/mach-common/entry.S index 1b13fa470977..dc9d3ee2e691 100644 --- a/arch/blackfin/mach-common/entry.S +++ b/arch/blackfin/mach-common/entry.S | |||
@@ -33,7 +33,7 @@ | |||
33 | * after a timer-interrupt and after each system call. | 33 | * after a timer-interrupt and after each system call. |
34 | */ | 34 | */ |
35 | 35 | ||
36 | 36 | #include <linux/init.h> | |
37 | #include <linux/linkage.h> | 37 | #include <linux/linkage.h> |
38 | #include <linux/unistd.h> | 38 | #include <linux/unistd.h> |
39 | #include <asm/blackfin.h> | 39 | #include <asm/blackfin.h> |
@@ -71,25 +71,44 @@ ENDPROC(_safe_speculative_execution) | |||
71 | * This one does not lower the level to IRQ5, and thus can be used to | 71 | * This one does not lower the level to IRQ5, and thus can be used to |
72 | * patch up CPLB misses on the kernel stack. | 72 | * patch up CPLB misses on the kernel stack. |
73 | */ | 73 | */ |
74 | ENTRY(_ex_dcplb) | ||
75 | #if ANOMALY_05000261 | 74 | #if ANOMALY_05000261 |
75 | #define _ex_dviol _ex_workaround_261 | ||
76 | #define _ex_dmiss _ex_workaround_261 | ||
77 | #define _ex_dmult _ex_workaround_261 | ||
78 | |||
79 | ENTRY(_ex_workaround_261) | ||
76 | /* | 80 | /* |
77 | * Work around an anomaly: if we see a new DCPLB fault, return | 81 | * Work around an anomaly: if we see a new DCPLB fault, return |
78 | * without doing anything. Then, if we get the same fault again, | 82 | * without doing anything. Then, if we get the same fault again, |
79 | * handle it. | 83 | * handle it. |
80 | */ | 84 | */ |
85 | P4 = R7; /* Store EXCAUSE */ | ||
81 | p5.l = _last_cplb_fault_retx; | 86 | p5.l = _last_cplb_fault_retx; |
82 | p5.h = _last_cplb_fault_retx; | 87 | p5.h = _last_cplb_fault_retx; |
83 | r7 = [p5]; | 88 | r7 = [p5]; |
84 | r6 = retx; | 89 | r6 = retx; |
85 | [p5] = r6; | 90 | [p5] = r6; |
86 | cc = r6 == r7; | 91 | cc = r6 == r7; |
87 | if !cc jump _return_from_exception; | 92 | if !cc jump _bfin_return_from_exception; |
88 | /* fall through */ | 93 | /* fall through */ |
94 | R7 = P4; | ||
95 | R6 = 0x26; /* Data CPLB Miss */ | ||
96 | cc = R6 == R7; | ||
97 | if cc jump _ex_dcplb_miss (BP); | ||
98 | /* Handle 0x23 Data CPLB Protection Violation | ||
99 | * and Data CPLB Multiple Hits - Linux Trap Zero | ||
100 | */ | ||
101 | jump _ex_trap_c; | ||
102 | ENDPROC(_ex_workaround_261) | ||
103 | |||
104 | #else | ||
105 | #define _ex_dviol _ex_trap_c | ||
106 | #define _ex_dmiss _ex_dcplb_miss | ||
107 | #define _ex_dmult _ex_trap_c | ||
89 | #endif | 108 | #endif |
90 | ENDPROC(_ex_dcplb) | ||
91 | 109 | ||
92 | ENTRY(_ex_icplb) | 110 | ENTRY(_ex_dcplb_miss) |
111 | ENTRY(_ex_icplb_miss) | ||
93 | (R7:6,P5:4) = [sp++]; | 112 | (R7:6,P5:4) = [sp++]; |
94 | ASTAT = [sp++]; | 113 | ASTAT = [sp++]; |
95 | SAVE_ALL_SYS | 114 | SAVE_ALL_SYS |
@@ -98,7 +117,7 @@ ENTRY(_ex_icplb) | |||
98 | RESTORE_ALL_SYS | 117 | RESTORE_ALL_SYS |
99 | SP = EX_SCRATCH_REG; | 118 | SP = EX_SCRATCH_REG; |
100 | rtx; | 119 | rtx; |
101 | ENDPROC(_ex_icplb) | 120 | ENDPROC(_ex_icplb_miss) |
102 | 121 | ||
103 | ENTRY(_ex_syscall) | 122 | ENTRY(_ex_syscall) |
104 | DEBUG_START_HWTRACE(p5, r7) | 123 | DEBUG_START_HWTRACE(p5, r7) |
@@ -120,7 +139,7 @@ ENTRY(_ex_single_step) | |||
120 | r7 = retx; | 139 | r7 = retx; |
121 | r6 = reti; | 140 | r6 = reti; |
122 | cc = r7 == r6; | 141 | cc = r7 == r6; |
123 | if cc jump _return_from_exception | 142 | if cc jump _bfin_return_from_exception |
124 | r7 = syscfg; | 143 | r7 = syscfg; |
125 | bitclr (r7, 0); | 144 | bitclr (r7, 0); |
126 | syscfg = R7; | 145 | syscfg = R7; |
@@ -137,8 +156,9 @@ ENTRY(_ex_single_step) | |||
137 | r7 = [p4]; | 156 | r7 = [p4]; |
138 | cc = r6 == r7; | 157 | cc = r6 == r7; |
139 | if !cc jump _ex_trap_c; | 158 | if !cc jump _ex_trap_c; |
159 | ENDPROC(_ex_single_step) | ||
140 | 160 | ||
141 | ENTRY(_return_from_exception) | 161 | ENTRY(_bfin_return_from_exception) |
142 | DEBUG_START_HWTRACE(p5, r7) | 162 | DEBUG_START_HWTRACE(p5, r7) |
143 | #if ANOMALY_05000257 | 163 | #if ANOMALY_05000257 |
144 | R7=LC0; | 164 | R7=LC0; |
@@ -150,7 +170,7 @@ ENTRY(_return_from_exception) | |||
150 | ASTAT = [sp++]; | 170 | ASTAT = [sp++]; |
151 | sp = EX_SCRATCH_REG; | 171 | sp = EX_SCRATCH_REG; |
152 | rtx; | 172 | rtx; |
153 | ENDPROC(_ex_soft_bp) | 173 | ENDPROC(_bfin_return_from_exception) |
154 | 174 | ||
155 | ENTRY(_handle_bad_cplb) | 175 | ENTRY(_handle_bad_cplb) |
156 | /* To get here, we just tried and failed to change a CPLB | 176 | /* To get here, we just tried and failed to change a CPLB |
@@ -843,7 +863,7 @@ ENTRY(_ex_trace_buff_full) | |||
843 | LC0 = [sp++]; | 863 | LC0 = [sp++]; |
844 | P2 = [sp++]; | 864 | P2 = [sp++]; |
845 | P3 = [sp++]; | 865 | P3 = [sp++]; |
846 | jump _return_from_exception; | 866 | jump _bfin_return_from_exception; |
847 | ENDPROC(_ex_trace_buff_full) | 867 | ENDPROC(_ex_trace_buff_full) |
848 | 868 | ||
849 | #if CONFIG_DEBUG_BFIN_HWTRACE_EXPAND_LEN == 4 | 869 | #if CONFIG_DEBUG_BFIN_HWTRACE_EXPAND_LEN == 4 |
@@ -861,7 +881,7 @@ ENTRY(_software_trace_buff) | |||
861 | #endif /* CONFIG_DEBUG_BFIN_HWTRACE_EXPAND */ | 881 | #endif /* CONFIG_DEBUG_BFIN_HWTRACE_EXPAND */ |
862 | 882 | ||
863 | #if CONFIG_EARLY_PRINTK | 883 | #if CONFIG_EARLY_PRINTK |
864 | .section .init.text | 884 | __INIT |
865 | ENTRY(_early_trap) | 885 | ENTRY(_early_trap) |
866 | SAVE_ALL_SYS | 886 | SAVE_ALL_SYS |
867 | trace_buffer_stop(p0,r0); | 887 | trace_buffer_stop(p0,r0); |
@@ -896,6 +916,7 @@ ENTRY(_early_trap) | |||
896 | call _early_trap_c; | 916 | call _early_trap_c; |
897 | SP += 12; | 917 | SP += 12; |
898 | ENDPROC(_early_trap) | 918 | ENDPROC(_early_trap) |
919 | __FINIT | ||
899 | #endif /* CONFIG_EARLY_PRINTK */ | 920 | #endif /* CONFIG_EARLY_PRINTK */ |
900 | 921 | ||
901 | /* | 922 | /* |
@@ -908,6 +929,7 @@ ENDPROC(_early_trap) | |||
908 | #else | 929 | #else |
909 | .data | 930 | .data |
910 | #endif | 931 | #endif |
932 | |||
911 | ENTRY(_ex_table) | 933 | ENTRY(_ex_table) |
912 | /* entry for each EXCAUSE[5:0] | 934 | /* entry for each EXCAUSE[5:0] |
913 | * This table must be in sync with the table in ./kernel/traps.c | 935 | * This table must be in sync with the table in ./kernel/traps.c |
@@ -952,16 +974,16 @@ ENTRY(_ex_table) | |||
952 | .long _ex_trap_c /* 0x20 - Reserved */ | 974 | .long _ex_trap_c /* 0x20 - Reserved */ |
953 | .long _ex_trap_c /* 0x21 - Undefined Instruction */ | 975 | .long _ex_trap_c /* 0x21 - Undefined Instruction */ |
954 | .long _ex_trap_c /* 0x22 - Illegal Instruction Combination */ | 976 | .long _ex_trap_c /* 0x22 - Illegal Instruction Combination */ |
955 | .long _ex_dcplb /* 0x23 - Data CPLB Protection Violation */ | 977 | .long _ex_dviol /* 0x23 - Data CPLB Protection Violation */ |
956 | .long _ex_trap_c /* 0x24 - Data access misaligned */ | 978 | .long _ex_trap_c /* 0x24 - Data access misaligned */ |
957 | .long _ex_trap_c /* 0x25 - Unrecoverable Event */ | 979 | .long _ex_trap_c /* 0x25 - Unrecoverable Event */ |
958 | .long _ex_dcplb /* 0x26 - Data CPLB Miss */ | 980 | .long _ex_dmiss /* 0x26 - Data CPLB Miss */ |
959 | .long _ex_trap_c /* 0x27 - Data CPLB Multiple Hits - Linux Trap Zero */ | 981 | .long _ex_dmult /* 0x27 - Data CPLB Multiple Hits - Linux Trap Zero */ |
960 | .long _ex_trap_c /* 0x28 - Emulation Watchpoint */ | 982 | .long _ex_trap_c /* 0x28 - Emulation Watchpoint */ |
961 | .long _ex_trap_c /* 0x29 - Instruction fetch access error (535 only) */ | 983 | .long _ex_trap_c /* 0x29 - Instruction fetch access error (535 only) */ |
962 | .long _ex_trap_c /* 0x2A - Instruction fetch misaligned */ | 984 | .long _ex_trap_c /* 0x2A - Instruction fetch misaligned */ |
963 | .long _ex_icplb /* 0x2B - Instruction CPLB protection Violation */ | 985 | .long _ex_trap_c /* 0x2B - Instruction CPLB protection Violation */ |
964 | .long _ex_icplb /* 0x2C - Instruction CPLB miss */ | 986 | .long _ex_icplb_miss /* 0x2C - Instruction CPLB miss */ |
965 | .long _ex_trap_c /* 0x2D - Instruction CPLB Multiple Hits */ | 987 | .long _ex_trap_c /* 0x2D - Instruction CPLB Multiple Hits */ |
966 | .long _ex_trap_c /* 0x2E - Illegal use of Supervisor Resource */ | 988 | .long _ex_trap_c /* 0x2E - Illegal use of Supervisor Resource */ |
967 | .long _ex_trap_c /* 0x2E - Illegal use of Supervisor Resource */ | 989 | .long _ex_trap_c /* 0x2E - Illegal use of Supervisor Resource */ |
diff --git a/arch/blackfin/mach-common/interrupt.S b/arch/blackfin/mach-common/interrupt.S index c6b32fe0f6e9..4de376418a18 100644 --- a/arch/blackfin/mach-common/interrupt.S +++ b/arch/blackfin/mach-common/interrupt.S | |||
@@ -30,7 +30,6 @@ | |||
30 | 30 | ||
31 | #include <asm/blackfin.h> | 31 | #include <asm/blackfin.h> |
32 | #include <asm/mach/irq.h> | 32 | #include <asm/mach/irq.h> |
33 | #include <linux/autoconf.h> | ||
34 | #include <linux/linkage.h> | 33 | #include <linux/linkage.h> |
35 | #include <asm/entry.h> | 34 | #include <asm/entry.h> |
36 | #include <asm/asm-offsets.h> | 35 | #include <asm/asm-offsets.h> |
diff --git a/arch/blackfin/mach-common/ints-priority-dc.c b/arch/blackfin/mach-common/ints-priority-dc.c index c2f05fabedc1..4882f0e801a9 100644 --- a/arch/blackfin/mach-common/ints-priority-dc.c +++ b/arch/blackfin/mach-common/ints-priority-dc.c | |||
@@ -181,7 +181,6 @@ static struct irq_chip bf561_internal_irqchip = { | |||
181 | .unmask = bf561_internal_unmask_irq, | 181 | .unmask = bf561_internal_unmask_irq, |
182 | }; | 182 | }; |
183 | 183 | ||
184 | #ifdef CONFIG_IRQCHIP_DEMUX_GPIO | ||
185 | static unsigned short gpio_enabled[gpio_bank(MAX_BLACKFIN_GPIOS)]; | 184 | static unsigned short gpio_enabled[gpio_bank(MAX_BLACKFIN_GPIOS)]; |
186 | static unsigned short gpio_edge_triggered[gpio_bank(MAX_BLACKFIN_GPIOS)]; | 185 | static unsigned short gpio_edge_triggered[gpio_bank(MAX_BLACKFIN_GPIOS)]; |
187 | 186 | ||
@@ -362,8 +361,6 @@ static void bf561_demux_gpio_irq(unsigned int inta_irq, | |||
362 | 361 | ||
363 | } | 362 | } |
364 | 363 | ||
365 | #endif /* CONFIG_IRQCHIP_DEMUX_GPIO */ | ||
366 | |||
367 | void __init init_exception_vectors(void) | 364 | void __init init_exception_vectors(void) |
368 | { | 365 | { |
369 | SSYNC(); | 366 | SSYNC(); |
@@ -413,26 +410,21 @@ int __init init_arch_irq(void) | |||
413 | set_irq_chip(irq, &bf561_core_irqchip); | 410 | set_irq_chip(irq, &bf561_core_irqchip); |
414 | else | 411 | else |
415 | set_irq_chip(irq, &bf561_internal_irqchip); | 412 | set_irq_chip(irq, &bf561_internal_irqchip); |
416 | #ifdef CONFIG_IRQCHIP_DEMUX_GPIO | 413 | |
417 | if ((irq != IRQ_PROG0_INTA) && | 414 | if ((irq != IRQ_PROG0_INTA) && |
418 | (irq != IRQ_PROG1_INTA) && (irq != IRQ_PROG2_INTA)) { | 415 | (irq != IRQ_PROG1_INTA) && |
419 | #endif | 416 | (irq != IRQ_PROG2_INTA)) |
420 | set_irq_handler(irq, handle_simple_irq); | 417 | set_irq_handler(irq, handle_simple_irq); |
421 | #ifdef CONFIG_IRQCHIP_DEMUX_GPIO | 418 | else |
422 | } else { | ||
423 | set_irq_chained_handler(irq, bf561_demux_gpio_irq); | 419 | set_irq_chained_handler(irq, bf561_demux_gpio_irq); |
424 | } | ||
425 | #endif | ||
426 | |||
427 | } | 420 | } |
428 | 421 | ||
429 | #ifdef CONFIG_IRQCHIP_DEMUX_GPIO | ||
430 | for (irq = IRQ_PF0; irq <= IRQ_PF47; irq++) { | 422 | for (irq = IRQ_PF0; irq <= IRQ_PF47; irq++) { |
431 | set_irq_chip(irq, &bf561_gpio_irqchip); | 423 | set_irq_chip(irq, &bf561_gpio_irqchip); |
432 | /* if configured as edge, then will be changed to do_edge_IRQ */ | 424 | /* if configured as edge, then will be changed to do_edge_IRQ */ |
433 | set_irq_handler(irq, handle_level_irq); | 425 | set_irq_handler(irq, handle_level_irq); |
434 | } | 426 | } |
435 | #endif | 427 | |
436 | bfin_write_IMASK(0); | 428 | bfin_write_IMASK(0); |
437 | CSYNC(); | 429 | CSYNC(); |
438 | ilat = bfin_read_ILAT(); | 430 | ilat = bfin_read_ILAT(); |
@@ -457,9 +449,8 @@ int __init init_arch_irq(void) | |||
457 | } | 449 | } |
458 | 450 | ||
459 | #ifdef CONFIG_DO_IRQ_L1 | 451 | #ifdef CONFIG_DO_IRQ_L1 |
460 | void do_irq(int vec, struct pt_regs *fp)__attribute__((l1_text)); | 452 | __attribute__((l1_text)) |
461 | #endif | 453 | #endif |
462 | |||
463 | void do_irq(int vec, struct pt_regs *fp) | 454 | void do_irq(int vec, struct pt_regs *fp) |
464 | { | 455 | { |
465 | if (vec == EVT_IVTMR_P) { | 456 | if (vec == EVT_IVTMR_P) { |
diff --git a/arch/blackfin/mach-common/ints-priority-sc.c b/arch/blackfin/mach-common/ints-priority-sc.c index 2d2b63567b30..147f0731087a 100644 --- a/arch/blackfin/mach-common/ints-priority-sc.c +++ b/arch/blackfin/mach-common/ints-priority-sc.c | |||
@@ -308,7 +308,7 @@ static void bfin_demux_error_irq(unsigned int int_err_irq, | |||
308 | } | 308 | } |
309 | #endif /* BF537_GENERIC_ERROR_INT_DEMUX */ | 309 | #endif /* BF537_GENERIC_ERROR_INT_DEMUX */ |
310 | 310 | ||
311 | #if defined(CONFIG_IRQCHIP_DEMUX_GPIO) && !defined(CONFIG_BF54x) | 311 | #if !defined(CONFIG_BF54x) |
312 | 312 | ||
313 | static unsigned short gpio_enabled[gpio_bank(MAX_BLACKFIN_GPIOS)]; | 313 | static unsigned short gpio_enabled[gpio_bank(MAX_BLACKFIN_GPIOS)]; |
314 | static unsigned short gpio_edge_triggered[gpio_bank(MAX_BLACKFIN_GPIOS)]; | 314 | static unsigned short gpio_edge_triggered[gpio_bank(MAX_BLACKFIN_GPIOS)]; |
@@ -464,7 +464,7 @@ static void bfin_demux_gpio_irq(unsigned int intb_irq, | |||
464 | } | 464 | } |
465 | } | 465 | } |
466 | 466 | ||
467 | #else /* CONFIG_IRQCHIP_DEMUX_GPIO */ | 467 | #else /* CONFIG_BF54x */ |
468 | 468 | ||
469 | #define NR_PINT_SYS_IRQS 4 | 469 | #define NR_PINT_SYS_IRQS 4 |
470 | #define NR_PINT_BITS 32 | 470 | #define NR_PINT_BITS 32 |
@@ -726,7 +726,7 @@ static void bfin_demux_gpio_irq(unsigned int intb_irq, | |||
726 | } | 726 | } |
727 | 727 | ||
728 | } | 728 | } |
729 | #endif /* CONFIG_IRQCHIP_DEMUX_GPIO */ | 729 | #endif |
730 | 730 | ||
731 | void __init init_exception_vectors(void) | 731 | void __init init_exception_vectors(void) |
732 | { | 732 | { |
@@ -766,10 +766,10 @@ int __init init_arch_irq(void) | |||
766 | bfin_write_SIC_IMASK1(SIC_UNMASK_ALL); | 766 | bfin_write_SIC_IMASK1(SIC_UNMASK_ALL); |
767 | bfin_write_SIC_IWR0(IWR_ENABLE_ALL); | 767 | bfin_write_SIC_IWR0(IWR_ENABLE_ALL); |
768 | bfin_write_SIC_IWR1(IWR_ENABLE_ALL); | 768 | bfin_write_SIC_IWR1(IWR_ENABLE_ALL); |
769 | #ifdef CONFIG_BF54x | 769 | # ifdef CONFIG_BF54x |
770 | bfin_write_SIC_IMASK2(SIC_UNMASK_ALL); | 770 | bfin_write_SIC_IMASK2(SIC_UNMASK_ALL); |
771 | bfin_write_SIC_IWR2(IWR_ENABLE_ALL); | 771 | bfin_write_SIC_IWR2(IWR_ENABLE_ALL); |
772 | #endif | 772 | # endif |
773 | #else | 773 | #else |
774 | bfin_write_SIC_IMASK(SIC_UNMASK_ALL); | 774 | bfin_write_SIC_IMASK(SIC_UNMASK_ALL); |
775 | bfin_write_SIC_IWR(IWR_ENABLE_ALL); | 775 | bfin_write_SIC_IWR(IWR_ENABLE_ALL); |
@@ -778,13 +778,13 @@ int __init init_arch_irq(void) | |||
778 | 778 | ||
779 | local_irq_disable(); | 779 | local_irq_disable(); |
780 | 780 | ||
781 | #if defined(CONFIG_IRQCHIP_DEMUX_GPIO) && defined(CONFIG_BF54x) | 781 | #ifdef CONFIG_BF54x |
782 | #ifdef CONFIG_PINTx_REASSIGN | 782 | # ifdef CONFIG_PINTx_REASSIGN |
783 | pint[0]->assign = CONFIG_PINT0_ASSIGN; | 783 | pint[0]->assign = CONFIG_PINT0_ASSIGN; |
784 | pint[1]->assign = CONFIG_PINT1_ASSIGN; | 784 | pint[1]->assign = CONFIG_PINT1_ASSIGN; |
785 | pint[2]->assign = CONFIG_PINT2_ASSIGN; | 785 | pint[2]->assign = CONFIG_PINT2_ASSIGN; |
786 | pint[3]->assign = CONFIG_PINT3_ASSIGN; | 786 | pint[3]->assign = CONFIG_PINT3_ASSIGN; |
787 | #endif | 787 | # endif |
788 | /* Whenever PINTx_ASSIGN is altered init_pint_lut() must be executed! */ | 788 | /* Whenever PINTx_ASSIGN is altered init_pint_lut() must be executed! */ |
789 | init_pint_lut(); | 789 | init_pint_lut(); |
790 | #endif | 790 | #endif |
@@ -799,18 +799,17 @@ int __init init_arch_irq(void) | |||
799 | #endif | 799 | #endif |
800 | 800 | ||
801 | switch (irq) { | 801 | switch (irq) { |
802 | #ifdef CONFIG_IRQCHIP_DEMUX_GPIO | ||
803 | #if defined(CONFIG_BF53x) | 802 | #if defined(CONFIG_BF53x) |
804 | case IRQ_PROG_INTA: | 803 | case IRQ_PROG_INTA: |
805 | set_irq_chained_handler(irq, | 804 | set_irq_chained_handler(irq, |
806 | bfin_demux_gpio_irq); | 805 | bfin_demux_gpio_irq); |
807 | break; | 806 | break; |
808 | #if defined(BF537_FAMILY) && !(defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)) | 807 | # if defined(BF537_FAMILY) && !(defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)) |
809 | case IRQ_MAC_RX: | 808 | case IRQ_MAC_RX: |
810 | set_irq_chained_handler(irq, | 809 | set_irq_chained_handler(irq, |
811 | bfin_demux_gpio_irq); | 810 | bfin_demux_gpio_irq); |
812 | break; | 811 | break; |
813 | #endif | 812 | # endif |
814 | #elif defined(CONFIG_BF54x) | 813 | #elif defined(CONFIG_BF54x) |
815 | case IRQ_PINT0: | 814 | case IRQ_PINT0: |
816 | set_irq_chained_handler(irq, | 815 | set_irq_chained_handler(irq, |
@@ -842,7 +841,6 @@ int __init init_arch_irq(void) | |||
842 | bfin_demux_gpio_irq); | 841 | bfin_demux_gpio_irq); |
843 | break; | 842 | break; |
844 | #endif | 843 | #endif |
845 | #endif | ||
846 | default: | 844 | default: |
847 | set_irq_handler(irq, handle_simple_irq); | 845 | set_irq_handler(irq, handle_simple_irq); |
848 | break; | 846 | break; |
@@ -861,7 +859,6 @@ int __init init_arch_irq(void) | |||
861 | } | 859 | } |
862 | #endif | 860 | #endif |
863 | 861 | ||
864 | #ifdef CONFIG_IRQCHIP_DEMUX_GPIO | ||
865 | #ifndef CONFIG_BF54x | 862 | #ifndef CONFIG_BF54x |
866 | for (irq = IRQ_PF0; irq < NR_IRQS; irq++) { | 863 | for (irq = IRQ_PF0; irq < NR_IRQS; irq++) { |
867 | #else | 864 | #else |
@@ -871,7 +868,7 @@ int __init init_arch_irq(void) | |||
871 | /* if configured as edge, then will be changed to do_edge_IRQ */ | 868 | /* if configured as edge, then will be changed to do_edge_IRQ */ |
872 | set_irq_handler(irq, handle_level_irq); | 869 | set_irq_handler(irq, handle_level_irq); |
873 | } | 870 | } |
874 | #endif | 871 | |
875 | bfin_write_IMASK(0); | 872 | bfin_write_IMASK(0); |
876 | CSYNC(); | 873 | CSYNC(); |
877 | ilat = bfin_read_ILAT(); | 874 | ilat = bfin_read_ILAT(); |
@@ -896,9 +893,8 @@ int __init init_arch_irq(void) | |||
896 | } | 893 | } |
897 | 894 | ||
898 | #ifdef CONFIG_DO_IRQ_L1 | 895 | #ifdef CONFIG_DO_IRQ_L1 |
899 | void do_irq(int vec, struct pt_regs *fp) __attribute__((l1_text)); | 896 | __attribute__((l1_text)) |
900 | #endif | 897 | #endif |
901 | |||
902 | void do_irq(int vec, struct pt_regs *fp) | 898 | void do_irq(int vec, struct pt_regs *fp) |
903 | { | 899 | { |
904 | if (vec == EVT_IVTMR_P) { | 900 | if (vec == EVT_IVTMR_P) { |
diff --git a/arch/blackfin/mach-common/irqpanic.c b/arch/blackfin/mach-common/irqpanic.c index f05e3dadaf33..b22959b197e5 100644 --- a/arch/blackfin/mach-common/irqpanic.c +++ b/arch/blackfin/mach-common/irqpanic.c | |||
@@ -153,27 +153,29 @@ asmlinkage void irq_panic(int reason, struct pt_regs *regs) | |||
153 | case (SEQSTAT_HWERRCAUSE_SYSTEM_MMR): /* System MMR Error */ | 153 | case (SEQSTAT_HWERRCAUSE_SYSTEM_MMR): /* System MMR Error */ |
154 | info.si_code = BUS_ADRALN; | 154 | info.si_code = BUS_ADRALN; |
155 | sig = SIGBUS; | 155 | sig = SIGBUS; |
156 | printk(KERN_EMERG HWC_x2); | 156 | printk(KERN_EMERG HWC_x2(KERN_EMERG)); |
157 | break; | 157 | break; |
158 | case (SEQSTAT_HWERRCAUSE_EXTERN_ADDR): /* External Memory Addressing Error */ | 158 | case (SEQSTAT_HWERRCAUSE_EXTERN_ADDR): /* External Memory Addressing Error */ |
159 | info.si_code = BUS_ADRERR; | 159 | info.si_code = BUS_ADRERR; |
160 | sig = SIGBUS; | 160 | sig = SIGBUS; |
161 | printk(KERN_EMERG HWC_x3); | 161 | printk(KERN_EMERG HWC_x3(KERN_EMERG)); |
162 | break; | 162 | break; |
163 | case (SEQSTAT_HWERRCAUSE_PERF_FLOW): /* Performance Monitor Overflow */ | 163 | case (SEQSTAT_HWERRCAUSE_PERF_FLOW): /* Performance Monitor Overflow */ |
164 | printk(KERN_EMERG HWC_x12); | 164 | printk(KERN_EMERG HWC_x12(KERN_EMERG)); |
165 | break; | 165 | break; |
166 | case (SEQSTAT_HWERRCAUSE_RAISE_5): /* RAISE 5 instruction */ | 166 | case (SEQSTAT_HWERRCAUSE_RAISE_5): /* RAISE 5 instruction */ |
167 | printk(KERN_EMERG HWC_x18); | 167 | printk(KERN_EMERG HWC_x18(KERN_EMERG)); |
168 | break; | 168 | break; |
169 | default: /* Reserved */ | 169 | default: /* Reserved */ |
170 | printk(KERN_EMERG HWC_default); | 170 | printk(KERN_EMERG HWC_default(KERN_EMERG)); |
171 | break; | 171 | break; |
172 | } | 172 | } |
173 | } | 173 | } |
174 | 174 | ||
175 | regs->ipend = bfin_read_IPEND(); | 175 | regs->ipend = bfin_read_IPEND(); |
176 | dump_bfin_regs(regs, (void *)regs->pc); | 176 | dump_bfin_process(regs); |
177 | dump_bfin_mem((void *)regs->pc); | ||
178 | show_regs(regs); | ||
177 | if (0 == (info.si_signo = sig) || 0 == user_mode(regs)) /* in kernelspace */ | 179 | if (0 == (info.si_signo = sig) || 0 == user_mode(regs)) /* in kernelspace */ |
178 | panic("Unhandled IRQ or exceptions!\n"); | 180 | panic("Unhandled IRQ or exceptions!\n"); |
179 | else { /* in userspace */ | 181 | else { /* in userspace */ |
diff --git a/arch/blackfin/mm/blackfin_sram.c b/arch/blackfin/mm/blackfin_sram.c index b99ea883cd22..e41f0e8ecacb 100644 --- a/arch/blackfin/mm/blackfin_sram.c +++ b/arch/blackfin/mm/blackfin_sram.c | |||
@@ -27,7 +27,6 @@ | |||
27 | * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | 27 | * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
28 | */ | 28 | */ |
29 | 29 | ||
30 | #include <linux/autoconf.h> | ||
31 | #include <linux/module.h> | 30 | #include <linux/module.h> |
32 | #include <linux/kernel.h> | 31 | #include <linux/kernel.h> |
33 | #include <linux/types.h> | 32 | #include <linux/types.h> |
diff --git a/arch/cris/arch-v10/drivers/Kconfig b/arch/cris/arch-v10/drivers/Kconfig index faf8b4d3ca01..e3c0f2928149 100644 --- a/arch/cris/arch-v10/drivers/Kconfig +++ b/arch/cris/arch-v10/drivers/Kconfig | |||
@@ -542,45 +542,6 @@ config ETRAX_RS485_DISABLE_RECEIVER | |||
542 | loopback. Not all products are able to do this in software only. | 542 | loopback. Not all products are able to do this in software only. |
543 | Axis 2400/2401 must disable receiver. | 543 | Axis 2400/2401 must disable receiver. |
544 | 544 | ||
545 | config ETRAX_IDE | ||
546 | bool "ATA/IDE support" | ||
547 | select IDE | ||
548 | select BLK_DEV_IDE | ||
549 | select BLK_DEV_IDEDISK | ||
550 | select BLK_DEV_IDECD | ||
551 | select BLK_DEV_IDEDMA | ||
552 | select IDE_GENERIC | ||
553 | help | ||
554 | Enable this to get support for ATA/IDE. | ||
555 | You can't use parallel ports or SCSI ports | ||
556 | at the same time. | ||
557 | |||
558 | |||
559 | config ETRAX_IDE_DELAY | ||
560 | int "Delay for drives to regain consciousness" | ||
561 | depends on ETRAX_IDE | ||
562 | default 15 | ||
563 | help | ||
564 | Number of seconds to wait for IDE drives to spin up after an IDE | ||
565 | reset. | ||
566 | choice | ||
567 | prompt "IDE reset pin" | ||
568 | depends on ETRAX_IDE | ||
569 | default ETRAX_IDE_PB7_RESET | ||
570 | |||
571 | config ETRAX_IDE_PB7_RESET | ||
572 | bool "Port_PB_Bit_7" | ||
573 | help | ||
574 | IDE reset on pin 7 on port B | ||
575 | |||
576 | config ETRAX_IDE_G27_RESET | ||
577 | bool "Port_G_Bit_27" | ||
578 | help | ||
579 | IDE reset on pin 27 on port G | ||
580 | |||
581 | endchoice | ||
582 | |||
583 | |||
584 | config ETRAX_USB_HOST | 545 | config ETRAX_USB_HOST |
585 | bool "USB host" | 546 | bool "USB host" |
586 | select USB | 547 | select USB |
diff --git a/arch/cris/arch-v32/drivers/Kconfig b/arch/cris/arch-v32/drivers/Kconfig index 7f72d7c9e1ce..9bccb5e2a960 100644 --- a/arch/cris/arch-v32/drivers/Kconfig +++ b/arch/cris/arch-v32/drivers/Kconfig | |||
@@ -582,18 +582,6 @@ config ETRAX_PE_CHANGEABLE_BITS | |||
582 | that a user can change the value on using ioctl's. | 582 | that a user can change the value on using ioctl's. |
583 | Bit set = changeable. | 583 | Bit set = changeable. |
584 | 584 | ||
585 | config ETRAX_IDE | ||
586 | bool "ATA/IDE support" | ||
587 | depends on ETRAX_ARCH_V32 | ||
588 | select IDE | ||
589 | select BLK_DEV_IDE | ||
590 | select BLK_DEV_IDEDISK | ||
591 | select BLK_DEV_IDECD | ||
592 | select BLK_DEV_IDEDMA | ||
593 | select IDE_GENERIC | ||
594 | help | ||
595 | Enables the ETRAX IDE driver. | ||
596 | |||
597 | config ETRAX_CARDBUS | 585 | config ETRAX_CARDBUS |
598 | bool "Cardbus support" | 586 | bool "Cardbus support" |
599 | depends on ETRAX_ARCH_V32 | 587 | depends on ETRAX_ARCH_V32 |
diff --git a/arch/frv/kernel/break.S b/arch/frv/kernel/break.S index dac4a5f68c2e..bd0bdf908d93 100644 --- a/arch/frv/kernel/break.S +++ b/arch/frv/kernel/break.S | |||
@@ -63,7 +63,7 @@ __break_trace_through_exceptions: | |||
63 | # entry point for Break Exceptions/Interrupts | 63 | # entry point for Break Exceptions/Interrupts |
64 | # | 64 | # |
65 | ############################################################################### | 65 | ############################################################################### |
66 | .text | 66 | .section .text.break |
67 | .balign 4 | 67 | .balign 4 |
68 | .globl __entry_break | 68 | .globl __entry_break |
69 | __entry_break: | 69 | __entry_break: |
diff --git a/arch/frv/kernel/entry.S b/arch/frv/kernel/entry.S index 1e74f3c5cee2..f926c7094776 100644 --- a/arch/frv/kernel/entry.S +++ b/arch/frv/kernel/entry.S | |||
@@ -38,7 +38,7 @@ | |||
38 | 38 | ||
39 | #define nr_syscalls ((syscall_table_size)/4) | 39 | #define nr_syscalls ((syscall_table_size)/4) |
40 | 40 | ||
41 | .text | 41 | .section .text.entry |
42 | .balign 4 | 42 | .balign 4 |
43 | 43 | ||
44 | .macro LEDS val | 44 | .macro LEDS val |
diff --git a/arch/frv/kernel/vmlinux.lds.S b/arch/frv/kernel/vmlinux.lds.S index 3b71e0c86399..a17a81d58bf6 100644 --- a/arch/frv/kernel/vmlinux.lds.S +++ b/arch/frv/kernel/vmlinux.lds.S | |||
@@ -76,6 +76,12 @@ SECTIONS | |||
76 | *(.data.init_task) | 76 | *(.data.init_task) |
77 | } | 77 | } |
78 | 78 | ||
79 | . = ALIGN(4096); | ||
80 | .data.page_aligned : { *(.data.idt) } | ||
81 | |||
82 | . = ALIGN(L1_CACHE_BYTES); | ||
83 | .data.cacheline_aligned : { *(.data.cacheline_aligned) } | ||
84 | |||
79 | .trap : { | 85 | .trap : { |
80 | /* trap table management - read entry-table.S before modifying */ | 86 | /* trap table management - read entry-table.S before modifying */ |
81 | . = ALIGN(8192); | 87 | . = ALIGN(8192); |
@@ -86,28 +92,25 @@ SECTIONS | |||
86 | *(.trap.break) | 92 | *(.trap.break) |
87 | } | 93 | } |
88 | 94 | ||
89 | . = ALIGN(4096); | ||
90 | .data.page_aligned : { *(.data.idt) } | ||
91 | |||
92 | . = ALIGN(L1_CACHE_BYTES); | ||
93 | .data.cacheline_aligned : { *(.data.cacheline_aligned) } | ||
94 | |||
95 | /* Text and read-only data */ | 95 | /* Text and read-only data */ |
96 | . = ALIGN(4); | 96 | . = ALIGN(4); |
97 | _text = .; | 97 | _text = .; |
98 | _stext = .; | 98 | _stext = .; |
99 | .text : { | 99 | .text : { |
100 | *( | 100 | *(.text.start) |
101 | .text.start .text.* | 101 | *(.text.entry) |
102 | *(.text.break) | ||
103 | *(.text.tlbmiss) | ||
104 | TEXT_TEXT | ||
105 | SCHED_TEXT | ||
106 | LOCK_TEXT | ||
102 | #ifdef CONFIG_DEBUG_INFO | 107 | #ifdef CONFIG_DEBUG_INFO |
108 | *( | ||
103 | .init.text | 109 | .init.text |
104 | .exit.text | 110 | .exit.text |
105 | .exitcall.exit | 111 | .exitcall.exit |
106 | #endif | ||
107 | ) | 112 | ) |
108 | TEXT_TEXT | 113 | #endif |
109 | SCHED_TEXT | ||
110 | LOCK_TEXT | ||
111 | *(.fixup) | 114 | *(.fixup) |
112 | *(.gnu.warning) | 115 | *(.gnu.warning) |
113 | *(.exitcall.exit) | 116 | *(.exitcall.exit) |
diff --git a/arch/frv/mm/tlb-miss.S b/arch/frv/mm/tlb-miss.S index 04da67468378..07643482cad2 100644 --- a/arch/frv/mm/tlb-miss.S +++ b/arch/frv/mm/tlb-miss.S | |||
@@ -16,7 +16,7 @@ | |||
16 | #include <asm/highmem.h> | 16 | #include <asm/highmem.h> |
17 | #include <asm/spr-regs.h> | 17 | #include <asm/spr-regs.h> |
18 | 18 | ||
19 | .section .text | 19 | .section .text.tlbmiss |
20 | .balign 4 | 20 | .balign 4 |
21 | 21 | ||
22 | .globl __entry_insn_mmu_miss | 22 | .globl __entry_insn_mmu_miss |
diff --git a/arch/m32r/kernel/signal.c b/arch/m32r/kernel/signal.c index a753d79c4e89..18124542a6eb 100644 --- a/arch/m32r/kernel/signal.c +++ b/arch/m32r/kernel/signal.c | |||
@@ -36,7 +36,7 @@ sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize, | |||
36 | unsigned long r2, unsigned long r3, unsigned long r4, | 36 | unsigned long r2, unsigned long r3, unsigned long r4, |
37 | unsigned long r5, unsigned long r6, struct pt_regs *regs) | 37 | unsigned long r5, unsigned long r6, struct pt_regs *regs) |
38 | { | 38 | { |
39 | sigset_t saveset, newset; | 39 | sigset_t newset; |
40 | 40 | ||
41 | /* XXX: Don't preclude handling different sized sigset_t's. */ | 41 | /* XXX: Don't preclude handling different sized sigset_t's. */ |
42 | if (sigsetsize != sizeof(sigset_t)) | 42 | if (sigsetsize != sizeof(sigset_t)) |
@@ -44,21 +44,18 @@ sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize, | |||
44 | 44 | ||
45 | if (copy_from_user(&newset, unewset, sizeof(newset))) | 45 | if (copy_from_user(&newset, unewset, sizeof(newset))) |
46 | return -EFAULT; | 46 | return -EFAULT; |
47 | sigdelsetmask(&newset, ~_BLOCKABLE); | 47 | sigdelsetmask(&newset, sigmask(SIGKILL)|sigmask(SIGSTOP)); |
48 | 48 | ||
49 | spin_lock_irq(¤t->sighand->siglock); | 49 | spin_lock_irq(¤t->sighand->siglock); |
50 | saveset = current->blocked; | 50 | current->saved_sigmask = current->blocked; |
51 | current->blocked = newset; | 51 | current->blocked = newset; |
52 | recalc_sigpending(); | 52 | recalc_sigpending(); |
53 | spin_unlock_irq(¤t->sighand->siglock); | 53 | spin_unlock_irq(¤t->sighand->siglock); |
54 | 54 | ||
55 | regs->r0 = -EINTR; | 55 | current->state = TASK_INTERRUPTIBLE; |
56 | while (1) { | 56 | schedule(); |
57 | current->state = TASK_INTERRUPTIBLE; | 57 | set_thread_flag(TIF_RESTORE_SIGMASK); |
58 | schedule(); | 58 | return -ERESTARTNOHAND; |
59 | if (do_signal(regs, &saveset)) | ||
60 | return regs->r0; | ||
61 | } | ||
62 | } | 59 | } |
63 | 60 | ||
64 | asmlinkage int | 61 | asmlinkage int |
diff --git a/arch/m32r/kernel/syscall_table.S b/arch/m32r/kernel/syscall_table.S index 751ac2a3d120..95aa79874847 100644 --- a/arch/m32r/kernel/syscall_table.S +++ b/arch/m32r/kernel/syscall_table.S | |||
@@ -284,3 +284,43 @@ ENTRY(sys_call_table) | |||
284 | .long sys_mq_getsetattr | 284 | .long sys_mq_getsetattr |
285 | .long sys_ni_syscall /* reserved for kexec */ | 285 | .long sys_ni_syscall /* reserved for kexec */ |
286 | .long sys_waitid | 286 | .long sys_waitid |
287 | .long sys_ni_syscall /* 285 */ /* available */ | ||
288 | .long sys_add_key | ||
289 | .long sys_request_key | ||
290 | .long sys_keyctl | ||
291 | .long sys_ioprio_set | ||
292 | .long sys_ioprio_get /* 290 */ | ||
293 | .long sys_inotify_init | ||
294 | .long sys_inotify_add_watch | ||
295 | .long sys_inotify_rm_watch | ||
296 | .long sys_migrate_pages | ||
297 | .long sys_openat /* 295 */ | ||
298 | .long sys_mkdirat | ||
299 | .long sys_mknodat | ||
300 | .long sys_fchownat | ||
301 | .long sys_futimesat | ||
302 | .long sys_fstatat64 /* 300 */ | ||
303 | .long sys_unlinkat | ||
304 | .long sys_renameat | ||
305 | .long sys_linkat | ||
306 | .long sys_symlinkat | ||
307 | .long sys_readlinkat /* 305 */ | ||
308 | .long sys_fchmodat | ||
309 | .long sys_faccessat | ||
310 | .long sys_pselect6 | ||
311 | .long sys_ppoll | ||
312 | .long sys_unshare /* 310 */ | ||
313 | .long sys_set_robust_list | ||
314 | .long sys_get_robust_list | ||
315 | .long sys_splice | ||
316 | .long sys_sync_file_range | ||
317 | .long sys_tee /* 315 */ | ||
318 | .long sys_vmsplice | ||
319 | .long sys_move_pages | ||
320 | .long sys_getcpu | ||
321 | .long sys_epoll_pwait | ||
322 | .long sys_utimensat /* 320 */ | ||
323 | .long sys_signalfd | ||
324 | .long sys_timerfd | ||
325 | .long sys_eventfd | ||
326 | .long sys_fallocate | ||
diff --git a/arch/m68k/atari/atakeyb.c b/arch/m68k/atari/atakeyb.c index 880add120eb3..8a2a53b33616 100644 --- a/arch/m68k/atari/atakeyb.c +++ b/arch/m68k/atari/atakeyb.c | |||
@@ -565,7 +565,7 @@ void atari_kbd_leds(unsigned int leds) | |||
565 | 565 | ||
566 | static int atari_keyb_done = 0; | 566 | static int atari_keyb_done = 0; |
567 | 567 | ||
568 | int __init atari_keyb_init(void) | 568 | int atari_keyb_init(void) |
569 | { | 569 | { |
570 | if (atari_keyb_done) | 570 | if (atari_keyb_done) |
571 | return 0; | 571 | return 0; |
@@ -631,6 +631,7 @@ int __init atari_keyb_init(void) | |||
631 | atari_keyb_done = 1; | 631 | atari_keyb_done = 1; |
632 | return 0; | 632 | return 0; |
633 | } | 633 | } |
634 | EXPORT_SYMBOL_GPL(atari_keyb_init); | ||
634 | 635 | ||
635 | int atari_kbd_translate(unsigned char keycode, unsigned char *keycodep, char raw_mode) | 636 | int atari_kbd_translate(unsigned char keycode, unsigned char *keycodep, char raw_mode) |
636 | { | 637 | { |
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 2f2ce0c28bc0..455bd1f560aa 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
@@ -22,6 +22,7 @@ config MACH_ALCHEMY | |||
22 | config BASLER_EXCITE | 22 | config BASLER_EXCITE |
23 | bool "Basler eXcite smart camera" | 23 | bool "Basler eXcite smart camera" |
24 | select CEVT_R4K | 24 | select CEVT_R4K |
25 | select CSRC_R4K | ||
25 | select DMA_COHERENT | 26 | select DMA_COHERENT |
26 | select HW_HAS_PCI | 27 | select HW_HAS_PCI |
27 | select IRQ_CPU | 28 | select IRQ_CPU |
@@ -49,6 +50,7 @@ config BASLER_EXCITE_PROTOTYPE | |||
49 | config BCM47XX | 50 | config BCM47XX |
50 | bool "BCM47XX based boards" | 51 | bool "BCM47XX based boards" |
51 | select CEVT_R4K | 52 | select CEVT_R4K |
53 | select CSRC_R4K | ||
52 | select DMA_NONCOHERENT | 54 | select DMA_NONCOHERENT |
53 | select HW_HAS_PCI | 55 | select HW_HAS_PCI |
54 | select IRQ_CPU | 56 | select IRQ_CPU |
@@ -66,6 +68,7 @@ config BCM47XX | |||
66 | config MIPS_COBALT | 68 | config MIPS_COBALT |
67 | bool "Cobalt Server" | 69 | bool "Cobalt Server" |
68 | select CEVT_R4K | 70 | select CEVT_R4K |
71 | select CSRC_R4K | ||
69 | select CEVT_GT641XX | 72 | select CEVT_GT641XX |
70 | select DMA_NONCOHERENT | 73 | select DMA_NONCOHERENT |
71 | select HW_HAS_PCI | 74 | select HW_HAS_PCI |
@@ -85,6 +88,7 @@ config MACH_DECSTATION | |||
85 | bool "DECstations" | 88 | bool "DECstations" |
86 | select BOOT_ELF32 | 89 | select BOOT_ELF32 |
87 | select CEVT_R4K | 90 | select CEVT_R4K |
91 | select CSRC_R4K | ||
88 | select DMA_NONCOHERENT | 92 | select DMA_NONCOHERENT |
89 | select NO_IOPORT | 93 | select NO_IOPORT |
90 | select IRQ_CPU | 94 | select IRQ_CPU |
@@ -117,6 +121,7 @@ config MACH_JAZZ | |||
117 | select ARC32 | 121 | select ARC32 |
118 | select ARCH_MAY_HAVE_PC_FDC | 122 | select ARCH_MAY_HAVE_PC_FDC |
119 | select CEVT_R4K | 123 | select CEVT_R4K |
124 | select CSRC_R4K | ||
120 | select GENERIC_ISA_DMA | 125 | select GENERIC_ISA_DMA |
121 | select IRQ_CPU | 126 | select IRQ_CPU |
122 | select I8253 | 127 | select I8253 |
@@ -137,6 +142,7 @@ config MACH_JAZZ | |||
137 | config LASAT | 142 | config LASAT |
138 | bool "LASAT Networks platforms" | 143 | bool "LASAT Networks platforms" |
139 | select CEVT_R4K | 144 | select CEVT_R4K |
145 | select CSRC_R4K | ||
140 | select DMA_NONCOHERENT | 146 | select DMA_NONCOHERENT |
141 | select SYS_HAS_EARLY_PRINTK | 147 | select SYS_HAS_EARLY_PRINTK |
142 | select HW_HAS_PCI | 148 | select HW_HAS_PCI |
@@ -154,6 +160,7 @@ config LEMOTE_FULONG | |||
154 | bool "Lemote Fulong mini-PC" | 160 | bool "Lemote Fulong mini-PC" |
155 | select ARCH_SPARSEMEM_ENABLE | 161 | select ARCH_SPARSEMEM_ENABLE |
156 | select CEVT_R4K | 162 | select CEVT_R4K |
163 | select CSRC_R4K | ||
157 | select SYS_HAS_CPU_LOONGSON2 | 164 | select SYS_HAS_CPU_LOONGSON2 |
158 | select DMA_NONCOHERENT | 165 | select DMA_NONCOHERENT |
159 | select BOOT_ELF32 | 166 | select BOOT_ELF32 |
@@ -179,6 +186,7 @@ config MIPS_ATLAS | |||
179 | bool "MIPS Atlas board" | 186 | bool "MIPS Atlas board" |
180 | select BOOT_ELF32 | 187 | select BOOT_ELF32 |
181 | select CEVT_R4K | 188 | select CEVT_R4K |
189 | select CSRC_R4K | ||
182 | select DMA_NONCOHERENT | 190 | select DMA_NONCOHERENT |
183 | select SYS_HAS_EARLY_PRINTK | 191 | select SYS_HAS_EARLY_PRINTK |
184 | select IRQ_CPU | 192 | select IRQ_CPU |
@@ -210,6 +218,7 @@ config MIPS_MALTA | |||
210 | select ARCH_MAY_HAVE_PC_FDC | 218 | select ARCH_MAY_HAVE_PC_FDC |
211 | select BOOT_ELF32 | 219 | select BOOT_ELF32 |
212 | select CEVT_R4K | 220 | select CEVT_R4K |
221 | select CSRC_R4K | ||
213 | select DMA_NONCOHERENT | 222 | select DMA_NONCOHERENT |
214 | select GENERIC_ISA_DMA | 223 | select GENERIC_ISA_DMA |
215 | select IRQ_CPU | 224 | select IRQ_CPU |
@@ -241,6 +250,7 @@ config MIPS_MALTA | |||
241 | config MIPS_SEAD | 250 | config MIPS_SEAD |
242 | bool "MIPS SEAD board" | 251 | bool "MIPS SEAD board" |
243 | select CEVT_R4K | 252 | select CEVT_R4K |
253 | select CSRC_R4K | ||
244 | select IRQ_CPU | 254 | select IRQ_CPU |
245 | select DMA_NONCOHERENT | 255 | select DMA_NONCOHERENT |
246 | select SYS_HAS_EARLY_PRINTK | 256 | select SYS_HAS_EARLY_PRINTK |
@@ -260,6 +270,7 @@ config MIPS_SEAD | |||
260 | config MIPS_SIM | 270 | config MIPS_SIM |
261 | bool 'MIPS simulator (MIPSsim)' | 271 | bool 'MIPS simulator (MIPSsim)' |
262 | select CEVT_R4K | 272 | select CEVT_R4K |
273 | select CSRC_R4K | ||
263 | select DMA_NONCOHERENT | 274 | select DMA_NONCOHERENT |
264 | select SYS_HAS_EARLY_PRINTK | 275 | select SYS_HAS_EARLY_PRINTK |
265 | select IRQ_CPU | 276 | select IRQ_CPU |
@@ -278,6 +289,7 @@ config MIPS_SIM | |||
278 | config MARKEINS | 289 | config MARKEINS |
279 | bool "NEC EMMA2RH Mark-eins" | 290 | bool "NEC EMMA2RH Mark-eins" |
280 | select CEVT_R4K | 291 | select CEVT_R4K |
292 | select CSRC_R4K | ||
281 | select DMA_NONCOHERENT | 293 | select DMA_NONCOHERENT |
282 | select HW_HAS_PCI | 294 | select HW_HAS_PCI |
283 | select IRQ_CPU | 295 | select IRQ_CPU |
@@ -293,6 +305,7 @@ config MARKEINS | |||
293 | config MACH_VR41XX | 305 | config MACH_VR41XX |
294 | bool "NEC VR4100 series based machines" | 306 | bool "NEC VR4100 series based machines" |
295 | select CEVT_R4K | 307 | select CEVT_R4K |
308 | select CSRC_R4K | ||
296 | select SYS_HAS_CPU_VR41XX | 309 | select SYS_HAS_CPU_VR41XX |
297 | select GENERIC_HARDIRQS_NO__DO_IRQ | 310 | select GENERIC_HARDIRQS_NO__DO_IRQ |
298 | 311 | ||
@@ -330,6 +343,7 @@ config PMC_MSP | |||
330 | config PMC_YOSEMITE | 343 | config PMC_YOSEMITE |
331 | bool "PMC-Sierra Yosemite eval board" | 344 | bool "PMC-Sierra Yosemite eval board" |
332 | select CEVT_R4K | 345 | select CEVT_R4K |
346 | select CSRC_R4K | ||
333 | select DMA_COHERENT | 347 | select DMA_COHERENT |
334 | select HW_HAS_PCI | 348 | select HW_HAS_PCI |
335 | select IRQ_CPU | 349 | select IRQ_CPU |
@@ -351,6 +365,7 @@ config PMC_YOSEMITE | |||
351 | config QEMU | 365 | config QEMU |
352 | bool "Qemu" | 366 | bool "Qemu" |
353 | select CEVT_R4K | 367 | select CEVT_R4K |
368 | select CSRC_R4K | ||
354 | select DMA_COHERENT | 369 | select DMA_COHERENT |
355 | select GENERIC_ISA_DMA | 370 | select GENERIC_ISA_DMA |
356 | select HAVE_STD_PC_SERIAL_PORT | 371 | select HAVE_STD_PC_SERIAL_PORT |
@@ -382,9 +397,11 @@ config SGI_IP22 | |||
382 | select ARC32 | 397 | select ARC32 |
383 | select BOOT_ELF32 | 398 | select BOOT_ELF32 |
384 | select CEVT_R4K | 399 | select CEVT_R4K |
400 | select CSRC_R4K | ||
385 | select DMA_NONCOHERENT | 401 | select DMA_NONCOHERENT |
386 | select HW_HAS_EISA | 402 | select HW_HAS_EISA |
387 | select I8253 | 403 | select I8253 |
404 | select I8259 | ||
388 | select IP22_CPU_SCACHE | 405 | select IP22_CPU_SCACHE |
389 | select IRQ_CPU | 406 | select IRQ_CPU |
390 | select GENERIC_ISA_DMA_SUPPORT_BROKEN | 407 | select GENERIC_ISA_DMA_SUPPORT_BROKEN |
@@ -427,6 +444,7 @@ config SGI_IP32 | |||
427 | select ARC32 | 444 | select ARC32 |
428 | select BOOT_ELF32 | 445 | select BOOT_ELF32 |
429 | select CEVT_R4K | 446 | select CEVT_R4K |
447 | select CSRC_R4K | ||
430 | select DMA_NONCOHERENT | 448 | select DMA_NONCOHERENT |
431 | select HW_HAS_PCI | 449 | select HW_HAS_PCI |
432 | select IRQ_CPU | 450 | select IRQ_CPU |
@@ -498,6 +516,7 @@ config SIBYTE_SWARM | |||
498 | select SYS_SUPPORTS_HIGHMEM | 516 | select SYS_SUPPORTS_HIGHMEM |
499 | select SYS_SUPPORTS_KGDB | 517 | select SYS_SUPPORTS_KGDB |
500 | select SYS_SUPPORTS_LITTLE_ENDIAN | 518 | select SYS_SUPPORTS_LITTLE_ENDIAN |
519 | select ZONE_DMA32 if 64BIT | ||
501 | 520 | ||
502 | config SIBYTE_LITTLESUR | 521 | config SIBYTE_LITTLESUR |
503 | bool "Sibyte BCM91250C2-LittleSur" | 522 | bool "Sibyte BCM91250C2-LittleSur" |
@@ -548,6 +567,7 @@ config SIBYTE_BIGSUR | |||
548 | select SYS_SUPPORTS_BIG_ENDIAN | 567 | select SYS_SUPPORTS_BIG_ENDIAN |
549 | select SYS_SUPPORTS_HIGHMEM | 568 | select SYS_SUPPORTS_HIGHMEM |
550 | select SYS_SUPPORTS_LITTLE_ENDIAN | 569 | select SYS_SUPPORTS_LITTLE_ENDIAN |
570 | select ZONE_DMA32 if 64BIT | ||
551 | 571 | ||
552 | config SNI_RM | 572 | config SNI_RM |
553 | bool "SNI RM200/300/400" | 573 | bool "SNI RM200/300/400" |
@@ -556,6 +576,7 @@ config SNI_RM | |||
556 | select ARCH_MAY_HAVE_PC_FDC | 576 | select ARCH_MAY_HAVE_PC_FDC |
557 | select BOOT_ELF32 | 577 | select BOOT_ELF32 |
558 | select CEVT_R4K | 578 | select CEVT_R4K |
579 | select CSRC_R4K | ||
559 | select DMA_NONCOHERENT | 580 | select DMA_NONCOHERENT |
560 | select GENERIC_ISA_DMA | 581 | select GENERIC_ISA_DMA |
561 | select HW_HAS_EISA | 582 | select HW_HAS_EISA |
@@ -599,6 +620,7 @@ config TOSHIBA_JMR3927 | |||
599 | config TOSHIBA_RBTX4927 | 620 | config TOSHIBA_RBTX4927 |
600 | bool "Toshiba RBTX49[23]7 board" | 621 | bool "Toshiba RBTX49[23]7 board" |
601 | select CEVT_R4K | 622 | select CEVT_R4K |
623 | select CSRC_R4K | ||
602 | select CEVT_TXX9 | 624 | select CEVT_TXX9 |
603 | select DMA_NONCOHERENT | 625 | select DMA_NONCOHERENT |
604 | select HAS_TXX9_SERIAL | 626 | select HAS_TXX9_SERIAL |
@@ -621,6 +643,7 @@ config TOSHIBA_RBTX4927 | |||
621 | config TOSHIBA_RBTX4938 | 643 | config TOSHIBA_RBTX4938 |
622 | bool "Toshiba RBTX4938 board" | 644 | bool "Toshiba RBTX4938 board" |
623 | select CEVT_R4K | 645 | select CEVT_R4K |
646 | select CSRC_R4K | ||
624 | select CEVT_TXX9 | 647 | select CEVT_TXX9 |
625 | select DMA_NONCOHERENT | 648 | select DMA_NONCOHERENT |
626 | select HAS_TXX9_SERIAL | 649 | select HAS_TXX9_SERIAL |
@@ -642,6 +665,7 @@ config TOSHIBA_RBTX4938 | |||
642 | config WR_PPMC | 665 | config WR_PPMC |
643 | bool "Wind River PPMC board" | 666 | bool "Wind River PPMC board" |
644 | select CEVT_R4K | 667 | select CEVT_R4K |
668 | select CSRC_R4K | ||
645 | select IRQ_CPU | 669 | select IRQ_CPU |
646 | select BOOT_ELF32 | 670 | select BOOT_ELF32 |
647 | select DMA_NONCOHERENT | 671 | select DMA_NONCOHERENT |
@@ -752,6 +776,9 @@ config CEVT_TXX9 | |||
752 | config CSRC_BCM1480 | 776 | config CSRC_BCM1480 |
753 | bool | 777 | bool |
754 | 778 | ||
779 | config CSRC_R4K | ||
780 | bool | ||
781 | |||
755 | config CSRC_SB1250 | 782 | config CSRC_SB1250 |
756 | bool | 783 | bool |
757 | 784 | ||
@@ -1640,6 +1667,9 @@ config ARCH_DISCONTIGMEM_ENABLE | |||
1640 | or have huge holes in the physical address space for other reasons. | 1667 | or have huge holes in the physical address space for other reasons. |
1641 | See <file:Documentation/vm/numa> for more. | 1668 | See <file:Documentation/vm/numa> for more. |
1642 | 1669 | ||
1670 | config ARCH_POPULATES_NODE_MAP | ||
1671 | def_bool y | ||
1672 | |||
1643 | config ARCH_SPARSEMEM_ENABLE | 1673 | config ARCH_SPARSEMEM_ENABLE |
1644 | bool | 1674 | bool |
1645 | select SPARSEMEM_STATIC | 1675 | select SPARSEMEM_STATIC |
@@ -1945,6 +1975,9 @@ config I8253 | |||
1945 | config PCSPEAKER | 1975 | config PCSPEAKER |
1946 | bool | 1976 | bool |
1947 | 1977 | ||
1978 | config ZONE_DMA32 | ||
1979 | bool | ||
1980 | |||
1948 | source "drivers/pcmcia/Kconfig" | 1981 | source "drivers/pcmcia/Kconfig" |
1949 | 1982 | ||
1950 | source "drivers/pci/hotplug/Kconfig" | 1983 | source "drivers/pci/hotplug/Kconfig" |
diff --git a/arch/mips/au1000/Kconfig b/arch/mips/au1000/Kconfig index b36cec58a9a8..05d1354aad3a 100644 --- a/arch/mips/au1000/Kconfig +++ b/arch/mips/au1000/Kconfig | |||
@@ -138,6 +138,7 @@ config SOC_AU1X00 | |||
138 | bool | 138 | bool |
139 | select 64BIT_PHYS_ADDR | 139 | select 64BIT_PHYS_ADDR |
140 | select CEVT_R4K | 140 | select CEVT_R4K |
141 | select CSRC_R4K | ||
141 | select IRQ_CPU | 142 | select IRQ_CPU |
142 | select SYS_HAS_CPU_MIPS32_R1 | 143 | select SYS_HAS_CPU_MIPS32_R1 |
143 | select SYS_SUPPORTS_32BIT_KERNEL | 144 | select SYS_SUPPORTS_32BIT_KERNEL |
diff --git a/arch/mips/kernel/Makefile b/arch/mips/kernel/Makefile index b551535b7e48..ffa08362de17 100644 --- a/arch/mips/kernel/Makefile +++ b/arch/mips/kernel/Makefile | |||
@@ -14,6 +14,7 @@ obj-$(CONFIG_CEVT_GT641XX) += cevt-gt641xx.o | |||
14 | obj-$(CONFIG_CEVT_SB1250) += cevt-sb1250.o | 14 | obj-$(CONFIG_CEVT_SB1250) += cevt-sb1250.o |
15 | obj-$(CONFIG_CEVT_TXX9) += cevt-txx9.o | 15 | obj-$(CONFIG_CEVT_TXX9) += cevt-txx9.o |
16 | obj-$(CONFIG_CSRC_BCM1480) += csrc-bcm1480.o | 16 | obj-$(CONFIG_CSRC_BCM1480) += csrc-bcm1480.o |
17 | obj-$(CONFIG_CSRC_R4K) += csrc-r4k.o | ||
17 | obj-$(CONFIG_CSRC_SB1250) += csrc-sb1250.o | 18 | obj-$(CONFIG_CSRC_SB1250) += csrc-sb1250.o |
18 | 19 | ||
19 | binfmt_irix-objs := irixelf.o irixinv.o irixioctl.o irixsig.o \ | 20 | binfmt_irix-objs := irixelf.o irixinv.o irixioctl.o irixsig.o \ |
@@ -43,6 +44,7 @@ obj-$(CONFIG_CPU_TX49XX) += r4k_fpu.o r4k_switch.o | |||
43 | obj-$(CONFIG_CPU_VR41XX) += r4k_fpu.o r4k_switch.o | 44 | obj-$(CONFIG_CPU_VR41XX) += r4k_fpu.o r4k_switch.o |
44 | 45 | ||
45 | obj-$(CONFIG_SMP) += smp.o | 46 | obj-$(CONFIG_SMP) += smp.o |
47 | obj-$(CONFIG_SMP_UP) += smp-up.o | ||
46 | 48 | ||
47 | obj-$(CONFIG_MIPS_MT) += mips-mt.o | 49 | obj-$(CONFIG_MIPS_MT) += mips-mt.o |
48 | obj-$(CONFIG_MIPS_MT_FPAFF) += mips-mt-fpaff.o | 50 | obj-$(CONFIG_MIPS_MT_FPAFF) += mips-mt-fpaff.o |
diff --git a/arch/mips/kernel/cevt-r4k.c b/arch/mips/kernel/cevt-r4k.c index bab935a3d74b..24a2d907aa0d 100644 --- a/arch/mips/kernel/cevt-r4k.c +++ b/arch/mips/kernel/cevt-r4k.c | |||
@@ -219,7 +219,7 @@ static int c0_compare_int_usable(void) | |||
219 | return 1; | 219 | return 1; |
220 | } | 220 | } |
221 | 221 | ||
222 | void __cpuinit mips_clockevent_init(void) | 222 | int __cpuinit mips_clockevent_init(void) |
223 | { | 223 | { |
224 | uint64_t mips_freq = mips_hpt_frequency; | 224 | uint64_t mips_freq = mips_hpt_frequency; |
225 | unsigned int cpu = smp_processor_id(); | 225 | unsigned int cpu = smp_processor_id(); |
@@ -227,7 +227,7 @@ void __cpuinit mips_clockevent_init(void) | |||
227 | unsigned int irq; | 227 | unsigned int irq; |
228 | 228 | ||
229 | if (!cpu_has_counter || !mips_hpt_frequency) | 229 | if (!cpu_has_counter || !mips_hpt_frequency) |
230 | return; | 230 | return -ENXIO; |
231 | 231 | ||
232 | #ifdef CONFIG_MIPS_MT_SMTC | 232 | #ifdef CONFIG_MIPS_MT_SMTC |
233 | setup_smtc_dummy_clockevent_device(); | 233 | setup_smtc_dummy_clockevent_device(); |
@@ -237,11 +237,11 @@ void __cpuinit mips_clockevent_init(void) | |||
237 | * device. | 237 | * device. |
238 | */ | 238 | */ |
239 | if (cpu) | 239 | if (cpu) |
240 | return; | 240 | return 0; |
241 | #endif | 241 | #endif |
242 | 242 | ||
243 | if (!c0_compare_int_usable()) | 243 | if (!c0_compare_int_usable()) |
244 | return; | 244 | return -ENXIO; |
245 | 245 | ||
246 | /* | 246 | /* |
247 | * With vectored interrupts things are getting platform specific. | 247 | * With vectored interrupts things are getting platform specific. |
@@ -276,8 +276,8 @@ void __cpuinit mips_clockevent_init(void) | |||
276 | 276 | ||
277 | clockevents_register_device(cd); | 277 | clockevents_register_device(cd); |
278 | 278 | ||
279 | if (!cp0_timer_irq_installed) | 279 | if (cp0_timer_irq_installed) |
280 | return; | 280 | return 0; |
281 | 281 | ||
282 | cp0_timer_irq_installed = 1; | 282 | cp0_timer_irq_installed = 1; |
283 | 283 | ||
@@ -287,4 +287,6 @@ void __cpuinit mips_clockevent_init(void) | |||
287 | #else | 287 | #else |
288 | setup_irq(irq, &c0_compare_irqaction); | 288 | setup_irq(irq, &c0_compare_irqaction); |
289 | #endif | 289 | #endif |
290 | |||
291 | return 0; | ||
290 | } | 292 | } |
diff --git a/arch/mips/kernel/csrc-r4k.c b/arch/mips/kernel/csrc-r4k.c new file mode 100644 index 000000000000..0e2b5cd81f67 --- /dev/null +++ b/arch/mips/kernel/csrc-r4k.c | |||
@@ -0,0 +1,33 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 2007 by Ralf Baechle | ||
7 | */ | ||
8 | #include <linux/clocksource.h> | ||
9 | #include <linux/init.h> | ||
10 | |||
11 | #include <asm/time.h> | ||
12 | |||
13 | static cycle_t c0_hpt_read(void) | ||
14 | { | ||
15 | return read_c0_count(); | ||
16 | } | ||
17 | |||
18 | static struct clocksource clocksource_mips = { | ||
19 | .name = "MIPS", | ||
20 | .read = c0_hpt_read, | ||
21 | .mask = CLOCKSOURCE_MASK(32), | ||
22 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | ||
23 | }; | ||
24 | |||
25 | void __init init_mips_clocksource(void) | ||
26 | { | ||
27 | /* Calclate a somewhat reasonable rating value */ | ||
28 | clocksource_mips.rating = 200 + mips_hpt_frequency / 10000000; | ||
29 | |||
30 | clocksource_set_clock(&clocksource_mips, mips_hpt_frequency); | ||
31 | |||
32 | clocksource_register(&clocksource_mips); | ||
33 | } | ||
diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c index a06a27d6cfcd..7f6ddcb5d485 100644 --- a/arch/mips/kernel/setup.c +++ b/arch/mips/kernel/setup.c | |||
@@ -269,7 +269,7 @@ static void __init bootmem_init(void) | |||
269 | 269 | ||
270 | static void __init bootmem_init(void) | 270 | static void __init bootmem_init(void) |
271 | { | 271 | { |
272 | unsigned long reserved_end; | 272 | unsigned long init_begin, reserved_end; |
273 | unsigned long mapstart = ~0UL; | 273 | unsigned long mapstart = ~0UL; |
274 | unsigned long bootmap_size; | 274 | unsigned long bootmap_size; |
275 | int i; | 275 | int i; |
@@ -342,6 +342,35 @@ static void __init bootmem_init(void) | |||
342 | */ | 342 | */ |
343 | bootmap_size = init_bootmem_node(NODE_DATA(0), mapstart, | 343 | bootmap_size = init_bootmem_node(NODE_DATA(0), mapstart, |
344 | min_low_pfn, max_low_pfn); | 344 | min_low_pfn, max_low_pfn); |
345 | |||
346 | |||
347 | init_begin = PFN_UP(__pa_symbol(&__init_begin)); | ||
348 | for (i = 0; i < boot_mem_map.nr_map; i++) { | ||
349 | unsigned long start, end; | ||
350 | |||
351 | start = PFN_UP(boot_mem_map.map[i].addr); | ||
352 | end = PFN_DOWN(boot_mem_map.map[i].addr | ||
353 | + boot_mem_map.map[i].size); | ||
354 | |||
355 | if (start <= init_begin) | ||
356 | start = init_begin; | ||
357 | if (start >= end) | ||
358 | continue; | ||
359 | |||
360 | #ifndef CONFIG_HIGHMEM | ||
361 | if (end > max_low_pfn) | ||
362 | end = max_low_pfn; | ||
363 | |||
364 | /* | ||
365 | * ... finally, is the area going away? | ||
366 | */ | ||
367 | if (end <= start) | ||
368 | continue; | ||
369 | #endif | ||
370 | |||
371 | add_active_range(0, start, end); | ||
372 | } | ||
373 | |||
345 | /* | 374 | /* |
346 | * Register fully available low RAM pages with the bootmem allocator. | 375 | * Register fully available low RAM pages with the bootmem allocator. |
347 | */ | 376 | */ |
diff --git a/arch/mips/kernel/smp-up.c b/arch/mips/kernel/smp-up.c new file mode 100644 index 000000000000..ead6c30eeb14 --- /dev/null +++ b/arch/mips/kernel/smp-up.c | |||
@@ -0,0 +1,67 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 2006, 07 by Ralf Baechle (ralf@linux-mips.org) | ||
7 | * | ||
8 | * Symmetric Uniprocessor (TM) Support | ||
9 | */ | ||
10 | #include <linux/kernel.h> | ||
11 | #include <linux/sched.h> | ||
12 | |||
13 | /* | ||
14 | * Send inter-processor interrupt | ||
15 | */ | ||
16 | void up_send_ipi_single(int cpu, unsigned int action) | ||
17 | { | ||
18 | panic(KERN_ERR "%s called", __func__); | ||
19 | } | ||
20 | |||
21 | static inline void up_send_ipi_mask(cpumask_t mask, unsigned int action) | ||
22 | { | ||
23 | panic(KERN_ERR "%s called", __func__); | ||
24 | } | ||
25 | |||
26 | /* | ||
27 | * After we've done initial boot, this function is called to allow the | ||
28 | * board code to clean up state, if needed | ||
29 | */ | ||
30 | void __cpuinit up_init_secondary(void) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | void __cpuinit up_smp_finish(void) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | /* Hook for after all CPUs are online */ | ||
39 | void up_cpus_done(void) | ||
40 | { | ||
41 | } | ||
42 | |||
43 | /* | ||
44 | * Firmware CPU startup hook | ||
45 | */ | ||
46 | void __cpuinit up_boot_secondary(int cpu, struct task_struct *idle) | ||
47 | { | ||
48 | } | ||
49 | |||
50 | void __init up_smp_setup(void) | ||
51 | { | ||
52 | } | ||
53 | |||
54 | void __init up_prepare_cpus(unsigned int max_cpus) | ||
55 | { | ||
56 | } | ||
57 | |||
58 | struct plat_smp_ops up_smp_ops = { | ||
59 | .send_ipi_single = up_send_ipi_single, | ||
60 | .send_ipi_mask = up_send_ipi_mask, | ||
61 | .init_secondary = up_init_secondary, | ||
62 | .smp_finish = up_smp_finish, | ||
63 | .cpus_done = up_cpus_done, | ||
64 | .boot_secondary = up_boot_secondary, | ||
65 | .smp_setup = up_smp_setup, | ||
66 | .prepare_cpus = up_prepare_cpus, | ||
67 | }; | ||
diff --git a/arch/mips/kernel/time.c b/arch/mips/kernel/time.c index 3284b9b4ecac..52075426c373 100644 --- a/arch/mips/kernel/time.c +++ b/arch/mips/kernel/time.c | |||
@@ -50,14 +50,6 @@ int update_persistent_clock(struct timespec now) | |||
50 | return rtc_mips_set_mmss(now.tv_sec); | 50 | return rtc_mips_set_mmss(now.tv_sec); |
51 | } | 51 | } |
52 | 52 | ||
53 | /* | ||
54 | * High precision timer functions for a R4k-compatible timer. | ||
55 | */ | ||
56 | static cycle_t c0_hpt_read(void) | ||
57 | { | ||
58 | return read_c0_count(); | ||
59 | } | ||
60 | |||
61 | int (*mips_timer_state)(void); | 53 | int (*mips_timer_state)(void); |
62 | 54 | ||
63 | int null_perf_irq(void) | 55 | int null_perf_irq(void) |
@@ -84,55 +76,6 @@ EXPORT_SYMBOL(perf_irq); | |||
84 | 76 | ||
85 | unsigned int mips_hpt_frequency; | 77 | unsigned int mips_hpt_frequency; |
86 | 78 | ||
87 | static struct clocksource clocksource_mips = { | ||
88 | .name = "MIPS", | ||
89 | .read = c0_hpt_read, | ||
90 | .mask = CLOCKSOURCE_MASK(32), | ||
91 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | ||
92 | }; | ||
93 | |||
94 | static unsigned int __init calibrate_hpt(void) | ||
95 | { | ||
96 | cycle_t frequency, hpt_start, hpt_end, hpt_count, hz; | ||
97 | |||
98 | const int loops = HZ / 10; | ||
99 | int log_2_loops = 0; | ||
100 | int i; | ||
101 | |||
102 | /* | ||
103 | * We want to calibrate for 0.1s, but to avoid a 64-bit | ||
104 | * division we round the number of loops up to the nearest | ||
105 | * power of 2. | ||
106 | */ | ||
107 | while (loops > 1 << log_2_loops) | ||
108 | log_2_loops++; | ||
109 | i = 1 << log_2_loops; | ||
110 | |||
111 | /* | ||
112 | * Wait for a rising edge of the timer interrupt. | ||
113 | */ | ||
114 | while (mips_timer_state()); | ||
115 | while (!mips_timer_state()); | ||
116 | |||
117 | /* | ||
118 | * Now see how many high precision timer ticks happen | ||
119 | * during the calculated number of periods between timer | ||
120 | * interrupts. | ||
121 | */ | ||
122 | hpt_start = clocksource_mips.read(); | ||
123 | do { | ||
124 | while (mips_timer_state()); | ||
125 | while (!mips_timer_state()); | ||
126 | } while (--i); | ||
127 | hpt_end = clocksource_mips.read(); | ||
128 | |||
129 | hpt_count = (hpt_end - hpt_start) & clocksource_mips.mask; | ||
130 | hz = HZ; | ||
131 | frequency = hpt_count * hz; | ||
132 | |||
133 | return frequency >> log_2_loops; | ||
134 | } | ||
135 | |||
136 | void __init clocksource_set_clock(struct clocksource *cs, unsigned int clock) | 79 | void __init clocksource_set_clock(struct clocksource *cs, unsigned int clock) |
137 | { | 80 | { |
138 | u64 temp; | 81 | u64 temp; |
@@ -166,16 +109,6 @@ void __cpuinit clockevent_set_clock(struct clock_event_device *cd, | |||
166 | cd->mult = (u32) temp; | 109 | cd->mult = (u32) temp; |
167 | } | 110 | } |
168 | 111 | ||
169 | static void __init init_mips_clocksource(void) | ||
170 | { | ||
171 | /* Calclate a somewhat reasonable rating value */ | ||
172 | clocksource_mips.rating = 200 + mips_hpt_frequency / 10000000; | ||
173 | |||
174 | clocksource_set_clock(&clocksource_mips, mips_hpt_frequency); | ||
175 | |||
176 | clocksource_register(&clocksource_mips); | ||
177 | } | ||
178 | |||
179 | void __init __weak plat_time_init(void) | 112 | void __init __weak plat_time_init(void) |
180 | { | 113 | { |
181 | } | 114 | } |
@@ -194,21 +127,42 @@ void __init plat_timer_setup(void) | |||
194 | BUG(); | 127 | BUG(); |
195 | } | 128 | } |
196 | 129 | ||
130 | static __init int cpu_has_mfc0_count_bug(void) | ||
131 | { | ||
132 | switch (current_cpu_type()) { | ||
133 | case CPU_R4000PC: | ||
134 | case CPU_R4000SC: | ||
135 | case CPU_R4000MC: | ||
136 | /* | ||
137 | * V3.0 is documented as suffering from the mfc0 from count bug. | ||
138 | * Afaik this is the last version of the R4000. Later versions | ||
139 | * were marketed as R4400. | ||
140 | */ | ||
141 | return 1; | ||
142 | |||
143 | case CPU_R4400PC: | ||
144 | case CPU_R4400SC: | ||
145 | case CPU_R4400MC: | ||
146 | /* | ||
147 | * The published errata for the R4400 upto 3.0 say the CPU | ||
148 | * has the mfc0 from count bug. | ||
149 | */ | ||
150 | if ((current_cpu_data.processor_id & 0xff) <= 0x30) | ||
151 | return 1; | ||
152 | |||
153 | /* | ||
154 | * I don't have erratas for newer R4400 so be paranoid. | ||
155 | */ | ||
156 | return 1; | ||
157 | } | ||
158 | |||
159 | return 0; | ||
160 | } | ||
161 | |||
197 | void __init time_init(void) | 162 | void __init time_init(void) |
198 | { | 163 | { |
199 | plat_time_init(); | 164 | plat_time_init(); |
200 | 165 | ||
201 | if (cpu_has_counter && (mips_hpt_frequency || mips_timer_state)) { | 166 | if (mips_clockevent_init() || !cpu_has_mfc0_count_bug()) |
202 | /* We know counter frequency. Or we can get it. */ | ||
203 | if (!mips_hpt_frequency) | ||
204 | mips_hpt_frequency = calibrate_hpt(); | ||
205 | |||
206 | /* Report the high precision timer rate for a reference. */ | ||
207 | printk("Using %u.%03u MHz high precision timer.\n", | ||
208 | ((mips_hpt_frequency + 500) / 1000) / 1000, | ||
209 | ((mips_hpt_frequency + 500) / 1000) % 1000); | ||
210 | init_mips_clocksource(); | 167 | init_mips_clocksource(); |
211 | } | ||
212 | |||
213 | mips_clockevent_init(); | ||
214 | } | 168 | } |
diff --git a/arch/mips/kernel/vpe.c b/arch/mips/kernel/vpe.c index 38bd33fa2a23..c06eb812a95e 100644 --- a/arch/mips/kernel/vpe.c +++ b/arch/mips/kernel/vpe.c | |||
@@ -470,7 +470,7 @@ static int apply_r_mips_lo16(struct module *me, uint32_t *location, | |||
470 | */ | 470 | */ |
471 | if (v != l->value) { | 471 | if (v != l->value) { |
472 | printk(KERN_DEBUG "VPE loader: " | 472 | printk(KERN_DEBUG "VPE loader: " |
473 | "apply_r_mips_lo16/hi16: " | 473 | "apply_r_mips_lo16/hi16: \t" |
474 | "inconsistent value information\n"); | 474 | "inconsistent value information\n"); |
475 | return -ENOEXEC; | 475 | return -ENOEXEC; |
476 | } | 476 | } |
@@ -629,7 +629,7 @@ static void simplify_symbols(Elf_Shdr * sechdrs, | |||
629 | break; | 629 | break; |
630 | 630 | ||
631 | case SHN_MIPS_SCOMMON: | 631 | case SHN_MIPS_SCOMMON: |
632 | printk(KERN_DEBUG "simplify_symbols: ignoring SHN_MIPS_SCOMMON" | 632 | printk(KERN_DEBUG "simplify_symbols: ignoring SHN_MIPS_SCOMMON " |
633 | "symbol <%s> st_shndx %d\n", strtab + sym[i].st_name, | 633 | "symbol <%s> st_shndx %d\n", strtab + sym[i].st_name, |
634 | sym[i].st_shndx); | 634 | sym[i].st_shndx); |
635 | // .sbss section | 635 | // .sbss section |
diff --git a/arch/mips/math-emu/ieee754.c b/arch/mips/math-emu/ieee754.c index 946aee331788..cb1b6822711a 100644 --- a/arch/mips/math-emu/ieee754.c +++ b/arch/mips/math-emu/ieee754.c | |||
@@ -108,6 +108,7 @@ int ieee754si_xcpt(int r, const char *op, ...) | |||
108 | ax.rv.si = r; | 108 | ax.rv.si = r; |
109 | va_start(ax.ap, op); | 109 | va_start(ax.ap, op); |
110 | ieee754_xcpt(&ax); | 110 | ieee754_xcpt(&ax); |
111 | va_end(ax.ap); | ||
111 | return ax.rv.si; | 112 | return ax.rv.si; |
112 | } | 113 | } |
113 | 114 | ||
@@ -122,5 +123,6 @@ s64 ieee754di_xcpt(s64 r, const char *op, ...) | |||
122 | ax.rv.di = r; | 123 | ax.rv.di = r; |
123 | va_start(ax.ap, op); | 124 | va_start(ax.ap, op); |
124 | ieee754_xcpt(&ax); | 125 | ieee754_xcpt(&ax); |
126 | va_end(ax.ap); | ||
125 | return ax.rv.di; | 127 | return ax.rv.di; |
126 | } | 128 | } |
diff --git a/arch/mips/math-emu/ieee754dp.c b/arch/mips/math-emu/ieee754dp.c index 3e214aac4b12..6d2d89f32472 100644 --- a/arch/mips/math-emu/ieee754dp.c +++ b/arch/mips/math-emu/ieee754dp.c | |||
@@ -57,6 +57,7 @@ ieee754dp ieee754dp_xcpt(ieee754dp r, const char *op, ...) | |||
57 | ax.rv.dp = r; | 57 | ax.rv.dp = r; |
58 | va_start(ax.ap, op); | 58 | va_start(ax.ap, op); |
59 | ieee754_xcpt(&ax); | 59 | ieee754_xcpt(&ax); |
60 | va_end(ax.ap); | ||
60 | return ax.rv.dp; | 61 | return ax.rv.dp; |
61 | } | 62 | } |
62 | 63 | ||
@@ -83,6 +84,7 @@ ieee754dp ieee754dp_nanxcpt(ieee754dp r, const char *op, ...) | |||
83 | ax.rv.dp = r; | 84 | ax.rv.dp = r; |
84 | va_start(ax.ap, op); | 85 | va_start(ax.ap, op); |
85 | ieee754_xcpt(&ax); | 86 | ieee754_xcpt(&ax); |
87 | va_end(ax.ap); | ||
86 | return ax.rv.dp; | 88 | return ax.rv.dp; |
87 | } | 89 | } |
88 | 90 | ||
diff --git a/arch/mips/math-emu/ieee754sp.c b/arch/mips/math-emu/ieee754sp.c index adda851cd04f..463534045ab6 100644 --- a/arch/mips/math-emu/ieee754sp.c +++ b/arch/mips/math-emu/ieee754sp.c | |||
@@ -58,6 +58,7 @@ ieee754sp ieee754sp_xcpt(ieee754sp r, const char *op, ...) | |||
58 | ax.rv.sp = r; | 58 | ax.rv.sp = r; |
59 | va_start(ax.ap, op); | 59 | va_start(ax.ap, op); |
60 | ieee754_xcpt(&ax); | 60 | ieee754_xcpt(&ax); |
61 | va_end(ax.ap); | ||
61 | return ax.rv.sp; | 62 | return ax.rv.sp; |
62 | } | 63 | } |
63 | 64 | ||
@@ -84,6 +85,7 @@ ieee754sp ieee754sp_nanxcpt(ieee754sp r, const char *op, ...) | |||
84 | ax.rv.sp = r; | 85 | ax.rv.sp = r; |
85 | va_start(ax.ap, op); | 86 | va_start(ax.ap, op); |
86 | ieee754_xcpt(&ax); | 87 | ieee754_xcpt(&ax); |
88 | va_end(ax.ap); | ||
87 | return ax.rv.sp; | 89 | return ax.rv.sp; |
88 | } | 90 | } |
89 | 91 | ||
diff --git a/arch/mips/mipssim/sim_time.c b/arch/mips/mipssim/sim_time.c index bfaafa38846f..e39bbe989da3 100644 --- a/arch/mips/mipssim/sim_time.c +++ b/arch/mips/mipssim/sim_time.c | |||
@@ -101,9 +101,7 @@ unsigned __init get_c0_compare_int(void) | |||
101 | 101 | ||
102 | void __init plat_time_init(void) | 102 | void __init plat_time_init(void) |
103 | { | 103 | { |
104 | unsigned int est_freq, flags; | 104 | unsigned int est_freq; |
105 | |||
106 | local_irq_save(flags); | ||
107 | 105 | ||
108 | /* Set Data mode - binary. */ | 106 | /* Set Data mode - binary. */ |
109 | CMOS_WRITE(CMOS_READ(RTC_CONTROL) | RTC_DM_BINARY, RTC_CONTROL); | 107 | CMOS_WRITE(CMOS_READ(RTC_CONTROL) | RTC_DM_BINARY, RTC_CONTROL); |
@@ -114,6 +112,4 @@ void __init plat_time_init(void) | |||
114 | (est_freq % 1000000) * 100 / 1000000); | 112 | (est_freq % 1000000) * 100 / 1000000); |
115 | 113 | ||
116 | cpu_khz = est_freq / 1000; | 114 | cpu_khz = est_freq / 1000; |
117 | |||
118 | local_irq_restore(flags); | ||
119 | } | 115 | } |
diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c index 33519ce49540..ae76795685cc 100644 --- a/arch/mips/mm/dma-default.c +++ b/arch/mips/mm/dma-default.c | |||
@@ -40,16 +40,38 @@ static inline int cpu_is_noncoherent_r10000(struct device *dev) | |||
40 | current_cpu_type() == CPU_R12000); | 40 | current_cpu_type() == CPU_R12000); |
41 | } | 41 | } |
42 | 42 | ||
43 | static gfp_t massage_gfp_flags(const struct device *dev, gfp_t gfp) | ||
44 | { | ||
45 | /* ignore region specifiers */ | ||
46 | gfp &= ~(__GFP_DMA | __GFP_DMA32 | __GFP_HIGHMEM); | ||
47 | |||
48 | #ifdef CONFIG_ZONE_DMA32 | ||
49 | if (dev == NULL) | ||
50 | gfp |= __GFP_DMA; | ||
51 | else if (dev->coherent_dma_mask < DMA_BIT_MASK(24)) | ||
52 | gfp |= __GFP_DMA; | ||
53 | else | ||
54 | #endif | ||
55 | #ifdef CONFIG_ZONE_DMA32 | ||
56 | if (dev->coherent_dma_mask < DMA_BIT_MASK(32)) | ||
57 | gfp |= __GFP_DMA32; | ||
58 | else | ||
59 | #endif | ||
60 | ; | ||
61 | |||
62 | /* Don't invoke OOM killer */ | ||
63 | gfp |= __GFP_NORETRY; | ||
64 | |||
65 | return gfp; | ||
66 | } | ||
67 | |||
43 | void *dma_alloc_noncoherent(struct device *dev, size_t size, | 68 | void *dma_alloc_noncoherent(struct device *dev, size_t size, |
44 | dma_addr_t * dma_handle, gfp_t gfp) | 69 | dma_addr_t * dma_handle, gfp_t gfp) |
45 | { | 70 | { |
46 | void *ret; | 71 | void *ret; |
47 | 72 | ||
48 | /* ignore region specifiers */ | 73 | gfp = massage_gfp_flags(dev, gfp); |
49 | gfp &= ~(__GFP_DMA | __GFP_HIGHMEM); | ||
50 | 74 | ||
51 | if (dev == NULL || (dev->coherent_dma_mask < 0xffffffff)) | ||
52 | gfp |= GFP_DMA; | ||
53 | ret = (void *) __get_free_pages(gfp, get_order(size)); | 75 | ret = (void *) __get_free_pages(gfp, get_order(size)); |
54 | 76 | ||
55 | if (ret != NULL) { | 77 | if (ret != NULL) { |
@@ -67,11 +89,8 @@ void *dma_alloc_coherent(struct device *dev, size_t size, | |||
67 | { | 89 | { |
68 | void *ret; | 90 | void *ret; |
69 | 91 | ||
70 | /* ignore region specifiers */ | 92 | gfp = massage_gfp_flags(dev, gfp); |
71 | gfp &= ~(__GFP_DMA | __GFP_HIGHMEM); | ||
72 | 93 | ||
73 | if (dev == NULL || (dev->coherent_dma_mask < 0xffffffff)) | ||
74 | gfp |= GFP_DMA; | ||
75 | ret = (void *) __get_free_pages(gfp, get_order(size)); | 94 | ret = (void *) __get_free_pages(gfp, get_order(size)); |
76 | 95 | ||
77 | if (ret) { | 96 | if (ret) { |
@@ -343,7 +362,7 @@ int dma_supported(struct device *dev, u64 mask) | |||
343 | * so we can't guarantee allocations that must be | 362 | * so we can't guarantee allocations that must be |
344 | * within a tighter range than GFP_DMA.. | 363 | * within a tighter range than GFP_DMA.. |
345 | */ | 364 | */ |
346 | if (mask < 0x00ffffff) | 365 | if (mask < DMA_BIT_MASK(24)) |
347 | return 0; | 366 | return 0; |
348 | 367 | ||
349 | return 1; | 368 | return 1; |
diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c index ec3b9e9f30f4..480dec04f552 100644 --- a/arch/mips/mm/init.c +++ b/arch/mips/mm/init.c | |||
@@ -347,11 +347,8 @@ static int __init page_is_ram(unsigned long pagenr) | |||
347 | 347 | ||
348 | void __init paging_init(void) | 348 | void __init paging_init(void) |
349 | { | 349 | { |
350 | unsigned long zones_size[MAX_NR_ZONES] = { 0, }; | 350 | unsigned long max_zone_pfns[MAX_NR_ZONES]; |
351 | #ifndef CONFIG_FLATMEM | 351 | unsigned long lastpfn; |
352 | unsigned long zholes_size[MAX_NR_ZONES] = { 0, }; | ||
353 | unsigned long i, j, pfn; | ||
354 | #endif | ||
355 | 352 | ||
356 | pagetable_init(); | 353 | pagetable_init(); |
357 | 354 | ||
@@ -361,35 +358,27 @@ void __init paging_init(void) | |||
361 | kmap_coherent_init(); | 358 | kmap_coherent_init(); |
362 | 359 | ||
363 | #ifdef CONFIG_ZONE_DMA | 360 | #ifdef CONFIG_ZONE_DMA |
364 | if (min_low_pfn < MAX_DMA_PFN && MAX_DMA_PFN <= max_low_pfn) { | 361 | max_zone_pfns[ZONE_DMA] = MAX_DMA_PFN; |
365 | zones_size[ZONE_DMA] = MAX_DMA_PFN - min_low_pfn; | ||
366 | zones_size[ZONE_NORMAL] = max_low_pfn - MAX_DMA_PFN; | ||
367 | } else if (max_low_pfn < MAX_DMA_PFN) | ||
368 | zones_size[ZONE_DMA] = max_low_pfn - min_low_pfn; | ||
369 | else | ||
370 | #endif | 362 | #endif |
371 | zones_size[ZONE_NORMAL] = max_low_pfn - min_low_pfn; | 363 | #ifdef CONFIG_ZONE_DMA32 |
372 | 364 | max_zone_pfns[ZONE_DMA32] = MAX_DMA32_PFN; | |
365 | #endif | ||
366 | max_zone_pfns[ZONE_NORMAL] = max_low_pfn; | ||
367 | lastpfn = max_low_pfn; | ||
373 | #ifdef CONFIG_HIGHMEM | 368 | #ifdef CONFIG_HIGHMEM |
374 | zones_size[ZONE_HIGHMEM] = highend_pfn - highstart_pfn; | 369 | max_zone_pfns[ZONE_HIGHMEM] = highend_pfn; |
370 | lastpfn = highend_pfn; | ||
375 | 371 | ||
376 | if (cpu_has_dc_aliases && zones_size[ZONE_HIGHMEM]) { | 372 | if (cpu_has_dc_aliases && max_low_pfn != highend_pfn) { |
377 | printk(KERN_WARNING "This processor doesn't support highmem." | 373 | printk(KERN_WARNING "This processor doesn't support highmem." |
378 | " %ldk highmem ignored\n", zones_size[ZONE_HIGHMEM]); | 374 | " %ldk highmem ignored\n", |
379 | zones_size[ZONE_HIGHMEM] = 0; | 375 | (highend_pfn - max_low_pfn) << (PAGE_SHIFT - 10)); |
376 | max_zone_pfns[ZONE_HIGHMEM] = max_low_pfn; | ||
377 | lastpfn = max_low_pfn; | ||
380 | } | 378 | } |
381 | #endif | 379 | #endif |
382 | 380 | ||
383 | #ifdef CONFIG_FLATMEM | 381 | free_area_init_nodes(max_zone_pfns); |
384 | free_area_init(zones_size); | ||
385 | #else | ||
386 | pfn = min_low_pfn; | ||
387 | for (i = 0; i < MAX_NR_ZONES; i++) | ||
388 | for (j = 0; j < zones_size[i]; j++, pfn++) | ||
389 | if (!page_is_ram(pfn)) | ||
390 | zholes_size[i]++; | ||
391 | free_area_init_node(0, NODE_DATA(0), zones_size, 0, zholes_size); | ||
392 | #endif | ||
393 | } | 382 | } |
394 | 383 | ||
395 | static struct kcore_list kcore_mem, kcore_vmalloc; | 384 | static struct kcore_list kcore_mem, kcore_vmalloc; |
diff --git a/arch/mips/pmc-sierra/Kconfig b/arch/mips/pmc-sierra/Kconfig index 6b293ce0935f..90261b83db04 100644 --- a/arch/mips/pmc-sierra/Kconfig +++ b/arch/mips/pmc-sierra/Kconfig | |||
@@ -5,12 +5,14 @@ choice | |||
5 | config PMC_MSP4200_EVAL | 5 | config PMC_MSP4200_EVAL |
6 | bool "PMC-Sierra MSP4200 Eval Board" | 6 | bool "PMC-Sierra MSP4200 Eval Board" |
7 | select CEVT_R4K | 7 | select CEVT_R4K |
8 | select CSRC_R4K | ||
8 | select IRQ_MSP_SLP | 9 | select IRQ_MSP_SLP |
9 | select HW_HAS_PCI | 10 | select HW_HAS_PCI |
10 | 11 | ||
11 | config PMC_MSP4200_GW | 12 | config PMC_MSP4200_GW |
12 | bool "PMC-Sierra MSP4200 VoIP Gateway" | 13 | bool "PMC-Sierra MSP4200 VoIP Gateway" |
13 | select CEVT_R4K | 14 | select CEVT_R4K |
15 | select CSRC_R4K | ||
14 | select IRQ_MSP_SLP | 16 | select IRQ_MSP_SLP |
15 | select HW_HAS_PCI | 17 | select HW_HAS_PCI |
16 | 18 | ||
diff --git a/arch/mips/sgi-ip22/ip22-eisa.c b/arch/mips/sgi-ip22/ip22-eisa.c index 26854fb11e7c..1617241d2737 100644 --- a/arch/mips/sgi-ip22/ip22-eisa.c +++ b/arch/mips/sgi-ip22/ip22-eisa.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include <asm/sgi/ioc.h> | 36 | #include <asm/sgi/ioc.h> |
37 | #include <asm/sgi/mc.h> | 37 | #include <asm/sgi/mc.h> |
38 | #include <asm/sgi/ip22.h> | 38 | #include <asm/sgi/ip22.h> |
39 | #include <asm/i8259.h> | ||
39 | 40 | ||
40 | /* I2 has four EISA slots. */ | 41 | /* I2 has four EISA slots. */ |
41 | #define IP22_EISA_MAX_SLOTS 4 | 42 | #define IP22_EISA_MAX_SLOTS 4 |
@@ -93,126 +94,11 @@ static irqreturn_t ip22_eisa_intr(int irq, void *dev_id) | |||
93 | return IRQ_NONE; | 94 | return IRQ_NONE; |
94 | } | 95 | } |
95 | 96 | ||
96 | static void enable_eisa1_irq(unsigned int irq) | ||
97 | { | ||
98 | u8 mask; | ||
99 | |||
100 | mask = inb(EISA_INT1_MASK); | ||
101 | mask &= ~((u8) (1 << irq)); | ||
102 | outb(mask, EISA_INT1_MASK); | ||
103 | } | ||
104 | |||
105 | static unsigned int startup_eisa1_irq(unsigned int irq) | ||
106 | { | ||
107 | u8 edge; | ||
108 | |||
109 | /* Only use edge interrupts for EISA */ | ||
110 | |||
111 | edge = inb(EISA_INT1_EDGE_LEVEL); | ||
112 | edge &= ~((u8) (1 << irq)); | ||
113 | outb(edge, EISA_INT1_EDGE_LEVEL); | ||
114 | |||
115 | enable_eisa1_irq(irq); | ||
116 | return 0; | ||
117 | } | ||
118 | |||
119 | static void disable_eisa1_irq(unsigned int irq) | ||
120 | { | ||
121 | u8 mask; | ||
122 | |||
123 | mask = inb(EISA_INT1_MASK); | ||
124 | mask |= ((u8) (1 << irq)); | ||
125 | outb(mask, EISA_INT1_MASK); | ||
126 | } | ||
127 | |||
128 | static void mask_and_ack_eisa1_irq(unsigned int irq) | ||
129 | { | ||
130 | disable_eisa1_irq(irq); | ||
131 | |||
132 | outb(0x20, EISA_INT1_CTRL); | ||
133 | } | ||
134 | |||
135 | static void end_eisa1_irq(unsigned int irq) | ||
136 | { | ||
137 | if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) | ||
138 | enable_eisa1_irq(irq); | ||
139 | } | ||
140 | |||
141 | static struct irq_chip ip22_eisa1_irq_type = { | ||
142 | .name = "IP22 EISA", | ||
143 | .startup = startup_eisa1_irq, | ||
144 | .ack = mask_and_ack_eisa1_irq, | ||
145 | .mask = disable_eisa1_irq, | ||
146 | .mask_ack = mask_and_ack_eisa1_irq, | ||
147 | .unmask = enable_eisa1_irq, | ||
148 | .end = end_eisa1_irq, | ||
149 | }; | ||
150 | |||
151 | static void enable_eisa2_irq(unsigned int irq) | ||
152 | { | ||
153 | u8 mask; | ||
154 | |||
155 | mask = inb(EISA_INT2_MASK); | ||
156 | mask &= ~((u8) (1 << (irq - 8))); | ||
157 | outb(mask, EISA_INT2_MASK); | ||
158 | } | ||
159 | |||
160 | static unsigned int startup_eisa2_irq(unsigned int irq) | ||
161 | { | ||
162 | u8 edge; | ||
163 | |||
164 | /* Only use edge interrupts for EISA */ | ||
165 | |||
166 | edge = inb(EISA_INT2_EDGE_LEVEL); | ||
167 | edge &= ~((u8) (1 << (irq - 8))); | ||
168 | outb(edge, EISA_INT2_EDGE_LEVEL); | ||
169 | |||
170 | enable_eisa2_irq(irq); | ||
171 | return 0; | ||
172 | } | ||
173 | |||
174 | static void disable_eisa2_irq(unsigned int irq) | ||
175 | { | ||
176 | u8 mask; | ||
177 | |||
178 | mask = inb(EISA_INT2_MASK); | ||
179 | mask |= ((u8) (1 << (irq - 8))); | ||
180 | outb(mask, EISA_INT2_MASK); | ||
181 | } | ||
182 | |||
183 | static void mask_and_ack_eisa2_irq(unsigned int irq) | ||
184 | { | ||
185 | disable_eisa2_irq(irq); | ||
186 | |||
187 | outb(0x20, EISA_INT2_CTRL); | ||
188 | } | ||
189 | |||
190 | static void end_eisa2_irq(unsigned int irq) | ||
191 | { | ||
192 | if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) | ||
193 | enable_eisa2_irq(irq); | ||
194 | } | ||
195 | |||
196 | static struct irq_chip ip22_eisa2_irq_type = { | ||
197 | .name = "IP22 EISA", | ||
198 | .startup = startup_eisa2_irq, | ||
199 | .ack = mask_and_ack_eisa2_irq, | ||
200 | .mask = disable_eisa2_irq, | ||
201 | .mask_ack = mask_and_ack_eisa2_irq, | ||
202 | .unmask = enable_eisa2_irq, | ||
203 | .end = end_eisa2_irq, | ||
204 | }; | ||
205 | |||
206 | static struct irqaction eisa_action = { | 97 | static struct irqaction eisa_action = { |
207 | .handler = ip22_eisa_intr, | 98 | .handler = ip22_eisa_intr, |
208 | .name = "EISA", | 99 | .name = "EISA", |
209 | }; | 100 | }; |
210 | 101 | ||
211 | static struct irqaction cascade_action = { | ||
212 | .handler = no_action, | ||
213 | .name = "EISA cascade", | ||
214 | }; | ||
215 | |||
216 | int __init ip22_eisa_init(void) | 102 | int __init ip22_eisa_init(void) |
217 | { | 103 | { |
218 | int i, c; | 104 | int i, c; |
@@ -248,29 +134,13 @@ int __init ip22_eisa_init(void) | |||
248 | outb(1, EISA_EXT_NMI_RESET_CTRL); | 134 | outb(1, EISA_EXT_NMI_RESET_CTRL); |
249 | udelay(50); /* Wait long enough for the dust to settle */ | 135 | udelay(50); /* Wait long enough for the dust to settle */ |
250 | outb(0, EISA_EXT_NMI_RESET_CTRL); | 136 | outb(0, EISA_EXT_NMI_RESET_CTRL); |
251 | outb(0x11, EISA_INT1_CTRL); | ||
252 | outb(0x11, EISA_INT2_CTRL); | ||
253 | outb(0, EISA_INT1_MASK); | ||
254 | outb(8, EISA_INT2_MASK); | ||
255 | outb(4, EISA_INT1_MASK); | ||
256 | outb(2, EISA_INT2_MASK); | ||
257 | outb(1, EISA_INT1_MASK); | ||
258 | outb(1, EISA_INT2_MASK); | ||
259 | outb(0xfb, EISA_INT1_MASK); | ||
260 | outb(0xff, EISA_INT2_MASK); | ||
261 | outb(0, EISA_DMA2_WRITE_SINGLE); | 137 | outb(0, EISA_DMA2_WRITE_SINGLE); |
262 | 138 | ||
263 | for (i = SGINT_EISA; i < (SGINT_EISA + EISA_MAX_IRQ); i++) { | 139 | init_i8259_irqs(); |
264 | if (i < (SGINT_EISA + 8)) | ||
265 | set_irq_chip(i, &ip22_eisa1_irq_type); | ||
266 | else | ||
267 | set_irq_chip(i, &ip22_eisa2_irq_type); | ||
268 | } | ||
269 | 140 | ||
270 | /* Cannot use request_irq because of kmalloc not being ready at such | 141 | /* Cannot use request_irq because of kmalloc not being ready at such |
271 | * an early stage. Yes, I've been bitten... */ | 142 | * an early stage. Yes, I've been bitten... */ |
272 | setup_irq(SGI_EISA_IRQ, &eisa_action); | 143 | setup_irq(SGI_EISA_IRQ, &eisa_action); |
273 | setup_irq(SGINT_EISA + 2, &cascade_action); | ||
274 | 144 | ||
275 | EISA_bus = 1; | 145 | EISA_bus = 1; |
276 | return 0; | 146 | return 0; |
diff --git a/arch/mips/sgi-ip22/ip22-nvram.c b/arch/mips/sgi-ip22/ip22-nvram.c index e19d60d5fcc1..0177566475d4 100644 --- a/arch/mips/sgi-ip22/ip22-nvram.c +++ b/arch/mips/sgi-ip22/ip22-nvram.c | |||
@@ -32,19 +32,19 @@ | |||
32 | for (x=0; x<100000; x++) __asm__ __volatile__(""); }) | 32 | for (x=0; x<100000; x++) __asm__ __volatile__(""); }) |
33 | 33 | ||
34 | #define eeprom_cs_on(ptr) ({ \ | 34 | #define eeprom_cs_on(ptr) ({ \ |
35 | *ptr &= ~EEPROM_DATO; \ | 35 | __raw_writel(__raw_readl(ptr) & ~EEPROM_DATO, ptr); \ |
36 | *ptr &= ~EEPROM_ECLK; \ | 36 | __raw_writel(__raw_readl(ptr) & ~EEPROM_ECLK, ptr); \ |
37 | *ptr &= ~EEPROM_EPROT; \ | 37 | __raw_writel(__raw_readl(ptr) & ~EEPROM_EPROT, ptr); \ |
38 | delay(); \ | 38 | delay(); \ |
39 | *ptr |= EEPROM_CSEL; \ | 39 | __raw_writel(__raw_readl(ptr) | EEPROM_CSEL, ptr); \ |
40 | *ptr |= EEPROM_ECLK; }) | 40 | __raw_writel(__raw_readl(ptr) | EEPROM_ECLK, ptr); }) |
41 | 41 | ||
42 | 42 | ||
43 | #define eeprom_cs_off(ptr) ({ \ | 43 | #define eeprom_cs_off(ptr) ({ \ |
44 | *ptr &= ~EEPROM_ECLK; \ | 44 | __raw_writel(__raw_readl(ptr) & ~EEPROM_ECLK, ptr); \ |
45 | *ptr &= ~EEPROM_CSEL; \ | 45 | __raw_writel(__raw_readl(ptr) & ~EEPROM_CSEL, ptr); \ |
46 | *ptr |= EEPROM_EPROT; \ | 46 | __raw_writel(__raw_readl(ptr) | EEPROM_EPROT, ptr); \ |
47 | *ptr |= EEPROM_ECLK; }) | 47 | __raw_writel(__raw_readl(ptr) | EEPROM_ECLK, ptr); }) |
48 | 48 | ||
49 | #define BITS_IN_COMMAND 11 | 49 | #define BITS_IN_COMMAND 11 |
50 | /* | 50 | /* |
@@ -60,15 +60,17 @@ static inline void eeprom_cmd(unsigned int *ctrl, unsigned cmd, unsigned reg) | |||
60 | ser_cmd = cmd | (reg << (16 - BITS_IN_COMMAND)); | 60 | ser_cmd = cmd | (reg << (16 - BITS_IN_COMMAND)); |
61 | for (i = 0; i < BITS_IN_COMMAND; i++) { | 61 | for (i = 0; i < BITS_IN_COMMAND; i++) { |
62 | if (ser_cmd & (1<<15)) /* if high order bit set */ | 62 | if (ser_cmd & (1<<15)) /* if high order bit set */ |
63 | writel(readl(ctrl) | EEPROM_DATO, ctrl); | 63 | __raw_writel(__raw_readl(ctrl) | EEPROM_DATO, ctrl); |
64 | else | 64 | else |
65 | writel(readl(ctrl) & ~EEPROM_DATO, ctrl); | 65 | __raw_writel(__raw_readl(ctrl) & ~EEPROM_DATO, ctrl); |
66 | writel(readl(ctrl) & ~EEPROM_ECLK, ctrl); | 66 | __raw_writel(__raw_readl(ctrl) & ~EEPROM_ECLK, ctrl); |
67 | writel(readl(ctrl) | EEPROM_ECLK, ctrl); | 67 | delay(); |
68 | __raw_writel(__raw_readl(ctrl) | EEPROM_ECLK, ctrl); | ||
69 | delay(); | ||
68 | ser_cmd <<= 1; | 70 | ser_cmd <<= 1; |
69 | } | 71 | } |
70 | /* see data sheet timing diagram */ | 72 | /* see data sheet timing diagram */ |
71 | writel(readl(ctrl) & ~EEPROM_DATO, ctrl); | 73 | __raw_writel(__raw_readl(ctrl) & ~EEPROM_DATO, ctrl); |
72 | } | 74 | } |
73 | 75 | ||
74 | unsigned short ip22_eeprom_read(unsigned int *ctrl, int reg) | 76 | unsigned short ip22_eeprom_read(unsigned int *ctrl, int reg) |
@@ -76,18 +78,18 @@ unsigned short ip22_eeprom_read(unsigned int *ctrl, int reg) | |||
76 | unsigned short res = 0; | 78 | unsigned short res = 0; |
77 | int i; | 79 | int i; |
78 | 80 | ||
79 | writel(readl(ctrl) & ~EEPROM_EPROT, ctrl); | 81 | __raw_writel(__raw_readl(ctrl) & ~EEPROM_EPROT, ctrl); |
80 | eeprom_cs_on(ctrl); | 82 | eeprom_cs_on(ctrl); |
81 | eeprom_cmd(ctrl, EEPROM_READ, reg); | 83 | eeprom_cmd(ctrl, EEPROM_READ, reg); |
82 | 84 | ||
83 | /* clock the data ouf of serial mem */ | 85 | /* clock the data ouf of serial mem */ |
84 | for (i = 0; i < 16; i++) { | 86 | for (i = 0; i < 16; i++) { |
85 | writel(readl(ctrl) & ~EEPROM_ECLK, ctrl); | 87 | __raw_writel(__raw_readl(ctrl) & ~EEPROM_ECLK, ctrl); |
86 | delay(); | 88 | delay(); |
87 | writel(readl(ctrl) | EEPROM_ECLK, ctrl); | 89 | __raw_writel(__raw_readl(ctrl) | EEPROM_ECLK, ctrl); |
88 | delay(); | 90 | delay(); |
89 | res <<= 1; | 91 | res <<= 1; |
90 | if (readl(ctrl) & EEPROM_DATI) | 92 | if (__raw_readl(ctrl) & EEPROM_DATI) |
91 | res |= 1; | 93 | res |= 1; |
92 | } | 94 | } |
93 | 95 | ||
diff --git a/arch/mips/sgi-ip22/ip22-setup.c b/arch/mips/sgi-ip22/ip22-setup.c index 174f09e42f6b..5f389ee26fca 100644 --- a/arch/mips/sgi-ip22/ip22-setup.c +++ b/arch/mips/sgi-ip22/ip22-setup.c | |||
@@ -31,25 +31,6 @@ | |||
31 | unsigned long sgi_gfxaddr; | 31 | unsigned long sgi_gfxaddr; |
32 | EXPORT_SYMBOL_GPL(sgi_gfxaddr); | 32 | EXPORT_SYMBOL_GPL(sgi_gfxaddr); |
33 | 33 | ||
34 | /* | ||
35 | * Stop-A is originally a Sun thing that isn't standard on IP22 so to avoid | ||
36 | * accidents it's disabled by default on IP22. | ||
37 | * | ||
38 | * FIXME: provide a mechanism to change the value of stop_a_enabled. | ||
39 | */ | ||
40 | int stop_a_enabled; | ||
41 | |||
42 | void ip22_do_break(void) | ||
43 | { | ||
44 | if (!stop_a_enabled) | ||
45 | return; | ||
46 | |||
47 | printk("\n"); | ||
48 | ArcEnterInteractiveMode(); | ||
49 | } | ||
50 | |||
51 | EXPORT_SYMBOL(ip22_do_break); | ||
52 | |||
53 | extern void ip22_be_init(void) __init; | 34 | extern void ip22_be_init(void) __init; |
54 | 35 | ||
55 | void __init plat_mem_setup(void) | 36 | void __init plat_mem_setup(void) |
diff --git a/arch/mips/sgi-ip32/ip32-irq.c b/arch/mips/sgi-ip32/ip32-irq.c index aab17ddd2f30..cab7cc22ab67 100644 --- a/arch/mips/sgi-ip32/ip32-irq.c +++ b/arch/mips/sgi-ip32/ip32-irq.c | |||
@@ -209,18 +209,18 @@ static unsigned long macepci_mask; | |||
209 | 209 | ||
210 | static void enable_macepci_irq(unsigned int irq) | 210 | static void enable_macepci_irq(unsigned int irq) |
211 | { | 211 | { |
212 | macepci_mask |= MACEPCI_CONTROL_INT(irq - 9); | 212 | macepci_mask |= MACEPCI_CONTROL_INT(irq - MACEPCI_SCSI0_IRQ); |
213 | mace->pci.control = macepci_mask; | 213 | mace->pci.control = macepci_mask; |
214 | crime_mask |= 1 << (irq - 1); | 214 | crime_mask |= 1 << (irq - CRIME_IRQ_BASE); |
215 | crime->imask = crime_mask; | 215 | crime->imask = crime_mask; |
216 | } | 216 | } |
217 | 217 | ||
218 | static void disable_macepci_irq(unsigned int irq) | 218 | static void disable_macepci_irq(unsigned int irq) |
219 | { | 219 | { |
220 | crime_mask &= ~(1 << (irq - 1)); | 220 | crime_mask &= ~(1 << (irq - CRIME_IRQ_BASE)); |
221 | crime->imask = crime_mask; | 221 | crime->imask = crime_mask; |
222 | flush_crime_bus(); | 222 | flush_crime_bus(); |
223 | macepci_mask &= ~MACEPCI_CONTROL_INT(irq - 9); | 223 | macepci_mask &= ~MACEPCI_CONTROL_INT(irq - MACEPCI_SCSI0_IRQ); |
224 | mace->pci.control = macepci_mask; | 224 | mace->pci.control = macepci_mask; |
225 | flush_mace_bus(); | 225 | flush_mace_bus(); |
226 | } | 226 | } |
@@ -299,7 +299,7 @@ static void enable_maceisa_irq(unsigned int irq) | |||
299 | pr_debug("crime_int %08x enabled\n", crime_int); | 299 | pr_debug("crime_int %08x enabled\n", crime_int); |
300 | crime_mask |= crime_int; | 300 | crime_mask |= crime_int; |
301 | crime->imask = crime_mask; | 301 | crime->imask = crime_mask; |
302 | maceisa_mask |= 1 << (irq - 33); | 302 | maceisa_mask |= 1 << (irq - MACEISA_AUDIO_SW_IRQ); |
303 | mace->perif.ctrl.imask = maceisa_mask; | 303 | mace->perif.ctrl.imask = maceisa_mask; |
304 | } | 304 | } |
305 | 305 | ||
@@ -307,7 +307,7 @@ static void disable_maceisa_irq(unsigned int irq) | |||
307 | { | 307 | { |
308 | unsigned int crime_int = 0; | 308 | unsigned int crime_int = 0; |
309 | 309 | ||
310 | maceisa_mask &= ~(1 << (irq - 33)); | 310 | maceisa_mask &= ~(1 << (irq - MACEISA_AUDIO_SW_IRQ)); |
311 | if (!(maceisa_mask & MACEISA_AUDIO_INT)) | 311 | if (!(maceisa_mask & MACEISA_AUDIO_INT)) |
312 | crime_int |= MACE_AUDIO_INT; | 312 | crime_int |= MACE_AUDIO_INT; |
313 | if (!(maceisa_mask & MACEISA_MISC_INT)) | 313 | if (!(maceisa_mask & MACEISA_MISC_INT)) |
@@ -331,7 +331,7 @@ static void mask_and_ack_maceisa_irq(unsigned int irq) | |||
331 | case MACEISA_SERIAL2_TDMAPR_IRQ: | 331 | case MACEISA_SERIAL2_TDMAPR_IRQ: |
332 | /* edge triggered */ | 332 | /* edge triggered */ |
333 | mace_int = mace->perif.ctrl.istat; | 333 | mace_int = mace->perif.ctrl.istat; |
334 | mace_int &= ~(1 << (irq - 33)); | 334 | mace_int &= ~(1 << (irq - MACEISA_AUDIO_SW_IRQ)); |
335 | mace->perif.ctrl.istat = mace_int; | 335 | mace->perif.ctrl.istat = mace_int; |
336 | break; | 336 | break; |
337 | } | 337 | } |
@@ -359,13 +359,17 @@ static struct irq_chip ip32_maceisa_interrupt = { | |||
359 | 359 | ||
360 | static void enable_mace_irq(unsigned int irq) | 360 | static void enable_mace_irq(unsigned int irq) |
361 | { | 361 | { |
362 | crime_mask |= 1 << (irq - 1); | 362 | unsigned int bit = irq - CRIME_IRQ_BASE; |
363 | |||
364 | crime_mask |= (1 << bit); | ||
363 | crime->imask = crime_mask; | 365 | crime->imask = crime_mask; |
364 | } | 366 | } |
365 | 367 | ||
366 | static void disable_mace_irq(unsigned int irq) | 368 | static void disable_mace_irq(unsigned int irq) |
367 | { | 369 | { |
368 | crime_mask &= ~(1 << (irq - 1)); | 370 | unsigned int bit = irq - CRIME_IRQ_BASE; |
371 | |||
372 | crime_mask &= ~(1 << bit); | ||
369 | crime->imask = crime_mask; | 373 | crime->imask = crime_mask; |
370 | flush_crime_bus(); | 374 | flush_crime_bus(); |
371 | } | 375 | } |
@@ -489,7 +493,7 @@ void __init arch_init_irq(void) | |||
489 | mace->perif.ctrl.imask = 0; | 493 | mace->perif.ctrl.imask = 0; |
490 | 494 | ||
491 | mips_cpu_irq_init(); | 495 | mips_cpu_irq_init(); |
492 | for (irq = MIPS_CPU_IRQ_BASE + 8; irq <= IP32_IRQ_MAX; irq++) { | 496 | for (irq = CRIME_IRQ_BASE; irq <= IP32_IRQ_MAX; irq++) { |
493 | switch (irq) { | 497 | switch (irq) { |
494 | case MACE_VID_IN1_IRQ ... MACE_PCI_BRIDGE_IRQ: | 498 | case MACE_VID_IN1_IRQ ... MACE_PCI_BRIDGE_IRQ: |
495 | set_irq_chip(irq, &ip32_mace_interrupt); | 499 | set_irq_chip(irq, &ip32_mace_interrupt); |
diff --git a/arch/mips/vr41xx/Kconfig b/arch/mips/vr41xx/Kconfig index eeb089f20c0d..559acc09c819 100644 --- a/arch/mips/vr41xx/Kconfig +++ b/arch/mips/vr41xx/Kconfig | |||
@@ -6,6 +6,7 @@ choice | |||
6 | config CASIO_E55 | 6 | config CASIO_E55 |
7 | bool "CASIO CASSIOPEIA E-10/15/55/65" | 7 | bool "CASIO CASSIOPEIA E-10/15/55/65" |
8 | select CEVT_R4K | 8 | select CEVT_R4K |
9 | select CSRC_R4K | ||
9 | select DMA_NONCOHERENT | 10 | select DMA_NONCOHERENT |
10 | select IRQ_CPU | 11 | select IRQ_CPU |
11 | select ISA | 12 | select ISA |
@@ -15,6 +16,7 @@ config CASIO_E55 | |||
15 | config IBM_WORKPAD | 16 | config IBM_WORKPAD |
16 | bool "IBM WorkPad z50" | 17 | bool "IBM WorkPad z50" |
17 | select CEVT_R4K | 18 | select CEVT_R4K |
19 | select CSRC_R4K | ||
18 | select DMA_NONCOHERENT | 20 | select DMA_NONCOHERENT |
19 | select IRQ_CPU | 21 | select IRQ_CPU |
20 | select ISA | 22 | select ISA |
@@ -24,6 +26,7 @@ config IBM_WORKPAD | |||
24 | config NEC_CMBVR4133 | 26 | config NEC_CMBVR4133 |
25 | bool "NEC CMB-VR4133" | 27 | bool "NEC CMB-VR4133" |
26 | select CEVT_R4K | 28 | select CEVT_R4K |
29 | select CSRC_R4K | ||
27 | select DMA_NONCOHERENT | 30 | select DMA_NONCOHERENT |
28 | select IRQ_CPU | 31 | select IRQ_CPU |
29 | select HW_HAS_PCI | 32 | select HW_HAS_PCI |
@@ -33,6 +36,7 @@ config NEC_CMBVR4133 | |||
33 | config TANBAC_TB022X | 36 | config TANBAC_TB022X |
34 | bool "TANBAC VR4131 multichip module and TANBAC VR4131DIMM" | 37 | bool "TANBAC VR4131 multichip module and TANBAC VR4131DIMM" |
35 | select CEVT_R4K | 38 | select CEVT_R4K |
39 | select CSRC_R4K | ||
36 | select DMA_NONCOHERENT | 40 | select DMA_NONCOHERENT |
37 | select IRQ_CPU | 41 | select IRQ_CPU |
38 | select HW_HAS_PCI | 42 | select HW_HAS_PCI |
@@ -48,6 +52,7 @@ config TANBAC_TB022X | |||
48 | config VICTOR_MPC30X | 52 | config VICTOR_MPC30X |
49 | bool "Victor MP-C303/304" | 53 | bool "Victor MP-C303/304" |
50 | select CEVT_R4K | 54 | select CEVT_R4K |
55 | select CSRC_R4K | ||
51 | select DMA_NONCOHERENT | 56 | select DMA_NONCOHERENT |
52 | select IRQ_CPU | 57 | select IRQ_CPU |
53 | select HW_HAS_PCI | 58 | select HW_HAS_PCI |
@@ -58,6 +63,7 @@ config VICTOR_MPC30X | |||
58 | config ZAO_CAPCELLA | 63 | config ZAO_CAPCELLA |
59 | bool "ZAO Networks Capcella" | 64 | bool "ZAO Networks Capcella" |
60 | select CEVT_R4K | 65 | select CEVT_R4K |
66 | select CSRC_R4K | ||
61 | select DMA_NONCOHERENT | 67 | select DMA_NONCOHERENT |
62 | select IRQ_CPU | 68 | select IRQ_CPU |
63 | select HW_HAS_PCI | 69 | select HW_HAS_PCI |
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 18f397ca05ef..232c298c933f 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -187,6 +187,11 @@ config FORCE_MAX_ZONEORDER | |||
187 | default "9" if PPC_64K_PAGES | 187 | default "9" if PPC_64K_PAGES |
188 | default "13" | 188 | default "13" |
189 | 189 | ||
190 | config HUGETLB_PAGE_SIZE_VARIABLE | ||
191 | bool | ||
192 | depends on HUGETLB_PAGE | ||
193 | default y | ||
194 | |||
190 | config MATH_EMULATION | 195 | config MATH_EMULATION |
191 | bool "Math emulation" | 196 | bool "Math emulation" |
192 | depends on 4xx || 8xx || E200 || PPC_MPC832x || E500 | 197 | depends on 4xx || 8xx || E200 || PPC_MPC832x || E500 |
diff --git a/arch/powerpc/boot/dts/mpc832x_mds.dts b/arch/powerpc/boot/dts/mpc832x_mds.dts index fcd333c391ec..c64f3037a13b 100644 --- a/arch/powerpc/boot/dts/mpc832x_mds.dts +++ b/arch/powerpc/boot/dts/mpc832x_mds.dts | |||
@@ -57,12 +57,19 @@ | |||
57 | }; | 57 | }; |
58 | 58 | ||
59 | i2c@3000 { | 59 | i2c@3000 { |
60 | #address-cells = <1>; | ||
61 | #size-cells = <0>; | ||
60 | device_type = "i2c"; | 62 | device_type = "i2c"; |
61 | compatible = "fsl-i2c"; | 63 | compatible = "fsl-i2c"; |
62 | reg = <3000 100>; | 64 | reg = <3000 100>; |
63 | interrupts = <e 8>; | 65 | interrupts = <e 8>; |
64 | interrupt-parent = < &ipic >; | 66 | interrupt-parent = < &ipic >; |
65 | dfsrr; | 67 | dfsrr; |
68 | |||
69 | rtc@68 { | ||
70 | compatible = "dallas,ds1374"; | ||
71 | reg = <68>; | ||
72 | }; | ||
66 | }; | 73 | }; |
67 | 74 | ||
68 | serial@4500 { | 75 | serial@4500 { |
@@ -104,7 +111,7 @@ | |||
104 | reg = <700 100>; | 111 | reg = <700 100>; |
105 | device_type = "ipic"; | 112 | device_type = "ipic"; |
106 | }; | 113 | }; |
107 | 114 | ||
108 | par_io@1400 { | 115 | par_io@1400 { |
109 | reg = <1400 100>; | 116 | reg = <1400 100>; |
110 | device_type = "par_io"; | 117 | device_type = "par_io"; |
@@ -117,7 +124,6 @@ | |||
117 | 3 5 1 0 2 0 /* MDC */ | 124 | 3 5 1 0 2 0 /* MDC */ |
118 | 0 d 2 0 1 0 /* RX_CLK (CLK9) */ | 125 | 0 d 2 0 1 0 /* RX_CLK (CLK9) */ |
119 | 3 18 2 0 1 0 /* TX_CLK (CLK10) */ | 126 | 3 18 2 0 1 0 /* TX_CLK (CLK10) */ |
120 | 1 1 1 0 1 0 /* TxD1 */ | ||
121 | 1 0 1 0 1 0 /* TxD0 */ | 127 | 1 0 1 0 1 0 /* TxD0 */ |
122 | 1 1 1 0 1 0 /* TxD1 */ | 128 | 1 1 1 0 1 0 /* TxD1 */ |
123 | 1 2 1 0 1 0 /* TxD2 */ | 129 | 1 2 1 0 1 0 /* TxD2 */ |
@@ -165,11 +171,11 @@ | |||
165 | reg = <e0100000 480>; | 171 | reg = <e0100000 480>; |
166 | brg-frequency = <0>; | 172 | brg-frequency = <0>; |
167 | bus-frequency = <BCD3D80>; | 173 | bus-frequency = <BCD3D80>; |
168 | 174 | ||
169 | muram@10000 { | 175 | muram@10000 { |
170 | device_type = "muram"; | 176 | device_type = "muram"; |
171 | ranges = <0 00010000 00004000>; | 177 | ranges = <0 00010000 00004000>; |
172 | 178 | ||
173 | data-only@0 { | 179 | data-only@0 { |
174 | reg = <0 4000>; | 180 | reg = <0 4000>; |
175 | }; | 181 | }; |
@@ -228,7 +234,7 @@ | |||
228 | compatible = "ucc_geth"; | 234 | compatible = "ucc_geth"; |
229 | model = "UCC"; | 235 | model = "UCC"; |
230 | device-id = <4>; | 236 | device-id = <4>; |
231 | reg = <3000 200>; | 237 | reg = <3200 200>; |
232 | interrupts = <23>; | 238 | interrupts = <23>; |
233 | interrupt-parent = < &qeic >; | 239 | interrupt-parent = < &qeic >; |
234 | /* | 240 | /* |
diff --git a/arch/powerpc/boot/dts/mpc834x_mds.dts b/arch/powerpc/boot/dts/mpc834x_mds.dts index e5a84ef9f4b0..49363f89cb71 100644 --- a/arch/powerpc/boot/dts/mpc834x_mds.dts +++ b/arch/powerpc/boot/dts/mpc834x_mds.dts | |||
@@ -57,15 +57,24 @@ | |||
57 | }; | 57 | }; |
58 | 58 | ||
59 | i2c@3000 { | 59 | i2c@3000 { |
60 | #address-cells = <1>; | ||
61 | #size-cells = <0>; | ||
60 | device_type = "i2c"; | 62 | device_type = "i2c"; |
61 | compatible = "fsl-i2c"; | 63 | compatible = "fsl-i2c"; |
62 | reg = <3000 100>; | 64 | reg = <3000 100>; |
63 | interrupts = <e 8>; | 65 | interrupts = <e 8>; |
64 | interrupt-parent = < &ipic >; | 66 | interrupt-parent = < &ipic >; |
65 | dfsrr; | 67 | dfsrr; |
68 | |||
69 | rtc@68 { | ||
70 | compatible = "dallas,ds1374"; | ||
71 | reg = <68>; | ||
72 | }; | ||
66 | }; | 73 | }; |
67 | 74 | ||
68 | i2c@3100 { | 75 | i2c@3100 { |
76 | #address-cells = <1>; | ||
77 | #size-cells = <0>; | ||
69 | device_type = "i2c"; | 78 | device_type = "i2c"; |
70 | compatible = "fsl-i2c"; | 79 | compatible = "fsl-i2c"; |
71 | reg = <3100 100>; | 80 | reg = <3100 100>; |
diff --git a/arch/powerpc/boot/dts/mpc836x_mds.dts b/arch/powerpc/boot/dts/mpc836x_mds.dts index fbd1573c348b..0b2d2b588daa 100644 --- a/arch/powerpc/boot/dts/mpc836x_mds.dts +++ b/arch/powerpc/boot/dts/mpc836x_mds.dts | |||
@@ -62,15 +62,24 @@ | |||
62 | }; | 62 | }; |
63 | 63 | ||
64 | i2c@3000 { | 64 | i2c@3000 { |
65 | #address-cells = <1>; | ||
66 | #size-cells = <0>; | ||
65 | device_type = "i2c"; | 67 | device_type = "i2c"; |
66 | compatible = "fsl-i2c"; | 68 | compatible = "fsl-i2c"; |
67 | reg = <3000 100>; | 69 | reg = <3000 100>; |
68 | interrupts = <e 8>; | 70 | interrupts = <e 8>; |
69 | interrupt-parent = < &ipic >; | 71 | interrupt-parent = < &ipic >; |
70 | dfsrr; | 72 | dfsrr; |
73 | |||
74 | rtc@68 { | ||
75 | compatible = "dallas,ds1374"; | ||
76 | reg = <68>; | ||
77 | }; | ||
71 | }; | 78 | }; |
72 | 79 | ||
73 | i2c@3100 { | 80 | i2c@3100 { |
81 | #address-cells = <1>; | ||
82 | #size-cells = <0>; | ||
74 | device_type = "i2c"; | 83 | device_type = "i2c"; |
75 | compatible = "fsl-i2c"; | 84 | compatible = "fsl-i2c"; |
76 | reg = <3100 100>; | 85 | reg = <3100 100>; |
diff --git a/arch/powerpc/boot/dts/mpc8544ds.dts b/arch/powerpc/boot/dts/mpc8544ds.dts index 3f9d15cf13e0..6c608de1fc1b 100644 --- a/arch/powerpc/boot/dts/mpc8544ds.dts +++ b/arch/powerpc/boot/dts/mpc8544ds.dts | |||
@@ -272,24 +272,24 @@ | |||
272 | clock-frequency = <1fca055>; | 272 | clock-frequency = <1fca055>; |
273 | interrupt-parent = <&mpic>; | 273 | interrupt-parent = <&mpic>; |
274 | interrupts = <1b 2>; | 274 | interrupts = <1b 2>; |
275 | interrupt-map-mask = <fb00 0 0 0>; | 275 | interrupt-map-mask = <ff00 0 0 1>; |
276 | interrupt-map = < | 276 | interrupt-map = < |
277 | // IDSEL 0x1c USB | 277 | // IDSEL 0x1c USB |
278 | e000 0 0 0 &i8259 c 2 | 278 | e000 0 0 1 &i8259 c 2 |
279 | e100 0 0 0 &i8259 9 2 | 279 | e100 0 0 1 &i8259 9 2 |
280 | e200 0 0 0 &i8259 a 2 | 280 | e200 0 0 1 &i8259 a 2 |
281 | e300 0 0 0 &i8259 b 2 | 281 | e300 0 0 1 &i8259 b 2 |
282 | 282 | ||
283 | // IDSEL 0x1d Audio | 283 | // IDSEL 0x1d Audio |
284 | e800 0 0 0 &i8259 6 2 | 284 | e800 0 0 1 &i8259 6 2 |
285 | 285 | ||
286 | // IDSEL 0x1e Legacy | 286 | // IDSEL 0x1e Legacy |
287 | f000 0 0 0 &i8259 7 2 | 287 | f000 0 0 1 &i8259 7 2 |
288 | f100 0 0 0 &i8259 7 2 | 288 | f100 0 0 1 &i8259 7 2 |
289 | 289 | ||
290 | // IDSEL 0x1f IDE/SATA | 290 | // IDSEL 0x1f IDE/SATA |
291 | f800 0 0 0 &i8259 e 2 | 291 | f800 0 0 1 &i8259 e 2 |
292 | f900 0 0 0 &i8259 5 2 | 292 | f900 0 0 1 &i8259 5 2 |
293 | >; | 293 | >; |
294 | 294 | ||
295 | pcie@0 { | 295 | pcie@0 { |
diff --git a/arch/powerpc/boot/dts/mpc8572ds.dts b/arch/powerpc/boot/dts/mpc8572ds.dts index d638deec7652..0eb44fb9647d 100644 --- a/arch/powerpc/boot/dts/mpc8572ds.dts +++ b/arch/powerpc/boot/dts/mpc8572ds.dts | |||
@@ -219,36 +219,120 @@ | |||
219 | clock-frequency = <1fca055>; | 219 | clock-frequency = <1fca055>; |
220 | interrupt-parent = <&mpic>; | 220 | interrupt-parent = <&mpic>; |
221 | interrupts = <18 2>; | 221 | interrupts = <18 2>; |
222 | interrupt-map-mask = <fb00 0 0 0>; | 222 | interrupt-map-mask = <ff00 0 0 7>; |
223 | interrupt-map = < | 223 | interrupt-map = < |
224 | /* IDSEL 0x11 - PCI slot 1 */ | 224 | /* IDSEL 0x11 func 0 - PCI slot 1 */ |
225 | 8800 0 0 1 &mpic 2 1 | 225 | 8800 0 0 1 &mpic 2 1 |
226 | 8800 0 0 2 &mpic 3 1 | 226 | 8800 0 0 2 &mpic 3 1 |
227 | 8800 0 0 3 &mpic 4 1 | 227 | 8800 0 0 3 &mpic 4 1 |
228 | 8800 0 0 4 &mpic 1 1 | 228 | 8800 0 0 4 &mpic 1 1 |
229 | 229 | ||
230 | /* IDSEL 0x12 - PCI slot 2 */ | 230 | /* IDSEL 0x11 func 1 - PCI slot 1 */ |
231 | 8900 0 0 1 &mpic 2 1 | ||
232 | 8900 0 0 2 &mpic 3 1 | ||
233 | 8900 0 0 3 &mpic 4 1 | ||
234 | 8900 0 0 4 &mpic 1 1 | ||
235 | |||
236 | /* IDSEL 0x11 func 2 - PCI slot 1 */ | ||
237 | 8a00 0 0 1 &mpic 2 1 | ||
238 | 8a00 0 0 2 &mpic 3 1 | ||
239 | 8a00 0 0 3 &mpic 4 1 | ||
240 | 8a00 0 0 4 &mpic 1 1 | ||
241 | |||
242 | /* IDSEL 0x11 func 3 - PCI slot 1 */ | ||
243 | 8b00 0 0 1 &mpic 2 1 | ||
244 | 8b00 0 0 2 &mpic 3 1 | ||
245 | 8b00 0 0 3 &mpic 4 1 | ||
246 | 8b00 0 0 4 &mpic 1 1 | ||
247 | |||
248 | /* IDSEL 0x11 func 4 - PCI slot 1 */ | ||
249 | 8c00 0 0 1 &mpic 2 1 | ||
250 | 8c00 0 0 2 &mpic 3 1 | ||
251 | 8c00 0 0 3 &mpic 4 1 | ||
252 | 8c00 0 0 4 &mpic 1 1 | ||
253 | |||
254 | /* IDSEL 0x11 func 5 - PCI slot 1 */ | ||
255 | 8d00 0 0 1 &mpic 2 1 | ||
256 | 8d00 0 0 2 &mpic 3 1 | ||
257 | 8d00 0 0 3 &mpic 4 1 | ||
258 | 8d00 0 0 4 &mpic 1 1 | ||
259 | |||
260 | /* IDSEL 0x11 func 6 - PCI slot 1 */ | ||
261 | 8e00 0 0 1 &mpic 2 1 | ||
262 | 8e00 0 0 2 &mpic 3 1 | ||
263 | 8e00 0 0 3 &mpic 4 1 | ||
264 | 8e00 0 0 4 &mpic 1 1 | ||
265 | |||
266 | /* IDSEL 0x11 func 7 - PCI slot 1 */ | ||
267 | 8f00 0 0 1 &mpic 2 1 | ||
268 | 8f00 0 0 2 &mpic 3 1 | ||
269 | 8f00 0 0 3 &mpic 4 1 | ||
270 | 8f00 0 0 4 &mpic 1 1 | ||
271 | |||
272 | /* IDSEL 0x12 func 0 - PCI slot 2 */ | ||
231 | 9000 0 0 1 &mpic 3 1 | 273 | 9000 0 0 1 &mpic 3 1 |
232 | 9000 0 0 2 &mpic 4 1 | 274 | 9000 0 0 2 &mpic 4 1 |
233 | 9000 0 0 3 &mpic 1 1 | 275 | 9000 0 0 3 &mpic 1 1 |
234 | 9000 0 0 4 &mpic 2 1 | 276 | 9000 0 0 4 &mpic 2 1 |
235 | 277 | ||
278 | /* IDSEL 0x12 func 1 - PCI slot 2 */ | ||
279 | 9100 0 0 1 &mpic 3 1 | ||
280 | 9100 0 0 2 &mpic 4 1 | ||
281 | 9100 0 0 3 &mpic 1 1 | ||
282 | 9100 0 0 4 &mpic 2 1 | ||
283 | |||
284 | /* IDSEL 0x12 func 2 - PCI slot 2 */ | ||
285 | 9200 0 0 1 &mpic 3 1 | ||
286 | 9200 0 0 2 &mpic 4 1 | ||
287 | 9200 0 0 3 &mpic 1 1 | ||
288 | 9200 0 0 4 &mpic 2 1 | ||
289 | |||
290 | /* IDSEL 0x12 func 3 - PCI slot 2 */ | ||
291 | 9300 0 0 1 &mpic 3 1 | ||
292 | 9300 0 0 2 &mpic 4 1 | ||
293 | 9300 0 0 3 &mpic 1 1 | ||
294 | 9300 0 0 4 &mpic 2 1 | ||
295 | |||
296 | /* IDSEL 0x12 func 4 - PCI slot 2 */ | ||
297 | 9400 0 0 1 &mpic 3 1 | ||
298 | 9400 0 0 2 &mpic 4 1 | ||
299 | 9400 0 0 3 &mpic 1 1 | ||
300 | 9400 0 0 4 &mpic 2 1 | ||
301 | |||
302 | /* IDSEL 0x12 func 5 - PCI slot 2 */ | ||
303 | 9500 0 0 1 &mpic 3 1 | ||
304 | 9500 0 0 2 &mpic 4 1 | ||
305 | 9500 0 0 3 &mpic 1 1 | ||
306 | 9500 0 0 4 &mpic 2 1 | ||
307 | |||
308 | /* IDSEL 0x12 func 6 - PCI slot 2 */ | ||
309 | 9600 0 0 1 &mpic 3 1 | ||
310 | 9600 0 0 2 &mpic 4 1 | ||
311 | 9600 0 0 3 &mpic 1 1 | ||
312 | 9600 0 0 4 &mpic 2 1 | ||
313 | |||
314 | /* IDSEL 0x12 func 7 - PCI slot 2 */ | ||
315 | 9700 0 0 1 &mpic 3 1 | ||
316 | 9700 0 0 2 &mpic 4 1 | ||
317 | 9700 0 0 3 &mpic 1 1 | ||
318 | 9700 0 0 4 &mpic 2 1 | ||
319 | |||
236 | // IDSEL 0x1c USB | 320 | // IDSEL 0x1c USB |
237 | e000 0 0 0 &i8259 c 2 | 321 | e000 0 0 1 &i8259 c 2 |
238 | e100 0 0 0 &i8259 9 2 | 322 | e100 0 0 1 &i8259 9 2 |
239 | e200 0 0 0 &i8259 a 2 | 323 | e200 0 0 1 &i8259 a 2 |
240 | e300 0 0 0 &i8259 b 2 | 324 | e300 0 0 1 &i8259 b 2 |
241 | 325 | ||
242 | // IDSEL 0x1d Audio | 326 | // IDSEL 0x1d Audio |
243 | e800 0 0 0 &i8259 6 2 | 327 | e800 0 0 1 &i8259 6 2 |
244 | 328 | ||
245 | // IDSEL 0x1e Legacy | 329 | // IDSEL 0x1e Legacy |
246 | f000 0 0 0 &i8259 7 2 | 330 | f000 0 0 1 &i8259 7 2 |
247 | f100 0 0 0 &i8259 7 2 | 331 | f100 0 0 1 &i8259 7 2 |
248 | 332 | ||
249 | // IDSEL 0x1f IDE/SATA | 333 | // IDSEL 0x1f IDE/SATA |
250 | f800 0 0 0 &i8259 e 2 | 334 | f800 0 0 1 &i8259 e 2 |
251 | f900 0 0 0 &i8259 5 2 | 335 | f900 0 0 1 &i8259 5 2 |
252 | 336 | ||
253 | >; | 337 | >; |
254 | 338 | ||
diff --git a/arch/powerpc/boot/dts/mpc8641_hpcn.dts b/arch/powerpc/boot/dts/mpc8641_hpcn.dts index 367765937a06..abb26dc42558 100644 --- a/arch/powerpc/boot/dts/mpc8641_hpcn.dts +++ b/arch/powerpc/boot/dts/mpc8641_hpcn.dts | |||
@@ -235,36 +235,120 @@ | |||
235 | clock-frequency = <1fca055>; | 235 | clock-frequency = <1fca055>; |
236 | interrupt-parent = <&mpic>; | 236 | interrupt-parent = <&mpic>; |
237 | interrupts = <18 2>; | 237 | interrupts = <18 2>; |
238 | interrupt-map-mask = <fb00 0 0 0>; | 238 | interrupt-map-mask = <ff00 0 0 7>; |
239 | interrupt-map = < | 239 | interrupt-map = < |
240 | /* IDSEL 0x11 */ | 240 | /* IDSEL 0x11 func 0 - PCI slot 1 */ |
241 | 8800 0 0 1 &i8259 9 2 | 241 | 8800 0 0 1 &mpic 2 1 |
242 | 8800 0 0 2 &i8259 a 2 | 242 | 8800 0 0 2 &mpic 3 1 |
243 | 8800 0 0 3 &i8259 b 2 | 243 | 8800 0 0 3 &mpic 4 1 |
244 | 8800 0 0 4 &i8259 c 2 | 244 | 8800 0 0 4 &mpic 1 1 |
245 | 245 | ||
246 | /* IDSEL 0x12 */ | 246 | /* IDSEL 0x11 func 1 - PCI slot 1 */ |
247 | 9000 0 0 1 &i8259 a 2 | 247 | 8900 0 0 1 &mpic 2 1 |
248 | 9000 0 0 2 &i8259 b 2 | 248 | 8900 0 0 2 &mpic 3 1 |
249 | 9000 0 0 3 &i8259 c 2 | 249 | 8900 0 0 3 &mpic 4 1 |
250 | 9000 0 0 4 &i8259 9 2 | 250 | 8900 0 0 4 &mpic 1 1 |
251 | |||
252 | /* IDSEL 0x11 func 2 - PCI slot 1 */ | ||
253 | 8a00 0 0 1 &mpic 2 1 | ||
254 | 8a00 0 0 2 &mpic 3 1 | ||
255 | 8a00 0 0 3 &mpic 4 1 | ||
256 | 8a00 0 0 4 &mpic 1 1 | ||
257 | |||
258 | /* IDSEL 0x11 func 3 - PCI slot 1 */ | ||
259 | 8b00 0 0 1 &mpic 2 1 | ||
260 | 8b00 0 0 2 &mpic 3 1 | ||
261 | 8b00 0 0 3 &mpic 4 1 | ||
262 | 8b00 0 0 4 &mpic 1 1 | ||
263 | |||
264 | /* IDSEL 0x11 func 4 - PCI slot 1 */ | ||
265 | 8c00 0 0 1 &mpic 2 1 | ||
266 | 8c00 0 0 2 &mpic 3 1 | ||
267 | 8c00 0 0 3 &mpic 4 1 | ||
268 | 8c00 0 0 4 &mpic 1 1 | ||
269 | |||
270 | /* IDSEL 0x11 func 5 - PCI slot 1 */ | ||
271 | 8d00 0 0 1 &mpic 2 1 | ||
272 | 8d00 0 0 2 &mpic 3 1 | ||
273 | 8d00 0 0 3 &mpic 4 1 | ||
274 | 8d00 0 0 4 &mpic 1 1 | ||
275 | |||
276 | /* IDSEL 0x11 func 6 - PCI slot 1 */ | ||
277 | 8e00 0 0 1 &mpic 2 1 | ||
278 | 8e00 0 0 2 &mpic 3 1 | ||
279 | 8e00 0 0 3 &mpic 4 1 | ||
280 | 8e00 0 0 4 &mpic 1 1 | ||
281 | |||
282 | /* IDSEL 0x11 func 7 - PCI slot 1 */ | ||
283 | 8f00 0 0 1 &mpic 2 1 | ||
284 | 8f00 0 0 2 &mpic 3 1 | ||
285 | 8f00 0 0 3 &mpic 4 1 | ||
286 | 8f00 0 0 4 &mpic 1 1 | ||
287 | |||
288 | /* IDSEL 0x12 func 0 - PCI slot 2 */ | ||
289 | 9000 0 0 1 &mpic 3 1 | ||
290 | 9000 0 0 2 &mpic 4 1 | ||
291 | 9000 0 0 3 &mpic 1 1 | ||
292 | 9000 0 0 4 &mpic 2 1 | ||
293 | |||
294 | /* IDSEL 0x12 func 1 - PCI slot 2 */ | ||
295 | 9100 0 0 1 &mpic 3 1 | ||
296 | 9100 0 0 2 &mpic 4 1 | ||
297 | 9100 0 0 3 &mpic 1 1 | ||
298 | 9100 0 0 4 &mpic 2 1 | ||
299 | |||
300 | /* IDSEL 0x12 func 2 - PCI slot 2 */ | ||
301 | 9200 0 0 1 &mpic 3 1 | ||
302 | 9200 0 0 2 &mpic 4 1 | ||
303 | 9200 0 0 3 &mpic 1 1 | ||
304 | 9200 0 0 4 &mpic 2 1 | ||
305 | |||
306 | /* IDSEL 0x12 func 3 - PCI slot 2 */ | ||
307 | 9300 0 0 1 &mpic 3 1 | ||
308 | 9300 0 0 2 &mpic 4 1 | ||
309 | 9300 0 0 3 &mpic 1 1 | ||
310 | 9300 0 0 4 &mpic 2 1 | ||
311 | |||
312 | /* IDSEL 0x12 func 4 - PCI slot 2 */ | ||
313 | 9400 0 0 1 &mpic 3 1 | ||
314 | 9400 0 0 2 &mpic 4 1 | ||
315 | 9400 0 0 3 &mpic 1 1 | ||
316 | 9400 0 0 4 &mpic 2 1 | ||
317 | |||
318 | /* IDSEL 0x12 func 5 - PCI slot 2 */ | ||
319 | 9500 0 0 1 &mpic 3 1 | ||
320 | 9500 0 0 2 &mpic 4 1 | ||
321 | 9500 0 0 3 &mpic 1 1 | ||
322 | 9500 0 0 4 &mpic 2 1 | ||
323 | |||
324 | /* IDSEL 0x12 func 6 - PCI slot 2 */ | ||
325 | 9600 0 0 1 &mpic 3 1 | ||
326 | 9600 0 0 2 &mpic 4 1 | ||
327 | 9600 0 0 3 &mpic 1 1 | ||
328 | 9600 0 0 4 &mpic 2 1 | ||
329 | |||
330 | /* IDSEL 0x12 func 7 - PCI slot 2 */ | ||
331 | 9700 0 0 1 &mpic 3 1 | ||
332 | 9700 0 0 2 &mpic 4 1 | ||
333 | 9700 0 0 3 &mpic 1 1 | ||
334 | 9700 0 0 4 &mpic 2 1 | ||
251 | 335 | ||
252 | // IDSEL 0x1c USB | 336 | // IDSEL 0x1c USB |
253 | e000 0 0 0 &i8259 c 2 | 337 | e000 0 0 1 &i8259 c 2 |
254 | e100 0 0 0 &i8259 9 2 | 338 | e100 0 0 1 &i8259 9 2 |
255 | e200 0 0 0 &i8259 a 2 | 339 | e200 0 0 1 &i8259 a 2 |
256 | e300 0 0 0 &i8259 b 2 | 340 | e300 0 0 1 &i8259 b 2 |
257 | 341 | ||
258 | // IDSEL 0x1d Audio | 342 | // IDSEL 0x1d Audio |
259 | e800 0 0 0 &i8259 6 2 | 343 | e800 0 0 1 &i8259 6 2 |
260 | 344 | ||
261 | // IDSEL 0x1e Legacy | 345 | // IDSEL 0x1e Legacy |
262 | f000 0 0 0 &i8259 7 2 | 346 | f000 0 0 1 &i8259 7 2 |
263 | f100 0 0 0 &i8259 7 2 | 347 | f100 0 0 1 &i8259 7 2 |
264 | 348 | ||
265 | // IDSEL 0x1f IDE/SATA | 349 | // IDSEL 0x1f IDE/SATA |
266 | f800 0 0 0 &i8259 e 2 | 350 | f800 0 0 1 &i8259 e 2 |
267 | f900 0 0 0 &i8259 5 2 | 351 | f900 0 0 1 &i8259 5 2 |
268 | >; | 352 | >; |
269 | 353 | ||
270 | pcie@0 { | 354 | pcie@0 { |
diff --git a/arch/powerpc/configs/mpc832x_mds_defconfig b/arch/powerpc/configs/mpc832x_mds_defconfig index dd68d1818d6b..e069018276ca 100644 --- a/arch/powerpc/configs/mpc832x_mds_defconfig +++ b/arch/powerpc/configs/mpc832x_mds_defconfig | |||
@@ -774,7 +774,53 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
774 | # CONFIG_NEW_LEDS is not set | 774 | # CONFIG_NEW_LEDS is not set |
775 | # CONFIG_INFINIBAND is not set | 775 | # CONFIG_INFINIBAND is not set |
776 | # CONFIG_EDAC is not set | 776 | # CONFIG_EDAC is not set |
777 | # CONFIG_RTC_CLASS is not set | 777 | CONFIG_RTC_LIB=y |
778 | CONFIG_RTC_CLASS=y | ||
779 | CONFIG_RTC_HCTOSYS=y | ||
780 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
781 | # CONFIG_RTC_DEBUG is not set | ||
782 | |||
783 | # | ||
784 | # RTC interfaces | ||
785 | # | ||
786 | CONFIG_RTC_INTF_SYSFS=y | ||
787 | CONFIG_RTC_INTF_PROC=y | ||
788 | CONFIG_RTC_INTF_DEV=y | ||
789 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
790 | # CONFIG_RTC_DRV_TEST is not set | ||
791 | |||
792 | # | ||
793 | # I2C RTC drivers | ||
794 | # | ||
795 | # CONFIG_RTC_DRV_DS1307 is not set | ||
796 | CONFIG_RTC_DRV_DS1374=y | ||
797 | # CONFIG_RTC_DRV_DS1672 is not set | ||
798 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
799 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
800 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
801 | # CONFIG_RTC_DRV_X1205 is not set | ||
802 | # CONFIG_RTC_DRV_PCF8563 is not set | ||
803 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
804 | # CONFIG_RTC_DRV_M41T80 is not set | ||
805 | |||
806 | # | ||
807 | # SPI RTC drivers | ||
808 | # | ||
809 | |||
810 | # | ||
811 | # Platform RTC drivers | ||
812 | # | ||
813 | # CONFIG_RTC_DRV_CMOS is not set | ||
814 | # CONFIG_RTC_DRV_DS1553 is not set | ||
815 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
816 | # CONFIG_RTC_DRV_DS1742 is not set | ||
817 | # CONFIG_RTC_DRV_M48T86 is not set | ||
818 | # CONFIG_RTC_DRV_M48T59 is not set | ||
819 | # CONFIG_RTC_DRV_V3020 is not set | ||
820 | |||
821 | # | ||
822 | # on-CPU RTC drivers | ||
823 | # | ||
778 | 824 | ||
779 | # | 825 | # |
780 | # DMA Engine support | 826 | # DMA Engine support |
diff --git a/arch/powerpc/configs/mpc832x_rdb_defconfig b/arch/powerpc/configs/mpc832x_rdb_defconfig index 4f391028c79c..7a5b13f4140f 100644 --- a/arch/powerpc/configs/mpc832x_rdb_defconfig +++ b/arch/powerpc/configs/mpc832x_rdb_defconfig | |||
@@ -685,8 +685,21 @@ CONFIG_I2C_MPC=y | |||
685 | # | 685 | # |
686 | # SPI support | 686 | # SPI support |
687 | # | 687 | # |
688 | # CONFIG_SPI is not set | 688 | CONFIG_SPI=y |
689 | # CONFIG_SPI_MASTER is not set | 689 | CONFIG_SPI_MASTER=y |
690 | |||
691 | # | ||
692 | # SPI Master Controller Drivers | ||
693 | # | ||
694 | CONFIG_SPI_BITBANG=y | ||
695 | CONFIG_SPI_MPC83xx=y | ||
696 | |||
697 | # | ||
698 | # SPI Protocol Masters | ||
699 | # | ||
700 | # CONFIG_SPI_AT25 is not set | ||
701 | # CONFIG_SPI_SPIDEV is not set | ||
702 | # CONFIG_SPI_TLE62X0 is not set | ||
690 | # CONFIG_W1 is not set | 703 | # CONFIG_W1 is not set |
691 | # CONFIG_POWER_SUPPLY is not set | 704 | # CONFIG_POWER_SUPPLY is not set |
692 | CONFIG_HWMON=y | 705 | CONFIG_HWMON=y |
@@ -710,6 +723,7 @@ CONFIG_HWMON=y | |||
710 | # CONFIG_SENSORS_GL520SM is not set | 723 | # CONFIG_SENSORS_GL520SM is not set |
711 | # CONFIG_SENSORS_IT87 is not set | 724 | # CONFIG_SENSORS_IT87 is not set |
712 | # CONFIG_SENSORS_LM63 is not set | 725 | # CONFIG_SENSORS_LM63 is not set |
726 | # CONFIG_SENSORS_LM70 is not set | ||
713 | # CONFIG_SENSORS_LM75 is not set | 727 | # CONFIG_SENSORS_LM75 is not set |
714 | # CONFIG_SENSORS_LM77 is not set | 728 | # CONFIG_SENSORS_LM77 is not set |
715 | # CONFIG_SENSORS_LM78 is not set | 729 | # CONFIG_SENSORS_LM78 is not set |
@@ -896,7 +910,24 @@ CONFIG_USB_MON=y | |||
896 | # USB Gadget Support | 910 | # USB Gadget Support |
897 | # | 911 | # |
898 | # CONFIG_USB_GADGET is not set | 912 | # CONFIG_USB_GADGET is not set |
899 | # CONFIG_MMC is not set | 913 | CONFIG_MMC=y |
914 | # CONFIG_MMC_DEBUG is not set | ||
915 | # CONFIG_MMC_UNSAFE_RESUME is not set | ||
916 | |||
917 | # | ||
918 | # MMC/SD Card Drivers | ||
919 | # | ||
920 | CONFIG_MMC_BLOCK=y | ||
921 | CONFIG_MMC_BLOCK_BOUNCE=y | ||
922 | # CONFIG_SDIO_UART is not set | ||
923 | |||
924 | # | ||
925 | # MMC/SD Host Controller Drivers | ||
926 | # | ||
927 | # CONFIG_MMC_SDHCI is not set | ||
928 | # CONFIG_MMC_WBSD is not set | ||
929 | # CONFIG_MMC_TIFM_SD is not set | ||
930 | CONFIG_MMC_SPI=y | ||
900 | # CONFIG_NEW_LEDS is not set | 931 | # CONFIG_NEW_LEDS is not set |
901 | # CONFIG_INFINIBAND is not set | 932 | # CONFIG_INFINIBAND is not set |
902 | # CONFIG_EDAC is not set | 933 | # CONFIG_EDAC is not set |
@@ -1101,9 +1132,9 @@ CONFIG_UCC=y | |||
1101 | CONFIG_BITREVERSE=y | 1132 | CONFIG_BITREVERSE=y |
1102 | # CONFIG_CRC_CCITT is not set | 1133 | # CONFIG_CRC_CCITT is not set |
1103 | # CONFIG_CRC16 is not set | 1134 | # CONFIG_CRC16 is not set |
1104 | # CONFIG_CRC_ITU_T is not set | 1135 | CONFIG_CRC_ITU_T=y |
1105 | CONFIG_CRC32=y | 1136 | CONFIG_CRC32=y |
1106 | # CONFIG_CRC7 is not set | 1137 | CONFIG_CRC7=y |
1107 | # CONFIG_LIBCRC32C is not set | 1138 | # CONFIG_LIBCRC32C is not set |
1108 | CONFIG_PLIST=y | 1139 | CONFIG_PLIST=y |
1109 | CONFIG_HAS_IOMEM=y | 1140 | CONFIG_HAS_IOMEM=y |
diff --git a/arch/powerpc/configs/mpc834x_itx_defconfig b/arch/powerpc/configs/mpc834x_itx_defconfig index eb28dd85cb2b..ba512d13f3a3 100644 --- a/arch/powerpc/configs/mpc834x_itx_defconfig +++ b/arch/powerpc/configs/mpc834x_itx_defconfig | |||
@@ -867,7 +867,7 @@ CONFIG_USB_EHCI_ROOT_HUB_TT=y | |||
867 | CONFIG_USB_EHCI_FSL=y | 867 | CONFIG_USB_EHCI_FSL=y |
868 | # CONFIG_USB_ISP116X_HCD is not set | 868 | # CONFIG_USB_ISP116X_HCD is not set |
869 | # CONFIG_USB_OHCI_HCD is not set | 869 | # CONFIG_USB_OHCI_HCD is not set |
870 | # CONFIG_USB_UHCI_HCD is not set | 870 | CONFIG_USB_UHCI_HCD=y |
871 | # CONFIG_USB_SL811_HCD is not set | 871 | # CONFIG_USB_SL811_HCD is not set |
872 | # CONFIG_USB_R8A66597_HCD is not set | 872 | # CONFIG_USB_R8A66597_HCD is not set |
873 | 873 | ||
diff --git a/arch/powerpc/configs/mpc834x_itxgp_defconfig b/arch/powerpc/configs/mpc834x_itxgp_defconfig index 22b95462c913..9faa948c22ad 100644 --- a/arch/powerpc/configs/mpc834x_itxgp_defconfig +++ b/arch/powerpc/configs/mpc834x_itxgp_defconfig | |||
@@ -760,15 +760,101 @@ CONFIG_USB_SUPPORT=y | |||
760 | CONFIG_USB_ARCH_HAS_HCD=y | 760 | CONFIG_USB_ARCH_HAS_HCD=y |
761 | CONFIG_USB_ARCH_HAS_OHCI=y | 761 | CONFIG_USB_ARCH_HAS_OHCI=y |
762 | CONFIG_USB_ARCH_HAS_EHCI=y | 762 | CONFIG_USB_ARCH_HAS_EHCI=y |
763 | # CONFIG_USB is not set | 763 | CONFIG_USB=y |
764 | # CONFIG_USB_DEBUG is not set | ||
765 | |||
766 | # | ||
767 | # Miscellaneous USB options | ||
768 | # | ||
769 | # CONFIG_USB_DEVICEFS is not set | ||
770 | CONFIG_USB_DEVICE_CLASS=y | ||
771 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
772 | # CONFIG_USB_OTG is not set | ||
773 | |||
774 | # | ||
775 | # USB Host Controller Drivers | ||
776 | # | ||
777 | CONFIG_USB_EHCI_HCD=y | ||
778 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | ||
764 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 779 | CONFIG_USB_EHCI_ROOT_HUB_TT=y |
780 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | ||
765 | CONFIG_USB_EHCI_FSL=y | 781 | CONFIG_USB_EHCI_FSL=y |
782 | # CONFIG_USB_ISP116X_HCD is not set | ||
783 | # CONFIG_USB_OHCI_HCD is not set | ||
784 | CONFIG_USB_UHCI_HCD=y | ||
785 | # CONFIG_USB_SL811_HCD is not set | ||
786 | # CONFIG_USB_R8A66597_HCD is not set | ||
787 | |||
788 | # | ||
789 | # USB Device Class drivers | ||
790 | # | ||
791 | # CONFIG_USB_ACM is not set | ||
792 | # CONFIG_USB_PRINTER is not set | ||
766 | 793 | ||
767 | # | 794 | # |
768 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 795 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
769 | # | 796 | # |
770 | 797 | ||
771 | # | 798 | # |
799 | # may also be needed; see USB_STORAGE Help for more information | ||
800 | # | ||
801 | CONFIG_USB_STORAGE=y | ||
802 | # CONFIG_USB_STORAGE_DEBUG is not set | ||
803 | # CONFIG_USB_STORAGE_DATAFAB is not set | ||
804 | # CONFIG_USB_STORAGE_FREECOM is not set | ||
805 | # CONFIG_USB_STORAGE_DPCM is not set | ||
806 | # CONFIG_USB_STORAGE_USBAT is not set | ||
807 | # CONFIG_USB_STORAGE_SDDR09 is not set | ||
808 | # CONFIG_USB_STORAGE_SDDR55 is not set | ||
809 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | ||
810 | # CONFIG_USB_STORAGE_ALAUDA is not set | ||
811 | # CONFIG_USB_STORAGE_KARMA is not set | ||
812 | # CONFIG_USB_LIBUSUAL is not set | ||
813 | |||
814 | # | ||
815 | # USB Imaging devices | ||
816 | # | ||
817 | # CONFIG_USB_MDC800 is not set | ||
818 | # CONFIG_USB_MICROTEK is not set | ||
819 | CONFIG_USB_MON=y | ||
820 | |||
821 | # | ||
822 | # USB port drivers | ||
823 | # | ||
824 | |||
825 | # | ||
826 | # USB Serial Converter support | ||
827 | # | ||
828 | # CONFIG_USB_SERIAL is not set | ||
829 | |||
830 | # | ||
831 | # USB Miscellaneous drivers | ||
832 | # | ||
833 | # CONFIG_USB_EMI62 is not set | ||
834 | # CONFIG_USB_EMI26 is not set | ||
835 | # CONFIG_USB_ADUTUX is not set | ||
836 | # CONFIG_USB_AUERSWALD is not set | ||
837 | # CONFIG_USB_RIO500 is not set | ||
838 | # CONFIG_USB_LEGOTOWER is not set | ||
839 | # CONFIG_USB_LCD is not set | ||
840 | # CONFIG_USB_BERRY_CHARGE is not set | ||
841 | # CONFIG_USB_LED is not set | ||
842 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
843 | # CONFIG_USB_CYTHERM is not set | ||
844 | # CONFIG_USB_PHIDGET is not set | ||
845 | # CONFIG_USB_IDMOUSE is not set | ||
846 | # CONFIG_USB_FTDI_ELAN is not set | ||
847 | # CONFIG_USB_APPLEDISPLAY is not set | ||
848 | # CONFIG_USB_SISUSBVGA is not set | ||
849 | # CONFIG_USB_LD is not set | ||
850 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
851 | # CONFIG_USB_IOWARRIOR is not set | ||
852 | |||
853 | # | ||
854 | # USB DSL modem support | ||
855 | # | ||
856 | |||
857 | # | ||
772 | # USB Gadget Support | 858 | # USB Gadget Support |
773 | # | 859 | # |
774 | # CONFIG_USB_GADGET is not set | 860 | # CONFIG_USB_GADGET is not set |
diff --git a/arch/powerpc/configs/mpc834x_mds_defconfig b/arch/powerpc/configs/mpc834x_mds_defconfig index e59a88e95486..356f736a5d3d 100644 --- a/arch/powerpc/configs/mpc834x_mds_defconfig +++ b/arch/powerpc/configs/mpc834x_mds_defconfig | |||
@@ -721,7 +721,53 @@ CONFIG_USB_EHCI_FSL=y | |||
721 | # CONFIG_NEW_LEDS is not set | 721 | # CONFIG_NEW_LEDS is not set |
722 | # CONFIG_INFINIBAND is not set | 722 | # CONFIG_INFINIBAND is not set |
723 | # CONFIG_EDAC is not set | 723 | # CONFIG_EDAC is not set |
724 | # CONFIG_RTC_CLASS is not set | 724 | CONFIG_RTC_LIB=y |
725 | CONFIG_RTC_CLASS=y | ||
726 | CONFIG_RTC_HCTOSYS=y | ||
727 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
728 | # CONFIG_RTC_DEBUG is not set | ||
729 | |||
730 | # | ||
731 | # RTC interfaces | ||
732 | # | ||
733 | CONFIG_RTC_INTF_SYSFS=y | ||
734 | CONFIG_RTC_INTF_PROC=y | ||
735 | CONFIG_RTC_INTF_DEV=y | ||
736 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
737 | # CONFIG_RTC_DRV_TEST is not set | ||
738 | |||
739 | # | ||
740 | # I2C RTC drivers | ||
741 | # | ||
742 | # CONFIG_RTC_DRV_DS1307 is not set | ||
743 | CONFIG_RTC_DRV_DS1374=y | ||
744 | # CONFIG_RTC_DRV_DS1672 is not set | ||
745 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
746 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
747 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
748 | # CONFIG_RTC_DRV_X1205 is not set | ||
749 | # CONFIG_RTC_DRV_PCF8563 is not set | ||
750 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
751 | # CONFIG_RTC_DRV_M41T80 is not set | ||
752 | |||
753 | # | ||
754 | # SPI RTC drivers | ||
755 | # | ||
756 | |||
757 | # | ||
758 | # Platform RTC drivers | ||
759 | # | ||
760 | # CONFIG_RTC_DRV_CMOS is not set | ||
761 | # CONFIG_RTC_DRV_DS1553 is not set | ||
762 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
763 | # CONFIG_RTC_DRV_DS1742 is not set | ||
764 | # CONFIG_RTC_DRV_M48T86 is not set | ||
765 | # CONFIG_RTC_DRV_M48T59 is not set | ||
766 | # CONFIG_RTC_DRV_V3020 is not set | ||
767 | |||
768 | # | ||
769 | # on-CPU RTC drivers | ||
770 | # | ||
725 | 771 | ||
726 | # | 772 | # |
727 | # DMA Engine support | 773 | # DMA Engine support |
diff --git a/arch/powerpc/configs/mpc836x_mds_defconfig b/arch/powerpc/configs/mpc836x_mds_defconfig index 75657528518e..1b4d37570eb1 100644 --- a/arch/powerpc/configs/mpc836x_mds_defconfig +++ b/arch/powerpc/configs/mpc836x_mds_defconfig | |||
@@ -773,7 +773,53 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
773 | # CONFIG_NEW_LEDS is not set | 773 | # CONFIG_NEW_LEDS is not set |
774 | # CONFIG_INFINIBAND is not set | 774 | # CONFIG_INFINIBAND is not set |
775 | # CONFIG_EDAC is not set | 775 | # CONFIG_EDAC is not set |
776 | # CONFIG_RTC_CLASS is not set | 776 | CONFIG_RTC_LIB=y |
777 | CONFIG_RTC_CLASS=y | ||
778 | CONFIG_RTC_HCTOSYS=y | ||
779 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
780 | # CONFIG_RTC_DEBUG is not set | ||
781 | |||
782 | # | ||
783 | # RTC interfaces | ||
784 | # | ||
785 | CONFIG_RTC_INTF_SYSFS=y | ||
786 | CONFIG_RTC_INTF_PROC=y | ||
787 | CONFIG_RTC_INTF_DEV=y | ||
788 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
789 | # CONFIG_RTC_DRV_TEST is not set | ||
790 | |||
791 | # | ||
792 | # I2C RTC drivers | ||
793 | # | ||
794 | # CONFIG_RTC_DRV_DS1307 is not set | ||
795 | CONFIG_RTC_DRV_DS1374=y | ||
796 | # CONFIG_RTC_DRV_DS1672 is not set | ||
797 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
798 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
799 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
800 | # CONFIG_RTC_DRV_X1205 is not set | ||
801 | # CONFIG_RTC_DRV_PCF8563 is not set | ||
802 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
803 | # CONFIG_RTC_DRV_M41T80 is not set | ||
804 | |||
805 | # | ||
806 | # SPI RTC drivers | ||
807 | # | ||
808 | |||
809 | # | ||
810 | # Platform RTC drivers | ||
811 | # | ||
812 | # CONFIG_RTC_DRV_CMOS is not set | ||
813 | # CONFIG_RTC_DRV_DS1553 is not set | ||
814 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
815 | # CONFIG_RTC_DRV_DS1742 is not set | ||
816 | # CONFIG_RTC_DRV_M48T86 is not set | ||
817 | # CONFIG_RTC_DRV_M48T59 is not set | ||
818 | # CONFIG_RTC_DRV_V3020 is not set | ||
819 | |||
820 | # | ||
821 | # on-CPU RTC drivers | ||
822 | # | ||
777 | 823 | ||
778 | # | 824 | # |
779 | # DMA Engine support | 825 | # DMA Engine support |
diff --git a/arch/powerpc/configs/mpc8568mds_defconfig b/arch/powerpc/configs/mpc8568mds_defconfig index 883d8af9debd..d665e7a797c0 100644 --- a/arch/powerpc/configs/mpc8568mds_defconfig +++ b/arch/powerpc/configs/mpc8568mds_defconfig | |||
@@ -768,7 +768,53 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
768 | # CONFIG_NEW_LEDS is not set | 768 | # CONFIG_NEW_LEDS is not set |
769 | # CONFIG_INFINIBAND is not set | 769 | # CONFIG_INFINIBAND is not set |
770 | # CONFIG_EDAC is not set | 770 | # CONFIG_EDAC is not set |
771 | # CONFIG_RTC_CLASS is not set | 771 | CONFIG_RTC_LIB=y |
772 | CONFIG_RTC_CLASS=y | ||
773 | CONFIG_RTC_HCTOSYS=y | ||
774 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
775 | # CONFIG_RTC_DEBUG is not set | ||
776 | |||
777 | # | ||
778 | # RTC interfaces | ||
779 | # | ||
780 | CONFIG_RTC_INTF_SYSFS=y | ||
781 | CONFIG_RTC_INTF_PROC=y | ||
782 | CONFIG_RTC_INTF_DEV=y | ||
783 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
784 | # CONFIG_RTC_DRV_TEST is not set | ||
785 | |||
786 | # | ||
787 | # I2C RTC drivers | ||
788 | # | ||
789 | # CONFIG_RTC_DRV_DS1307 is not set | ||
790 | CONFIG_RTC_DRV_DS1374=y | ||
791 | # CONFIG_RTC_DRV_DS1672 is not set | ||
792 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
793 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
794 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
795 | # CONFIG_RTC_DRV_X1205 is not set | ||
796 | # CONFIG_RTC_DRV_PCF8563 is not set | ||
797 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
798 | # CONFIG_RTC_DRV_M41T80 is not set | ||
799 | |||
800 | # | ||
801 | # SPI RTC drivers | ||
802 | # | ||
803 | |||
804 | # | ||
805 | # Platform RTC drivers | ||
806 | # | ||
807 | # CONFIG_RTC_DRV_CMOS is not set | ||
808 | # CONFIG_RTC_DRV_DS1553 is not set | ||
809 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
810 | # CONFIG_RTC_DRV_DS1742 is not set | ||
811 | # CONFIG_RTC_DRV_M48T86 is not set | ||
812 | # CONFIG_RTC_DRV_M48T59 is not set | ||
813 | # CONFIG_RTC_DRV_V3020 is not set | ||
814 | |||
815 | # | ||
816 | # on-CPU RTC drivers | ||
817 | # | ||
772 | 818 | ||
773 | # | 819 | # |
774 | # DMA Engine support | 820 | # DMA Engine support |
diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c index 2c8e756d19a3..d67bcd84f329 100644 --- a/arch/powerpc/kernel/asm-offsets.c +++ b/arch/powerpc/kernel/asm-offsets.c | |||
@@ -284,6 +284,10 @@ int main(void) | |||
284 | DEFINE(CFG_SYSCALL_MAP32, offsetof(struct vdso_data, syscall_map_32)); | 284 | DEFINE(CFG_SYSCALL_MAP32, offsetof(struct vdso_data, syscall_map_32)); |
285 | DEFINE(WTOM_CLOCK_SEC, offsetof(struct vdso_data, wtom_clock_sec)); | 285 | DEFINE(WTOM_CLOCK_SEC, offsetof(struct vdso_data, wtom_clock_sec)); |
286 | DEFINE(WTOM_CLOCK_NSEC, offsetof(struct vdso_data, wtom_clock_nsec)); | 286 | DEFINE(WTOM_CLOCK_NSEC, offsetof(struct vdso_data, wtom_clock_nsec)); |
287 | DEFINE(CFG_ICACHE_BLOCKSZ, offsetof(struct vdso_data, icache_block_size)); | ||
288 | DEFINE(CFG_DCACHE_BLOCKSZ, offsetof(struct vdso_data, dcache_block_size)); | ||
289 | DEFINE(CFG_ICACHE_LOGBLOCKSZ, offsetof(struct vdso_data, icache_log_block_size)); | ||
290 | DEFINE(CFG_DCACHE_LOGBLOCKSZ, offsetof(struct vdso_data, dcache_log_block_size)); | ||
287 | #ifdef CONFIG_PPC64 | 291 | #ifdef CONFIG_PPC64 |
288 | DEFINE(CFG_SYSCALL_MAP64, offsetof(struct vdso_data, syscall_map_64)); | 292 | DEFINE(CFG_SYSCALL_MAP64, offsetof(struct vdso_data, syscall_map_64)); |
289 | DEFINE(TVAL64_TV_SEC, offsetof(struct timeval, tv_sec)); | 293 | DEFINE(TVAL64_TV_SEC, offsetof(struct timeval, tv_sec)); |
diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c index 214780798289..053cac19f714 100644 --- a/arch/powerpc/kernel/rtas.c +++ b/arch/powerpc/kernel/rtas.c | |||
@@ -19,6 +19,9 @@ | |||
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/capability.h> | 20 | #include <linux/capability.h> |
21 | #include <linux/delay.h> | 21 | #include <linux/delay.h> |
22 | #include <linux/smp.h> | ||
23 | #include <linux/completion.h> | ||
24 | #include <linux/cpumask.h> | ||
22 | 25 | ||
23 | #include <asm/prom.h> | 26 | #include <asm/prom.h> |
24 | #include <asm/rtas.h> | 27 | #include <asm/rtas.h> |
@@ -34,6 +37,8 @@ | |||
34 | #include <asm/lmb.h> | 37 | #include <asm/lmb.h> |
35 | #include <asm/udbg.h> | 38 | #include <asm/udbg.h> |
36 | #include <asm/syscalls.h> | 39 | #include <asm/syscalls.h> |
40 | #include <asm/smp.h> | ||
41 | #include <asm/atomic.h> | ||
37 | 42 | ||
38 | struct rtas_t rtas = { | 43 | struct rtas_t rtas = { |
39 | .lock = SPIN_LOCK_UNLOCKED | 44 | .lock = SPIN_LOCK_UNLOCKED |
@@ -41,8 +46,10 @@ struct rtas_t rtas = { | |||
41 | EXPORT_SYMBOL(rtas); | 46 | EXPORT_SYMBOL(rtas); |
42 | 47 | ||
43 | struct rtas_suspend_me_data { | 48 | struct rtas_suspend_me_data { |
44 | long waiting; | 49 | atomic_t working; /* number of cpus accessing this struct */ |
45 | struct rtas_args *args; | 50 | int token; /* ibm,suspend-me */ |
51 | int error; | ||
52 | struct completion *complete; /* wait on this until working == 0 */ | ||
46 | }; | 53 | }; |
47 | 54 | ||
48 | DEFINE_SPINLOCK(rtas_data_buf_lock); | 55 | DEFINE_SPINLOCK(rtas_data_buf_lock); |
@@ -631,18 +638,18 @@ void rtas_halt(void) | |||
631 | /* Must be in the RMO region, so we place it here */ | 638 | /* Must be in the RMO region, so we place it here */ |
632 | static char rtas_os_term_buf[2048]; | 639 | static char rtas_os_term_buf[2048]; |
633 | 640 | ||
634 | void rtas_os_term(char *str) | 641 | void rtas_panic_msg(char *str) |
635 | { | 642 | { |
636 | int status; | 643 | snprintf(rtas_os_term_buf, 2048, "OS panic: %s", str); |
644 | } | ||
637 | 645 | ||
638 | if (panic_timeout) | 646 | void rtas_os_term(void) |
639 | return; | 647 | { |
648 | int status; | ||
640 | 649 | ||
641 | if (RTAS_UNKNOWN_SERVICE == rtas_token("ibm,os-term")) | 650 | if (RTAS_UNKNOWN_SERVICE == rtas_token("ibm,os-term")) |
642 | return; | 651 | return; |
643 | 652 | ||
644 | snprintf(rtas_os_term_buf, 2048, "OS panic: %s", str); | ||
645 | |||
646 | do { | 653 | do { |
647 | status = rtas_call(rtas_token("ibm,os-term"), 1, 1, NULL, | 654 | status = rtas_call(rtas_token("ibm,os-term"), 1, 1, NULL, |
648 | __pa(rtas_os_term_buf)); | 655 | __pa(rtas_os_term_buf)); |
@@ -657,50 +664,62 @@ static int ibm_suspend_me_token = RTAS_UNKNOWN_SERVICE; | |||
657 | #ifdef CONFIG_PPC_PSERIES | 664 | #ifdef CONFIG_PPC_PSERIES |
658 | static void rtas_percpu_suspend_me(void *info) | 665 | static void rtas_percpu_suspend_me(void *info) |
659 | { | 666 | { |
660 | int i; | ||
661 | long rc; | 667 | long rc; |
662 | long flags; | 668 | unsigned long msr_save; |
669 | int cpu; | ||
663 | struct rtas_suspend_me_data *data = | 670 | struct rtas_suspend_me_data *data = |
664 | (struct rtas_suspend_me_data *)info; | 671 | (struct rtas_suspend_me_data *)info; |
665 | 672 | ||
666 | /* | 673 | atomic_inc(&data->working); |
667 | * We use "waiting" to indicate our state. As long | 674 | |
668 | * as it is >0, we are still trying to all join up. | 675 | /* really need to ensure MSR.EE is off for H_JOIN */ |
669 | * If it goes to 0, we have successfully joined up and | 676 | msr_save = mfmsr(); |
670 | * one thread got H_CONTINUE. If any error happens, | 677 | mtmsr(msr_save & ~(MSR_EE)); |
671 | * we set it to <0. | 678 | |
672 | */ | 679 | rc = plpar_hcall_norets(H_JOIN); |
673 | local_irq_save(flags); | ||
674 | do { | ||
675 | rc = plpar_hcall_norets(H_JOIN); | ||
676 | smp_rmb(); | ||
677 | } while (rc == H_SUCCESS && data->waiting > 0); | ||
678 | if (rc == H_SUCCESS) | ||
679 | goto out; | ||
680 | 680 | ||
681 | if (rc == H_CONTINUE) { | 681 | mtmsr(msr_save); |
682 | data->waiting = 0; | 682 | |
683 | data->args->args[data->args->nargs] = | 683 | if (rc == H_SUCCESS) { |
684 | rtas_call(ibm_suspend_me_token, 0, 1, NULL); | 684 | /* This cpu was prodded and the suspend is complete. */ |
685 | for_each_possible_cpu(i) | 685 | goto out; |
686 | plpar_hcall_norets(H_PROD,i); | 686 | } else if (rc == H_CONTINUE) { |
687 | /* All other cpus are in H_JOIN, this cpu does | ||
688 | * the suspend. | ||
689 | */ | ||
690 | printk(KERN_DEBUG "calling ibm,suspend-me on cpu %i\n", | ||
691 | smp_processor_id()); | ||
692 | data->error = rtas_call(data->token, 0, 1, NULL); | ||
693 | |||
694 | if (data->error) | ||
695 | printk(KERN_DEBUG "ibm,suspend-me returned %d\n", | ||
696 | data->error); | ||
687 | } else { | 697 | } else { |
688 | data->waiting = -EBUSY; | 698 | printk(KERN_ERR "H_JOIN on cpu %i failed with rc = %ld\n", |
689 | printk(KERN_ERR "Error on H_JOIN hypervisor call\n"); | 699 | smp_processor_id(), rc); |
700 | data->error = rc; | ||
690 | } | 701 | } |
691 | 702 | /* This cpu did the suspend or got an error; in either case, | |
703 | * we need to prod all other other cpus out of join state. | ||
704 | * Extra prods are harmless. | ||
705 | */ | ||
706 | for_each_online_cpu(cpu) | ||
707 | plpar_hcall_norets(H_PROD, get_hard_smp_processor_id(cpu)); | ||
692 | out: | 708 | out: |
693 | local_irq_restore(flags); | 709 | if (atomic_dec_return(&data->working) == 0) |
694 | return; | 710 | complete(data->complete); |
695 | } | 711 | } |
696 | 712 | ||
697 | static int rtas_ibm_suspend_me(struct rtas_args *args) | 713 | static int rtas_ibm_suspend_me(struct rtas_args *args) |
698 | { | 714 | { |
699 | int i; | ||
700 | long state; | 715 | long state; |
701 | long rc; | 716 | long rc; |
702 | unsigned long retbuf[PLPAR_HCALL_BUFSIZE]; | 717 | unsigned long retbuf[PLPAR_HCALL_BUFSIZE]; |
703 | struct rtas_suspend_me_data data; | 718 | struct rtas_suspend_me_data data; |
719 | DECLARE_COMPLETION_ONSTACK(done); | ||
720 | |||
721 | if (!rtas_service_present("ibm,suspend-me")) | ||
722 | return -ENOSYS; | ||
704 | 723 | ||
705 | /* Make sure the state is valid */ | 724 | /* Make sure the state is valid */ |
706 | rc = plpar_hcall(H_VASI_STATE, retbuf, | 725 | rc = plpar_hcall(H_VASI_STATE, retbuf, |
@@ -721,25 +740,23 @@ static int rtas_ibm_suspend_me(struct rtas_args *args) | |||
721 | return 0; | 740 | return 0; |
722 | } | 741 | } |
723 | 742 | ||
724 | data.waiting = 1; | 743 | atomic_set(&data.working, 0); |
725 | data.args = args; | 744 | data.token = rtas_token("ibm,suspend-me"); |
745 | data.error = 0; | ||
746 | data.complete = &done; | ||
726 | 747 | ||
727 | /* Call function on all CPUs. One of us will make the | 748 | /* Call function on all CPUs. One of us will make the |
728 | * rtas call | 749 | * rtas call |
729 | */ | 750 | */ |
730 | if (on_each_cpu(rtas_percpu_suspend_me, &data, 1, 0)) | 751 | if (on_each_cpu(rtas_percpu_suspend_me, &data, 1, 0)) |
731 | data.waiting = -EINVAL; | 752 | data.error = -EINVAL; |
732 | 753 | ||
733 | if (data.waiting != 0) | 754 | wait_for_completion(&done); |
734 | printk(KERN_ERR "Error doing global join\n"); | ||
735 | 755 | ||
736 | /* Prod each CPU. This won't hurt, and will wake | 756 | if (data.error != 0) |
737 | * anyone we successfully put to sleep with H_JOIN. | 757 | printk(KERN_ERR "Error doing global join\n"); |
738 | */ | ||
739 | for_each_possible_cpu(i) | ||
740 | plpar_hcall_norets(H_PROD, i); | ||
741 | 758 | ||
742 | return data.waiting; | 759 | return data.error; |
743 | } | 760 | } |
744 | #else /* CONFIG_PPC_PSERIES */ | 761 | #else /* CONFIG_PPC_PSERIES */ |
745 | static int rtas_ibm_suspend_me(struct rtas_args *args) | 762 | static int rtas_ibm_suspend_me(struct rtas_args *args) |
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c index c0d77723ba11..a925a8eae121 100644 --- a/arch/powerpc/kernel/time.c +++ b/arch/powerpc/kernel/time.c | |||
@@ -241,8 +241,9 @@ void account_system_vtime(struct task_struct *tsk) | |||
241 | /* deltascaled includes both user and system time. | 241 | /* deltascaled includes both user and system time. |
242 | * Hence scale it based on the purr ratio to estimate | 242 | * Hence scale it based on the purr ratio to estimate |
243 | * the system time */ | 243 | * the system time */ |
244 | deltascaled = deltascaled * get_paca()->system_time / | 244 | if (get_paca()->user_time) |
245 | (get_paca()->system_time + get_paca()->user_time); | 245 | deltascaled = deltascaled * get_paca()->system_time / |
246 | (get_paca()->system_time + get_paca()->user_time); | ||
246 | delta += get_paca()->system_time; | 247 | delta += get_paca()->system_time; |
247 | get_paca()->system_time = 0; | 248 | get_paca()->system_time = 0; |
248 | } | 249 | } |
diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c index 2322ba5cce4c..3702df7dc567 100644 --- a/arch/powerpc/kernel/vdso.c +++ b/arch/powerpc/kernel/vdso.c | |||
@@ -699,11 +699,22 @@ static int __init vdso_init(void) | |||
699 | vdso_data->icache_size = ppc64_caches.isize; | 699 | vdso_data->icache_size = ppc64_caches.isize; |
700 | vdso_data->icache_line_size = ppc64_caches.iline_size; | 700 | vdso_data->icache_line_size = ppc64_caches.iline_size; |
701 | 701 | ||
702 | /* XXXOJN: Blocks should be added to ppc64_caches and used instead */ | ||
703 | vdso_data->dcache_block_size = ppc64_caches.dline_size; | ||
704 | vdso_data->icache_block_size = ppc64_caches.iline_size; | ||
705 | vdso_data->dcache_log_block_size = ppc64_caches.log_dline_size; | ||
706 | vdso_data->icache_log_block_size = ppc64_caches.log_iline_size; | ||
707 | |||
702 | /* | 708 | /* |
703 | * Calculate the size of the 64 bits vDSO | 709 | * Calculate the size of the 64 bits vDSO |
704 | */ | 710 | */ |
705 | vdso64_pages = (&vdso64_end - &vdso64_start) >> PAGE_SHIFT; | 711 | vdso64_pages = (&vdso64_end - &vdso64_start) >> PAGE_SHIFT; |
706 | DBG("vdso64_kbase: %p, 0x%x pages\n", vdso64_kbase, vdso64_pages); | 712 | DBG("vdso64_kbase: %p, 0x%x pages\n", vdso64_kbase, vdso64_pages); |
713 | #else | ||
714 | vdso_data->dcache_block_size = L1_CACHE_BYTES; | ||
715 | vdso_data->dcache_log_block_size = L1_CACHE_SHIFT; | ||
716 | vdso_data->icache_block_size = L1_CACHE_BYTES; | ||
717 | vdso_data->icache_log_block_size = L1_CACHE_SHIFT; | ||
707 | #endif /* CONFIG_PPC64 */ | 718 | #endif /* CONFIG_PPC64 */ |
708 | 719 | ||
709 | 720 | ||
diff --git a/arch/powerpc/kernel/vdso32/cacheflush.S b/arch/powerpc/kernel/vdso32/cacheflush.S index 9cb319992c38..1ba6feb71b31 100644 --- a/arch/powerpc/kernel/vdso32/cacheflush.S +++ b/arch/powerpc/kernel/vdso32/cacheflush.S | |||
@@ -23,29 +23,46 @@ | |||
23 | * | 23 | * |
24 | * Flushes the data cache & invalidate the instruction cache for the | 24 | * Flushes the data cache & invalidate the instruction cache for the |
25 | * provided range [start, end[ | 25 | * provided range [start, end[ |
26 | * | ||
27 | * Note: all CPUs supported by this kernel have a 128 bytes cache | ||
28 | * line size so we don't have to peek that info from the datapage | ||
29 | */ | 26 | */ |
30 | V_FUNCTION_BEGIN(__kernel_sync_dicache) | 27 | V_FUNCTION_BEGIN(__kernel_sync_dicache) |
31 | .cfi_startproc | 28 | .cfi_startproc |
32 | li r5,127 | 29 | mflr r12 |
33 | andc r6,r3,r5 /* round low to line bdy */ | 30 | .cfi_register lr,r12 |
31 | mr r11,r3 | ||
32 | bl __get_datapage@local | ||
33 | mtlr r12 | ||
34 | mr r10,r3 | ||
35 | |||
36 | lwz r7,CFG_DCACHE_BLOCKSZ(r10) | ||
37 | addi r5,r7,-1 | ||
38 | andc r6,r11,r5 /* round low to line bdy */ | ||
34 | subf r8,r6,r4 /* compute length */ | 39 | subf r8,r6,r4 /* compute length */ |
35 | add r8,r8,r5 /* ensure we get enough */ | 40 | add r8,r8,r5 /* ensure we get enough */ |
36 | srwi. r8,r8,7 /* compute line count */ | 41 | lwz r9,CFG_DCACHE_LOGBLOCKSZ(r10) |
42 | srw. r8,r8,r9 /* compute line count */ | ||
37 | crclr cr0*4+so | 43 | crclr cr0*4+so |
38 | beqlr /* nothing to do? */ | 44 | beqlr /* nothing to do? */ |
39 | mtctr r8 | 45 | mtctr r8 |
40 | mr r3,r6 | 46 | 1: dcbst 0,r6 |
41 | 1: dcbst 0,r3 | 47 | add r6,r6,r7 |
42 | addi r3,r3,128 | ||
43 | bdnz 1b | 48 | bdnz 1b |
44 | sync | 49 | sync |
50 | |||
51 | /* Now invalidate the instruction cache */ | ||
52 | |||
53 | lwz r7,CFG_ICACHE_BLOCKSZ(r10) | ||
54 | addi r5,r7,-1 | ||
55 | andc r6,r11,r5 /* round low to line bdy */ | ||
56 | subf r8,r6,r4 /* compute length */ | ||
57 | add r8,r8,r5 | ||
58 | lwz r9,CFG_ICACHE_LOGBLOCKSZ(r10) | ||
59 | srw. r8,r8,r9 /* compute line count */ | ||
60 | crclr cr0*4+so | ||
61 | beqlr /* nothing to do? */ | ||
45 | mtctr r8 | 62 | mtctr r8 |
46 | 1: icbi 0,r6 | 63 | 2: icbi 0,r6 |
47 | addi r6,r6,128 | 64 | add r6,r6,r7 |
48 | bdnz 1b | 65 | bdnz 2b |
49 | isync | 66 | isync |
50 | li r3,0 | 67 | li r3,0 |
51 | blr | 68 | blr |
diff --git a/arch/powerpc/kernel/vdso64/cacheflush.S b/arch/powerpc/kernel/vdso64/cacheflush.S index 66a36d3cc6ad..69c5af2b3c96 100644 --- a/arch/powerpc/kernel/vdso64/cacheflush.S +++ b/arch/powerpc/kernel/vdso64/cacheflush.S | |||
@@ -23,29 +23,46 @@ | |||
23 | * | 23 | * |
24 | * Flushes the data cache & invalidate the instruction cache for the | 24 | * Flushes the data cache & invalidate the instruction cache for the |
25 | * provided range [start, end[ | 25 | * provided range [start, end[ |
26 | * | ||
27 | * Note: all CPUs supported by this kernel have a 128 bytes cache | ||
28 | * line size so we don't have to peek that info from the datapage | ||
29 | */ | 26 | */ |
30 | V_FUNCTION_BEGIN(__kernel_sync_dicache) | 27 | V_FUNCTION_BEGIN(__kernel_sync_dicache) |
31 | .cfi_startproc | 28 | .cfi_startproc |
32 | li r5,127 | 29 | mflr r12 |
33 | andc r6,r3,r5 /* round low to line bdy */ | 30 | .cfi_register lr,r12 |
31 | mr r11,r3 | ||
32 | bl V_LOCAL_FUNC(__get_datapage) | ||
33 | mtlr r12 | ||
34 | mr r10,r3 | ||
35 | |||
36 | lwz r7,CFG_DCACHE_BLOCKSZ(r10) | ||
37 | addi r5,r7,-1 | ||
38 | andc r6,r11,r5 /* round low to line bdy */ | ||
34 | subf r8,r6,r4 /* compute length */ | 39 | subf r8,r6,r4 /* compute length */ |
35 | add r8,r8,r5 /* ensure we get enough */ | 40 | add r8,r8,r5 /* ensure we get enough */ |
36 | srwi. r8,r8,7 /* compute line count */ | 41 | lwz r9,CFG_DCACHE_LOGBLOCKSZ(r10) |
42 | srw. r8,r8,r9 /* compute line count */ | ||
37 | crclr cr0*4+so | 43 | crclr cr0*4+so |
38 | beqlr /* nothing to do? */ | 44 | beqlr /* nothing to do? */ |
39 | mtctr r8 | 45 | mtctr r8 |
40 | mr r3,r6 | 46 | 1: dcbst 0,r6 |
41 | 1: dcbst 0,r3 | 47 | add r6,r6,r7 |
42 | addi r3,r3,128 | ||
43 | bdnz 1b | 48 | bdnz 1b |
44 | sync | 49 | sync |
50 | |||
51 | /* Now invalidate the instruction cache */ | ||
52 | |||
53 | lwz r7,CFG_ICACHE_BLOCKSZ(r10) | ||
54 | addi r5,r7,-1 | ||
55 | andc r6,r11,r5 /* round low to line bdy */ | ||
56 | subf r8,r6,r4 /* compute length */ | ||
57 | add r8,r8,r5 | ||
58 | lwz r9,CFG_ICACHE_LOGBLOCKSZ(r10) | ||
59 | srw. r8,r8,r9 /* compute line count */ | ||
60 | crclr cr0*4+so | ||
61 | beqlr /* nothing to do? */ | ||
45 | mtctr r8 | 62 | mtctr r8 |
46 | 1: icbi 0,r6 | 63 | 2: icbi 0,r6 |
47 | addi r6,r6,128 | 64 | add r6,r6,r7 |
48 | bdnz 1b | 65 | bdnz 2b |
49 | isync | 66 | isync |
50 | li r3,0 | 67 | li r3,0 |
51 | blr | 68 | blr |
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index 81eb96ec13b2..5402fb6b3aae 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c | |||
@@ -464,7 +464,7 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, | |||
464 | * we invalidate the TLB here, thus avoiding dcbst | 464 | * we invalidate the TLB here, thus avoiding dcbst |
465 | * misbehaviour. | 465 | * misbehaviour. |
466 | */ | 466 | */ |
467 | _tlbie(address); | 467 | _tlbie(address, 0 /* 8xx doesn't care about PID */); |
468 | #endif | 468 | #endif |
469 | if (!PageReserved(page) | 469 | if (!PageReserved(page) |
470 | && !test_bit(PG_arch_1, &page->flags)) { | 470 | && !test_bit(PG_arch_1, &page->flags)) { |
diff --git a/arch/powerpc/mm/mmu_decl.h b/arch/powerpc/mm/mmu_decl.h index eb3a732e91db..ebfd13dc9d19 100644 --- a/arch/powerpc/mm/mmu_decl.h +++ b/arch/powerpc/mm/mmu_decl.h | |||
@@ -56,7 +56,7 @@ extern unsigned long total_lowmem; | |||
56 | * architectures. -- Dan | 56 | * architectures. -- Dan |
57 | */ | 57 | */ |
58 | #if defined(CONFIG_8xx) | 58 | #if defined(CONFIG_8xx) |
59 | #define flush_HPTE(X, va, pg) _tlbie(va) | 59 | #define flush_HPTE(X, va, pg) _tlbie(va, 0 /* 8xx doesn't care about PID */) |
60 | #define MMU_init_hw() do { } while(0) | 60 | #define MMU_init_hw() do { } while(0) |
61 | #define mmu_mapin_ram() (0UL) | 61 | #define mmu_mapin_ram() (0UL) |
62 | 62 | ||
diff --git a/arch/powerpc/mm/stab.c b/arch/powerpc/mm/stab.c index 9e85bda76216..50448d5de9d2 100644 --- a/arch/powerpc/mm/stab.c +++ b/arch/powerpc/mm/stab.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <asm/lmb.h> | 20 | #include <asm/lmb.h> |
21 | #include <asm/abs_addr.h> | 21 | #include <asm/abs_addr.h> |
22 | #include <asm/firmware.h> | 22 | #include <asm/firmware.h> |
23 | #include <asm/iseries/hv_call.h> | ||
23 | 24 | ||
24 | struct stab_entry { | 25 | struct stab_entry { |
25 | unsigned long esid_data; | 26 | unsigned long esid_data; |
diff --git a/arch/powerpc/platforms/40x/walnut.c b/arch/powerpc/platforms/40x/walnut.c index eb0c136b1c44..ff6db2431798 100644 --- a/arch/powerpc/platforms/40x/walnut.c +++ b/arch/powerpc/platforms/40x/walnut.c | |||
@@ -17,12 +17,13 @@ | |||
17 | */ | 17 | */ |
18 | 18 | ||
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/of_platform.h> | ||
21 | |||
20 | #include <asm/machdep.h> | 22 | #include <asm/machdep.h> |
21 | #include <asm/prom.h> | 23 | #include <asm/prom.h> |
22 | #include <asm/udbg.h> | 24 | #include <asm/udbg.h> |
23 | #include <asm/time.h> | 25 | #include <asm/time.h> |
24 | #include <asm/uic.h> | 26 | #include <asm/uic.h> |
25 | #include <asm/of_platform.h> | ||
26 | 27 | ||
27 | static struct of_device_id walnut_of_bus[] = { | 28 | static struct of_device_id walnut_of_bus[] = { |
28 | { .compatible = "ibm,plb3", }, | 29 | { .compatible = "ibm,plb3", }, |
diff --git a/arch/powerpc/platforms/44x/bamboo.c b/arch/powerpc/platforms/44x/bamboo.c index 470e1a3fd755..be23f112184f 100644 --- a/arch/powerpc/platforms/44x/bamboo.c +++ b/arch/powerpc/platforms/44x/bamboo.c | |||
@@ -14,12 +14,13 @@ | |||
14 | * option) any later version. | 14 | * option) any later version. |
15 | */ | 15 | */ |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/of_platform.h> | ||
18 | |||
17 | #include <asm/machdep.h> | 19 | #include <asm/machdep.h> |
18 | #include <asm/prom.h> | 20 | #include <asm/prom.h> |
19 | #include <asm/udbg.h> | 21 | #include <asm/udbg.h> |
20 | #include <asm/time.h> | 22 | #include <asm/time.h> |
21 | #include <asm/uic.h> | 23 | #include <asm/uic.h> |
22 | #include <asm/of_platform.h> | ||
23 | #include "44x.h" | 24 | #include "44x.h" |
24 | 25 | ||
25 | static struct of_device_id bamboo_of_bus[] = { | 26 | static struct of_device_id bamboo_of_bus[] = { |
diff --git a/arch/powerpc/platforms/44x/ebony.c b/arch/powerpc/platforms/44x/ebony.c index 40e18fcb666c..6cd3476767cc 100644 --- a/arch/powerpc/platforms/44x/ebony.c +++ b/arch/powerpc/platforms/44x/ebony.c | |||
@@ -17,12 +17,13 @@ | |||
17 | */ | 17 | */ |
18 | 18 | ||
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/of_platform.h> | ||
21 | |||
20 | #include <asm/machdep.h> | 22 | #include <asm/machdep.h> |
21 | #include <asm/prom.h> | 23 | #include <asm/prom.h> |
22 | #include <asm/udbg.h> | 24 | #include <asm/udbg.h> |
23 | #include <asm/time.h> | 25 | #include <asm/time.h> |
24 | #include <asm/uic.h> | 26 | #include <asm/uic.h> |
25 | #include <asm/of_platform.h> | ||
26 | 27 | ||
27 | #include "44x.h" | 28 | #include "44x.h" |
28 | 29 | ||
diff --git a/arch/powerpc/platforms/44x/sequoia.c b/arch/powerpc/platforms/44x/sequoia.c index 30700b31d43b..21a9dd14f297 100644 --- a/arch/powerpc/platforms/44x/sequoia.c +++ b/arch/powerpc/platforms/44x/sequoia.c | |||
@@ -14,12 +14,13 @@ | |||
14 | * option) any later version. | 14 | * option) any later version. |
15 | */ | 15 | */ |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/of_platform.h> | ||
18 | |||
17 | #include <asm/machdep.h> | 19 | #include <asm/machdep.h> |
18 | #include <asm/prom.h> | 20 | #include <asm/prom.h> |
19 | #include <asm/udbg.h> | 21 | #include <asm/udbg.h> |
20 | #include <asm/time.h> | 22 | #include <asm/time.h> |
21 | #include <asm/uic.h> | 23 | #include <asm/uic.h> |
22 | #include <asm/of_platform.h> | ||
23 | #include "44x.h" | 24 | #include "44x.h" |
24 | 25 | ||
25 | static struct of_device_id sequoia_of_bus[] = { | 26 | static struct of_device_id sequoia_of_bus[] = { |
diff --git a/arch/powerpc/platforms/83xx/mpc832x_mds.c b/arch/powerpc/platforms/83xx/mpc832x_mds.c index 972fa8528a8c..39ee7a13b25a 100644 --- a/arch/powerpc/platforms/83xx/mpc832x_mds.c +++ b/arch/powerpc/platforms/83xx/mpc832x_mds.c | |||
@@ -90,10 +90,11 @@ static void __init mpc832x_sys_setup_arch(void) | |||
90 | 90 | ||
91 | if ((np = of_find_compatible_node(NULL, "network", "ucc_geth")) | 91 | if ((np = of_find_compatible_node(NULL, "network", "ucc_geth")) |
92 | != NULL){ | 92 | != NULL){ |
93 | /* Reset the Ethernet PHY */ | 93 | /* Reset the Ethernet PHYs */ |
94 | bcsr_regs[9] &= ~0x20; | 94 | #define BCSR8_FETH_RST 0x50 |
95 | bcsr_regs[8] &= ~BCSR8_FETH_RST; | ||
95 | udelay(1000); | 96 | udelay(1000); |
96 | bcsr_regs[9] |= 0x20; | 97 | bcsr_regs[8] |= BCSR8_FETH_RST; |
97 | iounmap(bcsr_regs); | 98 | iounmap(bcsr_regs); |
98 | of_node_put(np); | 99 | of_node_put(np); |
99 | } | 100 | } |
@@ -145,30 +146,6 @@ static void __init mpc832x_sys_init_IRQ(void) | |||
145 | #endif /* CONFIG_QUICC_ENGINE */ | 146 | #endif /* CONFIG_QUICC_ENGINE */ |
146 | } | 147 | } |
147 | 148 | ||
148 | #if defined(CONFIG_I2C_MPC) && defined(CONFIG_SENSORS_DS1374) | ||
149 | extern ulong ds1374_get_rtc_time(void); | ||
150 | extern int ds1374_set_rtc_time(ulong); | ||
151 | |||
152 | static int __init mpc832x_rtc_hookup(void) | ||
153 | { | ||
154 | struct timespec tv; | ||
155 | |||
156 | if (!machine_is(mpc832x_mds)) | ||
157 | return 0; | ||
158 | |||
159 | ppc_md.get_rtc_time = ds1374_get_rtc_time; | ||
160 | ppc_md.set_rtc_time = ds1374_set_rtc_time; | ||
161 | |||
162 | tv.tv_nsec = 0; | ||
163 | tv.tv_sec = (ppc_md.get_rtc_time) (); | ||
164 | do_settimeofday(&tv); | ||
165 | |||
166 | return 0; | ||
167 | } | ||
168 | |||
169 | late_initcall(mpc832x_rtc_hookup); | ||
170 | #endif | ||
171 | |||
172 | /* | 149 | /* |
173 | * Called very early, MMU is off, device-tree isn't unflattened | 150 | * Called very early, MMU is off, device-tree isn't unflattened |
174 | */ | 151 | */ |
diff --git a/arch/powerpc/platforms/83xx/mpc832x_rdb.c b/arch/powerpc/platforms/83xx/mpc832x_rdb.c index fbca336aa0ae..d4bd04001b99 100644 --- a/arch/powerpc/platforms/83xx/mpc832x_rdb.c +++ b/arch/powerpc/platforms/83xx/mpc832x_rdb.c | |||
@@ -15,7 +15,10 @@ | |||
15 | */ | 15 | */ |
16 | 16 | ||
17 | #include <linux/pci.h> | 17 | #include <linux/pci.h> |
18 | #include <linux/interrupt.h> | ||
18 | #include <linux/spi/spi.h> | 19 | #include <linux/spi/spi.h> |
20 | #include <linux/spi/mmc_spi.h> | ||
21 | #include <linux/mmc/host.h> | ||
19 | 22 | ||
20 | #include <asm/of_platform.h> | 23 | #include <asm/of_platform.h> |
21 | #include <asm/time.h> | 24 | #include <asm/time.h> |
@@ -46,15 +49,16 @@ static void mpc83xx_spi_deactivate_cs(u8 cs, u8 polarity) | |||
46 | par_io_data_set(3, 13, !polarity); | 49 | par_io_data_set(3, 13, !polarity); |
47 | } | 50 | } |
48 | 51 | ||
52 | static struct mmc_spi_platform_data mpc832x_mmc_pdata = { | ||
53 | .ocr_mask = MMC_VDD_33_34, | ||
54 | }; | ||
55 | |||
49 | static struct spi_board_info mpc832x_spi_boardinfo = { | 56 | static struct spi_board_info mpc832x_spi_boardinfo = { |
50 | .bus_num = 0x4c0, | 57 | .bus_num = 0x4c0, |
51 | .chip_select = 0, | 58 | .chip_select = 0, |
52 | .max_speed_hz = 50000000, | 59 | .max_speed_hz = 50000000, |
53 | /* | 60 | .modalias = "mmc_spi", |
54 | * XXX: This is spidev (spi in userspace) stub, should | 61 | .platform_data = &mpc832x_mmc_pdata, |
55 | * be replaced by "mmc_spi" when mmc_spi will hit mainline. | ||
56 | */ | ||
57 | .modalias = "spidev", | ||
58 | }; | 62 | }; |
59 | 63 | ||
60 | static int __init mpc832x_spi_init(void) | 64 | static int __init mpc832x_spi_init(void) |
diff --git a/arch/powerpc/platforms/83xx/mpc834x_mds.c b/arch/powerpc/platforms/83xx/mpc834x_mds.c index 00aed7c2269e..a81bb3ce6b94 100644 --- a/arch/powerpc/platforms/83xx/mpc834x_mds.c +++ b/arch/powerpc/platforms/83xx/mpc834x_mds.c | |||
@@ -106,30 +106,6 @@ static void __init mpc834x_mds_init_IRQ(void) | |||
106 | ipic_set_default_priority(); | 106 | ipic_set_default_priority(); |
107 | } | 107 | } |
108 | 108 | ||
109 | #if defined(CONFIG_I2C_MPC) && defined(CONFIG_SENSORS_DS1374) | ||
110 | extern ulong ds1374_get_rtc_time(void); | ||
111 | extern int ds1374_set_rtc_time(ulong); | ||
112 | |||
113 | static int __init mpc834x_rtc_hookup(void) | ||
114 | { | ||
115 | struct timespec tv; | ||
116 | |||
117 | if (!machine_is(mpc834x_mds)) | ||
118 | return 0; | ||
119 | |||
120 | ppc_md.get_rtc_time = ds1374_get_rtc_time; | ||
121 | ppc_md.set_rtc_time = ds1374_set_rtc_time; | ||
122 | |||
123 | tv.tv_nsec = 0; | ||
124 | tv.tv_sec = (ppc_md.get_rtc_time) (); | ||
125 | do_settimeofday(&tv); | ||
126 | |||
127 | return 0; | ||
128 | } | ||
129 | |||
130 | late_initcall(mpc834x_rtc_hookup); | ||
131 | #endif | ||
132 | |||
133 | /* | 109 | /* |
134 | * Called very early, MMU is off, device-tree isn't unflattened | 110 | * Called very early, MMU is off, device-tree isn't unflattened |
135 | */ | 111 | */ |
diff --git a/arch/powerpc/platforms/83xx/mpc836x_mds.c b/arch/powerpc/platforms/83xx/mpc836x_mds.c index 0f3855c95ff5..e40012f8f488 100644 --- a/arch/powerpc/platforms/83xx/mpc836x_mds.c +++ b/arch/powerpc/platforms/83xx/mpc836x_mds.c | |||
@@ -96,14 +96,39 @@ static void __init mpc836x_mds_setup_arch(void) | |||
96 | 96 | ||
97 | if ((np = of_find_compatible_node(NULL, "network", "ucc_geth")) | 97 | if ((np = of_find_compatible_node(NULL, "network", "ucc_geth")) |
98 | != NULL){ | 98 | != NULL){ |
99 | uint svid; | ||
100 | |||
99 | /* Reset the Ethernet PHY */ | 101 | /* Reset the Ethernet PHY */ |
100 | bcsr_regs[9] &= ~0x20; | 102 | #define BCSR9_GETHRST 0x20 |
103 | clrbits8(&bcsr_regs[9], BCSR9_GETHRST); | ||
101 | udelay(1000); | 104 | udelay(1000); |
102 | bcsr_regs[9] |= 0x20; | 105 | setbits8(&bcsr_regs[9], BCSR9_GETHRST); |
106 | |||
107 | /* handle mpc8360ea rev.2.1 erratum 2: RGMII Timing */ | ||
108 | svid = mfspr(SPRN_SVR); | ||
109 | if (svid == 0x80480021) { | ||
110 | void __iomem *immap; | ||
111 | |||
112 | immap = ioremap(get_immrbase() + 0x14a8, 8); | ||
113 | |||
114 | /* | ||
115 | * IMMR + 0x14A8[4:5] = 11 (clk delay for UCC 2) | ||
116 | * IMMR + 0x14A8[18:19] = 11 (clk delay for UCC 1) | ||
117 | */ | ||
118 | setbits32(immap, 0x0c003000); | ||
119 | |||
120 | /* | ||
121 | * IMMR + 0x14AC[20:27] = 10101010 | ||
122 | * (data delay for both UCC's) | ||
123 | */ | ||
124 | clrsetbits_be32(immap + 4, 0xff0, 0xaa0); | ||
125 | |||
126 | iounmap(immap); | ||
127 | } | ||
128 | |||
103 | iounmap(bcsr_regs); | 129 | iounmap(bcsr_regs); |
104 | of_node_put(np); | 130 | of_node_put(np); |
105 | } | 131 | } |
106 | |||
107 | #endif /* CONFIG_QUICC_ENGINE */ | 132 | #endif /* CONFIG_QUICC_ENGINE */ |
108 | } | 133 | } |
109 | 134 | ||
@@ -152,30 +177,6 @@ static void __init mpc836x_mds_init_IRQ(void) | |||
152 | #endif /* CONFIG_QUICC_ENGINE */ | 177 | #endif /* CONFIG_QUICC_ENGINE */ |
153 | } | 178 | } |
154 | 179 | ||
155 | #if defined(CONFIG_I2C_MPC) && defined(CONFIG_SENSORS_DS1374) | ||
156 | extern ulong ds1374_get_rtc_time(void); | ||
157 | extern int ds1374_set_rtc_time(ulong); | ||
158 | |||
159 | static int __init mpc8360_rtc_hookup(void) | ||
160 | { | ||
161 | struct timespec tv; | ||
162 | |||
163 | if (!machine_is(mpc836x_mds)) | ||
164 | return 0; | ||
165 | |||
166 | ppc_md.get_rtc_time = ds1374_get_rtc_time; | ||
167 | ppc_md.set_rtc_time = ds1374_set_rtc_time; | ||
168 | |||
169 | tv.tv_nsec = 0; | ||
170 | tv.tv_sec = (ppc_md.get_rtc_time) (); | ||
171 | do_settimeofday(&tv); | ||
172 | |||
173 | return 0; | ||
174 | } | ||
175 | |||
176 | late_initcall(mpc8360_rtc_hookup); | ||
177 | #endif | ||
178 | |||
179 | /* | 180 | /* |
180 | * Called very early, MMU is off, device-tree isn't unflattened | 181 | * Called very early, MMU is off, device-tree isn't unflattened |
181 | */ | 182 | */ |
diff --git a/arch/powerpc/platforms/83xx/usb.c b/arch/powerpc/platforms/83xx/usb.c index eafe7605cdac..b45160f8d084 100644 --- a/arch/powerpc/platforms/83xx/usb.c +++ b/arch/powerpc/platforms/83xx/usb.c | |||
@@ -130,7 +130,7 @@ int mpc831x_usb_cfg(void) | |||
130 | out_be32(immap + MPC83XX_SCCR_OFFS, temp); | 130 | out_be32(immap + MPC83XX_SCCR_OFFS, temp); |
131 | 131 | ||
132 | /* Configure pin mux for ULPI. There is no pin mux for UTMI */ | 132 | /* Configure pin mux for ULPI. There is no pin mux for UTMI */ |
133 | if (!strcmp(prop, "ulpi")) { | 133 | if (prop && !strcmp(prop, "ulpi")) { |
134 | temp = in_be32(immap + MPC83XX_SICRL_OFFS); | 134 | temp = in_be32(immap + MPC83XX_SICRL_OFFS); |
135 | temp &= ~MPC831X_SICRL_USB_MASK; | 135 | temp &= ~MPC831X_SICRL_USB_MASK; |
136 | temp |= MPC831X_SICRL_USB_ULPI; | 136 | temp |= MPC831X_SICRL_USB_ULPI; |
@@ -153,13 +153,13 @@ int mpc831x_usb_cfg(void) | |||
153 | usb_regs = ioremap(res.start, res.end - res.start + 1); | 153 | usb_regs = ioremap(res.start, res.end - res.start + 1); |
154 | 154 | ||
155 | /* Using on-chip PHY */ | 155 | /* Using on-chip PHY */ |
156 | if (!strcmp(prop, "utmi_wide") || | 156 | if (prop && (!strcmp(prop, "utmi_wide") || |
157 | !strcmp(prop, "utmi")) { | 157 | !strcmp(prop, "utmi"))) { |
158 | /* Set UTMI_PHY_EN, REFSEL to 48MHZ */ | 158 | /* Set UTMI_PHY_EN, REFSEL to 48MHZ */ |
159 | out_be32(usb_regs + FSL_USB2_CONTROL_OFFS, | 159 | out_be32(usb_regs + FSL_USB2_CONTROL_OFFS, |
160 | CONTROL_UTMI_PHY_EN | CONTROL_REFSEL_48MHZ); | 160 | CONTROL_UTMI_PHY_EN | CONTROL_REFSEL_48MHZ); |
161 | /* Using external UPLI PHY */ | 161 | /* Using external UPLI PHY */ |
162 | } else if (!strcmp(prop, "ulpi")) { | 162 | } else if (prop && !strcmp(prop, "ulpi")) { |
163 | /* Set PHY_CLK_SEL to ULPI */ | 163 | /* Set PHY_CLK_SEL to ULPI */ |
164 | temp = CONTROL_PHY_CLK_SEL_ULPI; | 164 | temp = CONTROL_PHY_CLK_SEL_ULPI; |
165 | #ifdef CONFIG_USB_OTG | 165 | #ifdef CONFIG_USB_OTG |
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c index 0966d093db43..c0e968a4c211 100644 --- a/arch/powerpc/platforms/cell/spufs/inode.c +++ b/arch/powerpc/platforms/cell/spufs/inode.c | |||
@@ -171,6 +171,7 @@ static int spufs_rmdir(struct inode *parent, struct dentry *dir) | |||
171 | { | 171 | { |
172 | /* remove all entries */ | 172 | /* remove all entries */ |
173 | spufs_prune_dir(dir); | 173 | spufs_prune_dir(dir); |
174 | d_drop(dir); | ||
174 | 175 | ||
175 | return simple_rmdir(parent, dir); | 176 | return simple_rmdir(parent, dir); |
176 | } | 177 | } |
diff --git a/arch/powerpc/platforms/embedded6xx/prpmc2800.c b/arch/powerpc/platforms/embedded6xx/prpmc2800.c index e484cac75095..653a5eb91c90 100644 --- a/arch/powerpc/platforms/embedded6xx/prpmc2800.c +++ b/arch/powerpc/platforms/embedded6xx/prpmc2800.c | |||
@@ -144,6 +144,7 @@ static int __init prpmc2800_probe(void) | |||
144 | strncpy(prpmc2800_platform_name, m, | 144 | strncpy(prpmc2800_platform_name, m, |
145 | min((int)len, PLATFORM_NAME_MAX - 1)); | 145 | min((int)len, PLATFORM_NAME_MAX - 1)); |
146 | 146 | ||
147 | _set_L2CR(_get_L2CR() | L2CR_L2E); | ||
147 | return 1; | 148 | return 1; |
148 | } | 149 | } |
149 | 150 | ||
diff --git a/arch/powerpc/platforms/pasemi/setup.c b/arch/powerpc/platforms/pasemi/setup.c index 3a5d112af5e0..3d62060498b4 100644 --- a/arch/powerpc/platforms/pasemi/setup.c +++ b/arch/powerpc/platforms/pasemi/setup.c | |||
@@ -214,7 +214,7 @@ static __init void pas_init_IRQ(void) | |||
214 | printk(KERN_DEBUG "OpenPIC addr: %lx\n", openpic_addr); | 214 | printk(KERN_DEBUG "OpenPIC addr: %lx\n", openpic_addr); |
215 | 215 | ||
216 | mpic = mpic_alloc(mpic_node, openpic_addr, | 216 | mpic = mpic_alloc(mpic_node, openpic_addr, |
217 | MPIC_PRIMARY|MPIC_LARGE_VECTORS|MPIC_WANTS_RESET, | 217 | MPIC_PRIMARY|MPIC_LARGE_VECTORS, |
218 | 0, 0, " PAS-OPIC "); | 218 | 0, 0, " PAS-OPIC "); |
219 | BUG_ON(!mpic); | 219 | BUG_ON(!mpic); |
220 | 220 | ||
diff --git a/arch/powerpc/platforms/pseries/Kconfig b/arch/powerpc/platforms/pseries/Kconfig index 16e4e401b820..306a9d07491d 100644 --- a/arch/powerpc/platforms/pseries/Kconfig +++ b/arch/powerpc/platforms/pseries/Kconfig | |||
@@ -21,7 +21,7 @@ config PPC_SPLPAR | |||
21 | 21 | ||
22 | config EEH | 22 | config EEH |
23 | bool "PCI Extended Error Handling (EEH)" if EMBEDDED | 23 | bool "PCI Extended Error Handling (EEH)" if EMBEDDED |
24 | depends on PPC_PSERIES | 24 | depends on PPC_PSERIES && PCI |
25 | default y if !EMBEDDED | 25 | default y if !EMBEDDED |
26 | 26 | ||
27 | config SCANLOG | 27 | config SCANLOG |
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c index fdb9b1c8f977..fdeefe54ea91 100644 --- a/arch/powerpc/platforms/pseries/setup.c +++ b/arch/powerpc/platforms/pseries/setup.c | |||
@@ -507,7 +507,8 @@ define_machine(pseries) { | |||
507 | .restart = rtas_restart, | 507 | .restart = rtas_restart, |
508 | .power_off = pSeries_power_off, | 508 | .power_off = pSeries_power_off, |
509 | .halt = rtas_halt, | 509 | .halt = rtas_halt, |
510 | .panic = rtas_os_term, | 510 | .panic = rtas_panic_msg, |
511 | .machine_shutdown = rtas_os_term, | ||
511 | .get_boot_time = rtas_get_boot_time, | 512 | .get_boot_time = rtas_get_boot_time, |
512 | .get_rtc_time = rtas_get_rtc_time, | 513 | .get_rtc_time = rtas_get_rtc_time, |
513 | .set_rtc_time = rtas_set_rtc_time, | 514 | .set_rtc_time = rtas_set_rtc_time, |
diff --git a/arch/powerpc/sysdev/uic.c b/arch/powerpc/sysdev/uic.c index 5149716c734d..847a5496b869 100644 --- a/arch/powerpc/sysdev/uic.c +++ b/arch/powerpc/sysdev/uic.c | |||
@@ -97,6 +97,22 @@ static void uic_ack_irq(unsigned int virq) | |||
97 | spin_unlock_irqrestore(&uic->lock, flags); | 97 | spin_unlock_irqrestore(&uic->lock, flags); |
98 | } | 98 | } |
99 | 99 | ||
100 | static void uic_mask_ack_irq(unsigned int virq) | ||
101 | { | ||
102 | struct uic *uic = get_irq_chip_data(virq); | ||
103 | unsigned int src = uic_irq_to_hw(virq); | ||
104 | unsigned long flags; | ||
105 | u32 er, sr; | ||
106 | |||
107 | sr = 1 << (31-src); | ||
108 | spin_lock_irqsave(&uic->lock, flags); | ||
109 | er = mfdcr(uic->dcrbase + UIC_ER); | ||
110 | er &= ~sr; | ||
111 | mtdcr(uic->dcrbase + UIC_ER, er); | ||
112 | mtdcr(uic->dcrbase + UIC_SR, sr); | ||
113 | spin_unlock_irqrestore(&uic->lock, flags); | ||
114 | } | ||
115 | |||
100 | static int uic_set_irq_type(unsigned int virq, unsigned int flow_type) | 116 | static int uic_set_irq_type(unsigned int virq, unsigned int flow_type) |
101 | { | 117 | { |
102 | struct uic *uic = get_irq_chip_data(virq); | 118 | struct uic *uic = get_irq_chip_data(virq); |
@@ -152,7 +168,7 @@ static struct irq_chip uic_irq_chip = { | |||
152 | .typename = " UIC ", | 168 | .typename = " UIC ", |
153 | .unmask = uic_unmask_irq, | 169 | .unmask = uic_unmask_irq, |
154 | .mask = uic_mask_irq, | 170 | .mask = uic_mask_irq, |
155 | /* .mask_ack = uic_mask_irq_and_ack, */ | 171 | .mask_ack = uic_mask_ack_irq, |
156 | .ack = uic_ack_irq, | 172 | .ack = uic_ack_irq, |
157 | .set_type = uic_set_irq_type, | 173 | .set_type = uic_set_irq_type, |
158 | }; | 174 | }; |
diff --git a/arch/ppc/kernel/setup.c b/arch/ppc/kernel/setup.c index aac88c2f3db9..5255bd80aa6b 100644 --- a/arch/ppc/kernel/setup.c +++ b/arch/ppc/kernel/setup.c | |||
@@ -312,7 +312,14 @@ early_init(int r3, int r4, int r5) | |||
312 | * Identify the CPU type and fix up code sections | 312 | * Identify the CPU type and fix up code sections |
313 | * that depend on which cpu we have. | 313 | * that depend on which cpu we have. |
314 | */ | 314 | */ |
315 | #if defined(CONFIG_440EP) && defined(CONFIG_PPC_FPU) | ||
316 | /* We pass the virtual PVR here for 440EP as 440EP and 440GR have | ||
317 | * identical PVRs and there is no reliable way to check for the FPU | ||
318 | */ | ||
319 | spec = identify_cpu(offset, (mfspr(SPRN_PVR) | 0x8)); | ||
320 | #else | ||
315 | spec = identify_cpu(offset, mfspr(SPRN_PVR)); | 321 | spec = identify_cpu(offset, mfspr(SPRN_PVR)); |
322 | #endif | ||
316 | do_feature_fixups(spec->cpu_features, | 323 | do_feature_fixups(spec->cpu_features, |
317 | PTRRELOC(&__start___ftr_fixup), | 324 | PTRRELOC(&__start___ftr_fixup), |
318 | PTRRELOC(&__stop___ftr_fixup)); | 325 | PTRRELOC(&__stop___ftr_fixup)); |
diff --git a/arch/ppc/mm/init.c b/arch/ppc/mm/init.c index 390dd1995c2a..dd898d32480e 100644 --- a/arch/ppc/mm/init.c +++ b/arch/ppc/mm/init.c | |||
@@ -561,7 +561,7 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, | |||
561 | * That means the zeroed TLB has to be invalidated | 561 | * That means the zeroed TLB has to be invalidated |
562 | * whenever a page miss occurs. | 562 | * whenever a page miss occurs. |
563 | */ | 563 | */ |
564 | _tlbie(address); | 564 | _tlbie(address, 0 /* 8xx doesn't care about PID */); |
565 | #endif | 565 | #endif |
566 | if (!PageReserved(page) | 566 | if (!PageReserved(page) |
567 | && !test_bit(PG_arch_1, &page->flags)) { | 567 | && !test_bit(PG_arch_1, &page->flags)) { |
diff --git a/arch/ppc/mm/mmu_decl.h b/arch/ppc/mm/mmu_decl.h index f1d4f2109a99..b298b60c202f 100644 --- a/arch/ppc/mm/mmu_decl.h +++ b/arch/ppc/mm/mmu_decl.h | |||
@@ -49,7 +49,7 @@ extern unsigned int num_tlbcam_entries; | |||
49 | * architectures. -- Dan | 49 | * architectures. -- Dan |
50 | */ | 50 | */ |
51 | #if defined(CONFIG_8xx) | 51 | #if defined(CONFIG_8xx) |
52 | #define flush_HPTE(X, va, pg) _tlbie(va) | 52 | #define flush_HPTE(X, va, pg) _tlbie(va, 0 /* 8xx doesn't care about PID */) |
53 | #define MMU_init_hw() do { } while(0) | 53 | #define MMU_init_hw() do { } while(0) |
54 | #define mmu_mapin_ram() (0UL) | 54 | #define mmu_mapin_ram() (0UL) |
55 | 55 | ||
diff --git a/arch/ppc/platforms/4xx/yucca.c b/arch/ppc/platforms/4xx/yucca.c index a83b0baea011..66a44ff0d926 100644 --- a/arch/ppc/platforms/4xx/yucca.c +++ b/arch/ppc/platforms/4xx/yucca.c | |||
@@ -211,6 +211,7 @@ static void __init yucca_setup_pcie_fpga_rootpoint(int port) | |||
211 | break; | 211 | break; |
212 | 212 | ||
213 | default: | 213 | default: |
214 | iounmap(pcie_reg_fpga_base); | ||
214 | return; | 215 | return; |
215 | } | 216 | } |
216 | 217 | ||
diff --git a/arch/ppc/syslib/virtex_devices.c b/arch/ppc/syslib/virtex_devices.c index ace4ec08de51..f658ff3b3890 100644 --- a/arch/ppc/syslib/virtex_devices.c +++ b/arch/ppc/syslib/virtex_devices.c | |||
@@ -87,6 +87,29 @@ | |||
87 | }, \ | 87 | }, \ |
88 | } | 88 | } |
89 | 89 | ||
90 | #define XPAR_AC97_CONTROLLER_REFERENCE(num) { \ | ||
91 | .name = "ml403_ac97cr", \ | ||
92 | .id = num, \ | ||
93 | .num_resources = 3, \ | ||
94 | .resource = (struct resource[]) { \ | ||
95 | { \ | ||
96 | .start = XPAR_OPB_AC97_CONTROLLER_REF_##num##_BASEADDR, \ | ||
97 | .end = XPAR_OPB_AC97_CONTROLLER_REF_##num##_HIGHADDR, \ | ||
98 | .flags = IORESOURCE_MEM, \ | ||
99 | }, \ | ||
100 | { \ | ||
101 | .start = XPAR_OPB_INTC_0_OPB_AC97_CONTROLLER_REF_##num##_PLAYBACK_INTERRUPT_INTR, \ | ||
102 | .end = XPAR_OPB_INTC_0_OPB_AC97_CONTROLLER_REF_##num##_PLAYBACK_INTERRUPT_INTR, \ | ||
103 | .flags = IORESOURCE_IRQ, \ | ||
104 | }, \ | ||
105 | { \ | ||
106 | .start = XPAR_OPB_INTC_0_OPB_AC97_CONTROLLER_REF_##num##_RECORD_INTERRUPT_INTR, \ | ||
107 | .end = XPAR_OPB_INTC_0_OPB_AC97_CONTROLLER_REF_##num##_RECORD_INTERRUPT_INTR, \ | ||
108 | .flags = IORESOURCE_IRQ, \ | ||
109 | }, \ | ||
110 | }, \ | ||
111 | } | ||
112 | |||
90 | /* UART 8250 driver platform data table */ | 113 | /* UART 8250 driver platform data table */ |
91 | struct plat_serial8250_port virtex_serial_platform_data[] = { | 114 | struct plat_serial8250_port virtex_serial_platform_data[] = { |
92 | #if defined(XPAR_UARTNS550_0_BASEADDR) | 115 | #if defined(XPAR_UARTNS550_0_BASEADDR) |
@@ -173,6 +196,14 @@ struct platform_device virtex_platform_devices[] = { | |||
173 | #if defined(XPAR_TFT_3_BASEADDR) | 196 | #if defined(XPAR_TFT_3_BASEADDR) |
174 | XPAR_TFT(3), | 197 | XPAR_TFT(3), |
175 | #endif | 198 | #endif |
199 | |||
200 | /* AC97 Controller Reference instances */ | ||
201 | #if defined(XPAR_OPB_AC97_CONTROLLER_REF_0_BASEADDR) | ||
202 | XPAR_AC97_CONTROLLER_REFERENCE(0), | ||
203 | #endif | ||
204 | #if defined(XPAR_OPB_AC97_CONTROLLER_REF_1_BASEADDR) | ||
205 | XPAR_AC97_CONTROLLER_REFERENCE(1), | ||
206 | #endif | ||
176 | }; | 207 | }; |
177 | 208 | ||
178 | /* Early serial support functions */ | 209 | /* Early serial support functions */ |
diff --git a/arch/s390/appldata/appldata.h b/arch/s390/appldata/appldata.h index 4069b81f7f1d..db3ae8505103 100644 --- a/arch/s390/appldata/appldata.h +++ b/arch/s390/appldata/appldata.h | |||
@@ -45,7 +45,6 @@ struct appldata_ops { | |||
45 | int active; /* monitoring status */ | 45 | int active; /* monitoring status */ |
46 | 46 | ||
47 | /* fill in from here */ | 47 | /* fill in from here */ |
48 | unsigned int ctl_nr; /* sysctl ID */ | ||
49 | char name[APPLDATA_PROC_NAME_LENGTH]; /* name of /proc fs node */ | 48 | char name[APPLDATA_PROC_NAME_LENGTH]; /* name of /proc fs node */ |
50 | unsigned char record_nr; /* Record Nr. for Product ID */ | 49 | unsigned char record_nr; /* Record Nr. for Product ID */ |
51 | void (*callback)(void *data); /* callback function */ | 50 | void (*callback)(void *data); /* callback function */ |
diff --git a/arch/s390/appldata/appldata_base.c b/arch/s390/appldata/appldata_base.c index ac61cf43a7d9..655d52543e2d 100644 --- a/arch/s390/appldata/appldata_base.c +++ b/arch/s390/appldata/appldata_base.c | |||
@@ -53,29 +53,26 @@ static int appldata_interval_handler(ctl_table *ctl, int write, | |||
53 | static struct ctl_table_header *appldata_sysctl_header; | 53 | static struct ctl_table_header *appldata_sysctl_header; |
54 | static struct ctl_table appldata_table[] = { | 54 | static struct ctl_table appldata_table[] = { |
55 | { | 55 | { |
56 | .ctl_name = CTL_APPLDATA_TIMER, | ||
57 | .procname = "timer", | 56 | .procname = "timer", |
58 | .mode = S_IRUGO | S_IWUSR, | 57 | .mode = S_IRUGO | S_IWUSR, |
59 | .proc_handler = &appldata_timer_handler, | 58 | .proc_handler = &appldata_timer_handler, |
60 | }, | 59 | }, |
61 | { | 60 | { |
62 | .ctl_name = CTL_APPLDATA_INTERVAL, | ||
63 | .procname = "interval", | 61 | .procname = "interval", |
64 | .mode = S_IRUGO | S_IWUSR, | 62 | .mode = S_IRUGO | S_IWUSR, |
65 | .proc_handler = &appldata_interval_handler, | 63 | .proc_handler = &appldata_interval_handler, |
66 | }, | 64 | }, |
67 | { .ctl_name = 0 } | 65 | { }, |
68 | }; | 66 | }; |
69 | 67 | ||
70 | static struct ctl_table appldata_dir_table[] = { | 68 | static struct ctl_table appldata_dir_table[] = { |
71 | { | 69 | { |
72 | .ctl_name = CTL_APPLDATA, | ||
73 | .procname = appldata_proc_name, | 70 | .procname = appldata_proc_name, |
74 | .maxlen = 0, | 71 | .maxlen = 0, |
75 | .mode = S_IRUGO | S_IXUGO, | 72 | .mode = S_IRUGO | S_IXUGO, |
76 | .child = appldata_table, | 73 | .child = appldata_table, |
77 | }, | 74 | }, |
78 | { .ctl_name = 0 } | 75 | { }, |
79 | }; | 76 | }; |
80 | 77 | ||
81 | /* | 78 | /* |
@@ -441,75 +438,38 @@ out: | |||
441 | */ | 438 | */ |
442 | int appldata_register_ops(struct appldata_ops *ops) | 439 | int appldata_register_ops(struct appldata_ops *ops) |
443 | { | 440 | { |
444 | struct list_head *lh; | 441 | if ((ops->size > APPLDATA_MAX_REC_SIZE) || (ops->size < 0)) |
445 | struct appldata_ops *tmp_ops; | 442 | return -EINVAL; |
446 | int i; | ||
447 | |||
448 | i = 0; | ||
449 | 443 | ||
450 | if ((ops->size > APPLDATA_MAX_REC_SIZE) || | 444 | ops->ctl_table = kzalloc(4 * sizeof(struct ctl_table), GFP_KERNEL); |
451 | (ops->size < 0)){ | 445 | if (!ops->ctl_table) |
452 | P_ERROR("Invalid size of %s record = %i, maximum = %i!\n", | ||
453 | ops->name, ops->size, APPLDATA_MAX_REC_SIZE); | ||
454 | return -ENOMEM; | ||
455 | } | ||
456 | if ((ops->ctl_nr == CTL_APPLDATA) || | ||
457 | (ops->ctl_nr == CTL_APPLDATA_TIMER) || | ||
458 | (ops->ctl_nr == CTL_APPLDATA_INTERVAL)) { | ||
459 | P_ERROR("ctl_nr %i already in use!\n", ops->ctl_nr); | ||
460 | return -EBUSY; | ||
461 | } | ||
462 | ops->ctl_table = kzalloc(4*sizeof(struct ctl_table), GFP_KERNEL); | ||
463 | if (ops->ctl_table == NULL) { | ||
464 | P_ERROR("Not enough memory for %s ctl_table!\n", ops->name); | ||
465 | return -ENOMEM; | 446 | return -ENOMEM; |
466 | } | ||
467 | 447 | ||
468 | spin_lock(&appldata_ops_lock); | 448 | spin_lock(&appldata_ops_lock); |
469 | list_for_each(lh, &appldata_ops_list) { | ||
470 | tmp_ops = list_entry(lh, struct appldata_ops, list); | ||
471 | P_DEBUG("register_ops loop: %i) name = %s, ctl = %i\n", | ||
472 | ++i, tmp_ops->name, tmp_ops->ctl_nr); | ||
473 | P_DEBUG("Comparing %s (ctl %i) with %s (ctl %i)\n", | ||
474 | tmp_ops->name, tmp_ops->ctl_nr, ops->name, | ||
475 | ops->ctl_nr); | ||
476 | if (strncmp(tmp_ops->name, ops->name, | ||
477 | APPLDATA_PROC_NAME_LENGTH) == 0) { | ||
478 | P_ERROR("Name \"%s\" already registered!\n", ops->name); | ||
479 | kfree(ops->ctl_table); | ||
480 | spin_unlock(&appldata_ops_lock); | ||
481 | return -EBUSY; | ||
482 | } | ||
483 | if (tmp_ops->ctl_nr == ops->ctl_nr) { | ||
484 | P_ERROR("ctl_nr %i already registered!\n", ops->ctl_nr); | ||
485 | kfree(ops->ctl_table); | ||
486 | spin_unlock(&appldata_ops_lock); | ||
487 | return -EBUSY; | ||
488 | } | ||
489 | } | ||
490 | list_add(&ops->list, &appldata_ops_list); | 449 | list_add(&ops->list, &appldata_ops_list); |
491 | spin_unlock(&appldata_ops_lock); | 450 | spin_unlock(&appldata_ops_lock); |
492 | 451 | ||
493 | ops->ctl_table[0].ctl_name = CTL_APPLDATA; | ||
494 | ops->ctl_table[0].procname = appldata_proc_name; | 452 | ops->ctl_table[0].procname = appldata_proc_name; |
495 | ops->ctl_table[0].maxlen = 0; | 453 | ops->ctl_table[0].maxlen = 0; |
496 | ops->ctl_table[0].mode = S_IRUGO | S_IXUGO; | 454 | ops->ctl_table[0].mode = S_IRUGO | S_IXUGO; |
497 | ops->ctl_table[0].child = &ops->ctl_table[2]; | 455 | ops->ctl_table[0].child = &ops->ctl_table[2]; |
498 | 456 | ||
499 | ops->ctl_table[1].ctl_name = 0; | ||
500 | |||
501 | ops->ctl_table[2].ctl_name = ops->ctl_nr; | ||
502 | ops->ctl_table[2].procname = ops->name; | 457 | ops->ctl_table[2].procname = ops->name; |
503 | ops->ctl_table[2].mode = S_IRUGO | S_IWUSR; | 458 | ops->ctl_table[2].mode = S_IRUGO | S_IWUSR; |
504 | ops->ctl_table[2].proc_handler = appldata_generic_handler; | 459 | ops->ctl_table[2].proc_handler = appldata_generic_handler; |
505 | ops->ctl_table[2].data = ops; | 460 | ops->ctl_table[2].data = ops; |
506 | 461 | ||
507 | ops->ctl_table[3].ctl_name = 0; | ||
508 | |||
509 | ops->sysctl_header = register_sysctl_table(ops->ctl_table); | 462 | ops->sysctl_header = register_sysctl_table(ops->ctl_table); |
510 | 463 | if (!ops->sysctl_header) | |
464 | goto out; | ||
511 | P_INFO("%s-ops registered!\n", ops->name); | 465 | P_INFO("%s-ops registered!\n", ops->name); |
512 | return 0; | 466 | return 0; |
467 | out: | ||
468 | spin_lock(&appldata_ops_lock); | ||
469 | list_del(&ops->list); | ||
470 | spin_unlock(&appldata_ops_lock); | ||
471 | kfree(ops->ctl_table); | ||
472 | return -ENOMEM; | ||
513 | } | 473 | } |
514 | 474 | ||
515 | /* | 475 | /* |
@@ -519,15 +479,11 @@ int appldata_register_ops(struct appldata_ops *ops) | |||
519 | */ | 479 | */ |
520 | void appldata_unregister_ops(struct appldata_ops *ops) | 480 | void appldata_unregister_ops(struct appldata_ops *ops) |
521 | { | 481 | { |
522 | void *table; | ||
523 | spin_lock(&appldata_ops_lock); | 482 | spin_lock(&appldata_ops_lock); |
524 | list_del(&ops->list); | 483 | list_del(&ops->list); |
525 | /* at that point any incoming access will fail */ | ||
526 | table = ops->ctl_table; | ||
527 | ops->ctl_table = NULL; | ||
528 | spin_unlock(&appldata_ops_lock); | 484 | spin_unlock(&appldata_ops_lock); |
529 | unregister_sysctl_table(ops->sysctl_header); | 485 | unregister_sysctl_table(ops->sysctl_header); |
530 | kfree(table); | 486 | kfree(ops->ctl_table); |
531 | P_INFO("%s-ops unregistered!\n", ops->name); | 487 | P_INFO("%s-ops unregistered!\n", ops->name); |
532 | } | 488 | } |
533 | /********************** module-ops management <END> **************************/ | 489 | /********************** module-ops management <END> **************************/ |
diff --git a/arch/s390/appldata/appldata_mem.c b/arch/s390/appldata/appldata_mem.c index 697eb30a68a3..51181ccdb87b 100644 --- a/arch/s390/appldata/appldata_mem.c +++ b/arch/s390/appldata/appldata_mem.c | |||
@@ -147,7 +147,6 @@ static void appldata_get_mem_data(void *data) | |||
147 | 147 | ||
148 | 148 | ||
149 | static struct appldata_ops ops = { | 149 | static struct appldata_ops ops = { |
150 | .ctl_nr = CTL_APPLDATA_MEM, | ||
151 | .name = "mem", | 150 | .name = "mem", |
152 | .record_nr = APPLDATA_RECORD_MEM_ID, | 151 | .record_nr = APPLDATA_RECORD_MEM_ID, |
153 | .size = sizeof(struct appldata_mem_data), | 152 | .size = sizeof(struct appldata_mem_data), |
diff --git a/arch/s390/appldata/appldata_net_sum.c b/arch/s390/appldata/appldata_net_sum.c index 6c1815a47714..4d8344336001 100644 --- a/arch/s390/appldata/appldata_net_sum.c +++ b/arch/s390/appldata/appldata_net_sum.c | |||
@@ -142,7 +142,6 @@ static void appldata_get_net_sum_data(void *data) | |||
142 | 142 | ||
143 | 143 | ||
144 | static struct appldata_ops ops = { | 144 | static struct appldata_ops ops = { |
145 | .ctl_nr = CTL_APPLDATA_NET_SUM, | ||
146 | .name = "net_sum", | 145 | .name = "net_sum", |
147 | .record_nr = APPLDATA_RECORD_NET_SUM_ID, | 146 | .record_nr = APPLDATA_RECORD_NET_SUM_ID, |
148 | .size = sizeof(struct appldata_net_sum_data), | 147 | .size = sizeof(struct appldata_net_sum_data), |
diff --git a/arch/s390/appldata/appldata_os.c b/arch/s390/appldata/appldata_os.c index 76a15523ae9e..6b3eafe10453 100644 --- a/arch/s390/appldata/appldata_os.c +++ b/arch/s390/appldata/appldata_os.c | |||
@@ -82,7 +82,6 @@ struct appldata_os_data { | |||
82 | static struct appldata_os_data *appldata_os_data; | 82 | static struct appldata_os_data *appldata_os_data; |
83 | 83 | ||
84 | static struct appldata_ops ops = { | 84 | static struct appldata_ops ops = { |
85 | .ctl_nr = CTL_APPLDATA_OS, | ||
86 | .name = "os", | 85 | .name = "os", |
87 | .record_nr = APPLDATA_RECORD_OS_ID, | 86 | .record_nr = APPLDATA_RECORD_OS_ID, |
88 | .owner = THIS_MODULE, | 87 | .owner = THIS_MODULE, |
diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c index 8bf4ae1150be..1b3af7dab816 100644 --- a/arch/s390/kernel/early.c +++ b/arch/s390/kernel/early.c | |||
@@ -200,7 +200,7 @@ static noinline __init void find_memory_chunks(unsigned long memsize) | |||
200 | cc = __tprot(addr); | 200 | cc = __tprot(addr); |
201 | while (cc == old_cc) { | 201 | while (cc == old_cc) { |
202 | addr += CHUNK_INCR; | 202 | addr += CHUNK_INCR; |
203 | if (addr >= memsize) | 203 | if (memsize && addr >= memsize) |
204 | break; | 204 | break; |
205 | #ifndef CONFIG_64BIT | 205 | #ifndef CONFIG_64BIT |
206 | if (addr == ADDR2G) | 206 | if (addr == ADDR2G) |
diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S index 139ca153d5cc..b2b2edc40eb1 100644 --- a/arch/s390/kernel/entry.S +++ b/arch/s390/kernel/entry.S | |||
@@ -69,13 +69,31 @@ STACK_SIZE = 1 << STACK_SHIFT | |||
69 | basr %r14,%r1 | 69 | basr %r14,%r1 |
70 | .endm | 70 | .endm |
71 | 71 | ||
72 | .macro LOCKDEP_SYS_EXIT | 72 | .macro TRACE_IRQS_CHECK |
73 | l %r1,BASED(.Llockdep_sys_exit) | 73 | tm SP_PSW(%r15),0x03 # irqs enabled? |
74 | jz 0f | ||
75 | l %r1,BASED(.Ltrace_irq_on) | ||
74 | basr %r14,%r1 | 76 | basr %r14,%r1 |
77 | j 1f | ||
78 | 0: l %r1,BASED(.Ltrace_irq_off) | ||
79 | basr %r14,%r1 | ||
80 | 1: | ||
75 | .endm | 81 | .endm |
76 | #else | 82 | #else |
77 | #define TRACE_IRQS_ON | 83 | #define TRACE_IRQS_ON |
78 | #define TRACE_IRQS_OFF | 84 | #define TRACE_IRQS_OFF |
85 | #define TRACE_IRQS_CHECK | ||
86 | #endif | ||
87 | |||
88 | #ifdef CONFIG_LOCKDEP | ||
89 | .macro LOCKDEP_SYS_EXIT | ||
90 | tm SP_PSW+1(%r15),0x01 # returning to user ? | ||
91 | jz 0f | ||
92 | l %r1,BASED(.Llockdep_sys_exit) | ||
93 | basr %r14,%r1 | ||
94 | 0: | ||
95 | .endm | ||
96 | #else | ||
79 | #define LOCKDEP_SYS_EXIT | 97 | #define LOCKDEP_SYS_EXIT |
80 | #endif | 98 | #endif |
81 | 99 | ||
@@ -234,8 +252,6 @@ sysc_saveall: | |||
234 | lh %r7,0x8a # get svc number from lowcore | 252 | lh %r7,0x8a # get svc number from lowcore |
235 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING | 253 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING |
236 | sysc_vtime: | 254 | sysc_vtime: |
237 | tm SP_PSW+1(%r15),0x01 # interrupting from user ? | ||
238 | bz BASED(sysc_do_svc) | ||
239 | UPDATE_VTIME __LC_EXIT_TIMER,__LC_SYNC_ENTER_TIMER,__LC_USER_TIMER | 255 | UPDATE_VTIME __LC_EXIT_TIMER,__LC_SYNC_ENTER_TIMER,__LC_USER_TIMER |
240 | sysc_stime: | 256 | sysc_stime: |
241 | UPDATE_VTIME __LC_LAST_UPDATE_TIMER,__LC_EXIT_TIMER,__LC_SYSTEM_TIMER | 257 | UPDATE_VTIME __LC_LAST_UPDATE_TIMER,__LC_EXIT_TIMER,__LC_SYSTEM_TIMER |
@@ -263,19 +279,34 @@ sysc_do_restart: | |||
263 | 279 | ||
264 | sysc_return: | 280 | sysc_return: |
265 | tm SP_PSW+1(%r15),0x01 # returning to user ? | 281 | tm SP_PSW+1(%r15),0x01 # returning to user ? |
266 | bno BASED(sysc_leave) | 282 | bno BASED(sysc_restore) |
267 | tm __TI_flags+3(%r9),_TIF_WORK_SVC | 283 | tm __TI_flags+3(%r9),_TIF_WORK_SVC |
268 | bnz BASED(sysc_work) # there is work to do (signals etc.) | 284 | bnz BASED(sysc_work) # there is work to do (signals etc.) |
285 | sysc_restore: | ||
286 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
287 | la %r1,BASED(sysc_restore_trace_psw) | ||
288 | lpsw 0(%r1) | ||
289 | sysc_restore_trace: | ||
290 | TRACE_IRQS_CHECK | ||
269 | LOCKDEP_SYS_EXIT | 291 | LOCKDEP_SYS_EXIT |
292 | #endif | ||
270 | sysc_leave: | 293 | sysc_leave: |
271 | RESTORE_ALL __LC_RETURN_PSW,1 | 294 | RESTORE_ALL __LC_RETURN_PSW,1 |
295 | sysc_done: | ||
296 | |||
297 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
298 | .align 8 | ||
299 | .globl sysc_restore_trace_psw | ||
300 | sysc_restore_trace_psw: | ||
301 | .long 0, sysc_restore_trace + 0x80000000 | ||
302 | #endif | ||
272 | 303 | ||
273 | # | 304 | # |
274 | # recheck if there is more work to do | 305 | # recheck if there is more work to do |
275 | # | 306 | # |
276 | sysc_work_loop: | 307 | sysc_work_loop: |
277 | tm __TI_flags+3(%r9),_TIF_WORK_SVC | 308 | tm __TI_flags+3(%r9),_TIF_WORK_SVC |
278 | bz BASED(sysc_leave) # there is no work to do | 309 | bz BASED(sysc_restore) # there is no work to do |
279 | # | 310 | # |
280 | # One of the work bits is on. Find out which one. | 311 | # One of the work bits is on. Find out which one. |
281 | # | 312 | # |
@@ -290,8 +321,8 @@ sysc_work: | |||
290 | bo BASED(sysc_restart) | 321 | bo BASED(sysc_restart) |
291 | tm __TI_flags+3(%r9),_TIF_SINGLE_STEP | 322 | tm __TI_flags+3(%r9),_TIF_SINGLE_STEP |
292 | bo BASED(sysc_singlestep) | 323 | bo BASED(sysc_singlestep) |
293 | LOCKDEP_SYS_EXIT | 324 | b BASED(sysc_restore) |
294 | b BASED(sysc_leave) | 325 | sysc_work_done: |
295 | 326 | ||
296 | # | 327 | # |
297 | # _TIF_NEED_RESCHED is set, call schedule | 328 | # _TIF_NEED_RESCHED is set, call schedule |
@@ -458,6 +489,7 @@ pgm_check_handler: | |||
458 | pgm_no_vtime: | 489 | pgm_no_vtime: |
459 | #endif | 490 | #endif |
460 | l %r9,__LC_THREAD_INFO # load pointer to thread_info struct | 491 | l %r9,__LC_THREAD_INFO # load pointer to thread_info struct |
492 | TRACE_IRQS_OFF | ||
461 | l %r3,__LC_PGM_ILC # load program interruption code | 493 | l %r3,__LC_PGM_ILC # load program interruption code |
462 | la %r8,0x7f | 494 | la %r8,0x7f |
463 | nr %r8,%r3 | 495 | nr %r8,%r3 |
@@ -497,6 +529,7 @@ pgm_per_std: | |||
497 | pgm_no_vtime2: | 529 | pgm_no_vtime2: |
498 | #endif | 530 | #endif |
499 | l %r9,__LC_THREAD_INFO # load pointer to thread_info struct | 531 | l %r9,__LC_THREAD_INFO # load pointer to thread_info struct |
532 | TRACE_IRQS_OFF | ||
500 | l %r1,__TI_task(%r9) | 533 | l %r1,__TI_task(%r9) |
501 | mvc __THREAD_per+__PER_atmid(2,%r1),__LC_PER_ATMID | 534 | mvc __THREAD_per+__PER_atmid(2,%r1),__LC_PER_ATMID |
502 | mvc __THREAD_per+__PER_address(4,%r1),__LC_PER_ADDRESS | 535 | mvc __THREAD_per+__PER_address(4,%r1),__LC_PER_ADDRESS |
@@ -517,15 +550,13 @@ pgm_svcper: | |||
517 | SAVE_ALL_SYNC __LC_SVC_OLD_PSW,__LC_SAVE_AREA | 550 | SAVE_ALL_SYNC __LC_SVC_OLD_PSW,__LC_SAVE_AREA |
518 | CREATE_STACK_FRAME __LC_SVC_OLD_PSW,__LC_SAVE_AREA | 551 | CREATE_STACK_FRAME __LC_SVC_OLD_PSW,__LC_SAVE_AREA |
519 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING | 552 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING |
520 | tm SP_PSW+1(%r15),0x01 # interrupting from user ? | ||
521 | bz BASED(pgm_no_vtime3) | ||
522 | UPDATE_VTIME __LC_EXIT_TIMER,__LC_SYNC_ENTER_TIMER,__LC_USER_TIMER | 553 | UPDATE_VTIME __LC_EXIT_TIMER,__LC_SYNC_ENTER_TIMER,__LC_USER_TIMER |
523 | UPDATE_VTIME __LC_LAST_UPDATE_TIMER,__LC_EXIT_TIMER,__LC_SYSTEM_TIMER | 554 | UPDATE_VTIME __LC_LAST_UPDATE_TIMER,__LC_EXIT_TIMER,__LC_SYSTEM_TIMER |
524 | mvc __LC_LAST_UPDATE_TIMER(8),__LC_SYNC_ENTER_TIMER | 555 | mvc __LC_LAST_UPDATE_TIMER(8),__LC_SYNC_ENTER_TIMER |
525 | pgm_no_vtime3: | ||
526 | #endif | 556 | #endif |
527 | lh %r7,0x8a # get svc number from lowcore | 557 | lh %r7,0x8a # get svc number from lowcore |
528 | l %r9,__LC_THREAD_INFO # load pointer to thread_info struct | 558 | l %r9,__LC_THREAD_INFO # load pointer to thread_info struct |
559 | TRACE_IRQS_OFF | ||
529 | l %r1,__TI_task(%r9) | 560 | l %r1,__TI_task(%r9) |
530 | mvc __THREAD_per+__PER_atmid(2,%r1),__LC_PER_ATMID | 561 | mvc __THREAD_per+__PER_atmid(2,%r1),__LC_PER_ATMID |
531 | mvc __THREAD_per+__PER_address(4,%r1),__LC_PER_ADDRESS | 562 | mvc __THREAD_per+__PER_address(4,%r1),__LC_PER_ADDRESS |
@@ -542,7 +573,7 @@ kernel_per: | |||
542 | mvi SP_TRAP+1(%r15),0x28 # set trap indication to pgm check | 573 | mvi SP_TRAP+1(%r15),0x28 # set trap indication to pgm check |
543 | la %r2,SP_PTREGS(%r15) # address of register-save area | 574 | la %r2,SP_PTREGS(%r15) # address of register-save area |
544 | l %r1,BASED(.Lhandle_per) # load adr. of per handler | 575 | l %r1,BASED(.Lhandle_per) # load adr. of per handler |
545 | la %r14,BASED(sysc_leave) # load adr. of system return | 576 | la %r14,BASED(sysc_restore)# load adr. of system return |
546 | br %r1 # branch to do_single_step | 577 | br %r1 # branch to do_single_step |
547 | 578 | ||
548 | /* | 579 | /* |
@@ -569,26 +600,38 @@ io_no_vtime: | |||
569 | l %r1,BASED(.Ldo_IRQ) # load address of do_IRQ | 600 | l %r1,BASED(.Ldo_IRQ) # load address of do_IRQ |
570 | la %r2,SP_PTREGS(%r15) # address of register-save area | 601 | la %r2,SP_PTREGS(%r15) # address of register-save area |
571 | basr %r14,%r1 # branch to standard irq handler | 602 | basr %r14,%r1 # branch to standard irq handler |
572 | TRACE_IRQS_ON | ||
573 | |||
574 | io_return: | 603 | io_return: |
575 | tm SP_PSW+1(%r15),0x01 # returning to user ? | 604 | tm SP_PSW+1(%r15),0x01 # returning to user ? |
576 | #ifdef CONFIG_PREEMPT | 605 | #ifdef CONFIG_PREEMPT |
577 | bno BASED(io_preempt) # no -> check for preemptive scheduling | 606 | bno BASED(io_preempt) # no -> check for preemptive scheduling |
578 | #else | 607 | #else |
579 | bno BASED(io_leave) # no-> skip resched & signal | 608 | bno BASED(io_restore) # no-> skip resched & signal |
580 | #endif | 609 | #endif |
581 | tm __TI_flags+3(%r9),_TIF_WORK_INT | 610 | tm __TI_flags+3(%r9),_TIF_WORK_INT |
582 | bnz BASED(io_work) # there is work to do (signals etc.) | 611 | bnz BASED(io_work) # there is work to do (signals etc.) |
612 | io_restore: | ||
613 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
614 | la %r1,BASED(io_restore_trace_psw) | ||
615 | lpsw 0(%r1) | ||
616 | io_restore_trace: | ||
617 | TRACE_IRQS_CHECK | ||
583 | LOCKDEP_SYS_EXIT | 618 | LOCKDEP_SYS_EXIT |
619 | #endif | ||
584 | io_leave: | 620 | io_leave: |
585 | RESTORE_ALL __LC_RETURN_PSW,0 | 621 | RESTORE_ALL __LC_RETURN_PSW,0 |
586 | io_done: | 622 | io_done: |
587 | 623 | ||
624 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
625 | .align 8 | ||
626 | .globl io_restore_trace_psw | ||
627 | io_restore_trace_psw: | ||
628 | .long 0, io_restore_trace + 0x80000000 | ||
629 | #endif | ||
630 | |||
588 | #ifdef CONFIG_PREEMPT | 631 | #ifdef CONFIG_PREEMPT |
589 | io_preempt: | 632 | io_preempt: |
590 | icm %r0,15,__TI_precount(%r9) | 633 | icm %r0,15,__TI_precount(%r9) |
591 | bnz BASED(io_leave) | 634 | bnz BASED(io_restore) |
592 | l %r1,SP_R15(%r15) | 635 | l %r1,SP_R15(%r15) |
593 | s %r1,BASED(.Lc_spsize) | 636 | s %r1,BASED(.Lc_spsize) |
594 | mvc SP_PTREGS(__PT_SIZE,%r1),SP_PTREGS(%r15) | 637 | mvc SP_PTREGS(__PT_SIZE,%r1),SP_PTREGS(%r15) |
@@ -596,14 +639,10 @@ io_preempt: | |||
596 | lr %r15,%r1 | 639 | lr %r15,%r1 |
597 | io_resume_loop: | 640 | io_resume_loop: |
598 | tm __TI_flags+3(%r9),_TIF_NEED_RESCHED | 641 | tm __TI_flags+3(%r9),_TIF_NEED_RESCHED |
599 | bno BASED(io_leave) | 642 | bno BASED(io_restore) |
600 | mvc __TI_precount(4,%r9),BASED(.Lc_pactive) | 643 | l %r1,BASED(.Lpreempt_schedule_irq) |
601 | stosm __SF_EMPTY(%r15),0x03 # reenable interrupts | 644 | la %r14,BASED(io_resume_loop) |
602 | l %r1,BASED(.Lschedule) | 645 | br %r1 # call schedule |
603 | basr %r14,%r1 # call schedule | ||
604 | stnsm __SF_EMPTY(%r15),0xfc # disable I/O and ext. interrupts | ||
605 | xc __TI_precount(4,%r9),__TI_precount(%r9) | ||
606 | b BASED(io_resume_loop) | ||
607 | #endif | 646 | #endif |
608 | 647 | ||
609 | # | 648 | # |
@@ -627,40 +666,42 @@ io_work_loop: | |||
627 | bo BASED(io_reschedule) | 666 | bo BASED(io_reschedule) |
628 | tm __TI_flags+3(%r9),(_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK) | 667 | tm __TI_flags+3(%r9),(_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK) |
629 | bnz BASED(io_sigpending) | 668 | bnz BASED(io_sigpending) |
630 | LOCKDEP_SYS_EXIT | 669 | b BASED(io_restore) |
631 | b BASED(io_leave) | 670 | io_work_done: |
632 | 671 | ||
633 | # | 672 | # |
634 | # _TIF_MCCK_PENDING is set, call handler | 673 | # _TIF_MCCK_PENDING is set, call handler |
635 | # | 674 | # |
636 | io_mcck_pending: | 675 | io_mcck_pending: |
637 | TRACE_IRQS_OFF | ||
638 | l %r1,BASED(.Ls390_handle_mcck) | 676 | l %r1,BASED(.Ls390_handle_mcck) |
639 | basr %r14,%r1 # TIF bit will be cleared by handler | 677 | basr %r14,%r1 # TIF bit will be cleared by handler |
640 | TRACE_IRQS_ON | ||
641 | b BASED(io_work_loop) | 678 | b BASED(io_work_loop) |
642 | 679 | ||
643 | # | 680 | # |
644 | # _TIF_NEED_RESCHED is set, call schedule | 681 | # _TIF_NEED_RESCHED is set, call schedule |
645 | # | 682 | # |
646 | io_reschedule: | 683 | io_reschedule: |
684 | TRACE_IRQS_ON | ||
647 | l %r1,BASED(.Lschedule) | 685 | l %r1,BASED(.Lschedule) |
648 | stosm __SF_EMPTY(%r15),0x03 # reenable interrupts | 686 | stosm __SF_EMPTY(%r15),0x03 # reenable interrupts |
649 | basr %r14,%r1 # call scheduler | 687 | basr %r14,%r1 # call scheduler |
650 | stnsm __SF_EMPTY(%r15),0xfc # disable I/O and ext. interrupts | 688 | stnsm __SF_EMPTY(%r15),0xfc # disable I/O and ext. interrupts |
689 | TRACE_IRQS_OFF | ||
651 | tm __TI_flags+3(%r9),_TIF_WORK_INT | 690 | tm __TI_flags+3(%r9),_TIF_WORK_INT |
652 | bz BASED(io_leave) # there is no work to do | 691 | bz BASED(io_restore) # there is no work to do |
653 | b BASED(io_work_loop) | 692 | b BASED(io_work_loop) |
654 | 693 | ||
655 | # | 694 | # |
656 | # _TIF_SIGPENDING or _TIF_RESTORE_SIGMASK is set, call do_signal | 695 | # _TIF_SIGPENDING or _TIF_RESTORE_SIGMASK is set, call do_signal |
657 | # | 696 | # |
658 | io_sigpending: | 697 | io_sigpending: |
698 | TRACE_IRQS_ON | ||
659 | stosm __SF_EMPTY(%r15),0x03 # reenable interrupts | 699 | stosm __SF_EMPTY(%r15),0x03 # reenable interrupts |
660 | la %r2,SP_PTREGS(%r15) # load pt_regs | 700 | la %r2,SP_PTREGS(%r15) # load pt_regs |
661 | l %r1,BASED(.Ldo_signal) | 701 | l %r1,BASED(.Ldo_signal) |
662 | basr %r14,%r1 # call do_signal | 702 | basr %r14,%r1 # call do_signal |
663 | stnsm __SF_EMPTY(%r15),0xfc # disable I/O and ext. interrupts | 703 | stnsm __SF_EMPTY(%r15),0xfc # disable I/O and ext. interrupts |
704 | TRACE_IRQS_OFF | ||
664 | b BASED(io_work_loop) | 705 | b BASED(io_work_loop) |
665 | 706 | ||
666 | /* | 707 | /* |
@@ -688,7 +729,6 @@ ext_no_vtime: | |||
688 | lh %r3,__LC_EXT_INT_CODE # get interruption code | 729 | lh %r3,__LC_EXT_INT_CODE # get interruption code |
689 | l %r1,BASED(.Ldo_extint) | 730 | l %r1,BASED(.Ldo_extint) |
690 | basr %r14,%r1 | 731 | basr %r14,%r1 |
691 | TRACE_IRQS_ON | ||
692 | b BASED(io_return) | 732 | b BASED(io_return) |
693 | 733 | ||
694 | __critical_end: | 734 | __critical_end: |
@@ -853,15 +893,15 @@ cleanup_table_system_call: | |||
853 | cleanup_table_sysc_return: | 893 | cleanup_table_sysc_return: |
854 | .long sysc_return + 0x80000000, sysc_leave + 0x80000000 | 894 | .long sysc_return + 0x80000000, sysc_leave + 0x80000000 |
855 | cleanup_table_sysc_leave: | 895 | cleanup_table_sysc_leave: |
856 | .long sysc_leave + 0x80000000, sysc_work_loop + 0x80000000 | 896 | .long sysc_leave + 0x80000000, sysc_done + 0x80000000 |
857 | cleanup_table_sysc_work_loop: | 897 | cleanup_table_sysc_work_loop: |
858 | .long sysc_work_loop + 0x80000000, sysc_reschedule + 0x80000000 | 898 | .long sysc_work_loop + 0x80000000, sysc_work_done + 0x80000000 |
859 | cleanup_table_io_return: | 899 | cleanup_table_io_return: |
860 | .long io_return + 0x80000000, io_leave + 0x80000000 | 900 | .long io_return + 0x80000000, io_leave + 0x80000000 |
861 | cleanup_table_io_leave: | 901 | cleanup_table_io_leave: |
862 | .long io_leave + 0x80000000, io_done + 0x80000000 | 902 | .long io_leave + 0x80000000, io_done + 0x80000000 |
863 | cleanup_table_io_work_loop: | 903 | cleanup_table_io_work_loop: |
864 | .long io_work_loop + 0x80000000, io_mcck_pending + 0x80000000 | 904 | .long io_work_loop + 0x80000000, io_work_done + 0x80000000 |
865 | 905 | ||
866 | cleanup_critical: | 906 | cleanup_critical: |
867 | clc 4(4,%r12),BASED(cleanup_table_system_call) | 907 | clc 4(4,%r12),BASED(cleanup_table_system_call) |
@@ -930,8 +970,6 @@ cleanup_system_call: | |||
930 | cleanup_vtime: | 970 | cleanup_vtime: |
931 | clc __LC_RETURN_PSW+4(4),BASED(cleanup_system_call_insn+12) | 971 | clc __LC_RETURN_PSW+4(4),BASED(cleanup_system_call_insn+12) |
932 | bhe BASED(cleanup_stime) | 972 | bhe BASED(cleanup_stime) |
933 | tm SP_PSW+1(%r15),0x01 # interrupting from user ? | ||
934 | bz BASED(cleanup_novtime) | ||
935 | UPDATE_VTIME __LC_EXIT_TIMER,__LC_SYNC_ENTER_TIMER,__LC_USER_TIMER | 973 | UPDATE_VTIME __LC_EXIT_TIMER,__LC_SYNC_ENTER_TIMER,__LC_USER_TIMER |
936 | cleanup_stime: | 974 | cleanup_stime: |
937 | clc __LC_RETURN_PSW+4(4),BASED(cleanup_system_call_insn+16) | 975 | clc __LC_RETURN_PSW+4(4),BASED(cleanup_system_call_insn+16) |
@@ -939,7 +977,6 @@ cleanup_stime: | |||
939 | UPDATE_VTIME __LC_LAST_UPDATE_TIMER,__LC_EXIT_TIMER,__LC_SYSTEM_TIMER | 977 | UPDATE_VTIME __LC_LAST_UPDATE_TIMER,__LC_EXIT_TIMER,__LC_SYSTEM_TIMER |
940 | cleanup_update: | 978 | cleanup_update: |
941 | mvc __LC_LAST_UPDATE_TIMER(8),__LC_SYNC_ENTER_TIMER | 979 | mvc __LC_LAST_UPDATE_TIMER(8),__LC_SYNC_ENTER_TIMER |
942 | cleanup_novtime: | ||
943 | #endif | 980 | #endif |
944 | mvc __LC_RETURN_PSW+4(4),BASED(cleanup_table_system_call+4) | 981 | mvc __LC_RETURN_PSW+4(4),BASED(cleanup_table_system_call+4) |
945 | la %r12,__LC_RETURN_PSW | 982 | la %r12,__LC_RETURN_PSW |
@@ -978,10 +1015,10 @@ cleanup_sysc_leave: | |||
978 | 2: la %r12,__LC_RETURN_PSW | 1015 | 2: la %r12,__LC_RETURN_PSW |
979 | br %r14 | 1016 | br %r14 |
980 | cleanup_sysc_leave_insn: | 1017 | cleanup_sysc_leave_insn: |
1018 | .long sysc_done - 4 + 0x80000000 | ||
981 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING | 1019 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING |
982 | .long sysc_leave + 14 + 0x80000000 | 1020 | .long sysc_done - 8 + 0x80000000 |
983 | #endif | 1021 | #endif |
984 | .long sysc_leave + 10 + 0x80000000 | ||
985 | 1022 | ||
986 | cleanup_io_return: | 1023 | cleanup_io_return: |
987 | mvc __LC_RETURN_PSW(4),0(%r12) | 1024 | mvc __LC_RETURN_PSW(4),0(%r12) |
@@ -1008,10 +1045,10 @@ cleanup_io_leave: | |||
1008 | 2: la %r12,__LC_RETURN_PSW | 1045 | 2: la %r12,__LC_RETURN_PSW |
1009 | br %r14 | 1046 | br %r14 |
1010 | cleanup_io_leave_insn: | 1047 | cleanup_io_leave_insn: |
1048 | .long io_done - 4 + 0x80000000 | ||
1011 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING | 1049 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING |
1012 | .long io_leave + 18 + 0x80000000 | 1050 | .long io_done - 8 + 0x80000000 |
1013 | #endif | 1051 | #endif |
1014 | .long io_leave + 14 + 0x80000000 | ||
1015 | 1052 | ||
1016 | /* | 1053 | /* |
1017 | * Integer constants | 1054 | * Integer constants |
@@ -1019,7 +1056,6 @@ cleanup_io_leave_insn: | |||
1019 | .align 4 | 1056 | .align 4 |
1020 | .Lc_spsize: .long SP_SIZE | 1057 | .Lc_spsize: .long SP_SIZE |
1021 | .Lc_overhead: .long STACK_FRAME_OVERHEAD | 1058 | .Lc_overhead: .long STACK_FRAME_OVERHEAD |
1022 | .Lc_pactive: .long PREEMPT_ACTIVE | ||
1023 | .Lnr_syscalls: .long NR_syscalls | 1059 | .Lnr_syscalls: .long NR_syscalls |
1024 | .L0x018: .short 0x018 | 1060 | .L0x018: .short 0x018 |
1025 | .L0x020: .short 0x020 | 1061 | .L0x020: .short 0x020 |
@@ -1043,6 +1079,8 @@ cleanup_io_leave_insn: | |||
1043 | .Lexecve_tail: .long execve_tail | 1079 | .Lexecve_tail: .long execve_tail |
1044 | .Ljump_table: .long pgm_check_table | 1080 | .Ljump_table: .long pgm_check_table |
1045 | .Lschedule: .long schedule | 1081 | .Lschedule: .long schedule |
1082 | .Lpreempt_schedule_irq: | ||
1083 | .long preempt_schedule_irq | ||
1046 | .Ltrace: .long syscall_trace | 1084 | .Ltrace: .long syscall_trace |
1047 | .Lschedtail: .long schedule_tail | 1085 | .Lschedtail: .long schedule_tail |
1048 | .Lsysc_table: .long sys_call_table | 1086 | .Lsysc_table: .long sys_call_table |
diff --git a/arch/s390/kernel/entry64.S b/arch/s390/kernel/entry64.S index 05e26d1fdf40..a3e47b893f07 100644 --- a/arch/s390/kernel/entry64.S +++ b/arch/s390/kernel/entry64.S | |||
@@ -67,12 +67,28 @@ _TIF_WORK_INT = (_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK | _TIF_NEED_RESCHED | \ | |||
67 | brasl %r14,trace_hardirqs_off | 67 | brasl %r14,trace_hardirqs_off |
68 | .endm | 68 | .endm |
69 | 69 | ||
70 | .macro LOCKDEP_SYS_EXIT | 70 | .macro TRACE_IRQS_CHECK |
71 | brasl %r14,lockdep_sys_exit | 71 | tm SP_PSW(%r15),0x03 # irqs enabled? |
72 | jz 0f | ||
73 | brasl %r14,trace_hardirqs_on | ||
74 | j 1f | ||
75 | 0: brasl %r14,trace_hardirqs_off | ||
76 | 1: | ||
72 | .endm | 77 | .endm |
73 | #else | 78 | #else |
74 | #define TRACE_IRQS_ON | 79 | #define TRACE_IRQS_ON |
75 | #define TRACE_IRQS_OFF | 80 | #define TRACE_IRQS_OFF |
81 | #define TRACE_IRQS_CHECK | ||
82 | #endif | ||
83 | |||
84 | #ifdef CONFIG_LOCKDEP | ||
85 | .macro LOCKDEP_SYS_EXIT | ||
86 | tm SP_PSW+1(%r15),0x01 # returning to user ? | ||
87 | jz 0f | ||
88 | brasl %r14,lockdep_sys_exit | ||
89 | 0: | ||
90 | .endm | ||
91 | #else | ||
76 | #define LOCKDEP_SYS_EXIT | 92 | #define LOCKDEP_SYS_EXIT |
77 | #endif | 93 | #endif |
78 | 94 | ||
@@ -222,8 +238,6 @@ sysc_saveall: | |||
222 | llgh %r7,__LC_SVC_INT_CODE # get svc number from lowcore | 238 | llgh %r7,__LC_SVC_INT_CODE # get svc number from lowcore |
223 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING | 239 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING |
224 | sysc_vtime: | 240 | sysc_vtime: |
225 | tm SP_PSW+1(%r15),0x01 # interrupting from user ? | ||
226 | jz sysc_do_svc | ||
227 | UPDATE_VTIME __LC_EXIT_TIMER,__LC_SYNC_ENTER_TIMER,__LC_USER_TIMER | 241 | UPDATE_VTIME __LC_EXIT_TIMER,__LC_SYNC_ENTER_TIMER,__LC_USER_TIMER |
228 | sysc_stime: | 242 | sysc_stime: |
229 | UPDATE_VTIME __LC_LAST_UPDATE_TIMER,__LC_EXIT_TIMER,__LC_SYSTEM_TIMER | 243 | UPDATE_VTIME __LC_LAST_UPDATE_TIMER,__LC_EXIT_TIMER,__LC_SYSTEM_TIMER |
@@ -257,19 +271,34 @@ sysc_noemu: | |||
257 | 271 | ||
258 | sysc_return: | 272 | sysc_return: |
259 | tm SP_PSW+1(%r15),0x01 # returning to user ? | 273 | tm SP_PSW+1(%r15),0x01 # returning to user ? |
260 | jno sysc_leave | 274 | jno sysc_restore |
261 | tm __TI_flags+7(%r9),_TIF_WORK_SVC | 275 | tm __TI_flags+7(%r9),_TIF_WORK_SVC |
262 | jnz sysc_work # there is work to do (signals etc.) | 276 | jnz sysc_work # there is work to do (signals etc.) |
277 | sysc_restore: | ||
278 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
279 | larl %r1,sysc_restore_trace_psw | ||
280 | lpswe 0(%r1) | ||
281 | sysc_restore_trace: | ||
282 | TRACE_IRQS_CHECK | ||
263 | LOCKDEP_SYS_EXIT | 283 | LOCKDEP_SYS_EXIT |
284 | #endif | ||
264 | sysc_leave: | 285 | sysc_leave: |
265 | RESTORE_ALL __LC_RETURN_PSW,1 | 286 | RESTORE_ALL __LC_RETURN_PSW,1 |
287 | sysc_done: | ||
288 | |||
289 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
290 | .align 8 | ||
291 | .globl sysc_restore_trace_psw | ||
292 | sysc_restore_trace_psw: | ||
293 | .quad 0, sysc_restore_trace | ||
294 | #endif | ||
266 | 295 | ||
267 | # | 296 | # |
268 | # recheck if there is more work to do | 297 | # recheck if there is more work to do |
269 | # | 298 | # |
270 | sysc_work_loop: | 299 | sysc_work_loop: |
271 | tm __TI_flags+7(%r9),_TIF_WORK_SVC | 300 | tm __TI_flags+7(%r9),_TIF_WORK_SVC |
272 | jz sysc_leave # there is no work to do | 301 | jz sysc_restore # there is no work to do |
273 | # | 302 | # |
274 | # One of the work bits is on. Find out which one. | 303 | # One of the work bits is on. Find out which one. |
275 | # | 304 | # |
@@ -284,8 +313,8 @@ sysc_work: | |||
284 | jo sysc_restart | 313 | jo sysc_restart |
285 | tm __TI_flags+7(%r9),_TIF_SINGLE_STEP | 314 | tm __TI_flags+7(%r9),_TIF_SINGLE_STEP |
286 | jo sysc_singlestep | 315 | jo sysc_singlestep |
287 | LOCKDEP_SYS_EXIT | 316 | j sysc_restore |
288 | j sysc_leave | 317 | sysc_work_done: |
289 | 318 | ||
290 | # | 319 | # |
291 | # _TIF_NEED_RESCHED is set, call schedule | 320 | # _TIF_NEED_RESCHED is set, call schedule |
@@ -445,6 +474,7 @@ pgm_check_handler: | |||
445 | pgm_no_vtime: | 474 | pgm_no_vtime: |
446 | #endif | 475 | #endif |
447 | lg %r9,__LC_THREAD_INFO # load pointer to thread_info struct | 476 | lg %r9,__LC_THREAD_INFO # load pointer to thread_info struct |
477 | TRACE_IRQS_OFF | ||
448 | lgf %r3,__LC_PGM_ILC # load program interruption code | 478 | lgf %r3,__LC_PGM_ILC # load program interruption code |
449 | lghi %r8,0x7f | 479 | lghi %r8,0x7f |
450 | ngr %r8,%r3 | 480 | ngr %r8,%r3 |
@@ -484,6 +514,7 @@ pgm_per_std: | |||
484 | pgm_no_vtime2: | 514 | pgm_no_vtime2: |
485 | #endif | 515 | #endif |
486 | lg %r9,__LC_THREAD_INFO # load pointer to thread_info struct | 516 | lg %r9,__LC_THREAD_INFO # load pointer to thread_info struct |
517 | TRACE_IRQS_OFF | ||
487 | lg %r1,__TI_task(%r9) | 518 | lg %r1,__TI_task(%r9) |
488 | tm SP_PSW+1(%r15),0x01 # kernel per event ? | 519 | tm SP_PSW+1(%r15),0x01 # kernel per event ? |
489 | jz kernel_per | 520 | jz kernel_per |
@@ -504,12 +535,9 @@ pgm_svcper: | |||
504 | SAVE_ALL_SYNC __LC_SVC_OLD_PSW,__LC_SAVE_AREA | 535 | SAVE_ALL_SYNC __LC_SVC_OLD_PSW,__LC_SAVE_AREA |
505 | CREATE_STACK_FRAME __LC_SVC_OLD_PSW,__LC_SAVE_AREA | 536 | CREATE_STACK_FRAME __LC_SVC_OLD_PSW,__LC_SAVE_AREA |
506 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING | 537 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING |
507 | tm SP_PSW+1(%r15),0x01 # interrupting from user ? | ||
508 | jz pgm_no_vtime3 | ||
509 | UPDATE_VTIME __LC_EXIT_TIMER,__LC_SYNC_ENTER_TIMER,__LC_USER_TIMER | 538 | UPDATE_VTIME __LC_EXIT_TIMER,__LC_SYNC_ENTER_TIMER,__LC_USER_TIMER |
510 | UPDATE_VTIME __LC_LAST_UPDATE_TIMER,__LC_EXIT_TIMER,__LC_SYSTEM_TIMER | 539 | UPDATE_VTIME __LC_LAST_UPDATE_TIMER,__LC_EXIT_TIMER,__LC_SYSTEM_TIMER |
511 | mvc __LC_LAST_UPDATE_TIMER(8),__LC_SYNC_ENTER_TIMER | 540 | mvc __LC_LAST_UPDATE_TIMER(8),__LC_SYNC_ENTER_TIMER |
512 | pgm_no_vtime3: | ||
513 | #endif | 541 | #endif |
514 | llgh %r7,__LC_SVC_INT_CODE # get svc number from lowcore | 542 | llgh %r7,__LC_SVC_INT_CODE # get svc number from lowcore |
515 | lg %r9,__LC_THREAD_INFO # load pointer to thread_info struct | 543 | lg %r9,__LC_THREAD_INFO # load pointer to thread_info struct |
@@ -529,7 +557,7 @@ kernel_per: | |||
529 | lhi %r0,__LC_PGM_OLD_PSW | 557 | lhi %r0,__LC_PGM_OLD_PSW |
530 | sth %r0,SP_TRAP(%r15) # set trap indication to pgm check | 558 | sth %r0,SP_TRAP(%r15) # set trap indication to pgm check |
531 | la %r2,SP_PTREGS(%r15) # address of register-save area | 559 | la %r2,SP_PTREGS(%r15) # address of register-save area |
532 | larl %r14,sysc_leave # load adr. of system ret, no work | 560 | larl %r14,sysc_restore # load adr. of system ret, no work |
533 | jg do_single_step # branch to do_single_step | 561 | jg do_single_step # branch to do_single_step |
534 | 562 | ||
535 | /* | 563 | /* |
@@ -554,26 +582,38 @@ io_no_vtime: | |||
554 | TRACE_IRQS_OFF | 582 | TRACE_IRQS_OFF |
555 | la %r2,SP_PTREGS(%r15) # address of register-save area | 583 | la %r2,SP_PTREGS(%r15) # address of register-save area |
556 | brasl %r14,do_IRQ # call standard irq handler | 584 | brasl %r14,do_IRQ # call standard irq handler |
557 | TRACE_IRQS_ON | ||
558 | |||
559 | io_return: | 585 | io_return: |
560 | tm SP_PSW+1(%r15),0x01 # returning to user ? | 586 | tm SP_PSW+1(%r15),0x01 # returning to user ? |
561 | #ifdef CONFIG_PREEMPT | 587 | #ifdef CONFIG_PREEMPT |
562 | jno io_preempt # no -> check for preemptive scheduling | 588 | jno io_preempt # no -> check for preemptive scheduling |
563 | #else | 589 | #else |
564 | jno io_leave # no-> skip resched & signal | 590 | jno io_restore # no-> skip resched & signal |
565 | #endif | 591 | #endif |
566 | tm __TI_flags+7(%r9),_TIF_WORK_INT | 592 | tm __TI_flags+7(%r9),_TIF_WORK_INT |
567 | jnz io_work # there is work to do (signals etc.) | 593 | jnz io_work # there is work to do (signals etc.) |
594 | io_restore: | ||
595 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
596 | larl %r1,io_restore_trace_psw | ||
597 | lpswe 0(%r1) | ||
598 | io_restore_trace: | ||
599 | TRACE_IRQS_CHECK | ||
568 | LOCKDEP_SYS_EXIT | 600 | LOCKDEP_SYS_EXIT |
601 | #endif | ||
569 | io_leave: | 602 | io_leave: |
570 | RESTORE_ALL __LC_RETURN_PSW,0 | 603 | RESTORE_ALL __LC_RETURN_PSW,0 |
571 | io_done: | 604 | io_done: |
572 | 605 | ||
606 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
607 | .align 8 | ||
608 | .globl io_restore_trace_psw | ||
609 | io_restore_trace_psw: | ||
610 | .quad 0, io_restore_trace | ||
611 | #endif | ||
612 | |||
573 | #ifdef CONFIG_PREEMPT | 613 | #ifdef CONFIG_PREEMPT |
574 | io_preempt: | 614 | io_preempt: |
575 | icm %r0,15,__TI_precount(%r9) | 615 | icm %r0,15,__TI_precount(%r9) |
576 | jnz io_leave | 616 | jnz io_restore |
577 | # switch to kernel stack | 617 | # switch to kernel stack |
578 | lg %r1,SP_R15(%r15) | 618 | lg %r1,SP_R15(%r15) |
579 | aghi %r1,-SP_SIZE | 619 | aghi %r1,-SP_SIZE |
@@ -582,14 +622,9 @@ io_preempt: | |||
582 | lgr %r15,%r1 | 622 | lgr %r15,%r1 |
583 | io_resume_loop: | 623 | io_resume_loop: |
584 | tm __TI_flags+7(%r9),_TIF_NEED_RESCHED | 624 | tm __TI_flags+7(%r9),_TIF_NEED_RESCHED |
585 | jno io_leave | 625 | jno io_restore |
586 | larl %r1,.Lc_pactive | 626 | larl %r14,io_resume_loop |
587 | mvc __TI_precount(4,%r9),0(%r1) | 627 | jg preempt_schedule_irq |
588 | stosm __SF_EMPTY(%r15),0x03 # reenable interrupts | ||
589 | brasl %r14,schedule # call schedule | ||
590 | stnsm __SF_EMPTY(%r15),0xfc # disable I/O and ext. interrupts | ||
591 | xc __TI_precount(4,%r9),__TI_precount(%r9) | ||
592 | j io_resume_loop | ||
593 | #endif | 628 | #endif |
594 | 629 | ||
595 | # | 630 | # |
@@ -613,37 +648,39 @@ io_work_loop: | |||
613 | jo io_reschedule | 648 | jo io_reschedule |
614 | tm __TI_flags+7(%r9),(_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK) | 649 | tm __TI_flags+7(%r9),(_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK) |
615 | jnz io_sigpending | 650 | jnz io_sigpending |
616 | LOCKDEP_SYS_EXIT | 651 | j io_restore |
617 | j io_leave | 652 | io_work_done: |
618 | 653 | ||
619 | # | 654 | # |
620 | # _TIF_MCCK_PENDING is set, call handler | 655 | # _TIF_MCCK_PENDING is set, call handler |
621 | # | 656 | # |
622 | io_mcck_pending: | 657 | io_mcck_pending: |
623 | TRACE_IRQS_OFF | ||
624 | brasl %r14,s390_handle_mcck # TIF bit will be cleared by handler | 658 | brasl %r14,s390_handle_mcck # TIF bit will be cleared by handler |
625 | TRACE_IRQS_ON | ||
626 | j io_work_loop | 659 | j io_work_loop |
627 | 660 | ||
628 | # | 661 | # |
629 | # _TIF_NEED_RESCHED is set, call schedule | 662 | # _TIF_NEED_RESCHED is set, call schedule |
630 | # | 663 | # |
631 | io_reschedule: | 664 | io_reschedule: |
665 | TRACE_IRQS_ON | ||
632 | stosm __SF_EMPTY(%r15),0x03 # reenable interrupts | 666 | stosm __SF_EMPTY(%r15),0x03 # reenable interrupts |
633 | brasl %r14,schedule # call scheduler | 667 | brasl %r14,schedule # call scheduler |
634 | stnsm __SF_EMPTY(%r15),0xfc # disable I/O and ext. interrupts | 668 | stnsm __SF_EMPTY(%r15),0xfc # disable I/O and ext. interrupts |
669 | TRACE_IRQS_OFF | ||
635 | tm __TI_flags+7(%r9),_TIF_WORK_INT | 670 | tm __TI_flags+7(%r9),_TIF_WORK_INT |
636 | jz io_leave # there is no work to do | 671 | jz io_restore # there is no work to do |
637 | j io_work_loop | 672 | j io_work_loop |
638 | 673 | ||
639 | # | 674 | # |
640 | # _TIF_SIGPENDING or _TIF_RESTORE_SIGMASK is set, call do_signal | 675 | # _TIF_SIGPENDING or _TIF_RESTORE_SIGMASK is set, call do_signal |
641 | # | 676 | # |
642 | io_sigpending: | 677 | io_sigpending: |
678 | TRACE_IRQS_ON | ||
643 | stosm __SF_EMPTY(%r15),0x03 # reenable interrupts | 679 | stosm __SF_EMPTY(%r15),0x03 # reenable interrupts |
644 | la %r2,SP_PTREGS(%r15) # load pt_regs | 680 | la %r2,SP_PTREGS(%r15) # load pt_regs |
645 | brasl %r14,do_signal # call do_signal | 681 | brasl %r14,do_signal # call do_signal |
646 | stnsm __SF_EMPTY(%r15),0xfc # disable I/O and ext. interrupts | 682 | stnsm __SF_EMPTY(%r15),0xfc # disable I/O and ext. interrupts |
683 | TRACE_IRQS_OFF | ||
647 | j io_work_loop | 684 | j io_work_loop |
648 | 685 | ||
649 | /* | 686 | /* |
@@ -669,7 +706,6 @@ ext_no_vtime: | |||
669 | la %r2,SP_PTREGS(%r15) # address of register-save area | 706 | la %r2,SP_PTREGS(%r15) # address of register-save area |
670 | llgh %r3,__LC_EXT_INT_CODE # get interruption code | 707 | llgh %r3,__LC_EXT_INT_CODE # get interruption code |
671 | brasl %r14,do_extint | 708 | brasl %r14,do_extint |
672 | TRACE_IRQS_ON | ||
673 | j io_return | 709 | j io_return |
674 | 710 | ||
675 | __critical_end: | 711 | __critical_end: |
@@ -824,15 +860,15 @@ cleanup_table_system_call: | |||
824 | cleanup_table_sysc_return: | 860 | cleanup_table_sysc_return: |
825 | .quad sysc_return, sysc_leave | 861 | .quad sysc_return, sysc_leave |
826 | cleanup_table_sysc_leave: | 862 | cleanup_table_sysc_leave: |
827 | .quad sysc_leave, sysc_work_loop | 863 | .quad sysc_leave, sysc_done |
828 | cleanup_table_sysc_work_loop: | 864 | cleanup_table_sysc_work_loop: |
829 | .quad sysc_work_loop, sysc_reschedule | 865 | .quad sysc_work_loop, sysc_work_done |
830 | cleanup_table_io_return: | 866 | cleanup_table_io_return: |
831 | .quad io_return, io_leave | 867 | .quad io_return, io_leave |
832 | cleanup_table_io_leave: | 868 | cleanup_table_io_leave: |
833 | .quad io_leave, io_done | 869 | .quad io_leave, io_done |
834 | cleanup_table_io_work_loop: | 870 | cleanup_table_io_work_loop: |
835 | .quad io_work_loop, io_mcck_pending | 871 | .quad io_work_loop, io_work_done |
836 | 872 | ||
837 | cleanup_critical: | 873 | cleanup_critical: |
838 | clc 8(8,%r12),BASED(cleanup_table_system_call) | 874 | clc 8(8,%r12),BASED(cleanup_table_system_call) |
@@ -901,8 +937,6 @@ cleanup_system_call: | |||
901 | cleanup_vtime: | 937 | cleanup_vtime: |
902 | clc __LC_RETURN_PSW+8(8),BASED(cleanup_system_call_insn+24) | 938 | clc __LC_RETURN_PSW+8(8),BASED(cleanup_system_call_insn+24) |
903 | jhe cleanup_stime | 939 | jhe cleanup_stime |
904 | tm SP_PSW+1(%r15),0x01 # interrupting from user ? | ||
905 | jz cleanup_novtime | ||
906 | UPDATE_VTIME __LC_EXIT_TIMER,__LC_SYNC_ENTER_TIMER,__LC_USER_TIMER | 940 | UPDATE_VTIME __LC_EXIT_TIMER,__LC_SYNC_ENTER_TIMER,__LC_USER_TIMER |
907 | cleanup_stime: | 941 | cleanup_stime: |
908 | clc __LC_RETURN_PSW+8(8),BASED(cleanup_system_call_insn+32) | 942 | clc __LC_RETURN_PSW+8(8),BASED(cleanup_system_call_insn+32) |
@@ -910,7 +944,6 @@ cleanup_stime: | |||
910 | UPDATE_VTIME __LC_LAST_UPDATE_TIMER,__LC_EXIT_TIMER,__LC_SYSTEM_TIMER | 944 | UPDATE_VTIME __LC_LAST_UPDATE_TIMER,__LC_EXIT_TIMER,__LC_SYSTEM_TIMER |
911 | cleanup_update: | 945 | cleanup_update: |
912 | mvc __LC_LAST_UPDATE_TIMER(8),__LC_SYNC_ENTER_TIMER | 946 | mvc __LC_LAST_UPDATE_TIMER(8),__LC_SYNC_ENTER_TIMER |
913 | cleanup_novtime: | ||
914 | #endif | 947 | #endif |
915 | mvc __LC_RETURN_PSW+8(8),BASED(cleanup_table_system_call+8) | 948 | mvc __LC_RETURN_PSW+8(8),BASED(cleanup_table_system_call+8) |
916 | la %r12,__LC_RETURN_PSW | 949 | la %r12,__LC_RETURN_PSW |
@@ -949,10 +982,10 @@ cleanup_sysc_leave: | |||
949 | 2: la %r12,__LC_RETURN_PSW | 982 | 2: la %r12,__LC_RETURN_PSW |
950 | br %r14 | 983 | br %r14 |
951 | cleanup_sysc_leave_insn: | 984 | cleanup_sysc_leave_insn: |
985 | .quad sysc_done - 4 | ||
952 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING | 986 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING |
953 | .quad sysc_leave + 16 | 987 | .quad sysc_done - 8 |
954 | #endif | 988 | #endif |
955 | .quad sysc_leave + 12 | ||
956 | 989 | ||
957 | cleanup_io_return: | 990 | cleanup_io_return: |
958 | mvc __LC_RETURN_PSW(8),0(%r12) | 991 | mvc __LC_RETURN_PSW(8),0(%r12) |
@@ -979,17 +1012,16 @@ cleanup_io_leave: | |||
979 | 2: la %r12,__LC_RETURN_PSW | 1012 | 2: la %r12,__LC_RETURN_PSW |
980 | br %r14 | 1013 | br %r14 |
981 | cleanup_io_leave_insn: | 1014 | cleanup_io_leave_insn: |
1015 | .quad io_done - 4 | ||
982 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING | 1016 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING |
983 | .quad io_leave + 20 | 1017 | .quad io_done - 8 |
984 | #endif | 1018 | #endif |
985 | .quad io_leave + 16 | ||
986 | 1019 | ||
987 | /* | 1020 | /* |
988 | * Integer constants | 1021 | * Integer constants |
989 | */ | 1022 | */ |
990 | .align 4 | 1023 | .align 4 |
991 | .Lconst: | 1024 | .Lconst: |
992 | .Lc_pactive: .long PREEMPT_ACTIVE | ||
993 | .Lnr_syscalls: .long NR_syscalls | 1025 | .Lnr_syscalls: .long NR_syscalls |
994 | .L0x0130: .short 0x130 | 1026 | .L0x0130: .short 0x130 |
995 | .L0x0140: .short 0x140 | 1027 | .L0x0140: .short 0x140 |
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c index 7e1bfb984064..50f8f1e3760e 100644 --- a/arch/s390/kernel/setup.c +++ b/arch/s390/kernel/setup.c | |||
@@ -347,7 +347,7 @@ void (*_machine_power_off)(void) = do_machine_power_off_nonsmp; | |||
347 | 347 | ||
348 | void machine_restart(char *command) | 348 | void machine_restart(char *command) |
349 | { | 349 | { |
350 | if (!in_interrupt() || oops_in_progress) | 350 | if ((!in_interrupt() && !in_atomic()) || oops_in_progress) |
351 | /* | 351 | /* |
352 | * Only unblank the console if we are called in enabled | 352 | * Only unblank the console if we are called in enabled |
353 | * context or a bust_spinlocks cleared the way for us. | 353 | * context or a bust_spinlocks cleared the way for us. |
@@ -492,6 +492,10 @@ static void setup_addressing_mode(void) | |||
492 | printk("S390 address spaces switched, "); | 492 | printk("S390 address spaces switched, "); |
493 | set_amode_and_uaccess(PSW_ASC_PRIMARY, PSW32_ASC_PRIMARY); | 493 | set_amode_and_uaccess(PSW_ASC_PRIMARY, PSW32_ASC_PRIMARY); |
494 | } | 494 | } |
495 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
496 | sysc_restore_trace_psw.mask = psw_kernel_bits & ~PSW_MASK_MCHECK; | ||
497 | io_restore_trace_psw.mask = psw_kernel_bits & ~PSW_MASK_MCHECK; | ||
498 | #endif | ||
495 | } | 499 | } |
496 | 500 | ||
497 | static void __init | 501 | static void __init |
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index b05ae8584258..264ea906db4c 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c | |||
@@ -193,72 +193,30 @@ int smp_call_function_single(int cpu, void (*func) (void *info), void *info, | |||
193 | } | 193 | } |
194 | EXPORT_SYMBOL(smp_call_function_single); | 194 | EXPORT_SYMBOL(smp_call_function_single); |
195 | 195 | ||
196 | static void do_send_stop(void) | 196 | void smp_send_stop(void) |
197 | { | 197 | { |
198 | int cpu, rc; | 198 | int cpu, rc; |
199 | 199 | ||
200 | /* stop all processors */ | 200 | /* Disable all interrupts/machine checks */ |
201 | for_each_online_cpu(cpu) { | 201 | __load_psw_mask(psw_kernel_bits & ~PSW_MASK_MCHECK); |
202 | if (cpu == smp_processor_id()) | ||
203 | continue; | ||
204 | do { | ||
205 | rc = signal_processor(cpu, sigp_stop); | ||
206 | } while (rc == sigp_busy); | ||
207 | } | ||
208 | } | ||
209 | 202 | ||
210 | static void do_store_status(void) | 203 | /* write magic number to zero page (absolute 0) */ |
211 | { | 204 | lowcore_ptr[smp_processor_id()]->panic_magic = __PANIC_MAGIC; |
212 | int cpu, rc; | ||
213 | 205 | ||
214 | /* store status of all processors in their lowcores (real 0) */ | 206 | /* stop all processors */ |
215 | for_each_online_cpu(cpu) { | 207 | for_each_online_cpu(cpu) { |
216 | if (cpu == smp_processor_id()) | 208 | if (cpu == smp_processor_id()) |
217 | continue; | 209 | continue; |
218 | do { | 210 | do { |
219 | rc = signal_processor_p( | 211 | rc = signal_processor(cpu, sigp_stop); |
220 | (__u32)(unsigned long) lowcore_ptr[cpu], cpu, | ||
221 | sigp_store_status_at_address); | ||
222 | } while (rc == sigp_busy); | 212 | } while (rc == sigp_busy); |
223 | } | ||
224 | } | ||
225 | 213 | ||
226 | static void do_wait_for_stop(void) | ||
227 | { | ||
228 | int cpu; | ||
229 | |||
230 | /* Wait for all other cpus to enter stopped state */ | ||
231 | for_each_online_cpu(cpu) { | ||
232 | if (cpu == smp_processor_id()) | ||
233 | continue; | ||
234 | while (!smp_cpu_not_running(cpu)) | 214 | while (!smp_cpu_not_running(cpu)) |
235 | cpu_relax(); | 215 | cpu_relax(); |
236 | } | 216 | } |
237 | } | 217 | } |
238 | 218 | ||
239 | /* | 219 | /* |
240 | * this function sends a 'stop' sigp to all other CPUs in the system. | ||
241 | * it goes straight through. | ||
242 | */ | ||
243 | void smp_send_stop(void) | ||
244 | { | ||
245 | /* Disable all interrupts/machine checks */ | ||
246 | __load_psw_mask(psw_kernel_bits & ~PSW_MASK_MCHECK); | ||
247 | |||
248 | /* write magic number to zero page (absolute 0) */ | ||
249 | lowcore_ptr[smp_processor_id()]->panic_magic = __PANIC_MAGIC; | ||
250 | |||
251 | /* stop other processors. */ | ||
252 | do_send_stop(); | ||
253 | |||
254 | /* wait until other processors are stopped */ | ||
255 | do_wait_for_stop(); | ||
256 | |||
257 | /* store status of other processors. */ | ||
258 | do_store_status(); | ||
259 | } | ||
260 | |||
261 | /* | ||
262 | * Reboot, halt and power_off routines for SMP. | 220 | * Reboot, halt and power_off routines for SMP. |
263 | */ | 221 | */ |
264 | void machine_restart_smp(char *__unused) | 222 | void machine_restart_smp(char *__unused) |
diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c index 8ec9def83ccb..8ed16a83fba7 100644 --- a/arch/s390/kernel/traps.c +++ b/arch/s390/kernel/traps.c | |||
@@ -260,6 +260,7 @@ void die(const char * str, struct pt_regs * regs, long err) | |||
260 | bust_spinlocks(1); | 260 | bust_spinlocks(1); |
261 | printk("%s: %04lx [#%d]\n", str, err & 0xffff, ++die_counter); | 261 | printk("%s: %04lx [#%d]\n", str, err & 0xffff, ++die_counter); |
262 | print_modules(); | 262 | print_modules(); |
263 | notify_die(DIE_OOPS, str, regs, err, current->thread.trap_no, SIGSEGV); | ||
263 | show_regs(regs); | 264 | show_regs(regs); |
264 | bust_spinlocks(0); | 265 | bust_spinlocks(0); |
265 | add_taint(TAINT_DIE); | 266 | add_taint(TAINT_DIE); |
diff --git a/arch/s390/mm/cmm.c b/arch/s390/mm/cmm.c index d4ed93dfb9c7..413c240cbca7 100644 --- a/arch/s390/mm/cmm.c +++ b/arch/s390/mm/cmm.c | |||
@@ -341,19 +341,16 @@ cmm_timeout_handler(ctl_table *ctl, int write, struct file *filp, | |||
341 | 341 | ||
342 | static struct ctl_table cmm_table[] = { | 342 | static struct ctl_table cmm_table[] = { |
343 | { | 343 | { |
344 | .ctl_name = VM_CMM_PAGES, | ||
345 | .procname = "cmm_pages", | 344 | .procname = "cmm_pages", |
346 | .mode = 0644, | 345 | .mode = 0644, |
347 | .proc_handler = &cmm_pages_handler, | 346 | .proc_handler = &cmm_pages_handler, |
348 | }, | 347 | }, |
349 | { | 348 | { |
350 | .ctl_name = VM_CMM_TIMED_PAGES, | ||
351 | .procname = "cmm_timed_pages", | 349 | .procname = "cmm_timed_pages", |
352 | .mode = 0644, | 350 | .mode = 0644, |
353 | .proc_handler = &cmm_pages_handler, | 351 | .proc_handler = &cmm_pages_handler, |
354 | }, | 352 | }, |
355 | { | 353 | { |
356 | .ctl_name = VM_CMM_TIMEOUT, | ||
357 | .procname = "cmm_timeout", | 354 | .procname = "cmm_timeout", |
358 | .mode = 0644, | 355 | .mode = 0644, |
359 | .proc_handler = &cmm_timeout_handler, | 356 | .proc_handler = &cmm_timeout_handler, |
diff --git a/arch/sh/boards/renesas/rts7751r2d/setup.c b/arch/sh/boards/renesas/rts7751r2d/setup.c index 37f2c0b447fe..8125d20fdbd8 100644 --- a/arch/sh/boards/renesas/rts7751r2d/setup.c +++ b/arch/sh/boards/renesas/rts7751r2d/setup.c | |||
@@ -53,10 +53,12 @@ static struct resource cf_ide_resources[] = { | |||
53 | .end = PA_AREA5_IO + 0x80c, | 53 | .end = PA_AREA5_IO + 0x80c, |
54 | .flags = IORESOURCE_MEM, | 54 | .flags = IORESOURCE_MEM, |
55 | }, | 55 | }, |
56 | #ifndef CONFIG_RTS7751R2D_1 /* For R2D-1 polling is preferred */ | ||
56 | [2] = { | 57 | [2] = { |
57 | .start = IRQ_CF_IDE, | 58 | .start = IRQ_CF_IDE, |
58 | .flags = IORESOURCE_IRQ, | 59 | .flags = IORESOURCE_IRQ, |
59 | }, | 60 | }, |
61 | #endif | ||
60 | }; | 62 | }; |
61 | 63 | ||
62 | static struct pata_platform_info pata_info = { | 64 | static struct pata_platform_info pata_info = { |
diff --git a/arch/sh/configs/r7780mp_defconfig b/arch/sh/configs/r7780mp_defconfig index ac4de4973b60..2ad804ec920a 100644 --- a/arch/sh/configs/r7780mp_defconfig +++ b/arch/sh/configs/r7780mp_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.22-rc4 | 3 | # Linux kernel version: 2.6.24-rc2 |
4 | # Mon Jun 11 10:24:57 2007 | 4 | # Tue Nov 13 20:32:39 2007 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
@@ -13,38 +13,39 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
13 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 13 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
14 | CONFIG_GENERIC_TIME=y | 14 | CONFIG_GENERIC_TIME=y |
15 | CONFIG_GENERIC_CLOCKEVENTS=y | 15 | CONFIG_GENERIC_CLOCKEVENTS=y |
16 | CONFIG_SYS_SUPPORTS_PCI=y | ||
16 | CONFIG_STACKTRACE_SUPPORT=y | 17 | CONFIG_STACKTRACE_SUPPORT=y |
17 | CONFIG_LOCKDEP_SUPPORT=y | 18 | CONFIG_LOCKDEP_SUPPORT=y |
18 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | 19 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set |
19 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | 20 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set |
21 | CONFIG_ARCH_NO_VIRT_TO_BUS=y | ||
20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 22 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
21 | 23 | ||
22 | # | 24 | # |
23 | # Code maturity level options | 25 | # General setup |
24 | # | 26 | # |
25 | CONFIG_EXPERIMENTAL=y | 27 | CONFIG_EXPERIMENTAL=y |
26 | CONFIG_BROKEN_ON_SMP=y | 28 | CONFIG_BROKEN_ON_SMP=y |
27 | CONFIG_LOCK_KERNEL=y | 29 | CONFIG_LOCK_KERNEL=y |
28 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 30 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
29 | |||
30 | # | ||
31 | # General setup | ||
32 | # | ||
33 | CONFIG_LOCALVERSION="" | 31 | CONFIG_LOCALVERSION="" |
34 | CONFIG_LOCALVERSION_AUTO=y | 32 | CONFIG_LOCALVERSION_AUTO=y |
35 | CONFIG_SWAP=y | 33 | CONFIG_SWAP=y |
36 | CONFIG_SYSVIPC=y | 34 | CONFIG_SYSVIPC=y |
37 | # CONFIG_IPC_NS is not set | ||
38 | CONFIG_SYSVIPC_SYSCTL=y | 35 | CONFIG_SYSVIPC_SYSCTL=y |
39 | # CONFIG_POSIX_MQUEUE is not set | 36 | # CONFIG_POSIX_MQUEUE is not set |
40 | CONFIG_BSD_PROCESS_ACCT=y | 37 | CONFIG_BSD_PROCESS_ACCT=y |
41 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 38 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
42 | # CONFIG_TASKSTATS is not set | 39 | # CONFIG_TASKSTATS is not set |
43 | # CONFIG_UTS_NS is not set | 40 | # CONFIG_USER_NS is not set |
44 | # CONFIG_AUDIT is not set | 41 | # CONFIG_AUDIT is not set |
45 | CONFIG_IKCONFIG=y | 42 | CONFIG_IKCONFIG=y |
46 | CONFIG_IKCONFIG_PROC=y | 43 | CONFIG_IKCONFIG_PROC=y |
47 | CONFIG_LOG_BUF_SHIFT=14 | 44 | CONFIG_LOG_BUF_SHIFT=14 |
45 | # CONFIG_CGROUPS is not set | ||
46 | CONFIG_FAIR_GROUP_SCHED=y | ||
47 | CONFIG_FAIR_USER_SCHED=y | ||
48 | # CONFIG_FAIR_CGROUP_SCHED is not set | ||
48 | # CONFIG_SYSFS_DEPRECATED is not set | 49 | # CONFIG_SYSFS_DEPRECATED is not set |
49 | # CONFIG_RELAY is not set | 50 | # CONFIG_RELAY is not set |
50 | # CONFIG_BLK_DEV_INITRD is not set | 51 | # CONFIG_BLK_DEV_INITRD is not set |
@@ -65,7 +66,6 @@ CONFIG_BASE_FULL=y | |||
65 | CONFIG_ANON_INODES=y | 66 | CONFIG_ANON_INODES=y |
66 | # CONFIG_EPOLL is not set | 67 | # CONFIG_EPOLL is not set |
67 | CONFIG_SIGNALFD=y | 68 | CONFIG_SIGNALFD=y |
68 | CONFIG_TIMERFD=y | ||
69 | CONFIG_EVENTFD=y | 69 | CONFIG_EVENTFD=y |
70 | CONFIG_SHMEM=y | 70 | CONFIG_SHMEM=y |
71 | CONFIG_VM_EVENT_COUNTERS=y | 71 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -74,24 +74,17 @@ CONFIG_SLAB=y | |||
74 | # CONFIG_SLOB is not set | 74 | # CONFIG_SLOB is not set |
75 | # CONFIG_TINY_SHMEM is not set | 75 | # CONFIG_TINY_SHMEM is not set |
76 | CONFIG_BASE_SMALL=0 | 76 | CONFIG_BASE_SMALL=0 |
77 | |||
78 | # | ||
79 | # Loadable module support | ||
80 | # | ||
81 | CONFIG_MODULES=y | 77 | CONFIG_MODULES=y |
82 | CONFIG_MODULE_UNLOAD=y | 78 | CONFIG_MODULE_UNLOAD=y |
83 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 79 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
84 | # CONFIG_MODVERSIONS is not set | 80 | # CONFIG_MODVERSIONS is not set |
85 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 81 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
86 | CONFIG_KMOD=y | 82 | CONFIG_KMOD=y |
87 | |||
88 | # | ||
89 | # Block layer | ||
90 | # | ||
91 | CONFIG_BLOCK=y | 83 | CONFIG_BLOCK=y |
92 | # CONFIG_LBD is not set | 84 | # CONFIG_LBD is not set |
93 | # CONFIG_BLK_DEV_IO_TRACE is not set | 85 | # CONFIG_BLK_DEV_IO_TRACE is not set |
94 | # CONFIG_LSF is not set | 86 | # CONFIG_LSF is not set |
87 | # CONFIG_BLK_DEV_BSG is not set | ||
95 | 88 | ||
96 | # | 89 | # |
97 | # IO Schedulers | 90 | # IO Schedulers |
@@ -113,7 +106,6 @@ CONFIG_CPU_SH4=y | |||
113 | CONFIG_CPU_SH4A=y | 106 | CONFIG_CPU_SH4A=y |
114 | # CONFIG_CPU_SUBTYPE_SH7619 is not set | 107 | # CONFIG_CPU_SUBTYPE_SH7619 is not set |
115 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 108 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
116 | # CONFIG_CPU_SUBTYPE_SH7300 is not set | ||
117 | # CONFIG_CPU_SUBTYPE_SH7705 is not set | 109 | # CONFIG_CPU_SUBTYPE_SH7705 is not set |
118 | # CONFIG_CPU_SUBTYPE_SH7706 is not set | 110 | # CONFIG_CPU_SUBTYPE_SH7706 is not set |
119 | # CONFIG_CPU_SUBTYPE_SH7707 is not set | 111 | # CONFIG_CPU_SUBTYPE_SH7707 is not set |
@@ -121,6 +113,7 @@ CONFIG_CPU_SH4A=y | |||
121 | # CONFIG_CPU_SUBTYPE_SH7709 is not set | 113 | # CONFIG_CPU_SUBTYPE_SH7709 is not set |
122 | # CONFIG_CPU_SUBTYPE_SH7710 is not set | 114 | # CONFIG_CPU_SUBTYPE_SH7710 is not set |
123 | # CONFIG_CPU_SUBTYPE_SH7712 is not set | 115 | # CONFIG_CPU_SUBTYPE_SH7712 is not set |
116 | # CONFIG_CPU_SUBTYPE_SH7720 is not set | ||
124 | # CONFIG_CPU_SUBTYPE_SH7750 is not set | 117 | # CONFIG_CPU_SUBTYPE_SH7750 is not set |
125 | # CONFIG_CPU_SUBTYPE_SH7091 is not set | 118 | # CONFIG_CPU_SUBTYPE_SH7091 is not set |
126 | # CONFIG_CPU_SUBTYPE_SH7750R is not set | 119 | # CONFIG_CPU_SUBTYPE_SH7750R is not set |
@@ -129,12 +122,10 @@ CONFIG_CPU_SH4A=y | |||
129 | # CONFIG_CPU_SUBTYPE_SH7751R is not set | 122 | # CONFIG_CPU_SUBTYPE_SH7751R is not set |
130 | # CONFIG_CPU_SUBTYPE_SH7760 is not set | 123 | # CONFIG_CPU_SUBTYPE_SH7760 is not set |
131 | # CONFIG_CPU_SUBTYPE_SH4_202 is not set | 124 | # CONFIG_CPU_SUBTYPE_SH4_202 is not set |
132 | # CONFIG_CPU_SUBTYPE_ST40STB1 is not set | ||
133 | # CONFIG_CPU_SUBTYPE_ST40GX1 is not set | ||
134 | # CONFIG_CPU_SUBTYPE_SH7770 is not set | 125 | # CONFIG_CPU_SUBTYPE_SH7770 is not set |
135 | CONFIG_CPU_SUBTYPE_SH7780=y | 126 | CONFIG_CPU_SUBTYPE_SH7780=y |
136 | # CONFIG_CPU_SUBTYPE_SH7785 is not set | 127 | # CONFIG_CPU_SUBTYPE_SH7785 is not set |
137 | # CONFIG_CPU_SUBTYPE_SH73180 is not set | 128 | # CONFIG_CPU_SUBTYPE_SHX3 is not set |
138 | # CONFIG_CPU_SUBTYPE_SH7343 is not set | 129 | # CONFIG_CPU_SUBTYPE_SH7343 is not set |
139 | # CONFIG_CPU_SUBTYPE_SH7722 is not set | 130 | # CONFIG_CPU_SUBTYPE_SH7722 is not set |
140 | 131 | ||
@@ -169,6 +160,7 @@ CONFIG_FLATMEM_MANUAL=y | |||
169 | CONFIG_FLATMEM=y | 160 | CONFIG_FLATMEM=y |
170 | CONFIG_FLAT_NODE_MEM_MAP=y | 161 | CONFIG_FLAT_NODE_MEM_MAP=y |
171 | CONFIG_SPARSEMEM_STATIC=y | 162 | CONFIG_SPARSEMEM_STATIC=y |
163 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
172 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 164 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
173 | # CONFIG_RESOURCES_64BIT is not set | 165 | # CONFIG_RESOURCES_64BIT is not set |
174 | CONFIG_ZONE_DMA_FLAG=0 | 166 | CONFIG_ZONE_DMA_FLAG=0 |
@@ -178,8 +170,9 @@ CONFIG_NR_QUICK=2 | |||
178 | # Cache configuration | 170 | # Cache configuration |
179 | # | 171 | # |
180 | # CONFIG_SH_DIRECT_MAPPED is not set | 172 | # CONFIG_SH_DIRECT_MAPPED is not set |
181 | # CONFIG_SH_WRITETHROUGH is not set | 173 | CONFIG_CACHE_WRITEBACK=y |
182 | # CONFIG_SH_OCRAM is not set | 174 | # CONFIG_CACHE_WRITETHROUGH is not set |
175 | # CONFIG_CACHE_OFF is not set | ||
183 | 176 | ||
184 | # | 177 | # |
185 | # Processor features | 178 | # Processor features |
@@ -187,12 +180,11 @@ CONFIG_NR_QUICK=2 | |||
187 | CONFIG_CPU_LITTLE_ENDIAN=y | 180 | CONFIG_CPU_LITTLE_ENDIAN=y |
188 | # CONFIG_CPU_BIG_ENDIAN is not set | 181 | # CONFIG_CPU_BIG_ENDIAN is not set |
189 | CONFIG_SH_FPU=y | 182 | CONFIG_SH_FPU=y |
190 | # CONFIG_SH_DSP is not set | ||
191 | CONFIG_SH_STORE_QUEUES=y | 183 | CONFIG_SH_STORE_QUEUES=y |
192 | CONFIG_SPECULATIVE_EXECUTION=y | 184 | CONFIG_SPECULATIVE_EXECUTION=y |
193 | CONFIG_CPU_HAS_INTEVT=y | 185 | CONFIG_CPU_HAS_INTEVT=y |
194 | CONFIG_CPU_HAS_INTC_IRQ=y | ||
195 | CONFIG_CPU_HAS_SR_RB=y | 186 | CONFIG_CPU_HAS_SR_RB=y |
187 | CONFIG_CPU_HAS_FPU=y | ||
196 | 188 | ||
197 | # | 189 | # |
198 | # Board support | 190 | # Board support |
@@ -212,6 +204,7 @@ CONFIG_SH_PCLK_FREQ=32000000 | |||
212 | # CONFIG_TICK_ONESHOT is not set | 204 | # CONFIG_TICK_ONESHOT is not set |
213 | # CONFIG_NO_HZ is not set | 205 | # CONFIG_NO_HZ is not set |
214 | # CONFIG_HIGH_RES_TIMERS is not set | 206 | # CONFIG_HIGH_RES_TIMERS is not set |
207 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
215 | 208 | ||
216 | # | 209 | # |
217 | # CPU Frequency scaling | 210 | # CPU Frequency scaling |
@@ -226,7 +219,6 @@ CONFIG_SH_PCLK_FREQ=32000000 | |||
226 | # | 219 | # |
227 | # Companion Chips | 220 | # Companion Chips |
228 | # | 221 | # |
229 | # CONFIG_HD6446X_SERIES is not set | ||
230 | 222 | ||
231 | # | 223 | # |
232 | # Additional SuperH Device Drivers | 224 | # Additional SuperH Device Drivers |
@@ -244,18 +236,17 @@ CONFIG_HZ_250=y | |||
244 | CONFIG_HZ=250 | 236 | CONFIG_HZ=250 |
245 | CONFIG_KEXEC=y | 237 | CONFIG_KEXEC=y |
246 | # CONFIG_CRASH_DUMP is not set | 238 | # CONFIG_CRASH_DUMP is not set |
247 | # CONFIG_SMP is not set | ||
248 | # CONFIG_PREEMPT_NONE is not set | 239 | # CONFIG_PREEMPT_NONE is not set |
249 | # CONFIG_PREEMPT_VOLUNTARY is not set | 240 | # CONFIG_PREEMPT_VOLUNTARY is not set |
250 | CONFIG_PREEMPT=y | 241 | CONFIG_PREEMPT=y |
251 | CONFIG_PREEMPT_BKL=y | 242 | CONFIG_PREEMPT_BKL=y |
243 | CONFIG_GUSA=y | ||
252 | 244 | ||
253 | # | 245 | # |
254 | # Boot options | 246 | # Boot options |
255 | # | 247 | # |
256 | CONFIG_ZERO_PAGE_OFFSET=0x00001000 | 248 | CONFIG_ZERO_PAGE_OFFSET=0x00001000 |
257 | CONFIG_BOOT_LINK_OFFSET=0x00800000 | 249 | CONFIG_BOOT_LINK_OFFSET=0x00800000 |
258 | # CONFIG_UBC_WAKEUP is not set | ||
259 | CONFIG_CMDLINE_BOOL=y | 250 | CONFIG_CMDLINE_BOOL=y |
260 | CONFIG_CMDLINE="console=ttySC0,115200 root=/dev/sda1" | 251 | CONFIG_CMDLINE="console=ttySC0,115200 root=/dev/sda1" |
261 | 252 | ||
@@ -267,11 +258,8 @@ CONFIG_SH_PCIDMA_NONCOHERENT=y | |||
267 | CONFIG_PCI_AUTO=y | 258 | CONFIG_PCI_AUTO=y |
268 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y | 259 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y |
269 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 260 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
261 | CONFIG_PCI_LEGACY=y | ||
270 | # CONFIG_PCI_DEBUG is not set | 262 | # CONFIG_PCI_DEBUG is not set |
271 | |||
272 | # | ||
273 | # PCCARD (PCMCIA/CardBus) support | ||
274 | # | ||
275 | # CONFIG_PCCARD is not set | 263 | # CONFIG_PCCARD is not set |
276 | # CONFIG_HOTPLUG_PCI is not set | 264 | # CONFIG_HOTPLUG_PCI is not set |
277 | 265 | ||
@@ -282,11 +270,6 @@ CONFIG_BINFMT_ELF=y | |||
282 | # CONFIG_BINFMT_MISC is not set | 270 | # CONFIG_BINFMT_MISC is not set |
283 | 271 | ||
284 | # | 272 | # |
285 | # Power management options (EXPERIMENTAL) | ||
286 | # | ||
287 | # CONFIG_PM is not set | ||
288 | |||
289 | # | ||
290 | # Networking | 273 | # Networking |
291 | # | 274 | # |
292 | CONFIG_NET=y | 275 | CONFIG_NET=y |
@@ -327,6 +310,7 @@ CONFIG_IP_PNP_DHCP=y | |||
327 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | 310 | CONFIG_INET_XFRM_MODE_TRANSPORT=y |
328 | CONFIG_INET_XFRM_MODE_TUNNEL=y | 311 | CONFIG_INET_XFRM_MODE_TUNNEL=y |
329 | CONFIG_INET_XFRM_MODE_BEET=y | 312 | CONFIG_INET_XFRM_MODE_BEET=y |
313 | # CONFIG_INET_LRO is not set | ||
330 | CONFIG_INET_DIAG=y | 314 | CONFIG_INET_DIAG=y |
331 | CONFIG_INET_TCP_DIAG=y | 315 | CONFIG_INET_TCP_DIAG=y |
332 | # CONFIG_TCP_CONG_ADVANCED is not set | 316 | # CONFIG_TCP_CONG_ADVANCED is not set |
@@ -353,10 +337,6 @@ CONFIG_LLC=m | |||
353 | # CONFIG_LAPB is not set | 337 | # CONFIG_LAPB is not set |
354 | # CONFIG_ECONET is not set | 338 | # CONFIG_ECONET is not set |
355 | # CONFIG_WAN_ROUTER is not set | 339 | # CONFIG_WAN_ROUTER is not set |
356 | |||
357 | # | ||
358 | # QoS and/or fair queueing | ||
359 | # | ||
360 | # CONFIG_NET_SCHED is not set | 340 | # CONFIG_NET_SCHED is not set |
361 | 341 | ||
362 | # | 342 | # |
@@ -376,6 +356,7 @@ CONFIG_WIRELESS_EXT=y | |||
376 | # CONFIG_MAC80211 is not set | 356 | # CONFIG_MAC80211 is not set |
377 | # CONFIG_IEEE80211 is not set | 357 | # CONFIG_IEEE80211 is not set |
378 | # CONFIG_RFKILL is not set | 358 | # CONFIG_RFKILL is not set |
359 | # CONFIG_NET_9P is not set | ||
379 | 360 | ||
380 | # | 361 | # |
381 | # Device Drivers | 362 | # Device Drivers |
@@ -384,33 +365,17 @@ CONFIG_WIRELESS_EXT=y | |||
384 | # | 365 | # |
385 | # Generic Driver Options | 366 | # Generic Driver Options |
386 | # | 367 | # |
368 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
387 | CONFIG_STANDALONE=y | 369 | CONFIG_STANDALONE=y |
388 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 370 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
389 | CONFIG_FW_LOADER=m | 371 | CONFIG_FW_LOADER=m |
390 | # CONFIG_DEBUG_DRIVER is not set | 372 | # CONFIG_DEBUG_DRIVER is not set |
391 | # CONFIG_DEBUG_DEVRES is not set | 373 | # CONFIG_DEBUG_DEVRES is not set |
392 | # CONFIG_SYS_HYPERVISOR is not set | 374 | # CONFIG_SYS_HYPERVISOR is not set |
393 | |||
394 | # | ||
395 | # Connector - unified userspace <-> kernelspace linker | ||
396 | # | ||
397 | # CONFIG_CONNECTOR is not set | 375 | # CONFIG_CONNECTOR is not set |
398 | # CONFIG_MTD is not set | 376 | # CONFIG_MTD is not set |
399 | |||
400 | # | ||
401 | # Parallel port support | ||
402 | # | ||
403 | # CONFIG_PARPORT is not set | 377 | # CONFIG_PARPORT is not set |
404 | 378 | CONFIG_BLK_DEV=y | |
405 | # | ||
406 | # Plug and Play support | ||
407 | # | ||
408 | # CONFIG_PNPACPI is not set | ||
409 | |||
410 | # | ||
411 | # Block devices | ||
412 | # | ||
413 | # CONFIG_BLK_CPQ_DA is not set | ||
414 | # CONFIG_BLK_CPQ_CISS_DA is not set | 379 | # CONFIG_BLK_CPQ_CISS_DA is not set |
415 | # CONFIG_BLK_DEV_DAC960 is not set | 380 | # CONFIG_BLK_DEV_DAC960 is not set |
416 | # CONFIG_BLK_DEV_UMEM is not set | 381 | # CONFIG_BLK_DEV_UMEM is not set |
@@ -424,14 +389,11 @@ CONFIG_BLK_DEV_RAM_SIZE=4096 | |||
424 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 389 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
425 | # CONFIG_CDROM_PKTCDVD is not set | 390 | # CONFIG_CDROM_PKTCDVD is not set |
426 | # CONFIG_ATA_OVER_ETH is not set | 391 | # CONFIG_ATA_OVER_ETH is not set |
427 | 392 | CONFIG_MISC_DEVICES=y | |
428 | # | ||
429 | # Misc devices | ||
430 | # | ||
431 | # CONFIG_PHANTOM is not set | 393 | # CONFIG_PHANTOM is not set |
394 | CONFIG_EEPROM_93CX6=y | ||
432 | # CONFIG_SGI_IOC4 is not set | 395 | # CONFIG_SGI_IOC4 is not set |
433 | # CONFIG_TIFM_CORE is not set | 396 | # CONFIG_TIFM_CORE is not set |
434 | # CONFIG_BLINK is not set | ||
435 | # CONFIG_IDE is not set | 397 | # CONFIG_IDE is not set |
436 | 398 | ||
437 | # | 399 | # |
@@ -439,6 +401,7 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | |||
439 | # | 401 | # |
440 | # CONFIG_RAID_ATTRS is not set | 402 | # CONFIG_RAID_ATTRS is not set |
441 | CONFIG_SCSI=y | 403 | CONFIG_SCSI=y |
404 | CONFIG_SCSI_DMA=y | ||
442 | # CONFIG_SCSI_TGT is not set | 405 | # CONFIG_SCSI_TGT is not set |
443 | # CONFIG_SCSI_NETLINK is not set | 406 | # CONFIG_SCSI_NETLINK is not set |
444 | CONFIG_SCSI_PROC_FS=y | 407 | CONFIG_SCSI_PROC_FS=y |
@@ -468,12 +431,9 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
468 | # CONFIG_SCSI_SPI_ATTRS is not set | 431 | # CONFIG_SCSI_SPI_ATTRS is not set |
469 | # CONFIG_SCSI_FC_ATTRS is not set | 432 | # CONFIG_SCSI_FC_ATTRS is not set |
470 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 433 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
471 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
472 | # CONFIG_SCSI_SAS_LIBSAS is not set | 434 | # CONFIG_SCSI_SAS_LIBSAS is not set |
473 | 435 | # CONFIG_SCSI_SRP_ATTRS is not set | |
474 | # | 436 | CONFIG_SCSI_LOWLEVEL=y |
475 | # SCSI low-level drivers | ||
476 | # | ||
477 | # CONFIG_ISCSI_TCP is not set | 437 | # CONFIG_ISCSI_TCP is not set |
478 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 438 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
479 | # CONFIG_SCSI_3W_9XXX is not set | 439 | # CONFIG_SCSI_3W_9XXX is not set |
@@ -483,7 +443,6 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
483 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 443 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
484 | # CONFIG_SCSI_AIC79XX is not set | 444 | # CONFIG_SCSI_AIC79XX is not set |
485 | # CONFIG_SCSI_AIC94XX is not set | 445 | # CONFIG_SCSI_AIC94XX is not set |
486 | # CONFIG_SCSI_DPT_I2O is not set | ||
487 | # CONFIG_SCSI_ARCMSR is not set | 446 | # CONFIG_SCSI_ARCMSR is not set |
488 | # CONFIG_MEGARAID_NEWGEN is not set | 447 | # CONFIG_MEGARAID_NEWGEN is not set |
489 | # CONFIG_MEGARAID_LEGACY is not set | 448 | # CONFIG_MEGARAID_LEGACY is not set |
@@ -548,6 +507,7 @@ CONFIG_SATA_SIL=y | |||
548 | # CONFIG_PATA_OLDPIIX is not set | 507 | # CONFIG_PATA_OLDPIIX is not set |
549 | # CONFIG_PATA_NETCELL is not set | 508 | # CONFIG_PATA_NETCELL is not set |
550 | # CONFIG_PATA_NS87410 is not set | 509 | # CONFIG_PATA_NS87410 is not set |
510 | # CONFIG_PATA_NS87415 is not set | ||
551 | # CONFIG_PATA_OPTI is not set | 511 | # CONFIG_PATA_OPTI is not set |
552 | # CONFIG_PATA_OPTIDMA is not set | 512 | # CONFIG_PATA_OPTIDMA is not set |
553 | # CONFIG_PATA_PDC_OLD is not set | 513 | # CONFIG_PATA_PDC_OLD is not set |
@@ -561,59 +521,43 @@ CONFIG_SATA_SIL=y | |||
561 | # CONFIG_PATA_VIA is not set | 521 | # CONFIG_PATA_VIA is not set |
562 | # CONFIG_PATA_WINBOND is not set | 522 | # CONFIG_PATA_WINBOND is not set |
563 | CONFIG_PATA_PLATFORM=y | 523 | CONFIG_PATA_PLATFORM=y |
564 | |||
565 | # | ||
566 | # Multi-device support (RAID and LVM) | ||
567 | # | ||
568 | # CONFIG_MD is not set | 524 | # CONFIG_MD is not set |
569 | |||
570 | # | ||
571 | # Fusion MPT device support | ||
572 | # | ||
573 | # CONFIG_FUSION is not set | 525 | # CONFIG_FUSION is not set |
574 | # CONFIG_FUSION_SPI is not set | ||
575 | # CONFIG_FUSION_FC is not set | ||
576 | # CONFIG_FUSION_SAS is not set | ||
577 | 526 | ||
578 | # | 527 | # |
579 | # IEEE 1394 (FireWire) support | 528 | # IEEE 1394 (FireWire) support |
580 | # | 529 | # |
581 | # CONFIG_FIREWIRE is not set | 530 | # CONFIG_FIREWIRE is not set |
582 | # CONFIG_IEEE1394 is not set | 531 | # CONFIG_IEEE1394 is not set |
583 | |||
584 | # | ||
585 | # I2O device support | ||
586 | # | ||
587 | # CONFIG_I2O is not set | 532 | # CONFIG_I2O is not set |
588 | |||
589 | # | ||
590 | # Network device support | ||
591 | # | ||
592 | CONFIG_NETDEVICES=y | 533 | CONFIG_NETDEVICES=y |
534 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
593 | # CONFIG_DUMMY is not set | 535 | # CONFIG_DUMMY is not set |
594 | # CONFIG_BONDING is not set | 536 | # CONFIG_BONDING is not set |
537 | # CONFIG_MACVLAN is not set | ||
595 | # CONFIG_EQUALIZER is not set | 538 | # CONFIG_EQUALIZER is not set |
596 | # CONFIG_TUN is not set | 539 | # CONFIG_TUN is not set |
540 | # CONFIG_VETH is not set | ||
541 | # CONFIG_IP1000 is not set | ||
597 | # CONFIG_ARCNET is not set | 542 | # CONFIG_ARCNET is not set |
598 | # CONFIG_PHYLIB is not set | 543 | # CONFIG_PHYLIB is not set |
599 | |||
600 | # | ||
601 | # Ethernet (10 or 100Mbit) | ||
602 | # | ||
603 | CONFIG_NET_ETHERNET=y | 544 | CONFIG_NET_ETHERNET=y |
604 | CONFIG_MII=y | 545 | CONFIG_MII=y |
546 | CONFIG_AX88796=y | ||
547 | CONFIG_AX88796_93CX6=y | ||
605 | # CONFIG_STNIC is not set | 548 | # CONFIG_STNIC is not set |
606 | # CONFIG_HAPPYMEAL is not set | 549 | # CONFIG_HAPPYMEAL is not set |
607 | # CONFIG_SUNGEM is not set | 550 | # CONFIG_SUNGEM is not set |
608 | # CONFIG_CASSINI is not set | 551 | # CONFIG_CASSINI is not set |
609 | # CONFIG_NET_VENDOR_3COM is not set | 552 | # CONFIG_NET_VENDOR_3COM is not set |
610 | # CONFIG_SMC91X is not set | 553 | # CONFIG_SMC91X is not set |
611 | 554 | # CONFIG_SMC911X is not set | |
612 | # | ||
613 | # Tulip family network device support | ||
614 | # | ||
615 | # CONFIG_NET_TULIP is not set | 555 | # CONFIG_NET_TULIP is not set |
616 | # CONFIG_HP100 is not set | 556 | # CONFIG_HP100 is not set |
557 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
558 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
559 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
560 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
617 | CONFIG_NET_PCI=y | 561 | CONFIG_NET_PCI=y |
618 | CONFIG_PCNET32=m | 562 | CONFIG_PCNET32=m |
619 | # CONFIG_PCNET32_NAPI is not set | 563 | # CONFIG_PCNET32_NAPI is not set |
@@ -621,7 +565,6 @@ CONFIG_PCNET32=m | |||
621 | # CONFIG_ADAPTEC_STARFIRE is not set | 565 | # CONFIG_ADAPTEC_STARFIRE is not set |
622 | # CONFIG_B44 is not set | 566 | # CONFIG_B44 is not set |
623 | # CONFIG_FORCEDETH is not set | 567 | # CONFIG_FORCEDETH is not set |
624 | # CONFIG_DGRS is not set | ||
625 | # CONFIG_EEPRO100 is not set | 568 | # CONFIG_EEPRO100 is not set |
626 | # CONFIG_E100 is not set | 569 | # CONFIG_E100 is not set |
627 | # CONFIG_FEALNX is not set | 570 | # CONFIG_FEALNX is not set |
@@ -647,6 +590,7 @@ CONFIG_NETDEV_1000=y | |||
647 | CONFIG_E1000=m | 590 | CONFIG_E1000=m |
648 | # CONFIG_E1000_NAPI is not set | 591 | # CONFIG_E1000_NAPI is not set |
649 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set | 592 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set |
593 | # CONFIG_E1000E is not set | ||
650 | # CONFIG_NS83820 is not set | 594 | # CONFIG_NS83820 is not set |
651 | # CONFIG_HAMACHI is not set | 595 | # CONFIG_HAMACHI is not set |
652 | # CONFIG_YELLOWFIN is not set | 596 | # CONFIG_YELLOWFIN is not set |
@@ -664,11 +608,14 @@ CONFIG_R8169=y | |||
664 | CONFIG_NETDEV_10000=y | 608 | CONFIG_NETDEV_10000=y |
665 | # CONFIG_CHELSIO_T1 is not set | 609 | # CONFIG_CHELSIO_T1 is not set |
666 | # CONFIG_CHELSIO_T3 is not set | 610 | # CONFIG_CHELSIO_T3 is not set |
611 | # CONFIG_IXGBE is not set | ||
667 | # CONFIG_IXGB is not set | 612 | # CONFIG_IXGB is not set |
668 | # CONFIG_S2IO is not set | 613 | # CONFIG_S2IO is not set |
669 | # CONFIG_MYRI10GE is not set | 614 | # CONFIG_MYRI10GE is not set |
670 | # CONFIG_NETXEN_NIC is not set | 615 | # CONFIG_NETXEN_NIC is not set |
616 | # CONFIG_NIU is not set | ||
671 | # CONFIG_MLX4_CORE is not set | 617 | # CONFIG_MLX4_CORE is not set |
618 | # CONFIG_TEHUTI is not set | ||
672 | # CONFIG_TR is not set | 619 | # CONFIG_TR is not set |
673 | 620 | ||
674 | # | 621 | # |
@@ -686,15 +633,7 @@ CONFIG_NETDEV_10000=y | |||
686 | # CONFIG_NETCONSOLE is not set | 633 | # CONFIG_NETCONSOLE is not set |
687 | # CONFIG_NETPOLL is not set | 634 | # CONFIG_NETPOLL is not set |
688 | # CONFIG_NET_POLL_CONTROLLER is not set | 635 | # CONFIG_NET_POLL_CONTROLLER is not set |
689 | |||
690 | # | ||
691 | # ISDN subsystem | ||
692 | # | ||
693 | # CONFIG_ISDN is not set | 636 | # CONFIG_ISDN is not set |
694 | |||
695 | # | ||
696 | # Telephony Support | ||
697 | # | ||
698 | # CONFIG_PHONE is not set | 637 | # CONFIG_PHONE is not set |
699 | 638 | ||
700 | # | 639 | # |
@@ -702,6 +641,7 @@ CONFIG_NETDEV_10000=y | |||
702 | # | 641 | # |
703 | CONFIG_INPUT=y | 642 | CONFIG_INPUT=y |
704 | # CONFIG_INPUT_FF_MEMLESS is not set | 643 | # CONFIG_INPUT_FF_MEMLESS is not set |
644 | # CONFIG_INPUT_POLLDEV is not set | ||
705 | 645 | ||
706 | # | 646 | # |
707 | # Userland interfaces | 647 | # Userland interfaces |
@@ -711,7 +651,6 @@ CONFIG_INPUT_MOUSEDEV=y | |||
711 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | 651 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 |
712 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | 652 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 |
713 | # CONFIG_INPUT_JOYDEV is not set | 653 | # CONFIG_INPUT_JOYDEV is not set |
714 | # CONFIG_INPUT_TSDEV is not set | ||
715 | # CONFIG_INPUT_EVDEV is not set | 654 | # CONFIG_INPUT_EVDEV is not set |
716 | # CONFIG_INPUT_EVBUG is not set | 655 | # CONFIG_INPUT_EVBUG is not set |
717 | 656 | ||
@@ -765,21 +704,11 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
765 | CONFIG_UNIX98_PTYS=y | 704 | CONFIG_UNIX98_PTYS=y |
766 | CONFIG_LEGACY_PTYS=y | 705 | CONFIG_LEGACY_PTYS=y |
767 | CONFIG_LEGACY_PTY_COUNT=256 | 706 | CONFIG_LEGACY_PTY_COUNT=256 |
768 | |||
769 | # | ||
770 | # IPMI | ||
771 | # | ||
772 | # CONFIG_IPMI_HANDLER is not set | 707 | # CONFIG_IPMI_HANDLER is not set |
773 | # CONFIG_WATCHDOG is not set | ||
774 | CONFIG_HW_RANDOM=y | 708 | CONFIG_HW_RANDOM=y |
775 | # CONFIG_R3964 is not set | 709 | # CONFIG_R3964 is not set |
776 | # CONFIG_APPLICOM is not set | 710 | # CONFIG_APPLICOM is not set |
777 | # CONFIG_DRM is not set | ||
778 | # CONFIG_RAW_DRIVER is not set | 711 | # CONFIG_RAW_DRIVER is not set |
779 | |||
780 | # | ||
781 | # TPM devices | ||
782 | # | ||
783 | # CONFIG_TCG_TPM is not set | 712 | # CONFIG_TCG_TPM is not set |
784 | CONFIG_DEVPORT=y | 713 | CONFIG_DEVPORT=y |
785 | # CONFIG_I2C is not set | 714 | # CONFIG_I2C is not set |
@@ -789,21 +718,31 @@ CONFIG_DEVPORT=y | |||
789 | # | 718 | # |
790 | # CONFIG_SPI is not set | 719 | # CONFIG_SPI is not set |
791 | # CONFIG_SPI_MASTER is not set | 720 | # CONFIG_SPI_MASTER is not set |
792 | |||
793 | # | ||
794 | # Dallas's 1-wire bus | ||
795 | # | ||
796 | # CONFIG_W1 is not set | 721 | # CONFIG_W1 is not set |
722 | # CONFIG_POWER_SUPPLY is not set | ||
797 | CONFIG_HWMON=y | 723 | CONFIG_HWMON=y |
798 | # CONFIG_HWMON_VID is not set | 724 | # CONFIG_HWMON_VID is not set |
799 | # CONFIG_SENSORS_ABITUGURU is not set | ||
800 | # CONFIG_SENSORS_F71805F is not set | 725 | # CONFIG_SENSORS_F71805F is not set |
726 | # CONFIG_SENSORS_F71882FG is not set | ||
727 | # CONFIG_SENSORS_IT87 is not set | ||
728 | # CONFIG_SENSORS_PC87360 is not set | ||
801 | # CONFIG_SENSORS_PC87427 is not set | 729 | # CONFIG_SENSORS_PC87427 is not set |
730 | # CONFIG_SENSORS_SIS5595 is not set | ||
802 | # CONFIG_SENSORS_SMSC47M1 is not set | 731 | # CONFIG_SENSORS_SMSC47M1 is not set |
803 | # CONFIG_SENSORS_SMSC47B397 is not set | 732 | # CONFIG_SENSORS_SMSC47B397 is not set |
733 | # CONFIG_SENSORS_VIA686A is not set | ||
804 | # CONFIG_SENSORS_VT1211 is not set | 734 | # CONFIG_SENSORS_VT1211 is not set |
735 | # CONFIG_SENSORS_VT8231 is not set | ||
805 | # CONFIG_SENSORS_W83627HF is not set | 736 | # CONFIG_SENSORS_W83627HF is not set |
737 | # CONFIG_SENSORS_W83627EHF is not set | ||
806 | # CONFIG_HWMON_DEBUG_CHIP is not set | 738 | # CONFIG_HWMON_DEBUG_CHIP is not set |
739 | # CONFIG_WATCHDOG is not set | ||
740 | |||
741 | # | ||
742 | # Sonics Silicon Backplane | ||
743 | # | ||
744 | CONFIG_SSB_POSSIBLE=y | ||
745 | # CONFIG_SSB is not set | ||
807 | 746 | ||
808 | # | 747 | # |
809 | # Multifunction device drivers | 748 | # Multifunction device drivers |
@@ -820,14 +759,16 @@ CONFIG_DAB=y | |||
820 | # | 759 | # |
821 | # Graphics support | 760 | # Graphics support |
822 | # | 761 | # |
762 | # CONFIG_DRM is not set | ||
763 | # CONFIG_VGASTATE is not set | ||
764 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
765 | # CONFIG_FB is not set | ||
823 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 766 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
824 | 767 | ||
825 | # | 768 | # |
826 | # Display device support | 769 | # Display device support |
827 | # | 770 | # |
828 | # CONFIG_DISPLAY_SUPPORT is not set | 771 | # CONFIG_DISPLAY_SUPPORT is not set |
829 | # CONFIG_VGASTATE is not set | ||
830 | # CONFIG_FB is not set | ||
831 | 772 | ||
832 | # | 773 | # |
833 | # Sound | 774 | # Sound |
@@ -843,20 +784,14 @@ CONFIG_SOUND=m | |||
843 | # Open Sound System | 784 | # Open Sound System |
844 | # | 785 | # |
845 | CONFIG_SOUND_PRIME=m | 786 | CONFIG_SOUND_PRIME=m |
846 | # CONFIG_OSS_OBSOLETE is not set | ||
847 | # CONFIG_SOUND_TRIDENT is not set | 787 | # CONFIG_SOUND_TRIDENT is not set |
848 | # CONFIG_SOUND_MSNDCLAS is not set | 788 | # CONFIG_SOUND_MSNDCLAS is not set |
849 | # CONFIG_SOUND_MSNDPIN is not set | 789 | # CONFIG_SOUND_MSNDPIN is not set |
850 | 790 | CONFIG_HID_SUPPORT=y | |
851 | # | ||
852 | # HID Devices | ||
853 | # | ||
854 | CONFIG_HID=y | 791 | CONFIG_HID=y |
855 | # CONFIG_HID_DEBUG is not set | 792 | # CONFIG_HID_DEBUG is not set |
856 | 793 | # CONFIG_HIDRAW is not set | |
857 | # | 794 | CONFIG_USB_SUPPORT=y |
858 | # USB support | ||
859 | # | ||
860 | CONFIG_USB_ARCH_HAS_HCD=y | 795 | CONFIG_USB_ARCH_HAS_HCD=y |
861 | CONFIG_USB_ARCH_HAS_OHCI=y | 796 | CONFIG_USB_ARCH_HAS_OHCI=y |
862 | CONFIG_USB_ARCH_HAS_EHCI=y | 797 | CONFIG_USB_ARCH_HAS_EHCI=y |
@@ -871,32 +806,8 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
871 | # | 806 | # |
872 | # CONFIG_USB_GADGET is not set | 807 | # CONFIG_USB_GADGET is not set |
873 | # CONFIG_MMC is not set | 808 | # CONFIG_MMC is not set |
874 | |||
875 | # | ||
876 | # LED devices | ||
877 | # | ||
878 | # CONFIG_NEW_LEDS is not set | 809 | # CONFIG_NEW_LEDS is not set |
879 | |||
880 | # | ||
881 | # LED drivers | ||
882 | # | ||
883 | |||
884 | # | ||
885 | # LED Triggers | ||
886 | # | ||
887 | |||
888 | # | ||
889 | # InfiniBand support | ||
890 | # | ||
891 | # CONFIG_INFINIBAND is not set | 810 | # CONFIG_INFINIBAND is not set |
892 | |||
893 | # | ||
894 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
895 | # | ||
896 | |||
897 | # | ||
898 | # Real Time Clock | ||
899 | # | ||
900 | CONFIG_RTC_LIB=y | 811 | CONFIG_RTC_LIB=y |
901 | CONFIG_RTC_CLASS=y | 812 | CONFIG_RTC_CLASS=y |
902 | CONFIG_RTC_HCTOSYS=y | 813 | CONFIG_RTC_HCTOSYS=y |
@@ -913,10 +824,6 @@ CONFIG_RTC_INTF_DEV=y | |||
913 | # CONFIG_RTC_DRV_TEST is not set | 824 | # CONFIG_RTC_DRV_TEST is not set |
914 | 825 | ||
915 | # | 826 | # |
916 | # I2C RTC drivers | ||
917 | # | ||
918 | |||
919 | # | ||
920 | # SPI RTC drivers | 827 | # SPI RTC drivers |
921 | # | 828 | # |
922 | 829 | ||
@@ -924,8 +831,10 @@ CONFIG_RTC_INTF_DEV=y | |||
924 | # Platform RTC drivers | 831 | # Platform RTC drivers |
925 | # | 832 | # |
926 | # CONFIG_RTC_DRV_DS1553 is not set | 833 | # CONFIG_RTC_DRV_DS1553 is not set |
834 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
927 | # CONFIG_RTC_DRV_DS1742 is not set | 835 | # CONFIG_RTC_DRV_DS1742 is not set |
928 | # CONFIG_RTC_DRV_M48T86 is not set | 836 | # CONFIG_RTC_DRV_M48T86 is not set |
837 | # CONFIG_RTC_DRV_M48T59 is not set | ||
929 | # CONFIG_RTC_DRV_V3020 is not set | 838 | # CONFIG_RTC_DRV_V3020 is not set |
930 | 839 | ||
931 | # | 840 | # |
@@ -934,17 +843,9 @@ CONFIG_RTC_INTF_DEV=y | |||
934 | CONFIG_RTC_DRV_SH=y | 843 | CONFIG_RTC_DRV_SH=y |
935 | 844 | ||
936 | # | 845 | # |
937 | # DMA Engine support | 846 | # Userspace I/O |
938 | # | ||
939 | # CONFIG_DMA_ENGINE is not set | ||
940 | |||
941 | # | ||
942 | # DMA Clients | ||
943 | # | ||
944 | |||
945 | # | ||
946 | # DMA Devices | ||
947 | # | 847 | # |
848 | # CONFIG_UIO is not set | ||
948 | 849 | ||
949 | # | 850 | # |
950 | # File systems | 851 | # File systems |
@@ -1005,7 +906,6 @@ CONFIG_TMPFS=y | |||
1005 | # CONFIG_TMPFS_POSIX_ACL is not set | 906 | # CONFIG_TMPFS_POSIX_ACL is not set |
1006 | CONFIG_HUGETLBFS=y | 907 | CONFIG_HUGETLBFS=y |
1007 | CONFIG_HUGETLB_PAGE=y | 908 | CONFIG_HUGETLB_PAGE=y |
1008 | CONFIG_RAMFS=y | ||
1009 | CONFIG_CONFIGFS_FS=m | 909 | CONFIG_CONFIGFS_FS=m |
1010 | 910 | ||
1011 | # | 911 | # |
@@ -1024,10 +924,7 @@ CONFIG_CONFIGFS_FS=m | |||
1024 | # CONFIG_QNX4FS_FS is not set | 924 | # CONFIG_QNX4FS_FS is not set |
1025 | # CONFIG_SYSV_FS is not set | 925 | # CONFIG_SYSV_FS is not set |
1026 | # CONFIG_UFS_FS is not set | 926 | # CONFIG_UFS_FS is not set |
1027 | 927 | CONFIG_NETWORK_FILESYSTEMS=y | |
1028 | # | ||
1029 | # Network File Systems | ||
1030 | # | ||
1031 | CONFIG_NFS_FS=y | 928 | CONFIG_NFS_FS=y |
1032 | CONFIG_NFS_V3=y | 929 | CONFIG_NFS_V3=y |
1033 | # CONFIG_NFS_V3_ACL is not set | 930 | # CONFIG_NFS_V3_ACL is not set |
@@ -1053,17 +950,12 @@ CONFIG_RPCSEC_GSS_KRB5=y | |||
1053 | # CONFIG_NCP_FS is not set | 950 | # CONFIG_NCP_FS is not set |
1054 | # CONFIG_CODA_FS is not set | 951 | # CONFIG_CODA_FS is not set |
1055 | # CONFIG_AFS_FS is not set | 952 | # CONFIG_AFS_FS is not set |
1056 | # CONFIG_9P_FS is not set | ||
1057 | 953 | ||
1058 | # | 954 | # |
1059 | # Partition Types | 955 | # Partition Types |
1060 | # | 956 | # |
1061 | # CONFIG_PARTITION_ADVANCED is not set | 957 | # CONFIG_PARTITION_ADVANCED is not set |
1062 | CONFIG_MSDOS_PARTITION=y | 958 | CONFIG_MSDOS_PARTITION=y |
1063 | |||
1064 | # | ||
1065 | # Native Language Support | ||
1066 | # | ||
1067 | CONFIG_NLS=y | 959 | CONFIG_NLS=y |
1068 | CONFIG_NLS_DEFAULT="iso8859-1" | 960 | CONFIG_NLS_DEFAULT="iso8859-1" |
1069 | CONFIG_NLS_CODEPAGE_437=y | 961 | CONFIG_NLS_CODEPAGE_437=y |
@@ -1104,23 +996,18 @@ CONFIG_NLS_ISO8859_1=y | |||
1104 | # CONFIG_NLS_KOI8_R is not set | 996 | # CONFIG_NLS_KOI8_R is not set |
1105 | # CONFIG_NLS_KOI8_U is not set | 997 | # CONFIG_NLS_KOI8_U is not set |
1106 | # CONFIG_NLS_UTF8 is not set | 998 | # CONFIG_NLS_UTF8 is not set |
1107 | |||
1108 | # | ||
1109 | # Distributed Lock Manager | ||
1110 | # | ||
1111 | # CONFIG_DLM is not set | 999 | # CONFIG_DLM is not set |
1112 | 1000 | CONFIG_INSTRUMENTATION=y | |
1113 | # | ||
1114 | # Profiling support | ||
1115 | # | ||
1116 | CONFIG_PROFILING=y | 1001 | CONFIG_PROFILING=y |
1117 | CONFIG_OPROFILE=m | 1002 | CONFIG_OPROFILE=m |
1003 | # CONFIG_MARKERS is not set | ||
1118 | 1004 | ||
1119 | # | 1005 | # |
1120 | # Kernel hacking | 1006 | # Kernel hacking |
1121 | # | 1007 | # |
1122 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 1008 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
1123 | # CONFIG_PRINTK_TIME is not set | 1009 | # CONFIG_PRINTK_TIME is not set |
1010 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
1124 | CONFIG_ENABLE_MUST_CHECK=y | 1011 | CONFIG_ENABLE_MUST_CHECK=y |
1125 | CONFIG_MAGIC_SYSRQ=y | 1012 | CONFIG_MAGIC_SYSRQ=y |
1126 | # CONFIG_UNUSED_SYMBOLS is not set | 1013 | # CONFIG_UNUSED_SYMBOLS is not set |
@@ -1129,6 +1016,7 @@ CONFIG_DEBUG_FS=y | |||
1129 | CONFIG_DEBUG_KERNEL=y | 1016 | CONFIG_DEBUG_KERNEL=y |
1130 | # CONFIG_DEBUG_SHIRQ is not set | 1017 | # CONFIG_DEBUG_SHIRQ is not set |
1131 | CONFIG_DETECT_SOFTLOCKUP=y | 1018 | CONFIG_DETECT_SOFTLOCKUP=y |
1019 | CONFIG_SCHED_DEBUG=y | ||
1132 | # CONFIG_SCHEDSTATS is not set | 1020 | # CONFIG_SCHEDSTATS is not set |
1133 | # CONFIG_TIMER_STATS is not set | 1021 | # CONFIG_TIMER_STATS is not set |
1134 | # CONFIG_DEBUG_SLAB is not set | 1022 | # CONFIG_DEBUG_SLAB is not set |
@@ -1137,6 +1025,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1137 | # CONFIG_DEBUG_MUTEXES is not set | 1025 | # CONFIG_DEBUG_MUTEXES is not set |
1138 | # CONFIG_DEBUG_LOCK_ALLOC is not set | 1026 | # CONFIG_DEBUG_LOCK_ALLOC is not set |
1139 | # CONFIG_PROVE_LOCKING is not set | 1027 | # CONFIG_PROVE_LOCKING is not set |
1028 | # CONFIG_LOCK_STAT is not set | ||
1140 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1029 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1141 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | 1030 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set |
1142 | # CONFIG_DEBUG_KOBJECT is not set | 1031 | # CONFIG_DEBUG_KOBJECT is not set |
@@ -1144,10 +1033,13 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
1144 | CONFIG_DEBUG_INFO=y | 1033 | CONFIG_DEBUG_INFO=y |
1145 | # CONFIG_DEBUG_VM is not set | 1034 | # CONFIG_DEBUG_VM is not set |
1146 | # CONFIG_DEBUG_LIST is not set | 1035 | # CONFIG_DEBUG_LIST is not set |
1036 | # CONFIG_DEBUG_SG is not set | ||
1147 | # CONFIG_FRAME_POINTER is not set | 1037 | # CONFIG_FRAME_POINTER is not set |
1148 | CONFIG_FORCED_INLINING=y | 1038 | CONFIG_FORCED_INLINING=y |
1039 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
1149 | # CONFIG_RCU_TORTURE_TEST is not set | 1040 | # CONFIG_RCU_TORTURE_TEST is not set |
1150 | # CONFIG_FAULT_INJECTION is not set | 1041 | # CONFIG_FAULT_INJECTION is not set |
1042 | # CONFIG_SAMPLES is not set | ||
1151 | CONFIG_SH_STANDARD_BIOS=y | 1043 | CONFIG_SH_STANDARD_BIOS=y |
1152 | # CONFIG_EARLY_SCIF_CONSOLE is not set | 1044 | # CONFIG_EARLY_SCIF_CONSOLE is not set |
1153 | CONFIG_EARLY_PRINTK=y | 1045 | CONFIG_EARLY_PRINTK=y |
@@ -1155,6 +1047,7 @@ CONFIG_EARLY_PRINTK=y | |||
1155 | CONFIG_DEBUG_STACKOVERFLOW=y | 1047 | CONFIG_DEBUG_STACKOVERFLOW=y |
1156 | # CONFIG_DEBUG_STACK_USAGE is not set | 1048 | # CONFIG_DEBUG_STACK_USAGE is not set |
1157 | # CONFIG_4KSTACKS is not set | 1049 | # CONFIG_4KSTACKS is not set |
1050 | # CONFIG_IRQSTACKS is not set | ||
1158 | # CONFIG_SH_KGDB is not set | 1051 | # CONFIG_SH_KGDB is not set |
1159 | 1052 | ||
1160 | # | 1053 | # |
@@ -1162,10 +1055,7 @@ CONFIG_DEBUG_STACKOVERFLOW=y | |||
1162 | # | 1055 | # |
1163 | # CONFIG_KEYS is not set | 1056 | # CONFIG_KEYS is not set |
1164 | # CONFIG_SECURITY is not set | 1057 | # CONFIG_SECURITY is not set |
1165 | 1058 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | |
1166 | # | ||
1167 | # Cryptographic options | ||
1168 | # | ||
1169 | CONFIG_CRYPTO=y | 1059 | CONFIG_CRYPTO=y |
1170 | CONFIG_CRYPTO_ALGAPI=y | 1060 | CONFIG_CRYPTO_ALGAPI=y |
1171 | CONFIG_CRYPTO_BLKCIPHER=y | 1061 | CONFIG_CRYPTO_BLKCIPHER=y |
@@ -1186,6 +1076,7 @@ CONFIG_CRYPTO_ECB=m | |||
1186 | CONFIG_CRYPTO_CBC=y | 1076 | CONFIG_CRYPTO_CBC=y |
1187 | CONFIG_CRYPTO_PCBC=m | 1077 | CONFIG_CRYPTO_PCBC=m |
1188 | # CONFIG_CRYPTO_LRW is not set | 1078 | # CONFIG_CRYPTO_LRW is not set |
1079 | # CONFIG_CRYPTO_XTS is not set | ||
1189 | # CONFIG_CRYPTO_CRYPTD is not set | 1080 | # CONFIG_CRYPTO_CRYPTD is not set |
1190 | CONFIG_CRYPTO_DES=y | 1081 | CONFIG_CRYPTO_DES=y |
1191 | # CONFIG_CRYPTO_FCRYPT is not set | 1082 | # CONFIG_CRYPTO_FCRYPT is not set |
@@ -1199,15 +1090,14 @@ CONFIG_CRYPTO_DES=y | |||
1199 | # CONFIG_CRYPTO_ARC4 is not set | 1090 | # CONFIG_CRYPTO_ARC4 is not set |
1200 | # CONFIG_CRYPTO_KHAZAD is not set | 1091 | # CONFIG_CRYPTO_KHAZAD is not set |
1201 | # CONFIG_CRYPTO_ANUBIS is not set | 1092 | # CONFIG_CRYPTO_ANUBIS is not set |
1093 | # CONFIG_CRYPTO_SEED is not set | ||
1202 | # CONFIG_CRYPTO_DEFLATE is not set | 1094 | # CONFIG_CRYPTO_DEFLATE is not set |
1203 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 1095 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
1204 | # CONFIG_CRYPTO_CRC32C is not set | 1096 | # CONFIG_CRYPTO_CRC32C is not set |
1205 | # CONFIG_CRYPTO_CAMELLIA is not set | 1097 | # CONFIG_CRYPTO_CAMELLIA is not set |
1206 | # CONFIG_CRYPTO_TEST is not set | 1098 | # CONFIG_CRYPTO_TEST is not set |
1207 | 1099 | # CONFIG_CRYPTO_AUTHENC is not set | |
1208 | # | 1100 | CONFIG_CRYPTO_HW=y |
1209 | # Hardware crypto devices | ||
1210 | # | ||
1211 | 1101 | ||
1212 | # | 1102 | # |
1213 | # Library routines | 1103 | # Library routines |
@@ -1217,6 +1107,7 @@ CONFIG_BITREVERSE=y | |||
1217 | # CONFIG_CRC16 is not set | 1107 | # CONFIG_CRC16 is not set |
1218 | # CONFIG_CRC_ITU_T is not set | 1108 | # CONFIG_CRC_ITU_T is not set |
1219 | CONFIG_CRC32=y | 1109 | CONFIG_CRC32=y |
1110 | # CONFIG_CRC7 is not set | ||
1220 | # CONFIG_LIBCRC32C is not set | 1111 | # CONFIG_LIBCRC32C is not set |
1221 | CONFIG_HAS_IOMEM=y | 1112 | CONFIG_HAS_IOMEM=y |
1222 | CONFIG_HAS_IOPORT=y | 1113 | CONFIG_HAS_IOPORT=y |
diff --git a/arch/sh/configs/r7785rp_defconfig b/arch/sh/configs/r7785rp_defconfig index 158e03f0b1ef..2e43a2a971a9 100644 --- a/arch/sh/configs/r7785rp_defconfig +++ b/arch/sh/configs/r7785rp_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.24-rc1 | 3 | # Linux kernel version: 2.6.24-rc2 |
4 | # Fri Nov 2 14:30:49 2007 | 4 | # Tue Nov 13 20:34:57 2007 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
@@ -124,8 +124,6 @@ CONFIG_CPU_SHX2=y | |||
124 | # CONFIG_CPU_SUBTYPE_SH7751R is not set | 124 | # CONFIG_CPU_SUBTYPE_SH7751R is not set |
125 | # CONFIG_CPU_SUBTYPE_SH7760 is not set | 125 | # CONFIG_CPU_SUBTYPE_SH7760 is not set |
126 | # CONFIG_CPU_SUBTYPE_SH4_202 is not set | 126 | # CONFIG_CPU_SUBTYPE_SH4_202 is not set |
127 | # CONFIG_CPU_SUBTYPE_ST40STB1 is not set | ||
128 | # CONFIG_CPU_SUBTYPE_ST40GX1 is not set | ||
129 | # CONFIG_CPU_SUBTYPE_SH7770 is not set | 127 | # CONFIG_CPU_SUBTYPE_SH7770 is not set |
130 | # CONFIG_CPU_SUBTYPE_SH7780 is not set | 128 | # CONFIG_CPU_SUBTYPE_SH7780 is not set |
131 | CONFIG_CPU_SUBTYPE_SH7785=y | 129 | CONFIG_CPU_SUBTYPE_SH7785=y |
@@ -254,7 +252,6 @@ CONFIG_GUSA=y | |||
254 | # | 252 | # |
255 | CONFIG_ZERO_PAGE_OFFSET=0x00001000 | 253 | CONFIG_ZERO_PAGE_OFFSET=0x00001000 |
256 | CONFIG_BOOT_LINK_OFFSET=0x00800000 | 254 | CONFIG_BOOT_LINK_OFFSET=0x00800000 |
257 | # CONFIG_UBC_WAKEUP is not set | ||
258 | CONFIG_CMDLINE_BOOL=y | 255 | CONFIG_CMDLINE_BOOL=y |
259 | CONFIG_CMDLINE="console=ttySC0,115200 root=/dev/sda1" | 256 | CONFIG_CMDLINE="console=ttySC0,115200 root=/dev/sda1" |
260 | 257 | ||
@@ -266,6 +263,7 @@ CONFIG_SH_PCIDMA_NONCOHERENT=y | |||
266 | CONFIG_PCI_AUTO=y | 263 | CONFIG_PCI_AUTO=y |
267 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y | 264 | CONFIG_PCI_AUTO_UPDATE_RESOURCES=y |
268 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 265 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
266 | CONFIG_PCI_LEGACY=y | ||
269 | # CONFIG_PCI_DEBUG is not set | 267 | # CONFIG_PCI_DEBUG is not set |
270 | # CONFIG_PCCARD is not set | 268 | # CONFIG_PCCARD is not set |
271 | # CONFIG_HOTPLUG_PCI is not set | 269 | # CONFIG_HOTPLUG_PCI is not set |
@@ -550,6 +548,8 @@ CONFIG_NETDEVICES=y | |||
550 | # CONFIG_PHYLIB is not set | 548 | # CONFIG_PHYLIB is not set |
551 | CONFIG_NET_ETHERNET=y | 549 | CONFIG_NET_ETHERNET=y |
552 | CONFIG_MII=y | 550 | CONFIG_MII=y |
551 | CONFIG_AX88796=y | ||
552 | CONFIG_AX88796_93CX6=y | ||
553 | # CONFIG_STNIC is not set | 553 | # CONFIG_STNIC is not set |
554 | # CONFIG_HAPPYMEAL is not set | 554 | # CONFIG_HAPPYMEAL is not set |
555 | # CONFIG_SUNGEM is not set | 555 | # CONFIG_SUNGEM is not set |
diff --git a/arch/sh/mm/fault.c b/arch/sh/mm/fault.c index f33cedb353fc..60d74f793a1d 100644 --- a/arch/sh/mm/fault.c +++ b/arch/sh/mm/fault.c | |||
@@ -258,9 +258,6 @@ asmlinkage int __kprobes __do_page_fault(struct pt_regs *regs, | |||
258 | pmd_t *pmd; | 258 | pmd_t *pmd; |
259 | pte_t *pte; | 259 | pte_t *pte; |
260 | pte_t entry; | 260 | pte_t entry; |
261 | struct mm_struct *mm = current->mm; | ||
262 | spinlock_t *ptl = NULL; | ||
263 | int ret = 1; | ||
264 | 261 | ||
265 | #ifdef CONFIG_SH_KGDB | 262 | #ifdef CONFIG_SH_KGDB |
266 | if (kgdb_nofault && kgdb_bus_err_hook) | 263 | if (kgdb_nofault && kgdb_bus_err_hook) |
@@ -274,12 +271,11 @@ asmlinkage int __kprobes __do_page_fault(struct pt_regs *regs, | |||
274 | */ | 271 | */ |
275 | if (address >= P3SEG && address < P3_ADDR_MAX) { | 272 | if (address >= P3SEG && address < P3_ADDR_MAX) { |
276 | pgd = pgd_offset_k(address); | 273 | pgd = pgd_offset_k(address); |
277 | mm = NULL; | ||
278 | } else { | 274 | } else { |
279 | if (unlikely(address >= TASK_SIZE || !mm)) | 275 | if (unlikely(address >= TASK_SIZE || !current->mm)) |
280 | return 1; | 276 | return 1; |
281 | 277 | ||
282 | pgd = pgd_offset(mm, address); | 278 | pgd = pgd_offset(current->mm, address); |
283 | } | 279 | } |
284 | 280 | ||
285 | pud = pud_offset(pgd, address); | 281 | pud = pud_offset(pgd, address); |
@@ -289,34 +285,19 @@ asmlinkage int __kprobes __do_page_fault(struct pt_regs *regs, | |||
289 | if (pmd_none_or_clear_bad(pmd)) | 285 | if (pmd_none_or_clear_bad(pmd)) |
290 | return 1; | 286 | return 1; |
291 | 287 | ||
292 | if (mm) | 288 | pte = pte_offset_kernel(pmd, address); |
293 | pte = pte_offset_map_lock(mm, pmd, address, &ptl); | ||
294 | else | ||
295 | pte = pte_offset_kernel(pmd, address); | ||
296 | |||
297 | entry = *pte; | 289 | entry = *pte; |
298 | if (unlikely(pte_none(entry) || pte_not_present(entry))) | 290 | if (unlikely(pte_none(entry) || pte_not_present(entry))) |
299 | goto unlock; | 291 | return 1; |
300 | if (unlikely(writeaccess && !pte_write(entry))) | 292 | if (unlikely(writeaccess && !pte_write(entry))) |
301 | goto unlock; | 293 | return 1; |
302 | 294 | ||
303 | if (writeaccess) | 295 | if (writeaccess) |
304 | entry = pte_mkdirty(entry); | 296 | entry = pte_mkdirty(entry); |
305 | entry = pte_mkyoung(entry); | 297 | entry = pte_mkyoung(entry); |
306 | 298 | ||
307 | #ifdef CONFIG_CPU_SH4 | ||
308 | /* | ||
309 | * ITLB is not affected by "ldtlb" instruction. | ||
310 | * So, we need to flush the entry by ourselves. | ||
311 | */ | ||
312 | local_flush_tlb_one(get_asid(), address & PAGE_MASK); | ||
313 | #endif | ||
314 | |||
315 | set_pte(pte, entry); | 299 | set_pte(pte, entry); |
316 | update_mmu_cache(NULL, address, entry); | 300 | update_mmu_cache(NULL, address, entry); |
317 | ret = 0; | 301 | |
318 | unlock: | 302 | return 0; |
319 | if (mm) | ||
320 | pte_unmap_unlock(pte, ptl); | ||
321 | return ret; | ||
322 | } | 303 | } |
diff --git a/arch/um/Makefile b/arch/um/Makefile index 31999bc1c8a4..ba6813a4aa37 100644 --- a/arch/um/Makefile +++ b/arch/um/Makefile | |||
@@ -168,7 +168,7 @@ ifneq ($(KBUILD_SRC),) | |||
168 | $(Q)mkdir -p $(objtree)/include/asm-um | 168 | $(Q)mkdir -p $(objtree)/include/asm-um |
169 | $(Q)ln -fsn $(srctree)/include/asm-$(HEADER_ARCH) include/asm-um/arch | 169 | $(Q)ln -fsn $(srctree)/include/asm-$(HEADER_ARCH) include/asm-um/arch |
170 | else | 170 | else |
171 | $(Q)cd $(TOPDIR)/include/asm-um && ln -fsn ../asm-$(SUBARCH) arch | 171 | $(Q)cd $(TOPDIR)/include/asm-um && ln -fsn ../asm-$(HEADER_ARCH) arch |
172 | endif | 172 | endif |
173 | 173 | ||
174 | $(objtree)/$(ARCH_DIR)/include: | 174 | $(objtree)/$(ARCH_DIR)/include: |
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c index 7e6cdde62ead..b1a77b11f089 100644 --- a/arch/um/drivers/ubd_kern.c +++ b/arch/um/drivers/ubd_kern.c | |||
@@ -1128,6 +1128,7 @@ static void do_ubd_request(struct request_queue *q) | |||
1128 | "errno = %d\n", -n); | 1128 | "errno = %d\n", -n); |
1129 | else if(list_empty(&dev->restart)) | 1129 | else if(list_empty(&dev->restart)) |
1130 | list_add(&dev->restart, &restart); | 1130 | list_add(&dev->restart, &restart); |
1131 | kfree(io_req); | ||
1131 | return; | 1132 | return; |
1132 | } | 1133 | } |
1133 | 1134 | ||
diff --git a/arch/um/os-Linux/time.c b/arch/um/os-Linux/time.c index e34e1effe0f5..ef02d941c2ad 100644 --- a/arch/um/os-Linux/time.c +++ b/arch/um/os-Linux/time.c | |||
@@ -59,7 +59,7 @@ long long disable_timer(void) | |||
59 | { | 59 | { |
60 | struct itimerval time = ((struct itimerval) { { 0, 0 }, { 0, 0 } }); | 60 | struct itimerval time = ((struct itimerval) { { 0, 0 }, { 0, 0 } }); |
61 | 61 | ||
62 | if(setitimer(ITIMER_VIRTUAL, &time, &time) < 0) | 62 | if (setitimer(ITIMER_VIRTUAL, &time, &time) < 0) |
63 | printk(UM_KERN_ERR "disable_timer - setitimer failed, " | 63 | printk(UM_KERN_ERR "disable_timer - setitimer failed, " |
64 | "errno = %d\n", errno); | 64 | "errno = %d\n", errno); |
65 | 65 | ||
@@ -74,13 +74,61 @@ long long os_nsecs(void) | |||
74 | return timeval_to_ns(&tv); | 74 | return timeval_to_ns(&tv); |
75 | } | 75 | } |
76 | 76 | ||
77 | #ifdef UML_CONFIG_NO_HZ | ||
78 | static int after_sleep_interval(struct timespec *ts) | ||
79 | { | ||
80 | } | ||
81 | #else | ||
82 | static inline long long timespec_to_us(const struct timespec *ts) | ||
83 | { | ||
84 | return ((long long) ts->tv_sec * UM_USEC_PER_SEC) + | ||
85 | ts->tv_nsec / UM_NSEC_PER_USEC; | ||
86 | } | ||
87 | |||
88 | static int after_sleep_interval(struct timespec *ts) | ||
89 | { | ||
90 | int usec = UM_USEC_PER_SEC / UM_HZ; | ||
91 | long long start_usecs = timespec_to_us(ts); | ||
92 | struct timeval tv; | ||
93 | struct itimerval interval; | ||
94 | |||
95 | /* | ||
96 | * It seems that rounding can increase the value returned from | ||
97 | * setitimer to larger than the one passed in. Over time, | ||
98 | * this will cause the remaining time to be greater than the | ||
99 | * tick interval. If this happens, then just reduce the first | ||
100 | * tick to the interval value. | ||
101 | */ | ||
102 | if (start_usecs > usec) | ||
103 | start_usecs = usec; | ||
104 | tv = ((struct timeval) { .tv_sec = start_usecs / UM_USEC_PER_SEC, | ||
105 | .tv_usec = start_usecs % UM_USEC_PER_SEC }); | ||
106 | interval = ((struct itimerval) { { 0, usec }, tv }); | ||
107 | |||
108 | if (setitimer(ITIMER_VIRTUAL, &interval, NULL) == -1) | ||
109 | return -errno; | ||
110 | |||
111 | return 0; | ||
112 | } | ||
113 | #endif | ||
114 | |||
77 | extern void alarm_handler(int sig, struct sigcontext *sc); | 115 | extern void alarm_handler(int sig, struct sigcontext *sc); |
78 | 116 | ||
79 | void idle_sleep(unsigned long long nsecs) | 117 | void idle_sleep(unsigned long long nsecs) |
80 | { | 118 | { |
81 | struct timespec ts = { .tv_sec = nsecs / UM_NSEC_PER_SEC, | 119 | struct timespec ts; |
82 | .tv_nsec = nsecs % UM_NSEC_PER_SEC }; | 120 | |
121 | /* | ||
122 | * nsecs can come in as zero, in which case, this starts a | ||
123 | * busy loop. To prevent this, reset nsecs to the tick | ||
124 | * interval if it is zero. | ||
125 | */ | ||
126 | if (nsecs == 0) | ||
127 | nsecs = UM_NSEC_PER_SEC / UM_HZ; | ||
128 | ts = ((struct timespec) { .tv_sec = nsecs / UM_NSEC_PER_SEC, | ||
129 | .tv_nsec = nsecs % UM_NSEC_PER_SEC }); | ||
83 | 130 | ||
84 | if (nanosleep(&ts, &ts) == 0) | 131 | if (nanosleep(&ts, &ts) == 0) |
85 | alarm_handler(SIGVTALRM, NULL); | 132 | alarm_handler(SIGVTALRM, NULL); |
133 | after_sleep_interval(&ts); | ||
86 | } | 134 | } |
diff --git a/arch/x86/Makefile b/arch/x86/Makefile index 116b03a45636..7aa1dc6d67c8 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile | |||
@@ -11,10 +11,9 @@ endif | |||
11 | $(srctree)/arch/x86/Makefile%: ; | 11 | $(srctree)/arch/x86/Makefile%: ; |
12 | 12 | ||
13 | ifeq ($(CONFIG_X86_32),y) | 13 | ifeq ($(CONFIG_X86_32),y) |
14 | UTS_MACHINE := i386 | ||
14 | include $(srctree)/arch/x86/Makefile_32 | 15 | include $(srctree)/arch/x86/Makefile_32 |
15 | else | 16 | else |
17 | UTS_MACHINE := x86_64 | ||
16 | include $(srctree)/arch/x86/Makefile_64 | 18 | include $(srctree)/arch/x86/Makefile_64 |
17 | endif | 19 | endif |
18 | |||
19 | |||
20 | |||
diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S index 6ef5a060fa11..4cc5b0411db5 100644 --- a/arch/x86/boot/header.S +++ b/arch/x86/boot/header.S | |||
@@ -236,39 +236,30 @@ start_of_setup: | |||
236 | movw %ax, %es | 236 | movw %ax, %es |
237 | cld | 237 | cld |
238 | 238 | ||
239 | # Apparently some ancient versions of LILO invoked the kernel | 239 | # Apparently some ancient versions of LILO invoked the kernel with %ss != %ds, |
240 | # with %ss != %ds, which happened to work by accident for the | 240 | # which happened to work by accident for the old code. Recalculate the stack |
241 | # old code. If the CAN_USE_HEAP flag is set in loadflags, or | 241 | # pointer if %ss is invalid. Otherwise leave it alone, LOADLIN sets up the |
242 | # %ss != %ds, then adjust the stack pointer. | 242 | # stack behind its own code, so we can't blindly put it directly past the heap. |
243 | 243 | ||
244 | # Smallest possible stack we can tolerate | ||
245 | movw $(_end+STACK_SIZE), %cx | ||
246 | |||
247 | movw heap_end_ptr, %dx | ||
248 | addw $512, %dx | ||
249 | jnc 1f | ||
250 | xorw %dx, %dx # Wraparound - whole segment available | ||
251 | 1: testb $CAN_USE_HEAP, loadflags | ||
252 | jnz 2f | ||
253 | |||
254 | # No CAN_USE_HEAP | ||
255 | movw %ss, %dx | 244 | movw %ss, %dx |
256 | cmpw %ax, %dx # %ds == %ss? | 245 | cmpw %ax, %dx # %ds == %ss? |
257 | movw %sp, %dx | 246 | movw %sp, %dx |
258 | # If so, assume %sp is reasonably set, otherwise use | 247 | je 2f # -> assume %sp is reasonably set |
259 | # the smallest possible stack. | 248 | |
260 | jne 4f # -> Smallest possible stack... | 249 | # Invalid %ss, make up a new stack |
250 | movw $_end, %dx | ||
251 | testb $CAN_USE_HEAP, loadflags | ||
252 | jz 1f | ||
253 | movw heap_end_ptr, %dx | ||
254 | 1: addw $STACK_SIZE, %dx | ||
255 | jnc 2f | ||
256 | xorw %dx, %dx # Prevent wraparound | ||
261 | 257 | ||
262 | # Make sure the stack is at least minimum size. Take a value | 258 | 2: # Now %dx should point to the end of our stack space |
263 | # of zero to mean "full segment." | ||
264 | 2: | ||
265 | andw $~3, %dx # dword align (might as well...) | 259 | andw $~3, %dx # dword align (might as well...) |
266 | jnz 3f | 260 | jnz 3f |
267 | movw $0xfffc, %dx # Make sure we're not zero | 261 | movw $0xfffc, %dx # Make sure we're not zero |
268 | 3: cmpw %cx, %dx | 262 | 3: movw %ax, %ss |
269 | jnb 5f | ||
270 | 4: movw %cx, %dx # Minimum value we can possibly use | ||
271 | 5: movw %ax, %ss | ||
272 | movzwl %dx, %esp # Clear upper half of %esp | 263 | movzwl %dx, %esp # Clear upper half of %esp |
273 | sti # Now we should have a working stack | 264 | sti # Now we should have a working stack |
274 | 265 | ||
diff --git a/arch/x86/kernel/acpi/processor.c b/arch/x86/kernel/acpi/processor.c index f63e5ff0aca1..a25db514c719 100644 --- a/arch/x86/kernel/acpi/processor.c +++ b/arch/x86/kernel/acpi/processor.c | |||
@@ -49,6 +49,9 @@ static void init_intel_pdc(struct acpi_processor *pr, struct cpuinfo_x86 *c) | |||
49 | if (cpu_has(c, X86_FEATURE_EST)) | 49 | if (cpu_has(c, X86_FEATURE_EST)) |
50 | buf[2] |= ACPI_PDC_EST_CAPABILITY_SWSMP; | 50 | buf[2] |= ACPI_PDC_EST_CAPABILITY_SWSMP; |
51 | 51 | ||
52 | if (cpu_has(c, X86_FEATURE_ACPI)) | ||
53 | buf[2] |= ACPI_PDC_T_FFH; | ||
54 | |||
52 | obj->type = ACPI_TYPE_BUFFER; | 55 | obj->type = ACPI_TYPE_BUFFER; |
53 | obj->buffer.length = 12; | 56 | obj->buffer.length = 12; |
54 | obj->buffer.pointer = (u8 *) buf; | 57 | obj->buffer.pointer = (u8 *) buf; |
diff --git a/arch/x86/kernel/acpi/sleep_64.c b/arch/x86/kernel/acpi/sleep_64.c index 79475d237071..da42de261ba8 100644 --- a/arch/x86/kernel/acpi/sleep_64.c +++ b/arch/x86/kernel/acpi/sleep_64.c | |||
@@ -115,6 +115,3 @@ static int __init acpi_sleep_setup(char *str) | |||
115 | 115 | ||
116 | __setup("acpi_sleep=", acpi_sleep_setup); | 116 | __setup("acpi_sleep=", acpi_sleep_setup); |
117 | 117 | ||
118 | void acpi_pci_link_exit(void) | ||
119 | { | ||
120 | } | ||
diff --git a/arch/x86/kernel/apic_32.c b/arch/x86/kernel/apic_32.c index 08b07c176962..96986b46bc85 100644 --- a/arch/x86/kernel/apic_32.c +++ b/arch/x86/kernel/apic_32.c | |||
@@ -789,7 +789,7 @@ void __init sync_Arb_IDs(void) | |||
789 | * Unsupported on P4 - see Intel Dev. Manual Vol. 3, Ch. 8.6.1 And not | 789 | * Unsupported on P4 - see Intel Dev. Manual Vol. 3, Ch. 8.6.1 And not |
790 | * needed on AMD. | 790 | * needed on AMD. |
791 | */ | 791 | */ |
792 | if (modern_apic()) | 792 | if (modern_apic() || boot_cpu_data.x86_vendor == X86_VENDOR_AMD) |
793 | return; | 793 | return; |
794 | /* | 794 | /* |
795 | * Wait for idle. | 795 | * Wait for idle. |
diff --git a/arch/x86/kernel/i386_ksyms_32.c b/arch/x86/kernel/i386_ksyms_32.c index edd39ccf139e..02112fcc0de7 100644 --- a/arch/x86/kernel/i386_ksyms_32.c +++ b/arch/x86/kernel/i386_ksyms_32.c | |||
@@ -2,6 +2,7 @@ | |||
2 | #include <asm/semaphore.h> | 2 | #include <asm/semaphore.h> |
3 | #include <asm/checksum.h> | 3 | #include <asm/checksum.h> |
4 | #include <asm/desc.h> | 4 | #include <asm/desc.h> |
5 | #include <asm/pgtable.h> | ||
5 | 6 | ||
6 | EXPORT_SYMBOL(__down_failed); | 7 | EXPORT_SYMBOL(__down_failed); |
7 | EXPORT_SYMBOL(__down_failed_interruptible); | 8 | EXPORT_SYMBOL(__down_failed_interruptible); |
@@ -29,3 +30,4 @@ EXPORT_SYMBOL(__read_lock_failed); | |||
29 | #endif | 30 | #endif |
30 | 31 | ||
31 | EXPORT_SYMBOL(csum_partial); | 32 | EXPORT_SYMBOL(csum_partial); |
33 | EXPORT_SYMBOL(empty_zero_page); | ||
diff --git a/arch/x86/kernel/io_apic_32.c b/arch/x86/kernel/io_apic_32.c index f35c6eb33da9..6cf27319a91c 100644 --- a/arch/x86/kernel/io_apic_32.c +++ b/arch/x86/kernel/io_apic_32.c | |||
@@ -962,7 +962,7 @@ static int EISA_ELCR(unsigned int irq) | |||
962 | #define default_MCA_trigger(idx) (1) | 962 | #define default_MCA_trigger(idx) (1) |
963 | #define default_MCA_polarity(idx) (0) | 963 | #define default_MCA_polarity(idx) (0) |
964 | 964 | ||
965 | static int __init MPBIOS_polarity(int idx) | 965 | static int MPBIOS_polarity(int idx) |
966 | { | 966 | { |
967 | int bus = mp_irqs[idx].mpc_srcbus; | 967 | int bus = mp_irqs[idx].mpc_srcbus; |
968 | int polarity; | 968 | int polarity; |
@@ -2166,6 +2166,10 @@ static inline void __init check_timer(void) | |||
2166 | { | 2166 | { |
2167 | int apic1, pin1, apic2, pin2; | 2167 | int apic1, pin1, apic2, pin2; |
2168 | int vector; | 2168 | int vector; |
2169 | unsigned int ver; | ||
2170 | |||
2171 | ver = apic_read(APIC_LVR); | ||
2172 | ver = GET_APIC_VERSION(ver); | ||
2169 | 2173 | ||
2170 | /* | 2174 | /* |
2171 | * get/set the timer IRQ vector: | 2175 | * get/set the timer IRQ vector: |
@@ -2179,11 +2183,15 @@ static inline void __init check_timer(void) | |||
2179 | * mode for the 8259A whenever interrupts are routed | 2183 | * mode for the 8259A whenever interrupts are routed |
2180 | * through I/O APICs. Also IRQ0 has to be enabled in | 2184 | * through I/O APICs. Also IRQ0 has to be enabled in |
2181 | * the 8259A which implies the virtual wire has to be | 2185 | * the 8259A which implies the virtual wire has to be |
2182 | * disabled in the local APIC. | 2186 | * disabled in the local APIC. Finally timer interrupts |
2187 | * need to be acknowledged manually in the 8259A for | ||
2188 | * timer_interrupt() and for the i82489DX when using | ||
2189 | * the NMI watchdog. | ||
2183 | */ | 2190 | */ |
2184 | apic_write_around(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT); | 2191 | apic_write_around(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT); |
2185 | init_8259A(1); | 2192 | init_8259A(1); |
2186 | timer_ack = 1; | 2193 | timer_ack = !cpu_has_tsc; |
2194 | timer_ack |= (nmi_watchdog == NMI_IO_APIC && !APIC_INTEGRATED(ver)); | ||
2187 | if (timer_over_8254 > 0) | 2195 | if (timer_over_8254 > 0) |
2188 | enable_8259A_irq(0); | 2196 | enable_8259A_irq(0); |
2189 | 2197 | ||
@@ -2830,6 +2838,25 @@ int io_apic_set_pci_routing (int ioapic, int pin, int irq, int edge_level, int a | |||
2830 | return 0; | 2838 | return 0; |
2831 | } | 2839 | } |
2832 | 2840 | ||
2841 | int acpi_get_override_irq(int bus_irq, int *trigger, int *polarity) | ||
2842 | { | ||
2843 | int i; | ||
2844 | |||
2845 | if (skip_ioapic_setup) | ||
2846 | return -1; | ||
2847 | |||
2848 | for (i = 0; i < mp_irq_entries; i++) | ||
2849 | if (mp_irqs[i].mpc_irqtype == mp_INT && | ||
2850 | mp_irqs[i].mpc_srcbusirq == bus_irq) | ||
2851 | break; | ||
2852 | if (i >= mp_irq_entries) | ||
2853 | return -1; | ||
2854 | |||
2855 | *trigger = irq_trigger(i); | ||
2856 | *polarity = irq_polarity(i); | ||
2857 | return 0; | ||
2858 | } | ||
2859 | |||
2833 | #endif /* CONFIG_ACPI */ | 2860 | #endif /* CONFIG_ACPI */ |
2834 | 2861 | ||
2835 | static int __init parse_disable_timer_pin_1(char *arg) | 2862 | static int __init parse_disable_timer_pin_1(char *arg) |
diff --git a/arch/x86/kernel/io_apic_64.c b/arch/x86/kernel/io_apic_64.c index 953328b55a30..435a8c9b55f8 100644 --- a/arch/x86/kernel/io_apic_64.c +++ b/arch/x86/kernel/io_apic_64.c | |||
@@ -546,7 +546,7 @@ int IO_APIC_get_PCI_irq_vector(int bus, int slot, int pin) | |||
546 | #define default_PCI_trigger(idx) (1) | 546 | #define default_PCI_trigger(idx) (1) |
547 | #define default_PCI_polarity(idx) (1) | 547 | #define default_PCI_polarity(idx) (1) |
548 | 548 | ||
549 | static int __init MPBIOS_polarity(int idx) | 549 | static int MPBIOS_polarity(int idx) |
550 | { | 550 | { |
551 | int bus = mp_irqs[idx].mpc_srcbus; | 551 | int bus = mp_irqs[idx].mpc_srcbus; |
552 | int polarity; | 552 | int polarity; |
@@ -2222,8 +2222,27 @@ int io_apic_set_pci_routing (int ioapic, int pin, int irq, int triggering, int p | |||
2222 | return 0; | 2222 | return 0; |
2223 | } | 2223 | } |
2224 | 2224 | ||
2225 | #endif /* CONFIG_ACPI */ | ||
2226 | 2225 | ||
2226 | int acpi_get_override_irq(int bus_irq, int *trigger, int *polarity) | ||
2227 | { | ||
2228 | int i; | ||
2229 | |||
2230 | if (skip_ioapic_setup) | ||
2231 | return -1; | ||
2232 | |||
2233 | for (i = 0; i < mp_irq_entries; i++) | ||
2234 | if (mp_irqs[i].mpc_irqtype == mp_INT && | ||
2235 | mp_irqs[i].mpc_srcbusirq == bus_irq) | ||
2236 | break; | ||
2237 | if (i >= mp_irq_entries) | ||
2238 | return -1; | ||
2239 | |||
2240 | *trigger = irq_trigger(i); | ||
2241 | *polarity = irq_polarity(i); | ||
2242 | return 0; | ||
2243 | } | ||
2244 | |||
2245 | #endif /* CONFIG_ACPI */ | ||
2227 | 2246 | ||
2228 | /* | 2247 | /* |
2229 | * This function currently is only a helper for the i386 smp boot process where | 2248 | * This function currently is only a helper for the i386 smp boot process where |
@@ -2260,3 +2279,4 @@ void __init setup_ioapic_dest(void) | |||
2260 | } | 2279 | } |
2261 | } | 2280 | } |
2262 | #endif | 2281 | #endif |
2282 | |||
diff --git a/arch/x86/kernel/kprobes_64.c b/arch/x86/kernel/kprobes_64.c index 3db3611933d8..0c467644589c 100644 --- a/arch/x86/kernel/kprobes_64.c +++ b/arch/x86/kernel/kprobes_64.c | |||
@@ -58,7 +58,7 @@ const int kretprobe_blacklist_size = ARRAY_SIZE(kretprobe_blacklist); | |||
58 | /* | 58 | /* |
59 | * returns non-zero if opcode modifies the interrupt flag. | 59 | * returns non-zero if opcode modifies the interrupt flag. |
60 | */ | 60 | */ |
61 | static __always_inline int is_IF_modifier(kprobe_opcode_t *insn) | 61 | static int __kprobes is_IF_modifier(kprobe_opcode_t *insn) |
62 | { | 62 | { |
63 | switch (*insn) { | 63 | switch (*insn) { |
64 | case 0xfa: /* cli */ | 64 | case 0xfa: /* cli */ |
diff --git a/arch/x86/kernel/nmi_32.c b/arch/x86/kernel/nmi_32.c index 600fd404e440..f5cc47c60b13 100644 --- a/arch/x86/kernel/nmi_32.c +++ b/arch/x86/kernel/nmi_32.c | |||
@@ -25,6 +25,7 @@ | |||
25 | 25 | ||
26 | #include <asm/smp.h> | 26 | #include <asm/smp.h> |
27 | #include <asm/nmi.h> | 27 | #include <asm/nmi.h> |
28 | #include <asm/timer.h> | ||
28 | 29 | ||
29 | #include "mach_traps.h" | 30 | #include "mach_traps.h" |
30 | 31 | ||
@@ -83,7 +84,7 @@ static int __init check_nmi_watchdog(void) | |||
83 | 84 | ||
84 | prev_nmi_count = kmalloc(NR_CPUS * sizeof(int), GFP_KERNEL); | 85 | prev_nmi_count = kmalloc(NR_CPUS * sizeof(int), GFP_KERNEL); |
85 | if (!prev_nmi_count) | 86 | if (!prev_nmi_count) |
86 | return -1; | 87 | goto error; |
87 | 88 | ||
88 | printk(KERN_INFO "Testing NMI watchdog ... "); | 89 | printk(KERN_INFO "Testing NMI watchdog ... "); |
89 | 90 | ||
@@ -117,7 +118,7 @@ static int __init check_nmi_watchdog(void) | |||
117 | if (!atomic_read(&nmi_active)) { | 118 | if (!atomic_read(&nmi_active)) { |
118 | kfree(prev_nmi_count); | 119 | kfree(prev_nmi_count); |
119 | atomic_set(&nmi_active, -1); | 120 | atomic_set(&nmi_active, -1); |
120 | return -1; | 121 | goto error; |
121 | } | 122 | } |
122 | printk("OK.\n"); | 123 | printk("OK.\n"); |
123 | 124 | ||
@@ -128,6 +129,10 @@ static int __init check_nmi_watchdog(void) | |||
128 | 129 | ||
129 | kfree(prev_nmi_count); | 130 | kfree(prev_nmi_count); |
130 | return 0; | 131 | return 0; |
132 | error: | ||
133 | timer_ack = !cpu_has_tsc; | ||
134 | |||
135 | return -1; | ||
131 | } | 136 | } |
132 | /* This needs to happen later in boot so counters are working */ | 137 | /* This needs to happen later in boot so counters are working */ |
133 | late_initcall(check_nmi_watchdog); | 138 | late_initcall(check_nmi_watchdog); |
diff --git a/arch/x86/kernel/paravirt_32.c b/arch/x86/kernel/paravirt_32.c index 6a80d67c2121..f5000799f8ef 100644 --- a/arch/x86/kernel/paravirt_32.c +++ b/arch/x86/kernel/paravirt_32.c | |||
@@ -465,8 +465,8 @@ struct pv_mmu_ops pv_mmu_ops = { | |||
465 | }; | 465 | }; |
466 | 466 | ||
467 | EXPORT_SYMBOL_GPL(pv_time_ops); | 467 | EXPORT_SYMBOL_GPL(pv_time_ops); |
468 | EXPORT_SYMBOL_GPL(pv_cpu_ops); | 468 | EXPORT_SYMBOL (pv_cpu_ops); |
469 | EXPORT_SYMBOL_GPL(pv_mmu_ops); | 469 | EXPORT_SYMBOL (pv_mmu_ops); |
470 | EXPORT_SYMBOL_GPL(pv_apic_ops); | 470 | EXPORT_SYMBOL_GPL(pv_apic_ops); |
471 | EXPORT_SYMBOL_GPL(pv_info); | 471 | EXPORT_SYMBOL_GPL(pv_info); |
472 | EXPORT_SYMBOL (pv_irq_ops); | 472 | EXPORT_SYMBOL (pv_irq_ops); |
diff --git a/arch/x86/kernel/pci-dma_64.c b/arch/x86/kernel/pci-dma_64.c index aa805b11b24f..5552d23d23c2 100644 --- a/arch/x86/kernel/pci-dma_64.c +++ b/arch/x86/kernel/pci-dma_64.c | |||
@@ -12,7 +12,7 @@ | |||
12 | #include <asm/gart.h> | 12 | #include <asm/gart.h> |
13 | #include <asm/calgary.h> | 13 | #include <asm/calgary.h> |
14 | 14 | ||
15 | int iommu_merge __read_mostly = 1; | 15 | int iommu_merge __read_mostly = 0; |
16 | EXPORT_SYMBOL(iommu_merge); | 16 | EXPORT_SYMBOL(iommu_merge); |
17 | 17 | ||
18 | dma_addr_t bad_dma_address __read_mostly; | 18 | dma_addr_t bad_dma_address __read_mostly; |
diff --git a/arch/x86/kernel/traps_32.c b/arch/x86/kernel/traps_32.c index 298d13ed3ab3..ef6010262597 100644 --- a/arch/x86/kernel/traps_32.c +++ b/arch/x86/kernel/traps_32.c | |||
@@ -283,6 +283,11 @@ void dump_stack(void) | |||
283 | { | 283 | { |
284 | unsigned long stack; | 284 | unsigned long stack; |
285 | 285 | ||
286 | printk("Pid: %d, comm: %.20s %s %s %.*s\n", | ||
287 | current->pid, current->comm, print_tainted(), | ||
288 | init_utsname()->release, | ||
289 | (int)strcspn(init_utsname()->version, " "), | ||
290 | init_utsname()->version); | ||
286 | show_trace(current, NULL, &stack); | 291 | show_trace(current, NULL, &stack); |
287 | } | 292 | } |
288 | 293 | ||
@@ -828,6 +833,8 @@ fastcall void __kprobes do_debug(struct pt_regs * regs, long error_code) | |||
828 | unsigned int condition; | 833 | unsigned int condition; |
829 | struct task_struct *tsk = current; | 834 | struct task_struct *tsk = current; |
830 | 835 | ||
836 | trace_hardirqs_fixup(); | ||
837 | |||
831 | get_debugreg(condition, 6); | 838 | get_debugreg(condition, 6); |
832 | 839 | ||
833 | if (notify_die(DIE_DEBUG, "debug", regs, condition, error_code, | 840 | if (notify_die(DIE_DEBUG, "debug", regs, condition, error_code, |
diff --git a/arch/x86/kernel/traps_64.c b/arch/x86/kernel/traps_64.c index 4a6bd4965f56..d11525ad81b4 100644 --- a/arch/x86/kernel/traps_64.c +++ b/arch/x86/kernel/traps_64.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/uaccess.h> | 31 | #include <linux/uaccess.h> |
32 | #include <linux/bug.h> | 32 | #include <linux/bug.h> |
33 | #include <linux/kdebug.h> | 33 | #include <linux/kdebug.h> |
34 | #include <linux/utsname.h> | ||
34 | 35 | ||
35 | #if defined(CONFIG_EDAC) | 36 | #if defined(CONFIG_EDAC) |
36 | #include <linux/edac.h> | 37 | #include <linux/edac.h> |
@@ -400,6 +401,12 @@ void show_stack(struct task_struct *tsk, unsigned long * rsp) | |||
400 | void dump_stack(void) | 401 | void dump_stack(void) |
401 | { | 402 | { |
402 | unsigned long dummy; | 403 | unsigned long dummy; |
404 | |||
405 | printk("Pid: %d, comm: %.20s %s %s %.*s\n", | ||
406 | current->pid, current->comm, print_tainted(), | ||
407 | init_utsname()->release, | ||
408 | (int)strcspn(init_utsname()->version, " "), | ||
409 | init_utsname()->version); | ||
403 | show_trace(NULL, NULL, &dummy); | 410 | show_trace(NULL, NULL, &dummy); |
404 | } | 411 | } |
405 | 412 | ||
@@ -846,6 +853,8 @@ asmlinkage void __kprobes do_debug(struct pt_regs * regs, | |||
846 | struct task_struct *tsk = current; | 853 | struct task_struct *tsk = current; |
847 | siginfo_t info; | 854 | siginfo_t info; |
848 | 855 | ||
856 | trace_hardirqs_fixup(); | ||
857 | |||
849 | get_debugreg(condition, 6); | 858 | get_debugreg(condition, 6); |
850 | 859 | ||
851 | if (notify_die(DIE_DEBUG, "debug", regs, condition, error_code, | 860 | if (notify_die(DIE_DEBUG, "debug", regs, condition, error_code, |
diff --git a/arch/x86/lguest/Kconfig b/arch/x86/lguest/Kconfig index c4dffbeea5e1..19626ace0f50 100644 --- a/arch/x86/lguest/Kconfig +++ b/arch/x86/lguest/Kconfig | |||
@@ -2,6 +2,7 @@ config LGUEST_GUEST | |||
2 | bool "Lguest guest support" | 2 | bool "Lguest guest support" |
3 | select PARAVIRT | 3 | select PARAVIRT |
4 | depends on !X86_PAE | 4 | depends on !X86_PAE |
5 | depends on !(X86_VISWS || X86_VOYAGER) | ||
5 | select VIRTIO | 6 | select VIRTIO |
6 | select VIRTIO_RING | 7 | select VIRTIO_RING |
7 | select VIRTIO_CONSOLE | 8 | select VIRTIO_CONSOLE |
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index a7308b2cd058..0f9c8c890658 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c | |||
@@ -345,7 +345,7 @@ static void __init find_early_table_space(unsigned long end) | |||
345 | /* Setup the direct mapping of the physical memory at PAGE_OFFSET. | 345 | /* Setup the direct mapping of the physical memory at PAGE_OFFSET. |
346 | This runs before bootmem is initialized and gets pages directly from the | 346 | This runs before bootmem is initialized and gets pages directly from the |
347 | physical memory. To access them they are temporarily mapped. */ | 347 | physical memory. To access them they are temporarily mapped. */ |
348 | void __meminit init_memory_mapping(unsigned long start, unsigned long end) | 348 | void __init_refok init_memory_mapping(unsigned long start, unsigned long end) |
349 | { | 349 | { |
350 | unsigned long next; | 350 | unsigned long next; |
351 | 351 | ||
diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c index 7e35078673a4..0234f2831bf3 100644 --- a/arch/x86/pci/acpi.c +++ b/arch/x86/pci/acpi.c | |||
@@ -13,7 +13,7 @@ static int __devinit can_skip_ioresource_align(const struct dmi_system_id *d) | |||
13 | return 0; | 13 | return 0; |
14 | } | 14 | } |
15 | 15 | ||
16 | static struct dmi_system_id acpi_pciprobe_dmi_table[] = { | 16 | static struct dmi_system_id acpi_pciprobe_dmi_table[] __devinitdata = { |
17 | /* | 17 | /* |
18 | * Systems where PCI IO resource ISA alignment can be skipped | 18 | * Systems where PCI IO resource ISA alignment can be skipped |
19 | * when the ISA enable bit in the bridge control is not set | 19 | * when the ISA enable bit in the bridge control is not set |
diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c index f4386990b150..862746390666 100644 --- a/arch/x86/pci/common.c +++ b/arch/x86/pci/common.c | |||
@@ -315,6 +315,22 @@ static struct dmi_system_id __devinitdata pciprobe_dmi_table[] = { | |||
315 | }, | 315 | }, |
316 | }, | 316 | }, |
317 | #endif | 317 | #endif |
318 | { | ||
319 | .callback = set_bf_sort, | ||
320 | .ident = "HP ProLiant DL385 G2", | ||
321 | .matches = { | ||
322 | DMI_MATCH(DMI_SYS_VENDOR, "HP"), | ||
323 | DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL385 G2"), | ||
324 | }, | ||
325 | }, | ||
326 | { | ||
327 | .callback = set_bf_sort, | ||
328 | .ident = "HP ProLiant DL585 G2", | ||
329 | .matches = { | ||
330 | DMI_MATCH(DMI_SYS_VENDOR, "HP"), | ||
331 | DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL585 G2"), | ||
332 | }, | ||
333 | }, | ||
318 | {} | 334 | {} |
319 | }; | 335 | }; |
320 | 336 | ||
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c index b2e32f9d0071..0ac6c5dc49ba 100644 --- a/arch/x86/xen/mmu.c +++ b/arch/x86/xen/mmu.c | |||
@@ -244,6 +244,8 @@ pte_t xen_make_pte(unsigned long long pte) | |||
244 | if (pte & 1) | 244 | if (pte & 1) |
245 | pte = phys_to_machine(XPADDR(pte)).maddr; | 245 | pte = phys_to_machine(XPADDR(pte)).maddr; |
246 | 246 | ||
247 | pte &= ~_PAGE_PCD; | ||
248 | |||
247 | return (pte_t){ pte, pte >> 32 }; | 249 | return (pte_t){ pte, pte >> 32 }; |
248 | } | 250 | } |
249 | 251 | ||
@@ -291,6 +293,8 @@ pte_t xen_make_pte(unsigned long pte) | |||
291 | if (pte & _PAGE_PRESENT) | 293 | if (pte & _PAGE_PRESENT) |
292 | pte = phys_to_machine(XPADDR(pte)).maddr; | 294 | pte = phys_to_machine(XPADDR(pte)).maddr; |
293 | 295 | ||
296 | pte &= ~_PAGE_PCD; | ||
297 | |||
294 | return (pte_t){ pte }; | 298 | return (pte_t){ pte }; |
295 | } | 299 | } |
296 | 300 | ||