diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-12 12:47:47 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-12 12:47:47 -0400 |
commit | 33d444f182a1757640077c6b7381e54c13142b1d (patch) | |
tree | 106bf7bdd645c2efd645ff3973fcfd64d41cfce8 /arch | |
parent | ae7d5c8622a518601a21f14de5c70de5f1c967bf (diff) | |
parent | 8354c5b72636e5321e9b16dae1da1445506f6af6 (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6:
[SPARC]: Wire up signalfd/timerfd/eventfd syscalls.
[SPARC64]: Add support for bq4802 TOD chip, as found on ultra45.
[SPARC64]: Correct FIRE_IOMMU_FLUSHINV register offset.
[SPARC64]: envctrl.c needs asm/io.h
[SPARC64]: Update defconfig.
[TTY]: Export proc_clear_tty() to modulea.
[SPARC64]: pci_resource_adjust() cannot be __init.
[SPARC64]: Spelling fixes.
[SPARC]: Spelling fixes.
[SPARC64]: Kill LARGE_ALLOCS and update defconfig.
Diffstat (limited to 'arch')
-rw-r--r-- | arch/sparc/kernel/auxio.c | 2 | ||||
-rw-r--r-- | arch/sparc/kernel/ioport.c | 2 | ||||
-rw-r--r-- | arch/sparc/kernel/irq.c | 8 | ||||
-rw-r--r-- | arch/sparc/kernel/pcic.c | 4 | ||||
-rw-r--r-- | arch/sparc/kernel/process.c | 2 | ||||
-rw-r--r-- | arch/sparc/kernel/sun4d_irq.c | 2 | ||||
-rw-r--r-- | arch/sparc/kernel/sun4m_irq.c | 2 | ||||
-rw-r--r-- | arch/sparc/kernel/systbls.S | 5 | ||||
-rw-r--r-- | arch/sparc/prom/printf.c | 2 | ||||
-rw-r--r-- | arch/sparc64/Kconfig | 3 | ||||
-rw-r--r-- | arch/sparc64/defconfig | 124 | ||||
-rw-r--r-- | arch/sparc64/kernel/devices.c | 2 | ||||
-rw-r--r-- | arch/sparc64/kernel/of_device.c | 4 | ||||
-rw-r--r-- | arch/sparc64/kernel/pci.c | 4 | ||||
-rw-r--r-- | arch/sparc64/kernel/pci_fire.c | 2 | ||||
-rw-r--r-- | arch/sparc64/kernel/pci_iommu.c | 2 | ||||
-rw-r--r-- | arch/sparc64/kernel/pci_sun4v.c | 2 | ||||
-rw-r--r-- | arch/sparc64/kernel/process.c | 2 | ||||
-rw-r--r-- | arch/sparc64/kernel/prom.c | 2 | ||||
-rw-r--r-- | arch/sparc64/kernel/systbls.S | 7 | ||||
-rw-r--r-- | arch/sparc64/kernel/time.c | 230 | ||||
-rw-r--r-- | arch/sparc64/mm/init.c | 2 |
22 files changed, 300 insertions, 115 deletions
diff --git a/arch/sparc/kernel/auxio.c b/arch/sparc/kernel/auxio.c index 118f3eca373e..baf4ed3fb0f3 100644 --- a/arch/sparc/kernel/auxio.c +++ b/arch/sparc/kernel/auxio.c | |||
@@ -88,7 +88,7 @@ void set_auxio(unsigned char bits_on, unsigned char bits_off) | |||
88 | break; | 88 | break; |
89 | case sun4m: | 89 | case sun4m: |
90 | if(!auxio_register) | 90 | if(!auxio_register) |
91 | break; /* VME chassic sun4m, no auxio. */ | 91 | break; /* VME chassis sun4m, no auxio. */ |
92 | regval = sbus_readb(auxio_register); | 92 | regval = sbus_readb(auxio_register); |
93 | sbus_writeb(((regval | bits_on) & ~bits_off) | AUXIO_ORMEIN4M, | 93 | sbus_writeb(((regval | bits_on) & ~bits_off) | AUXIO_ORMEIN4M, |
94 | auxio_register); | 94 | auxio_register); |
diff --git a/arch/sparc/kernel/ioport.c b/arch/sparc/kernel/ioport.c index 987ec6782f99..62182d2d7b0d 100644 --- a/arch/sparc/kernel/ioport.c +++ b/arch/sparc/kernel/ioport.c | |||
@@ -617,7 +617,7 @@ void *pci_alloc_consistent(struct pci_dev *pdev, size_t len, dma_addr_t *pba) | |||
617 | * size must be the same as what as passed into pci_alloc_consistent, | 617 | * size must be the same as what as passed into pci_alloc_consistent, |
618 | * and likewise dma_addr must be the same as what *dma_addrp was set to. | 618 | * and likewise dma_addr must be the same as what *dma_addrp was set to. |
619 | * | 619 | * |
620 | * References to the memory and mappings assosciated with cpu_addr/dma_addr | 620 | * References to the memory and mappings associated with cpu_addr/dma_addr |
621 | * past this call are illegal. | 621 | * past this call are illegal. |
622 | */ | 622 | */ |
623 | void pci_free_consistent(struct pci_dev *pdev, size_t n, void *p, dma_addr_t ba) | 623 | void pci_free_consistent(struct pci_dev *pdev, size_t n, void *p, dma_addr_t ba) |
diff --git a/arch/sparc/kernel/irq.c b/arch/sparc/kernel/irq.c index bdbefa8a9742..f257a67bcf93 100644 --- a/arch/sparc/kernel/irq.c +++ b/arch/sparc/kernel/irq.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* $Id: irq.c,v 1.114 2001/12/11 04:55:51 davem Exp $ | 1 | /* $Id: irq.c,v 1.114 2001/12/11 04:55:51 davem Exp $ |
2 | * arch/sparc/kernel/irq.c: Interrupt request handling routines. On the | 2 | * arch/sparc/kernel/irq.c: Interrupt request handling routines. On the |
3 | * Sparc the IRQ's are basically 'cast in stone' | 3 | * Sparc the IRQs are basically 'cast in stone' |
4 | * and you are supposed to probe the prom's device | 4 | * and you are supposed to probe the prom's device |
5 | * node trees to find out who's got which IRQ. | 5 | * node trees to find out who's got which IRQ. |
6 | * | 6 | * |
@@ -330,7 +330,7 @@ void handler_irq(int irq, struct pt_regs * regs) | |||
330 | irq_enter(); | 330 | irq_enter(); |
331 | disable_pil_irq(irq); | 331 | disable_pil_irq(irq); |
332 | #ifdef CONFIG_SMP | 332 | #ifdef CONFIG_SMP |
333 | /* Only rotate on lower priority IRQ's (scsi, ethernet, etc.). */ | 333 | /* Only rotate on lower priority IRQs (scsi, ethernet, etc.). */ |
334 | if((sparc_cpu_model==sun4m) && (irq < 10)) | 334 | if((sparc_cpu_model==sun4m) && (irq < 10)) |
335 | smp4m_irq_rotate(cpu); | 335 | smp4m_irq_rotate(cpu); |
336 | #endif | 336 | #endif |
@@ -371,7 +371,7 @@ void sparc_floppy_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
371 | } | 371 | } |
372 | #endif | 372 | #endif |
373 | 373 | ||
374 | /* Fast IRQ's on the Sparc can only have one routine attached to them, | 374 | /* Fast IRQs on the Sparc can only have one routine attached to them, |
375 | * thus no sharing possible. | 375 | * thus no sharing possible. |
376 | */ | 376 | */ |
377 | int request_fast_irq(unsigned int irq, | 377 | int request_fast_irq(unsigned int irq, |
@@ -608,7 +608,7 @@ void __init init_IRQ(void) | |||
608 | break; | 608 | break; |
609 | 609 | ||
610 | default: | 610 | default: |
611 | prom_printf("Cannot initialize IRQ's on this Sun machine..."); | 611 | prom_printf("Cannot initialize IRQs on this Sun machine..."); |
612 | break; | 612 | break; |
613 | } | 613 | } |
614 | btfixup(); | 614 | btfixup(); |
diff --git a/arch/sparc/kernel/pcic.c b/arch/sparc/kernel/pcic.c index 5ca7e8f42bd9..791771196905 100644 --- a/arch/sparc/kernel/pcic.c +++ b/arch/sparc/kernel/pcic.c | |||
@@ -755,7 +755,7 @@ void __init pci_time_init(void) | |||
755 | static __inline__ unsigned long do_gettimeoffset(void) | 755 | static __inline__ unsigned long do_gettimeoffset(void) |
756 | { | 756 | { |
757 | /* | 757 | /* |
758 | * We devide all to 100 | 758 | * We divide all by 100 |
759 | * to have microsecond resolution and to avoid overflow | 759 | * to have microsecond resolution and to avoid overflow |
760 | */ | 760 | */ |
761 | unsigned long count = | 761 | unsigned long count = |
@@ -956,7 +956,7 @@ EXPORT_SYMBOL(pci_device_to_OF_node); | |||
956 | * Also, think for a moment about likes of floppy.c that | 956 | * Also, think for a moment about likes of floppy.c that |
957 | * include architecture specific parts. They may want to redefine ins/outs. | 957 | * include architecture specific parts. They may want to redefine ins/outs. |
958 | * | 958 | * |
959 | * We do not use horroble macroses here because we want to | 959 | * We do not use horrible macros here because we want to |
960 | * advance pointer by sizeof(size). | 960 | * advance pointer by sizeof(size). |
961 | */ | 961 | */ |
962 | void outsb(unsigned long addr, const void *src, unsigned long count) | 962 | void outsb(unsigned long addr, const void *src, unsigned long count) |
diff --git a/arch/sparc/kernel/process.c b/arch/sparc/kernel/process.c index 2940d2c1a778..8c37f8f5adb7 100644 --- a/arch/sparc/kernel/process.c +++ b/arch/sparc/kernel/process.c | |||
@@ -683,7 +683,7 @@ out: | |||
683 | * NOTE! Only a kernel-only process(ie the swapper or direct descendants | 683 | * NOTE! Only a kernel-only process(ie the swapper or direct descendants |
684 | * who haven't done an "execve()") should use this: it will work within | 684 | * who haven't done an "execve()") should use this: it will work within |
685 | * a system call from a "real" process, but the process memory space will | 685 | * a system call from a "real" process, but the process memory space will |
686 | * not be free'd until both the parent and the child have exited. | 686 | * not be freed until both the parent and the child have exited. |
687 | */ | 687 | */ |
688 | pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) | 688 | pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) |
689 | { | 689 | { |
diff --git a/arch/sparc/kernel/sun4d_irq.c b/arch/sparc/kernel/sun4d_irq.c index 116d6a241ca2..396797e20c39 100644 --- a/arch/sparc/kernel/sun4d_irq.c +++ b/arch/sparc/kernel/sun4d_irq.c | |||
@@ -521,7 +521,7 @@ static void __init sun4d_init_timers(irq_handler_t counter_fn) | |||
521 | lvl14_save[2] += smp4d_ticker - real_irq_entry; | 521 | lvl14_save[2] += smp4d_ticker - real_irq_entry; |
522 | 522 | ||
523 | /* For SMP we use the level 14 ticker, however the bootup code | 523 | /* For SMP we use the level 14 ticker, however the bootup code |
524 | * has copied the firmwares level 14 vector into boot cpu's | 524 | * has copied the firmware's level 14 vector into the boot cpu's |
525 | * trap table, we must fix this now or we get squashed. | 525 | * trap table, we must fix this now or we get squashed. |
526 | */ | 526 | */ |
527 | local_irq_save(flags); | 527 | local_irq_save(flags); |
diff --git a/arch/sparc/kernel/sun4m_irq.c b/arch/sparc/kernel/sun4m_irq.c index a654c16f4027..91a803ea88be 100644 --- a/arch/sparc/kernel/sun4m_irq.c +++ b/arch/sparc/kernel/sun4m_irq.c | |||
@@ -299,7 +299,7 @@ static void __init sun4m_init_timers(irq_handler_t counter_fn) | |||
299 | struct tt_entry *trap_table = &sparc_ttable[SP_TRAP_IRQ1 + (14 - 1)]; | 299 | struct tt_entry *trap_table = &sparc_ttable[SP_TRAP_IRQ1 + (14 - 1)]; |
300 | 300 | ||
301 | /* For SMP we use the level 14 ticker, however the bootup code | 301 | /* For SMP we use the level 14 ticker, however the bootup code |
302 | * has copied the firmwares level 14 vector into boot cpu's | 302 | * has copied the firmware's level 14 vector into the boot cpu's |
303 | * trap table, we must fix this now or we get squashed. | 303 | * trap table, we must fix this now or we get squashed. |
304 | */ | 304 | */ |
305 | local_irq_save(flags); | 305 | local_irq_save(flags); |
diff --git a/arch/sparc/kernel/systbls.S b/arch/sparc/kernel/systbls.S index e3f5b8ed4c52..90b52d4dab9a 100644 --- a/arch/sparc/kernel/systbls.S +++ b/arch/sparc/kernel/systbls.S | |||
@@ -80,7 +80,7 @@ sys_call_table: | |||
80 | /*295*/ .long sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare | 80 | /*295*/ .long sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare |
81 | /*300*/ .long sys_set_robust_list, sys_get_robust_list, sys_migrate_pages, sys_mbind, sys_get_mempolicy | 81 | /*300*/ .long sys_set_robust_list, sys_get_robust_list, sys_migrate_pages, sys_mbind, sys_get_mempolicy |
82 | /*305*/ .long sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait | 82 | /*305*/ .long sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait |
83 | /*310*/ .long sys_utimensat | 83 | /*310*/ .long sys_utimensat, sys_signalfd, sys_timerfd, sys_eventfd |
84 | 84 | ||
85 | #ifdef CONFIG_SUNOS_EMUL | 85 | #ifdef CONFIG_SUNOS_EMUL |
86 | /* Now the SunOS syscall table. */ | 86 | /* Now the SunOS syscall table. */ |
@@ -197,6 +197,7 @@ sunos_sys_table: | |||
197 | .long sunos_nosys, sunos_nosys, sunos_nosys | 197 | .long sunos_nosys, sunos_nosys, sunos_nosys |
198 | .long sunos_nosys, sunos_nosys, sunos_nosys | 198 | .long sunos_nosys, sunos_nosys, sunos_nosys |
199 | .long sunos_nosys | 199 | .long sunos_nosys |
200 | /*310*/ .long sunos_nosys | 200 | /*310*/ .long sunos_nosys, sunos_nosys, sunos_nosys |
201 | .long sunos_nosys | ||
201 | 202 | ||
202 | #endif | 203 | #endif |
diff --git a/arch/sparc/prom/printf.c b/arch/sparc/prom/printf.c index dc8b598bedbb..27fdac99f790 100644 --- a/arch/sparc/prom/printf.c +++ b/arch/sparc/prom/printf.c | |||
@@ -5,7 +5,7 @@ | |||
5 | * Copyright (c) 2002 Pete Zaitcev (zaitcev@yahoo.com) | 5 | * Copyright (c) 2002 Pete Zaitcev (zaitcev@yahoo.com) |
6 | * | 6 | * |
7 | * We used to warn all over the code: DO NOT USE prom_printf(), | 7 | * We used to warn all over the code: DO NOT USE prom_printf(), |
8 | * and yet people do. Anton's banking code was outputing banks | 8 | * and yet people do. Anton's banking code was outputting banks |
9 | * with prom_printf for most of the 2.4 lifetime. Since an effective | 9 | * with prom_printf for most of the 2.4 lifetime. Since an effective |
10 | * stick is not available, we deployed a carrot: an early printk | 10 | * stick is not available, we deployed a carrot: an early printk |
11 | * through PROM by means of -p boot option. This ought to fix it. | 11 | * through PROM by means of -p boot option. This ought to fix it. |
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig index ad8d6b256a70..831781cab271 100644 --- a/arch/sparc64/Kconfig +++ b/arch/sparc64/Kconfig | |||
@@ -226,9 +226,6 @@ config ARCH_SPARSEMEM_DEFAULT | |||
226 | def_bool y | 226 | def_bool y |
227 | select SPARSEMEM_STATIC | 227 | select SPARSEMEM_STATIC |
228 | 228 | ||
229 | config LARGE_ALLOCS | ||
230 | def_bool y | ||
231 | |||
232 | source "mm/Kconfig" | 229 | source "mm/Kconfig" |
233 | 230 | ||
234 | config ISA | 231 | config ISA |
diff --git a/arch/sparc64/defconfig b/arch/sparc64/defconfig index 37c2d3695658..585ef4fb7591 100644 --- a/arch/sparc64/defconfig +++ b/arch/sparc64/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.21 | 3 | # Linux kernel version: 2.6.21 |
4 | # Sun May 6 22:46:54 2007 | 4 | # Fri May 11 14:31:45 2007 |
5 | # | 5 | # |
6 | CONFIG_SPARC=y | 6 | CONFIG_SPARC=y |
7 | CONFIG_SPARC64=y | 7 | CONFIG_SPARC64=y |
@@ -9,6 +9,7 @@ CONFIG_GENERIC_TIME=y | |||
9 | CONFIG_GENERIC_CLOCKEVENTS=y | 9 | CONFIG_GENERIC_CLOCKEVENTS=y |
10 | CONFIG_64BIT=y | 10 | CONFIG_64BIT=y |
11 | CONFIG_MMU=y | 11 | CONFIG_MMU=y |
12 | CONFIG_QUICKLIST=y | ||
12 | CONFIG_STACKTRACE_SUPPORT=y | 13 | CONFIG_STACKTRACE_SUPPORT=y |
13 | CONFIG_LOCKDEP_SUPPORT=y | 14 | CONFIG_LOCKDEP_SUPPORT=y |
14 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | 15 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y |
@@ -49,6 +50,7 @@ CONFIG_POSIX_MQUEUE=y | |||
49 | # CONFIG_UTS_NS is not set | 50 | # CONFIG_UTS_NS is not set |
50 | # CONFIG_AUDIT is not set | 51 | # CONFIG_AUDIT is not set |
51 | # CONFIG_IKCONFIG is not set | 52 | # CONFIG_IKCONFIG is not set |
53 | CONFIG_LOG_BUF_SHIFT=18 | ||
52 | CONFIG_SYSFS_DEPRECATED=y | 54 | CONFIG_SYSFS_DEPRECATED=y |
53 | CONFIG_RELAY=y | 55 | CONFIG_RELAY=y |
54 | # CONFIG_BLK_DEV_INITRD is not set | 56 | # CONFIG_BLK_DEV_INITRD is not set |
@@ -66,14 +68,20 @@ CONFIG_BUG=y | |||
66 | CONFIG_ELF_CORE=y | 68 | CONFIG_ELF_CORE=y |
67 | CONFIG_BASE_FULL=y | 69 | CONFIG_BASE_FULL=y |
68 | CONFIG_FUTEX=y | 70 | CONFIG_FUTEX=y |
71 | CONFIG_ANON_INODES=y | ||
69 | CONFIG_EPOLL=y | 72 | CONFIG_EPOLL=y |
73 | CONFIG_SIGNALFD=y | ||
74 | CONFIG_TIMERFD=y | ||
75 | CONFIG_EVENTFD=y | ||
70 | CONFIG_SHMEM=y | 76 | CONFIG_SHMEM=y |
71 | CONFIG_SLAB=y | ||
72 | CONFIG_VM_EVENT_COUNTERS=y | 77 | CONFIG_VM_EVENT_COUNTERS=y |
78 | CONFIG_SLUB_DEBUG=y | ||
79 | # CONFIG_SLAB is not set | ||
80 | CONFIG_SLUB=y | ||
81 | # CONFIG_SLOB is not set | ||
73 | CONFIG_RT_MUTEXES=y | 82 | CONFIG_RT_MUTEXES=y |
74 | # CONFIG_TINY_SHMEM is not set | 83 | # CONFIG_TINY_SHMEM is not set |
75 | CONFIG_BASE_SMALL=0 | 84 | CONFIG_BASE_SMALL=0 |
76 | # CONFIG_SLOB is not set | ||
77 | 85 | ||
78 | # | 86 | # |
79 | # Loadable module support | 87 | # Loadable module support |
@@ -137,7 +145,6 @@ CONFIG_HUGETLB_PAGE_SIZE_4MB=y | |||
137 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | 145 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y |
138 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | 146 | CONFIG_ARCH_SPARSEMEM_ENABLE=y |
139 | CONFIG_ARCH_SPARSEMEM_DEFAULT=y | 147 | CONFIG_ARCH_SPARSEMEM_DEFAULT=y |
140 | CONFIG_LARGE_ALLOCS=y | ||
141 | CONFIG_SELECT_MEMORY_MODEL=y | 148 | CONFIG_SELECT_MEMORY_MODEL=y |
142 | # CONFIG_FLATMEM_MANUAL is not set | 149 | # CONFIG_FLATMEM_MANUAL is not set |
143 | # CONFIG_DISCONTIGMEM_MANUAL is not set | 150 | # CONFIG_DISCONTIGMEM_MANUAL is not set |
@@ -148,6 +155,7 @@ CONFIG_SPARSEMEM_STATIC=y | |||
148 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 155 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
149 | CONFIG_RESOURCES_64BIT=y | 156 | CONFIG_RESOURCES_64BIT=y |
150 | CONFIG_ZONE_DMA_FLAG=0 | 157 | CONFIG_ZONE_DMA_FLAG=0 |
158 | CONFIG_NR_QUICK=1 | ||
151 | CONFIG_SBUS=y | 159 | CONFIG_SBUS=y |
152 | CONFIG_SBUSCHAR=y | 160 | CONFIG_SBUSCHAR=y |
153 | CONFIG_SUN_AUXIO=y | 161 | CONFIG_SUN_AUXIO=y |
@@ -305,6 +313,7 @@ CONFIG_NET_TCPPROBE=m | |||
305 | # CONFIG_WIRELESS_EXT is not set | 313 | # CONFIG_WIRELESS_EXT is not set |
306 | # CONFIG_MAC80211 is not set | 314 | # CONFIG_MAC80211 is not set |
307 | # CONFIG_IEEE80211 is not set | 315 | # CONFIG_IEEE80211 is not set |
316 | # CONFIG_RFKILL is not set | ||
308 | 317 | ||
309 | # | 318 | # |
310 | # Device Drivers | 319 | # Device Drivers |
@@ -359,8 +368,10 @@ CONFIG_ATA_OVER_ETH=m | |||
359 | # | 368 | # |
360 | # Misc devices | 369 | # Misc devices |
361 | # | 370 | # |
371 | # CONFIG_PHANTOM is not set | ||
362 | # CONFIG_SGI_IOC4 is not set | 372 | # CONFIG_SGI_IOC4 is not set |
363 | # CONFIG_TIFM_CORE is not set | 373 | # CONFIG_TIFM_CORE is not set |
374 | # CONFIG_BLINK is not set | ||
364 | 375 | ||
365 | # | 376 | # |
366 | # ATA/ATAPI/MFM/RLL support | 377 | # ATA/ATAPI/MFM/RLL support |
@@ -379,6 +390,7 @@ CONFIG_BLK_DEV_IDECD=y | |||
379 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | 390 | # CONFIG_BLK_DEV_IDEFLOPPY is not set |
380 | # CONFIG_BLK_DEV_IDESCSI is not set | 391 | # CONFIG_BLK_DEV_IDESCSI is not set |
381 | # CONFIG_IDE_TASK_IOCTL is not set | 392 | # CONFIG_IDE_TASK_IOCTL is not set |
393 | CONFIG_IDE_PROC_FS=y | ||
382 | 394 | ||
383 | # | 395 | # |
384 | # IDE chipset support/bugfixes | 396 | # IDE chipset support/bugfixes |
@@ -386,6 +398,7 @@ CONFIG_BLK_DEV_IDECD=y | |||
386 | CONFIG_IDE_GENERIC=y | 398 | CONFIG_IDE_GENERIC=y |
387 | CONFIG_BLK_DEV_IDEPCI=y | 399 | CONFIG_BLK_DEV_IDEPCI=y |
388 | # CONFIG_IDEPCI_SHARE_IRQ is not set | 400 | # CONFIG_IDEPCI_SHARE_IRQ is not set |
401 | CONFIG_IDEPCI_PCIBUS_ORDER=y | ||
389 | # CONFIG_BLK_DEV_OFFBOARD is not set | 402 | # CONFIG_BLK_DEV_OFFBOARD is not set |
390 | # CONFIG_BLK_DEV_GENERIC is not set | 403 | # CONFIG_BLK_DEV_GENERIC is not set |
391 | # CONFIG_BLK_DEV_OPTI621 is not set | 404 | # CONFIG_BLK_DEV_OPTI621 is not set |
@@ -521,6 +534,7 @@ CONFIG_DM_SNAPSHOT=m | |||
521 | CONFIG_DM_MIRROR=m | 534 | CONFIG_DM_MIRROR=m |
522 | CONFIG_DM_ZERO=m | 535 | CONFIG_DM_ZERO=m |
523 | # CONFIG_DM_MULTIPATH is not set | 536 | # CONFIG_DM_MULTIPATH is not set |
537 | # CONFIG_DM_DELAY is not set | ||
524 | 538 | ||
525 | # | 539 | # |
526 | # Fusion MPT device support | 540 | # Fusion MPT device support |
@@ -533,6 +547,7 @@ CONFIG_DM_ZERO=m | |||
533 | # | 547 | # |
534 | # IEEE 1394 (FireWire) support | 548 | # IEEE 1394 (FireWire) support |
535 | # | 549 | # |
550 | # CONFIG_FIREWIRE is not set | ||
536 | # CONFIG_IEEE1394 is not set | 551 | # CONFIG_IEEE1394 is not set |
537 | 552 | ||
538 | # | 553 | # |
@@ -629,6 +644,8 @@ CONFIG_BNX2=m | |||
629 | # CONFIG_S2IO is not set | 644 | # CONFIG_S2IO is not set |
630 | # CONFIG_MYRI10GE is not set | 645 | # CONFIG_MYRI10GE is not set |
631 | # CONFIG_NETXEN_NIC is not set | 646 | # CONFIG_NETXEN_NIC is not set |
647 | # CONFIG_MLX4_CORE is not set | ||
648 | CONFIG_MLX4_DEBUG=y | ||
632 | 649 | ||
633 | # | 650 | # |
634 | # Token Ring devices | 651 | # Token Ring devices |
@@ -642,6 +659,16 @@ CONFIG_BNX2=m | |||
642 | # CONFIG_WLAN_80211 is not set | 659 | # CONFIG_WLAN_80211 is not set |
643 | 660 | ||
644 | # | 661 | # |
662 | # USB Network Adapters | ||
663 | # | ||
664 | # CONFIG_USB_CATC is not set | ||
665 | # CONFIG_USB_KAWETH is not set | ||
666 | # CONFIG_USB_PEGASUS is not set | ||
667 | # CONFIG_USB_RTL8150 is not set | ||
668 | # CONFIG_USB_USBNET_MII is not set | ||
669 | # CONFIG_USB_USBNET is not set | ||
670 | |||
671 | # | ||
645 | # Wan interfaces | 672 | # Wan interfaces |
646 | # | 673 | # |
647 | # CONFIG_WAN is not set | 674 | # CONFIG_WAN is not set |
@@ -711,11 +738,18 @@ CONFIG_MOUSE_PS2_LIFEBOOK=y | |||
711 | CONFIG_MOUSE_PS2_TRACKPOINT=y | 738 | CONFIG_MOUSE_PS2_TRACKPOINT=y |
712 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | 739 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set |
713 | CONFIG_MOUSE_SERIAL=y | 740 | CONFIG_MOUSE_SERIAL=y |
741 | # CONFIG_MOUSE_APPLETOUCH is not set | ||
714 | # CONFIG_MOUSE_VSXXXAA is not set | 742 | # CONFIG_MOUSE_VSXXXAA is not set |
715 | # CONFIG_INPUT_JOYSTICK is not set | 743 | # CONFIG_INPUT_JOYSTICK is not set |
744 | # CONFIG_INPUT_TABLET is not set | ||
716 | # CONFIG_INPUT_TOUCHSCREEN is not set | 745 | # CONFIG_INPUT_TOUCHSCREEN is not set |
717 | CONFIG_INPUT_MISC=y | 746 | CONFIG_INPUT_MISC=y |
718 | CONFIG_INPUT_SPARCSPKR=y | 747 | CONFIG_INPUT_SPARCSPKR=y |
748 | # CONFIG_INPUT_ATI_REMOTE is not set | ||
749 | # CONFIG_INPUT_ATI_REMOTE2 is not set | ||
750 | # CONFIG_INPUT_KEYSPAN_REMOTE is not set | ||
751 | # CONFIG_INPUT_POWERMATE is not set | ||
752 | # CONFIG_INPUT_YEALINK is not set | ||
719 | # CONFIG_INPUT_UINPUT is not set | 753 | # CONFIG_INPUT_UINPUT is not set |
720 | # CONFIG_INPUT_POLLDEV is not set | 754 | # CONFIG_INPUT_POLLDEV is not set |
721 | 755 | ||
@@ -762,14 +796,9 @@ CONFIG_UNIX98_PTYS=y | |||
762 | # IPMI | 796 | # IPMI |
763 | # | 797 | # |
764 | # CONFIG_IPMI_HANDLER is not set | 798 | # CONFIG_IPMI_HANDLER is not set |
765 | |||
766 | # | ||
767 | # Watchdog Cards | ||
768 | # | ||
769 | # CONFIG_WATCHDOG is not set | 799 | # CONFIG_WATCHDOG is not set |
770 | # CONFIG_HW_RANDOM is not set | 800 | # CONFIG_HW_RANDOM is not set |
771 | CONFIG_RTC=y | 801 | CONFIG_RTC=y |
772 | # CONFIG_DTLK is not set | ||
773 | # CONFIG_R3964 is not set | 802 | # CONFIG_R3964 is not set |
774 | # CONFIG_APPLICOM is not set | 803 | # CONFIG_APPLICOM is not set |
775 | # CONFIG_DRM is not set | 804 | # CONFIG_DRM is not set |
@@ -779,6 +808,7 @@ CONFIG_RTC=y | |||
779 | # TPM devices | 808 | # TPM devices |
780 | # | 809 | # |
781 | # CONFIG_TCG_TPM is not set | 810 | # CONFIG_TCG_TPM is not set |
811 | CONFIG_DEVPORT=y | ||
782 | CONFIG_I2C=y | 812 | CONFIG_I2C=y |
783 | CONFIG_I2C_BOARDINFO=y | 813 | CONFIG_I2C_BOARDINFO=y |
784 | # CONFIG_I2C_CHARDEV is not set | 814 | # CONFIG_I2C_CHARDEV is not set |
@@ -841,13 +871,10 @@ CONFIG_I2C_ALGOBIT=y | |||
841 | # Dallas's 1-wire bus | 871 | # Dallas's 1-wire bus |
842 | # | 872 | # |
843 | # CONFIG_W1 is not set | 873 | # CONFIG_W1 is not set |
844 | |||
845 | # | ||
846 | # Hardware Monitoring support | ||
847 | # | ||
848 | CONFIG_HWMON=y | 874 | CONFIG_HWMON=y |
849 | # CONFIG_HWMON_VID is not set | 875 | # CONFIG_HWMON_VID is not set |
850 | # CONFIG_SENSORS_ABITUGURU is not set | 876 | # CONFIG_SENSORS_ABITUGURU is not set |
877 | # CONFIG_SENSORS_AD7418 is not set | ||
851 | # CONFIG_SENSORS_ADM1021 is not set | 878 | # CONFIG_SENSORS_ADM1021 is not set |
852 | # CONFIG_SENSORS_ADM1025 is not set | 879 | # CONFIG_SENSORS_ADM1025 is not set |
853 | # CONFIG_SENSORS_ADM1026 is not set | 880 | # CONFIG_SENSORS_ADM1026 is not set |
@@ -874,6 +901,7 @@ CONFIG_HWMON=y | |||
874 | # CONFIG_SENSORS_LM90 is not set | 901 | # CONFIG_SENSORS_LM90 is not set |
875 | # CONFIG_SENSORS_LM92 is not set | 902 | # CONFIG_SENSORS_LM92 is not set |
876 | # CONFIG_SENSORS_MAX1619 is not set | 903 | # CONFIG_SENSORS_MAX1619 is not set |
904 | # CONFIG_SENSORS_MAX6650 is not set | ||
877 | # CONFIG_SENSORS_PC87360 is not set | 905 | # CONFIG_SENSORS_PC87360 is not set |
878 | # CONFIG_SENSORS_PC87427 is not set | 906 | # CONFIG_SENSORS_PC87427 is not set |
879 | # CONFIG_SENSORS_SIS5595 is not set | 907 | # CONFIG_SENSORS_SIS5595 is not set |
@@ -901,23 +929,30 @@ CONFIG_HWMON=y | |||
901 | # Multimedia devices | 929 | # Multimedia devices |
902 | # | 930 | # |
903 | # CONFIG_VIDEO_DEV is not set | 931 | # CONFIG_VIDEO_DEV is not set |
932 | # CONFIG_DVB_CORE is not set | ||
933 | # CONFIG_DAB is not set | ||
904 | 934 | ||
905 | # | 935 | # |
906 | # Digital Video Broadcasting Devices | 936 | # Graphics support |
907 | # | 937 | # |
908 | # CONFIG_DVB is not set | 938 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
909 | # CONFIG_USB_DABUSB is not set | ||
910 | 939 | ||
911 | # | 940 | # |
912 | # Graphics support | 941 | # Display device support |
913 | # | 942 | # |
914 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 943 | # CONFIG_DISPLAY_SUPPORT is not set |
944 | # CONFIG_VGASTATE is not set | ||
915 | CONFIG_FB=y | 945 | CONFIG_FB=y |
916 | # CONFIG_FIRMWARE_EDID is not set | 946 | # CONFIG_FIRMWARE_EDID is not set |
917 | CONFIG_FB_DDC=y | 947 | CONFIG_FB_DDC=y |
918 | CONFIG_FB_CFB_FILLRECT=y | 948 | CONFIG_FB_CFB_FILLRECT=y |
919 | CONFIG_FB_CFB_COPYAREA=y | 949 | CONFIG_FB_CFB_COPYAREA=y |
920 | CONFIG_FB_CFB_IMAGEBLIT=y | 950 | CONFIG_FB_CFB_IMAGEBLIT=y |
951 | # CONFIG_FB_SYS_FILLRECT is not set | ||
952 | # CONFIG_FB_SYS_COPYAREA is not set | ||
953 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
954 | # CONFIG_FB_SYS_FOPS is not set | ||
955 | CONFIG_FB_DEFERRED_IO=y | ||
921 | # CONFIG_FB_SVGALIB is not set | 956 | # CONFIG_FB_SVGALIB is not set |
922 | # CONFIG_FB_MACMODES is not set | 957 | # CONFIG_FB_MACMODES is not set |
923 | # CONFIG_FB_BACKLIGHT is not set | 958 | # CONFIG_FB_BACKLIGHT is not set |
@@ -949,7 +984,10 @@ CONFIG_FB_RADEON_I2C=y | |||
949 | # CONFIG_FB_KYRO is not set | 984 | # CONFIG_FB_KYRO is not set |
950 | # CONFIG_FB_3DFX is not set | 985 | # CONFIG_FB_3DFX is not set |
951 | # CONFIG_FB_VOODOO1 is not set | 986 | # CONFIG_FB_VOODOO1 is not set |
987 | # CONFIG_FB_VT8623 is not set | ||
952 | # CONFIG_FB_TRIDENT is not set | 988 | # CONFIG_FB_TRIDENT is not set |
989 | # CONFIG_FB_ARK is not set | ||
990 | # CONFIG_FB_PM3 is not set | ||
953 | # CONFIG_FB_XVR500 is not set | 991 | # CONFIG_FB_XVR500 is not set |
954 | # CONFIG_FB_XVR2500 is not set | 992 | # CONFIG_FB_XVR2500 is not set |
955 | # CONFIG_FB_PCI is not set | 993 | # CONFIG_FB_PCI is not set |
@@ -972,10 +1010,6 @@ CONFIG_FONTS=y | |||
972 | CONFIG_FONT_SUN8x16=y | 1010 | CONFIG_FONT_SUN8x16=y |
973 | # CONFIG_FONT_SUN12x22 is not set | 1011 | # CONFIG_FONT_SUN12x22 is not set |
974 | # CONFIG_FONT_10x18 is not set | 1012 | # CONFIG_FONT_10x18 is not set |
975 | |||
976 | # | ||
977 | # Logo configuration | ||
978 | # | ||
979 | CONFIG_LOGO=y | 1013 | CONFIG_LOGO=y |
980 | # CONFIG_LOGO_LINUX_MONO is not set | 1014 | # CONFIG_LOGO_LINUX_MONO is not set |
981 | # CONFIG_LOGO_LINUX_VGA16 is not set | 1015 | # CONFIG_LOGO_LINUX_VGA16 is not set |
@@ -1083,6 +1117,7 @@ CONFIG_SND_ALI5451=m | |||
1083 | # USB devices | 1117 | # USB devices |
1084 | # | 1118 | # |
1085 | # CONFIG_SND_USB_AUDIO is not set | 1119 | # CONFIG_SND_USB_AUDIO is not set |
1120 | # CONFIG_SND_USB_CAIAQ is not set | ||
1086 | 1121 | ||
1087 | # | 1122 | # |
1088 | # ALSA Sparc devices | 1123 | # ALSA Sparc devices |
@@ -1092,7 +1127,7 @@ CONFIG_SND_SUN_CS4231=m | |||
1092 | # CONFIG_SND_SUN_DBRI is not set | 1127 | # CONFIG_SND_SUN_DBRI is not set |
1093 | 1128 | ||
1094 | # | 1129 | # |
1095 | # SoC audio support | 1130 | # System on Chip audio support |
1096 | # | 1131 | # |
1097 | # CONFIG_SND_SOC is not set | 1132 | # CONFIG_SND_SOC is not set |
1098 | 1133 | ||
@@ -1178,37 +1213,10 @@ CONFIG_USB_STORAGE=m | |||
1178 | # CONFIG_USB_LIBUSUAL is not set | 1213 | # CONFIG_USB_LIBUSUAL is not set |
1179 | 1214 | ||
1180 | # | 1215 | # |
1181 | # USB Input Devices | ||
1182 | # | ||
1183 | # CONFIG_USB_AIPTEK is not set | ||
1184 | # CONFIG_USB_WACOM is not set | ||
1185 | # CONFIG_USB_ACECAD is not set | ||
1186 | # CONFIG_USB_KBTAB is not set | ||
1187 | # CONFIG_USB_POWERMATE is not set | ||
1188 | # CONFIG_USB_TOUCHSCREEN is not set | ||
1189 | # CONFIG_USB_YEALINK is not set | ||
1190 | # CONFIG_USB_XPAD is not set | ||
1191 | # CONFIG_USB_ATI_REMOTE is not set | ||
1192 | # CONFIG_USB_ATI_REMOTE2 is not set | ||
1193 | # CONFIG_USB_KEYSPAN_REMOTE is not set | ||
1194 | # CONFIG_USB_APPLETOUCH is not set | ||
1195 | # CONFIG_USB_GTCO is not set | ||
1196 | |||
1197 | # | ||
1198 | # USB Imaging devices | 1216 | # USB Imaging devices |
1199 | # | 1217 | # |
1200 | # CONFIG_USB_MDC800 is not set | 1218 | # CONFIG_USB_MDC800 is not set |
1201 | # CONFIG_USB_MICROTEK is not set | 1219 | # CONFIG_USB_MICROTEK is not set |
1202 | |||
1203 | # | ||
1204 | # USB Network Adapters | ||
1205 | # | ||
1206 | # CONFIG_USB_CATC is not set | ||
1207 | # CONFIG_USB_KAWETH is not set | ||
1208 | # CONFIG_USB_PEGASUS is not set | ||
1209 | # CONFIG_USB_RTL8150 is not set | ||
1210 | # CONFIG_USB_USBNET_MII is not set | ||
1211 | # CONFIG_USB_USBNET is not set | ||
1212 | # CONFIG_USB_MON is not set | 1220 | # CONFIG_USB_MON is not set |
1213 | 1221 | ||
1214 | # | 1222 | # |
@@ -1252,10 +1260,6 @@ CONFIG_USB_STORAGE=m | |||
1252 | # USB Gadget Support | 1260 | # USB Gadget Support |
1253 | # | 1261 | # |
1254 | # CONFIG_USB_GADGET is not set | 1262 | # CONFIG_USB_GADGET is not set |
1255 | |||
1256 | # | ||
1257 | # MMC/SD Card support | ||
1258 | # | ||
1259 | # CONFIG_MMC is not set | 1263 | # CONFIG_MMC is not set |
1260 | 1264 | ||
1261 | # | 1265 | # |
@@ -1299,14 +1303,6 @@ CONFIG_USB_STORAGE=m | |||
1299 | # | 1303 | # |
1300 | 1304 | ||
1301 | # | 1305 | # |
1302 | # Auxiliary Display support | ||
1303 | # | ||
1304 | |||
1305 | # | ||
1306 | # Virtualization | ||
1307 | # | ||
1308 | |||
1309 | # | ||
1310 | # Misc Linux/SPARC drivers | 1306 | # Misc Linux/SPARC drivers |
1311 | # | 1307 | # |
1312 | CONFIG_SUN_OPENPROMIO=m | 1308 | CONFIG_SUN_OPENPROMIO=m |
@@ -1486,11 +1482,9 @@ CONFIG_DEBUG_FS=y | |||
1486 | # CONFIG_HEADERS_CHECK is not set | 1482 | # CONFIG_HEADERS_CHECK is not set |
1487 | CONFIG_DEBUG_KERNEL=y | 1483 | CONFIG_DEBUG_KERNEL=y |
1488 | # CONFIG_DEBUG_SHIRQ is not set | 1484 | # CONFIG_DEBUG_SHIRQ is not set |
1489 | CONFIG_LOG_BUF_SHIFT=18 | ||
1490 | CONFIG_DETECT_SOFTLOCKUP=y | 1485 | CONFIG_DETECT_SOFTLOCKUP=y |
1491 | CONFIG_SCHEDSTATS=y | 1486 | CONFIG_SCHEDSTATS=y |
1492 | # CONFIG_TIMER_STATS is not set | 1487 | # CONFIG_TIMER_STATS is not set |
1493 | # CONFIG_DEBUG_SLAB is not set | ||
1494 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1488 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1495 | # CONFIG_RT_MUTEX_TESTER is not set | 1489 | # CONFIG_RT_MUTEX_TESTER is not set |
1496 | # CONFIG_DEBUG_SPINLOCK is not set | 1490 | # CONFIG_DEBUG_SPINLOCK is not set |
@@ -1574,6 +1568,7 @@ CONFIG_CRYPTO_TEST=m | |||
1574 | CONFIG_BITREVERSE=y | 1568 | CONFIG_BITREVERSE=y |
1575 | CONFIG_CRC_CCITT=m | 1569 | CONFIG_CRC_CCITT=m |
1576 | CONFIG_CRC16=m | 1570 | CONFIG_CRC16=m |
1571 | # CONFIG_CRC_ITU_T is not set | ||
1577 | CONFIG_CRC32=y | 1572 | CONFIG_CRC32=y |
1578 | CONFIG_LIBCRC32C=m | 1573 | CONFIG_LIBCRC32C=m |
1579 | CONFIG_ZLIB_INFLATE=y | 1574 | CONFIG_ZLIB_INFLATE=y |
@@ -1581,3 +1576,4 @@ CONFIG_ZLIB_DEFLATE=y | |||
1581 | CONFIG_PLIST=y | 1576 | CONFIG_PLIST=y |
1582 | CONFIG_HAS_IOMEM=y | 1577 | CONFIG_HAS_IOMEM=y |
1583 | CONFIG_HAS_IOPORT=y | 1578 | CONFIG_HAS_IOPORT=y |
1579 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/sparc64/kernel/devices.c b/arch/sparc64/kernel/devices.c index ec10f7edcf86..0e03c8e218cd 100644 --- a/arch/sparc64/kernel/devices.c +++ b/arch/sparc64/kernel/devices.c | |||
@@ -21,7 +21,7 @@ | |||
21 | #include <asm/timer.h> | 21 | #include <asm/timer.h> |
22 | #include <asm/cpudata.h> | 22 | #include <asm/cpudata.h> |
23 | 23 | ||
24 | /* Used to synchronize acceses to NatSemi SUPER I/O chip configure | 24 | /* Used to synchronize accesses to NatSemi SUPER I/O chip configure |
25 | * operations in asm/ns87303.h | 25 | * operations in asm/ns87303.h |
26 | */ | 26 | */ |
27 | DEFINE_SPINLOCK(ns87303_lock); | 27 | DEFINE_SPINLOCK(ns87303_lock); |
diff --git a/arch/sparc64/kernel/of_device.c b/arch/sparc64/kernel/of_device.c index 9ac9a307999a..7455f5d05519 100644 --- a/arch/sparc64/kernel/of_device.c +++ b/arch/sparc64/kernel/of_device.c | |||
@@ -596,7 +596,7 @@ static void __init build_device_resources(struct of_device *op, | |||
596 | /* Convert to num-entries. */ | 596 | /* Convert to num-entries. */ |
597 | num_reg /= na + ns; | 597 | num_reg /= na + ns; |
598 | 598 | ||
599 | /* Prevent overruning the op->resources[] array. */ | 599 | /* Prevent overrunning the op->resources[] array. */ |
600 | if (num_reg > PROMREG_MAX) { | 600 | if (num_reg > PROMREG_MAX) { |
601 | printk(KERN_WARNING "%s: Too many regs (%d), " | 601 | printk(KERN_WARNING "%s: Too many regs (%d), " |
602 | "limiting to %d.\n", | 602 | "limiting to %d.\n", |
@@ -904,7 +904,7 @@ static struct of_device * __init scan_one_device(struct device_node *dp, | |||
904 | op->num_irqs = 0; | 904 | op->num_irqs = 0; |
905 | } | 905 | } |
906 | 906 | ||
907 | /* Prevent overruning the op->irqs[] array. */ | 907 | /* Prevent overrunning the op->irqs[] array. */ |
908 | if (op->num_irqs > PROMINTR_MAX) { | 908 | if (op->num_irqs > PROMINTR_MAX) { |
909 | printk(KERN_WARNING "%s: Too many irqs (%d), " | 909 | printk(KERN_WARNING "%s: Too many irqs (%d), " |
910 | "limiting to %d.\n", | 910 | "limiting to %d.\n", |
diff --git a/arch/sparc64/kernel/pci.c b/arch/sparc64/kernel/pci.c index cf9a75112d0f..d4c077dc5e85 100644 --- a/arch/sparc64/kernel/pci.c +++ b/arch/sparc64/kernel/pci.c | |||
@@ -495,8 +495,8 @@ static void __devinit apb_calc_first_last(u8 map, u32 *first_p, u32 *last_p) | |||
495 | *last_p = last; | 495 | *last_p = last; |
496 | } | 496 | } |
497 | 497 | ||
498 | static void __init pci_resource_adjust(struct resource *res, | 498 | static void pci_resource_adjust(struct resource *res, |
499 | struct resource *root) | 499 | struct resource *root) |
500 | { | 500 | { |
501 | res->start += root->start; | 501 | res->start += root->start; |
502 | res->end += root->start; | 502 | res->end += root->start; |
diff --git a/arch/sparc64/kernel/pci_fire.c b/arch/sparc64/kernel/pci_fire.c index 9198c1a0f7a5..7f5d473901c4 100644 --- a/arch/sparc64/kernel/pci_fire.c +++ b/arch/sparc64/kernel/pci_fire.c | |||
@@ -37,7 +37,7 @@ static void pci_fire_scan_bus(struct pci_pbm_info *pbm) | |||
37 | #define FIRE_IOMMU_CONTROL 0x40000UL | 37 | #define FIRE_IOMMU_CONTROL 0x40000UL |
38 | #define FIRE_IOMMU_TSBBASE 0x40008UL | 38 | #define FIRE_IOMMU_TSBBASE 0x40008UL |
39 | #define FIRE_IOMMU_FLUSH 0x40100UL | 39 | #define FIRE_IOMMU_FLUSH 0x40100UL |
40 | #define FIRE_IOMMU_FLUSHINV 0x40100UL | 40 | #define FIRE_IOMMU_FLUSHINV 0x40108UL |
41 | 41 | ||
42 | static void pci_fire_pbm_iommu_init(struct pci_pbm_info *pbm) | 42 | static void pci_fire_pbm_iommu_init(struct pci_pbm_info *pbm) |
43 | { | 43 | { |
diff --git a/arch/sparc64/kernel/pci_iommu.c b/arch/sparc64/kernel/pci_iommu.c index dfd6f9f4790b..70d2364fdfe0 100644 --- a/arch/sparc64/kernel/pci_iommu.c +++ b/arch/sparc64/kernel/pci_iommu.c | |||
@@ -542,7 +542,7 @@ static inline void fill_sg(iopte_t *iopte, struct scatterlist *sg, | |||
542 | /* Map a set of buffers described by SGLIST with NELEMS array | 542 | /* Map a set of buffers described by SGLIST with NELEMS array |
543 | * elements in streaming mode for PCI DMA. | 543 | * elements in streaming mode for PCI DMA. |
544 | * When making changes here, inspect the assembly output. I was having | 544 | * When making changes here, inspect the assembly output. I was having |
545 | * hard time to kepp this routine out of using stack slots for holding variables. | 545 | * hard time to keep this routine out of using stack slots for holding variables. |
546 | */ | 546 | */ |
547 | static int pci_4u_map_sg(struct pci_dev *pdev, struct scatterlist *sglist, int nelems, int direction) | 547 | static int pci_4u_map_sg(struct pci_dev *pdev, struct scatterlist *sglist, int nelems, int direction) |
548 | { | 548 | { |
diff --git a/arch/sparc64/kernel/pci_sun4v.c b/arch/sparc64/kernel/pci_sun4v.c index 34df4047587a..044e8ec4c0f5 100644 --- a/arch/sparc64/kernel/pci_sun4v.c +++ b/arch/sparc64/kernel/pci_sun4v.c | |||
@@ -731,7 +731,7 @@ struct pci_sun4v_msiq_entry { | |||
731 | 731 | ||
732 | u64 msi_address; | 732 | u64 msi_address; |
733 | 733 | ||
734 | /* The format of this value is message type dependant. | 734 | /* The format of this value is message type dependent. |
735 | * For MSI bits 15:0 are the data from the MSI packet. | 735 | * For MSI bits 15:0 are the data from the MSI packet. |
736 | * For MSI-X bits 31:0 are the data from the MSI packet. | 736 | * For MSI-X bits 31:0 are the data from the MSI packet. |
737 | * For MSG, the message code and message routing code where: | 737 | * For MSG, the message code and message routing code where: |
diff --git a/arch/sparc64/kernel/process.c b/arch/sparc64/kernel/process.c index 8e3c6e435110..952762bfb4c0 100644 --- a/arch/sparc64/kernel/process.c +++ b/arch/sparc64/kernel/process.c | |||
@@ -677,7 +677,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long sp, | |||
677 | * NOTE! Only a kernel-only process(ie the swapper or direct descendants | 677 | * NOTE! Only a kernel-only process(ie the swapper or direct descendants |
678 | * who haven't done an "execve()") should use this: it will work within | 678 | * who haven't done an "execve()") should use this: it will work within |
679 | * a system call from a "real" process, but the process memory space will | 679 | * a system call from a "real" process, but the process memory space will |
680 | * not be free'd until both the parent and the child have exited. | 680 | * not be freed until both the parent and the child have exited. |
681 | */ | 681 | */ |
682 | pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) | 682 | pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) |
683 | { | 683 | { |
diff --git a/arch/sparc64/kernel/prom.c b/arch/sparc64/kernel/prom.c index b7976b14d0ba..02830e4671f5 100644 --- a/arch/sparc64/kernel/prom.c +++ b/arch/sparc64/kernel/prom.c | |||
@@ -899,7 +899,7 @@ static unsigned int fire_irq_build(struct device_node *dp, | |||
899 | /* The interrupt map registers do not have an INO field | 899 | /* The interrupt map registers do not have an INO field |
900 | * like other chips do. They return zero in the INO | 900 | * like other chips do. They return zero in the INO |
901 | * field, and the interrupt controller number is controlled | 901 | * field, and the interrupt controller number is controlled |
902 | * in bits 6 thru 9. So in order for build_irq() to get | 902 | * in bits 6 to 9. So in order for build_irq() to get |
903 | * the INO right we pass it in as part of the fixup | 903 | * the INO right we pass it in as part of the fixup |
904 | * which will get added to the map register zero value | 904 | * which will get added to the map register zero value |
905 | * read by build_irq(). | 905 | * read by build_irq(). |
diff --git a/arch/sparc64/kernel/systbls.S b/arch/sparc64/kernel/systbls.S index 5fe7f9ad4a92..8765e32155a0 100644 --- a/arch/sparc64/kernel/systbls.S +++ b/arch/sparc64/kernel/systbls.S | |||
@@ -81,7 +81,7 @@ sys_call_table32: | |||
81 | .word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare | 81 | .word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare |
82 | /*300*/ .word compat_sys_set_robust_list, compat_sys_get_robust_list, compat_sys_migrate_pages, compat_sys_mbind, compat_sys_get_mempolicy | 82 | /*300*/ .word compat_sys_set_robust_list, compat_sys_get_robust_list, compat_sys_migrate_pages, compat_sys_mbind, compat_sys_get_mempolicy |
83 | .word compat_sys_set_mempolicy, compat_sys_kexec_load, compat_sys_move_pages, sys_getcpu, compat_sys_epoll_pwait | 83 | .word compat_sys_set_mempolicy, compat_sys_kexec_load, compat_sys_move_pages, sys_getcpu, compat_sys_epoll_pwait |
84 | /*310*/ .word compat_sys_utimensat | 84 | /*310*/ .word compat_sys_utimensat, compat_sys_signalfd, compat_sys_timerfd, sys_eventfd |
85 | 85 | ||
86 | #endif /* CONFIG_COMPAT */ | 86 | #endif /* CONFIG_COMPAT */ |
87 | 87 | ||
@@ -153,7 +153,7 @@ sys_call_table: | |||
153 | .word sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare | 153 | .word sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare |
154 | /*300*/ .word sys_set_robust_list, sys_get_robust_list, sys_migrate_pages, sys_mbind, sys_get_mempolicy | 154 | /*300*/ .word sys_set_robust_list, sys_get_robust_list, sys_migrate_pages, sys_mbind, sys_get_mempolicy |
155 | .word sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait | 155 | .word sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait |
156 | /*310*/ .word sys_utimensat | 156 | /*310*/ .word sys_utimensat, sys_signalfd, sys_timerfd, sys_eventfd |
157 | 157 | ||
158 | #if defined(CONFIG_SUNOS_EMUL) || defined(CONFIG_SOLARIS_EMUL) || \ | 158 | #if defined(CONFIG_SUNOS_EMUL) || defined(CONFIG_SOLARIS_EMUL) || \ |
159 | defined(CONFIG_SOLARIS_EMUL_MODULE) | 159 | defined(CONFIG_SOLARIS_EMUL_MODULE) |
@@ -271,6 +271,7 @@ sunos_sys_table: | |||
271 | .word sunos_nosys, sunos_nosys, sunos_nosys | 271 | .word sunos_nosys, sunos_nosys, sunos_nosys |
272 | .word sunos_nosys, sunos_nosys, sunos_nosys | 272 | .word sunos_nosys, sunos_nosys, sunos_nosys |
273 | .word sunos_nosys | 273 | .word sunos_nosys |
274 | /*310*/ .long sunos_nosys | 274 | /*310*/ .word sunos_nosys, sunos_nosys, sunos_nosys |
275 | .word sunos_nosys | ||
275 | 276 | ||
276 | #endif | 277 | #endif |
diff --git a/arch/sparc64/kernel/time.c b/arch/sparc64/kernel/time.c index 259063f41f95..6b9a06e42542 100644 --- a/arch/sparc64/kernel/time.c +++ b/arch/sparc64/kernel/time.c | |||
@@ -55,6 +55,7 @@ DEFINE_SPINLOCK(rtc_lock); | |||
55 | void __iomem *mstk48t02_regs = NULL; | 55 | void __iomem *mstk48t02_regs = NULL; |
56 | #ifdef CONFIG_PCI | 56 | #ifdef CONFIG_PCI |
57 | unsigned long ds1287_regs = 0UL; | 57 | unsigned long ds1287_regs = 0UL; |
58 | static void __iomem *bq4802_regs; | ||
58 | #endif | 59 | #endif |
59 | 60 | ||
60 | static void __iomem *mstk48t08_regs; | 61 | static void __iomem *mstk48t08_regs; |
@@ -565,12 +566,14 @@ static void __init set_system_time(void) | |||
565 | void __iomem *mregs = mstk48t02_regs; | 566 | void __iomem *mregs = mstk48t02_regs; |
566 | #ifdef CONFIG_PCI | 567 | #ifdef CONFIG_PCI |
567 | unsigned long dregs = ds1287_regs; | 568 | unsigned long dregs = ds1287_regs; |
569 | void __iomem *bregs = bq4802_regs; | ||
568 | #else | 570 | #else |
569 | unsigned long dregs = 0UL; | 571 | unsigned long dregs = 0UL; |
572 | void __iomem *bregs = 0UL; | ||
570 | #endif | 573 | #endif |
571 | u8 tmp; | 574 | u8 tmp; |
572 | 575 | ||
573 | if (!mregs && !dregs) { | 576 | if (!mregs && !dregs && !bregs) { |
574 | prom_printf("Something wrong, clock regs not mapped yet.\n"); | 577 | prom_printf("Something wrong, clock regs not mapped yet.\n"); |
575 | prom_halt(); | 578 | prom_halt(); |
576 | } | 579 | } |
@@ -589,6 +592,33 @@ static void __init set_system_time(void) | |||
589 | day = MSTK_REG_DOM(mregs); | 592 | day = MSTK_REG_DOM(mregs); |
590 | mon = MSTK_REG_MONTH(mregs); | 593 | mon = MSTK_REG_MONTH(mregs); |
591 | year = MSTK_CVT_YEAR( MSTK_REG_YEAR(mregs) ); | 594 | year = MSTK_CVT_YEAR( MSTK_REG_YEAR(mregs) ); |
595 | } else if (bregs) { | ||
596 | unsigned char val = readb(bregs + 0x0e); | ||
597 | unsigned int century; | ||
598 | |||
599 | /* BQ4802 RTC chip. */ | ||
600 | |||
601 | writeb(val | 0x08, bregs + 0x0e); | ||
602 | |||
603 | sec = readb(bregs + 0x00); | ||
604 | min = readb(bregs + 0x02); | ||
605 | hour = readb(bregs + 0x04); | ||
606 | day = readb(bregs + 0x06); | ||
607 | mon = readb(bregs + 0x09); | ||
608 | year = readb(bregs + 0x0a); | ||
609 | century = readb(bregs + 0x0f); | ||
610 | |||
611 | writeb(val, bregs + 0x0e); | ||
612 | |||
613 | BCD_TO_BIN(sec); | ||
614 | BCD_TO_BIN(min); | ||
615 | BCD_TO_BIN(hour); | ||
616 | BCD_TO_BIN(day); | ||
617 | BCD_TO_BIN(mon); | ||
618 | BCD_TO_BIN(year); | ||
619 | BCD_TO_BIN(century); | ||
620 | |||
621 | year += (century * 100); | ||
592 | } else { | 622 | } else { |
593 | /* Dallas 12887 RTC chip. */ | 623 | /* Dallas 12887 RTC chip. */ |
594 | 624 | ||
@@ -712,7 +742,8 @@ static int __init clock_model_matches(const char *model) | |||
712 | strcmp(model, "m5819") && | 742 | strcmp(model, "m5819") && |
713 | strcmp(model, "m5819p") && | 743 | strcmp(model, "m5819p") && |
714 | strcmp(model, "m5823") && | 744 | strcmp(model, "m5823") && |
715 | strcmp(model, "ds1287")) | 745 | strcmp(model, "ds1287") && |
746 | strcmp(model, "bq4802")) | ||
716 | return 0; | 747 | return 0; |
717 | 748 | ||
718 | return 1; | 749 | return 1; |
@@ -722,9 +753,13 @@ static int __devinit clock_probe(struct of_device *op, const struct of_device_id | |||
722 | { | 753 | { |
723 | struct device_node *dp = op->node; | 754 | struct device_node *dp = op->node; |
724 | const char *model = of_get_property(dp, "model", NULL); | 755 | const char *model = of_get_property(dp, "model", NULL); |
756 | const char *compat = of_get_property(dp, "compatible", NULL); | ||
725 | unsigned long size, flags; | 757 | unsigned long size, flags; |
726 | void __iomem *regs; | 758 | void __iomem *regs; |
727 | 759 | ||
760 | if (!model) | ||
761 | model = compat; | ||
762 | |||
728 | if (!model || !clock_model_matches(model)) | 763 | if (!model || !clock_model_matches(model)) |
729 | return -ENODEV; | 764 | return -ENODEV; |
730 | 765 | ||
@@ -746,6 +781,8 @@ static int __devinit clock_probe(struct of_device *op, const struct of_device_id | |||
746 | !strcmp(model, "m5819p") || | 781 | !strcmp(model, "m5819p") || |
747 | !strcmp(model, "m5823")) { | 782 | !strcmp(model, "m5823")) { |
748 | ds1287_regs = (unsigned long) regs; | 783 | ds1287_regs = (unsigned long) regs; |
784 | } else if (!strcmp(model, "bq4802")) { | ||
785 | bq4802_regs = regs; | ||
749 | } else | 786 | } else |
750 | #endif | 787 | #endif |
751 | if (model[5] == '0' && model[6] == '2') { | 788 | if (model[5] == '0' && model[6] == '2') { |
@@ -1070,8 +1107,10 @@ static int set_rtc_mmss(unsigned long nowtime) | |||
1070 | void __iomem *mregs = mstk48t02_regs; | 1107 | void __iomem *mregs = mstk48t02_regs; |
1071 | #ifdef CONFIG_PCI | 1108 | #ifdef CONFIG_PCI |
1072 | unsigned long dregs = ds1287_regs; | 1109 | unsigned long dregs = ds1287_regs; |
1110 | void __iomem *bregs = bq4802_regs; | ||
1073 | #else | 1111 | #else |
1074 | unsigned long dregs = 0UL; | 1112 | unsigned long dregs = 0UL; |
1113 | void __iomem *bregs = 0UL; | ||
1075 | #endif | 1114 | #endif |
1076 | unsigned long flags; | 1115 | unsigned long flags; |
1077 | u8 tmp; | 1116 | u8 tmp; |
@@ -1080,7 +1119,7 @@ static int set_rtc_mmss(unsigned long nowtime) | |||
1080 | * Not having a register set can lead to trouble. | 1119 | * Not having a register set can lead to trouble. |
1081 | * Also starfire doesn't have a tod clock. | 1120 | * Also starfire doesn't have a tod clock. |
1082 | */ | 1121 | */ |
1083 | if (!mregs && !dregs) | 1122 | if (!mregs && !dregs & !bregs) |
1084 | return -1; | 1123 | return -1; |
1085 | 1124 | ||
1086 | if (mregs) { | 1125 | if (mregs) { |
@@ -1129,6 +1168,37 @@ static int set_rtc_mmss(unsigned long nowtime) | |||
1129 | 1168 | ||
1130 | return -1; | 1169 | return -1; |
1131 | } | 1170 | } |
1171 | } else if (bregs) { | ||
1172 | int retval = 0; | ||
1173 | unsigned char val = readb(bregs + 0x0e); | ||
1174 | |||
1175 | /* BQ4802 RTC chip. */ | ||
1176 | |||
1177 | writeb(val | 0x08, bregs + 0x0e); | ||
1178 | |||
1179 | chip_minutes = readb(bregs + 0x02); | ||
1180 | BCD_TO_BIN(chip_minutes); | ||
1181 | real_seconds = nowtime % 60; | ||
1182 | real_minutes = nowtime / 60; | ||
1183 | if (((abs(real_minutes - chip_minutes) + 15)/30) & 1) | ||
1184 | real_minutes += 30; | ||
1185 | real_minutes %= 60; | ||
1186 | |||
1187 | if (abs(real_minutes - chip_minutes) < 30) { | ||
1188 | BIN_TO_BCD(real_seconds); | ||
1189 | BIN_TO_BCD(real_minutes); | ||
1190 | writeb(real_seconds, bregs + 0x00); | ||
1191 | writeb(real_minutes, bregs + 0x02); | ||
1192 | } else { | ||
1193 | printk(KERN_WARNING | ||
1194 | "set_rtc_mmss: can't update from %d to %d\n", | ||
1195 | chip_minutes, real_minutes); | ||
1196 | retval = -1; | ||
1197 | } | ||
1198 | |||
1199 | writeb(val, bregs + 0x0e); | ||
1200 | |||
1201 | return retval; | ||
1132 | } else { | 1202 | } else { |
1133 | int retval = 0; | 1203 | int retval = 0; |
1134 | unsigned char save_control, save_freq_select; | 1204 | unsigned char save_control, save_freq_select; |
@@ -1259,38 +1329,152 @@ static void to_tm(int tim, struct rtc_time *tm) | |||
1259 | /* Both Starfire and SUN4V give us seconds since Jan 1st, 1970, | 1329 | /* Both Starfire and SUN4V give us seconds since Jan 1st, 1970, |
1260 | * aka Unix time. So we have to convert to/from rtc_time. | 1330 | * aka Unix time. So we have to convert to/from rtc_time. |
1261 | */ | 1331 | */ |
1262 | static inline void mini_get_rtc_time(struct rtc_time *time) | 1332 | static void starfire_get_rtc_time(struct rtc_time *time) |
1263 | { | 1333 | { |
1264 | unsigned long flags; | 1334 | u32 seconds = starfire_get_time(); |
1265 | u32 seconds; | ||
1266 | 1335 | ||
1267 | spin_lock_irqsave(&rtc_lock, flags); | 1336 | to_tm(seconds, time); |
1268 | seconds = 0; | 1337 | time->tm_year -= 1900; |
1269 | if (this_is_starfire) | 1338 | time->tm_mon -= 1; |
1270 | seconds = starfire_get_time(); | 1339 | } |
1271 | else if (tlb_type == hypervisor) | 1340 | |
1272 | seconds = hypervisor_get_time(); | 1341 | static int starfire_set_rtc_time(struct rtc_time *time) |
1273 | spin_unlock_irqrestore(&rtc_lock, flags); | 1342 | { |
1343 | u32 seconds = mktime(time->tm_year + 1900, time->tm_mon + 1, | ||
1344 | time->tm_mday, time->tm_hour, | ||
1345 | time->tm_min, time->tm_sec); | ||
1346 | |||
1347 | return starfire_set_time(seconds); | ||
1348 | } | ||
1349 | |||
1350 | static void hypervisor_get_rtc_time(struct rtc_time *time) | ||
1351 | { | ||
1352 | u32 seconds = hypervisor_get_time(); | ||
1274 | 1353 | ||
1275 | to_tm(seconds, time); | 1354 | to_tm(seconds, time); |
1276 | time->tm_year -= 1900; | 1355 | time->tm_year -= 1900; |
1277 | time->tm_mon -= 1; | 1356 | time->tm_mon -= 1; |
1278 | } | 1357 | } |
1279 | 1358 | ||
1280 | static inline int mini_set_rtc_time(struct rtc_time *time) | 1359 | static int hypervisor_set_rtc_time(struct rtc_time *time) |
1281 | { | 1360 | { |
1282 | u32 seconds = mktime(time->tm_year + 1900, time->tm_mon + 1, | 1361 | u32 seconds = mktime(time->tm_year + 1900, time->tm_mon + 1, |
1283 | time->tm_mday, time->tm_hour, | 1362 | time->tm_mday, time->tm_hour, |
1284 | time->tm_min, time->tm_sec); | 1363 | time->tm_min, time->tm_sec); |
1364 | |||
1365 | return hypervisor_set_time(seconds); | ||
1366 | } | ||
1367 | |||
1368 | static void bq4802_get_rtc_time(struct rtc_time *time) | ||
1369 | { | ||
1370 | unsigned char val = readb(bq4802_regs + 0x0e); | ||
1371 | unsigned int century; | ||
1372 | |||
1373 | writeb(val | 0x08, bq4802_regs + 0x0e); | ||
1374 | |||
1375 | time->tm_sec = readb(bq4802_regs + 0x00); | ||
1376 | time->tm_min = readb(bq4802_regs + 0x02); | ||
1377 | time->tm_hour = readb(bq4802_regs + 0x04); | ||
1378 | time->tm_mday = readb(bq4802_regs + 0x06); | ||
1379 | time->tm_mon = readb(bq4802_regs + 0x09); | ||
1380 | time->tm_year = readb(bq4802_regs + 0x0a); | ||
1381 | time->tm_wday = readb(bq4802_regs + 0x08); | ||
1382 | century = readb(bq4802_regs + 0x0f); | ||
1383 | |||
1384 | writeb(val, bq4802_regs + 0x0e); | ||
1385 | |||
1386 | BCD_TO_BIN(time->tm_sec); | ||
1387 | BCD_TO_BIN(time->tm_min); | ||
1388 | BCD_TO_BIN(time->tm_hour); | ||
1389 | BCD_TO_BIN(time->tm_mday); | ||
1390 | BCD_TO_BIN(time->tm_mon); | ||
1391 | BCD_TO_BIN(time->tm_year); | ||
1392 | BCD_TO_BIN(time->tm_wday); | ||
1393 | BCD_TO_BIN(century); | ||
1394 | |||
1395 | time->tm_year += (century * 100); | ||
1396 | time->tm_year -= 1900; | ||
1397 | |||
1398 | time->tm_mon--; | ||
1399 | } | ||
1400 | |||
1401 | static int bq4802_set_rtc_time(struct rtc_time *time) | ||
1402 | { | ||
1403 | unsigned char val = readb(bq4802_regs + 0x0e); | ||
1404 | unsigned char sec, min, hrs, day, mon, yrs, century; | ||
1405 | unsigned int year; | ||
1406 | |||
1407 | year = time->tm_year + 1900; | ||
1408 | century = year / 100; | ||
1409 | yrs = year % 100; | ||
1410 | |||
1411 | mon = time->tm_mon + 1; /* tm_mon starts at zero */ | ||
1412 | day = time->tm_mday; | ||
1413 | hrs = time->tm_hour; | ||
1414 | min = time->tm_min; | ||
1415 | sec = time->tm_sec; | ||
1416 | |||
1417 | BIN_TO_BCD(sec); | ||
1418 | BIN_TO_BCD(min); | ||
1419 | BIN_TO_BCD(hrs); | ||
1420 | BIN_TO_BCD(day); | ||
1421 | BIN_TO_BCD(mon); | ||
1422 | BIN_TO_BCD(yrs); | ||
1423 | BIN_TO_BCD(century); | ||
1424 | |||
1425 | writeb(val | 0x08, bq4802_regs + 0x0e); | ||
1426 | |||
1427 | writeb(sec, bq4802_regs + 0x00); | ||
1428 | writeb(min, bq4802_regs + 0x02); | ||
1429 | writeb(hrs, bq4802_regs + 0x04); | ||
1430 | writeb(day, bq4802_regs + 0x06); | ||
1431 | writeb(mon, bq4802_regs + 0x09); | ||
1432 | writeb(yrs, bq4802_regs + 0x0a); | ||
1433 | writeb(century, bq4802_regs + 0x0f); | ||
1434 | |||
1435 | writeb(val, bq4802_regs + 0x0e); | ||
1436 | |||
1437 | return 0; | ||
1438 | } | ||
1439 | |||
1440 | struct mini_rtc_ops { | ||
1441 | void (*get_rtc_time)(struct rtc_time *); | ||
1442 | int (*set_rtc_time)(struct rtc_time *); | ||
1443 | }; | ||
1444 | |||
1445 | static struct mini_rtc_ops starfire_rtc_ops = { | ||
1446 | .get_rtc_time = starfire_get_rtc_time, | ||
1447 | .set_rtc_time = starfire_set_rtc_time, | ||
1448 | }; | ||
1449 | |||
1450 | static struct mini_rtc_ops hypervisor_rtc_ops = { | ||
1451 | .get_rtc_time = hypervisor_get_rtc_time, | ||
1452 | .set_rtc_time = hypervisor_set_rtc_time, | ||
1453 | }; | ||
1454 | |||
1455 | static struct mini_rtc_ops bq4802_rtc_ops = { | ||
1456 | .get_rtc_time = bq4802_get_rtc_time, | ||
1457 | .set_rtc_time = bq4802_set_rtc_time, | ||
1458 | }; | ||
1459 | |||
1460 | static struct mini_rtc_ops *mini_rtc_ops; | ||
1461 | |||
1462 | static inline void mini_get_rtc_time(struct rtc_time *time) | ||
1463 | { | ||
1464 | unsigned long flags; | ||
1465 | |||
1466 | spin_lock_irqsave(&rtc_lock, flags); | ||
1467 | mini_rtc_ops->get_rtc_time(time); | ||
1468 | spin_unlock_irqrestore(&rtc_lock, flags); | ||
1469 | } | ||
1470 | |||
1471 | static inline int mini_set_rtc_time(struct rtc_time *time) | ||
1472 | { | ||
1285 | unsigned long flags; | 1473 | unsigned long flags; |
1286 | int err; | 1474 | int err; |
1287 | 1475 | ||
1288 | spin_lock_irqsave(&rtc_lock, flags); | 1476 | spin_lock_irqsave(&rtc_lock, flags); |
1289 | err = -ENODEV; | 1477 | err = mini_rtc_ops->set_rtc_time(time); |
1290 | if (this_is_starfire) | ||
1291 | err = starfire_set_time(seconds); | ||
1292 | else if (tlb_type == hypervisor) | ||
1293 | err = hypervisor_set_time(seconds); | ||
1294 | spin_unlock_irqrestore(&rtc_lock, flags); | 1478 | spin_unlock_irqrestore(&rtc_lock, flags); |
1295 | 1479 | ||
1296 | return err; | 1480 | return err; |
@@ -1391,7 +1575,13 @@ static int __init rtc_mini_init(void) | |||
1391 | { | 1575 | { |
1392 | int retval; | 1576 | int retval; |
1393 | 1577 | ||
1394 | if (tlb_type != hypervisor && !this_is_starfire) | 1578 | if (tlb_type == hypervisor) |
1579 | mini_rtc_ops = &hypervisor_rtc_ops; | ||
1580 | else if (this_is_starfire) | ||
1581 | mini_rtc_ops = &starfire_rtc_ops; | ||
1582 | else if (bq4802_regs) | ||
1583 | mini_rtc_ops = &bq4802_rtc_ops; | ||
1584 | else | ||
1395 | return -ENODEV; | 1585 | return -ENODEV; |
1396 | 1586 | ||
1397 | printk(KERN_INFO "Mini RTC Driver\n"); | 1587 | printk(KERN_INFO "Mini RTC Driver\n"); |
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c index d7004eaf1c8e..6e5b01d779d2 100644 --- a/arch/sparc64/mm/init.c +++ b/arch/sparc64/mm/init.c | |||
@@ -1008,7 +1008,7 @@ static unsigned long __init bootmem_init(unsigned long *pages_avail, | |||
1008 | if (initrd_start) { | 1008 | if (initrd_start) { |
1009 | size = initrd_end - initrd_start; | 1009 | size = initrd_end - initrd_start; |
1010 | 1010 | ||
1011 | /* Resert the initrd image area. */ | 1011 | /* Reserve the initrd image area. */ |
1012 | #ifdef CONFIG_DEBUG_BOOTMEM | 1012 | #ifdef CONFIG_DEBUG_BOOTMEM |
1013 | prom_printf("reserve_bootmem(initrd): base[%llx] size[%lx]\n", | 1013 | prom_printf("reserve_bootmem(initrd): base[%llx] size[%lx]\n", |
1014 | initrd_start, initrd_end); | 1014 | initrd_start, initrd_end); |