diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-28 22:33:04 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-28 22:33:04 -0400 |
commit | 7b5573769f26a23518b33a64ec129d2833564877 (patch) | |
tree | 697674b1d2bf12541fc745baa8ef8d9e6faf8888 | |
parent | 8e8ef2971b0fd6dcf1a66014fb74b41938eecb4e (diff) | |
parent | 27b92bdbd589cf3f59244bf5e848e7be254a2e4c (diff) |
Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/cooloney/blackfin-2.6
* 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/cooloney/blackfin-2.6:
Input Serio: Blackfin doesnt support I8042 - make sure it doesnt get selected
Blackfin arch: add BF54x I2C/TWI TWI0 driver support
Blackfin On-Chip RTC driver update for supporting BF54x
Blackfin Ethernet MAC driver: fix bug Report returned -ENOMEM upwards (in case L1/uncached memory alloc fails)
Blackfin arch: add error message when IRQ no available
Blackfin arch: Initialize the exception vectors early in the boot process
Blackfin arch: fix a compiling warning about dma-mapping
Blackfin arch: switch to using proper defines this time THREAD_SIZE and PAGE_SIZE instead of just PAGE_SIZE everywhere
Blackfin arch: fix bug which unaligns the init thread's stack and causes the current macro to fail.
Blackfin arch: Load P0 before storing through it
Blackfin arch: fix KGDB bug, dont forget last parameter.
Blackfin arch: add selections for BF544 and BF542
Blackfin arch: use bfin_read_SWRST() now that BF561 provides it
Blackfin arch: setup aliases for some core Core A MMRs
-rw-r--r-- | arch/blackfin/Makefile | 4 | ||||
-rw-r--r-- | arch/blackfin/kernel/dma-mapping.c | 3 | ||||
-rw-r--r-- | arch/blackfin/kernel/setup.c | 5 | ||||
-rw-r--r-- | arch/blackfin/kernel/traps.c | 2 | ||||
-rw-r--r-- | arch/blackfin/kernel/vmlinux.lds.S | 16 | ||||
-rw-r--r-- | arch/blackfin/mach-bf561/head.S | 10 | ||||
-rw-r--r-- | arch/blackfin/mach-common/cacheinit.S | 3 | ||||
-rw-r--r-- | arch/blackfin/mach-common/ints-priority-dc.c | 39 | ||||
-rw-r--r-- | arch/blackfin/mach-common/ints-priority-sc.c | 48 | ||||
-rw-r--r-- | drivers/i2c/busses/Kconfig | 4 | ||||
-rw-r--r-- | drivers/input/serio/Kconfig | 2 | ||||
-rw-r--r-- | drivers/net/bfin_mac.c | 6 | ||||
-rw-r--r-- | drivers/rtc/rtc-bfin.c | 2 | ||||
-rw-r--r-- | include/asm-blackfin/bfin-global.h | 1 | ||||
-rw-r--r-- | include/asm-blackfin/mach-bf548/cdefBF54x_base.h | 33 | ||||
-rw-r--r-- | include/asm-blackfin/mach-bf548/irq.h | 1 | ||||
-rw-r--r-- | include/asm-blackfin/mach-bf561/cdefBF561.h | 6 | ||||
-rw-r--r-- | include/asm-blackfin/mach-bf561/defBF561.h | 4 | ||||
-rw-r--r-- | include/asm-blackfin/thread_info.h | 12 |
19 files changed, 136 insertions, 65 deletions
diff --git a/arch/blackfin/Makefile b/arch/blackfin/Makefile index 1b75672dfc8f..20841663270f 100644 --- a/arch/blackfin/Makefile +++ b/arch/blackfin/Makefile | |||
@@ -24,6 +24,8 @@ machine-$(CONFIG_BF533) := bf533 | |||
24 | machine-$(CONFIG_BF534) := bf537 | 24 | machine-$(CONFIG_BF534) := bf537 |
25 | machine-$(CONFIG_BF536) := bf537 | 25 | machine-$(CONFIG_BF536) := bf537 |
26 | machine-$(CONFIG_BF537) := bf537 | 26 | machine-$(CONFIG_BF537) := bf537 |
27 | machine-$(CONFIG_BF542) := bf548 | ||
28 | machine-$(CONFIG_BF544) := bf548 | ||
27 | machine-$(CONFIG_BF548) := bf548 | 29 | machine-$(CONFIG_BF548) := bf548 |
28 | machine-$(CONFIG_BF549) := bf548 | 30 | machine-$(CONFIG_BF549) := bf548 |
29 | machine-$(CONFIG_BF561) := bf561 | 31 | machine-$(CONFIG_BF561) := bf561 |
@@ -36,6 +38,8 @@ cpu-$(CONFIG_BF533) := bf533 | |||
36 | cpu-$(CONFIG_BF534) := bf534 | 38 | cpu-$(CONFIG_BF534) := bf534 |
37 | cpu-$(CONFIG_BF536) := bf536 | 39 | cpu-$(CONFIG_BF536) := bf536 |
38 | cpu-$(CONFIG_BF537) := bf537 | 40 | cpu-$(CONFIG_BF537) := bf537 |
41 | cpu-$(CONFIG_BF542) := bf542 | ||
42 | cpu-$(CONFIG_BF544) := bf544 | ||
39 | cpu-$(CONFIG_BF548) := bf548 | 43 | cpu-$(CONFIG_BF548) := bf548 |
40 | cpu-$(CONFIG_BF549) := bf549 | 44 | cpu-$(CONFIG_BF549) := bf549 |
41 | cpu-$(CONFIG_BF561) := bf561 | 45 | cpu-$(CONFIG_BF561) := bf561 |
diff --git a/arch/blackfin/kernel/dma-mapping.c b/arch/blackfin/kernel/dma-mapping.c index ea48d5b13f11..94d7b119b71e 100644 --- a/arch/blackfin/kernel/dma-mapping.c +++ b/arch/blackfin/kernel/dma-mapping.c | |||
@@ -160,7 +160,8 @@ dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, | |||
160 | BUG_ON(direction == DMA_NONE); | 160 | BUG_ON(direction == DMA_NONE); |
161 | 161 | ||
162 | for (i = 0; i < nents; i++, sg++) { | 162 | for (i = 0; i < nents; i++, sg++) { |
163 | sg->dma_address = page_address(sg->page) + sg->offset; | 163 | sg->dma_address = (dma_addr_t)(page_address(sg->page) + |
164 | sg->offset); | ||
164 | 165 | ||
165 | invalidate_dcache_range(sg_dma_address(sg), | 166 | invalidate_dcache_range(sg_dma_address(sg), |
166 | sg_dma_address(sg) + | 167 | sg_dma_address(sg) + |
diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c index f59dcee7bae3..88f221b89b33 100644 --- a/arch/blackfin/kernel/setup.c +++ b/arch/blackfin/kernel/setup.c | |||
@@ -402,11 +402,7 @@ void __init setup_arch(char **cmdline_p) | |||
402 | if (l1_length > L1_DATA_A_LENGTH) | 402 | if (l1_length > L1_DATA_A_LENGTH) |
403 | panic("L1 data memory overflow\n"); | 403 | panic("L1 data memory overflow\n"); |
404 | 404 | ||
405 | #ifdef BF561_FAMILY | ||
406 | _bfin_swrst = bfin_read_SICA_SWRST(); | ||
407 | #else | ||
408 | _bfin_swrst = bfin_read_SWRST(); | 405 | _bfin_swrst = bfin_read_SWRST(); |
409 | #endif | ||
410 | 406 | ||
411 | /* Copy atomic sequences to their fixed location, and sanity check that | 407 | /* Copy atomic sequences to their fixed location, and sanity check that |
412 | these locations are the ones that we advertise to userspace. */ | 408 | these locations are the ones that we advertise to userspace. */ |
@@ -429,6 +425,7 @@ void __init setup_arch(char **cmdline_p) | |||
429 | BUG_ON((char *)&atomic_xor32 - (char *)&fixed_code_start | 425 | BUG_ON((char *)&atomic_xor32 - (char *)&fixed_code_start |
430 | != ATOMIC_XOR32 - FIXED_CODE_START); | 426 | != ATOMIC_XOR32 - FIXED_CODE_START); |
431 | 427 | ||
428 | init_exception_vectors(); | ||
432 | bf53x_cache_init(); | 429 | bf53x_cache_init(); |
433 | } | 430 | } |
434 | 431 | ||
diff --git a/arch/blackfin/kernel/traps.c b/arch/blackfin/kernel/traps.c index 3909f5b35536..8766bd612b47 100644 --- a/arch/blackfin/kernel/traps.c +++ b/arch/blackfin/kernel/traps.c | |||
@@ -140,7 +140,7 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
140 | #ifdef CONFIG_KGDB | 140 | #ifdef CONFIG_KGDB |
141 | # define CHK_DEBUGGER_TRAP() \ | 141 | # define CHK_DEBUGGER_TRAP() \ |
142 | do { \ | 142 | do { \ |
143 | CHK_DEBUGGER(trapnr, sig, info.si_code, fp); \ | 143 | CHK_DEBUGGER(trapnr, sig, info.si_code, fp, ); \ |
144 | } while (0) | 144 | } while (0) |
145 | # define CHK_DEBUGGER_TRAP_MAYBE() \ | 145 | # define CHK_DEBUGGER_TRAP_MAYBE() \ |
146 | do { \ | 146 | do { \ |
diff --git a/arch/blackfin/kernel/vmlinux.lds.S b/arch/blackfin/kernel/vmlinux.lds.S index d06f860f4790..fb53780247bc 100644 --- a/arch/blackfin/kernel/vmlinux.lds.S +++ b/arch/blackfin/kernel/vmlinux.lds.S | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <asm-generic/vmlinux.lds.h> | 32 | #include <asm-generic/vmlinux.lds.h> |
33 | #include <asm/mem_map.h> | 33 | #include <asm/mem_map.h> |
34 | #include <asm/page.h> | 34 | #include <asm/page.h> |
35 | #include <asm/thread_info.h> | ||
35 | 36 | ||
36 | OUTPUT_FORMAT("elf32-bfin") | 37 | OUTPUT_FORMAT("elf32-bfin") |
37 | ENTRY(__start) | 38 | ENTRY(__start) |
@@ -64,8 +65,12 @@ SECTIONS | |||
64 | 65 | ||
65 | .data : | 66 | .data : |
66 | { | 67 | { |
67 | . = ALIGN(PAGE_SIZE); | 68 | /* make sure the init_task is aligned to the |
69 | * kernel thread size so we can locate the kernel | ||
70 | * stack properly and quickly. | ||
71 | */ | ||
68 | __sdata = .; | 72 | __sdata = .; |
73 | . = ALIGN(THREAD_SIZE); | ||
69 | *(.data.init_task) | 74 | *(.data.init_task) |
70 | DATA_DATA | 75 | DATA_DATA |
71 | CONSTRUCTORS | 76 | CONSTRUCTORS |
@@ -73,14 +78,14 @@ SECTIONS | |||
73 | . = ALIGN(32); | 78 | . = ALIGN(32); |
74 | *(.data.cacheline_aligned) | 79 | *(.data.cacheline_aligned) |
75 | 80 | ||
76 | . = ALIGN(PAGE_SIZE); | 81 | . = ALIGN(THREAD_SIZE); |
77 | __edata = .; | 82 | __edata = .; |
78 | } | 83 | } |
79 | 84 | ||
80 | . = ALIGN(PAGE_SIZE); | ||
81 | ___init_begin = .; | 85 | ___init_begin = .; |
82 | .init : | 86 | .init : |
83 | { | 87 | { |
88 | . = ALIGN(PAGE_SIZE); | ||
84 | __sinittext = .; | 89 | __sinittext = .; |
85 | *(.init.text) | 90 | *(.init.text) |
86 | __einittext = .; | 91 | __einittext = .; |
@@ -153,10 +158,9 @@ SECTIONS | |||
153 | __ebss_b_l1 = .; | 158 | __ebss_b_l1 = .; |
154 | } | 159 | } |
155 | 160 | ||
156 | . = LOADADDR(.data_b_l1) + SIZEOF(.data_b_l1); | 161 | ___init_end = LOADADDR(.data_b_l1) + SIZEOF(.data_b_l1); |
157 | ___init_end = ALIGN(PAGE_SIZE); | ||
158 | 162 | ||
159 | .bss ___init_end : | 163 | .bss LOADADDR(.data_b_l1) + SIZEOF(.data_b_l1) : |
160 | { | 164 | { |
161 | . = ALIGN(4); | 165 | . = ALIGN(4); |
162 | ___bss_start = .; | 166 | ___bss_start = .; |
diff --git a/arch/blackfin/mach-bf561/head.S b/arch/blackfin/mach-bf561/head.S index 2f08bcb2dded..38650a628980 100644 --- a/arch/blackfin/mach-bf561/head.S +++ b/arch/blackfin/mach-bf561/head.S | |||
@@ -440,15 +440,15 @@ ENTRY(_bfin_reset) | |||
440 | SSYNC; | 440 | SSYNC; |
441 | 441 | ||
442 | /* make sure SYSCR is set to use BMODE */ | 442 | /* make sure SYSCR is set to use BMODE */ |
443 | P0.h = hi(SICA_SYSCR); | 443 | P0.h = hi(SYSCR); |
444 | P0.l = lo(SICA_SYSCR); | 444 | P0.l = lo(SYSCR); |
445 | R0.l = 0x20; | 445 | R0.l = 0x20; /* on BF561, disable core b */ |
446 | W[P0] = R0.l; | 446 | W[P0] = R0.l; |
447 | SSYNC; | 447 | SSYNC; |
448 | 448 | ||
449 | /* issue a system soft reset */ | 449 | /* issue a system soft reset */ |
450 | P1.h = hi(SICA_SWRST); | 450 | P1.h = hi(SWRST); |
451 | P1.l = lo(SICA_SWRST); | 451 | P1.l = lo(SWRST); |
452 | R1.l = 0x0007; | 452 | R1.l = 0x0007; |
453 | W[P1] = R1; | 453 | W[P1] = R1; |
454 | SSYNC; | 454 | SSYNC; |
diff --git a/arch/blackfin/mach-common/cacheinit.S b/arch/blackfin/mach-common/cacheinit.S index 9d475623b724..5be6b975ae4a 100644 --- a/arch/blackfin/mach-common/cacheinit.S +++ b/arch/blackfin/mach-common/cacheinit.S | |||
@@ -60,6 +60,9 @@ ENDPROC(_bfin_write_IMEM_CONTROL) | |||
60 | 60 | ||
61 | #if defined(CONFIG_BLKFIN_DCACHE) | 61 | #if defined(CONFIG_BLKFIN_DCACHE) |
62 | ENTRY(_bfin_write_DMEM_CONTROL) | 62 | ENTRY(_bfin_write_DMEM_CONTROL) |
63 | P0.l = (DMEM_CONTROL & 0xFFFF); | ||
64 | P0.h = (DMEM_CONTROL >> 16); | ||
65 | |||
63 | CLI R1; | 66 | CLI R1; |
64 | SSYNC; /* SSYNC required before writing to DMEM_CONTROL. */ | 67 | SSYNC; /* SSYNC required before writing to DMEM_CONTROL. */ |
65 | .align 8; | 68 | .align 8; |
diff --git a/arch/blackfin/mach-common/ints-priority-dc.c b/arch/blackfin/mach-common/ints-priority-dc.c index 6b9fd03ce835..660f881b620a 100644 --- a/arch/blackfin/mach-common/ints-priority-dc.c +++ b/arch/blackfin/mach-common/ints-priority-dc.c | |||
@@ -358,26 +358,10 @@ static void bf561_demux_gpio_irq(unsigned int inta_irq, | |||
358 | 358 | ||
359 | #endif /* CONFIG_IRQCHIP_DEMUX_GPIO */ | 359 | #endif /* CONFIG_IRQCHIP_DEMUX_GPIO */ |
360 | 360 | ||
361 | /* | 361 | void __init init_exception_vectors(void) |
362 | * This function should be called during kernel startup to initialize | ||
363 | * the BFin IRQ handling routines. | ||
364 | */ | ||
365 | int __init init_arch_irq(void) | ||
366 | { | 362 | { |
367 | int irq; | ||
368 | unsigned long ilat = 0; | ||
369 | /* Disable all the peripheral intrs - page 4-29 HW Ref manual */ | ||
370 | bfin_write_SICA_IMASK0(SIC_UNMASK_ALL); | ||
371 | bfin_write_SICA_IMASK1(SIC_UNMASK_ALL); | ||
372 | SSYNC(); | 363 | SSYNC(); |
373 | 364 | ||
374 | bfin_write_SICA_IWR0(IWR_ENABLE_ALL); | ||
375 | bfin_write_SICA_IWR1(IWR_ENABLE_ALL); | ||
376 | |||
377 | local_irq_disable(); | ||
378 | |||
379 | init_exception_buff(); | ||
380 | |||
381 | #ifndef CONFIG_KGDB | 365 | #ifndef CONFIG_KGDB |
382 | bfin_write_EVT0(evt_emulation); | 366 | bfin_write_EVT0(evt_emulation); |
383 | #endif | 367 | #endif |
@@ -395,6 +379,27 @@ int __init init_arch_irq(void) | |||
395 | bfin_write_EVT14(evt14_softirq); | 379 | bfin_write_EVT14(evt14_softirq); |
396 | bfin_write_EVT15(evt_system_call); | 380 | bfin_write_EVT15(evt_system_call); |
397 | CSYNC(); | 381 | CSYNC(); |
382 | } | ||
383 | |||
384 | /* | ||
385 | * This function should be called during kernel startup to initialize | ||
386 | * the BFin IRQ handling routines. | ||
387 | */ | ||
388 | int __init init_arch_irq(void) | ||
389 | { | ||
390 | int irq; | ||
391 | unsigned long ilat = 0; | ||
392 | /* Disable all the peripheral intrs - page 4-29 HW Ref manual */ | ||
393 | bfin_write_SICA_IMASK0(SIC_UNMASK_ALL); | ||
394 | bfin_write_SICA_IMASK1(SIC_UNMASK_ALL); | ||
395 | SSYNC(); | ||
396 | |||
397 | bfin_write_SICA_IWR0(IWR_ENABLE_ALL); | ||
398 | bfin_write_SICA_IWR1(IWR_ENABLE_ALL); | ||
399 | |||
400 | local_irq_disable(); | ||
401 | |||
402 | init_exception_buff(); | ||
398 | 403 | ||
399 | for (irq = 0; irq <= SYS_IRQS; irq++) { | 404 | for (irq = 0; irq <= SYS_IRQS; irq++) { |
400 | if (irq <= IRQ_CORETMR) | 405 | if (irq <= IRQ_CORETMR) |
diff --git a/arch/blackfin/mach-common/ints-priority-sc.c b/arch/blackfin/mach-common/ints-priority-sc.c index 28a878c3577a..4708023fe716 100644 --- a/arch/blackfin/mach-common/ints-priority-sc.c +++ b/arch/blackfin/mach-common/ints-priority-sc.c | |||
@@ -579,8 +579,12 @@ static unsigned int bfin_gpio_irq_startup(unsigned int irq) | |||
579 | u16 gpionr = irq - IRQ_PA0; | 579 | u16 gpionr = irq - IRQ_PA0; |
580 | u8 pint_val = irq2pint_lut[irq - SYS_IRQS]; | 580 | u8 pint_val = irq2pint_lut[irq - SYS_IRQS]; |
581 | 581 | ||
582 | if (pint_val == IRQ_NOT_AVAIL) | 582 | if (pint_val == IRQ_NOT_AVAIL) { |
583 | printk(KERN_ERR | ||
584 | "GPIO IRQ %d :Not in PINT Assign table " | ||
585 | "Reconfigure Interrupt to Port Assignemt\n", irq); | ||
583 | return -ENODEV; | 586 | return -ENODEV; |
587 | } | ||
584 | 588 | ||
585 | if (!(gpio_enabled[gpio_bank(gpionr)] & gpio_bit(gpionr))) { | 589 | if (!(gpio_enabled[gpio_bank(gpionr)] & gpio_bit(gpionr))) { |
586 | ret = gpio_request(gpionr, NULL); | 590 | ret = gpio_request(gpionr, NULL); |
@@ -713,6 +717,29 @@ static void bfin_demux_gpio_irq(unsigned int intb_irq, | |||
713 | } | 717 | } |
714 | #endif /* CONFIG_IRQCHIP_DEMUX_GPIO */ | 718 | #endif /* CONFIG_IRQCHIP_DEMUX_GPIO */ |
715 | 719 | ||
720 | void __init init_exception_vectors(void) | ||
721 | { | ||
722 | SSYNC(); | ||
723 | |||
724 | #ifndef CONFIG_KGDB | ||
725 | bfin_write_EVT0(evt_emulation); | ||
726 | #endif | ||
727 | bfin_write_EVT2(evt_evt2); | ||
728 | bfin_write_EVT3(trap); | ||
729 | bfin_write_EVT5(evt_ivhw); | ||
730 | bfin_write_EVT6(evt_timer); | ||
731 | bfin_write_EVT7(evt_evt7); | ||
732 | bfin_write_EVT8(evt_evt8); | ||
733 | bfin_write_EVT9(evt_evt9); | ||
734 | bfin_write_EVT10(evt_evt10); | ||
735 | bfin_write_EVT11(evt_evt11); | ||
736 | bfin_write_EVT12(evt_evt12); | ||
737 | bfin_write_EVT13(evt_evt13); | ||
738 | bfin_write_EVT14(evt14_softirq); | ||
739 | bfin_write_EVT15(evt_system_call); | ||
740 | CSYNC(); | ||
741 | } | ||
742 | |||
716 | /* | 743 | /* |
717 | * This function should be called during kernel startup to initialize | 744 | * This function should be called during kernel startup to initialize |
718 | * the BFin IRQ handling routines. | 745 | * the BFin IRQ handling routines. |
@@ -733,29 +760,10 @@ int __init init_arch_irq(void) | |||
733 | bfin_write_SIC_IMASK(SIC_UNMASK_ALL); | 760 | bfin_write_SIC_IMASK(SIC_UNMASK_ALL); |
734 | bfin_write_SIC_IWR(IWR_ENABLE_ALL); | 761 | bfin_write_SIC_IWR(IWR_ENABLE_ALL); |
735 | #endif | 762 | #endif |
736 | |||
737 | SSYNC(); | 763 | SSYNC(); |
738 | 764 | ||
739 | local_irq_disable(); | 765 | local_irq_disable(); |
740 | 766 | ||
741 | #ifndef CONFIG_KGDB | ||
742 | bfin_write_EVT0(evt_emulation); | ||
743 | #endif | ||
744 | bfin_write_EVT2(evt_evt2); | ||
745 | bfin_write_EVT3(trap); | ||
746 | bfin_write_EVT5(evt_ivhw); | ||
747 | bfin_write_EVT6(evt_timer); | ||
748 | bfin_write_EVT7(evt_evt7); | ||
749 | bfin_write_EVT8(evt_evt8); | ||
750 | bfin_write_EVT9(evt_evt9); | ||
751 | bfin_write_EVT10(evt_evt10); | ||
752 | bfin_write_EVT11(evt_evt11); | ||
753 | bfin_write_EVT12(evt_evt12); | ||
754 | bfin_write_EVT13(evt_evt13); | ||
755 | bfin_write_EVT14(evt14_softirq); | ||
756 | bfin_write_EVT15(evt_system_call); | ||
757 | CSYNC(); | ||
758 | |||
759 | #if defined(CONFIG_IRQCHIP_DEMUX_GPIO) && defined(CONFIG_BF54x) | 767 | #if defined(CONFIG_IRQCHIP_DEMUX_GPIO) && defined(CONFIG_BF54x) |
760 | #ifdef CONFIG_PINTx_REASSIGN | 768 | #ifdef CONFIG_PINTx_REASSIGN |
761 | pint[0]->assign = CONFIG_PINT0_ASSIGN; | 769 | pint[0]->assign = CONFIG_PINT0_ASSIGN; |
diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig index da1647869f91..1842f523c23d 100644 --- a/drivers/i2c/busses/Kconfig +++ b/drivers/i2c/busses/Kconfig | |||
@@ -92,9 +92,9 @@ config I2C_AU1550 | |||
92 | 92 | ||
93 | config I2C_BLACKFIN_TWI | 93 | config I2C_BLACKFIN_TWI |
94 | tristate "Blackfin TWI I2C support" | 94 | tristate "Blackfin TWI I2C support" |
95 | depends on BF534 || BF536 || BF537 | 95 | depends on BF534 || BF536 || BF537 || BF54x |
96 | help | 96 | help |
97 | This is the TWI I2C device driver for Blackfin 534/536/537. | 97 | This is the TWI I2C device driver for Blackfin 534/536/537/54x. |
98 | This driver can also be built as a module. If so, the module | 98 | This driver can also be built as a module. If so, the module |
99 | will be called i2c-bfin-twi. | 99 | will be called i2c-bfin-twi. |
100 | 100 | ||
diff --git a/drivers/input/serio/Kconfig b/drivers/input/serio/Kconfig index adef447f23ea..5ce632ca6815 100644 --- a/drivers/input/serio/Kconfig +++ b/drivers/input/serio/Kconfig | |||
@@ -21,7 +21,7 @@ if SERIO | |||
21 | config SERIO_I8042 | 21 | config SERIO_I8042 |
22 | tristate "i8042 PC Keyboard controller" if EMBEDDED || !X86 | 22 | tristate "i8042 PC Keyboard controller" if EMBEDDED || !X86 |
23 | default y | 23 | default y |
24 | depends on !PARISC && (!ARM || ARCH_SHARK || FOOTBRIDGE_HOST) && !M68K | 24 | depends on !PARISC && (!ARM || ARCH_SHARK || FOOTBRIDGE_HOST) && !M68K && !BFIN |
25 | ---help--- | 25 | ---help--- |
26 | i8042 is the chip over which the standard AT keyboard and PS/2 | 26 | i8042 is the chip over which the standard AT keyboard and PS/2 |
27 | mouse are connected to the computer. If you use these devices, | 27 | mouse are connected to the computer. If you use these devices, |
diff --git a/drivers/net/bfin_mac.c b/drivers/net/bfin_mac.c index 9a08d656f1ce..2bb97d464689 100644 --- a/drivers/net/bfin_mac.c +++ b/drivers/net/bfin_mac.c | |||
@@ -798,6 +798,7 @@ static void bf537mac_shutdown(struct net_device *dev) | |||
798 | */ | 798 | */ |
799 | static int bf537mac_open(struct net_device *dev) | 799 | static int bf537mac_open(struct net_device *dev) |
800 | { | 800 | { |
801 | int retval; | ||
801 | pr_debug("%s: %s\n", dev->name, __FUNCTION__); | 802 | pr_debug("%s: %s\n", dev->name, __FUNCTION__); |
802 | 803 | ||
803 | /* | 804 | /* |
@@ -811,7 +812,10 @@ static int bf537mac_open(struct net_device *dev) | |||
811 | } | 812 | } |
812 | 813 | ||
813 | /* initial rx and tx list */ | 814 | /* initial rx and tx list */ |
814 | desc_list_init(); | 815 | retval = desc_list_init(); |
816 | |||
817 | if (retval) | ||
818 | return retval; | ||
815 | 819 | ||
816 | bf537mac_setphy(dev); | 820 | bf537mac_setphy(dev); |
817 | setup_system_regs(dev); | 821 | setup_system_regs(dev); |
diff --git a/drivers/rtc/rtc-bfin.c b/drivers/rtc/rtc-bfin.c index 260ead959918..1aa709dda0d6 100644 --- a/drivers/rtc/rtc-bfin.c +++ b/drivers/rtc/rtc-bfin.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | * Blackfin On-Chip Real Time Clock Driver | 2 | * Blackfin On-Chip Real Time Clock Driver |
3 | * Supports BF531/BF532/BF533/BF534/BF536/BF537 | 3 | * Supports BF53[123]/BF53[467]/BF54[2489] |
4 | * | 4 | * |
5 | * Copyright 2004-2007 Analog Devices Inc. | 5 | * Copyright 2004-2007 Analog Devices Inc. |
6 | * | 6 | * |
diff --git a/include/asm-blackfin/bfin-global.h b/include/asm-blackfin/bfin-global.h index c4d6cbbf96d4..a970781a0f98 100644 --- a/include/asm-blackfin/bfin-global.h +++ b/include/asm-blackfin/bfin-global.h | |||
@@ -61,6 +61,7 @@ extern void bfin_dcache_init(void); | |||
61 | extern int read_iloc(void); | 61 | extern int read_iloc(void); |
62 | extern int bfin_console_init(void); | 62 | extern int bfin_console_init(void); |
63 | extern asmlinkage void lower_to_irq14(void); | 63 | extern asmlinkage void lower_to_irq14(void); |
64 | extern void init_exception_vectors(void); | ||
64 | extern void init_dma(void); | 65 | extern void init_dma(void); |
65 | extern void program_IAR(void); | 66 | extern void program_IAR(void); |
66 | extern void evt14_softirq(void); | 67 | extern void evt14_softirq(void); |
diff --git a/include/asm-blackfin/mach-bf548/cdefBF54x_base.h b/include/asm-blackfin/mach-bf548/cdefBF54x_base.h index 98d35a929116..cdf29e75ea59 100644 --- a/include/asm-blackfin/mach-bf548/cdefBF54x_base.h +++ b/include/asm-blackfin/mach-bf548/cdefBF54x_base.h | |||
@@ -242,6 +242,39 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val) | |||
242 | #define bfin_read_TWI0_RCV_DATA16() bfin_read16(TWI0_RCV_DATA16) | 242 | #define bfin_read_TWI0_RCV_DATA16() bfin_read16(TWI0_RCV_DATA16) |
243 | #define bfin_write_TWI0_RCV_DATA16(val) bfin_write16(TWI0_RCV_DATA16, val) | 243 | #define bfin_write_TWI0_RCV_DATA16(val) bfin_write16(TWI0_RCV_DATA16, val) |
244 | 244 | ||
245 | #define bfin_read_TWI_CLKDIV() bfin_read16(TWI0_CLKDIV) | ||
246 | #define bfin_write_TWI_CLKDIV(val) bfin_write16(TWI0_CLKDIV, val) | ||
247 | #define bfin_read_TWI_CONTROL() bfin_read16(TWI0_CONTROL) | ||
248 | #define bfin_write_TWI_CONTROL(val) bfin_write16(TWI0_CONTROL, val) | ||
249 | #define bfin_read_TWI_SLAVE_CTRL() bfin_read16(TWI0_SLAVE_CTRL) | ||
250 | #define bfin_write_TWI_SLAVE_CTRL(val) bfin_write16(TWI0_SLAVE_CTRL, val) | ||
251 | #define bfin_read_TWI_SLAVE_STAT() bfin_read16(TWI0_SLAVE_STAT) | ||
252 | #define bfin_write_TWI_SLAVE_STAT(val) bfin_write16(TWI0_SLAVE_STAT, val) | ||
253 | #define bfin_read_TWI_SLAVE_ADDR() bfin_read16(TWI0_SLAVE_ADDR) | ||
254 | #define bfin_write_TWI_SLAVE_ADDR(val) bfin_write16(TWI0_SLAVE_ADDR, val) | ||
255 | #define bfin_read_TWI_MASTER_CTL() bfin_read16(TWI0_MASTER_CTRL) | ||
256 | #define bfin_write_TWI_MASTER_CTL(val) bfin_write16(TWI0_MASTER_CTRL, val) | ||
257 | #define bfin_read_TWI_MASTER_STAT() bfin_read16(TWI0_MASTER_STAT) | ||
258 | #define bfin_write_TWI_MASTER_STAT(val) bfin_write16(TWI0_MASTER_STAT, val) | ||
259 | #define bfin_read_TWI_MASTER_ADDR() bfin_read16(TWI0_MASTER_ADDR) | ||
260 | #define bfin_write_TWI_MASTER_ADDR(val) bfin_write16(TWI0_MASTER_ADDR, val) | ||
261 | #define bfin_read_TWI_INT_STAT() bfin_read16(TWI0_INT_STAT) | ||
262 | #define bfin_write_TWI_INT_STAT(val) bfin_write16(TWI0_INT_STAT, val) | ||
263 | #define bfin_read_TWI_INT_MASK() bfin_read16(TWI0_INT_MASK) | ||
264 | #define bfin_write_TWI_INT_MASK(val) bfin_write16(TWI0_INT_MASK, val) | ||
265 | #define bfin_read_TWI_FIFO_CTL() bfin_read16(TWI0_FIFO_CTRL) | ||
266 | #define bfin_write_TWI_FIFO_CTL(val) bfin_write16(TWI0_FIFO_CTRL, val) | ||
267 | #define bfin_read_TWI_FIFO_STAT() bfin_read16(TWI0_FIFO_STAT) | ||
268 | #define bfin_write_TWI_FIFO_STAT(val) bfin_write16(TWI0_FIFO_STAT, val) | ||
269 | #define bfin_read_TWI_XMT_DATA8() bfin_read16(TWI0_XMT_DATA8) | ||
270 | #define bfin_write_TWI_XMT_DATA8(val) bfin_write16(TWI0_XMT_DATA8, val) | ||
271 | #define bfin_read_TWI_XMT_DATA16() bfin_read16(TWI0_XMT_DATA16) | ||
272 | #define bfin_write_TWI_XMT_DATA16(val) bfin_write16(TWI0_XMT_DATA16, val) | ||
273 | #define bfin_read_TWI_RCV_DATA8() bfin_read16(TWI0_RCV_DATA8) | ||
274 | #define bfin_write_TWI_RCV_DATA8(val) bfin_write16(TWI0_RCV_DATA8, val) | ||
275 | #define bfin_read_TWI_RCV_DATA16() bfin_read16(TWI0_RCV_DATA16) | ||
276 | #define bfin_write_TWI_RCV_DATA16(val) bfin_write16(TWI0_RCV_DATA16, val) | ||
277 | |||
245 | /* SPORT0 is not defined in the shared file because it is not available on the ADSP-BF542 and ADSP-BF544 bfin_read_()rocessors */ | 278 | /* SPORT0 is not defined in the shared file because it is not available on the ADSP-BF542 and ADSP-BF544 bfin_read_()rocessors */ |
246 | 279 | ||
247 | /* SPORT1 Registers */ | 280 | /* SPORT1 Registers */ |
diff --git a/include/asm-blackfin/mach-bf548/irq.h b/include/asm-blackfin/mach-bf548/irq.h index 0b3325bb1fff..e548d3cd81e3 100644 --- a/include/asm-blackfin/mach-bf548/irq.h +++ b/include/asm-blackfin/mach-bf548/irq.h | |||
@@ -112,6 +112,7 @@ Events (highest priority) EMU 0 | |||
112 | #define IRQ_ATAPI_TX BFIN_IRQ(44) /* ATAPI TX (DMA11) Interrupt */ | 112 | #define IRQ_ATAPI_TX BFIN_IRQ(44) /* ATAPI TX (DMA11) Interrupt */ |
113 | #define IRQ_TWI0 BFIN_IRQ(45) /* TWI0 Interrupt */ | 113 | #define IRQ_TWI0 BFIN_IRQ(45) /* TWI0 Interrupt */ |
114 | #define IRQ_TWI1 BFIN_IRQ(46) /* TWI1 Interrupt */ | 114 | #define IRQ_TWI1 BFIN_IRQ(46) /* TWI1 Interrupt */ |
115 | #define IRQ_TWI IRQ_TWI0 /* TWI Interrupt */ | ||
115 | #define IRQ_CAN0_RX BFIN_IRQ(47) /* CAN0 Receive Interrupt */ | 116 | #define IRQ_CAN0_RX BFIN_IRQ(47) /* CAN0 Receive Interrupt */ |
116 | #define IRQ_CAN0_TX BFIN_IRQ(48) /* CAN0 Transmit Interrupt */ | 117 | #define IRQ_CAN0_TX BFIN_IRQ(48) /* CAN0 Transmit Interrupt */ |
117 | #define IRQ_MDMAS2 BFIN_IRQ(49) /* MDMA Stream 2 Interrupt */ | 118 | #define IRQ_MDMAS2 BFIN_IRQ(49) /* MDMA Stream 2 Interrupt */ |
diff --git a/include/asm-blackfin/mach-bf561/cdefBF561.h b/include/asm-blackfin/mach-bf561/cdefBF561.h index 1a8ec9e46922..6e87ab269ffe 100644 --- a/include/asm-blackfin/mach-bf561/cdefBF561.h +++ b/include/asm-blackfin/mach-bf561/cdefBF561.h | |||
@@ -81,6 +81,12 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val) | |||
81 | #define bfin_write_PLL_LOCKCNT(val) bfin_write16(PLL_LOCKCNT,val) | 81 | #define bfin_write_PLL_LOCKCNT(val) bfin_write16(PLL_LOCKCNT,val) |
82 | #define bfin_read_CHIPID() bfin_read32(CHIPID) | 82 | #define bfin_read_CHIPID() bfin_read32(CHIPID) |
83 | 83 | ||
84 | /* For MMR's that are reserved on Core B, set up defines to better integrate with other ports */ | ||
85 | #define bfin_read_SWRST() bfin_read_SICA_SWRST() | ||
86 | #define bfin_write_SWRST() bfin_write_SICA_SWRST() | ||
87 | #define bfin_read_SYSCR() bfin_read_SICA_SYSCR() | ||
88 | #define bfin_write_SYSCR() bfin_write_SICA_SYSCR() | ||
89 | |||
84 | /* System Reset and Interrupt Controller registers for core A (0xFFC0 0100-0xFFC0 01FF) */ | 90 | /* System Reset and Interrupt Controller registers for core A (0xFFC0 0100-0xFFC0 01FF) */ |
85 | #define bfin_read_SICA_SWRST() bfin_read16(SICA_SWRST) | 91 | #define bfin_read_SICA_SWRST() bfin_read16(SICA_SWRST) |
86 | #define bfin_write_SICA_SWRST(val) bfin_write16(SICA_SWRST,val) | 92 | #define bfin_write_SICA_SWRST(val) bfin_write16(SICA_SWRST,val) |
diff --git a/include/asm-blackfin/mach-bf561/defBF561.h b/include/asm-blackfin/mach-bf561/defBF561.h index 89150ecb909d..0f2dc6e6335b 100644 --- a/include/asm-blackfin/mach-bf561/defBF561.h +++ b/include/asm-blackfin/mach-bf561/defBF561.h | |||
@@ -52,6 +52,10 @@ | |||
52 | #define PLL_LOCKCNT 0xFFC00010 /* PLL Lock Count register (16-bit) */ | 52 | #define PLL_LOCKCNT 0xFFC00010 /* PLL Lock Count register (16-bit) */ |
53 | #define CHIPID 0xFFC00014 /* Chip ID Register */ | 53 | #define CHIPID 0xFFC00014 /* Chip ID Register */ |
54 | 54 | ||
55 | /* For MMR's that are reserved on Core B, set up defines to better integrate with other ports */ | ||
56 | #define SWRST SICA_SWRST | ||
57 | #define SYSCR SICA_SYSCR | ||
58 | |||
55 | /* System Reset and Interrupt Controller registers for core A (0xFFC0 0100-0xFFC0 01FF) */ | 59 | /* System Reset and Interrupt Controller registers for core A (0xFFC0 0100-0xFFC0 01FF) */ |
56 | #define SICA_SWRST 0xFFC00100 /* Software Reset register */ | 60 | #define SICA_SWRST 0xFFC00100 /* Software Reset register */ |
57 | #define SICA_SYSCR 0xFFC00104 /* System Reset Configuration register */ | 61 | #define SICA_SYSCR 0xFFC00104 /* System Reset Configuration register */ |
diff --git a/include/asm-blackfin/thread_info.h b/include/asm-blackfin/thread_info.h index fa8f08cf283e..34d3c2eec949 100644 --- a/include/asm-blackfin/thread_info.h +++ b/include/asm-blackfin/thread_info.h | |||
@@ -39,6 +39,11 @@ | |||
39 | */ | 39 | */ |
40 | #define ALIGN_PAGE_MASK 0xffffe000 | 40 | #define ALIGN_PAGE_MASK 0xffffe000 |
41 | 41 | ||
42 | /* | ||
43 | * Size of kernel stack for each process. This must be a power of 2... | ||
44 | */ | ||
45 | #define THREAD_SIZE 8192 /* 2 pages */ | ||
46 | |||
42 | #ifndef __ASSEMBLY__ | 47 | #ifndef __ASSEMBLY__ |
43 | 48 | ||
44 | typedef unsigned long mm_segment_t; | 49 | typedef unsigned long mm_segment_t; |
@@ -76,11 +81,6 @@ struct thread_info { | |||
76 | #define init_thread_info (init_thread_union.thread_info) | 81 | #define init_thread_info (init_thread_union.thread_info) |
77 | #define init_stack (init_thread_union.stack) | 82 | #define init_stack (init_thread_union.stack) |
78 | 83 | ||
79 | /* | ||
80 | * Size of kernel stack for each process. This must be a power of 2... | ||
81 | */ | ||
82 | #define THREAD_SIZE 8192 /* 2 pages */ | ||
83 | |||
84 | /* How to get the thread information struct from C */ | 84 | /* How to get the thread information struct from C */ |
85 | 85 | ||
86 | static inline struct thread_info *current_thread_info(void) | 86 | static inline struct thread_info *current_thread_info(void) |
@@ -94,7 +94,7 @@ static inline struct thread_info *current_thread_info(void) | |||
94 | struct thread_info *ti; | 94 | struct thread_info *ti; |
95 | __asm__("%0 = sp;": "=&d"(ti): | 95 | __asm__("%0 = sp;": "=&d"(ti): |
96 | ); | 96 | ); |
97 | return (struct thread_info *)((long)ti & ~8191UL); | 97 | return (struct thread_info *)((long)ti & ~((long)THREAD_SIZE-1)); |
98 | } | 98 | } |
99 | 99 | ||
100 | /* thread information allocation */ | 100 | /* thread information allocation */ |