diff options
author | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2006-08-27 22:59:59 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2006-08-27 22:59:59 -0400 |
commit | 8ce7a9c159c8c4eb480f0a65c6af753dbf9a1a70 (patch) | |
tree | be59573c0af3617d0cd8a7d61f0ed119e58b1156 /arch/arm | |
parent | d2afb3ae04e36dbc6e9eb2d8bd54406ff7b6b3bd (diff) | |
parent | 01da5fd83d6b2c5e36b77539f6cbdd8f49849225 (diff) |
Merge ../linux-2.6
Diffstat (limited to 'arch/arm')
46 files changed, 362 insertions, 167 deletions
diff --git a/arch/arm/common/dmabounce.c b/arch/arm/common/dmabounce.c index 5b7c26395b44..028bdc9228fb 100644 --- a/arch/arm/common/dmabounce.c +++ b/arch/arm/common/dmabounce.c | |||
@@ -179,17 +179,19 @@ alloc_safe_buffer(struct dmabounce_device_info *device_info, void *ptr, | |||
179 | static inline struct safe_buffer * | 179 | static inline struct safe_buffer * |
180 | find_safe_buffer(struct dmabounce_device_info *device_info, dma_addr_t safe_dma_addr) | 180 | find_safe_buffer(struct dmabounce_device_info *device_info, dma_addr_t safe_dma_addr) |
181 | { | 181 | { |
182 | struct safe_buffer *b = NULL; | 182 | struct safe_buffer *b, *rb = NULL; |
183 | unsigned long flags; | 183 | unsigned long flags; |
184 | 184 | ||
185 | read_lock_irqsave(&device_info->lock, flags); | 185 | read_lock_irqsave(&device_info->lock, flags); |
186 | 186 | ||
187 | list_for_each_entry(b, &device_info->safe_buffers, node) | 187 | list_for_each_entry(b, &device_info->safe_buffers, node) |
188 | if (b->safe_dma_addr == safe_dma_addr) | 188 | if (b->safe_dma_addr == safe_dma_addr) { |
189 | rb = b; | ||
189 | break; | 190 | break; |
191 | } | ||
190 | 192 | ||
191 | read_unlock_irqrestore(&device_info->lock, flags); | 193 | read_unlock_irqrestore(&device_info->lock, flags); |
192 | return b; | 194 | return rb; |
193 | } | 195 | } |
194 | 196 | ||
195 | static inline void | 197 | static inline void |
diff --git a/arch/arm/common/gic.c b/arch/arm/common/gic.c index f3c1ebfdd0aa..f3e020f2227f 100644 --- a/arch/arm/common/gic.c +++ b/arch/arm/common/gic.c | |||
@@ -95,7 +95,8 @@ static void gic_set_cpu(unsigned int irq, cpumask_t mask_val) | |||
95 | } | 95 | } |
96 | #endif | 96 | #endif |
97 | 97 | ||
98 | static struct irqchip gic_chip = { | 98 | static struct irq_chip gic_chip = { |
99 | .name = "GIC", | ||
99 | .ack = gic_ack_irq, | 100 | .ack = gic_ack_irq, |
100 | .mask = gic_mask_irq, | 101 | .mask = gic_mask_irq, |
101 | .unmask = gic_unmask_irq, | 102 | .unmask = gic_unmask_irq, |
diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c index 04de83f4f008..4e0dcaef6eb2 100644 --- a/arch/arm/common/locomo.c +++ b/arch/arm/common/locomo.c | |||
@@ -204,7 +204,8 @@ static void locomo_unmask_irq(unsigned int irq) | |||
204 | locomo_writel(r, mapbase + LOCOMO_ICR); | 204 | locomo_writel(r, mapbase + LOCOMO_ICR); |
205 | } | 205 | } |
206 | 206 | ||
207 | static struct irqchip locomo_chip = { | 207 | static struct irq_chip locomo_chip = { |
208 | .name = "LOCOMO", | ||
208 | .ack = locomo_ack_irq, | 209 | .ack = locomo_ack_irq, |
209 | .mask = locomo_mask_irq, | 210 | .mask = locomo_mask_irq, |
210 | .unmask = locomo_unmask_irq, | 211 | .unmask = locomo_unmask_irq, |
@@ -249,7 +250,8 @@ static void locomo_key_unmask_irq(unsigned int irq) | |||
249 | locomo_writel(r, mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC); | 250 | locomo_writel(r, mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC); |
250 | } | 251 | } |
251 | 252 | ||
252 | static struct irqchip locomo_key_chip = { | 253 | static struct irq_chip locomo_key_chip = { |
254 | .name = "LOCOMO-key", | ||
253 | .ack = locomo_key_ack_irq, | 255 | .ack = locomo_key_ack_irq, |
254 | .mask = locomo_key_mask_irq, | 256 | .mask = locomo_key_mask_irq, |
255 | .unmask = locomo_key_unmask_irq, | 257 | .unmask = locomo_key_unmask_irq, |
@@ -312,7 +314,8 @@ static void locomo_gpio_unmask_irq(unsigned int irq) | |||
312 | locomo_writel(r, mapbase + LOCOMO_GIE); | 314 | locomo_writel(r, mapbase + LOCOMO_GIE); |
313 | } | 315 | } |
314 | 316 | ||
315 | static struct irqchip locomo_gpio_chip = { | 317 | static struct irq_chip locomo_gpio_chip = { |
318 | .name = "LOCOMO-gpio", | ||
316 | .ack = locomo_gpio_ack_irq, | 319 | .ack = locomo_gpio_ack_irq, |
317 | .mask = locomo_gpio_mask_irq, | 320 | .mask = locomo_gpio_mask_irq, |
318 | .unmask = locomo_gpio_unmask_irq, | 321 | .unmask = locomo_gpio_unmask_irq, |
@@ -357,7 +360,8 @@ static void locomo_lt_unmask_irq(unsigned int irq) | |||
357 | locomo_writel(r, mapbase + LOCOMO_LTINT); | 360 | locomo_writel(r, mapbase + LOCOMO_LTINT); |
358 | } | 361 | } |
359 | 362 | ||
360 | static struct irqchip locomo_lt_chip = { | 363 | static struct irq_chip locomo_lt_chip = { |
364 | .name = "LOCOMO-lt", | ||
361 | .ack = locomo_lt_ack_irq, | 365 | .ack = locomo_lt_ack_irq, |
362 | .mask = locomo_lt_mask_irq, | 366 | .mask = locomo_lt_mask_irq, |
363 | .unmask = locomo_lt_unmask_irq, | 367 | .unmask = locomo_lt_unmask_irq, |
@@ -418,7 +422,8 @@ static void locomo_spi_unmask_irq(unsigned int irq) | |||
418 | locomo_writel(r, mapbase + LOCOMO_SPIIE); | 422 | locomo_writel(r, mapbase + LOCOMO_SPIIE); |
419 | } | 423 | } |
420 | 424 | ||
421 | static struct irqchip locomo_spi_chip = { | 425 | static struct irq_chip locomo_spi_chip = { |
426 | .name = "LOCOMO-spi", | ||
422 | .ack = locomo_spi_ack_irq, | 427 | .ack = locomo_spi_ack_irq, |
423 | .mask = locomo_spi_mask_irq, | 428 | .mask = locomo_spi_mask_irq, |
424 | .unmask = locomo_spi_unmask_irq, | 429 | .unmask = locomo_spi_unmask_irq, |
diff --git a/arch/arm/common/rtctime.c b/arch/arm/common/rtctime.c index 35c9a64ac14c..4e5445cfb0ea 100644 --- a/arch/arm/common/rtctime.c +++ b/arch/arm/common/rtctime.c | |||
@@ -68,6 +68,7 @@ void rtc_next_alarm_time(struct rtc_time *next, struct rtc_time *now, struct rtc | |||
68 | rtc_time_to_tm(next_time, next); | 68 | rtc_time_to_tm(next_time, next); |
69 | } | 69 | } |
70 | } | 70 | } |
71 | EXPORT_SYMBOL(rtc_next_alarm_time); | ||
71 | 72 | ||
72 | static inline int rtc_arm_read_time(struct rtc_ops *ops, struct rtc_time *tm) | 73 | static inline int rtc_arm_read_time(struct rtc_ops *ops, struct rtc_time *tm) |
73 | { | 74 | { |
diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c index 1cdb26a47e1f..a331c12cead9 100644 --- a/arch/arm/common/sa1111.c +++ b/arch/arm/common/sa1111.c | |||
@@ -272,7 +272,8 @@ static int sa1111_wake_lowirq(unsigned int irq, unsigned int on) | |||
272 | return 0; | 272 | return 0; |
273 | } | 273 | } |
274 | 274 | ||
275 | static struct irqchip sa1111_low_chip = { | 275 | static struct irq_chip sa1111_low_chip = { |
276 | .name = "SA1111-l", | ||
276 | .ack = sa1111_ack_irq, | 277 | .ack = sa1111_ack_irq, |
277 | .mask = sa1111_mask_lowirq, | 278 | .mask = sa1111_mask_lowirq, |
278 | .unmask = sa1111_unmask_lowirq, | 279 | .unmask = sa1111_unmask_lowirq, |
@@ -368,7 +369,8 @@ static int sa1111_wake_highirq(unsigned int irq, unsigned int on) | |||
368 | return 0; | 369 | return 0; |
369 | } | 370 | } |
370 | 371 | ||
371 | static struct irqchip sa1111_high_chip = { | 372 | static struct irq_chip sa1111_high_chip = { |
373 | .name = "SA1111-h", | ||
372 | .ack = sa1111_ack_irq, | 374 | .ack = sa1111_ack_irq, |
373 | .mask = sa1111_mask_highirq, | 375 | .mask = sa1111_mask_highirq, |
374 | .unmask = sa1111_unmask_highirq, | 376 | .unmask = sa1111_unmask_highirq, |
diff --git a/arch/arm/common/vic.c b/arch/arm/common/vic.c index a19bc4a6196d..43d278134521 100644 --- a/arch/arm/common/vic.c +++ b/arch/arm/common/vic.c | |||
@@ -39,7 +39,8 @@ static void vic_unmask_irq(unsigned int irq) | |||
39 | writel(1 << irq, base + VIC_INT_ENABLE); | 39 | writel(1 << irq, base + VIC_INT_ENABLE); |
40 | } | 40 | } |
41 | 41 | ||
42 | static struct irqchip vic_chip = { | 42 | static struct irq_chip vic_chip = { |
43 | .name = "VIC", | ||
43 | .ack = vic_mask_irq, | 44 | .ack = vic_mask_irq, |
44 | .mask = vic_mask_irq, | 45 | .mask = vic_mask_irq, |
45 | .unmask = vic_unmask_irq, | 46 | .unmask = vic_unmask_irq, |
diff --git a/arch/arm/configs/ep93xx_defconfig b/arch/arm/configs/ep93xx_defconfig index c0de6fcd488a..2948b4589a8b 100644 --- a/arch/arm/configs/ep93xx_defconfig +++ b/arch/arm/configs/ep93xx_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.18-rc1 | 3 | # Linux kernel version: 2.6.18-rc1-git9 |
4 | # Sun Jul 9 15:21:30 2006 | 4 | # Sat Jul 15 15:08:10 2006 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
@@ -30,6 +30,7 @@ CONFIG_SWAP=y | |||
30 | CONFIG_SYSVIPC=y | 30 | CONFIG_SYSVIPC=y |
31 | # CONFIG_POSIX_MQUEUE is not set | 31 | # CONFIG_POSIX_MQUEUE is not set |
32 | # CONFIG_BSD_PROCESS_ACCT is not set | 32 | # CONFIG_BSD_PROCESS_ACCT is not set |
33 | # CONFIG_TASKSTATS is not set | ||
33 | CONFIG_SYSCTL=y | 34 | CONFIG_SYSCTL=y |
34 | # CONFIG_AUDIT is not set | 35 | # CONFIG_AUDIT is not set |
35 | CONFIG_IKCONFIG=y | 36 | CONFIG_IKCONFIG=y |
@@ -749,7 +750,7 @@ CONFIG_VIDEO_V4L2=y | |||
749 | # USB support | 750 | # USB support |
750 | # | 751 | # |
751 | CONFIG_USB_ARCH_HAS_HCD=y | 752 | CONFIG_USB_ARCH_HAS_HCD=y |
752 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 753 | CONFIG_USB_ARCH_HAS_OHCI=y |
753 | # CONFIG_USB_ARCH_HAS_EHCI is not set | 754 | # CONFIG_USB_ARCH_HAS_EHCI is not set |
754 | CONFIG_USB=y | 755 | CONFIG_USB=y |
755 | CONFIG_USB_DEBUG=y | 756 | CONFIG_USB_DEBUG=y |
@@ -766,6 +767,9 @@ CONFIG_USB_DYNAMIC_MINORS=y | |||
766 | # USB Host Controller Drivers | 767 | # USB Host Controller Drivers |
767 | # | 768 | # |
768 | # CONFIG_USB_ISP116X_HCD is not set | 769 | # CONFIG_USB_ISP116X_HCD is not set |
770 | CONFIG_USB_OHCI_HCD=y | ||
771 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | ||
772 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | ||
769 | # CONFIG_USB_SL811_HCD is not set | 773 | # CONFIG_USB_SL811_HCD is not set |
770 | 774 | ||
771 | # | 775 | # |
@@ -855,6 +859,7 @@ CONFIG_USB_SERIAL_CONSOLE=y | |||
855 | CONFIG_USB_SERIAL_PL2303=y | 859 | CONFIG_USB_SERIAL_PL2303=y |
856 | # CONFIG_USB_SERIAL_HP4X is not set | 860 | # CONFIG_USB_SERIAL_HP4X is not set |
857 | # CONFIG_USB_SERIAL_SAFE is not set | 861 | # CONFIG_USB_SERIAL_SAFE is not set |
862 | # CONFIG_USB_SERIAL_SIERRAWIRELESS is not set | ||
858 | # CONFIG_USB_SERIAL_TI is not set | 863 | # CONFIG_USB_SERIAL_TI is not set |
859 | # CONFIG_USB_SERIAL_CYBERJACK is not set | 864 | # CONFIG_USB_SERIAL_CYBERJACK is not set |
860 | # CONFIG_USB_SERIAL_XIRCOM is not set | 865 | # CONFIG_USB_SERIAL_XIRCOM is not set |
@@ -871,7 +876,7 @@ CONFIG_USB_SERIAL_PL2303=y | |||
871 | # CONFIG_USB_LEGOTOWER is not set | 876 | # CONFIG_USB_LEGOTOWER is not set |
872 | # CONFIG_USB_LCD is not set | 877 | # CONFIG_USB_LCD is not set |
873 | # CONFIG_USB_LED is not set | 878 | # CONFIG_USB_LED is not set |
874 | # CONFIG_USB_CY7C63 is not set | 879 | # CONFIG_USB_CYPRESS_CY7C63 is not set |
875 | # CONFIG_USB_CYTHERM is not set | 880 | # CONFIG_USB_CYTHERM is not set |
876 | # CONFIG_USB_PHIDGETKIT is not set | 881 | # CONFIG_USB_PHIDGETKIT is not set |
877 | # CONFIG_USB_PHIDGETSERVO is not set | 882 | # CONFIG_USB_PHIDGETSERVO is not set |
@@ -916,6 +921,7 @@ CONFIG_RTC_INTF_DEV=y | |||
916 | # CONFIG_RTC_DRV_X1205 is not set | 921 | # CONFIG_RTC_DRV_X1205 is not set |
917 | # CONFIG_RTC_DRV_DS1307 is not set | 922 | # CONFIG_RTC_DRV_DS1307 is not set |
918 | # CONFIG_RTC_DRV_DS1553 is not set | 923 | # CONFIG_RTC_DRV_DS1553 is not set |
924 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
919 | # CONFIG_RTC_DRV_DS1672 is not set | 925 | # CONFIG_RTC_DRV_DS1672 is not set |
920 | # CONFIG_RTC_DRV_DS1742 is not set | 926 | # CONFIG_RTC_DRV_DS1742 is not set |
921 | # CONFIG_RTC_DRV_PCF8563 is not set | 927 | # CONFIG_RTC_DRV_PCF8563 is not set |
@@ -1023,7 +1029,6 @@ CONFIG_SUNRPC=y | |||
1023 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 1029 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
1024 | # CONFIG_SMB_FS is not set | 1030 | # CONFIG_SMB_FS is not set |
1025 | # CONFIG_CIFS is not set | 1031 | # CONFIG_CIFS is not set |
1026 | # CONFIG_CIFS_DEBUG2 is not set | ||
1027 | # CONFIG_NCP_FS is not set | 1032 | # CONFIG_NCP_FS is not set |
1028 | # CONFIG_CODA_FS is not set | 1033 | # CONFIG_CODA_FS is not set |
1029 | # CONFIG_AFS_FS is not set | 1034 | # CONFIG_AFS_FS is not set |
diff --git a/arch/arm/kernel/ecard.c b/arch/arm/kernel/ecard.c index b9a74a741d00..eca248d9eba4 100644 --- a/arch/arm/kernel/ecard.c +++ b/arch/arm/kernel/ecard.c | |||
@@ -470,7 +470,8 @@ static void ecard_irq_mask(unsigned int irqnr) | |||
470 | } | 470 | } |
471 | } | 471 | } |
472 | 472 | ||
473 | static struct irqchip ecard_chip = { | 473 | static struct irq_chip ecard_chip = { |
474 | .name = "ECARD", | ||
474 | .ack = ecard_irq_mask, | 475 | .ack = ecard_irq_mask, |
475 | .mask = ecard_irq_mask, | 476 | .mask = ecard_irq_mask, |
476 | .unmask = ecard_irq_unmask, | 477 | .unmask = ecard_irq_unmask, |
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index 7ea5f01dfc7b..de4e33137901 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S | |||
@@ -634,6 +634,14 @@ ENTRY(__switch_to) | |||
634 | * purpose. | 634 | * purpose. |
635 | */ | 635 | */ |
636 | 636 | ||
637 | .macro usr_ret, reg | ||
638 | #ifdef CONFIG_ARM_THUMB | ||
639 | bx \reg | ||
640 | #else | ||
641 | mov pc, \reg | ||
642 | #endif | ||
643 | .endm | ||
644 | |||
637 | .align 5 | 645 | .align 5 |
638 | .globl __kuser_helper_start | 646 | .globl __kuser_helper_start |
639 | __kuser_helper_start: | 647 | __kuser_helper_start: |
@@ -675,7 +683,7 @@ __kuser_memory_barrier: @ 0xffff0fa0 | |||
675 | #if __LINUX_ARM_ARCH__ >= 6 && defined(CONFIG_SMP) | 683 | #if __LINUX_ARM_ARCH__ >= 6 && defined(CONFIG_SMP) |
676 | mcr p15, 0, r0, c7, c10, 5 @ dmb | 684 | mcr p15, 0, r0, c7, c10, 5 @ dmb |
677 | #endif | 685 | #endif |
678 | mov pc, lr | 686 | usr_ret lr |
679 | 687 | ||
680 | .align 5 | 688 | .align 5 |
681 | 689 | ||
@@ -778,7 +786,7 @@ __kuser_cmpxchg: @ 0xffff0fc0 | |||
778 | mov r0, #-1 | 786 | mov r0, #-1 |
779 | adds r0, r0, #0 | 787 | adds r0, r0, #0 |
780 | #endif | 788 | #endif |
781 | mov pc, lr | 789 | usr_ret lr |
782 | 790 | ||
783 | #else | 791 | #else |
784 | 792 | ||
@@ -792,7 +800,7 @@ __kuser_cmpxchg: @ 0xffff0fc0 | |||
792 | #ifdef CONFIG_SMP | 800 | #ifdef CONFIG_SMP |
793 | mcr p15, 0, r0, c7, c10, 5 @ dmb | 801 | mcr p15, 0, r0, c7, c10, 5 @ dmb |
794 | #endif | 802 | #endif |
795 | mov pc, lr | 803 | usr_ret lr |
796 | 804 | ||
797 | #endif | 805 | #endif |
798 | 806 | ||
@@ -834,16 +842,11 @@ __kuser_cmpxchg: @ 0xffff0fc0 | |||
834 | __kuser_get_tls: @ 0xffff0fe0 | 842 | __kuser_get_tls: @ 0xffff0fe0 |
835 | 843 | ||
836 | #if !defined(CONFIG_HAS_TLS_REG) && !defined(CONFIG_TLS_REG_EMUL) | 844 | #if !defined(CONFIG_HAS_TLS_REG) && !defined(CONFIG_TLS_REG_EMUL) |
837 | |||
838 | ldr r0, [pc, #(16 - 8)] @ TLS stored at 0xffff0ff0 | 845 | ldr r0, [pc, #(16 - 8)] @ TLS stored at 0xffff0ff0 |
839 | mov pc, lr | ||
840 | |||
841 | #else | 846 | #else |
842 | |||
843 | mrc p15, 0, r0, c13, c0, 3 @ read TLS register | 847 | mrc p15, 0, r0, c13, c0, 3 @ read TLS register |
844 | mov pc, lr | ||
845 | |||
846 | #endif | 848 | #endif |
849 | usr_ret lr | ||
847 | 850 | ||
848 | .rep 5 | 851 | .rep 5 |
849 | .word 0 @ pad up to __kuser_helper_version | 852 | .word 0 @ pad up to __kuser_helper_version |
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S index 2242f5f7cb7d..5365d4e5949e 100644 --- a/arch/arm/kernel/head.S +++ b/arch/arm/kernel/head.S | |||
@@ -114,18 +114,18 @@ ENTRY(secondary_startup) | |||
114 | * Use the page tables supplied from __cpu_up. | 114 | * Use the page tables supplied from __cpu_up. |
115 | */ | 115 | */ |
116 | adr r4, __secondary_data | 116 | adr r4, __secondary_data |
117 | ldmia r4, {r5, r6, r13} @ address to jump to after | 117 | ldmia r4, {r5, r7, r13} @ address to jump to after |
118 | sub r4, r4, r5 @ mmu has been enabled | 118 | sub r4, r4, r5 @ mmu has been enabled |
119 | ldr r4, [r6, r4] @ get secondary_data.pgdir | 119 | ldr r4, [r7, r4] @ get secondary_data.pgdir |
120 | adr lr, __enable_mmu @ return address | 120 | adr lr, __enable_mmu @ return address |
121 | add pc, r10, #12 @ initialise processor | 121 | add pc, r10, #PROCINFO_INITFUNC @ initialise processor |
122 | @ (return control reg) | 122 | @ (return control reg) |
123 | 123 | ||
124 | /* | 124 | /* |
125 | * r6 = &secondary_data | 125 | * r6 = &secondary_data |
126 | */ | 126 | */ |
127 | ENTRY(__secondary_switched) | 127 | ENTRY(__secondary_switched) |
128 | ldr sp, [r6, #4] @ get secondary_data.stack | 128 | ldr sp, [r7, #4] @ get secondary_data.stack |
129 | mov fp, #0 | 129 | mov fp, #0 |
130 | b secondary_start_kernel | 130 | b secondary_start_kernel |
131 | 131 | ||
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index 626feeec0ade..2e1bf830fe11 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c | |||
@@ -77,6 +77,7 @@ int show_interrupts(struct seq_file *p, void *v) | |||
77 | seq_printf(p, "%3d: ", i); | 77 | seq_printf(p, "%3d: ", i); |
78 | for_each_present_cpu(cpu) | 78 | for_each_present_cpu(cpu) |
79 | seq_printf(p, "%10u ", kstat_cpu(cpu).irqs[i]); | 79 | seq_printf(p, "%10u ", kstat_cpu(cpu).irqs[i]); |
80 | seq_printf(p, " %10s", irq_desc[i].chip->name ? : "-"); | ||
80 | seq_printf(p, " %s", action->name); | 81 | seq_printf(p, " %s", action->name); |
81 | for (action = action->next; action; action = action->next) | 82 | for (action = action->next; action; action = action->next) |
82 | seq_printf(p, ", %s", action->name); | 83 | seq_printf(p, ", %s", action->name); |
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 35a052fc177a..aeeed806f991 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c | |||
@@ -232,11 +232,8 @@ NORET_TYPE void die(const char *str, struct pt_regs *regs, int err) | |||
232 | bust_spinlocks(0); | 232 | bust_spinlocks(0); |
233 | spin_unlock_irq(&die_lock); | 233 | spin_unlock_irq(&die_lock); |
234 | 234 | ||
235 | if (panic_on_oops) { | 235 | if (panic_on_oops) |
236 | printk(KERN_EMERG "Fatal exception: panic in 5 seconds\n"); | ||
237 | ssleep(5); | ||
238 | panic("Fatal exception"); | 236 | panic("Fatal exception"); |
239 | } | ||
240 | 237 | ||
241 | do_exit(SIGSEGV); | 238 | do_exit(SIGSEGV); |
242 | } | 239 | } |
diff --git a/arch/arm/mach-at91rm9200/gpio.c b/arch/arm/mach-at91rm9200/gpio.c index 5783c282ae7b..cec199fd6721 100644 --- a/arch/arm/mach-at91rm9200/gpio.c +++ b/arch/arm/mach-at91rm9200/gpio.c | |||
@@ -327,7 +327,8 @@ static int gpio_irq_type(unsigned pin, unsigned type) | |||
327 | return (type == IRQT_BOTHEDGE) ? 0 : -EINVAL; | 327 | return (type == IRQT_BOTHEDGE) ? 0 : -EINVAL; |
328 | } | 328 | } |
329 | 329 | ||
330 | static struct irqchip gpio_irqchip = { | 330 | static struct irq_chip gpio_irqchip = { |
331 | .name = "GPIO", | ||
331 | .mask = gpio_irq_mask, | 332 | .mask = gpio_irq_mask, |
332 | .unmask = gpio_irq_unmask, | 333 | .unmask = gpio_irq_unmask, |
333 | .set_type = gpio_irq_type, | 334 | .set_type = gpio_irq_type, |
diff --git a/arch/arm/mach-at91rm9200/irq.c b/arch/arm/mach-at91rm9200/irq.c index 9b0911320417..c3a5e777f9f8 100644 --- a/arch/arm/mach-at91rm9200/irq.c +++ b/arch/arm/mach-at91rm9200/irq.c | |||
@@ -114,7 +114,8 @@ void at91_irq_resume(void) | |||
114 | #define at91_aic_set_wake NULL | 114 | #define at91_aic_set_wake NULL |
115 | #endif | 115 | #endif |
116 | 116 | ||
117 | static struct irqchip at91_aic_chip = { | 117 | static struct irq_chip at91_aic_chip = { |
118 | .name = "AIC", | ||
118 | .ack = at91_aic_mask_irq, | 119 | .ack = at91_aic_mask_irq, |
119 | .mask = at91_aic_mask_irq, | 120 | .mask = at91_aic_mask_irq, |
120 | .unmask = at91_aic_unmask_irq, | 121 | .unmask = at91_aic_unmask_irq, |
diff --git a/arch/arm/mach-footbridge/cats-hw.c b/arch/arm/mach-footbridge/cats-hw.c index 5b64d5c5b967..ef6ccc8993e9 100644 --- a/arch/arm/mach-footbridge/cats-hw.c +++ b/arch/arm/mach-footbridge/cats-hw.c | |||
@@ -8,7 +8,7 @@ | |||
8 | #include <linux/ioport.h> | 8 | #include <linux/ioport.h> |
9 | #include <linux/kernel.h> | 9 | #include <linux/kernel.h> |
10 | #include <linux/init.h> | 10 | #include <linux/init.h> |
11 | #include <linux/tty.h> | 11 | #include <linux/screen_info.h> |
12 | 12 | ||
13 | #include <asm/hardware/dec21285.h> | 13 | #include <asm/hardware/dec21285.h> |
14 | #include <asm/io.h> | 14 | #include <asm/io.h> |
diff --git a/arch/arm/mach-imx/irq.c b/arch/arm/mach-imx/irq.c index a5de5f1da9f2..2688bd82c2a2 100644 --- a/arch/arm/mach-imx/irq.c +++ b/arch/arm/mach-imx/irq.c | |||
@@ -204,13 +204,15 @@ imx_gpiod_demux_handler(unsigned int irq_unused, struct irqdesc *desc, | |||
204 | imx_gpio_handler(mask, irq, desc, regs); | 204 | imx_gpio_handler(mask, irq, desc, regs); |
205 | } | 205 | } |
206 | 206 | ||
207 | static struct irqchip imx_internal_chip = { | 207 | static struct irq_chip imx_internal_chip = { |
208 | .name = "MPU", | ||
208 | .ack = imx_mask_irq, | 209 | .ack = imx_mask_irq, |
209 | .mask = imx_mask_irq, | 210 | .mask = imx_mask_irq, |
210 | .unmask = imx_unmask_irq, | 211 | .unmask = imx_unmask_irq, |
211 | }; | 212 | }; |
212 | 213 | ||
213 | static struct irqchip imx_gpio_chip = { | 214 | static struct irq_chip imx_gpio_chip = { |
215 | .name = "GPIO", | ||
214 | .ack = imx_gpio_ack_irq, | 216 | .ack = imx_gpio_ack_irq, |
215 | .mask = imx_gpio_mask_irq, | 217 | .mask = imx_gpio_mask_irq, |
216 | .unmask = imx_gpio_unmask_irq, | 218 | .unmask = imx_gpio_unmask_irq, |
diff --git a/arch/arm/mach-integrator/integrator_ap.c b/arch/arm/mach-integrator/integrator_ap.c index 6d65c96ebfd2..191c57a3b997 100644 --- a/arch/arm/mach-integrator/integrator_ap.c +++ b/arch/arm/mach-integrator/integrator_ap.c | |||
@@ -161,7 +161,8 @@ static void sc_unmask_irq(unsigned int irq) | |||
161 | writel(1 << irq, VA_IC_BASE + IRQ_ENABLE_SET); | 161 | writel(1 << irq, VA_IC_BASE + IRQ_ENABLE_SET); |
162 | } | 162 | } |
163 | 163 | ||
164 | static struct irqchip sc_chip = { | 164 | static struct irq_chip sc_chip = { |
165 | .name = "SC", | ||
165 | .ack = sc_mask_irq, | 166 | .ack = sc_mask_irq, |
166 | .mask = sc_mask_irq, | 167 | .mask = sc_mask_irq, |
167 | .unmask = sc_unmask_irq, | 168 | .unmask = sc_unmask_irq, |
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c index 9f55f5ae1044..678b6ba2b463 100644 --- a/arch/arm/mach-integrator/integrator_cp.c +++ b/arch/arm/mach-integrator/integrator_cp.c | |||
@@ -156,7 +156,8 @@ static void cic_unmask_irq(unsigned int irq) | |||
156 | cic_writel(1 << irq, INTCP_VA_CIC_BASE + IRQ_ENABLE_SET); | 156 | cic_writel(1 << irq, INTCP_VA_CIC_BASE + IRQ_ENABLE_SET); |
157 | } | 157 | } |
158 | 158 | ||
159 | static struct irqchip cic_chip = { | 159 | static struct irq_chip cic_chip = { |
160 | .name = "CIC", | ||
160 | .ack = cic_mask_irq, | 161 | .ack = cic_mask_irq, |
161 | .mask = cic_mask_irq, | 162 | .mask = cic_mask_irq, |
162 | .unmask = cic_unmask_irq, | 163 | .unmask = cic_unmask_irq, |
@@ -174,7 +175,8 @@ static void pic_unmask_irq(unsigned int irq) | |||
174 | pic_writel(1 << irq, INTCP_VA_PIC_BASE + IRQ_ENABLE_SET); | 175 | pic_writel(1 << irq, INTCP_VA_PIC_BASE + IRQ_ENABLE_SET); |
175 | } | 176 | } |
176 | 177 | ||
177 | static struct irqchip pic_chip = { | 178 | static struct irq_chip pic_chip = { |
179 | .name = "PIC", | ||
178 | .ack = pic_mask_irq, | 180 | .ack = pic_mask_irq, |
179 | .mask = pic_mask_irq, | 181 | .mask = pic_mask_irq, |
180 | .unmask = pic_unmask_irq, | 182 | .unmask = pic_unmask_irq, |
@@ -192,7 +194,8 @@ static void sic_unmask_irq(unsigned int irq) | |||
192 | sic_writel(1 << irq, INTCP_VA_SIC_BASE + IRQ_ENABLE_SET); | 194 | sic_writel(1 << irq, INTCP_VA_SIC_BASE + IRQ_ENABLE_SET); |
193 | } | 195 | } |
194 | 196 | ||
195 | static struct irqchip sic_chip = { | 197 | static struct irq_chip sic_chip = { |
198 | .name = "SIC", | ||
196 | .ack = sic_mask_irq, | 199 | .ack = sic_mask_irq, |
197 | .mask = sic_mask_irq, | 200 | .mask = sic_mask_irq, |
198 | .unmask = sic_unmask_irq, | 201 | .unmask = sic_unmask_irq, |
diff --git a/arch/arm/mach-iop3xx/iop321-irq.c b/arch/arm/mach-iop3xx/iop321-irq.c index d42aae6aef03..88ac333472c8 100644 --- a/arch/arm/mach-iop3xx/iop321-irq.c +++ b/arch/arm/mach-iop3xx/iop321-irq.c | |||
@@ -52,7 +52,8 @@ iop321_irq_unmask (unsigned int irq) | |||
52 | intctl_write(iop321_mask); | 52 | intctl_write(iop321_mask); |
53 | } | 53 | } |
54 | 54 | ||
55 | struct irqchip ext_chip = { | 55 | struct irq_chip ext_chip = { |
56 | .name = "IOP", | ||
56 | .ack = iop321_irq_mask, | 57 | .ack = iop321_irq_mask, |
57 | .mask = iop321_irq_mask, | 58 | .mask = iop321_irq_mask, |
58 | .unmask = iop321_irq_unmask, | 59 | .unmask = iop321_irq_unmask, |
diff --git a/arch/arm/mach-iop3xx/iop331-irq.c b/arch/arm/mach-iop3xx/iop331-irq.c index f4d4321737a4..cab11722ced2 100644 --- a/arch/arm/mach-iop3xx/iop331-irq.c +++ b/arch/arm/mach-iop3xx/iop331-irq.c | |||
@@ -77,13 +77,15 @@ iop331_irq_unmask2(unsigned int irq) | |||
77 | intctl_write1(iop331_mask1); | 77 | intctl_write1(iop331_mask1); |
78 | } | 78 | } |
79 | 79 | ||
80 | struct irqchip iop331_irqchip1 = { | 80 | struct irq_chip iop331_irqchip1 = { |
81 | .name = "IOP-1", | ||
81 | .ack = iop331_irq_mask1, | 82 | .ack = iop331_irq_mask1, |
82 | .mask = iop331_irq_mask1, | 83 | .mask = iop331_irq_mask1, |
83 | .unmask = iop331_irq_unmask1, | 84 | .unmask = iop331_irq_unmask1, |
84 | }; | 85 | }; |
85 | 86 | ||
86 | struct irqchip iop331_irqchip2 = { | 87 | struct irq_chip iop331_irqchip2 = { |
88 | .name = "IOP-2", | ||
87 | .ack = iop331_irq_mask2, | 89 | .ack = iop331_irq_mask2, |
88 | .mask = iop331_irq_mask2, | 90 | .mask = iop331_irq_mask2, |
89 | .unmask = iop331_irq_unmask2, | 91 | .unmask = iop331_irq_unmask2, |
diff --git a/arch/arm/mach-ixp4xx/common-pci.c b/arch/arm/mach-ixp4xx/common-pci.c index 2d40fe1145f0..9562177b5fe1 100644 --- a/arch/arm/mach-ixp4xx/common-pci.c +++ b/arch/arm/mach-ixp4xx/common-pci.c | |||
@@ -532,8 +532,6 @@ pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask) | |||
532 | return -EIO; | 532 | return -EIO; |
533 | } | 533 | } |
534 | 534 | ||
535 | EXPORT_SYMBOL(pci_set_dma_mask); | ||
536 | EXPORT_SYMBOL(pci_set_consistent_dma_mask); | ||
537 | EXPORT_SYMBOL(ixp4xx_pci_read); | 535 | EXPORT_SYMBOL(ixp4xx_pci_read); |
538 | EXPORT_SYMBOL(ixp4xx_pci_write); | 536 | EXPORT_SYMBOL(ixp4xx_pci_write); |
539 | 537 | ||
diff --git a/arch/arm/mach-ixp4xx/gtwx5715-setup.c b/arch/arm/mach-ixp4xx/gtwx5715-setup.c index 654e2eed81fb..30f1300e0e21 100644 --- a/arch/arm/mach-ixp4xx/gtwx5715-setup.c +++ b/arch/arm/mach-ixp4xx/gtwx5715-setup.c | |||
@@ -107,9 +107,9 @@ static struct flash_platform_data gtwx5715_flash_data = { | |||
107 | .width = 2, | 107 | .width = 2, |
108 | }; | 108 | }; |
109 | 109 | ||
110 | static struct gtw5715_flash_resource = { | 110 | static struct resource gtwx5715_flash_resource = { |
111 | .flags = IORESOURCE_MEM, | 111 | .flags = IORESOURCE_MEM, |
112 | } | 112 | }; |
113 | 113 | ||
114 | static struct platform_device gtwx5715_flash = { | 114 | static struct platform_device gtwx5715_flash = { |
115 | .name = "IXP4XX-Flash", | 115 | .name = "IXP4XX-Flash", |
@@ -130,9 +130,6 @@ static void __init gtwx5715_init(void) | |||
130 | { | 130 | { |
131 | ixp4xx_sys_init(); | 131 | ixp4xx_sys_init(); |
132 | 132 | ||
133 | if (!flash_resource) | ||
134 | printk(KERN_ERR "Could not allocate flash resource\n"); | ||
135 | |||
136 | gtwx5715_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); | 133 | gtwx5715_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); |
137 | gtwx5715_flash_resource.end = IXP4XX_EXP_BUS_BASE(0) + SZ_8M - 1; | 134 | gtwx5715_flash_resource.end = IXP4XX_EXP_BUS_BASE(0) + SZ_8M - 1; |
138 | 135 | ||
diff --git a/arch/arm/mach-lh7a40x/arch-kev7a400.c b/arch/arm/mach-lh7a40x/arch-kev7a400.c index 2cccc27c62e4..4f2ab48800a5 100644 --- a/arch/arm/mach-lh7a40x/arch-kev7a400.c +++ b/arch/arm/mach-lh7a40x/arch-kev7a400.c | |||
@@ -63,7 +63,8 @@ static void kev7a400_unmask_cpld_irq (u32 irq) | |||
63 | CPLD_WR_PB_INT_MASK = CPLD_IRQ_mask; | 63 | CPLD_WR_PB_INT_MASK = CPLD_IRQ_mask; |
64 | } | 64 | } |
65 | 65 | ||
66 | static struct irqchip kev7a400_cpld_chip = { | 66 | static struct irq_chip kev7a400_cpld_chip = { |
67 | .name = "CPLD", | ||
67 | .ack = kev7a400_ack_cpld_irq, | 68 | .ack = kev7a400_ack_cpld_irq, |
68 | .mask = kev7a400_mask_cpld_irq, | 69 | .mask = kev7a400_mask_cpld_irq, |
69 | .unmask = kev7a400_unmask_cpld_irq, | 70 | .unmask = kev7a400_unmask_cpld_irq, |
diff --git a/arch/arm/mach-lh7a40x/arch-lpd7a40x.c b/arch/arm/mach-lh7a40x/arch-lpd7a40x.c index 35c3606a2079..a6910114b24c 100644 --- a/arch/arm/mach-lh7a40x/arch-lpd7a40x.c +++ b/arch/arm/mach-lh7a40x/arch-lpd7a40x.c | |||
@@ -200,7 +200,8 @@ static void lh7a40x_unmask_cpld_irq (u32 irq) | |||
200 | } | 200 | } |
201 | } | 201 | } |
202 | 202 | ||
203 | static struct irqchip lpd7a40x_cpld_chip = { | 203 | static struct irq_chip lpd7a40x_cpld_chip = { |
204 | .name = "CPLD", | ||
204 | .ack = lh7a40x_ack_cpld_irq, | 205 | .ack = lh7a40x_ack_cpld_irq, |
205 | .mask = lh7a40x_mask_cpld_irq, | 206 | .mask = lh7a40x_mask_cpld_irq, |
206 | .unmask = lh7a40x_unmask_cpld_irq, | 207 | .unmask = lh7a40x_unmask_cpld_irq, |
diff --git a/arch/arm/mach-lh7a40x/irq-kev7a400.c b/arch/arm/mach-lh7a40x/irq-kev7a400.c index 8535764d89ca..f9b3fe9174a5 100644 --- a/arch/arm/mach-lh7a40x/irq-kev7a400.c +++ b/arch/arm/mach-lh7a40x/irq-kev7a400.c | |||
@@ -43,7 +43,8 @@ lh7a400_unmask_cpld_irq (u32 irq) | |||
43 | } | 43 | } |
44 | 44 | ||
45 | static struct | 45 | static struct |
46 | irqchip lh7a400_cpld_chip = { | 46 | irq_chip lh7a400_cpld_chip = { |
47 | .name = "CPLD", | ||
47 | .ack = lh7a400_ack_cpld_irq, | 48 | .ack = lh7a400_ack_cpld_irq, |
48 | .mask = lh7a400_mask_cpld_irq, | 49 | .mask = lh7a400_mask_cpld_irq, |
49 | .unmask = lh7a400_unmask_cpld_irq, | 50 | .unmask = lh7a400_unmask_cpld_irq, |
diff --git a/arch/arm/mach-lh7a40x/irq-lh7a400.c b/arch/arm/mach-lh7a40x/irq-lh7a400.c index f9fdefef6d6f..091b2dc58d25 100644 --- a/arch/arm/mach-lh7a40x/irq-lh7a400.c +++ b/arch/arm/mach-lh7a40x/irq-lh7a400.c | |||
@@ -38,13 +38,15 @@ static void lh7a400_ack_gpio_irq (u32 irq) | |||
38 | INTC_INTENC = (1 << irq); | 38 | INTC_INTENC = (1 << irq); |
39 | } | 39 | } |
40 | 40 | ||
41 | static struct irqchip lh7a400_internal_chip = { | 41 | static struct irq_chip lh7a400_internal_chip = { |
42 | .name = "MPU", | ||
42 | .ack = lh7a400_mask_irq, /* Level triggering -> mask is ack */ | 43 | .ack = lh7a400_mask_irq, /* Level triggering -> mask is ack */ |
43 | .mask = lh7a400_mask_irq, | 44 | .mask = lh7a400_mask_irq, |
44 | .unmask = lh7a400_unmask_irq, | 45 | .unmask = lh7a400_unmask_irq, |
45 | }; | 46 | }; |
46 | 47 | ||
47 | static struct irqchip lh7a400_gpio_chip = { | 48 | static struct irq_chip lh7a400_gpio_chip = { |
49 | .name = "GPIO", | ||
48 | .ack = lh7a400_ack_gpio_irq, | 50 | .ack = lh7a400_ack_gpio_irq, |
49 | .mask = lh7a400_mask_irq, | 51 | .mask = lh7a400_mask_irq, |
50 | .unmask = lh7a400_unmask_irq, | 52 | .unmask = lh7a400_unmask_irq, |
diff --git a/arch/arm/mach-lh7a40x/irq-lh7a404.c b/arch/arm/mach-lh7a40x/irq-lh7a404.c index 2685a81454d2..7059b983724f 100644 --- a/arch/arm/mach-lh7a40x/irq-lh7a404.c +++ b/arch/arm/mach-lh7a40x/irq-lh7a404.c | |||
@@ -76,25 +76,29 @@ static void lh7a404_vic2_ack_gpio_irq (u32 irq) | |||
76 | VIC2_INTENCLR = (1 << irq); | 76 | VIC2_INTENCLR = (1 << irq); |
77 | } | 77 | } |
78 | 78 | ||
79 | static struct irqchip lh7a404_vic1_chip = { | 79 | static struct irq_chip lh7a404_vic1_chip = { |
80 | .name = "VIC1", | ||
80 | .ack = lh7a404_vic1_mask_irq, /* Because level-triggered */ | 81 | .ack = lh7a404_vic1_mask_irq, /* Because level-triggered */ |
81 | .mask = lh7a404_vic1_mask_irq, | 82 | .mask = lh7a404_vic1_mask_irq, |
82 | .unmask = lh7a404_vic1_unmask_irq, | 83 | .unmask = lh7a404_vic1_unmask_irq, |
83 | }; | 84 | }; |
84 | 85 | ||
85 | static struct irqchip lh7a404_vic2_chip = { | 86 | static struct irq_chip lh7a404_vic2_chip = { |
87 | .name = "VIC2", | ||
86 | .ack = lh7a404_vic2_mask_irq, /* Because level-triggered */ | 88 | .ack = lh7a404_vic2_mask_irq, /* Because level-triggered */ |
87 | .mask = lh7a404_vic2_mask_irq, | 89 | .mask = lh7a404_vic2_mask_irq, |
88 | .unmask = lh7a404_vic2_unmask_irq, | 90 | .unmask = lh7a404_vic2_unmask_irq, |
89 | }; | 91 | }; |
90 | 92 | ||
91 | static struct irqchip lh7a404_gpio_vic1_chip = { | 93 | static struct irq_chip lh7a404_gpio_vic1_chip = { |
94 | .name = "GPIO-VIC1", | ||
92 | .ack = lh7a404_vic1_ack_gpio_irq, | 95 | .ack = lh7a404_vic1_ack_gpio_irq, |
93 | .mask = lh7a404_vic1_mask_irq, | 96 | .mask = lh7a404_vic1_mask_irq, |
94 | .unmask = lh7a404_vic1_unmask_irq, | 97 | .unmask = lh7a404_vic1_unmask_irq, |
95 | }; | 98 | }; |
96 | 99 | ||
97 | static struct irqchip lh7a404_gpio_vic2_chip = { | 100 | static struct irq_chip lh7a404_gpio_vic2_chip = { |
101 | .name = "GPIO-VIC2", | ||
98 | .ack = lh7a404_vic2_ack_gpio_irq, | 102 | .ack = lh7a404_vic2_ack_gpio_irq, |
99 | .mask = lh7a404_vic2_mask_irq, | 103 | .mask = lh7a404_vic2_mask_irq, |
100 | .unmask = lh7a404_vic2_unmask_irq, | 104 | .unmask = lh7a404_vic2_unmask_irq, |
diff --git a/arch/arm/mach-lh7a40x/irq-lpd7a40x.c b/arch/arm/mach-lh7a40x/irq-lpd7a40x.c index dcb4e17b9419..d6055dde6468 100644 --- a/arch/arm/mach-lh7a40x/irq-lpd7a40x.c +++ b/arch/arm/mach-lh7a40x/irq-lpd7a40x.c | |||
@@ -50,7 +50,8 @@ static void lh7a40x_unmask_cpld_irq (u32 irq) | |||
50 | } | 50 | } |
51 | } | 51 | } |
52 | 52 | ||
53 | static struct irqchip lh7a40x_cpld_chip = { | 53 | static struct irq_chip lh7a40x_cpld_chip = { |
54 | .name = "CPLD", | ||
54 | .ack = lh7a40x_ack_cpld_irq, | 55 | .ack = lh7a40x_ack_cpld_irq, |
55 | .mask = lh7a40x_mask_cpld_irq, | 56 | .mask = lh7a40x_mask_cpld_irq, |
56 | .unmask = lh7a40x_unmask_cpld_irq, | 57 | .unmask = lh7a40x_unmask_cpld_irq, |
diff --git a/arch/arm/mach-omap1/fpga.c b/arch/arm/mach-omap1/fpga.c index 34eb79ee6e61..efe9bfc6e55f 100644 --- a/arch/arm/mach-omap1/fpga.c +++ b/arch/arm/mach-omap1/fpga.c | |||
@@ -106,14 +106,16 @@ void innovator_fpga_IRQ_demux(unsigned int irq, struct irqdesc *desc, | |||
106 | } | 106 | } |
107 | } | 107 | } |
108 | 108 | ||
109 | static struct irqchip omap_fpga_irq_ack = { | 109 | static struct irq_chip omap_fpga_irq_ack = { |
110 | .name = "FPGA-ack", | ||
110 | .ack = fpga_mask_ack_irq, | 111 | .ack = fpga_mask_ack_irq, |
111 | .mask = fpga_mask_irq, | 112 | .mask = fpga_mask_irq, |
112 | .unmask = fpga_unmask_irq, | 113 | .unmask = fpga_unmask_irq, |
113 | }; | 114 | }; |
114 | 115 | ||
115 | 116 | ||
116 | static struct irqchip omap_fpga_irq = { | 117 | static struct irq_chip omap_fpga_irq = { |
118 | .name = "FPGA", | ||
117 | .ack = fpga_ack_irq, | 119 | .ack = fpga_ack_irq, |
118 | .mask = fpga_mask_irq, | 120 | .mask = fpga_mask_irq, |
119 | .unmask = fpga_unmask_irq, | 121 | .unmask = fpga_unmask_irq, |
diff --git a/arch/arm/mach-omap1/irq.c b/arch/arm/mach-omap1/irq.c index 9e039845b50e..3ea140bb9eba 100644 --- a/arch/arm/mach-omap1/irq.c +++ b/arch/arm/mach-omap1/irq.c | |||
@@ -168,7 +168,8 @@ static struct omap_irq_bank omap1610_irq_banks[] = { | |||
168 | }; | 168 | }; |
169 | #endif | 169 | #endif |
170 | 170 | ||
171 | static struct irqchip omap_irq_chip = { | 171 | static struct irq_chip omap_irq_chip = { |
172 | .name = "MPU", | ||
172 | .ack = omap_mask_ack_irq, | 173 | .ack = omap_mask_ack_irq, |
173 | .mask = omap_mask_irq, | 174 | .mask = omap_mask_irq, |
174 | .unmask = omap_unmask_irq, | 175 | .unmask = omap_unmask_irq, |
diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c index 3eed6a737bf8..dfc3b35cc1ff 100644 --- a/arch/arm/mach-omap2/irq.c +++ b/arch/arm/mach-omap2/irq.c | |||
@@ -94,7 +94,8 @@ static void omap_mask_ack_irq(unsigned int irq) | |||
94 | omap_ack_irq(irq); | 94 | omap_ack_irq(irq); |
95 | } | 95 | } |
96 | 96 | ||
97 | static struct irqchip omap_irq_chip = { | 97 | static struct irq_chip omap_irq_chip = { |
98 | .name = "INTC", | ||
98 | .ack = omap_mask_ack_irq, | 99 | .ack = omap_mask_ack_irq, |
99 | .mask = omap_mask_irq, | 100 | .mask = omap_mask_irq, |
100 | .unmask = omap_unmask_irq, | 101 | .unmask = omap_unmask_irq, |
diff --git a/arch/arm/mach-pxa/irq.c b/arch/arm/mach-pxa/irq.c index d9635ff4b10c..12141e2a50cc 100644 --- a/arch/arm/mach-pxa/irq.c +++ b/arch/arm/mach-pxa/irq.c | |||
@@ -39,7 +39,8 @@ static void pxa_unmask_low_irq(unsigned int irq) | |||
39 | ICMR |= (1 << (irq + PXA_IRQ_SKIP)); | 39 | ICMR |= (1 << (irq + PXA_IRQ_SKIP)); |
40 | } | 40 | } |
41 | 41 | ||
42 | static struct irqchip pxa_internal_chip_low = { | 42 | static struct irq_chip pxa_internal_chip_low = { |
43 | .name = "SC", | ||
43 | .ack = pxa_mask_low_irq, | 44 | .ack = pxa_mask_low_irq, |
44 | .mask = pxa_mask_low_irq, | 45 | .mask = pxa_mask_low_irq, |
45 | .unmask = pxa_unmask_low_irq, | 46 | .unmask = pxa_unmask_low_irq, |
@@ -61,7 +62,8 @@ static void pxa_unmask_high_irq(unsigned int irq) | |||
61 | ICMR2 |= (1 << (irq - 32 + PXA_IRQ_SKIP)); | 62 | ICMR2 |= (1 << (irq - 32 + PXA_IRQ_SKIP)); |
62 | } | 63 | } |
63 | 64 | ||
64 | static struct irqchip pxa_internal_chip_high = { | 65 | static struct irq_chip pxa_internal_chip_high = { |
66 | .name = "SC-hi", | ||
65 | .ack = pxa_mask_high_irq, | 67 | .ack = pxa_mask_high_irq, |
66 | .mask = pxa_mask_high_irq, | 68 | .mask = pxa_mask_high_irq, |
67 | .unmask = pxa_unmask_high_irq, | 69 | .unmask = pxa_unmask_high_irq, |
@@ -129,7 +131,8 @@ static void pxa_ack_low_gpio(unsigned int irq) | |||
129 | GEDR0 = (1 << (irq - IRQ_GPIO0)); | 131 | GEDR0 = (1 << (irq - IRQ_GPIO0)); |
130 | } | 132 | } |
131 | 133 | ||
132 | static struct irqchip pxa_low_gpio_chip = { | 134 | static struct irq_chip pxa_low_gpio_chip = { |
135 | .name = "GPIO-l", | ||
133 | .ack = pxa_ack_low_gpio, | 136 | .ack = pxa_ack_low_gpio, |
134 | .mask = pxa_mask_low_irq, | 137 | .mask = pxa_mask_low_irq, |
135 | .unmask = pxa_unmask_low_irq, | 138 | .unmask = pxa_unmask_low_irq, |
@@ -237,7 +240,8 @@ static void pxa_unmask_muxed_gpio(unsigned int irq) | |||
237 | GFER(gpio) = GPIO_IRQ_falling_edge[idx] & GPIO_IRQ_mask[idx]; | 240 | GFER(gpio) = GPIO_IRQ_falling_edge[idx] & GPIO_IRQ_mask[idx]; |
238 | } | 241 | } |
239 | 242 | ||
240 | static struct irqchip pxa_muxed_gpio_chip = { | 243 | static struct irq_chip pxa_muxed_gpio_chip = { |
244 | .name = "GPIO", | ||
241 | .ack = pxa_ack_muxed_gpio, | 245 | .ack = pxa_ack_muxed_gpio, |
242 | .mask = pxa_mask_muxed_gpio, | 246 | .mask = pxa_mask_muxed_gpio, |
243 | .unmask = pxa_unmask_muxed_gpio, | 247 | .unmask = pxa_unmask_muxed_gpio, |
diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c index 1a5f5c21481e..12479ae26db2 100644 --- a/arch/arm/mach-pxa/lpd270.c +++ b/arch/arm/mach-pxa/lpd270.c | |||
@@ -68,7 +68,8 @@ static void lpd270_unmask_irq(unsigned int irq) | |||
68 | __raw_writew(lpd270_irq_enabled, LPD270_INT_MASK); | 68 | __raw_writew(lpd270_irq_enabled, LPD270_INT_MASK); |
69 | } | 69 | } |
70 | 70 | ||
71 | static struct irqchip lpd270_irq_chip = { | 71 | static struct irq_chip lpd270_irq_chip = { |
72 | .name = "CPLD", | ||
72 | .ack = lpd270_mask_irq, | 73 | .ack = lpd270_mask_irq, |
73 | .mask = lpd270_mask_irq, | 74 | .mask = lpd270_mask_irq, |
74 | .unmask = lpd270_unmask_irq, | 75 | .unmask = lpd270_unmask_irq, |
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c index 6a9a669d60de..83ff5cee64d9 100644 --- a/arch/arm/mach-pxa/lubbock.c +++ b/arch/arm/mach-pxa/lubbock.c | |||
@@ -78,7 +78,8 @@ static void lubbock_unmask_irq(unsigned int irq) | |||
78 | LUB_IRQ_MASK_EN = (lubbock_irq_enabled |= (1 << lubbock_irq)); | 78 | LUB_IRQ_MASK_EN = (lubbock_irq_enabled |= (1 << lubbock_irq)); |
79 | } | 79 | } |
80 | 80 | ||
81 | static struct irqchip lubbock_irq_chip = { | 81 | static struct irq_chip lubbock_irq_chip = { |
82 | .name = "FPGA", | ||
82 | .ack = lubbock_mask_irq, | 83 | .ack = lubbock_mask_irq, |
83 | .mask = lubbock_mask_irq, | 84 | .mask = lubbock_mask_irq, |
84 | .unmask = lubbock_unmask_irq, | 85 | .unmask = lubbock_unmask_irq, |
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c index 21ddf3de2f6e..a7e9b96f258a 100644 --- a/arch/arm/mach-pxa/mainstone.c +++ b/arch/arm/mach-pxa/mainstone.c | |||
@@ -64,7 +64,8 @@ static void mainstone_unmask_irq(unsigned int irq) | |||
64 | MST_INTMSKENA = (mainstone_irq_enabled |= (1 << mainstone_irq)); | 64 | MST_INTMSKENA = (mainstone_irq_enabled |= (1 << mainstone_irq)); |
65 | } | 65 | } |
66 | 66 | ||
67 | static struct irqchip mainstone_irq_chip = { | 67 | static struct irq_chip mainstone_irq_chip = { |
68 | .name = "FPGA", | ||
68 | .ack = mainstone_mask_irq, | 69 | .ack = mainstone_mask_irq, |
69 | .mask = mainstone_mask_irq, | 70 | .mask = mainstone_mask_irq, |
70 | .unmask = mainstone_unmask_irq, | 71 | .unmask = mainstone_unmask_irq, |
diff --git a/arch/arm/mach-s3c2410/Makefile b/arch/arm/mach-s3c2410/Makefile index 0c7938645df6..273e05f2b8de 100644 --- a/arch/arm/mach-s3c2410/Makefile +++ b/arch/arm/mach-s3c2410/Makefile | |||
@@ -10,45 +10,47 @@ obj-m := | |||
10 | obj-n := | 10 | obj-n := |
11 | obj- := | 11 | obj- := |
12 | 12 | ||
13 | # DMA | ||
14 | obj-$(CONFIG_S3C2410_DMA) += dma.o | ||
15 | |||
13 | # S3C2400 support files | 16 | # S3C2400 support files |
14 | obj-$(CONFIG_CPU_S3C2400) += s3c2400-gpio.o | 17 | obj-$(CONFIG_CPU_S3C2400) += s3c2400-gpio.o |
15 | 18 | ||
16 | # S3C2410 support files | 19 | # S3C2410 support files |
17 | 20 | ||
18 | obj-$(CONFIG_CPU_S3C2410) += s3c2410.o | 21 | obj-$(CONFIG_CPU_S3C2410) += s3c2410.o |
19 | obj-$(CONFIG_CPU_S3C2410) += s3c2410-gpio.o | 22 | obj-$(CONFIG_CPU_S3C2410) += s3c2410-gpio.o |
20 | obj-$(CONFIG_S3C2410_DMA) += dma.o | ||
21 | 23 | ||
22 | # Power Management support | 24 | # Power Management support |
23 | 25 | ||
24 | obj-$(CONFIG_PM) += pm.o sleep.o | 26 | obj-$(CONFIG_PM) += pm.o sleep.o |
25 | obj-$(CONFIG_PM_SIMTEC) += pm-simtec.o | 27 | obj-$(CONFIG_PM_SIMTEC) += pm-simtec.o |
26 | 28 | ||
27 | # S3C2412 support | 29 | # S3C2412 support |
28 | obj-$(CONFIG_CPU_S3C2412) += s3c2412.o | 30 | obj-$(CONFIG_CPU_S3C2412) += s3c2412.o |
29 | obj-$(CONFIG_CPU_S3C2412) += s3c2412-clock.o | 31 | obj-$(CONFIG_CPU_S3C2412) += s3c2412-clock.o |
30 | 32 | ||
31 | # | 33 | # |
32 | # S3C244X support | 34 | # S3C244X support |
33 | 35 | ||
34 | obj-$(CONFIG_CPU_S3C244X) += s3c244x.o | 36 | obj-$(CONFIG_CPU_S3C244X) += s3c244x.o |
35 | obj-$(CONFIG_CPU_S3C244X) += s3c244x-irq.o | 37 | obj-$(CONFIG_CPU_S3C244X) += s3c244x-irq.o |
36 | 38 | ||
37 | # Clock control | 39 | # Clock control |
38 | 40 | ||
39 | obj-$(CONFIG_S3C2410_CLOCK) += s3c2410-clock.o | 41 | obj-$(CONFIG_S3C2410_CLOCK) += s3c2410-clock.o |
40 | 42 | ||
41 | # S3C2440 support | 43 | # S3C2440 support |
42 | 44 | ||
43 | obj-$(CONFIG_CPU_S3C2440) += s3c2440.o s3c2440-dsc.o | 45 | obj-$(CONFIG_CPU_S3C2440) += s3c2440.o s3c2440-dsc.o |
44 | obj-$(CONFIG_CPU_S3C2440) += s3c2440-irq.o | 46 | obj-$(CONFIG_CPU_S3C2440) += s3c2440-irq.o |
45 | obj-$(CONFIG_CPU_S3C2440) += s3c2440-clock.o | 47 | obj-$(CONFIG_CPU_S3C2440) += s3c2440-clock.o |
46 | obj-$(CONFIG_CPU_S3C2440) += s3c2410-gpio.o | 48 | obj-$(CONFIG_CPU_S3C2440) += s3c2410-gpio.o |
47 | 49 | ||
48 | # S3C2442 support | 50 | # S3C2442 support |
49 | 51 | ||
50 | obj-$(CONFIG_CPU_S3C2442) += s3c2442.o | 52 | obj-$(CONFIG_CPU_S3C2442) += s3c2442.o |
51 | obj-$(CONFIG_CPU_S3C2442) += s3c2442-clock.o | 53 | obj-$(CONFIG_CPU_S3C2442) += s3c2442-clock.o |
52 | 54 | ||
53 | # bast extras | 55 | # bast extras |
54 | 56 | ||
diff --git a/arch/arm/mach-s3c2410/dma.c b/arch/arm/mach-s3c2410/dma.c index 094cc52745c5..25855452fe8c 100644 --- a/arch/arm/mach-s3c2410/dma.c +++ b/arch/arm/mach-s3c2410/dma.c | |||
@@ -112,7 +112,7 @@ dmadbg_capture(s3c2410_dma_chan_t *chan, struct s3c2410_dma_regstate *regs) | |||
112 | } | 112 | } |
113 | 113 | ||
114 | static void | 114 | static void |
115 | dmadbg_showregs(const char *fname, int line, s3c2410_dma_chan_t *chan, | 115 | dmadbg_dumpregs(const char *fname, int line, s3c2410_dma_chan_t *chan, |
116 | struct s3c2410_dma_regstate *regs) | 116 | struct s3c2410_dma_regstate *regs) |
117 | { | 117 | { |
118 | printk(KERN_DEBUG "dma%d: %s:%d: DCSRC=%08lx, DISRC=%08lx, DSTAT=%08lx DMT=%02lx, DCON=%08lx\n", | 118 | printk(KERN_DEBUG "dma%d: %s:%d: DCSRC=%08lx, DISRC=%08lx, DSTAT=%08lx DMT=%02lx, DCON=%08lx\n", |
@@ -132,7 +132,16 @@ dmadbg_showchan(const char *fname, int line, s3c2410_dma_chan_t *chan) | |||
132 | chan->number, fname, line, chan->load_state, | 132 | chan->number, fname, line, chan->load_state, |
133 | chan->curr, chan->next, chan->end); | 133 | chan->curr, chan->next, chan->end); |
134 | 134 | ||
135 | dmadbg_showregs(fname, line, chan, &state); | 135 | dmadbg_dumpregs(fname, line, chan, &state); |
136 | } | ||
137 | |||
138 | static void | ||
139 | dmadbg_showregs(const char *fname, int line, s3c2410_dma_chan_t *chan) | ||
140 | { | ||
141 | struct s3c2410_dma_regstate state; | ||
142 | |||
143 | dmadbg_capture(chan, &state); | ||
144 | dmadbg_dumpregs(fname, line, chan, &state); | ||
136 | } | 145 | } |
137 | 146 | ||
138 | #define dbg_showregs(chan) dmadbg_showregs(__FUNCTION__, __LINE__, (chan)) | 147 | #define dbg_showregs(chan) dmadbg_showregs(__FUNCTION__, __LINE__, (chan)) |
@@ -253,10 +262,14 @@ s3c2410_dma_loadbuffer(s3c2410_dma_chan_t *chan, | |||
253 | buf->next); | 262 | buf->next); |
254 | reload = (buf->next == NULL) ? S3C2410_DCON_NORELOAD : 0; | 263 | reload = (buf->next == NULL) ? S3C2410_DCON_NORELOAD : 0; |
255 | } else { | 264 | } else { |
256 | pr_debug("load_state is %d => autoreload\n", chan->load_state); | 265 | //pr_debug("load_state is %d => autoreload\n", chan->load_state); |
257 | reload = S3C2410_DCON_AUTORELOAD; | 266 | reload = S3C2410_DCON_AUTORELOAD; |
258 | } | 267 | } |
259 | 268 | ||
269 | if ((buf->data & 0xf0000000) != 0x30000000) { | ||
270 | dmawarn("dmaload: buffer is %p\n", (void *)buf->data); | ||
271 | } | ||
272 | |||
260 | writel(buf->data, chan->addr_reg); | 273 | writel(buf->data, chan->addr_reg); |
261 | 274 | ||
262 | dma_wrreg(chan, S3C2410_DMA_DCON, | 275 | dma_wrreg(chan, S3C2410_DMA_DCON, |
@@ -370,7 +383,7 @@ static int s3c2410_dma_start(s3c2410_dma_chan_t *chan) | |||
370 | tmp |= S3C2410_DMASKTRIG_ON; | 383 | tmp |= S3C2410_DMASKTRIG_ON; |
371 | dma_wrreg(chan, S3C2410_DMA_DMASKTRIG, tmp); | 384 | dma_wrreg(chan, S3C2410_DMA_DMASKTRIG, tmp); |
372 | 385 | ||
373 | pr_debug("wrote %08lx to DMASKTRIG\n", tmp); | 386 | pr_debug("dma%d: %08lx to DMASKTRIG\n", chan->number, tmp); |
374 | 387 | ||
375 | #if 0 | 388 | #if 0 |
376 | /* the dma buffer loads should take care of clearing the AUTO | 389 | /* the dma buffer loads should take care of clearing the AUTO |
@@ -384,7 +397,30 @@ static int s3c2410_dma_start(s3c2410_dma_chan_t *chan) | |||
384 | 397 | ||
385 | dbg_showchan(chan); | 398 | dbg_showchan(chan); |
386 | 399 | ||
400 | /* if we've only loaded one buffer onto the channel, then chec | ||
401 | * to see if we have another, and if so, try and load it so when | ||
402 | * the first buffer is finished, the new one will be loaded onto | ||
403 | * the channel */ | ||
404 | |||
405 | if (chan->next != NULL) { | ||
406 | if (chan->load_state == S3C2410_DMALOAD_1LOADED) { | ||
407 | |||
408 | if (s3c2410_dma_waitforload(chan, __LINE__) == 0) { | ||
409 | pr_debug("%s: buff not yet loaded, no more todo\n", | ||
410 | __FUNCTION__); | ||
411 | } else { | ||
412 | chan->load_state = S3C2410_DMALOAD_1RUNNING; | ||
413 | s3c2410_dma_loadbuffer(chan, chan->next); | ||
414 | } | ||
415 | |||
416 | } else if (chan->load_state == S3C2410_DMALOAD_1RUNNING) { | ||
417 | s3c2410_dma_loadbuffer(chan, chan->next); | ||
418 | } | ||
419 | } | ||
420 | |||
421 | |||
387 | local_irq_restore(flags); | 422 | local_irq_restore(flags); |
423 | |||
388 | return 0; | 424 | return 0; |
389 | } | 425 | } |
390 | 426 | ||
@@ -436,12 +472,11 @@ int s3c2410_dma_enqueue(unsigned int channel, void *id, | |||
436 | buf = kmem_cache_alloc(dma_kmem, GFP_ATOMIC); | 472 | buf = kmem_cache_alloc(dma_kmem, GFP_ATOMIC); |
437 | if (buf == NULL) { | 473 | if (buf == NULL) { |
438 | pr_debug("%s: out of memory (%ld alloc)\n", | 474 | pr_debug("%s: out of memory (%ld alloc)\n", |
439 | __FUNCTION__, sizeof(*buf)); | 475 | __FUNCTION__, (long)sizeof(*buf)); |
440 | return -ENOMEM; | 476 | return -ENOMEM; |
441 | } | 477 | } |
442 | 478 | ||
443 | pr_debug("%s: new buffer %p\n", __FUNCTION__, buf); | 479 | //pr_debug("%s: new buffer %p\n", __FUNCTION__, buf); |
444 | |||
445 | //dbg_showchan(chan); | 480 | //dbg_showchan(chan); |
446 | 481 | ||
447 | buf->next = NULL; | 482 | buf->next = NULL; |
@@ -537,14 +572,20 @@ s3c2410_dma_lastxfer(s3c2410_dma_chan_t *chan) | |||
537 | case S3C2410_DMALOAD_1LOADED: | 572 | case S3C2410_DMALOAD_1LOADED: |
538 | if (s3c2410_dma_waitforload(chan, __LINE__) == 0) { | 573 | if (s3c2410_dma_waitforload(chan, __LINE__) == 0) { |
539 | /* flag error? */ | 574 | /* flag error? */ |
540 | printk(KERN_ERR "dma%d: timeout waiting for load\n", | 575 | printk(KERN_ERR "dma%d: timeout waiting for load (%s)\n", |
541 | chan->number); | 576 | chan->number, __FUNCTION__); |
542 | return; | 577 | return; |
543 | } | 578 | } |
544 | break; | 579 | break; |
545 | 580 | ||
581 | case S3C2410_DMALOAD_1LOADED_1RUNNING: | ||
582 | /* I belive in this case we do not have anything to do | ||
583 | * until the next buffer comes along, and we turn off the | ||
584 | * reload */ | ||
585 | return; | ||
586 | |||
546 | default: | 587 | default: |
547 | pr_debug("dma%d: lastxfer: unhandled load_state %d with no next", | 588 | pr_debug("dma%d: lastxfer: unhandled load_state %d with no next\n", |
548 | chan->number, chan->load_state); | 589 | chan->number, chan->load_state); |
549 | return; | 590 | return; |
550 | 591 | ||
@@ -629,7 +670,14 @@ s3c2410_dma_irq(int irq, void *devpw, struct pt_regs *regs) | |||
629 | } else { | 670 | } else { |
630 | } | 671 | } |
631 | 672 | ||
632 | if (chan->next != NULL) { | 673 | /* only reload if the channel is still running... our buffer done |
674 | * routine may have altered the state by requesting the dma channel | ||
675 | * to stop or shutdown... */ | ||
676 | |||
677 | /* todo: check that when the channel is shut-down from inside this | ||
678 | * function, we cope with unsetting reload, etc */ | ||
679 | |||
680 | if (chan->next != NULL && chan->state != S3C2410_DMA_IDLE) { | ||
633 | unsigned long flags; | 681 | unsigned long flags; |
634 | 682 | ||
635 | switch (chan->load_state) { | 683 | switch (chan->load_state) { |
@@ -644,8 +692,8 @@ s3c2410_dma_irq(int irq, void *devpw, struct pt_regs *regs) | |||
644 | case S3C2410_DMALOAD_1LOADED: | 692 | case S3C2410_DMALOAD_1LOADED: |
645 | if (s3c2410_dma_waitforload(chan, __LINE__) == 0) { | 693 | if (s3c2410_dma_waitforload(chan, __LINE__) == 0) { |
646 | /* flag error? */ | 694 | /* flag error? */ |
647 | printk(KERN_ERR "dma%d: timeout waiting for load\n", | 695 | printk(KERN_ERR "dma%d: timeout waiting for load (%s)\n", |
648 | chan->number); | 696 | chan->number, __FUNCTION__); |
649 | return IRQ_HANDLED; | 697 | return IRQ_HANDLED; |
650 | } | 698 | } |
651 | 699 | ||
@@ -678,8 +726,6 @@ s3c2410_dma_irq(int irq, void *devpw, struct pt_regs *regs) | |||
678 | return IRQ_HANDLED; | 726 | return IRQ_HANDLED; |
679 | } | 727 | } |
680 | 728 | ||
681 | |||
682 | |||
683 | /* s3c2410_request_dma | 729 | /* s3c2410_request_dma |
684 | * | 730 | * |
685 | * get control of an dma channel | 731 | * get control of an dma channel |
@@ -718,11 +764,17 @@ int s3c2410_dma_request(unsigned int channel, s3c2410_dma_client_t *client, | |||
718 | pr_debug("dma%d: %s : requesting irq %d\n", | 764 | pr_debug("dma%d: %s : requesting irq %d\n", |
719 | channel, __FUNCTION__, chan->irq); | 765 | channel, __FUNCTION__, chan->irq); |
720 | 766 | ||
767 | chan->irq_claimed = 1; | ||
768 | local_irq_restore(flags); | ||
769 | |||
721 | err = request_irq(chan->irq, s3c2410_dma_irq, IRQF_DISABLED, | 770 | err = request_irq(chan->irq, s3c2410_dma_irq, IRQF_DISABLED, |
722 | client->name, (void *)chan); | 771 | client->name, (void *)chan); |
723 | 772 | ||
773 | local_irq_save(flags); | ||
774 | |||
724 | if (err) { | 775 | if (err) { |
725 | chan->in_use = 0; | 776 | chan->in_use = 0; |
777 | chan->irq_claimed = 0; | ||
726 | local_irq_restore(flags); | 778 | local_irq_restore(flags); |
727 | 779 | ||
728 | printk(KERN_ERR "%s: cannot get IRQ %d for DMA %d\n", | 780 | printk(KERN_ERR "%s: cannot get IRQ %d for DMA %d\n", |
@@ -730,7 +782,6 @@ int s3c2410_dma_request(unsigned int channel, s3c2410_dma_client_t *client, | |||
730 | return err; | 782 | return err; |
731 | } | 783 | } |
732 | 784 | ||
733 | chan->irq_claimed = 1; | ||
734 | chan->irq_enabled = 1; | 785 | chan->irq_enabled = 1; |
735 | } | 786 | } |
736 | 787 | ||
@@ -810,6 +861,7 @@ static int s3c2410_dma_dostop(s3c2410_dma_chan_t *chan) | |||
810 | 861 | ||
811 | tmp = dma_rdreg(chan, S3C2410_DMA_DMASKTRIG); | 862 | tmp = dma_rdreg(chan, S3C2410_DMA_DMASKTRIG); |
812 | tmp |= S3C2410_DMASKTRIG_STOP; | 863 | tmp |= S3C2410_DMASKTRIG_STOP; |
864 | //tmp &= ~S3C2410_DMASKTRIG_ON; | ||
813 | dma_wrreg(chan, S3C2410_DMA_DMASKTRIG, tmp); | 865 | dma_wrreg(chan, S3C2410_DMA_DMASKTRIG, tmp); |
814 | 866 | ||
815 | #if 0 | 867 | #if 0 |
@@ -819,6 +871,7 @@ static int s3c2410_dma_dostop(s3c2410_dma_chan_t *chan) | |||
819 | dma_wrreg(chan, S3C2410_DMA_DCON, tmp); | 871 | dma_wrreg(chan, S3C2410_DMA_DCON, tmp); |
820 | #endif | 872 | #endif |
821 | 873 | ||
874 | /* should stop do this, or should we wait for flush? */ | ||
822 | chan->state = S3C2410_DMA_IDLE; | 875 | chan->state = S3C2410_DMA_IDLE; |
823 | chan->load_state = S3C2410_DMALOAD_NONE; | 876 | chan->load_state = S3C2410_DMALOAD_NONE; |
824 | 877 | ||
@@ -827,6 +880,22 @@ static int s3c2410_dma_dostop(s3c2410_dma_chan_t *chan) | |||
827 | return 0; | 880 | return 0; |
828 | } | 881 | } |
829 | 882 | ||
883 | void s3c2410_dma_waitforstop(s3c2410_dma_chan_t *chan) | ||
884 | { | ||
885 | unsigned long tmp; | ||
886 | unsigned int timeout = 0x10000; | ||
887 | |||
888 | while (timeout-- > 0) { | ||
889 | tmp = dma_rdreg(chan, S3C2410_DMA_DMASKTRIG); | ||
890 | |||
891 | if (!(tmp & S3C2410_DMASKTRIG_ON)) | ||
892 | return; | ||
893 | } | ||
894 | |||
895 | pr_debug("dma%d: failed to stop?\n", chan->number); | ||
896 | } | ||
897 | |||
898 | |||
830 | /* s3c2410_dma_flush | 899 | /* s3c2410_dma_flush |
831 | * | 900 | * |
832 | * stop the channel, and remove all current and pending transfers | 901 | * stop the channel, and remove all current and pending transfers |
@@ -837,7 +906,9 @@ static int s3c2410_dma_flush(s3c2410_dma_chan_t *chan) | |||
837 | s3c2410_dma_buf_t *buf, *next; | 906 | s3c2410_dma_buf_t *buf, *next; |
838 | unsigned long flags; | 907 | unsigned long flags; |
839 | 908 | ||
840 | pr_debug("%s:\n", __FUNCTION__); | 909 | pr_debug("%s: chan %p (%d)\n", __FUNCTION__, chan, chan->number); |
910 | |||
911 | dbg_showchan(chan); | ||
841 | 912 | ||
842 | local_irq_save(flags); | 913 | local_irq_save(flags); |
843 | 914 | ||
@@ -864,11 +935,64 @@ static int s3c2410_dma_flush(s3c2410_dma_chan_t *chan) | |||
864 | } | 935 | } |
865 | } | 936 | } |
866 | 937 | ||
938 | dbg_showregs(chan); | ||
939 | |||
940 | s3c2410_dma_waitforstop(chan); | ||
941 | |||
942 | #if 0 | ||
943 | /* should also clear interrupts, according to WinCE BSP */ | ||
944 | { | ||
945 | unsigned long tmp; | ||
946 | |||
947 | tmp = dma_rdreg(chan, S3C2410_DMA_DCON); | ||
948 | tmp |= S3C2410_DCON_NORELOAD; | ||
949 | dma_wrreg(chan, S3C2410_DMA_DCON, tmp); | ||
950 | } | ||
951 | #endif | ||
952 | |||
953 | dbg_showregs(chan); | ||
954 | |||
867 | local_irq_restore(flags); | 955 | local_irq_restore(flags); |
868 | 956 | ||
869 | return 0; | 957 | return 0; |
870 | } | 958 | } |
871 | 959 | ||
960 | int | ||
961 | s3c2410_dma_started(s3c2410_dma_chan_t *chan) | ||
962 | { | ||
963 | unsigned long flags; | ||
964 | |||
965 | local_irq_save(flags); | ||
966 | |||
967 | dbg_showchan(chan); | ||
968 | |||
969 | /* if we've only loaded one buffer onto the channel, then chec | ||
970 | * to see if we have another, and if so, try and load it so when | ||
971 | * the first buffer is finished, the new one will be loaded onto | ||
972 | * the channel */ | ||
973 | |||
974 | if (chan->next != NULL) { | ||
975 | if (chan->load_state == S3C2410_DMALOAD_1LOADED) { | ||
976 | |||
977 | if (s3c2410_dma_waitforload(chan, __LINE__) == 0) { | ||
978 | pr_debug("%s: buff not yet loaded, no more todo\n", | ||
979 | __FUNCTION__); | ||
980 | } else { | ||
981 | chan->load_state = S3C2410_DMALOAD_1RUNNING; | ||
982 | s3c2410_dma_loadbuffer(chan, chan->next); | ||
983 | } | ||
984 | |||
985 | } else if (chan->load_state == S3C2410_DMALOAD_1RUNNING) { | ||
986 | s3c2410_dma_loadbuffer(chan, chan->next); | ||
987 | } | ||
988 | } | ||
989 | |||
990 | |||
991 | local_irq_restore(flags); | ||
992 | |||
993 | return 0; | ||
994 | |||
995 | } | ||
872 | 996 | ||
873 | int | 997 | int |
874 | s3c2410_dma_ctrl(dmach_t channel, s3c2410_chan_op_t op) | 998 | s3c2410_dma_ctrl(dmach_t channel, s3c2410_chan_op_t op) |
@@ -885,14 +1009,15 @@ s3c2410_dma_ctrl(dmach_t channel, s3c2410_chan_op_t op) | |||
885 | return s3c2410_dma_dostop(chan); | 1009 | return s3c2410_dma_dostop(chan); |
886 | 1010 | ||
887 | case S3C2410_DMAOP_PAUSE: | 1011 | case S3C2410_DMAOP_PAUSE: |
888 | return -ENOENT; | ||
889 | |||
890 | case S3C2410_DMAOP_RESUME: | 1012 | case S3C2410_DMAOP_RESUME: |
891 | return -ENOENT; | 1013 | return -ENOENT; |
892 | 1014 | ||
893 | case S3C2410_DMAOP_FLUSH: | 1015 | case S3C2410_DMAOP_FLUSH: |
894 | return s3c2410_dma_flush(chan); | 1016 | return s3c2410_dma_flush(chan); |
895 | 1017 | ||
1018 | case S3C2410_DMAOP_STARTED: | ||
1019 | return s3c2410_dma_started(chan); | ||
1020 | |||
896 | case S3C2410_DMAOP_TIMEOUT: | 1021 | case S3C2410_DMAOP_TIMEOUT: |
897 | return 0; | 1022 | return 0; |
898 | 1023 | ||
diff --git a/arch/arm/mach-s3c2410/mach-anubis.c b/arch/arm/mach-s3c2410/mach-anubis.c index 4a92d6f92d6b..60641d452db3 100644 --- a/arch/arm/mach-s3c2410/mach-anubis.c +++ b/arch/arm/mach-s3c2410/mach-anubis.c | |||
@@ -60,11 +60,12 @@ static struct map_desc anubis_iodesc[] __initdata = { | |||
60 | .virtual = (u32)S3C24XX_VA_ISA_BYTE, | 60 | .virtual = (u32)S3C24XX_VA_ISA_BYTE, |
61 | .pfn = __phys_to_pfn(0x0), | 61 | .pfn = __phys_to_pfn(0x0), |
62 | .length = SZ_4M, | 62 | .length = SZ_4M, |
63 | .type = MT_DEVICE | 63 | .type = MT_DEVICE, |
64 | }, { | 64 | }, { |
65 | .virtual = (u32)S3C24XX_VA_ISA_WORD, | 65 | .virtual = (u32)S3C24XX_VA_ISA_WORD, |
66 | .pfn = __phys_to_pfn(0x0), | 66 | .pfn = __phys_to_pfn(0x0), |
67 | .length = SZ_4M, MT_DEVICE | 67 | .length = SZ_4M, |
68 | .type = MT_DEVICE, | ||
68 | }, | 69 | }, |
69 | 70 | ||
70 | /* we could possibly compress the next set down into a set of smaller tables | 71 | /* we could possibly compress the next set down into a set of smaller tables |
@@ -78,36 +79,12 @@ static struct map_desc anubis_iodesc[] __initdata = { | |||
78 | .virtual = (u32)ANUBIS_VA_CTRL1, | 79 | .virtual = (u32)ANUBIS_VA_CTRL1, |
79 | .pfn = __phys_to_pfn(ANUBIS_PA_CTRL1), | 80 | .pfn = __phys_to_pfn(ANUBIS_PA_CTRL1), |
80 | .length = SZ_4K, | 81 | .length = SZ_4K, |
81 | .type = MT_DEVICE | 82 | .type = MT_DEVICE, |
82 | }, { | 83 | }, { |
83 | .virtual = (u32)ANUBIS_VA_CTRL2, | 84 | .virtual = (u32)ANUBIS_VA_CTRL2, |
84 | .pfn = __phys_to_pfn(ANUBIS_PA_CTRL2), | 85 | .pfn = __phys_to_pfn(ANUBIS_PA_CTRL2), |
85 | .length = SZ_4K, | 86 | .length = SZ_4K, |
86 | .type =MT_DEVICE | 87 | .type = MT_DEVICE, |
87 | }, | ||
88 | |||
89 | /* IDE drives */ | ||
90 | |||
91 | { | ||
92 | .virtual = (u32)ANUBIS_IDEPRI, | ||
93 | .pfn = __phys_to_pfn(S3C2410_CS3), | ||
94 | .length = SZ_1M, | ||
95 | .type = MT_DEVICE | ||
96 | }, { | ||
97 | .virtual = (u32)ANUBIS_IDEPRIAUX, | ||
98 | .pfn = __phys_to_pfn(S3C2410_CS3+(1<<26)), | ||
99 | .length = SZ_1M, | ||
100 | .type = MT_DEVICE | ||
101 | }, { | ||
102 | .virtual = (u32)ANUBIS_IDESEC, | ||
103 | .pfn = __phys_to_pfn(S3C2410_CS4), | ||
104 | .length = SZ_1M, | ||
105 | .type = MT_DEVICE | ||
106 | }, { | ||
107 | .virtual = (u32)ANUBIS_IDESECAUX, | ||
108 | .pfn = __phys_to_pfn(S3C2410_CS4+(1<<26)), | ||
109 | .length = SZ_1M, | ||
110 | .type = MT_DEVICE | ||
111 | }, | 88 | }, |
112 | }; | 89 | }; |
113 | 90 | ||
@@ -126,7 +103,7 @@ static struct s3c24xx_uart_clksrc anubis_serial_clocks[] = { | |||
126 | .name = "pclk", | 103 | .name = "pclk", |
127 | .divisor = 1, | 104 | .divisor = 1, |
128 | .min_baud = 0, | 105 | .min_baud = 0, |
129 | .max_baud = 0. | 106 | .max_baud = 0, |
130 | } | 107 | } |
131 | }; | 108 | }; |
132 | 109 | ||
@@ -139,7 +116,7 @@ static struct s3c2410_uartcfg anubis_uartcfgs[] __initdata = { | |||
139 | .ulcon = ULCON, | 116 | .ulcon = ULCON, |
140 | .ufcon = UFCON, | 117 | .ufcon = UFCON, |
141 | .clocks = anubis_serial_clocks, | 118 | .clocks = anubis_serial_clocks, |
142 | .clocks_size = ARRAY_SIZE(anubis_serial_clocks) | 119 | .clocks_size = ARRAY_SIZE(anubis_serial_clocks), |
143 | }, | 120 | }, |
144 | [1] = { | 121 | [1] = { |
145 | .hwport = 2, | 122 | .hwport = 2, |
@@ -148,7 +125,7 @@ static struct s3c2410_uartcfg anubis_uartcfgs[] __initdata = { | |||
148 | .ulcon = ULCON, | 125 | .ulcon = ULCON, |
149 | .ufcon = UFCON, | 126 | .ufcon = UFCON, |
150 | .clocks = anubis_serial_clocks, | 127 | .clocks = anubis_serial_clocks, |
151 | .clocks_size = ARRAY_SIZE(anubis_serial_clocks) | 128 | .clocks_size = ARRAY_SIZE(anubis_serial_clocks), |
152 | }, | 129 | }, |
153 | }; | 130 | }; |
154 | 131 | ||
@@ -162,7 +139,7 @@ static struct mtd_partition anubis_default_nand_part[] = { | |||
162 | [0] = { | 139 | [0] = { |
163 | .name = "Boot Agent", | 140 | .name = "Boot Agent", |
164 | .size = SZ_16K, | 141 | .size = SZ_16K, |
165 | .offset = 0 | 142 | .offset = 0, |
166 | }, | 143 | }, |
167 | [1] = { | 144 | [1] = { |
168 | .name = "/boot", | 145 | .name = "/boot", |
@@ -194,21 +171,21 @@ static struct s3c2410_nand_set anubis_nand_sets[] = { | |||
194 | .nr_chips = 1, | 171 | .nr_chips = 1, |
195 | .nr_map = external_map, | 172 | .nr_map = external_map, |
196 | .nr_partitions = ARRAY_SIZE(anubis_default_nand_part), | 173 | .nr_partitions = ARRAY_SIZE(anubis_default_nand_part), |
197 | .partitions = anubis_default_nand_part | 174 | .partitions = anubis_default_nand_part, |
198 | }, | 175 | }, |
199 | [0] = { | 176 | [0] = { |
200 | .name = "chip0", | 177 | .name = "chip0", |
201 | .nr_chips = 1, | 178 | .nr_chips = 1, |
202 | .nr_map = chip0_map, | 179 | .nr_map = chip0_map, |
203 | .nr_partitions = ARRAY_SIZE(anubis_default_nand_part), | 180 | .nr_partitions = ARRAY_SIZE(anubis_default_nand_part), |
204 | .partitions = anubis_default_nand_part | 181 | .partitions = anubis_default_nand_part, |
205 | }, | 182 | }, |
206 | [2] = { | 183 | [2] = { |
207 | .name = "chip1", | 184 | .name = "chip1", |
208 | .nr_chips = 1, | 185 | .nr_chips = 1, |
209 | .nr_map = chip1_map, | 186 | .nr_map = chip1_map, |
210 | .nr_partitions = ARRAY_SIZE(anubis_default_nand_part), | 187 | .nr_partitions = ARRAY_SIZE(anubis_default_nand_part), |
211 | .partitions = anubis_default_nand_part | 188 | .partitions = anubis_default_nand_part, |
212 | }, | 189 | }, |
213 | }; | 190 | }; |
214 | 191 | ||
@@ -313,7 +290,7 @@ static struct s3c24xx_board anubis_board __initdata = { | |||
313 | .devices = anubis_devices, | 290 | .devices = anubis_devices, |
314 | .devices_count = ARRAY_SIZE(anubis_devices), | 291 | .devices_count = ARRAY_SIZE(anubis_devices), |
315 | .clocks = anubis_clocks, | 292 | .clocks = anubis_clocks, |
316 | .clocks_count = ARRAY_SIZE(anubis_clocks) | 293 | .clocks_count = ARRAY_SIZE(anubis_clocks), |
317 | }; | 294 | }; |
318 | 295 | ||
319 | static void __init anubis_map_io(void) | 296 | static void __init anubis_map_io(void) |
diff --git a/arch/arm/mach-s3c2410/mach-osiris.c b/arch/arm/mach-s3c2410/mach-osiris.c index 858fd03c6bc5..e193ba69e652 100644 --- a/arch/arm/mach-s3c2410/mach-osiris.c +++ b/arch/arm/mach-s3c2410/mach-osiris.c | |||
@@ -67,12 +67,12 @@ static struct map_desc osiris_iodesc[] __initdata = { | |||
67 | .virtual = (u32)OSIRIS_VA_CTRL1, | 67 | .virtual = (u32)OSIRIS_VA_CTRL1, |
68 | .pfn = __phys_to_pfn(OSIRIS_PA_CTRL1), | 68 | .pfn = __phys_to_pfn(OSIRIS_PA_CTRL1), |
69 | .length = SZ_16K, | 69 | .length = SZ_16K, |
70 | .type = MT_DEVICE | 70 | .type = MT_DEVICE, |
71 | }, { | 71 | }, { |
72 | .virtual = (u32)OSIRIS_VA_CTRL2, | 72 | .virtual = (u32)OSIRIS_VA_CTRL2, |
73 | .pfn = __phys_to_pfn(OSIRIS_PA_CTRL2), | 73 | .pfn = __phys_to_pfn(OSIRIS_PA_CTRL2), |
74 | .length = SZ_16K, | 74 | .length = SZ_16K, |
75 | .type = MT_DEVICE | 75 | .type = MT_DEVICE, |
76 | }, | 76 | }, |
77 | }; | 77 | }; |
78 | 78 | ||
@@ -91,7 +91,7 @@ static struct s3c24xx_uart_clksrc osiris_serial_clocks[] = { | |||
91 | .name = "pclk", | 91 | .name = "pclk", |
92 | .divisor = 1, | 92 | .divisor = 1, |
93 | .min_baud = 0, | 93 | .min_baud = 0, |
94 | .max_baud = 0. | 94 | .max_baud = 0, |
95 | } | 95 | } |
96 | }; | 96 | }; |
97 | 97 | ||
@@ -103,7 +103,7 @@ static struct s3c2410_uartcfg osiris_uartcfgs[] __initdata = { | |||
103 | .ulcon = ULCON, | 103 | .ulcon = ULCON, |
104 | .ufcon = UFCON, | 104 | .ufcon = UFCON, |
105 | .clocks = osiris_serial_clocks, | 105 | .clocks = osiris_serial_clocks, |
106 | .clocks_size = ARRAY_SIZE(osiris_serial_clocks) | 106 | .clocks_size = ARRAY_SIZE(osiris_serial_clocks), |
107 | }, | 107 | }, |
108 | [1] = { | 108 | [1] = { |
109 | .hwport = 1, | 109 | .hwport = 1, |
@@ -112,7 +112,7 @@ static struct s3c2410_uartcfg osiris_uartcfgs[] __initdata = { | |||
112 | .ulcon = ULCON, | 112 | .ulcon = ULCON, |
113 | .ufcon = UFCON, | 113 | .ufcon = UFCON, |
114 | .clocks = osiris_serial_clocks, | 114 | .clocks = osiris_serial_clocks, |
115 | .clocks_size = ARRAY_SIZE(osiris_serial_clocks) | 115 | .clocks_size = ARRAY_SIZE(osiris_serial_clocks), |
116 | }, | 116 | }, |
117 | }; | 117 | }; |
118 | 118 | ||
@@ -126,7 +126,7 @@ static struct mtd_partition osiris_default_nand_part[] = { | |||
126 | [0] = { | 126 | [0] = { |
127 | .name = "Boot Agent", | 127 | .name = "Boot Agent", |
128 | .size = SZ_16K, | 128 | .size = SZ_16K, |
129 | .offset = 0 | 129 | .offset = 0, |
130 | }, | 130 | }, |
131 | [1] = { | 131 | [1] = { |
132 | .name = "/boot", | 132 | .name = "/boot", |
@@ -158,21 +158,21 @@ static struct s3c2410_nand_set osiris_nand_sets[] = { | |||
158 | .nr_chips = 1, | 158 | .nr_chips = 1, |
159 | .nr_map = external_map, | 159 | .nr_map = external_map, |
160 | .nr_partitions = ARRAY_SIZE(osiris_default_nand_part), | 160 | .nr_partitions = ARRAY_SIZE(osiris_default_nand_part), |
161 | .partitions = osiris_default_nand_part | 161 | .partitions = osiris_default_nand_part, |
162 | }, | 162 | }, |
163 | [0] = { | 163 | [0] = { |
164 | .name = "chip0", | 164 | .name = "chip0", |
165 | .nr_chips = 1, | 165 | .nr_chips = 1, |
166 | .nr_map = chip0_map, | 166 | .nr_map = chip0_map, |
167 | .nr_partitions = ARRAY_SIZE(osiris_default_nand_part), | 167 | .nr_partitions = ARRAY_SIZE(osiris_default_nand_part), |
168 | .partitions = osiris_default_nand_part | 168 | .partitions = osiris_default_nand_part, |
169 | }, | 169 | }, |
170 | [2] = { | 170 | [2] = { |
171 | .name = "chip1", | 171 | .name = "chip1", |
172 | .nr_chips = 1, | 172 | .nr_chips = 1, |
173 | .nr_map = chip1_map, | 173 | .nr_map = chip1_map, |
174 | .nr_partitions = ARRAY_SIZE(osiris_default_nand_part), | 174 | .nr_partitions = ARRAY_SIZE(osiris_default_nand_part), |
175 | .partitions = osiris_default_nand_part | 175 | .partitions = osiris_default_nand_part, |
176 | }, | 176 | }, |
177 | }; | 177 | }; |
178 | 178 | ||
@@ -245,7 +245,7 @@ static struct s3c24xx_board osiris_board __initdata = { | |||
245 | .devices = osiris_devices, | 245 | .devices = osiris_devices, |
246 | .devices_count = ARRAY_SIZE(osiris_devices), | 246 | .devices_count = ARRAY_SIZE(osiris_devices), |
247 | .clocks = osiris_clocks, | 247 | .clocks = osiris_clocks, |
248 | .clocks_count = ARRAY_SIZE(osiris_clocks) | 248 | .clocks_count = ARRAY_SIZE(osiris_clocks), |
249 | }; | 249 | }; |
250 | 250 | ||
251 | static void __init osiris_map_io(void) | 251 | static void __init osiris_map_io(void) |
diff --git a/arch/arm/mach-sa1100/irq.c b/arch/arm/mach-sa1100/irq.c index 2891b8ca86dd..b55b90a2e8fe 100644 --- a/arch/arm/mach-sa1100/irq.c +++ b/arch/arm/mach-sa1100/irq.c | |||
@@ -95,7 +95,8 @@ static int sa1100_low_gpio_wake(unsigned int irq, unsigned int on) | |||
95 | return 0; | 95 | return 0; |
96 | } | 96 | } |
97 | 97 | ||
98 | static struct irqchip sa1100_low_gpio_chip = { | 98 | static struct irq_chip sa1100_low_gpio_chip = { |
99 | .name = "GPIO-l", | ||
99 | .ack = sa1100_low_gpio_ack, | 100 | .ack = sa1100_low_gpio_ack, |
100 | .mask = sa1100_low_gpio_mask, | 101 | .mask = sa1100_low_gpio_mask, |
101 | .unmask = sa1100_low_gpio_unmask, | 102 | .unmask = sa1100_low_gpio_unmask, |
@@ -178,7 +179,8 @@ static int sa1100_high_gpio_wake(unsigned int irq, unsigned int on) | |||
178 | return 0; | 179 | return 0; |
179 | } | 180 | } |
180 | 181 | ||
181 | static struct irqchip sa1100_high_gpio_chip = { | 182 | static struct irq_chip sa1100_high_gpio_chip = { |
183 | .name = "GPIO-h", | ||
182 | .ack = sa1100_high_gpio_ack, | 184 | .ack = sa1100_high_gpio_ack, |
183 | .mask = sa1100_high_gpio_mask, | 185 | .mask = sa1100_high_gpio_mask, |
184 | .unmask = sa1100_high_gpio_unmask, | 186 | .unmask = sa1100_high_gpio_unmask, |
@@ -215,7 +217,8 @@ static int sa1100_set_wake(unsigned int irq, unsigned int on) | |||
215 | return -EINVAL; | 217 | return -EINVAL; |
216 | } | 218 | } |
217 | 219 | ||
218 | static struct irqchip sa1100_normal_chip = { | 220 | static struct irq_chip sa1100_normal_chip = { |
221 | .name = "SC", | ||
219 | .ack = sa1100_mask_irq, | 222 | .ack = sa1100_mask_irq, |
220 | .mask = sa1100_mask_irq, | 223 | .mask = sa1100_mask_irq, |
221 | .unmask = sa1100_unmask_irq, | 224 | .unmask = sa1100_unmask_irq, |
diff --git a/arch/arm/mach-shark/irq.c b/arch/arm/mach-shark/irq.c index 6cb67bd3dfd3..b227052296cf 100644 --- a/arch/arm/mach-shark/irq.c +++ b/arch/arm/mach-shark/irq.c | |||
@@ -69,7 +69,8 @@ static irqreturn_t bogus_int(int irq, void *dev_id, struct pt_regs *regs) | |||
69 | 69 | ||
70 | static struct irqaction cascade; | 70 | static struct irqaction cascade; |
71 | 71 | ||
72 | static struct irqchip fb_chip = { | 72 | static struct irq_chip fb_chip = { |
73 | .name = "XT-PIC", | ||
73 | .ack = shark_ack_8259A_irq, | 74 | .ack = shark_ack_8259A_irq, |
74 | .mask = shark_disable_8259A_irq, | 75 | .mask = shark_disable_8259A_irq, |
75 | .unmask = shark_enable_8259A_irq, | 76 | .unmask = shark_enable_8259A_irq, |
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c index 864377176015..f2bbef07b1e4 100644 --- a/arch/arm/mach-versatile/core.c +++ b/arch/arm/mach-versatile/core.c | |||
@@ -69,7 +69,8 @@ static void sic_unmask_irq(unsigned int irq) | |||
69 | writel(1 << irq, VA_SIC_BASE + SIC_IRQ_ENABLE_SET); | 69 | writel(1 << irq, VA_SIC_BASE + SIC_IRQ_ENABLE_SET); |
70 | } | 70 | } |
71 | 71 | ||
72 | static struct irqchip sic_chip = { | 72 | static struct irq_chip sic_chip = { |
73 | .name = "SIC", | ||
73 | .ack = sic_mask_irq, | 74 | .ack = sic_mask_irq, |
74 | .mask = sic_mask_irq, | 75 | .mask = sic_mask_irq, |
75 | .unmask = sic_unmask_irq, | 76 | .unmask = sic_unmask_irq, |
@@ -284,7 +285,7 @@ static struct flash_platform_data versatile_flash_data = { | |||
284 | 285 | ||
285 | static struct resource versatile_flash_resource = { | 286 | static struct resource versatile_flash_resource = { |
286 | .start = VERSATILE_FLASH_BASE, | 287 | .start = VERSATILE_FLASH_BASE, |
287 | .end = VERSATILE_FLASH_BASE + VERSATILE_FLASH_SIZE, | 288 | .end = VERSATILE_FLASH_BASE + VERSATILE_FLASH_SIZE - 1, |
288 | .flags = IORESOURCE_MEM, | 289 | .flags = IORESOURCE_MEM, |
289 | }; | 290 | }; |
290 | 291 | ||
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c index dba7dddfe57d..88a999df0ab3 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c | |||
@@ -363,7 +363,9 @@ EXPORT_SYMBOL(__ioremap); | |||
363 | 363 | ||
364 | void __iounmap(void __iomem *addr) | 364 | void __iounmap(void __iomem *addr) |
365 | { | 365 | { |
366 | #ifndef CONFIG_SMP | ||
366 | struct vm_struct **p, *tmp; | 367 | struct vm_struct **p, *tmp; |
368 | #endif | ||
367 | unsigned int section_mapping = 0; | 369 | unsigned int section_mapping = 0; |
368 | 370 | ||
369 | addr = (void __iomem *)(PAGE_MASK & (unsigned long)addr); | 371 | addr = (void __iomem *)(PAGE_MASK & (unsigned long)addr); |
diff --git a/arch/arm/mm/proc-syms.c b/arch/arm/mm/proc-syms.c index 6c5f0fe578a5..ab143557e688 100644 --- a/arch/arm/mm/proc-syms.c +++ b/arch/arm/mm/proc-syms.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <asm/cacheflush.h> | 13 | #include <asm/cacheflush.h> |
14 | #include <asm/proc-fns.h> | 14 | #include <asm/proc-fns.h> |
15 | #include <asm/tlbflush.h> | 15 | #include <asm/tlbflush.h> |
16 | #include <asm/page.h> | ||
16 | 17 | ||
17 | #ifndef MULTI_CPU | 18 | #ifndef MULTI_CPU |
18 | EXPORT_SYMBOL(cpu_dcache_clean_area); | 19 | EXPORT_SYMBOL(cpu_dcache_clean_area); |
@@ -30,6 +31,13 @@ EXPORT_SYMBOL(__cpuc_coherent_kern_range); | |||
30 | EXPORT_SYMBOL(cpu_cache); | 31 | EXPORT_SYMBOL(cpu_cache); |
31 | #endif | 32 | #endif |
32 | 33 | ||
34 | #ifndef MULTI_USER | ||
35 | EXPORT_SYMBOL(__cpu_clear_user_page); | ||
36 | EXPORT_SYMBOL(__cpu_copy_user_page); | ||
37 | #else | ||
38 | EXPORT_SYMBOL(cpu_user); | ||
39 | #endif | ||
40 | |||
33 | /* | 41 | /* |
34 | * No module should need to touch the TLB (and currently | 42 | * No module should need to touch the TLB (and currently |
35 | * no modules do. We export this for "loadkernel" support | 43 | * no modules do. We export this for "loadkernel" support |
diff --git a/arch/arm/mm/proc-xscale.S b/arch/arm/mm/proc-xscale.S index 521538671f4c..561bff73a036 100644 --- a/arch/arm/mm/proc-xscale.S +++ b/arch/arm/mm/proc-xscale.S | |||
@@ -536,6 +536,11 @@ cpu_80200_name: | |||
536 | .asciz "XScale-80200" | 536 | .asciz "XScale-80200" |
537 | .size cpu_80200_name, . - cpu_80200_name | 537 | .size cpu_80200_name, . - cpu_80200_name |
538 | 538 | ||
539 | .type cpu_80219_name, #object | ||
540 | cpu_80219_name: | ||
541 | .asciz "XScale-80219" | ||
542 | .size cpu_80219_name, . - cpu_80219_name | ||
543 | |||
539 | .type cpu_8032x_name, #object | 544 | .type cpu_8032x_name, #object |
540 | cpu_8032x_name: | 545 | cpu_8032x_name: |
541 | .asciz "XScale-IOP8032x Family" | 546 | .asciz "XScale-IOP8032x Family" |
@@ -613,10 +618,33 @@ __80200_proc_info: | |||
613 | .long xscale_cache_fns | 618 | .long xscale_cache_fns |
614 | .size __80200_proc_info, . - __80200_proc_info | 619 | .size __80200_proc_info, . - __80200_proc_info |
615 | 620 | ||
621 | .type __80219_proc_info,#object | ||
622 | __80219_proc_info: | ||
623 | .long 0x69052e20 | ||
624 | .long 0xffffffe0 | ||
625 | .long PMD_TYPE_SECT | \ | ||
626 | PMD_SECT_BUFFERABLE | \ | ||
627 | PMD_SECT_CACHEABLE | \ | ||
628 | PMD_SECT_AP_WRITE | \ | ||
629 | PMD_SECT_AP_READ | ||
630 | .long PMD_TYPE_SECT | \ | ||
631 | PMD_SECT_AP_WRITE | \ | ||
632 | PMD_SECT_AP_READ | ||
633 | b __xscale_setup | ||
634 | .long cpu_arch_name | ||
635 | .long cpu_elf_name | ||
636 | .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP | ||
637 | .long cpu_80219_name | ||
638 | .long xscale_processor_functions | ||
639 | .long v4wbi_tlb_fns | ||
640 | .long xscale_mc_user_fns | ||
641 | .long xscale_cache_fns | ||
642 | .size __80219_proc_info, . - __80219_proc_info | ||
643 | |||
616 | .type __8032x_proc_info,#object | 644 | .type __8032x_proc_info,#object |
617 | __8032x_proc_info: | 645 | __8032x_proc_info: |
618 | .long 0x69052420 | 646 | .long 0x69052420 |
619 | .long 0xfffff5e0 @ mask should accomodate IOP80219 also | 647 | .long 0xffffffe0 |
620 | .long PMD_TYPE_SECT | \ | 648 | .long PMD_TYPE_SECT | \ |
621 | PMD_SECT_BUFFERABLE | \ | 649 | PMD_SECT_BUFFERABLE | \ |
622 | PMD_SECT_CACHEABLE | \ | 650 | PMD_SECT_CACHEABLE | \ |
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index fec7970e564d..cd7f973fb286 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c | |||
@@ -944,7 +944,8 @@ static void mpuio_unmask_irq(unsigned int irq) | |||
944 | _set_gpio_irqenable(bank, gpio, 1); | 944 | _set_gpio_irqenable(bank, gpio, 1); |
945 | } | 945 | } |
946 | 946 | ||
947 | static struct irqchip gpio_irq_chip = { | 947 | static struct irq_chip gpio_irq_chip = { |
948 | .name = "GPIO", | ||
948 | .ack = gpio_ack_irq, | 949 | .ack = gpio_ack_irq, |
949 | .mask = gpio_mask_irq, | 950 | .mask = gpio_mask_irq, |
950 | .unmask = gpio_unmask_irq, | 951 | .unmask = gpio_unmask_irq, |
@@ -952,10 +953,11 @@ static struct irqchip gpio_irq_chip = { | |||
952 | .set_wake = gpio_wake_enable, | 953 | .set_wake = gpio_wake_enable, |
953 | }; | 954 | }; |
954 | 955 | ||
955 | static struct irqchip mpuio_irq_chip = { | 956 | static struct irq_chip mpuio_irq_chip = { |
957 | .name = "MPUIO", | ||
956 | .ack = mpuio_ack_irq, | 958 | .ack = mpuio_ack_irq, |
957 | .mask = mpuio_mask_irq, | 959 | .mask = mpuio_mask_irq, |
958 | .unmask = mpuio_unmask_irq | 960 | .unmask = mpuio_unmask_irq |
959 | }; | 961 | }; |
960 | 962 | ||
961 | static int initialized; | 963 | static int initialized; |