diff options
author | Linus Torvalds <torvalds@evo.osdl.org> | 2005-09-05 03:12:58 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@evo.osdl.org> | 2005-09-05 03:12:58 -0400 |
commit | e766f1cc596078b1603ac2c96617660c4c7e2d81 (patch) | |
tree | 86f24a621dbe39fd25dcec539c2f969f50bfbcab | |
parent | 48467641bcc057f7cba3b6cbbe66cb834d64cc81 (diff) | |
parent | ebede60741e2cec6d210f137fd22a30e37abc0be (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
-rw-r--r-- | arch/sparc/kernel/sparc_ksyms.c | 1 | ||||
-rw-r--r-- | arch/sparc/mm/generic.c | 57 | ||||
-rw-r--r-- | arch/sparc64/Kconfig | 328 | ||||
-rw-r--r-- | arch/sparc64/kernel/entry.S | 309 | ||||
-rw-r--r-- | arch/sparc64/kernel/head.S | 3 | ||||
-rw-r--r-- | arch/sparc64/kernel/pci.c | 3 | ||||
-rw-r--r-- | arch/sparc64/kernel/rtrap.S | 13 | ||||
-rw-r--r-- | arch/sparc64/kernel/setup.c | 12 | ||||
-rw-r--r-- | arch/sparc64/kernel/sparc64_ksyms.c | 3 | ||||
-rw-r--r-- | arch/sparc64/lib/PeeCeeI.c | 77 | ||||
-rw-r--r-- | arch/sparc64/lib/copy_page.S | 13 | ||||
-rw-r--r-- | arch/sparc64/mm/generic.c | 31 | ||||
-rw-r--r-- | arch/sparc64/mm/ultra.S | 39 | ||||
-rw-r--r-- | drivers/char/Kconfig | 2 | ||||
-rw-r--r-- | drivers/sbus/char/Kconfig | 39 | ||||
-rw-r--r-- | include/asm-sparc/pgtable.h | 3 | ||||
-rw-r--r-- | include/asm-sparc64/cpudata.h | 4 | ||||
-rw-r--r-- | include/asm-sparc64/hardirq.h | 16 | ||||
-rw-r--r-- | include/asm-sparc64/io.h | 47 | ||||
-rw-r--r-- | include/asm-sparc64/pgtable.h | 3 |
20 files changed, 362 insertions, 641 deletions
diff --git a/arch/sparc/kernel/sparc_ksyms.c b/arch/sparc/kernel/sparc_ksyms.c index 8faa8dc4de43..5d974a2b735a 100644 --- a/arch/sparc/kernel/sparc_ksyms.c +++ b/arch/sparc/kernel/sparc_ksyms.c | |||
@@ -175,7 +175,6 @@ EXPORT_SYMBOL(set_auxio); | |||
175 | EXPORT_SYMBOL(get_auxio); | 175 | EXPORT_SYMBOL(get_auxio); |
176 | #endif | 176 | #endif |
177 | EXPORT_SYMBOL(request_fast_irq); | 177 | EXPORT_SYMBOL(request_fast_irq); |
178 | EXPORT_SYMBOL(io_remap_page_range); | ||
179 | EXPORT_SYMBOL(io_remap_pfn_range); | 178 | EXPORT_SYMBOL(io_remap_pfn_range); |
180 | /* P3: iounit_xxx may be needed, sun4d users */ | 179 | /* P3: iounit_xxx may be needed, sun4d users */ |
181 | /* EXPORT_SYMBOL(iounit_map_dma_init); */ | 180 | /* EXPORT_SYMBOL(iounit_map_dma_init); */ |
diff --git a/arch/sparc/mm/generic.c b/arch/sparc/mm/generic.c index db27eee3bda1..20ccb957fb77 100644 --- a/arch/sparc/mm/generic.c +++ b/arch/sparc/mm/generic.c | |||
@@ -16,31 +16,6 @@ | |||
16 | #include <asm/cacheflush.h> | 16 | #include <asm/cacheflush.h> |
17 | #include <asm/tlbflush.h> | 17 | #include <asm/tlbflush.h> |
18 | 18 | ||
19 | static inline void forget_pte(pte_t page) | ||
20 | { | ||
21 | #if 0 /* old 2.4 code */ | ||
22 | if (pte_none(page)) | ||
23 | return; | ||
24 | if (pte_present(page)) { | ||
25 | unsigned long pfn = pte_pfn(page); | ||
26 | struct page *ptpage; | ||
27 | if (!pfn_valid(pfn)) | ||
28 | return; | ||
29 | ptpage = pfn_to_page(pfn); | ||
30 | if (PageReserved(ptpage)) | ||
31 | return; | ||
32 | page_cache_release(ptpage); | ||
33 | return; | ||
34 | } | ||
35 | swap_free(pte_to_swp_entry(page)); | ||
36 | #else | ||
37 | if (!pte_none(page)) { | ||
38 | printk("forget_pte: old mapping existed!\n"); | ||
39 | BUG(); | ||
40 | } | ||
41 | #endif | ||
42 | } | ||
43 | |||
44 | /* Remap IO memory, the same way as remap_pfn_range(), but use | 19 | /* Remap IO memory, the same way as remap_pfn_range(), but use |
45 | * the obio memory space. | 20 | * the obio memory space. |
46 | * | 21 | * |
@@ -60,7 +35,6 @@ static inline void io_remap_pte_range(struct mm_struct *mm, pte_t * pte, unsigne | |||
60 | pte_t oldpage = *pte; | 35 | pte_t oldpage = *pte; |
61 | pte_clear(mm, address, pte); | 36 | pte_clear(mm, address, pte); |
62 | set_pte(pte, mk_pte_io(offset, prot, space)); | 37 | set_pte(pte, mk_pte_io(offset, prot, space)); |
63 | forget_pte(oldpage); | ||
64 | address += PAGE_SIZE; | 38 | address += PAGE_SIZE; |
65 | offset += PAGE_SIZE; | 39 | offset += PAGE_SIZE; |
66 | pte++; | 40 | pte++; |
@@ -88,37 +62,6 @@ static inline int io_remap_pmd_range(struct mm_struct *mm, pmd_t * pmd, unsigned | |||
88 | return 0; | 62 | return 0; |
89 | } | 63 | } |
90 | 64 | ||
91 | int io_remap_page_range(struct vm_area_struct *vma, unsigned long from, unsigned long offset, unsigned long size, pgprot_t prot, int space) | ||
92 | { | ||
93 | int error = 0; | ||
94 | pgd_t * dir; | ||
95 | unsigned long beg = from; | ||
96 | unsigned long end = from + size; | ||
97 | struct mm_struct *mm = vma->vm_mm; | ||
98 | |||
99 | prot = __pgprot(pg_iobits); | ||
100 | offset -= from; | ||
101 | dir = pgd_offset(mm, from); | ||
102 | flush_cache_range(vma, beg, end); | ||
103 | |||
104 | spin_lock(&mm->page_table_lock); | ||
105 | while (from < end) { | ||
106 | pmd_t *pmd = pmd_alloc(current->mm, dir, from); | ||
107 | error = -ENOMEM; | ||
108 | if (!pmd) | ||
109 | break; | ||
110 | error = io_remap_pmd_range(mm, pmd, from, end - from, offset + from, prot, space); | ||
111 | if (error) | ||
112 | break; | ||
113 | from = (from + PGDIR_SIZE) & PGDIR_MASK; | ||
114 | dir++; | ||
115 | } | ||
116 | spin_unlock(&mm->page_table_lock); | ||
117 | |||
118 | flush_tlb_range(vma, beg, end); | ||
119 | return error; | ||
120 | } | ||
121 | |||
122 | int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from, | 65 | int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from, |
123 | unsigned long pfn, unsigned long size, pgprot_t prot) | 66 | unsigned long pfn, unsigned long size, pgprot_t prot) |
124 | { | 67 | { |
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig index 9afd28e2c4d5..17846f4ba9b6 100644 --- a/arch/sparc64/Kconfig +++ b/arch/sparc64/Kconfig | |||
@@ -5,6 +5,16 @@ | |||
5 | 5 | ||
6 | mainmenu "Linux/UltraSPARC Kernel Configuration" | 6 | mainmenu "Linux/UltraSPARC Kernel Configuration" |
7 | 7 | ||
8 | config SPARC64 | ||
9 | bool | ||
10 | default y | ||
11 | help | ||
12 | SPARC is a family of RISC microprocessors designed and marketed by | ||
13 | Sun Microsystems, incorporated. This port covers the newer 64-bit | ||
14 | UltraSPARC. The UltraLinux project maintains both the SPARC32 and | ||
15 | SPARC64 ports; its web page is available at | ||
16 | <http://www.ultralinux.org/>. | ||
17 | |||
8 | config 64BIT | 18 | config 64BIT |
9 | def_bool y | 19 | def_bool y |
10 | 20 | ||
@@ -71,75 +81,6 @@ config SYSVIPC_COMPAT | |||
71 | 81 | ||
72 | menu "General machine setup" | 82 | menu "General machine setup" |
73 | 83 | ||
74 | config BBC_I2C | ||
75 | tristate "UltraSPARC-III bootbus i2c controller driver" | ||
76 | depends on PCI | ||
77 | help | ||
78 | The BBC devices on the UltraSPARC III have two I2C controllers. The | ||
79 | first I2C controller connects mainly to configuration PROMs (NVRAM, | ||
80 | CPU configuration, DIMM types, etc.). The second I2C controller | ||
81 | connects to environmental control devices such as fans and | ||
82 | temperature sensors. The second controller also connects to the | ||
83 | smartcard reader, if present. Say Y to enable support for these. | ||
84 | |||
85 | config VT | ||
86 | bool "Virtual terminal" if EMBEDDED | ||
87 | select INPUT | ||
88 | default y | ||
89 | ---help--- | ||
90 | If you say Y here, you will get support for terminal devices with | ||
91 | display and keyboard devices. These are called "virtual" because you | ||
92 | can run several virtual terminals (also called virtual consoles) on | ||
93 | one physical terminal. This is rather useful, for example one | ||
94 | virtual terminal can collect system messages and warnings, another | ||
95 | one can be used for a text-mode user session, and a third could run | ||
96 | an X session, all in parallel. Switching between virtual terminals | ||
97 | is done with certain key combinations, usually Alt-<function key>. | ||
98 | |||
99 | The setterm command ("man setterm") can be used to change the | ||
100 | properties (such as colors or beeping) of a virtual terminal. The | ||
101 | man page console_codes(4) ("man console_codes") contains the special | ||
102 | character sequences that can be used to change those properties | ||
103 | directly. The fonts used on virtual terminals can be changed with | ||
104 | the setfont ("man setfont") command and the key bindings are defined | ||
105 | with the loadkeys ("man loadkeys") command. | ||
106 | |||
107 | You need at least one virtual terminal device in order to make use | ||
108 | of your keyboard and monitor. Therefore, only people configuring an | ||
109 | embedded system would want to say N here in order to save some | ||
110 | memory; the only way to log into such a system is then via a serial | ||
111 | or network connection. | ||
112 | |||
113 | If unsure, say Y, or else you won't be able to do much with your new | ||
114 | shiny Linux system :-) | ||
115 | |||
116 | config VT_CONSOLE | ||
117 | bool "Support for console on virtual terminal" if EMBEDDED | ||
118 | depends on VT | ||
119 | default y | ||
120 | ---help--- | ||
121 | The system console is the device which receives all kernel messages | ||
122 | and warnings and which allows logins in single user mode. If you | ||
123 | answer Y here, a virtual terminal (the device used to interact with | ||
124 | a physical terminal) can be used as system console. This is the most | ||
125 | common mode of operations, so you should say Y here unless you want | ||
126 | the kernel messages be output only to a serial port (in which case | ||
127 | you should say Y to "Console on serial port", below). | ||
128 | |||
129 | If you do say Y here, by default the currently visible virtual | ||
130 | terminal (/dev/tty0) will be used as system console. You can change | ||
131 | that with a kernel command line option such as "console=tty3" which | ||
132 | would use the third virtual terminal as system console. (Try "man | ||
133 | bootparam" or see the documentation of your boot loader (lilo or | ||
134 | loadlin) about how to pass options to the kernel at boot time.) | ||
135 | |||
136 | If unsure, say Y. | ||
137 | |||
138 | config HW_CONSOLE | ||
139 | bool | ||
140 | depends on VT | ||
141 | default y | ||
142 | |||
143 | config SMP | 84 | config SMP |
144 | bool "Symmetric multi-processing support" | 85 | bool "Symmetric multi-processing support" |
145 | ---help--- | 86 | ---help--- |
@@ -205,17 +146,6 @@ config US2E_FREQ | |||
205 | 146 | ||
206 | If in doubt, say N. | 147 | If in doubt, say N. |
207 | 148 | ||
208 | # Identify this as a Sparc64 build | ||
209 | config SPARC64 | ||
210 | bool | ||
211 | default y | ||
212 | help | ||
213 | SPARC is a family of RISC microprocessors designed and marketed by | ||
214 | Sun Microsystems, incorporated. This port covers the newer 64-bit | ||
215 | UltraSPARC. The UltraLinux project maintains both the SPARC32 and | ||
216 | SPARC64 ports; its web page is available at | ||
217 | <http://www.ultralinux.org/>. | ||
218 | |||
219 | # Global things across all Sun machines. | 149 | # Global things across all Sun machines. |
220 | config RWSEM_GENERIC_SPINLOCK | 150 | config RWSEM_GENERIC_SPINLOCK |
221 | bool | 151 | bool |
@@ -246,6 +176,12 @@ config HUGETLB_PAGE_SIZE_64K | |||
246 | 176 | ||
247 | endchoice | 177 | endchoice |
248 | 178 | ||
179 | endmenu | ||
180 | |||
181 | source "drivers/firmware/Kconfig" | ||
182 | |||
183 | source "mm/Kconfig" | ||
184 | |||
249 | config GENERIC_ISA_DMA | 185 | config GENERIC_ISA_DMA |
250 | bool | 186 | bool |
251 | default y | 187 | default y |
@@ -344,33 +280,6 @@ config PCI_DOMAINS | |||
344 | bool | 280 | bool |
345 | default PCI | 281 | default PCI |
346 | 282 | ||
347 | config RTC | ||
348 | tristate | ||
349 | depends on PCI | ||
350 | default y | ||
351 | ---help--- | ||
352 | If you say Y here and create a character special file /dev/rtc with | ||
353 | major number 10 and minor number 135 using mknod ("man mknod"), you | ||
354 | will get access to the real time clock (or hardware clock) built | ||
355 | into your computer. | ||
356 | |||
357 | Every PC has such a clock built in. It can be used to generate | ||
358 | signals from as low as 1Hz up to 8192Hz, and can also be used | ||
359 | as a 24 hour alarm. It reports status information via the file | ||
360 | /proc/driver/rtc and its behaviour is set by various ioctls on | ||
361 | /dev/rtc. | ||
362 | |||
363 | If you run Linux on a multiprocessor machine and said Y to | ||
364 | "Symmetric Multi Processing" above, you should say Y here to read | ||
365 | and set the RTC in an SMP compatible fashion. | ||
366 | |||
367 | If you think you have a use for such a device (such as periodic data | ||
368 | sampling), then say Y here, and read <file:Documentation/rtc.txt> | ||
369 | for details. | ||
370 | |||
371 | To compile this driver as a module, choose M here: the | ||
372 | module will be called rtc. | ||
373 | |||
374 | source "drivers/pci/Kconfig" | 283 | source "drivers/pci/Kconfig" |
375 | 284 | ||
376 | config SUN_OPENPROMFS | 285 | config SUN_OPENPROMFS |
@@ -414,6 +323,8 @@ config BINFMT_AOUT32 | |||
414 | If you want to run SunOS binaries (see SunOS binary emulation below) | 323 | If you want to run SunOS binaries (see SunOS binary emulation below) |
415 | or other a.out binaries, say Y. If unsure, say N. | 324 | or other a.out binaries, say Y. If unsure, say N. |
416 | 325 | ||
326 | menu "Executable file formats" | ||
327 | |||
417 | source "fs/Kconfig.binfmt" | 328 | source "fs/Kconfig.binfmt" |
418 | 329 | ||
419 | config SUNOS_EMUL | 330 | config SUNOS_EMUL |
@@ -436,74 +347,7 @@ config SOLARIS_EMUL | |||
436 | To compile this code as a module, choose M here: the | 347 | To compile this code as a module, choose M here: the |
437 | module will be called solaris. | 348 | module will be called solaris. |
438 | 349 | ||
439 | source "drivers/parport/Kconfig" | 350 | endmenu |
440 | |||
441 | config PRINTER | ||
442 | tristate "Parallel printer support" | ||
443 | depends on PARPORT | ||
444 | ---help--- | ||
445 | If you intend to attach a printer to the parallel port of your Linux | ||
446 | box (as opposed to using a serial printer; if the connector at the | ||
447 | printer has 9 or 25 holes ["female"], then it's serial), say Y. | ||
448 | Also read the Printing-HOWTO, available from | ||
449 | <http://www.tldp.org/docs.html#howto>. | ||
450 | |||
451 | It is possible to share one parallel port among several devices | ||
452 | (e.g. printer and ZIP drive) and it is safe to compile the | ||
453 | corresponding drivers into the kernel. | ||
454 | To compile this driver as a module, choose M here and read | ||
455 | <file:Documentation/parport.txt>. The module will be called lp. | ||
456 | |||
457 | If you have several parallel ports, you can specify which ports to | ||
458 | use with the "lp" kernel command line option. (Try "man bootparam" | ||
459 | or see the documentation of your boot loader (lilo or loadlin) about | ||
460 | how to pass options to the kernel at boot time.) The syntax of the | ||
461 | "lp" command line option can be found in <file:drivers/char/lp.c>. | ||
462 | |||
463 | If you have more than 8 printers, you need to increase the LP_NO | ||
464 | macro in lp.c and the PARPORT_MAX macro in parport.h. | ||
465 | |||
466 | config PPDEV | ||
467 | tristate "Support for user-space parallel port device drivers" | ||
468 | depends on PARPORT | ||
469 | ---help--- | ||
470 | Saying Y to this adds support for /dev/parport device nodes. This | ||
471 | is needed for programs that want portable access to the parallel | ||
472 | port, for instance deviceid (which displays Plug-and-Play device | ||
473 | IDs). | ||
474 | |||
475 | This is the parallel port equivalent of SCSI generic support (sg). | ||
476 | It is safe to say N to this -- it is not needed for normal printing | ||
477 | or parallel port CD-ROM/disk support. | ||
478 | |||
479 | To compile this driver as a module, choose M here: the | ||
480 | module will be called ppdev. | ||
481 | |||
482 | If unsure, say N. | ||
483 | |||
484 | config ENVCTRL | ||
485 | tristate "SUNW, envctrl support" | ||
486 | depends on PCI | ||
487 | help | ||
488 | Kernel support for temperature and fan monitoring on Sun SME | ||
489 | machines. | ||
490 | |||
491 | To compile this driver as a module, choose M here: the | ||
492 | module will be called envctrl. | ||
493 | |||
494 | config DISPLAY7SEG | ||
495 | tristate "7-Segment Display support" | ||
496 | depends on PCI | ||
497 | ---help--- | ||
498 | This is the driver for the 7-segment display and LED present on | ||
499 | Sun Microsystems CompactPCI models CP1400 and CP1500. | ||
500 | |||
501 | To compile this driver as a module, choose M here: the | ||
502 | module will be called display7seg. | ||
503 | |||
504 | If you do not have a CompactPCI model CP1400 or CP1500, or | ||
505 | another UltraSPARC-IIi-cEngine boardset with a 7-segment display, | ||
506 | you should say N to this option. | ||
507 | 351 | ||
508 | config CMDLINE_BOOL | 352 | config CMDLINE_BOOL |
509 | bool "Default bootloader kernel arguments" | 353 | bool "Default bootloader kernel arguments" |
@@ -521,148 +365,16 @@ config CMDLINE | |||
521 | 365 | ||
522 | NOTE: This option WILL override the PROM bootargs setting! | 366 | NOTE: This option WILL override the PROM bootargs setting! |
523 | 367 | ||
524 | source "mm/Kconfig" | ||
525 | |||
526 | endmenu | ||
527 | |||
528 | source "net/Kconfig" | 368 | source "net/Kconfig" |
529 | 369 | ||
530 | source "drivers/base/Kconfig" | 370 | source "drivers/Kconfig" |
531 | |||
532 | source "drivers/video/Kconfig" | ||
533 | |||
534 | source "drivers/serial/Kconfig" | ||
535 | 371 | ||
536 | source "drivers/sbus/char/Kconfig" | 372 | source "drivers/sbus/char/Kconfig" |
537 | 373 | ||
538 | source "drivers/mtd/Kconfig" | ||
539 | |||
540 | source "drivers/block/Kconfig" | ||
541 | |||
542 | source "drivers/ide/Kconfig" | ||
543 | |||
544 | source "drivers/scsi/Kconfig" | ||
545 | |||
546 | source "drivers/fc4/Kconfig" | 374 | source "drivers/fc4/Kconfig" |
547 | 375 | ||
548 | source "drivers/md/Kconfig" | ||
549 | |||
550 | if PCI | ||
551 | source "drivers/message/fusion/Kconfig" | ||
552 | endif | ||
553 | |||
554 | source "drivers/ieee1394/Kconfig" | ||
555 | |||
556 | source "drivers/net/Kconfig" | ||
557 | |||
558 | source "drivers/isdn/Kconfig" | ||
559 | |||
560 | source "drivers/telephony/Kconfig" | ||
561 | |||
562 | # This one must be before the filesystem configs. -DaveM | ||
563 | |||
564 | menu "Unix98 PTY support" | ||
565 | |||
566 | config UNIX98_PTYS | ||
567 | bool "Unix98 PTY support" | ||
568 | ---help--- | ||
569 | A pseudo terminal (PTY) is a software device consisting of two | ||
570 | halves: a master and a slave. The slave device behaves identical to | ||
571 | a physical terminal; the master device is used by a process to | ||
572 | read data from and write data to the slave, thereby emulating a | ||
573 | terminal. Typical programs for the master side are telnet servers | ||
574 | and xterms. | ||
575 | |||
576 | Linux has traditionally used the BSD-like names /dev/ptyxx for | ||
577 | masters and /dev/ttyxx for slaves of pseudo terminals. This scheme | ||
578 | has a number of problems. The GNU C library glibc 2.1 and later, | ||
579 | however, supports the Unix98 naming standard: in order to acquire a | ||
580 | pseudo terminal, a process opens /dev/ptmx; the number of the pseudo | ||
581 | terminal is then made available to the process and the pseudo | ||
582 | terminal slave can be accessed as /dev/pts/<number>. What was | ||
583 | traditionally /dev/ttyp2 will then be /dev/pts/2, for example. | ||
584 | |||
585 | The entries in /dev/pts/ are created on the fly by a virtual | ||
586 | file system; therefore, if you say Y here you should say Y to | ||
587 | "/dev/pts file system for Unix98 PTYs" as well. | ||
588 | |||
589 | If you want to say Y here, you need to have the C library glibc 2.1 | ||
590 | or later (equal to libc-6.1, check with "ls -l /lib/libc.so.*"). | ||
591 | Read the instructions in <file:Documentation/Changes> pertaining to | ||
592 | pseudo terminals. It's safe to say N. | ||
593 | |||
594 | config UNIX98_PTY_COUNT | ||
595 | int "Maximum number of Unix98 PTYs in use (0-2048)" | ||
596 | depends on UNIX98_PTYS | ||
597 | default "256" | ||
598 | help | ||
599 | The maximum number of Unix98 PTYs that can be used at any one time. | ||
600 | The default is 256, and should be enough for desktop systems. Server | ||
601 | machines which support incoming telnet/rlogin/ssh connections and/or | ||
602 | serve several X terminals may want to increase this: every incoming | ||
603 | connection and every xterm uses up one PTY. | ||
604 | |||
605 | When not in use, each additional set of 256 PTYs occupy | ||
606 | approximately 8 KB of kernel memory on 32-bit architectures. | ||
607 | |||
608 | endmenu | ||
609 | |||
610 | menu "XFree86 DRI support" | ||
611 | |||
612 | config DRM | ||
613 | bool "Direct Rendering Manager (XFree86 DRI support)" | ||
614 | help | ||
615 | Kernel-level support for the Direct Rendering Infrastructure (DRI) | ||
616 | introduced in XFree86 4.0. If you say Y here, you need to select | ||
617 | the module that's right for your graphics card from the list below. | ||
618 | These modules provide support for synchronization, security, and | ||
619 | DMA transfers. Please see <http://dri.sourceforge.net/> for more | ||
620 | details. You should also select and configure AGP | ||
621 | (/dev/agpgart) support. | ||
622 | |||
623 | config DRM_FFB | ||
624 | tristate "Creator/Creator3D" | ||
625 | depends on DRM && BROKEN | ||
626 | help | ||
627 | Choose this option if you have one of Sun's Creator3D-based graphics | ||
628 | and frame buffer cards. Product page at | ||
629 | <http://www.sun.com/desktop/products/Graphics/creator3d.html>. | ||
630 | |||
631 | config DRM_TDFX | ||
632 | tristate "3dfx Banshee/Voodoo3+" | ||
633 | depends on DRM | ||
634 | help | ||
635 | Choose this option if you have a 3dfx Banshee or Voodoo3 (or later), | ||
636 | graphics card. If M is selected, the module will be called tdfx. | ||
637 | |||
638 | config DRM_R128 | ||
639 | tristate "ATI Rage 128" | ||
640 | depends on DRM | ||
641 | help | ||
642 | Choose this option if you have an ATI Rage 128 graphics card. If M | ||
643 | is selected, the module will be called r128. AGP support for | ||
644 | this card is strongly suggested (unless you have a PCI version). | ||
645 | |||
646 | endmenu | ||
647 | |||
648 | source "drivers/input/Kconfig" | ||
649 | |||
650 | source "drivers/i2c/Kconfig" | ||
651 | |||
652 | source "drivers/hwmon/Kconfig" | ||
653 | |||
654 | source "fs/Kconfig" | 376 | source "fs/Kconfig" |
655 | 377 | ||
656 | source "drivers/media/Kconfig" | ||
657 | |||
658 | source "sound/Kconfig" | ||
659 | |||
660 | source "drivers/usb/Kconfig" | ||
661 | |||
662 | source "drivers/infiniband/Kconfig" | ||
663 | |||
664 | source "drivers/char/watchdog/Kconfig" | ||
665 | |||
666 | source "arch/sparc64/oprofile/Kconfig" | 378 | source "arch/sparc64/oprofile/Kconfig" |
667 | 379 | ||
668 | source "arch/sparc64/Kconfig.debug" | 380 | source "arch/sparc64/Kconfig.debug" |
diff --git a/arch/sparc64/kernel/entry.S b/arch/sparc64/kernel/entry.S index cecdc0a7521f..3e0badb820c5 100644 --- a/arch/sparc64/kernel/entry.S +++ b/arch/sparc64/kernel/entry.S | |||
@@ -927,139 +927,6 @@ __spitfire_insn_access_exception: | |||
927 | ba,pt %xcc, rtrap | 927 | ba,pt %xcc, rtrap |
928 | clr %l6 | 928 | clr %l6 |
929 | 929 | ||
930 | /* Capture I/D/E-cache state into per-cpu error scoreboard. | ||
931 | * | ||
932 | * %g1: (TL>=0) ? 1 : 0 | ||
933 | * %g2: scratch | ||
934 | * %g3: scratch | ||
935 | * %g4: AFSR | ||
936 | * %g5: AFAR | ||
937 | * %g6: current thread ptr | ||
938 | * %g7: scratch | ||
939 | */ | ||
940 | #define CHEETAH_LOG_ERROR \ | ||
941 | /* Put "TL1" software bit into AFSR. */ \ | ||
942 | and %g1, 0x1, %g1; \ | ||
943 | sllx %g1, 63, %g2; \ | ||
944 | or %g4, %g2, %g4; \ | ||
945 | /* Get log entry pointer for this cpu at this trap level. */ \ | ||
946 | BRANCH_IF_JALAPENO(g2,g3,50f) \ | ||
947 | ldxa [%g0] ASI_SAFARI_CONFIG, %g2; \ | ||
948 | srlx %g2, 17, %g2; \ | ||
949 | ba,pt %xcc, 60f; \ | ||
950 | and %g2, 0x3ff, %g2; \ | ||
951 | 50: ldxa [%g0] ASI_JBUS_CONFIG, %g2; \ | ||
952 | srlx %g2, 17, %g2; \ | ||
953 | and %g2, 0x1f, %g2; \ | ||
954 | 60: sllx %g2, 9, %g2; \ | ||
955 | sethi %hi(cheetah_error_log), %g3; \ | ||
956 | ldx [%g3 + %lo(cheetah_error_log)], %g3; \ | ||
957 | brz,pn %g3, 80f; \ | ||
958 | nop; \ | ||
959 | add %g3, %g2, %g3; \ | ||
960 | sllx %g1, 8, %g1; \ | ||
961 | add %g3, %g1, %g1; \ | ||
962 | /* %g1 holds pointer to the top of the logging scoreboard */ \ | ||
963 | ldx [%g1 + 0x0], %g7; \ | ||
964 | cmp %g7, -1; \ | ||
965 | bne,pn %xcc, 80f; \ | ||
966 | nop; \ | ||
967 | stx %g4, [%g1 + 0x0]; \ | ||
968 | stx %g5, [%g1 + 0x8]; \ | ||
969 | add %g1, 0x10, %g1; \ | ||
970 | /* %g1 now points to D-cache logging area */ \ | ||
971 | set 0x3ff8, %g2; /* DC_addr mask */ \ | ||
972 | and %g5, %g2, %g2; /* DC_addr bits of AFAR */ \ | ||
973 | srlx %g5, 12, %g3; \ | ||
974 | or %g3, 1, %g3; /* PHYS tag + valid */ \ | ||
975 | 10: ldxa [%g2] ASI_DCACHE_TAG, %g7; \ | ||
976 | cmp %g3, %g7; /* TAG match? */ \ | ||
977 | bne,pt %xcc, 13f; \ | ||
978 | nop; \ | ||
979 | /* Yep, what we want, capture state. */ \ | ||
980 | stx %g2, [%g1 + 0x20]; \ | ||
981 | stx %g7, [%g1 + 0x28]; \ | ||
982 | /* A membar Sync is required before and after utag access. */ \ | ||
983 | membar #Sync; \ | ||
984 | ldxa [%g2] ASI_DCACHE_UTAG, %g7; \ | ||
985 | membar #Sync; \ | ||
986 | stx %g7, [%g1 + 0x30]; \ | ||
987 | ldxa [%g2] ASI_DCACHE_SNOOP_TAG, %g7; \ | ||
988 | stx %g7, [%g1 + 0x38]; \ | ||
989 | clr %g3; \ | ||
990 | 12: ldxa [%g2 + %g3] ASI_DCACHE_DATA, %g7; \ | ||
991 | stx %g7, [%g1]; \ | ||
992 | add %g3, (1 << 5), %g3; \ | ||
993 | cmp %g3, (4 << 5); \ | ||
994 | bl,pt %xcc, 12b; \ | ||
995 | add %g1, 0x8, %g1; \ | ||
996 | ba,pt %xcc, 20f; \ | ||
997 | add %g1, 0x20, %g1; \ | ||
998 | 13: sethi %hi(1 << 14), %g7; \ | ||
999 | add %g2, %g7, %g2; \ | ||
1000 | srlx %g2, 14, %g7; \ | ||
1001 | cmp %g7, 4; \ | ||
1002 | bl,pt %xcc, 10b; \ | ||
1003 | nop; \ | ||
1004 | add %g1, 0x40, %g1; \ | ||
1005 | 20: /* %g1 now points to I-cache logging area */ \ | ||
1006 | set 0x1fe0, %g2; /* IC_addr mask */ \ | ||
1007 | and %g5, %g2, %g2; /* IC_addr bits of AFAR */ \ | ||
1008 | sllx %g2, 1, %g2; /* IC_addr[13:6]==VA[12:5] */ \ | ||
1009 | srlx %g5, (13 - 8), %g3; /* Make PTAG */ \ | ||
1010 | andn %g3, 0xff, %g3; /* Mask off undefined bits */ \ | ||
1011 | 21: ldxa [%g2] ASI_IC_TAG, %g7; \ | ||
1012 | andn %g7, 0xff, %g7; \ | ||
1013 | cmp %g3, %g7; \ | ||
1014 | bne,pt %xcc, 23f; \ | ||
1015 | nop; \ | ||
1016 | /* Yep, what we want, capture state. */ \ | ||
1017 | stx %g2, [%g1 + 0x40]; \ | ||
1018 | stx %g7, [%g1 + 0x48]; \ | ||
1019 | add %g2, (1 << 3), %g2; \ | ||
1020 | ldxa [%g2] ASI_IC_TAG, %g7; \ | ||
1021 | add %g2, (1 << 3), %g2; \ | ||
1022 | stx %g7, [%g1 + 0x50]; \ | ||
1023 | ldxa [%g2] ASI_IC_TAG, %g7; \ | ||
1024 | add %g2, (1 << 3), %g2; \ | ||
1025 | stx %g7, [%g1 + 0x60]; \ | ||
1026 | ldxa [%g2] ASI_IC_TAG, %g7; \ | ||
1027 | stx %g7, [%g1 + 0x68]; \ | ||
1028 | sub %g2, (3 << 3), %g2; \ | ||
1029 | ldxa [%g2] ASI_IC_STAG, %g7; \ | ||
1030 | stx %g7, [%g1 + 0x58]; \ | ||
1031 | clr %g3; \ | ||
1032 | srlx %g2, 2, %g2; \ | ||
1033 | 22: ldxa [%g2 + %g3] ASI_IC_INSTR, %g7; \ | ||
1034 | stx %g7, [%g1]; \ | ||
1035 | add %g3, (1 << 3), %g3; \ | ||
1036 | cmp %g3, (8 << 3); \ | ||
1037 | bl,pt %xcc, 22b; \ | ||
1038 | add %g1, 0x8, %g1; \ | ||
1039 | ba,pt %xcc, 30f; \ | ||
1040 | add %g1, 0x30, %g1; \ | ||
1041 | 23: sethi %hi(1 << 14), %g7; \ | ||
1042 | add %g2, %g7, %g2; \ | ||
1043 | srlx %g2, 14, %g7; \ | ||
1044 | cmp %g7, 4; \ | ||
1045 | bl,pt %xcc, 21b; \ | ||
1046 | nop; \ | ||
1047 | add %g1, 0x70, %g1; \ | ||
1048 | 30: /* %g1 now points to E-cache logging area */ \ | ||
1049 | andn %g5, (32 - 1), %g2; /* E-cache subblock */ \ | ||
1050 | stx %g2, [%g1 + 0x20]; \ | ||
1051 | ldxa [%g2] ASI_EC_TAG_DATA, %g7; \ | ||
1052 | stx %g7, [%g1 + 0x28]; \ | ||
1053 | ldxa [%g2] ASI_EC_R, %g0; \ | ||
1054 | clr %g3; \ | ||
1055 | 31: ldxa [%g3] ASI_EC_DATA, %g7; \ | ||
1056 | stx %g7, [%g1 + %g3]; \ | ||
1057 | add %g3, 0x8, %g3; \ | ||
1058 | cmp %g3, 0x20; \ | ||
1059 | bl,pt %xcc, 31b; \ | ||
1060 | nop; \ | ||
1061 | 80: /* DONE */ | ||
1062 | |||
1063 | /* These get patched into the trap table at boot time | 930 | /* These get patched into the trap table at boot time |
1064 | * once we know we have a cheetah processor. | 931 | * once we know we have a cheetah processor. |
1065 | */ | 932 | */ |
@@ -1296,6 +1163,170 @@ dcpe_icpe_tl1_common: | |||
1296 | membar #Sync | 1163 | membar #Sync |
1297 | retry | 1164 | retry |
1298 | 1165 | ||
1166 | /* Capture I/D/E-cache state into per-cpu error scoreboard. | ||
1167 | * | ||
1168 | * %g1: (TL>=0) ? 1 : 0 | ||
1169 | * %g2: scratch | ||
1170 | * %g3: scratch | ||
1171 | * %g4: AFSR | ||
1172 | * %g5: AFAR | ||
1173 | * %g6: current thread ptr | ||
1174 | * %g7: scratch | ||
1175 | */ | ||
1176 | __cheetah_log_error: | ||
1177 | /* Put "TL1" software bit into AFSR. */ | ||
< au1100fb_setmode(fbdev); /* Register new framebuffer */ if (register_framebuffer(&fbdev->info) < 0) { print_err("cannot register new framebuffer"); goto failed; } return 0; failed: if (fbdev->regs) { release_mem_region(fbdev->regs_phys, fbdev->regs_len); } if (fbdev->fb_mem) { dma_free_noncoherent(&dev->dev, fbdev->fb_len, fbdev->fb_mem, fbdev->fb_phys); } if (fbdev->info.cmap.len != 0) { fb_dealloc_cmap(&fbdev->info.cmap); } kfree(fbdev); platform_set_drvdata(dev, NULL); return 0; } int au1100fb_drv_remove(struct platform_device *dev) { struct au1100fb_device *fbdev = NULL; if (!dev) return -ENODEV; fbdev = (struct au1100fb_device *) platform_get_drvdata(dev); #if !defined(CONFIG_FRAMEBUFFER_CONSOLE) && defined(CONFIG_LOGO) au1100fb_fb_blank(VESA_POWERDOWN, &fbdev->info); #endif fbdev->regs->lcd_control &= ~LCD_CONTROL_GO; /* Clean up all probe data */ unregister_framebuffer(&fbdev->info); release_mem_region(fbdev->regs_phys, fbdev->regs_len); dma_free_coherent(&dev->dev, PAGE_ALIGN(fbdev->fb_len), fbdev->fb_mem, fbdev->fb_phys); fb_dealloc_cmap(&fbdev->info.cmap); kfree(fbdev->info.pseudo_palette); kfree((void*)fbdev); return 0; } #ifdef CONFIG_PM static u32 sys_clksrc; static struct au1100fb_regs fbregs; int au1100fb_drv_suspend(struct platform_device *dev, pm_message_t state) { struct au1100fb_device *fbdev = platform_get_drvdata(dev); if (!fbdev) return 0; /* Save the clock source state */ sys_clksrc = au_readl(SYS_CLKSRC); /* Blank the LCD */ au1100fb_fb_blank(VESA_POWERDOWN, &fbdev->info); /* Stop LCD clocking */ au_writel(sys_clksrc & ~SYS_CS_ML_MASK, SYS_CLKSRC); memcpy(&fbregs, fbdev->regs, sizeof(struct au1100fb_regs)); return 0; } int au1100fb_drv_resume(struct platform_device *dev) { struct au1100fb_device *fbdev = platform_get_drvdata(dev); if (!fbdev) return 0; memcpy(fbdev->regs, &fbregs, sizeof(struct au1100fb_regs)); /* Restart LCD clocking */ au_writel(sys_clksrc, SYS_CLKSRC); /* Unblank the LCD */ au1100fb_fb_blank(VESA_NO_BLANKING, &fbdev->info); return 0; } #else #define au1100fb_drv_suspend NULL #define au1100fb_drv_resume NULL #endif static struct platform_driver au1100fb_driver = { .driver = { .name = "au1100-lcd", .owner = THIS_MODULE, }, .probe = au1100fb_drv_probe, .remove = au1100fb_drv_remove, .suspend = au1100fb_drv_suspend, .resume = au1100fb_drv_resume, }; static int __init au1100fb_load(void) { return platform_driver_register(&au1100fb_driver); } static void __exit au1100fb_unload(void) { platform_driver_unregister(&au1100fb_driver); } module_init(au1100fb_load); module_exit(au1100fb_unload); MODULE_DESCRIPTION(DRIVER_DESC); MODULE_LICENSE("GPL"); |